html-validate 7.7.1 → 7.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/cjs/browser.d.ts +4 -2
  2. package/dist/cjs/browser.js +11 -7
  3. package/dist/cjs/browser.js.map +1 -1
  4. package/dist/cjs/cli.js +2 -0
  5. package/dist/cjs/cli.js.map +1 -1
  6. package/dist/cjs/core.d.ts +26 -67
  7. package/dist/cjs/core.js +189 -2388
  8. package/dist/cjs/core.js.map +1 -1
  9. package/dist/cjs/elements.js +3704 -0
  10. package/dist/cjs/elements.js.map +1 -0
  11. package/dist/cjs/html-validate.js +3 -0
  12. package/dist/cjs/html-validate.js.map +1 -1
  13. package/dist/cjs/index.d.ts +5 -3
  14. package/dist/cjs/index.js +11 -7
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/jest-lib.js +1 -0
  17. package/dist/cjs/jest-lib.js.map +1 -1
  18. package/dist/cjs/jest.d.ts +1 -1
  19. package/dist/cjs/jest.js +3 -0
  20. package/dist/cjs/jest.js.map +1 -1
  21. package/dist/cjs/meta-helper.d.ts +27 -0
  22. package/dist/cjs/meta-helper.js +64 -0
  23. package/dist/cjs/meta-helper.js.map +1 -0
  24. package/dist/cjs/rules-helper.d.ts +45 -0
  25. package/dist/cjs/rules-helper.js +408 -0
  26. package/dist/cjs/rules-helper.js.map +1 -0
  27. package/dist/cjs/test-utils.d.ts +1 -1
  28. package/dist/es/browser.d.ts +4 -2
  29. package/dist/es/browser.js +4 -2
  30. package/dist/es/browser.js.map +1 -1
  31. package/dist/es/cli.js +3 -1
  32. package/dist/es/cli.js.map +1 -1
  33. package/dist/es/core.d.ts +26 -67
  34. package/dist/es/core.js +156 -2357
  35. package/dist/es/core.js.map +1 -1
  36. package/dist/es/elements.js +3701 -0
  37. package/dist/es/elements.js.map +1 -0
  38. package/dist/es/html-validate.js +3 -1
  39. package/dist/es/html-validate.js.map +1 -1
  40. package/dist/es/index.d.ts +5 -3
  41. package/dist/es/index.js +4 -2
  42. package/dist/es/index.js.map +1 -1
  43. package/dist/es/jest-lib.js +2 -1
  44. package/dist/es/jest-lib.js.map +1 -1
  45. package/dist/es/jest.d.ts +1 -1
  46. package/dist/es/jest.js +3 -1
  47. package/dist/es/jest.js.map +1 -1
  48. package/dist/es/meta-helper.d.ts +27 -0
  49. package/dist/es/meta-helper.js +61 -0
  50. package/dist/es/meta-helper.js.map +1 -0
  51. package/dist/es/rules-helper.d.ts +45 -0
  52. package/dist/es/rules-helper.js +398 -0
  53. package/dist/es/rules-helper.js.map +1 -0
  54. package/dist/es/test-utils.d.ts +1 -1
  55. package/elements/html5.js +1 -2119
  56. package/package.json +9 -8
  57. package/elements/README.md +0 -49
  58. package/elements/entities.json +0 -1724
