@markuplint/ml-spec 3.14.0 → 4.0.0-alpha.10

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 (92) hide show
  1. package/LICENSE +1 -1
  2. package/lib/constant/aria-version.d.ts +2 -2
  3. package/lib/constant/aria-version.js +2 -5
  4. package/lib/dom-traverse/accname-computation.js +4 -7
  5. package/lib/dom-traverse/get-attr-specs.d.ts +2 -2
  6. package/lib/dom-traverse/get-attr-specs.js +3 -7
  7. package/lib/dom-traverse/get-computed-aria-props.d.ts +6 -6
  8. package/lib/dom-traverse/get-computed-aria-props.js +13 -18
  9. package/lib/dom-traverse/get-computed-role.d.ts +2 -7
  10. package/lib/dom-traverse/get-computed-role.js +33 -39
  11. package/lib/dom-traverse/get-content-model.d.ts +2 -27
  12. package/lib/dom-traverse/get-content-model.js +5 -10
  13. package/lib/dom-traverse/get-explicit-role.d.ts +1 -1
  14. package/lib/dom-traverse/get-explicit-role.js +9 -14
  15. package/lib/dom-traverse/get-implicit-role.d.ts +2 -6
  16. package/lib/dom-traverse/get-implicit-role.js +8 -13
  17. package/lib/dom-traverse/get-non-presentational-ancestor.d.ts +5 -11
  18. package/lib/dom-traverse/get-non-presentational-ancestor.js +5 -10
  19. package/lib/dom-traverse/get-permitted-roles.d.ts +4 -8
  20. package/lib/dom-traverse/get-permitted-roles.js +3 -7
  21. package/lib/dom-traverse/get-spec.d.ts +2 -5
  22. package/lib/dom-traverse/get-spec.js +3 -7
  23. package/lib/dom-traverse/has-required-owned-elements.d.ts +2 -8
  24. package/lib/dom-traverse/has-required-owned-elements.js +13 -20
  25. package/lib/dom-traverse/is-exposed.d.ts +1 -1
  26. package/lib/dom-traverse/is-exposed.js +17 -24
  27. package/lib/dom-traverse/matches-context-role.d.ts +2 -7
  28. package/lib/dom-traverse/matches-context-role.js +5 -9
  29. package/lib/dom-traverse/may-be-focusable.d.ts +1 -1
  30. package/lib/dom-traverse/may-be-focusable.js +3 -7
  31. package/lib/index.d.ts +28 -28
  32. package/lib/index.js +28 -33
  33. package/lib/specs/aria-specs.d.ts +5 -8
  34. package/lib/specs/aria-specs.js +1 -5
  35. package/lib/specs/content-model-category-to-tag-names.d.ts +3 -6
  36. package/lib/specs/content-model-category-to-tag-names.js +1 -5
  37. package/lib/specs/get-aria.d.ts +3 -9
  38. package/lib/specs/get-aria.js +11 -17
  39. package/lib/specs/get-attr-specs.d.ts +4 -8
  40. package/lib/specs/get-attr-specs.js +6 -11
  41. package/lib/specs/get-implicit-role.d.ts +2 -8
  42. package/lib/specs/get-implicit-role.js +3 -7
  43. package/lib/specs/get-permitted-roles.d.ts +4 -10
  44. package/lib/specs/get-permitted-roles.js +14 -17
  45. package/lib/specs/get-role-spec.d.ts +4 -11
  46. package/lib/specs/get-role-spec.js +10 -14
  47. package/lib/specs/get-selectors-by-content-model-category.d.ts +2 -2
  48. package/lib/specs/get-selectors-by-content-model-category.js +2 -6
  49. package/lib/specs/get-spec-by-tag-name.d.ts +2 -6
  50. package/lib/specs/get-spec-by-tag-name.js +4 -9
  51. package/lib/specs/is-nothing-content-model.js +3 -7
  52. package/lib/specs/is-palpable-elements.d.ts +5 -9
  53. package/lib/specs/is-palpable-elements.js +5 -10
  54. package/lib/specs/is-presentational.js +1 -5
  55. package/lib/specs/is-void-element.d.ts +3 -1
  56. package/lib/specs/is-void-element.js +4 -10
  57. package/lib/specs/resolve-version.d.ts +3 -6
  58. package/lib/specs/resolve-version.js +7 -12
  59. package/lib/specs/schema-to-spec.d.ts +4 -4
  60. package/lib/specs/schema-to-spec.js +20 -25
  61. package/lib/types/aria.d.ts +133 -147
  62. package/lib/types/aria.js +1 -2
  63. package/lib/types/attributes.d.ts +110 -1504
  64. package/lib/types/attributes.js +1 -2
  65. package/lib/types/index.d.ts +149 -177
  66. package/lib/types/index.js +1 -2
  67. package/lib/types/permitted-structures.d.ts +35 -74
  68. package/lib/types/permitted-structures.js +1 -2
  69. package/lib/utils/get-ns.js +1 -5
  70. package/lib/utils/merge-array.d.ts +4 -9
  71. package/lib/utils/merge-array.js +2 -6
  72. package/lib/utils/resolve-namespace.d.ts +4 -4
  73. package/lib/utils/resolve-namespace.js +4 -9
  74. package/lib/utils/{validateAriaVersion.d.ts → validate-aria-version.d.ts} +1 -1
  75. package/lib/utils/validate-aria-version.js +4 -0
  76. package/package.json +20 -14
  77. package/lib/utils/validateAriaVersion.js +0 -8
  78. package/test/dom-traverse/accname-computation.spec.js +0 -69
  79. package/test/dom-traverse/get-computed-aria-props.spec.js +0 -758
  80. package/test/dom-traverse/get-computed-role.spec.js +0 -315
  81. package/test/dom-traverse/get-implicit-role.spec.js +0 -40
  82. package/test/dom-traverse/has-required-owned-elements.spec.js +0 -34
  83. package/test/dom-traverse/is-exposed.spec.js +0 -70
  84. package/test/dom-traverse/matches-context-role.spec.js +0 -60
  85. package/test/specs/get-attr-specs.spec.js +0 -41
  86. package/test/specs/get-implicit-role.spec.js +0 -79
  87. package/test/specs/get-permitted-roles.spec.js +0 -418
  88. package/test/specs/get-role-spec.spec.js +0 -67
  89. package/test/specs/get-spec-by-tag-name.spec.js +0 -68
  90. package/test/specs/resolve-version.spec.js +0 -34
  91. package/test/specs/schema-to-spec.spec.js +0 -61
  92. package/test/utils/resolve-namespace.spec.js +0 -37
