Changelog

8.28.0 (2024-12-18)

Features

9.0.0-rc.6 (2024-12-10)

9.0.0-rc.5 (2024-12-09)

Features

9.0.0-rc.4 (2024-12-07)

⚠ BREAKING CHANGES

It is recommended to assume it returns a Promise and always await the result:

-const resolved = config.resolve();
+const resolved = await config.resolve();

If you need synchronous code ensure the configuration, the loader and the resolver all returns synchronous results, e.g. the staticResolver with synchronous code.

-const schema = htmlvalidate.getConfigurationSchema();
+const schema = await htmlvalidate.getConfigurationSchema();
 import { transformSource } from "html-validate/test-utils";

-const result = transformSource(transformer, source);
+const result = await transformSource(transformer, source);

This is no matter if your transformer is actually async or not.

Remove any calls to the method:

 const config = Config.fromObject({ /* ... */ });
-config.init();

Features

Bug Fixes

9.0.0-rc.3 (2024-12-01)

⚠ BREAKING CHANGES

It is recommended to assume it returns a Promise and always await the result:

-const resolved = config.resolve();
+const resolved = await config.resolve();

If you need synchronous code ensure the configuration, the loader and the resolver all returns synchronous results, e.g. the staticResolver with synchronous code.

-const schema = htmlvalidate.getConfigurationSchema();
+const schema = await htmlvalidate.getConfigurationSchema();
 import { transformSource } from "html-validate/test-utils";

-const result = transformSource(transformer, source);
+const result = await transformSource(transformer, source);

This is no matter if your transformer is actually async or not.

Remove any calls to the method:

 const config = Config.fromObject({ /* ... */ });
-config.init();

Features

Bug Fixes

8.27.0 (2024-11-30)

Features

8.26.0 (2024-11-26)

Features

8.25.1 (2024-11-24)

Bug Fixes

8.25.0 (2024-11-11)

Features

Bug Fixes

8.24.2 (2024-10-16)

Bug Fixes

8.24.1 (2024-10-07)

Bug Fixes

8.24.0 (2024-09-24)

Features

8.23.0 (2024-09-22)

Features

9.0.0-rc.2 (2024-09-21)

⚠ BREAKING CHANGES

Features

9.0.0-rc.1 (2024-09-09)

⚠ BREAKING CHANGES

Features

8.22.0 (2024-09-09)

Features

Bug Fixes

8.21.0 (2024-07-20)

Features

Bug Fixes

8.20.1 (2024-06-11)

Bug Fixes

8.20.0 (2024-06-02)

Features

8.19.1 (2024-05-23)

Bug Fixes

8.19.0 (2024-05-18)

Features

Bug Fixes

8.18.2 (2024-04-20)

Bug Fixes

8.18.1 (2024-03-30)

Bug Fixes

8.18.0 (2024-03-23)

Features

Bug Fixes

8.17.1 (2024-03-21)

Bug Fixes

8.17.0 (2024-03-19)

Features

Bug Fixes

8.16.0 (2024-03-18)

Features

Bug Fixes

8.15.0 (2024-03-11)

Features

Bug Fixes

8.14.0 (2024-03-09)

Features

8.13.0 (2024-03-06)

Features

8.12.0 (2024-03-04)

Features

8.11.1 (2024-02-26)

Bug Fixes

8.11.0 (2024-02-26)

Features

Bug Fixes

8.10.0 (2024-02-21)

Features

Bug Fixes

8.9.1 (2024-01-10)

Bug Fixes

8.9.0 (2024-01-08)

Features

Bug Fixes

8.8.0 (2023-12-27)

Features

Bug Fixes

8.7.4 (2023-12-10)

Bug Fixes

8.7.3 (2023-11-23)

Bug Fixes

8.7.2 (2023-11-18)

Bug Fixes

8.7.1 (2023-11-11)

Bug Fixes

8.7.0 (2023-10-21)

Features

8.6.1 (2023-10-21)

Bug Fixes

8.6.0 (2023-10-13)

Features

8.5.0 (2023-10-01)

Features

8.4.1 (2023-09-23)

Bug Fixes

8.4.0 (2023-09-09)

Features

8.3.0 (2023-08-20)

Features

Bug Fixes

8.2.0 (2023-08-07)

Features

Bug Fixes

8.1.0 (2023-07-22)

