html-validate 10.12.1 → 10.13.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 (44) hide show
  1. package/dist/cjs/browser.js +1 -0
  2. package/dist/cjs/browser.js.map +1 -1
  3. package/dist/cjs/core.js +13 -6
  4. package/dist/cjs/core.js.map +1 -1
  5. package/dist/cjs/elements.js +11 -2
  6. package/dist/cjs/elements.js.map +1 -1
  7. package/dist/cjs/html-validate.js +1 -0
  8. package/dist/cjs/html-validate.js.map +1 -1
  9. package/dist/cjs/html5.js +1 -0
  10. package/dist/cjs/html5.js.map +1 -1
  11. package/dist/cjs/index.js +1 -0
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/jest-worker.js +1 -0
  14. package/dist/cjs/jest-worker.js.map +1 -1
  15. package/dist/cjs/jest.js +1 -0
  16. package/dist/cjs/jest.js.map +1 -1
  17. package/dist/cjs/utils/parse-image-candidate-string.js +38 -0
  18. package/dist/cjs/utils/parse-image-candidate-string.js.map +1 -0
  19. package/dist/cjs/vitest.js +1 -0
  20. package/dist/cjs/vitest.js.map +1 -1
  21. package/dist/esm/browser.js +1 -0
  22. package/dist/esm/browser.js.map +1 -1
  23. package/dist/esm/core.js +13 -6
  24. package/dist/esm/core.js.map +1 -1
  25. package/dist/esm/elements.js +11 -2
  26. package/dist/esm/elements.js.map +1 -1
  27. package/dist/esm/html-validate.js +1 -0
  28. package/dist/esm/html-validate.js.map +1 -1
  29. package/dist/esm/html5.js +1 -0
  30. package/dist/esm/html5.js.map +1 -1
  31. package/dist/esm/index.js +1 -0
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/esm/jest-worker.js +1 -0
  34. package/dist/esm/jest-worker.js.map +1 -1
  35. package/dist/esm/jest.js +1 -0
  36. package/dist/esm/jest.js.map +1 -1
  37. package/dist/esm/utils/parse-image-candidate-string.js +36 -0
  38. package/dist/esm/utils/parse-image-candidate-string.js.map +1 -0
  39. package/dist/esm/vitest.js +1 -0
  40. package/dist/esm/vitest.js.map +1 -1
  41. package/dist/schema/elements.json +6 -0
  42. package/dist/types/browser.d.ts +9 -0
  43. package/dist/types/index.d.ts +9 -0
  44. package/package.json +2 -2
@@ -1,4 +1,5 @@
1
1
  import { m as metadataHelper } from './meta-helper.js';
2
+ import { p as parseImageCandidateString } from './utils/parse-image-candidate-string.js';
2
3
 
3
4
  const {
4
5
  allowedIfAttributeIsPresent,
@@ -34,6 +35,9 @@ function isInsideLandmark(node) {
34
35
  ];
35
36
  return Boolean(node.closest(selectors.join(",")));
36
37
  }
38
+ function hasWidthDescriptor(srcset) {
39
+ return parseImageCandidateString(srcset).some((it) => it.descriptor === "width");
40
+ }
37
41
  function linkBodyOk(node) {
38
42
  if (node.hasAttribute("itemprop")) {
39
43
  return true;
@@ -533,6 +537,7 @@ var html5 = {
533
537
  permittedContent: ["@flow"]
534
538
  },
535
539
  body: {
540
+ optionalEnd: true,
536
541
  permittedContent: ["@flow"],
537
542
  permittedParent: ["html"],
538
543
  attributes: {
@@ -1103,6 +1108,8 @@ var html5 = {
1103
1108
  }
1104
1109
  },
1105
1110
  head: {
1111
+ implicitClosed: ["body"],
1112
+ optionalEnd: true,
1106
1113
  permittedContent: ["base?", "title?", "@meta"],
1107
1114
  permittedParent: ["html"],
1108
1115
  requiredContent: ["title"],
@@ -1171,6 +1178,7 @@ var html5 = {
1171
1178
  }
1172
1179
  },
1173
1180
  html: {
1181
+ optionalEnd: true,
1174
1182
  permittedContent: ["head?", "body?"],
1175
1183
  permittedOrder: ["head", "body"],
1176
1184
  requiredContent: ["head", "body"],
@@ -1700,8 +1708,9 @@ var html5 = {
1700
1708
  return null;
1701
1709
  },
1702
1710
  required(node) {
1703
- if (node.hasAttribute("imagesrcset")) {
1704
- return `{{ tagName }} requires "{{ attr }}" attribute when "imagesrcset" attribute is set`;
1711
+ const imagesrcset = node.getAttribute("imagesrcset");
1712
+ if (typeof imagesrcset === "string" && hasWidthDescriptor(imagesrcset)) {
1713
+ return `{{ tagName }} requires "{{ attr }}" attribute when "imagesrcset" uses width descriptors`;
1705
1714
  }
1706
1715
  return false;
1707
1716
  }