package/package.json CHANGED
@@ -1,12 +1,17 @@
1
1
  {
2
2
  "name": "@markuplint/ml-spec",
3
- "version": "3.14.0",
3
+ "version": "4.0.0-alpha.10",
4
4
  "description": "Types and schema that specs of the Markup languages for markuplint",
5
5
  "repository": "git@github.com:markuplint/markuplint.git",
6
6
  "author": "Yusuke Hirao <yusukehirao@me.com>",
7
7
  "license": "MIT",
8
8
  "private": false,
9
- "main": "lib/index.js",
9
+ "type": "module",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./lib/index.js"
13
+ }
14
+ },
10
15
  "types": "lib/index.d.ts",
11
16
  "publishConfig": {
12
17
  "access": "public"
@@ -18,23 +23,24 @@
18
23
  "build": "tsc",
19
24
  "dev": "tsc --build --watch",
20
25
  "clean": "tsc --build --clean",
21
- "schema:gen": "ts-node ./gen/gen.ts; prettier --write './schemas/*.json';",
22
- "schema:content-models": "json2ts ./schemas/content-models.schema.json > ./src/types/permitted-structures.ts; prettier --write ./src/types/permitted-structures.ts; eslint --fix --config ../../../.eslintrc ./src/types/permitted-structures.ts",
23
- "schema:attributes": "json2ts ./schemas/attributes.schema.json --cwd ./schemas > ./src/types/attributes.ts; prettier --write ./src/types/attributes.ts; eslint --fix --config ../../../.eslintrc ./src/types/attributes.ts",
24
- "schema:aria": "json2ts ./schemas/aria.schema.json --cwd ./schemas > ./src/types/aria.ts; prettier --write ./src/types/aria.ts; eslint --fix --config ../../../.eslintrc ./src/types/aria.ts",
25
- "schema": "run-s schema:*"
26
+ "schema": "run-s schema:json schema:content-models schema:attributes schema:aria schema:prettier schema:eslint schema:prettier",
27
+ "schema:json": "node --loader ts-node/esm ./gen/gen.ts",
28
+ "schema:content-models": "json2ts ./schemas/content-models.schema.json > ./src/types/permitted-structures.ts",
29
+ "schema:attributes": "json2ts ./schemas/attributes.schema.json --cwd ./schemas > ./src/types/attributes.ts",
30
+ "schema:aria": "json2ts ./schemas/aria.schema.json --cwd ./schemas > ./src/types/aria.ts",
31
+ "schema:eslint": "eslint --fix --config ../../../.eslintrc \"./src/types/*.ts\"",
32
+ "schema:prettier": "prettier --write \"./schemas/*.json\" \"./src/types/*.ts\" --log-level warn"
26
33
  },
27
34
  "dependencies": {
28
- "@markuplint/ml-ast": "3.2.0",
29
- "@markuplint/types": "3.12.0",
35
+ "@markuplint/ml-ast": "4.0.0-alpha.10",
36
+ "@markuplint/types": "4.0.0-alpha.10",
30
37
  "dom-accessibility-api": "^0.6.3",
31
38
  "is-plain-object": "^5.0.0",
32
- "tslib": "^2.6.2",
33
- "type-fest": "^4.8.2"
39
+ "type-fest": "^4.10.1"
34
40
  },
35
41
  "devDependencies": {
36
- "@markuplint/test-tools": "3.8.0",
37
- "json-schema-to-typescript": "13.1.1"
42
+ "@markuplint/test-tools": "4.0.0-alpha.10",
43
+ "json-schema-to-typescript": "13.1.2"
38
44
  },