@@ -0,0 +1,398 @@
1
+ import { q as isTextNode, t as isElementNode, a as ConfigError, D as DynamicValue, u as generateIdSelector } from './core.js';
2
+
3
+ const ARIA_HIDDEN_CACHE = Symbol(isAriaHidden.name);
4
+ const HTML_HIDDEN_CACHE = Symbol(isHTMLHidden.name);
5
+ const ROLE_PRESENTATION_CACHE = Symbol(isPresentation.name);
6
+ /**
7
+ * Tests if this element is present in the accessibility tree.
8
+ *
9
+ * In practice it tests whenever the element or its parents has
10
+ * `role="presentation"` or `aria-hidden="false"`. Dynamic values counts as
11
+ * visible since the element might be in the visibility tree sometimes.
12
+ */
13
+ function inAccessibilityTree(node) {
14
+ return !isAriaHidden(node) && !isPresentation(node);
15
+ }
16
+ function isAriaHiddenImpl(node) {
17
+ const isHidden = (node) => {
18
+ const ariaHidden = node.getAttribute("aria-hidden");
19
+ return Boolean(ariaHidden && ariaHidden.value === "true");
20
+ };
21
+ return {
22
+ byParent: node.parent ? isAriaHidden(node.parent) : false,
23
+ bySelf: isHidden(node),
24
+ };
25
+ }
26
+ function isAriaHidden(node, details) {
27
+ const cached = node.cacheGet(ARIA_HIDDEN_CACHE);
28
+ if (cached) {
29
+ return details ? cached : cached.byParent || cached.bySelf;
30
+ }
31
+ const result = node.cacheSet(ARIA_HIDDEN_CACHE, isAriaHiddenImpl(node));
32
+ return details ? result : result.byParent || result.bySelf;
33
+ }
34
+ function isHTMLHiddenImpl(node) {
35
+ const isHidden = (node) => {
36
+ const hidden = node.getAttribute("hidden");
37
+ return hidden !== null && hidden.isStatic;
38
+ };
39
+ return {
40
+ byParent: node.parent ? isHTMLHidden(node.parent) : false,
41
+ bySelf: isHidden(node),
42
+ };
43
+ }
44
+ function isHTMLHidden(node, details) {
45
+ const cached = node.cacheGet(HTML_HIDDEN_CACHE);
46
+ if (cached) {
47
+ return details ? cached : cached.byParent || cached.bySelf;
48
+ }
49
+ const result = node.cacheSet(HTML_HIDDEN_CACHE, isHTMLHiddenImpl(node));
50
+ return details ? result : result.byParent || result.bySelf;
51
+ }
52
+ /**
53
+ * Tests if this element or a parent element has role="presentation".
54
+ *
55
+ * Dynamic values yields `false` just as if the attribute wasn't present.
56
+ */
57
+ function isPresentation(node) {
58
+ if (node.cacheExists(ROLE_PRESENTATION_CACHE)) {
59
+ return Boolean(node.cacheGet(ROLE_PRESENTATION_CACHE));
60
+ }
61
+ let cur = node;
62
+ do {
63
+ const role = cur.getAttribute("role");
64
+ /* role="presentation" */
65
+ if (role && role.value === "presentation") {
66
+ return cur.cacheSet(ROLE_PRESENTATION_CACHE, true);
67
+ }
68
+ /* sanity check: break if no parent is present, normally not an issue as the
69
+ * root element should be found first */
70
+ if (!cur.parent) {
71
+ break;
72
+ }
73
+ /* check parents */
74
+ cur = cur.parent;
75
+ } while (!cur.isRootElement());
76
+ return node.cacheSet(ROLE_PRESENTATION_CACHE, false);
77
+ }
78
+
79
+ const cachePrefix = classifyNodeText.name;
80
+ const HTML_CACHE_KEY = Symbol(`${cachePrefix}|html`);
81
+ const A11Y_CACHE_KEY = Symbol(`${cachePrefix}|a11y`);
82
+ const IGNORE_HIDDEN_ROOT_HTML_CACHE_KEY = Symbol(`${cachePrefix}|html|ignore-hidden-root`);
83
+ const IGNORE_HIDDEN_ROOT_A11Y_CACHE_KEY = Symbol(`${cachePrefix}|a11y|ignore-hidden-root`);
84
+ /**
85
+ * @public
86
+ */
87
+ var TextClassification;
88
+ (function (TextClassification) {
89
+ TextClassification[TextClassification["EMPTY_TEXT"] = 0] = "EMPTY_TEXT";
90
+ TextClassification[TextClassification["DYNAMIC_TEXT"] = 1] = "DYNAMIC_TEXT";
91
+ TextClassification[TextClassification["STATIC_TEXT"] = 2] = "STATIC_TEXT";
92
+ })(TextClassification || (TextClassification = {}));
93
+ function getCachekey(options = {}) {
94
+ const { accessible = false, ignoreHiddenRoot = false } = options;
95
+ if (accessible && ignoreHiddenRoot) {
96
+ return IGNORE_HIDDEN_ROOT_A11Y_CACHE_KEY;
97
+ }
98
+ else if (ignoreHiddenRoot) {
99
+ return IGNORE_HIDDEN_ROOT_HTML_CACHE_KEY;
100
+ }
101
+ else if (accessible) {
102
+ return A11Y_CACHE_KEY;
103
+ }
104
+ else {
105
+ return HTML_CACHE_KEY;
106
+ }
107
+ }
108
+ /* While I cannot find a reference about this in the standard the <select>
109
+ * element kinda acts as if there is no text content, most particularly it
110
+ * doesn't receive and accessible name. The `.textContent` property does
111
+ * however include the <option> childrens text. But for the sake of the
112
+ * validator it is probably best if the classification acts as if there is no
113
+ * text as I think that is what is expected of the return values. Might have
114
+ * to revisit this at some point or if someone could clarify what section of
115
+ * the standard deals with this. */
116
+ function isSpecialEmpty(node) {
117
+ return node.is("select") || node.is("textarea");
118
+ }
119
+ /**
120
+ * Checks text content of an element.
121
+ *
122
+ * Any text is considered including text from descendant elements. Whitespace is
123
+ * ignored.
124
+ *
125
+ * If any text is dynamic `TextClassification.DYNAMIC_TEXT` is returned.
126
+ *
127
+ * @public
128
+ */
129
+ function classifyNodeText(node, options = {}) {
130
+ const { accessible = false, ignoreHiddenRoot = false } = options;
131
+ const cacheKey = getCachekey(options);
132
+ if (node.cacheExists(cacheKey)) {
133
+ return node.cacheGet(cacheKey);
134
+ }
135
+ if (!ignoreHiddenRoot && isHTMLHidden(node)) {
136
+ return node.cacheSet(cacheKey, TextClassification.EMPTY_TEXT);
137
+ }
138
+ if (!ignoreHiddenRoot && accessible && isAriaHidden(node)) {
139
+ return node.cacheSet(cacheKey, TextClassification.EMPTY_TEXT);
140
+ }
141
+ if (isSpecialEmpty(node)) {
142
+ return node.cacheSet(cacheKey, TextClassification.EMPTY_TEXT);
143
+ }
144
+ const text = findTextNodes(node, {
145
+ ...options,
146
+ ignoreHiddenRoot: false,
147
+ });
148
+ /* if any text is dynamic classify as dynamic */
149
+ if (text.some((cur) => cur.isDynamic)) {
150
+ return node.cacheSet(cacheKey, TextClassification.DYNAMIC_TEXT);
151
+ }
152
+ /* if any text has non-whitespace character classify as static */
153
+ if (text.some((cur) => cur.textContent.match(/\S/) !== null)) {
154
+ return node.cacheSet(cacheKey, TextClassification.STATIC_TEXT);
155
+ }
156
+ /* default to empty */
157
+ return node.cacheSet(cacheKey, TextClassification.EMPTY_TEXT);
158
+ }
159
+ function findTextNodes(node, options) {
160
+ const { accessible = false } = options;
161
+ let text = [];
162
+ for (const child of node.childNodes) {
163
+ if (isTextNode(child)) {
164
+ text.push(child);
165
+ }
166
+ else if (isElementNode(child)) {
167
+ if (isHTMLHidden(child, true).bySelf) {
168
+ continue;
169
+ }
170
+ if (accessible && isAriaHidden(child, true).bySelf) {
171
+ continue;
172
+ }
173
+ text = text.concat(findTextNodes(child, options));
174
+ }
175
+ }
176
+ return text;
177
+ }
178
+
179
+ function hasAltText(image) {
180
+ const alt = image.getAttribute("alt");
181
+ /* missing or boolean */
182
+ if (alt === null || alt.value === null) {
183
+ return false;
184
+ }
185
+ return alt.isDynamic || alt.value.toString() !== "";
186
+ }
187
+
188
+ function hasAriaLabel(node) {
189
+ const label = node.getAttribute("aria-label");
190
+ /* missing or boolean */
191
+ if (label === null || label.value === null) {
192
+ return false;
193
+ }
194
+ return label.isDynamic || label.value.toString() !== "";
195
+ }
196
+
197
+ /**
198
+ * Joins a list of words into natural language.
199
+ *
200
+ * - `["foo"]` becomes `"foo"`
201
+ * - `["foo", "bar"]` becomes `"foo or bar"`
202
+ * - `["foo", "bar", "baz"]` becomes `"foo, bar or baz"`
203
+ * - and so on...
204
+ *
205
+ * @internal
206
+ * @param values - List of words to join
207
+ * @param conjunction - Conjunction for the last element.
208
+ * @returns String with the words naturally joined with a conjunction.
209
+ */
210
+ function naturalJoin(values, conjunction = "or") {
211
+ switch (values.length) {
212
+ case 0:
213
+ return "";
214
+ case 1:
215
+ return values[0];
216
+ case 2:
217
+ return `${values[0]} ${conjunction} ${values[1]}`;
218
+ default:
219
+ return `${values.slice(0, -1).join(", ")} ${conjunction} ${values.slice(-1)[0]}`;
220
+ }
221
+ }
222
+
223
+ /**
224
+ * Represents casing for a name, e.g. lowercase, uppercase, etc.
225
+ */
226
+ class CaseStyle {
227
+ /**
228
+ * @param style - Name of a valid case style.
229
+ */
230
+ constructor(style, ruleId) {
231
+ if (!Array.isArray(style)) {
232
+ style = [style];
233
+ }
234
+ if (style.length === 0) {
235
+ throw new ConfigError(`Missing style for ${ruleId} rule`);
236
+ }
237
+ this.styles = this.parseStyle(style, ruleId);
238
+ }
239
+ /**
240
+ * Test if a text matches this case style.
241
+ */
242
+ match(text) {
243
+ return this.styles.some((style) => text.match(style.pattern));
244
+ }
245
+ get name() {
246
+ const names = this.styles.map((style) => style.name);
247
+ switch (this.styles.length) {
248
+ case 1:
249
+ return names[0];
250
+ case 2:
251
+ return names.join(" or ");
252
+ default: {
253
+ const last = names.slice(-1);
254
+ const rest = names.slice(0, -1);
255
+ return `${rest.join(", ")} or ${last[0]}`;
256
+ }
257
+ }
258
+ }
259
+ parseStyle(style, ruleId) {
260
+ return style.map((cur) => {
261
+ switch (cur.toLowerCase()) {
262
+ case "lowercase":
263
+ return { pattern: /^[a-z]*$/, name: "lowercase" };
264
+ case "uppercase":
265
+ return { pattern: /^[A-Z]*$/, name: "uppercase" };
266
+ case "pascalcase":
267
+ return { pattern: /^[A-Z][A-Za-z]*$/, name: "PascalCase" };
268
+ case "camelcase":
269
+ return { pattern: /^[a-z][A-Za-z]*$/, name: "camelCase" };
270
+ default:
271
+ throw new ConfigError(`Invalid style "${cur}" for ${ruleId} rule`);
272
+ }
273
+ });
274
+ }
275
+ }
276
+
277
+ const HAS_ACCESSIBLE_TEXT_CACHE = Symbol(hasAccessibleName.name);
278
+ function isHidden(node, context) {
279
+ const { reference } = context;
280
+ if (reference && reference.isSameNode(node)) {
281
+ return false;
282
+ }
283
+ else {
284
+ return isHTMLHidden(node) || !inAccessibilityTree(node);
285
+ }
286
+ }
287
+ function hasImgAltText(node, context) {
288
+ if (node.is("img")) {
289
+ return hasAltText(node);
290
+ }
291
+ else if (node.is("svg")) {
292
+ return node.textContent.trim() !== "";
293
+ }
294
+ else {
295
+ for (const img of node.querySelectorAll("img, svg")) {
296
+ const hasName = hasAccessibleNameImpl(img, context);
297
+ if (hasName) {
298
+ return true;
299
+ }
300
+ }
301
+ return false;
302
+ }
303
+ }
304
+ function hasLabel(node) {
305
+ var _a;
306
+ const value = (_a = node.getAttributeValue("aria-label")) !== null && _a !== void 0 ? _a : "";
307
+ return Boolean(value.trim());
308
+ }
309
+ function isLabelledby(node, context) {
310
+ const { document, reference } = context;
311
+ /* if we already have resolved one level of reference we don't resolve another
312
+ * level (as per accname step 2B) */
313
+ if (reference) {
314
+ return false;
315
+ }
316
+ const ariaLabelledby = node.ariaLabelledby;
317
+ /* consider dynamic aria-labelledby as having a name as we cannot resolve it
318
+ * so no way to prove correctness */
319
+ if (ariaLabelledby instanceof DynamicValue) {
320
+ return true;
321
+ }
322
+ /* ignore elements without aria-labelledby */
323
+ if (ariaLabelledby === null) {
324
+ return false;
325
+ }
326
+ return ariaLabelledby.some((id) => {
327
+ const selector = generateIdSelector(id);
328
+ return document.querySelectorAll(selector).some((child) => {
329
+ return hasAccessibleNameImpl(child, {
330
+ document,
331
+ reference: child,
332
+ });
333
+ });
334
+ });
335
+ }
336
+ /**
337
+ * This algorithm is based on ["Accessible Name and Description Computation
338
+ * 1.2"][accname] with some exceptions:
339
+ *
340
+ * It doesn't compute the actual name but only the presence of one, e.g. if a
341
+ * non-empty flat string is present the algorithm terminates with a positive
342
+ * result.
343
+ *
344
+ * It takes some optimization shortcuts such as starting with step F as it
345
+ * would be more common usage and as there is no actual name being computed
346
+ * the order wont matter.
347
+ *
348
+ * [accname]: https://w3c.github.io/accname
349
+ */
350
+ function hasAccessibleNameImpl(current, context) {
351
+ const { reference } = context;
352
+ /* if this element is hidden (see function for exceptions) it does not have an accessible name */
353
+ if (isHidden(current, context)) {
354
+ return false;
355
+ }
356
+ /* special case: when this element is directly referenced by aria-labelledby
357
+ * we ignore `hidden` */
358
+ const ignoreHiddenRoot = Boolean(reference && reference.isSameNode(current));
359
+ const text = classifyNodeText(current, { accessible: true, ignoreHiddenRoot });
360
+ if (text !== TextClassification.EMPTY_TEXT) {
361
+ return true;
362
+ }
363
+ if (hasImgAltText(current, context)) {
364
+ return true;
365
+ }
366
+ if (hasLabel(current)) {
367
+ return true;
368
+ }
369
+ if (isLabelledby(current, context)) {
370
+ return true;
371
+ }
372
+ return false;
373
+ }
374
+ /**
375
+ * Returns `true` if the element has an accessible name.
376
+ *
377
+ * It does not yet consider if the elements role prohibits naming, e.g. a `<p>`
378
+ * element will still show up as having an accessible name.
379
+ *
380
+ * @public
381
+ * @param document - Document element.
382
+ * @param current - The element to get accessible name for
383
+ * @returns `true` if the element has an accessible name.
384
+ */
385
+ function hasAccessibleName(document, current) {
386
+ /* istanbul ignore next: we're not testing cache */
387
+ if (current.cacheExists(HAS_ACCESSIBLE_TEXT_CACHE)) {
388
+ return Boolean(current.cacheGet(HAS_ACCESSIBLE_TEXT_CACHE));
389
+ }
390
+ const result = hasAccessibleNameImpl(current, {
391
+ document,
392
+ reference: null,
393
+ });
394
+ return current.cacheSet(HAS_ACCESSIBLE_TEXT_CACHE, result);
395
+ }
396
+
397
+ export { CaseStyle as C, TextClassification as T, isAriaHidden as a, hasAccessibleName as b, classifyNodeText as c, inAccessibilityTree as d, hasAriaLabel as e, hasAltText as h, isHTMLHidden as i, naturalJoin as n };
398
+ //# sourceMappingURL=rules-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-helper.js","sources":["../../../src/rules/helper/a11y.ts","../../../src/rules/helper/text.ts","../../../src/rules/helper/has-alt-text.ts","../../../src/rules/helper/has-aria-label.ts","../../../src/rules/helper/natural-join.ts","../../../src/rules/helper/case-style.ts","../../../src/rules/helper/has-accessible-name.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { I as Transformer, w as Source } from './core.js';
1
+ import { J as Transformer, s as Source } from './core.js';
2
2
  import 'ajv';
3
3
 
4
4
  /**