@markuplint/ml-core 2.3.3 → 3.0.0-alpha.1

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 (113) hide show
  1. package/lib/configs.d.ts +1 -1
  2. package/lib/configs.js +29 -9
  3. package/lib/index.d.ts +8 -8
  4. package/lib/index.js +18 -10
  5. package/lib/ml-core.d.ts +3 -3
  6. package/lib/ml-core.js +48 -44
  7. package/lib/ml-dom/helper/accname.d.ts +3 -2
  8. package/lib/ml-dom/helper/accname.js +53 -5
  9. package/lib/ml-dom/helper/create-node.d.ts +4 -5
  10. package/lib/ml-dom/helper/create-node.js +12 -16
  11. package/lib/ml-dom/helper/debug.d.ts +2 -2
  12. package/lib/ml-dom/helper/debug.js +35 -21
  13. package/lib/ml-dom/helper/getIndent.d.ts +5 -5
  14. package/lib/ml-dom/helper/getIndent.js +14 -14
  15. package/lib/ml-dom/helper/walkers.d.ts +5 -4
  16. package/lib/ml-dom/helper/walkers.js +39 -3
  17. package/lib/ml-dom/index.d.ts +8 -3
  18. package/lib/ml-dom/index.js +3 -15
  19. package/lib/ml-dom/manipulations/child-node-methods.d.ts +33 -0
  20. package/lib/ml-dom/manipulations/child-node-methods.js +73 -0
  21. package/lib/ml-dom/manipulations/get-children.d.ts +4 -0
  22. package/lib/ml-dom/manipulations/get-children.js +10 -0
  23. package/lib/ml-dom/node/attr.d.ts +98 -0
  24. package/lib/ml-dom/node/attr.js +157 -0
  25. package/lib/ml-dom/node/block.d.ts +38 -0
  26. package/lib/ml-dom/node/block.js +53 -0
  27. package/lib/ml-dom/node/character-data.d.ts +57 -0
  28. package/lib/ml-dom/node/character-data.js +87 -0
  29. package/lib/ml-dom/node/child-node.d.ts +9 -0
  30. package/lib/ml-dom/node/child-node.js +10 -0
  31. package/lib/ml-dom/node/comment.d.ts +17 -0
  32. package/lib/ml-dom/node/comment.js +24 -0
  33. package/lib/ml-dom/node/document-fragment.d.ts +24 -0
  34. package/lib/ml-dom/node/document-fragment.js +33 -0
  35. package/lib/ml-dom/node/document-type.d.ts +38 -0
  36. package/lib/ml-dom/node/document-type.js +52 -0
  37. package/lib/ml-dom/node/document.d.ts +1563 -0
  38. package/lib/ml-dom/node/document.js +2140 -0
  39. package/lib/ml-dom/node/dom-token-list.d.ts +33 -0
  40. package/lib/ml-dom/node/dom-token-list.js +137 -0
  41. package/lib/ml-dom/node/element.d.ts +1844 -0
  42. package/lib/ml-dom/node/element.js +2601 -0
  43. package/lib/ml-dom/node/named-node-map.d.ts +42 -0
  44. package/lib/ml-dom/node/named-node-map.js +64 -0
  45. package/lib/ml-dom/node/node-list.d.ts +6 -0
  46. package/lib/ml-dom/node/node-list.js +39 -0
  47. package/lib/ml-dom/node/node-store.d.ts +14 -0
  48. package/lib/ml-dom/{helper → node}/node-store.js +8 -4
  49. package/lib/ml-dom/node/node.d.ts +482 -0
  50. package/lib/ml-dom/node/node.js +675 -0
  51. package/lib/ml-dom/node/parent-node.d.ts +66 -0
  52. package/lib/ml-dom/node/parent-node.js +131 -0
  53. package/lib/ml-dom/node/rule-mapper.d.ts +17 -0
  54. package/lib/ml-dom/{rule-mapper.js → node/rule-mapper.js} +20 -28
  55. package/lib/ml-dom/node/text.d.ts +51 -0
  56. package/lib/ml-dom/node/text.js +76 -0
  57. package/lib/ml-dom/node/types.d.ts +35 -0
  58. package/lib/ml-dom/{types.js → node/types.js} +0 -0
  59. package/lib/ml-dom/node/unexpected-call-error.d.ts +2 -0
  60. package/lib/ml-dom/node/unexpected-call-error.js +5 -0
  61. package/lib/ml-dom/token/token.d.ts +47 -0
  62. package/lib/ml-dom/token/token.js +89 -0
  63. package/lib/ml-rule/ml-rule-context.d.ts +14 -10
  64. package/lib/ml-rule/ml-rule-context.js +29 -6
  65. package/lib/ml-rule/ml-rule.d.ts +12 -12
  66. package/lib/ml-rule/ml-rule.js +63 -63
  67. package/lib/ml-rule/types.d.ts +12 -2
  68. package/lib/ruleset/index.d.ts +2 -2
  69. package/lib/test/index.d.ts +3 -1
  70. package/lib/test/index.js +12 -5
  71. package/lib/types.d.ts +3 -2
  72. package/package.json +11 -10
  73. package/tsconfig.tsbuildinfo +1 -1
  74. package/lib/ml-dom/document.d.ts +0 -85
  75. package/lib/ml-dom/document.js +0 -273
  76. package/lib/ml-dom/helper/index.d.ts +0 -4
  77. package/lib/ml-dom/helper/index.js +0 -12
  78. package/lib/ml-dom/helper/mapped-nodes.d.ts +0 -4
  79. package/lib/ml-dom/helper/mapped-nodes.js +0 -2
  80. package/lib/ml-dom/helper/match-selector.d.ts +0 -16
  81. package/lib/ml-dom/helper/match-selector.js +0 -233
  82. package/lib/ml-dom/helper/node-store.d.ts +0 -9
  83. package/lib/ml-dom/helper/selector.d.ts +0 -11
  84. package/lib/ml-dom/helper/selector.js +0 -549
  85. package/lib/ml-dom/rule-mapper.d.ts +0 -16
  86. package/lib/ml-dom/tokens/abstract-element.d.ts +0 -49
  87. package/lib/ml-dom/tokens/abstract-element.js +0 -249
  88. package/lib/ml-dom/tokens/attribute.d.ts +0 -42
  89. package/lib/ml-dom/tokens/attribute.js +0 -85
  90. package/lib/ml-dom/tokens/comment.d.ts +0 -9
  91. package/lib/ml-dom/tokens/comment.js +0 -15
  92. package/lib/ml-dom/tokens/doctype.d.ts +0 -15
  93. package/lib/ml-dom/tokens/doctype.js +0 -32
  94. package/lib/ml-dom/tokens/element-close-tag.d.ts +0 -24
  95. package/lib/ml-dom/tokens/element-close-tag.js +0 -45
  96. package/lib/ml-dom/tokens/element.d.ts +0 -23
  97. package/lib/ml-dom/tokens/element.js +0 -66
  98. package/lib/ml-dom/tokens/index.d.ts +0 -10
  99. package/lib/ml-dom/tokens/index.js +0 -26
  100. package/lib/ml-dom/tokens/node.d.ts +0 -39
  101. package/lib/ml-dom/tokens/node.js +0 -126
  102. package/lib/ml-dom/tokens/omitted-element.d.ts +0 -10
  103. package/lib/ml-dom/tokens/omitted-element.js +0 -12
  104. package/lib/ml-dom/tokens/preprocessor-specific-attribute.d.ts +0 -24
  105. package/lib/ml-dom/tokens/preprocessor-specific-attribute.js +0 -37
  106. package/lib/ml-dom/tokens/preprocessor-specific-block.d.ts +0 -11
  107. package/lib/ml-dom/tokens/preprocessor-specific-block.js +0 -16
  108. package/lib/ml-dom/tokens/text.d.ts +0 -15
  109. package/lib/ml-dom/tokens/text.js +0 -26
  110. package/lib/ml-dom/tokens/token.d.ts +0 -16
  111. package/lib/ml-dom/tokens/token.js +0 -55
  112. package/lib/ml-dom/types.d.ts +0 -27
  113. package/markuplint-recommended.json +0 -196
