html-validate 10.9.0 → 10.10.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 (38) hide show
  1. package/dist/cjs/cli.js +10 -10
  2. package/dist/cjs/cli.js.map +1 -1
  3. package/dist/cjs/core-browser.js +1 -1
  4. package/dist/cjs/core-browser.js.map +1 -1
  5. package/dist/cjs/core-nodejs.js +1 -1
  6. package/dist/cjs/core-nodejs.js.map +1 -1
  7. package/dist/cjs/core.js +179 -120
  8. package/dist/cjs/core.js.map +1 -1
  9. package/dist/cjs/elements.js +24 -16
  10. package/dist/cjs/elements.js.map +1 -1
  11. package/dist/cjs/html-validate.js +23 -15
  12. package/dist/cjs/html-validate.js.map +1 -1
  13. package/dist/cjs/matchers-jestonly.js +2 -2
  14. package/dist/cjs/matchers-jestonly.js.map +1 -1
  15. package/dist/cjs/tsdoc-metadata.json +1 -1
  16. package/dist/cjs/utils/natural-join.js +1 -1
  17. package/dist/cjs/utils/natural-join.js.map +1 -1
  18. package/dist/esm/cli.js +10 -10
  19. package/dist/esm/cli.js.map +1 -1
  20. package/dist/esm/core-browser.js +1 -1
  21. package/dist/esm/core-browser.js.map +1 -1
  22. package/dist/esm/core-nodejs.js +1 -1
  23. package/dist/esm/core-nodejs.js.map +1 -1
  24. package/dist/esm/core.js +179 -120
  25. package/dist/esm/core.js.map +1 -1
  26. package/dist/esm/elements.js +24 -16
  27. package/dist/esm/elements.js.map +1 -1
  28. package/dist/esm/html-validate.js +24 -16
  29. package/dist/esm/html-validate.js.map +1 -1
  30. package/dist/esm/matchers-jestonly.js +2 -2
  31. package/dist/esm/matchers-jestonly.js.map +1 -1
  32. package/dist/esm/utils/natural-join.js +1 -1
  33. package/dist/esm/utils/natural-join.js.map +1 -1
  34. package/dist/schema/elements.json +6 -0
  35. package/dist/tsdoc-metadata.json +1 -1
  36. package/dist/types/browser.d.ts +24 -9
  37. package/dist/types/index.d.ts +24 -9
  38. package/package.json +3 -3