Features

Bug Fixes

8.0.5 (2023-06-13)

Bug Fixes

8.0.4 (2023-06-12)

Bug Fixes

8.0.3 (2023-06-12)

Bug Fixes

8.0.2 (2023-06-10)

Bug Fixes

8.0.1 (2023-06-10)

Bug Fixes

8.0.0 (2023-06-04)

⚠ BREAKING CHANGES

See migration guide for details.

If you are using this you are probably better off implementing a fully custom loader later returning a ResolvedConfig.

For rule authors this means you can now rely on the context parameter being set in the documentation callback.

For IDE integration and toolchain authors this means you should migrate to use getContextualDocumentation as soon as possible or if you are continuing to use getRuleDocumentation you are now required to pass the config and context field from the reported message.

To create a Config instance you must now pass in a Resolver (single or array):

+const resolvers = [ /* ... */ ];
-const config = new Config( /* ... */ );
+const config = new Config(resolvers, /* ... */ );

This applies to calls to Config.fromObject(..) as well.

The default resolvers for StaticConfigLoader is StaticResolver and for FileSystemConfigLoader is NodeJSResolver. Both can optionally take a new set of resolvers (including custom ones).

Each resolver will, in order, try to load things by name. For instance, when using the NodeJSResolver it uses require(..) to load new items.

Either adapt to the new asynchronous API:

-const result = htmlvalidate.validateFile("my-awesome-file.html");
+const result = await htmlvalidate.validateFile("my-awesome-file.html");

or migrate to the synchronous API:

-const result = htmlvalidate.validateFile("my-awesome-file.html");
+const result = htmlvalidate.validateFileSync("my-awesome-file.html");

For unittesting with Jest it is recommended to make the entire test-case async:

