html-validate
Advanced tools
Changelog
8.0.0 (2023-06-04)
See {@link migration migration guide} for details.
ConfigFactory
parameter to ConfigLoader
(and its child
classes StaticConfigLoader
and FileSystemConfigLoader
) has been removed. No
replacement.If you are using this you are probably better off implementing a fully custom
loader later returning a ResolvedConfig
.
getContextualDocumentation
replaces the now deprecated
getRuleDocumentation
method. The context parameter to getRuleDocumentation
is now required and must not be omitted.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.
Config
class. Additionally when using the
StaticConfigLoader
no modules will be resolved using require(..)
by default
any longer. Instructions for running in a browser is also updated, see below.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.
NodeJSResolver
- uses require(..)
StaticResolver
- uses a predefined set of items.HtmlValidate
class now has a Promise
based API where most
methods return a promise. The old synchronous methods are renamed.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();
});
ConfigLoader
must return ResolvedConfig
. This change
affects API users who implements custom configuration loaders.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.
TemplateExtractor
class has been moved to the
@html-validate/plugin-utils
package. This change only affects API users who
use the TemplateExtractor
class, typically this is only used when writing
plugins.disabled
removed. If you use this in your
configuration you need to update it to off
. {
"rules": {
- "my-awesome-rule": "disabled"
+ "my-awesome-rule": "off"
}
}
void
rule has been removed after being deprecated a long
time, it is replaced with the separate void-content
, void-style
and
no-self-closing
rules.ConfigLoader
must return ResolvedConfig
(d685e6a)FileSystemConfigLoader
supports passing a custom fs
-like object (fac704e)Promise
based API to HtmlValidate
class (adc7783)Resolver
classes as a mean to separate fs
from browser build (3dc1724)getContextualDocumentation
to replace getRuleDocumentation
(60c9a12)ConfigFactory
(e309d89)TemplateExtractor
in favour of @html-validate/plugin-utils
(a0a512b)void
rule (3e727d8)disabled
(6282293)