@@ -47,7 +47,7 @@ function linkBodyOk(node) {
47
47
  if (typeof rel !== "string") {
48
48
  return false;
49
49
  }
50
- const bodyOk = [
50
+ const bodyOk = /* @__PURE__ */ new Set([
51
51
  "dns-prefetch",
52
52
  "modulepreload",
53
53
  "pingback",
@@ -55,9 +55,9 @@ function linkBodyOk(node) {
55
55
  "prefetch",
56
56
  "preload",
57
57
  "stylesheet"
58
- ];
58
+ ]);
59
59
  const tokens = rel.toLowerCase().split(/\s+/);
60
- return tokens.some((keyword) => bodyOk.includes(keyword));
60
+ return tokens.some((keyword) => bodyOk.has(keyword));
61
61
  }
62
62
  var html5 = {
63
63
  "*": {
@@ -152,7 +152,7 @@ var html5 = {
152
152
  if (!attr || attr === "" || typeof attr !== "string") {
153
153
  return null;
154
154
  }
155
- const disallowed = [
155
+ const disallowed = /* @__PURE__ */ new Set([
156
156
  /* whatwg */
157
157
  "canonical",
158
158
  "dns-prefetch",
@@ -199,10 +199,10 @@ var html5 = {
199
199
  "stylesheet/less",
200
200
  "token_endpoint",
201
201
  "yandex-tableau-widget"
202
- ];
202
+ ]);
203
203
  const tokens = attr.toLowerCase().split(/\s+/);
204
204
  for (const keyword of tokens) {
205
- if (disallowed.includes(keyword)) {
205
+ if (disallowed.has(keyword)) {
206
206
  return `<a> does not allow rel="${keyword}"`;
207
207
  }
208
208
  if (keyword.startsWith("dcterms.")) {
@@ -326,7 +326,7 @@ var html5 = {
326
326
  if (!attr || attr === "" || typeof attr !== "string") {
327
327
  return null;
328
328
  }
329
- const disallowed = [
329
+ const disallowed = /* @__PURE__ */ new Set([
330
330
  /* whatwg */
331
331
  "canonical",
332
332
  "dns-prefetch",
@@ -373,10 +373,10 @@ var html5 = {
373
373
  "stylesheet/less",
374
374
  "token_endpoint",
375
375
  "yandex-tableau-widget"
376
- ];
376
+ ]);
377
377
  const tokens = attr.toLowerCase().split(/\s+/);
378
378
  for (const keyword of tokens) {
379
- if (disallowed.includes(keyword)) {
379
+ if (disallowed.has(keyword)) {
380
380
  return `<area> does not allow rel="${keyword}"`;
381
381
  }
382
382
  if (keyword.startsWith("dcterms.")) {
@@ -603,6 +603,10 @@ var html5 = {
603
603
  listed: true
604
604
  },
605
605
  labelable: true,
606
+ submitButton(node) {
607
+ const type = node.getAttribute("type");
608
+ return !type || type === "submit";
609
+ },
606
610
  attributes: {
607
611
  autofocus: {
608
612
  boolean: true
@@ -958,7 +962,7 @@ var html5 = {
958
962
  if (!attr || attr === "" || typeof attr !== "string") {
959
963
  return null;
960
964
  }
961
- const disallowed = [
965
+ const disallowed = /* @__PURE__ */ new Set([
962
966
  /* whatwg */
963
967
  "alternate",
964
968
  "canonical",
@@ -977,10 +981,10 @@ var html5 = {
977
981
  "stylesheet",
978
982
  "tag",
979
983
  "terms-of-service"
980
- ];
984
+ ]);
981
985
  const tokens = attr.toLowerCase().split(/\s+/);
982
986
  for (const keyword of tokens) {
983
- if (disallowed.includes(keyword)) {
987
+ if (disallowed.has(keyword)) {
984
988
  return `<form> does not allow rel="${keyword}"`;
985
989
  }
986
990
  }
@@ -1350,6 +1354,10 @@ var html5 = {
1350
1354
  labelable(node) {
1351
1355
  return node.getAttribute("type") !== "hidden";
1352
1356
  },
1357
+ submitButton(node) {
1358
+ const type = node.getAttribute("type");
1359
+ return type === "submit" || type === "image";
1360
+ },
1353
1361
  attributes: {
1354
1362
  align: {
1355
1363
  deprecated: true
@@ -1715,7 +1723,7 @@ var html5 = {
1715
1723
  if (!attr || attr === "" || typeof attr !== "string") {
1716
1724
  return null;
1717
1725
  }
1718
- const disallowed = [
1726
+ const disallowed = /* @__PURE__ */ new Set([
1719
1727
  /* whatwg */
1720
1728
  "bookmark",
1721
1729
  "external",
@@ -1729,10 +1737,10 @@ var html5 = {
1729
1737
  "entry-content",
1730
1738
  "lightbox",
1731
1739
  "lightvideo"
1732
- ];
1740
+ ]);
1733
1741
  const tokens = attr.toLowerCase().split(/\s+/);
1734
1742
  for (const keyword of tokens) {
1735
- if (disallowed.includes(keyword)) {
1743
+ if (disallowed.has(keyword)) {
1736
1744
  return `<link> does not allow rel="${keyword}"`;
1737
1745
  }
1738
1746
  }
@@ -2323,7 +2331,7 @@ var html5 = {
2323
2331
  }
2324
2332
  const size = node.getAttribute("size");
2325
2333
  if (typeof size === "string") {
2326
- const parsed = parseInt(size, 10);
2334
+ const parsed = Number.parseInt(size, 10);
2327
2335
  if (parsed > 1) {
2328
2336
  return "listbox";
2329
2337
  }