package/lib/configs.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  import type { Config } from '@markuplint/ml-config';
2
- export declare const configs: Record<string, Config>;
2
+ export declare function getPreset(name: string): Promise<Config>;
package/lib/configs.js CHANGED
@@ -1,11 +1,31 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configs = void 0;
4
- exports.configs = {
5
- recommended: require('../markuplint-recommended.json'),
6
- // For test
7
- ___test: {
8
- // @ts-ignore
9
- ___configs: 'test',
10
- },
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
11
24
  };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getPreset = void 0;
27
+ async function getPreset(name) {
28
+ const json = await Promise.resolve().then(() => __importStar(require(`@markuplint/config-presets/preset.${name}.json`)));
29
+ return json.default;
30
+ }
31
+ exports.getPreset = getPreset;
package/lib/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  export { RuleInfo, RuleConfig, RuleConfigValue } from '@markuplint/ml-config';
2
- export { getAttrSpecs } from '@markuplint/ml-spec';
2
+ export { ariaSpecs, contentModelCategoryToTagNames, getAttrSpecs, getComputedRole, getImplicitRole, getPermittedRoles, getRoleSpec, getSpec, resolveNamespace, } from '@markuplint/ml-spec';
3
+ export { default as Ruleset } from './ruleset';
4
+ export { enableDebug } from './debug';
5
+ export { getIndent } from './ml-dom/helper/getIndent';
6
+ export * from './configs';
3
7
  export * from './convert-ruleset';
4
8
  export * from './ml-core';
5
- export * from './ml-rule';
6
- export { default as Ruleset } from './ruleset';
7
9
  export * from './ml-dom';
10
+ export * from './ml-rule';
8
11
  export * from './plugin';
9
- export { getIndent } from './ml-dom/helper/getIndent';
10
- export * from './utils';
11
- export * from './types';
12
- export * from './configs';
13
12
  export * from './test';
14
- export { enableDebug } from './debug';
13
+ export * from './types';
14
+ export * from './utils';
package/lib/index.js CHANGED
@@ -1,21 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.enableDebug = exports.getIndent = exports.Ruleset = exports.getAttrSpecs = void 0;
3
+ exports.getIndent = exports.enableDebug = exports.Ruleset = exports.resolveNamespace = exports.getSpec = exports.getRoleSpec = exports.getPermittedRoles = exports.getImplicitRole = exports.getComputedRole = exports.getAttrSpecs = exports.contentModelCategoryToTagNames = exports.ariaSpecs = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var ml_spec_1 = require("@markuplint/ml-spec");
6
+ Object.defineProperty(exports, "ariaSpecs", { enumerable: true, get: function () { return ml_spec_1.ariaSpecs; } });
7
+ Object.defineProperty(exports, "contentModelCategoryToTagNames", { enumerable: true, get: function () { return ml_spec_1.contentModelCategoryToTagNames; } });
6
8
  Object.defineProperty(exports, "getAttrSpecs", { enumerable: true, get: function () { return ml_spec_1.getAttrSpecs; } });