-it("my awesome test", () => {
+it("my awesome test", async () => {
   const htmlvalidate = new HtmlValidate();
-  const report = htmlvalidate.validateString("...");
+  const report = await htmlvalidate.validateString("...");
   expect(report).toMatchCodeFrame();
});

In the simplest case this only requires to call Config.resolve():

-return config;
+return config.resolve();

A resolved configuration cannot further reference any new files to extend, plugins to load, etc.

 {
   "rules": {
-    "my-awesome-rule": "disabled"
+    "my-awesome-rule": "off"
   }
 }

Features

Bug Fixes

7.18.1 (2023-06-04)

Bug Fixes

7.18.0 (2023-05-24)

Features

Bug Fixes

7.17.0 (2023-05-12)

Features

Bug Fixes

7.16.0 (2023-05-04)

Features

Dependency upgrades

7.15.3 (2023-05-03)

Bug Fixes

7.15.2 (2023-05-03)

Bug Fixes

Dependency upgrades

7.15.1 (2023-04-09)

Bug Fixes

7.15.0 (2023-04-09)

Features

Bug Fixes

7.14.0 (2023-03-26)

Features

Bug Fixes

Dependency upgrades

7.13.3 (2023-03-10)

Bug Fixes

7.13.2 (2023-02-08)

Bug Fixes

7.13.1 (2023-01-15)

Bug Fixes

7.13.0 (2023-01-15)

Features

7.12.2 (2023-01-09)

Bug Fixes

7.12.1 (2023-01-05)

Bug Fixes

7.12.0 (2022-12-28)

Features

Bug Fixes

7.11.1 (2022-12-22)

Bug Fixes

7.11.0 (2022-12-19)

Features

Bug Fixes

7.10.1 (2022-12-04)

Bug Fixes

7.10.0 (2022-11-17)

Features

Bug Fixes

7.9.0 (2022-11-16)

Features

Bug Fixes

7.8.0 (2022-10-31)

Features

Bug Fixes

7.7.1 (2022-10-24)

Bug Fixes

7.7.0 (2022-10-23)

Features

Bug Fixes

7.6.0 (2022-10-10)

Features

Bug Fixes

7.5.0 (2022-09-19)

Features

7.4.1 (2022-09-11)

Bug Fixes

7.4.0 (2022-09-11)

Features

Bug Fixes

7.3.3 (2022-08-25)

Bug Fixes

7.3.2 (2022-08-24)

Bug Fixes

7.3.1 (2022-08-21)

Bug Fixes

7.3.0 (2022-08-11)

Features

7.2.0 (2022-08-04)

Features

Bug Fixes

7.1.2 (2022-07-05)

Bug Fixes

7.1.1 (2022-05-22)

Bug Fixes

Dependency upgrades

7.1.0 (2022-05-15)

Features

Dependency upgrades

7.0.0 (2022-05-06)

⚠ BREAKING CHANGES

See migration guide for details.

Features

6.11.1 (2022-05-06)

Bug Fixes

6.11.0 (2022-05-05)

Features

Bug Fixes

6.10.0 (2022-05-04)

Features

Bug Fixes

Performance Improvements

6.9.1 (2022-04-29)

Bug Fixes

6.9.0 (2022-04-27)

Features

Bug Fixes

6.8.0 (2022-04-24)

Features

Dependency upgrades

6.7.1 (2022-04-08)

Bug Fixes

6.7.0 (2022-04-08)

Features

Bug Fixes

6.6.1 (2022-03-25)

Bug Fixes

6.6.0 (2022-03-20)

Features

Bug Fixes

6.5.0 (2022-02-27)

Features

Bug Fixes

6.4.0 (2022-02-18)

Features

Bug Fixes

6.3.2 (2022-02-16)

Bug Fixes

6.3.1 (2022-02-03)

Dependency upgrades

6.3.0 (2022-02-03)

Features

Bug Fixes

Dependency upgrades

6.2.0 (2022-01-17)

Features

Bug Fixes

6.1.6 (2022-01-07)

Bug Fixes

Dependency upgrades

6.1.5 (2021-12-28)

Bug Fixes

6.1.4 (2021-12-04)

Bug Fixes

6.1.3 (2021-11-19)

Bug Fixes

6.1.2 (2021-11-13)

Bug Fixes

6.1.1 (2021-11-10)

Dependency upgrades

6.1.0 (2021-10-02)

Features

Bug Fixes

6.0.2 (2021-09-27)

Bug Fixes

6.0.1 (2021-09-27)

Bug Fixes

6.0.0 (2021-09-26)

⚠ BREAKING CHANGES

See migration guide for details.

The default configuration loader has changed from FileSystemConfigLoader to StaticConfigLoader, i.e. the directory traversal looking for .htmlvalidate.json configuration files must now be explicitly enabled.

The old format is deprecated but is internally converted as to not break user configuration. For compatibility it will probably be around for quite a while but users should try to migrate as soon as possible.

Features

Dependency upgrades

4.14.1 (2021-09-18)

Bug Fixes

5.5.0 (2021-09-05)

Features

Bug Fixes

5.4.1 (2021-08-29)

Bug Fixes

5.4.0 (2021-08-27)

Features

Bug Fixes

5.3.0 (2021-08-23)

Features

Bug Fixes

5.2.1 (2021-08-09)

Bug Fixes

5.2.0 (2021-07-23)

Features

Bug Fixes

5.1.1 (2021-07-11)

Bug Fixes

5.1.0 (2021-07-11)

Features

Bug Fixes

5.0.2 (2021-06-28)

Bug Fixes

5.0.1 (2021-06-27)

Bug Fixes

Dependency upgrades

5.0.0 (2021-06-27)

⚠ BREAKING CHANGES

For plugin developers and if you consume the API in any way the biggest change is that the distributed source is now bundled and you can no longer access individual files.

Typically something like:

-import foo from "html-validate/dist/foo";
+import { foo } from "html-validate"

Feel free to open an issue if some symbol you need isn't exported.

If your usage includes checking presence of rules use the ruleExists helper:

-try {
-  require("html-validate/dist/rules/attr-case");
-} catch (err) {
-  /* fallback */
-}
+import { ruleExists } from "html-validate";
+if (!ruleExists("attr-case")) {
+  /* fallback */
+}

Features

Dependency upgrades

4.14.0 (2021-06-14)

Features

4.13.1 (2021-05-28)

Bug Fixes

4.13.0 (2021-05-28)

Features

Dependency upgrades

4.12.0 (2021-05-17)

Features

4.11.0 (2021-05-08)

Features

Bug Fixes

4.10.1 (2021-04-25)

Bug Fixes

4.10.0 (2021-04-18)

Features

Bug Fixes

4.9.0 (2021-04-04)

Features

Bug Fixes

4.8.0 (2021-03-28)

Features

4.7.1 (2021-03-19)

Bug Fixes

4.1.1 (2021-03-19)

Bug Fixes

4.7.0 (2021-03-14)

Features

Bug Fixes

4.6.1 (2021-03-02)

Bug Fixes

4.6.0 (2021-02-13)

Features

Bug Fixes

4.5.0 (2021-02-05)

Features

Bug Fixes

4.4.0 (2021-01-31)

Features

Bug Fixes

Dependency upgrades

4.3.0 (2021-01-19)

Features

Bug Fixes

4.2.0 (2021-01-15)

Features

Bug Fixes

Dependency upgrades

4.1.0 (2020-12-14)

Features

4.0.2 (2020-11-19)

Bug Fixes

4.0.1 (2020-11-09)

Bug Fixes

4.0.0 (2020-11-07)

⚠ BREAKING CHANGES

The previous behaviour was to to always merge with the default configuration containing extends: ["html-validate:recommended"]. This is counter-intuitive when adding a blank {} .htmlvalidate.json configuration file (or a file with extends: []). The new behaviour is to not apply default configuration if another configuration is found.

To retain the previous behaviour you must ensure your configuration contains extends: ["html-validate:recommended"]. Users who have root: true are not affected. If unsure: test your configuration by deliberatly introducing and error and verify it is detected.

For CLI users: ensure your .htmlvalidate.json configuration files are updated.

For IDE integration users: ensure your .htmlvalidate.json configuration files are updated.

For CLI API users: same as with CLI the configuration loading has changed and all users must update their .htmlvalidate.json accordingly.

For HtmlValidate API users: you are most likely not affected, only if both of the following conditions are true you need to take care to ensure any .htmlvalidate.json is updated:

  1. you are using validateFile or supply filenames to other validation functions.
  2. you allow user-supplied configurations (or use them yourself) via .htmlvalidate.json (default unless root: true is set in the configuration object passed to new HtmlValidate(..))

The ConfigLoader API has also been updated and fromTarget may now return null if no configuration file was found.

This affects API users only and in general should not be an issue unless importing files via full path. In that case replace import 'html-validate/build/...' with import 'html-validate/dist/... but in general those imports are discouraged.

Instead users should import only via import { ... } from "html-validate" and file an issue if an export is missing.

This does not affect the elements imports which is considered a safe to import as-is.

Features

Bug Fixes

Miscellaneous Chores

3.5.0 (2020-10-18)

Features

3.4.1 (2020-10-13)

Bug Fixes

3.4.0 (2020-10-08)

Bug Fixes

Features

3.3.0 (2020-09-08)

Bug Fixes

Features

3.2.0 (2020-08-26)

Features

3.1.0 (2020-08-20)

Bug Fixes

Features

3.0.0 (2020-06-21)

Bug Fixes

chore

BREAKING CHANGES

2.23.1 (2020-06-21)

Bug Fixes

2.23.0 (2020-05-18)

Bug Fixes

Features

2.22.0 (2020-05-15)

Bug Fixes

Features

2.21.0 (2020-04-26)

Bug Fixes

Features

2.20.1 (2020-04-19)

Bug Fixes

2.20.0 (2020-04-05)

Bug Fixes

Features

2.19.0 (2020-03-24)

Bug Fixes

Features

2.18.1 (2020-03-22)

Bug Fixes

Reverts

2.18.0 (2020-03-11)

Bug Fixes

Features

2.17.1 (2020-03-02)

Bug Fixes

2.17.0 (2020-02-17)

Bug Fixes

Features

2.16.0 (2020-02-12)

Bug Fixes

Features

2.15.0 (2020-02-09)

Features

2.14.0 (2020-02-06)

Features

2.13.0 (2020-02-02)

Features

2.12.0 (2020-01-27)

Bug Fixes

Features

2.11.0 (2020-01-26)

Bug Fixes

Features

2.10.0 (2020-01-22)

Features

2.9.0 (2020-01-17)

Features

2.8.2 (2020-01-09)

Bug Fixes

2.8.1 (2020-01-06)

Bug Fixes

2.8.0 (2020-01-02)

Features

2.7.0 (2019-12-16)

Bug Fixes

Features

2.6.0 (2019-12-12)

Bug Fixes

Features

2.5.0 (2019-12-09)

Bug Fixes

Features

2.4.3 (2019-12-08)

Bug Fixes

2.4.2 (2019-12-05)

Bug Fixes

2.4.1 (2019-12-02)

Bug Fixes

2.4.0 (2019-12-01)

Bug Fixes

Features

2.3.0 (2019-11-27)

Bug Fixes

Features

2.2.0 (2019-11-23)

Bug Fixes

Features

2.1.0 (2019-11-21)

Bug Fixes

Features

2.0.1 (2019-11-19)

Bug Fixes

2.0.0 (2019-11-17)

Features

BREAKING CHANGES

1.16.0 (2019-11-09)

Bug Fixes

Features

1.15.0 (2019-11-03)

Bug Fixes

Features

1.14.1 (2019-10-27)

Bug Fixes

1.14.0 (2019-10-20)

Features

1.13.0 (2019-10-13)

Features

1.12.0 (2019-10-08)

Features

1.11.0 (2019-09-23)

Bug Fixes

Features

1.10.0 (2019-09-19)

Features

1.9.1 (2019-09-19)

Bug Fixes

1.9.0 (2019-09-17)

Features

1.8.0 (2019-09-16)

Bug Fixes

Features

1.7.1 (2019-09-15)

Bug Fixes

1.7.0 (2019-09-11)

Bug Fixes

Features

1.6.0 (2019-09-01)

Bug Fixes

Features

1.5.1 (2019-08-20)

Bug Fixes

Features

1.5.0 (2019-08-17)

Bug Fixes

Features

1.4.0 (2019-08-15)

Bug Fixes

Features

1.3.0 (2019-08-12)

Features

1.2.1 (2019-07-30)

1.2.0 (2019-06-23)

1.1.2 (2019-06-18)

1.1.1 (2019-06-07)

1.1.0 (2019-06-04)

1.0.0 (2019-05-12)

0.25.1 (2019-05-10)

0.25.0 (2019-04-23)

0.24.2 (2019-03-31)

Features

0.24.1 (2019-03-26)

Bugfixes

0.24.0 (2019-03-26)

Features

Bugfixes

0.23.0 (2019-03-20)

Features

0.22.1 (2019-02-25)

Breaking change

Bugfixes

0.22.0 (2019-02-24)

Breaking changes

Features

Bugfixes

0.21.0 (2019-02-17)

Breaking changes

Features

Bugfixes

0.20.1 (2019-02-06)

Bugfixes

0.20.0 (2019-01-29)

Features

Bugfixes

0.19.0 (2019-01-27)

Breaking changes

Features

0.18.2 (2019-01-14)

Bugfixes

0.18.1 (2019-01-12)

Features

0.18.0 (2019-01-10)

Features

Bugfixes

0.17.0 (2019-01-09)

Breaking changes

Features

Bugfixes

0.16.1 (2018-12-16)

Bugfixes

0.16.0 (2018-12-15)

Features

0.15.3 (2018-12-05)

Features

0.15.2 (2018-12-01)

Features

0.15.1 (2018-11-26)

Features

0.15.0 (2018-11-21)

Features

Bugfixes

0.14.2 (2018-11-06)

Features

0.14.1 (2018-11-04)

Bugfixes

0.14.0 (2018-11-03)

0.13.0 (2018-10-21)

Features

Bugfixes

0.12.0 (2018-10-17)

Features

0.11.1 (2018-10-07)

Features

Bugfixes

0.11.0 (2018-09-23)

Breaking changes

Features

Bugfixes

0.10.0 (2018-08-11)

Breaking changes

Features

Bugfixes

0.9.2 (2018-07-12)

Features

0.9.1 (2018-07-01)

Features

0.9.0 (2018-06-17)

Breaking changes

Features

Bugfixes

0.8.3 (2018-06-12)

0.8.2 (2018-05-28)

Bugfixes

0.8.1 (2018-05-27)

Misc

0.8.0 (2018-05-27)

Features

Bugfixes

0.7.0 (2017-11-04)

Features

Improvements

Bugfixes

0.6.0 (2017-10-29)

Features

Bugfixes

0.5.0 (2017-10-17)

Features

0.4.0 (2017-10-17)

Features

Bugfixes

0.3.0 (2017-10-12)

Features

Bugfixes

0.2.0 (2017-10-11)

Features

0.1.3 (2017-10-08)

Features

Bugfixes