39
- "gitHead": "b37b749d7ac0f9e6cbd022ee7031bc020c6677d3"
45
+ "gitHead": "b41153ea665aa8f091daf6114a06047f4ccb8350"
40
46
  }
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateAriaVersion = void 0;
4
- const aria_version_1 = require("../constant/aria-version");
5
- function validateAriaVersion(version) {
6
- return aria_version_1.ariaVersions.includes(version);
7
- }
8
- exports.validateAriaVersion = validateAriaVersion;
@@ -1,69 +0,0 @@
1
- const { createJSDOMElement: c } = require('@markuplint/test-tools');
2
-
3
- const { getAccname } = require('../../lib/dom-traverse/accname-computation');
4
-
5
- test('Get accessible name', () => {
6
- expect(getAccname(c('<button>label</button>'))).toBe('label');
7
- expect(getAccname(c('<div>text</div>'))).toBe('');
8
- expect(getAccname(c('<div aria-label="label">text</div>'))).toBe('label');
9
- expect(getAccname(c('<span aria-label="label">text</span>'))).toBe('label');
10
- expect(getAccname(c('<img alt="alternative-text" />'))).toBe('alternative-text');
11
- expect(getAccname(c('<img title="title" />'))).toBe('title');
12
- expect(getAccname(c('<div><label for="a">label</label><input id="a" /></div>').children[1])).toBe('label');
13
- });
14
-
15
- test('Invisible element', () => {
16
- expect(getAccname(c('<button>label</button>'))).toBe('label');
17
- expect(getAccname(c('<button aria-disabled="true">label</button>'))).toBe('label');
18
- expect(getAccname(c('<button aria-hidden="true">label</button>'))).toBe('');
19
- expect(getAccname(c('<button hidden>label</button>'))).toBe('');
20
- expect(getAccname(c('<button style="display: none">label</button>'))).toBe('');
21
- });
22
-
23
- /**
24
- * @see https://www.w3.org/TR/accname-1.1/#ex-1-example-1-element1-id-el1-aria-labelledby-el3-element2-id-el2-aria-labelledby-el1-element3-id-el3-hello-element3
25
- */
26
- test('accname-1.1 Example 1', () => {
27
- const complex = c(`<div>
28
- <input id="el1" aria-labelledby="el3" />
29
- <input id="el2" aria-labelledby="el1" />
30
- <h1 id="el3"> hello </h1>
31
- </div>`);
32
- expect(getAccname(complex.children[0])).toBe('hello');
33
- expect(getAccname(complex.children[1])).toBe('');
34
- expect(getAccname(complex.children[2])).toBe('hello');
35
- });
36
-
37
- /**
38
- * @see https://www.w3.org/TR/accname-1.1/#ex-2-example-2-h1-files-h1-ul-li-a-id-file_row1-href-files-documentation-pdf-documentation-pdf-a-span-role-button-tabindex-0-id-del_row1-aria-label-delete-aria-labelledby-del_row1-file_row1-span-li-li-a-id-file_row2-href-files-holidayletter-pdf-holidayletter-pdf-a-span-role-button-tabindex-0-id-del_row2-aria-label-delete-aria-labelledby-del_row2-file_row2-span-li-ul
39
- */
40
- test('accname-1.1 Example 2', () => {
41
- const complex = c(`<ul>
42
- <li>
43
- <a id="file_row1" href="./files/Documentation.pdf">Documentation.pdf</a>
44
- <span role="button" tabindex="0" id="del_row1" aria-label="Delete" aria-labelledby="del_row1 file_row1"></span>
45
- </li>
46
- <li>
47
- <a id="file_row2" href="./files/HolidayLetter.pdf">HolidayLetter.pdf</a>
48
- <span role="button" tabindex="0" id="del_row2" aria-label="Delete" aria-labelledby="del_row2 file_row2"></span>
49
- </li>
50
- </ul>`);
51
- const spans = complex.querySelectorAll('span');
52
- expect(getAccname(spans[0])).toBe('Delete Documentation.pdf');
53
- expect(getAccname(spans[1])).toBe('Delete HolidayLetter.pdf');
54
- });
55
-
56
- /**
57
- * @see https://www.w3.org/TR/accname-1.1/#ex-3-example-3-div-role-checkbox-aria-checked-false-flash-the-screen-span-role-textbox-aria-multiline-false-5-span-times-div
58
- */
59
- test('accname-1.1 Example 3', () => {
60
- const complex = c(
61
- '<div role="checkbox" aria-checked="false">Flash the screen <span role="textbox" aria-multiline="false"> 5 </span> times</div>',
62
- );
63
- expect(getAccname(complex)).toBe('Flash the screen 5 times');
64
- });
65
-
66
- test('with comment', () => {
67
- expect(getAccname(c('<button>label</button>'))).toBe('label');
68
- expect(getAccname(c('<button>label<!-- comment --></button>'))).toBe('label');
69
- });