7
- tslib_1.__exportStar(require("./convert-ruleset"), exports);
8
- tslib_1.__exportStar(require("./ml-core"), exports);
9
- tslib_1.__exportStar(require("./ml-rule"), exports);
9
+ Object.defineProperty(exports, "getComputedRole", { enumerable: true, get: function () { return ml_spec_1.getComputedRole; } });
10
+ Object.defineProperty(exports, "getImplicitRole", { enumerable: true, get: function () { return ml_spec_1.getImplicitRole; } });
11
+ Object.defineProperty(exports, "getPermittedRoles", { enumerable: true, get: function () { return ml_spec_1.getPermittedRoles; } });
12
+ Object.defineProperty(exports, "getRoleSpec", { enumerable: true, get: function () { return ml_spec_1.getRoleSpec; } });
13
+ Object.defineProperty(exports, "getSpec", { enumerable: true, get: function () { return ml_spec_1.getSpec; } });
14
+ Object.defineProperty(exports, "resolveNamespace", { enumerable: true, get: function () { return ml_spec_1.resolveNamespace; } });
10
15
  var ruleset_1 = require("./ruleset");
11
16
  Object.defineProperty(exports, "Ruleset", { enumerable: true, get: function () { return tslib_1.__importDefault(ruleset_1).default; } });
12
- tslib_1.__exportStar(require("./ml-dom"), exports);
13
- tslib_1.__exportStar(require("./plugin"), exports);
17
+ var debug_1 = require("./debug");
18
+ Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return debug_1.enableDebug; } });
14
19
  var getIndent_1 = require("./ml-dom/helper/getIndent");
15
20
  Object.defineProperty(exports, "getIndent", { enumerable: true, get: function () { return getIndent_1.getIndent; } });
16
- tslib_1.__exportStar(require("./utils"), exports);
17
- tslib_1.__exportStar(require("./types"), exports);
18
21
  tslib_1.__exportStar(require("./configs"), exports);
22
+ tslib_1.__exportStar(require("./convert-ruleset"), exports);
23
+ tslib_1.__exportStar(require("./ml-core"), exports);
24
+ tslib_1.__exportStar(require("./ml-dom"), exports);
25
+ tslib_1.__exportStar(require("./ml-rule"), exports);
26
+ tslib_1.__exportStar(require("./plugin"), exports);
19
27
  tslib_1.__exportStar(require("./test"), exports);
20
- var debug_1 = require("./debug");
21
- Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return debug_1.enableDebug; } });
28
+ tslib_1.__exportStar(require("./types"), exports);
29
+ tslib_1.__exportStar(require("./utils"), exports);
package/lib/ml-core.d.ts CHANGED
@@ -9,11 +9,11 @@ export declare type MLCoreParams = {
9
9
  } & MLFabric;
10
10
  export declare class MLCore {
11
11
  #private;
12
- constructor({ parser, sourceCode, ruleset, rules, locale, schemas, parserOptions, filename, debug }: MLCoreParams);
12
+ constructor({ parser, sourceCode, ruleset, rules, locale, schemas, parserOptions, pretenders, filename, debug, }: MLCoreParams);
13
13
  get document(): ParserError | Document<RuleConfigValue, unknown>;
14
- verify(fix?: boolean): Promise<Violation[]>;
15
14
  setCode(sourceCode: string): void;
16
15
  update({ parser, ruleset, rules, locale, schemas, parserOptions }: Partial<MLFabric>): void;
17
- private _parse;
16
+ verify(fix?: boolean): Promise<Violation[]>;
18
17
  private _createDocument;
18
+ private _parse;
19
19
  }
package/lib/ml-core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- var _MLCore_filename, _MLCore_document, _MLCore_parser, _MLCore_sourceCode, _MLCore_ast, _MLCore_ruleset, _MLCore_locale, _MLCore_rules, _MLCore_schemas, _MLCore_ignoreFrontMatter;
2
+ var _MLCore_ast, _MLCore_document, _MLCore_filename, _MLCore_locale, _MLCore_parser, _MLCore_parserOptions, _MLCore_pretenders, _MLCore_rules, _MLCore_ruleset, _MLCore_schemas, _MLCore_sourceCode;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.MLCore = void 0;
5
5
  const tslib_1 = require("tslib");
@@ -8,24 +8,25 @@ const debug_1 = require("./debug");
8
8
  const ml_dom_1 = require("./ml-dom");
9
9
  const resultLog = debug_1.log.extend('result');
