html-validator
html-validator copied to clipboard
Update dependency html-validate to v9
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| html-validate (source) | 7.0.0 -> 9.5.3 |
Release Notes
html-validate/html-validate (html-validate)
v9.5.3
Bug Fixes
- fix crash when aria attribute references id with comma (fb91b7c), closes #299
- fix crash when attribute selector
[..]contains escaped characters (0c19b82)
v9.5.2
Bug Fixes
v9.5.1
Bug Fixes
v9.5.0
Features
- deps: update dependency @sidvind/better-ajv-errors to v4 (75a17cf)
v9.4.2
Performance Improvements
- rewrite and optimize
HtmlElement.matches()increasing performance of large documents (4eb28a7), closes #45
v9.4.1
Bug Fixes
- fix another configuration path issue on windows (1967d8f)
v9.4.0
Features
- support custom
fsimplementation invalidateFileand similar functions: optional for node required for browser (f9edf65), closes #293
v9.3.0
Features
- ensure
widthandheightare non-negative integers on<img>and other embedded elements (6bde9e6), closes #280
Bug Fixes
- cli: fix
--ruleoverwritingextendsfrom--config(5623120) - cli: fix
--ruleoverwriting all rules from--configor--preset(8cc81c8), closes #289 - include id in
valid-iderror message (c0c6b73), closes #282
Performance Improvements
- improve
no-dup-idperformance (8da515f), closes #288 - improve performance for
void-style(5a156de), closes #287
v9.2.2
Bug Fixes
v9.2.1
Bug Fixes
- fix repetitive "validator crashed" messages (4a71fcf)
- only require SRI on
<link>withrel="stylesheet",rel="preload"orrel="modulepreload"(0b47d2a)
v9.2.0
Features
- api: error classes marked internal (84e957b)
- api: new `isUserError(..) to determine if an exception is caused by a user misconfiguration (20dab72)
- deps: support vitest v3 (0926c7f)
Bug Fixes
- better error message when
import.meta.resolveisnt available (8ed0ae8) - cli: fix CLI argument
--confignot finding configuration file on windows (9a1c41c) - deps: update dependency ignore to v7.0.1 (d1ab96e)
- deps: update dependency ignore to v7.0.3 (cbc0f6e)
v9.1.3
Bug Fixes
- nodejs 18.19 or later is required (69ec7e2)
v9.1.2
Bug Fixes
- fix
ERR_UNSUPPORTED_ESM_URL_SCHEMEon windows (6b193f3)
v9.1.1
Bug Fixes
v9.1.0
Features
- deps: update dependency ignore to v7 (43ae9ac)
Bug Fixes
- use jest worker for
toMatchCodeframe(3c29ad5)
v9.0.1
Bug Fixes
- fix
validateMultipleFilesincorrectly using sync API (0c26918)
v9.0.0
ESM support has finally landed in HTML-Validate V9!
- Configuration files (using
.htmlvalidate.mjsor when"type"is"module"inpackage.json). - Plugins, element metadata, shared configurations and transformers can be written natively in ESM.
This release is primarly breaking for API uses but some configuration changes might be required (see below).
For API users the TL;DR version is most functions can return a Promise so make sure to await it.
⚠ BREAKING CHANGES
-
config: This change affects all users. The following deprecated configuration presets has been removed:
htmlvalidate:recommended- replace withhtml-validate:recommended.htmlvalidate:document- replace withhtml-validate:document.html-validate:a17y- replace withhtml-validate:a11y.
-
cli: CLI uses ESM (with
esmResolver). For most part this shouldn't affect anything but in some cases you might need slight configuration migration. See Migration Guide for details. -
cli: use ESM in CLI
-
meta: The deprecated metadata property expressions have been removed and can be replaced with callback functions. This gives greater control for the metadata author, provides better IDE support and is more reusable when querying the metadata directly.
-
deps: Requires NodeJS v18 or later.
-
api:
Config.merge(..)will return aPromisewhen used with an async loader or resolver. -
api: The deprecated
tag:openandtag:closeevents has been removed, usetag:beginandtag:endinstead. -
api: The
Config.resolve()method can return aPromiseif any underlying loader or resolver has returned aPromise.It is recommended to assume it returns a
Promiseand alwaysawaitthe 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
staticResolverwith synchronous code. -
api: The
HtmlValidate.getConfigurationSchema()method is now async and returns aPromise. If you use this method you need to await the result:-const schema = htmlvalidate.getConfigurationSchema(); +const schema = await htmlvalidate.getConfigurationSchema(); -
api: If you are writing your own transformers they may now optionally return a
Promise. If you are usingtest-utilsto write unit tests you must now resolve the promise.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.
-
api: The
CLI.isIgnored(..)method has been removed from the public API. There is no replacement. If you need this method open an issue describing the use-case. -
api: If you are using the
CLIclass most methods are now async and returnsPromise. There is no synchronous version of these API calls. -
api:
Config.fromFile(..)andConfig.fromObject(..)will return a Promise when used with an async loader or resolver. -
api:
ConfigLoadermethods can optionally return aPromisefor async operation. For most use-cases this will not require any changes. -
api: The
ConfigLoader.globalConfigproperty has been replaced withConfigLoader.getGlobalConfig()(async) andConfigLoader.getGlobalConfigSync()(sync). -
api: The redundant and deprecated
Config.init()method has been removed.Remove any calls to the method:
const config = Config.fromObject({ /* ... */ }); -config.init();
Features
- api:
CLI.isIgnored()made private (9e3679a) - api:
CLImethods async and return Promise (677c73e) - api:
Config.fromFileandConfig.fromObjectcan returnPromise(b126361) - api:
Config.merge(..)can returnPromise(cccb313) - api:
Config.resolve()can returnPromise(09159f3) - api:
ConfigLoaders can optionally returnPromisefor async operation (6041581) - api:
FileSystemConfigLoaderusesesmResolverby default (dd4cfb1) - api:
HtmlValidate.getConfigurationSchema()returns promise (f10ec1a) - api: allow transformers to return single source (fd126da)
- api: new
esmResolverusingimport(..)(available for both nodejs and browser) (81b4777), closes #230 - api: remove deprecated
Config.init()(0bd8ab7) - api: remove deprecated
tag:openandtag:closeevents (88ac65e) - api: replace
ConfigLoader.globalConfigwithConfigLoader.getGlobalConfig()(a64935a) - api: resolvers may optionally return
Promisefor async operation (fe3c6a6) - api: transformers may optionally return
Promisefor async operation (823da19) - cli: cli uses esm (with
esmResolver) (3e4759e) - config: remove deprecated configuration presets (dbf5cf4)
- config: support
.htmlvalidate.mjsconfiguration files (0ffd9b5), closes #125 - deps: require node 18 or later (d4f3bcb)
- meta: remove deprecated property expressions (a77043c)
v8.29.0
Features
- config: allow to specify transformer function directly in config (df2c752)
- meta: allow
labelableproperty to be a callback (8204b5b)
v8.28.0
Features
- refactor jest and vitest
toHTMLValidate(..)matcher (a6a60ab)
v8.27.0
Features
v8.26.0
Features
v8.25.1
Bug Fixes
- fix dump tree output with nested elements (854c274)
v8.25.0
Features
Bug Fixes
- properly close elements with optional end tag when implicit document element is used (bbe2a99), closes #268
- types: narrow numeric rule severity to only 0, 1 and 2 (88cf8a2)
v8.24.2
Bug Fixes
v8.24.1
Bug Fixes
- dont validate quotes in dynamically added attributes (2125d86)
v8.24.0
Features
v8.23.0
Features
- deps: support vitest v2 (860b0c0)
v8.22.0
Features
- api: make
DOMNodeconstructor internal (13377ac) - api: make
HtmlElementconstructor private (fbf4303) - deps: drop
@babel/code-framedependency (0003ffd) - deps: update @sidvind/better-ajv-errors to v3 (3112289)
Bug Fixes
- deps: update dependency ignore to v5.3.2 (9d86e68)
v8.21.0
Features
- api: add
DOMTree.readyState(1f6f69b) - api: deprecate
DOMTree.find(..)in favour ofquerySelector(..)(ac0bb77) - api: internal methods of
DOMTreeremoved from public API (79a03be) - api: new
walk.depthFirst(..)API to replace now deprecatedDOMTree.visitDepthFirst(..)method (f9dbda0)
Bug Fixes
- html5:
spellcheckis a global attribute (46594a1)
v8.20.1
Bug Fixes
- rules: fix
attribute-allowed-valueserror location for empty values (2c04eeb)
v8.20.0
Features
- api: new
setConfigmethod onStaticConfigLoaderto change config (1bf7559) - api: new getter/setter for configuration loader (6283091)
v8.19.1
Bug Fixes
- rules:
wcag/h36no longer reports for hidden elements (aba06d1) - rules:
wcag/h37no longer validates<input type="submit">(usewcag/h36instead) (e82b17a), closes #254 - rules: make
wcag/h36have better message and location (8a80cc8)
v8.19.0
Features
Bug Fixes
- rules:
multiple-labeled-controlshandles hidden input (4d794b6), closes #251 - rules:
wcag/h30only applies to<a href>(cd93dfe), closes #252 - rules: handle unicode letters in
valid-id(c83687a), closes #253
v8.18.2
Bug Fixes
v8.18.1
Bug Fixes
- rules:
form-dup-namehandles<template>element (9c77444), closes #247 - rules:
no-dup-idhandles<template>element (04f3e0d), closes #247
v8.18.0
Features
- rules: new pattern
bemfor pattern rules (c1ead1b) - rules: new pattern
snakecasefor pattern rules (4b95ccb), closes #245
Bug Fixes
- rules: disallow consecutive hyphens and underscors for kebab-case and snake_case (a4338a7), closes #246
- rules: require initial character for all patterns to be letter (646ff16)
v8.17.1
Bug Fixes
v8.17.0
Features
- rules: new rule
name-pattern(f2209c0), closes #216 - rules: support multiple patterns in
id-pattern,class-patternandname-patternrules (15dd007)
Bug Fixes
- meta: handle regexp with slash inside (4c88396), closes #242
- rules:
input-missing-labelnow ignores<input>hidden by css (c40e48e), closes #241 - rules:
input-missing-labelnow tests if<label>is inert or hidden by css (d0d6f40) - rules: show pattern name in
id-pattern,class-patternandname-patternrules (4bd70ab)
v8.16.0
Features
- api: new
tabIndexproperty reflecting the parsedtabindexattribute (a4e5d5b) - meta: add
inertas global attribute (a5e6477) - meta: new
formAssociated.disablableproperty (0b141ab)
Bug Fixes
- html5:
<summary>element is focusable if child of<details>(79dec74) - rules:
hidden-focusablehandles inert elements (89bb969), closes #240 - rules:
hidden-focusableno longer reports for disabled form controls (d337397) - rules:
hidden-focusableno longer reports for elements withtabindex="-1"(03d7223), closes #240
v8.15.0
Features
- rules: new rule
valid-autocomplete(bebd0d1)
Bug Fixes
- rules: case-insensitive match for
urlinmeta-refresh(3177295)
v8.14.0
Features
- rules: new option
allowLongDelaytometa-refreshto allow 20h+ delays (629625c)
v8.13.0
Features
- meta: allow
<link>under<body>if appropriaterelattribute is present (ae1e070) - meta: allow content categories to be a callback (0eb4e77)
- meta: disallow invalid rel attribute keywords (dc36cfb)
v8.12.0
Features
- rules: new rule
no-abstract-role(923680b)
v8.11.1
Bug Fixes
- dom: fix regression error with selectors ending with characters
a,dor9(a9a9ef9)
v8.11.0
Features
- html5: add new property
aria.namingrepresenting if the element can be named (4fca264) - html5: update role metadata from html-aria standard (b029a3f)
- meta: move
implicitRoletoaria.implicitRole(bc8cacf)
Bug Fixes
- handle selectors containing tabs and newlines (5e45d54), closes #238
- rules: new option
allowAnyNamableforaria-label-misuse(c08a3ba), closes #237
v8.10.0
Features
- rules: new rule
no-implicit-input-type(6cc0c6d)
Bug Fixes
- deps: update dependency ignore to v5.3.1 (4553b89)
- html5:
typefor<input>no longer required (37284d0), closes #235 - rules: change wording required to recommended in
no-implicit-button-type(1926c06)
v8.9.1
Bug Fixes
- rules:
<form>and<section>without explicit accessible name is no longer considered landmark (a36deac) - rules:
<header>and<footer>nested in<main>or sectioning content is no longer considered landmark (bcab354), closes #234
v8.9.0
Features
- elements: new property
focusableto mark elements as focusable (c59c8b2) - rules: new rule
hidden-focusable(243e7fb) - rules: new rule
unique-landmark(187be1e)
Bug Fixes
- api: remove internal
listenersproperty from public API (303e5d5) - dom: ancestor with
role="presentation"no longer counts decendants as missing from a11y tree (cc72da1) - dom: handle
role="none"as a synonym forrole="presentation"(b1d7b50) - dom: interactive and focusable elements ignore
role="presentation"(017308f) - rules: better error description for
require-sri(ffc3695) - rules: rule
wcag/h30no longer requires text on<a hidden>(a20cc84) - rules: rule
wcag/h30no longer requires text on links withdisplay: noneorvisibility: hidden(36ff07e) - rules: rules
wcag/h32handles<button>without explicittype(84c6a6e)
v8.8.0
Features
- api:
Report.merge()can merge async results (35689fc) - api: rename
nodejsResolvertocjsResolver(8c72c8f) - config: new
defineConfighelper (35e265a)
Bug Fixes
- config: proper error message when certain configuration properties was invalid (b029569)
v8.7.4
Bug Fixes
- deps: pin @sidvind/better-ajv-errors (94f778b), closes #231
- deps: support vitest v1 (4cc4d23)
v8.7.3
Bug Fixes
- disable
doctype-stylewhen using prettier preset (f1f4004)
v8.7.2
Bug Fixes
- deps: update dependency ignore to v5.3.0 (143e994)
v8.7.1
Bug Fixes
- rules: fix
form-dup-nameissue when more than two names are present in array (5d9ff3b), closes #228
v8.7.0
Features
- html5: support
referrerpolicyattribute (851b559)
v8.6.1
Bug Fixes
- dom: remove usage of regex negative lookbehind (f406393), closes #147
- rules: improve
attribute-misuseerror message (fccce69), closes #226 - typo in CONTRIBUTING.md (855bacf)
v8.6.0
Features
- api: add
meta: MetaAttributeinAttributeEvent(2cda0ae) - cli:
--ruleseverity can now be set with strings, fixes #225. (054972e)
v8.5.0
Features
v8.4.1
Bug Fixes
- rules: fix contextual documentation for
attr-patternrule (0082aef)
v8.4.0
Features
- html5: support
<search>element (720bdd9) - new
implicitRolemetadata for better handling of implicit ARIA roles (fe45ec4), closes #224
v8.3.0
Features
Bug Fixes
- html5:
<label>cannot have emptyfor(3626e1a), closes #223 - html5:
element-required-attributesallows<button>withouttype(useno-implicit-button-typeinstead) (d32f492), closes #221
v8.2.0
Features
- add
allowedIfParentIsPresentmetadata helper (2668899) - html5: add
<source>attributes metadata (e3a3311) - support passing native
HTMLElementto metadata helpers (8af6d01), closes #207
Bug Fixes
- api: typing for
Rule.setSeverity()changed to only acceptSeverity(64f4210)
v8.1.0
Features
Bug Fixes
- add
compatibilityCheckfunction to browser bundle (b89dcc2) - api: remove unintended
nullreturn value from plugins api (0eb0ea8)
v8.0.5
Bug Fixes
- fix import issue with
elements/html5.js(0604c21), closes #219 - make
elements/html5work with esm (d95de27)
v8.0.4
Bug Fixes
- add explicit node import (73f9a1f)
v8.0.3
Bug Fixes
- fix regression bug when using
elementsin extended configuration files and plugins (6892083) - use correct dts when using custom conditions (1b6971e)
v8.0.2
Bug Fixes
- add
browsercondition for main import (d2f7a74) - remove usage of
node:pathandprocessin browser build (2580aeb)
v8.0.1
Bug Fixes
- fix nodejs code being included in browser bundle (7c76a3b)
v8.0.0
⚠ BREAKING CHANGES
See {@link migration migration guide} for details.
- api: The
ConfigFactoryparameter toConfigLoader(and its child classesStaticConfigLoaderandFileSystemConfigLoader) has been removed. No replacement.
If you are using this you are probably better off implementing a fully custom
loader later returning a ResolvedConfig.
- api: A new
getContextualDocumentationreplaces the now deprecatedgetRuleDocumentationmethod. The context parameter togetRuleDocumentationis 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.
- api: This change affect API users only, specifically API users
directly using the
Configclass. Additionally when using theStaticConfigLoaderno modules will be resolved usingrequire(..)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- usesrequire(..)StaticResolver- uses a predefined set of items.- api: The
HtmlValidateclass now has aPromisebased 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();
});
- api:
ConfigLoadermust returnResolvedConfig. 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.
- api: The
TemplateExtractorclass has been moved to the@html-validate/plugin-utilspackage. This change only affects API users who use theTemplateExtractorclass, typically this is only used when writing plugins. - config: Deprecated severity alias
disabledremoved. If you use this in your configuration you need to update it tooff.
{
"rules": {
- "my-awesome-rule": "disabled"
+ "my-awesome-rule": "off"
}
}
- rules: The
voidrule has been removed after being deprecated a long time, it is replaced with the separatevoid-content,void-styleandno-self-closingrules. - deps: minimum required node version is v16
- deps: minimum required jest version is v27
Features
- api:
ConfigLoadermust returnResolvedConfig(d685e6a) - api:
FileSystemConfigLoadersupports passing a customfs-like object (fac704e) - api: add
Promisebased API toHtmlValidateclass (adc7783) - api: add
Resolverclasses as a mean to separatefsfrom browser build (3dc1724) - api: new
getContextualDocumentationto replacegetRuleDocumentation(60c9a12) - api: remove
ConfigFactory(e309d89) - api: remove
TemplateExtractorin favour of@html-validate/plugin-utils(a0a512b) - deps: minimum required jest version is v27 (dc79b6b)
- deps: minimum required node version is v16 (f6ccdb0)
- rules: remove deprecated
voidrule ([3e727d8](https://gitlab.com/html-validate/html-validate/commit/3e727d8878af8977689a6586d0456ad2
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.