10
10
  class MLCore {
11
- constructor({ parser, sourceCode, ruleset, rules, locale, schemas, parserOptions, filename, debug }) {
11
+ constructor({ parser, sourceCode, ruleset, rules, locale, schemas, parserOptions, pretenders, filename, debug, }) {
12
12
  var _a, _b, _c;
13
- _MLCore_filename.set(this, void 0);
14
- _MLCore_document.set(this, void 0);
15
- _MLCore_parser.set(this, void 0);
16
- _MLCore_sourceCode.set(this, void 0);
17
13
  _MLCore_ast.set(this, null);
18
- _MLCore_ruleset.set(this, void 0);
14
+ _MLCore_document.set(this, void 0);
15
+ _MLCore_filename.set(this, void 0);
19
16
  _MLCore_locale.set(this, void 0);
17
+ _MLCore_parser.set(this, void 0);
18
+ _MLCore_parserOptions.set(this, void 0);
19
+ _MLCore_pretenders.set(this, void 0);
20
20
  _MLCore_rules.set(this, void 0);
21
+ _MLCore_ruleset.set(this, void 0);
21
22
  _MLCore_schemas.set(this, void 0);
22
- _MLCore_ignoreFrontMatter.set(this, void 0);
23
+ _MLCore_sourceCode.set(this, void 0);
23
24
  if (debug) {
24
25
  (0, debug_1.enableDebug)();
25
26
  }
26
27
  tslib_1.__classPrivateFieldSet(this, _MLCore_parser, parser, "f");
27
28
  tslib_1.__classPrivateFieldSet(this, _MLCore_sourceCode, sourceCode, "f");
28
- tslib_1.__classPrivateFieldSet(this, _MLCore_ignoreFrontMatter, !!parserOptions.ignoreFrontMatter, "f");
29
+ tslib_1.__classPrivateFieldSet(this, _MLCore_parserOptions, parserOptions, "f");
29
30
  tslib_1.__classPrivateFieldSet(this, _MLCore_ruleset, {
30
31
  rules: (_a = ruleset.rules) !== null && _a !== void 0 ? _a : {},
31
32
  nodeRules: (_b = ruleset.nodeRules) !== null && _b !== void 0 ? _b : [],
@@ -35,12 +36,36 @@ class MLCore {
35
36
  tslib_1.__classPrivateFieldSet(this, _MLCore_schemas, schemas, "f");
36
37
  tslib_1.__classPrivateFieldSet(this, _MLCore_filename, filename, "f");
37
38
  tslib_1.__classPrivateFieldSet(this, _MLCore_rules, rules, "f");
39
+ tslib_1.__classPrivateFieldSet(this, _MLCore_pretenders, pretenders, "f");
38
40
  this._parse();
39
41
  this._createDocument();
40
42
  }
41
43
  get document() {
42
44
  return tslib_1.__classPrivateFieldGet(this, _MLCore_document, "f");
43
45
  }
46
+ setCode(sourceCode) {
47
+ tslib_1.__classPrivateFieldSet(this, _MLCore_sourceCode, sourceCode, "f");
48
+ this._parse();
49
+ this._createDocument();
50
+ }
51
+ update({ parser, ruleset, rules, locale, schemas, parserOptions }) {
52
+ var _a, _b, _c;
53
+ tslib_1.__classPrivateFieldSet(this, _MLCore_parser, parser !== null && parser !== void 0 ? parser : tslib_1.__classPrivateFieldGet(this, _MLCore_parser, "f"), "f");
54
+ tslib_1.__classPrivateFieldSet(this, _MLCore_ruleset, {
55
+ rules: (_a = ruleset === null || ruleset === void 0 ? void 0 : ruleset.rules) !== null && _a !== void 0 ? _a : tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f").rules,
56
+ nodeRules: (_b = ruleset === null || ruleset === void 0 ? void 0 : ruleset.nodeRules) !== null && _b !== void 0 ? _b : tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f").nodeRules,
57
+ childNodeRules: (_c = ruleset === null || ruleset === void 0 ? void 0 : ruleset.childNodeRules) !== null && _c !== void 0 ? _c : tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f").childNodeRules,
58
+ }, "f");
59
+ tslib_1.__classPrivateFieldSet(this, _MLCore_rules, rules !== null && rules !== void 0 ? rules : tslib_1.__classPrivateFieldGet(this, _MLCore_rules, "f"), "f");
60
+ tslib_1.__classPrivateFieldSet(this, _MLCore_locale, locale !== null && locale !== void 0 ? locale : tslib_1.__classPrivateFieldGet(this, _MLCore_locale, "f"), "f");
61
+ tslib_1.__classPrivateFieldSet(this, _MLCore_schemas, schemas !== null && schemas !== void 0 ? schemas : tslib_1.__classPrivateFieldGet(this, _MLCore_schemas, "f"), "f");
62
+ if (parserOptions &&
63
+ (parserOptions.ignoreFrontMatter !== tslib_1.__classPrivateFieldGet(this, _MLCore_parserOptions, "f").ignoreFrontMatter ||
64
+ parserOptions.authoredElementName !== tslib_1.__classPrivateFieldGet(this, _MLCore_parserOptions, "f").authoredElementName)) {
65
+ this._parse();
66
+ }
67
+ this._createDocument();
68
+ }
44
69
  async verify(fix = false) {
45
70
  (0, debug_1.log)('verify: start');
46
71
  const violations = [];
@@ -62,7 +87,7 @@ class MLCore {
62
87
  continue;
63
88
  }
64
89
  (0, debug_1.log)('%s Rule: verify', rule.name);
65
- const results = await rule.verify(tslib_1.__classPrivateFieldGet(this, _MLCore_document, "f"), tslib_1.__classPrivateFieldGet(this, _MLCore_locale, "f"), ruleInfo, fix).catch(e => {
90
+ const results = await rule.verify(tslib_1.__classPrivateFieldGet(this, _MLCore_document, "f"), tslib_1.__classPrivateFieldGet(this, _MLCore_locale, "f"), fix).catch(e => {
66
91
  if (e instanceof parser_utils_1.ParserError) {
67
92
  return e;
68
93
  }
@@ -101,34 +126,18 @@ class MLCore {
101
126
  (0, debug_1.log)('verify: end');
102
127
  return violations;
103
128
  }
104
- setCode(sourceCode) {
105
- tslib_1.__classPrivateFieldSet(this, _MLCore_sourceCode, sourceCode, "f");
106
- this._parse();
107
- this._createDocument();
108
- }
109
- update({ parser, ruleset, rules, locale, schemas, parserOptions }) {
110
- var _a, _b, _c;
111
- tslib_1.__classPrivateFieldSet(this, _MLCore_parser, parser !== null && parser !== void 0 ? parser : tslib_1.__classPrivateFieldGet(this, _MLCore_parser, "f"), "f");
112
- tslib_1.__classPrivateFieldSet(this, _MLCore_ruleset, {
113
- rules: (_a = ruleset === null || ruleset === void 0 ? void 0 : ruleset.rules) !== null && _a !== void 0 ? _a : tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f").rules,
114
- nodeRules: (_b = ruleset === null || ruleset === void 0 ? void 0 : ruleset.nodeRules) !== null && _b !== void 0 ? _b : tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f").nodeRules,
115
- childNodeRules: (_c = ruleset === null || ruleset === void 0 ? void 0 : ruleset.childNodeRules) !== null && _c !== void 0 ? _c : tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f").childNodeRules,
116
- }, "f");
117
- tslib_1.__classPrivateFieldSet(this, _MLCore_rules, rules !== null && rules !== void 0 ? rules : tslib_1.__classPrivateFieldGet(this, _MLCore_rules, "f"), "f");
118
- tslib_1.__classPrivateFieldSet(this, _MLCore_locale, locale !== null && locale !== void 0 ? locale : tslib_1.__classPrivateFieldGet(this, _MLCore_locale, "f"), "f");
119
- tslib_1.__classPrivateFieldSet(this, _MLCore_schemas, schemas !== null && schemas !== void 0 ? schemas : tslib_1.__classPrivateFieldGet(this, _MLCore_schemas, "f"), "f");
120
- if (parserOptions && parserOptions.ignoreFrontMatter !== tslib_1.__classPrivateFieldGet(this, _MLCore_ignoreFrontMatter, "f")) {
121
- this._parse();
129
+ _createDocument() {
130
+ if (!tslib_1.__classPrivateFieldGet(this, _MLCore_ast, "f")) {
131
+ return;
122
132
  }
123
- this._createDocument();
124
- }
125
- _parse() {
126
133
  try {
127
- tslib_1.__classPrivateFieldSet(this, _MLCore_ast, tslib_1.__classPrivateFieldGet(this, _MLCore_parser, "f").parse(tslib_1.__classPrivateFieldGet(this, _MLCore_sourceCode, "f"), 0, 0, 0, tslib_1.__classPrivateFieldGet(this, _MLCore_ignoreFrontMatter, "f")), "f");
134
+ tslib_1.__classPrivateFieldSet(this, _MLCore_document, new ml_dom_1.Document(tslib_1.__classPrivateFieldGet(this, _MLCore_ast, "f"), tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f"), tslib_1.__classPrivateFieldGet(this, _MLCore_schemas, "f"), {
135
+ filename: tslib_1.__classPrivateFieldGet(this, _MLCore_filename, "f"),
136
+ endTag: tslib_1.__classPrivateFieldGet(this, _MLCore_parser, "f").endTag,
137
+ pretenders: tslib_1.__classPrivateFieldGet(this, _MLCore_pretenders, "f"),
138
+ }), "f");
128
139
  }
129
140
  catch (err) {
130
- (0, debug_1.log)('Caught the parse error: %O', err);
131
- tslib_1.__classPrivateFieldSet(this, _MLCore_ast, null, "f");
132
141
  if (err instanceof parser_utils_1.ParserError) {
133
142
  tslib_1.__classPrivateFieldSet(this, _MLCore_document, err, "f");
134
143
  }
@@ -137,18 +146,13 @@ class MLCore {
137
146
  }
138
147
  }
139
148
  }
140
- _createDocument() {
141
- if (!tslib_1.__classPrivateFieldGet(this, _MLCore_ast, "f")) {
142
- return;
143
- }
149
+ _parse() {
144
150
  try {
145
- tslib_1.__classPrivateFieldSet(this, _MLCore_document, new ml_dom_1.Document(tslib_1.__classPrivateFieldGet(this, _MLCore_ast, "f"), tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f"), tslib_1.__classPrivateFieldGet(this, _MLCore_schemas, "f"), {
146
- filename: tslib_1.__classPrivateFieldGet(this, _MLCore_filename, "f"),
147
- tagNameCaseSensitive: tslib_1.__classPrivateFieldGet(this, _MLCore_parser, "f").tagNameCaseSensitive,
148
- endTag: tslib_1.__classPrivateFieldGet(this, _MLCore_parser, "f").endTag,
149
- }), "f");
151
+ tslib_1.__classPrivateFieldSet(this, _MLCore_ast, tslib_1.__classPrivateFieldGet(this, _MLCore_parser, "f").parse(tslib_1.__classPrivateFieldGet(this, _MLCore_sourceCode, "f"), tslib_1.__classPrivateFieldGet(this, _MLCore_parserOptions, "f")), "f");
150
152
  }
151
153
  catch (err) {
154
+ (0, debug_1.log)('Caught the parse error: %O', err);
155
+ tslib_1.__classPrivateFieldSet(this, _MLCore_ast, null, "f");
152
156
  if (err instanceof parser_utils_1.ParserError) {
153
157
  tslib_1.__classPrivateFieldSet(this, _MLCore_document, err, "f");
154
158
  }
@@ -159,4 +163,4 @@ class MLCore {
159
163
  }
160
164
  }
161
165
  exports.MLCore = MLCore;
162
- _MLCore_filename = new WeakMap(), _MLCore_document = new WeakMap(), _MLCore_parser = new WeakMap(), _MLCore_sourceCode = new WeakMap(), _MLCore_ast = new WeakMap(), _MLCore_ruleset = new WeakMap(), _MLCore_locale = new WeakMap(), _MLCore_rules = new WeakMap(), _MLCore_schemas = new WeakMap(), _MLCore_ignoreFrontMatter = new WeakMap();
166
+ _MLCore_ast = new WeakMap(), _MLCore_document = new WeakMap(), _MLCore_filename = new WeakMap(), _MLCore_locale = new WeakMap(), _MLCore_parser = new WeakMap(), _MLCore_parserOptions = new WeakMap(), _MLCore_pretenders = new WeakMap(), _MLCore_rules = new WeakMap(), _MLCore_ruleset = new WeakMap(), _MLCore_schemas = new WeakMap(), _MLCore_sourceCode = new WeakMap();
@@ -1,2 +1,3 @@
1
- import type MLDOMAbstractElement from '../tokens/abstract-element';
2
- export declare function getAccname(el: MLDOMAbstractElement<any, any>): string;
1
+ import type { MLElement } from '../node/element';
2
+ import type { ARIAVersion } from '@markuplint/ml-spec';
3
+ export declare function getAccname(el: MLElement<any, any>, version: ARIAVersion): string;
@@ -1,13 +1,40 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAccname = void 0;
4
- const dom_accessibility_api_1 = require("dom-accessibility-api");
4
+ const ml_spec_1 = require("@markuplint/ml-spec");
5
5
  const debug_1 = require("../../debug");
6
6
  const accnameLog = debug_1.log.extend('accname');
7
- function getAccname(el) {
7
+ function getAccname(el, version) {
8
+ let accname = safeGet(el);
9
+ if (accname) {
10
+ return accname;
11
+ }
12
+ accname = getAccnameFromPretender(el);
13
+ if (accname) {
14
+ return accname;
15
+ }
16
+ if (isHidden(el)) {
17
+ return '';
18
+ }
19
+ if (isFromContent(el, version)) {
20
+ return Array.from(el.childNodes)
21
+ .map(child => {
22
+ if (child.is(child.ELEMENT_NODE)) {
23
+ return getAccname(child, version);
24
+ }
25
+ if (child.is(child.TEXT_NODE)) {
26
+ return child.textContent || '';
27
+ }
28
+ return '';
29
+ })
30
+ .join('');
31
+ }
32
+ return '';
33
+ }
34
+ exports.getAccname = getAccname;
35
+ function safeGet(el) {
8
36
  try {
9
- // @ts-ignore
10
- const name = (0, dom_accessibility_api_1.computeAccessibleName)(el);
37
+ const name = (0, ml_spec_1.getAccname)(el);
11
38
  return name;
12
39
  }
13
40
  catch (err) {
@@ -16,4 +43,25 @@ function getAccname(el) {
16
43
  return '';
17
44
  }
18
45
  }
19
- exports.getAccname = getAccname;
46
+ function getAccnameFromPretender(el) {
47
+ var _a, _b;
48
+ if (((_a = el.pretenderContext) === null || _a === void 0 ? void 0 : _a.type) === 'pretender' && ((_b = el.pretenderContext.aria) === null || _b === void 0 ? void 0 : _b.name)) {
49
+ if (typeof el.pretenderContext.aria.name === 'boolean') {
50
+ return 'some-name(Pretender Options)';
51
+ }
52
+ const attrName = el.pretenderContext.aria.name.fromAttr;
53
+ const attrValue = el.getAttributePretended(attrName);
54
+ if (attrValue) {
55
+ return attrValue;
56
+ }
57
+ }
58
+ return '';
59
+ }
60
+ function isHidden(el) {
61
+ return el.getAttribute('aria-hidden') === 'true' || el.hasAttribute('hidden');
62
+ }
63
+ function isFromContent(el, version) {
64
+ var _a;
65
+ const role = (0, ml_spec_1.getComputedRole)(el.ownerMLDocument.specs, el, version);
66
+ return !!((_a = role.role) === null || _a === void 0 ? void 0 : _a.accessibleNameFromContent);
67
+ }
@@ -1,6 +1,5 @@
1
- import type { Document } from '../';
2
- import type { MappedNode } from './mapped-nodes';
3
- import type { MLASTAbstructNode } from '@markuplint/ml-ast';
1
+ import type { MLDocument } from '../node/document';
2
+ import type { MappedNode } from '../node/types';
3
+ import type { MLASTAbstractNode } from '@markuplint/ml-ast';
4
4
  import type { RuleConfigValue } from '@markuplint/ml-config';
5
- import { MLDOMElement } from '../tokens';
6
- export declare function createNode<N extends MLASTAbstructNode, T extends RuleConfigValue, O = null>(astNode: N, document: Document<T, O>, pearNode?: MLDOMElement<T, O>): MappedNode<N, T, O>;
5
+ export declare function createNode<N extends MLASTAbstractNode, T extends RuleConfigValue, O = null>(astNode: N, document: MLDocument<T, O>): MappedNode<N, T, O>;
@@ -1,34 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createNode = void 0;
4
- const tslib_1 = require("tslib");
5
- const tokens_1 = require("../tokens");
6
- const preprocessor_specific_block_1 = tslib_1.__importDefault(require("../tokens/preprocessor-specific-block"));
7
- function createNode(astNode, document, pearNode) {
4
+ const block_1 = require("../node/block");
5
+ const comment_1 = require("../node/comment");
6
+ const document_type_1 = require("../node/document-type");
7
+ const element_1 = require("../node/element");
8
+ const text_1 = require("../node/text");
9
+ function createNode(astNode, document) {
8
10
  const _astNode = astNode;
9
11
  switch (_astNode.type) {
10
12
  case 'doctype': {
11
- return new tokens_1.MLDOMDoctype(_astNode, document);
13
+ return new document_type_1.MLDocumentType(_astNode, document);
12
14
  }
13
15
  case 'starttag': {
14
- return new tokens_1.MLDOMElement(_astNode, document);
15
- }
16
- case 'endtag': {
17
- return new tokens_1.MLDOMElementCloseTag(_astNode, document, pearNode);
16
+ return new element_1.MLElement(_astNode, document);
18
17
  }
19
18
  case 'psblock': {
20
- return new preprocessor_specific_block_1.default(_astNode, document);
19
+ return new block_1.MLBlock(_astNode, document);
21
20
  }
22
21
  case 'comment': {
23
- return new tokens_1.MLDOMComment(_astNode, document);
22
+ return new comment_1.MLComment(_astNode, document);
24
23
  }
25
24
  case 'text': {
26
- return new tokens_1.MLDOMText(_astNode, document);
27
- }
28
- case 'omittedtag': {
29
- return new tokens_1.MLDOMOmittedElement(_astNode, document);
25
+ return new text_1.MLText(_astNode, document);
30
26
  }
31
27
  }
32
- throw new TypeError(`Invalid AST node typs "${astNode.type}"`);
28
+ throw new TypeError(`Invalid AST node types "${astNode.type}"`);
33
29
  }
34
30
  exports.createNode = createNode;
@@ -1,2 +1,2 @@
1
- import type { AnonymousNode } from '@markuplint/ml-core';
2
- export declare function nodeListToDebugMaps(nodeList: Readonly<AnonymousNode<any, any>[]>, withAttr?: boolean): string[];
1
+ import type { MLNode } from '../node/node';
2
+ export declare function nodeListToDebugMaps(nodeList: Readonly<MLNode<any, any>[]>, withAttr?: boolean): string[];
@@ -5,33 +5,33 @@ function nodeListToDebugMaps(nodeList, withAttr = false) {
5
5
  return nodeList
6
6
  .map(n => {
7
7
  const r = [];
8
- if (n.type !== 'OmittedElement') {
9
- r.push(tokenDebug(n));
10
- if (n.type === 'Element') {
11
- r.push(` namespaceURI: ${!!n.namespaceURI}`);
12
- r.push(` isInFragmentDocument: ${!!n.isInFragmentDocument}`);
13
- r.push(` isForeignElement: ${!!n.isForeignElement}`);
14
- r.push(` isCustomElement: ${!!n.isCustomElement}`);
15
- }
16
- if (withAttr && 'attributes' in n) {
8
+ if (n.is(n.ELEMENT_NODE) && n.isOmitted) {
9
+ r.push(`[N/A]>[N/A](N/A)${n.nodeName}: ${visibleWhiteSpace(n.raw)}`);
10
+ return r;
11
+ }
12
+ r.push(tokenDebug(n));
13
+ if (n.is(n.ELEMENT_NODE)) {
14
+ r.push(` namespaceURI: ${!!n.namespaceURI}`);
15
+ r.push(` elementType: ${n.elementType}`);
16
+ r.push(` isInFragmentDocument: ${!!n.isInFragmentDocument}`);
17
+ r.push(` isForeignElement: ${!!n.isForeignElement}`);
18
+ if (withAttr) {
17
19
  r.push(...attributesToDebugMaps(n.attributes)
18
20
  .flat()
19
21
  .map(l => ` ${l}`));
20
22
  }
21
23
  }
22
- else {
23
- r.push(`[N/A]>[N/A](N/A)${n.nodeName}: ${visibleWhiteSpace(n.raw)}`);
24
- }
25
24
  return r;
26
25
  })
27
26
  .flat();
28
27
  }
29
28
  exports.nodeListToDebugMaps = nodeListToDebugMaps;
30
29
  function attributesToDebugMaps(attributes) {
31
- return attributes.map(n => {
30
+ return attributes
31
+ .map(n => {
32
32
  const r = [
33
33
  tokenDebug({
34
- name: n.potentialName,
34
+ name: n.name,
35
35
  startOffset: n.startOffset,
36
36
  endOffset: n.endOffset,
37
37
  startLine: n.startLine,
@@ -41,26 +41,40 @@ function attributesToDebugMaps(attributes) {
41
41
  raw: n.raw,
42
42
  }),
43
43
  ];
44
- if (n.attrType === 'html-attr') {
44
+ if (n.spacesBeforeName) {
45
45
  r.push(` ${tokenDebug(n.spacesBeforeName, 'bN')}`);
46
- r.push(` ${tokenDebug(n.name, 'name')}`);
46
+ }
47
+ if (n.nameNode) {
48
+ r.push(` ${tokenDebug(n.nameNode, 'name')}`);
49
+ }
50
+ if (n.spacesBeforeEqual) {
47
51
  r.push(` ${tokenDebug(n.spacesBeforeEqual, 'bE')}`);
52
+ }
53
+ if (n.equal) {
48
54
  r.push(` ${tokenDebug(n.equal, 'equal')}`);
55
+ }
56
+ if (n.spacesAfterEqual) {
49
57
  r.push(` ${tokenDebug(n.spacesAfterEqual, 'aE')}`);
58
+ }
59
+ if (n.startQuote) {
50
60
  r.push(` ${tokenDebug(n.startQuote, 'sQ')}`);
61
+ }
62
+ if (n.valueNode) {
51
63
  r.push(` ${tokenDebug(n.valueNode, 'value')}`);
64
+ }
65
+ if (n.endQuote) {
52
66
  r.push(` ${tokenDebug(n.endQuote, 'eQ')}`);
67
+ }
68
+ if (n.spacesBeforeName) {
53
69
  r.push(` isDirective: ${!!n.isDirective}`);
54
70
  r.push(` isDynamicValue: ${!!n.isDynamicValue}`);
55
71
  }
56
- if (n.potentialName != null) {
57
- r.push(` potentialName: ${visibleWhiteSpace(n.potentialName)}`);
58
- }
59
- if (n.attrType === 'html-attr' && n.candidate) {
72
+ if (n.candidate) {
60
73
  r.push(` candidate: ${visibleWhiteSpace(n.candidate)}`);
61
74
  }
62
75
  return r;
63
- });
76
+ })
77
+ .flat();
64
78
  }
65
79
  function tokenDebug(n, type = '') {
66
80
  return `[${n.startLine}:${n.startCol}]>[${n.endLine}:${n.endCol}](${n.startOffset},${n.endOffset})${n.nodeName || n.potentialName || n.name || n.type || type}: ${visibleWhiteSpace(n.raw)}`;
@@ -1,18 +1,18 @@
1
- import type { MLDOMNode, MLDOMText } from '../tokens';
2
- import type { AnonymousNode } from '../types';
1
+ import type { MLNode } from '../node/node';
2
+ import type { MLText } from '../node/text';
3
3
  /**
4
4
  *
5
5
  * @deprecated
6
6
  * @param node
7
7
  */
8
- export declare function getIndent(node: AnonymousNode<any, any>): MLDOMIndentation | null;
8
+ export declare function getIndent(node: MLNode<any, any>): MLDOMIndentation | null;
9
9
  declare class MLDOMIndentation {
10
10
  #private;
11
11
  readonly line: number;
12
- constructor(originTextNode: MLDOMText<any, any>, raw: string, line: number, parentNode: MLDOMNode<any, any>);
12
+ constructor(originTextNode: MLText<any, any>, raw: string, line: number, parentNode: MLNode<any, any>);
13
+ get raw(): string;
13
14
  get type(): 'tab' | 'space' | 'mixed' | 'none';
14
15
  get width(): number;
15
- get raw(): string;
16
16
  fix(raw: string): void;
17
17
  }
18
18
  export {};
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- var _MLDOMIndentation_node, _MLDOMIndentation_parent, _MLDOMIndentation_fixed;
2
+ var _MLDOMIndentation_fixed, _MLDOMIndentation_node, _MLDOMIndentation_parent;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.getIndent = void 0;
5
5
  const tslib_1 = require("tslib");
@@ -13,8 +13,8 @@ function getIndent(node) {
13
13
  if (!prevToken) {
14
14
  return null;
15
15
  }
16
- if (node.type === 'Text') {
17
- if (node.isRawText) {
16
+ if (node.is(node.TEXT_NODE)) {
17
+ if (node.isRawTextElementContent()) {
18
18
  return null;
19
19
  }
20
20
  const matched = node.raw.match(/^(\s*(?:\r?\n)+\s*)(?:[^\s]+)/);
@@ -31,7 +31,7 @@ function getIndent(node) {
31
31
  }
32
32
  return null;
33
33
  }
34
- if (prevToken.type !== 'Text') {
34
+ if (!prevToken.is(node.TEXT_NODE)) {
35
35
  return null;
36
36
  }
37
37
  // One or more newlines and zero or more spaces or tabs.
@@ -52,33 +52,33 @@ function getIndent(node) {
52
52
  exports.getIndent = getIndent;
53
53
  class MLDOMIndentation {
54
54
  constructor(originTextNode, raw, line, parentNode) {
55
+ _MLDOMIndentation_fixed.set(this, void 0);
55
56
  _MLDOMIndentation_node.set(this, void 0);
56
57
  _MLDOMIndentation_parent.set(this, void 0);
57
- _MLDOMIndentation_fixed.set(this, void 0);
58
58
  this.line = line;
59
59
  tslib_1.__classPrivateFieldSet(this, _MLDOMIndentation_node, originTextNode, "f");
60
60
  tslib_1.__classPrivateFieldSet(this, _MLDOMIndentation_parent, parentNode, "f");
61
61
  tslib_1.__classPrivateFieldSet(this, _MLDOMIndentation_fixed, raw, "f");
62
62
  }
63
+ get raw() {
64
+ if (!tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").is(tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").TEXT_NODE) && this.line !== tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_node, "f").endLine) {
65
+ return '';
66
+ }
67
+ return tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_fixed, "f");
68
+ }
63
69
  get type() {
64
- if (tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").type !== 'Text' && this.line !== tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_node, "f").endLine) {
70
+ if (!tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").is(tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").TEXT_NODE) && this.line !== tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_node, "f").endLine) {
65
71
  return 'none';
66
72
  }
67
73
  const raw = tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_fixed, "f");
68
74
  return raw === '' ? 'none' : /^\t+$/.test(raw) ? 'tab' : /^[^\t]+$/.test(raw) ? 'space' : 'mixed';
69
75
  }
70
76
  get width() {
71
- if (tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").type !== 'Text' && this.line !== tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_node, "f").endLine) {
77
+ if (!tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").is(tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").TEXT_NODE) && this.line !== tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_node, "f").endLine) {
72
78
  return 0;
73
79
  }
74
80
  return tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_fixed, "f").length;
75
81
  }
76
- get raw() {
77
- if (tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_parent, "f").type !== 'Text' && this.line !== tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_node, "f").endLine) {
78
- return '';
79
- }
80
- return tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_fixed, "f");
81
- }
82
82
  fix(raw) {
83
83
  const current = tslib_1.__classPrivateFieldGet(this, _MLDOMIndentation_fixed, "f");
84
84
  tslib_1.__classPrivateFieldSet(this, _MLDOMIndentation_fixed, raw, "f");
@@ -94,7 +94,7 @@ class MLDOMIndentation {
94
94
  }
95
95
  }
96
96
  }
97
- _MLDOMIndentation_node = new WeakMap(), _MLDOMIndentation_parent = new WeakMap(), _MLDOMIndentation_fixed = new WeakMap();
97
+ _MLDOMIndentation_fixed = new WeakMap(), _MLDOMIndentation_node = new WeakMap(), _MLDOMIndentation_parent = new WeakMap();
98
98
  function isFirstToken(node) {
99
99
  return !node.prevToken;
100
100
  }