@markuplint/ml-core 3.0.0-canary.5 → 3.0.0-dev.176

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 (74) hide show
  1. package/README.md +1 -1
  2. package/lib/configs.browser.d.ts +2 -0
  3. package/lib/configs.browser.js +12 -0
  4. package/lib/configs.js +1 -2
  5. package/lib/index.d.ts +11 -1
  6. package/lib/ml-core.d.ts +23 -12
  7. package/lib/ml-core.js +4 -4
  8. package/lib/ml-dom/helper/accname.js +18 -7
  9. package/lib/ml-dom/helper/create-node.d.ts +6 -2
  10. package/lib/ml-dom/helper/create-node.js +3 -1
  11. package/lib/ml-dom/helper/debug.js +9 -4
  12. package/lib/ml-dom/helper/getIndent.d.ts +7 -7
  13. package/lib/ml-dom/helper/getIndent.js +18 -12
  14. package/lib/ml-dom/helper/walkers.d.ts +15 -5
  15. package/lib/ml-dom/helper/walkers.js +22 -16
  16. package/lib/ml-dom/manipulations/child-node-methods.d.ts +20 -7
  17. package/lib/ml-dom/manipulations/child-node-methods.js +24 -6
  18. package/lib/ml-dom/manipulations/get-children.d.ts +4 -2
  19. package/lib/ml-dom/manipulations/get-children.js +3 -1
  20. package/lib/ml-dom/node/attr.d.ts +94 -91
  21. package/lib/ml-dom/node/attr.js +8 -4
  22. package/lib/ml-dom/node/block.d.ts +36 -32
  23. package/lib/ml-dom/node/block.js +14 -4
  24. package/lib/ml-dom/node/character-data.d.ts +60 -53
  25. package/lib/ml-dom/node/character-data.js +9 -3
  26. package/lib/ml-dom/node/child-node.d.ts +10 -3
  27. package/lib/ml-dom/node/child-node.js +3 -1
  28. package/lib/ml-dom/node/comment.d.ts +16 -13
  29. package/lib/ml-dom/node/document-fragment.d.ts +23 -20
  30. package/lib/ml-dom/node/document-type.d.ts +35 -32
  31. package/lib/ml-dom/node/document-type.js +14 -4
  32. package/lib/ml-dom/node/document.d.ts +1607 -1589
  33. package/lib/ml-dom/node/document.js +56 -19
  34. package/lib/ml-dom/node/dom-token-list.d.ts +26 -26
  35. package/lib/ml-dom/node/dom-token-list.js +9 -7
  36. package/lib/ml-dom/node/element.d.ts +1903 -1889
  37. package/lib/ml-dom/node/element.js +76 -27
  38. package/lib/ml-dom/node/named-node-map.d.ts +45 -40
  39. package/lib/ml-dom/node/named-node-map.js +13 -5
  40. package/lib/ml-dom/node/node-list.d.ts +10 -4
  41. package/lib/ml-dom/node/node-list.js +25 -5
  42. package/lib/ml-dom/node/node-store.d.ts +9 -4
  43. package/lib/ml-dom/node/node-store.js +19 -1
  44. package/lib/ml-dom/node/node.d.ts +493 -473
  45. package/lib/ml-dom/node/node.js +52 -19
  46. package/lib/ml-dom/node/parent-node.d.ts +67 -58
  47. package/lib/ml-dom/node/parent-node.js +15 -6
  48. package/lib/ml-dom/node/rule-mapper.d.ts +7 -7
  49. package/lib/ml-dom/node/rule-mapper.js +11 -3
  50. package/lib/ml-dom/node/text.d.ts +50 -47
  51. package/lib/ml-dom/node/types.d.ts +82 -14
  52. package/lib/ml-dom/node/unexpected-call-error.d.ts +1 -2
  53. package/lib/ml-dom/token/token.d.ts +44 -44
  54. package/lib/ml-rule/create-rule.d.ts +4 -2
  55. package/lib/ml-rule/create-test-rule.d.ts +6 -4
  56. package/lib/ml-rule/ml-rule-context.d.ts +58 -50
  57. package/lib/ml-rule/ml-rule-context.js +4 -2
  58. package/lib/ml-rule/ml-rule.d.ts +36 -26
  59. package/lib/ml-rule/ml-rule.js +37 -32
  60. package/lib/ml-rule/types.d.ts +35 -17
  61. package/lib/plugin/plugin.d.ts +3 -1
  62. package/lib/plugin/types.d.ts +7 -7
  63. package/lib/ruleset/index.d.ts +4 -4
  64. package/lib/ruleset/index.js +4 -4
  65. package/lib/test/index.d.ts +20 -8
  66. package/lib/test/index.js +1 -1
  67. package/lib/types.d.ts +9 -8
  68. package/lib/utils/get-location-from-chars.d.ts +9 -4
  69. package/package.json +21 -15
  70. package/test/ml-dom/helper/accname.spec.js +85 -0
  71. package/test/ml-dom/helper/create-node.spec.js +18 -0
  72. package/test/ml-dom/index.spec.js +680 -0
  73. package/tsconfig.test.json +0 -3
  74. package/tsconfig.tsbuildinfo +0 -1
@@ -23,8 +23,10 @@ class MLDocument extends parent_node_1.MLParentNode {
23
23
  * @param ast node list of markuplint AST
24
24
  * @param ruleset ruleset object
25
25
  */
26
- constructor(ast, ruleset, schemas, options) {
27
- var _a;
26
+ constructor(
27
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
28
+ ast, ruleset, schemas, options) {
29
+ var _a, _b;
28
30
  // @ts-ignore
29
31
  super(ast, null);
30
32
  /**
@@ -38,8 +40,8 @@ class MLDocument extends parent_node_1.MLParentNode {
38
40
  _MLDocument_tokenList.set(this, null);
39
41
  this.isFragment = ast.isFragment;
40
42
  this.specs = (0, ml_spec_1.schemaToSpec)(schemas);
41
- this.booleanish = (options === null || options === void 0 ? void 0 : options.booleanish) || false;
42
- this.endTag = (_a = options === null || options === void 0 ? void 0 : options.endTag) !== null && _a !== void 0 ? _a : 'omittable';
43
+ this.booleanish = (_a = options === null || options === void 0 ? void 0 : options.booleanish) !== null && _a !== void 0 ? _a : false;
44
+ this.endTag = (_b = options === null || options === void 0 ? void 0 : options.endTag) !== null && _b !== void 0 ? _b : 'omittable';
43
45
  tslib_1.__classPrivateFieldSet(this, _MLDocument_filename, options === null || options === void 0 ? void 0 : options.filename, "f");
44
46
  // console.log(ast.nodeList.map((n, i) => `${i}: ${n.uuid} "${n.raw.trim()}"(${n.type})`));
45
47
  this.nodeList = Object.freeze(ast.nodeList
@@ -204,7 +206,9 @@ class MLDocument extends parent_node_1.MLParentNode {
204
206
  */
205
207
  get defaultView() {
206
208
  return {
207
- getComputedStyle(_el) {
209
+ getComputedStyle(
210
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
211
+ _el) {
208
212
  return {
209
213
  getPropertyValue(_propName) {
210
214
  return {};
@@ -1665,7 +1669,9 @@ class MLDocument extends parent_node_1.MLParentNode {
1665
1669
  * @unsupported
1666
1670
  * @implements DOM API: `Document`
1667
1671
  */
1668
- createExpression(expression, resolver) {
1672
+ createExpression(expression,
1673
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1674
+ resolver) {
1669
1675
  throw new unexpected_call_error_1.default('Not supported "createExpression" method');
1670
1676
  }
1671
1677
  /**
@@ -1674,7 +1680,9 @@ class MLDocument extends parent_node_1.MLParentNode {
1674
1680
  * @unsupported
1675
1681
  * @implements DOM API: `Document`
1676
1682
  */
1677
- createNSResolver(nodeResolver) {
1683
+ createNSResolver(
1684
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1685
+ nodeResolver) {
1678
1686
  throw new unexpected_call_error_1.default('Not supported "createNSResolver" method');
1679
1687
  }
1680
1688
  /**
@@ -1683,7 +1691,11 @@ class MLDocument extends parent_node_1.MLParentNode {
1683
1691
  * @unsupported
1684
1692
  * @implements DOM API: `Document`
1685
1693
  */
1686
- createNodeIterator(root, whatToShow, filter) {
1694
+ createNodeIterator(
1695
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1696
+ root, whatToShow,
1697
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1698
+ filter) {
1687
1699
  throw new unexpected_call_error_1.default('Not supported "createNodeIterator" method');
1688
1700
  }
1689
1701
  /**
@@ -1719,7 +1731,11 @@ class MLDocument extends parent_node_1.MLParentNode {
1719
1731
  * @unsupported
1720
1732
  * @implements DOM API: `Document`
1721
1733
  */
1722
- createTreeWalker(root, whatToShow, filter) {
1734
+ createTreeWalker(
1735
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1736
+ root, whatToShow,
1737
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1738
+ filter) {
1723
1739
  throw new unexpected_call_error_1.default('Not supported "createTreeWalker" method');
1724
1740
  }
1725
1741
  /**
@@ -1752,7 +1768,13 @@ class MLDocument extends parent_node_1.MLParentNode {
1752
1768
  * @unsupported
1753
1769
  * @implements DOM API: `Document`
1754
1770
  */
1755
- evaluate(expression, contextNode, resolver, type, result) {
1771
+ evaluate(expression,
1772
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1773
+ contextNode,
1774
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1775
+ resolver, type,
1776
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
1777
+ result) {
1756
1778
  throw new unexpected_call_error_1.default('Not supported "evaluate" method');
1757
1779
  }
1758
1780
  /**
@@ -2064,6 +2086,9 @@ class MLDocument extends parent_node_1.MLParentNode {
2064
2086
  // global rules to #document
2065
2087
  Object.keys(ruleset.rules).forEach(ruleName => {
2066
2088
  const rule = ruleset.rules[ruleName];
2089
+ if (rule == null) {
2090
+ return;
2091
+ }
2067
2092
  ruleMapper.set(this, ruleName, {
2068
2093
  from: 'rules',
2069
2094
  specificity: [0, 0, 0],
@@ -2078,6 +2103,9 @@ class MLDocument extends parent_node_1.MLParentNode {
2078
2103
  // global rules to each element
2079
2104
  Object.keys(ruleset.rules).forEach(ruleName => {
2080
2105
  const rule = ruleset.rules[ruleName];
2106
+ if (rule == null) {
2107
+ return;
2108
+ }
2081
2109
  ruleMapper.set(node, ruleName, {
2082
2110
  from: 'rules',
2083
2111
  specificity: [0, 0, 0],
@@ -2090,13 +2118,14 @@ class MLDocument extends parent_node_1.MLParentNode {
2090
2118
  const selectorTarget = node.is(node.ELEMENT_NODE) ? node : null;
2091
2119
  // node specs and special rules for node by selector
2092
2120
  ruleset.nodeRules.forEach(nodeRule => {
2121
+ var _a, _b;
2093
2122
  if (!nodeRule.rules) {
2094
2123
  return;
2095
2124
  }
2096
2125
  if (!selectorTarget) {
2097
2126
  return;
2098
2127
  }
2099
- const selector = nodeRule.selector || nodeRule.regexSelector;
2128
+ const selector = (_a = nodeRule.selector) !== null && _a !== void 0 ? _a : nodeRule.regexSelector;
2100
2129
  const matches = (0, selector_1.matchSelector)(selectorTarget, selector);
2101
2130
  if (!matches.matched) {
2102
2131
  return;
@@ -2107,12 +2136,15 @@ class MLDocument extends parent_node_1.MLParentNode {
2107
2136
  const ruleList = Object.keys(nodeRule.rules);
2108
2137
  for (const ruleName of ruleList) {
2109
2138
  const rule = nodeRule.rules[ruleName];
2110
- const convertedRule = (0, ml_config_1.exchangeValueOnRule)(rule, matches.data || {});
2139
+ if (rule == null) {
2140
+ continue;
2141
+ }
2142
+ const convertedRule = (0, ml_config_1.exchangeValueOnRule)(rule, (_b = matches.data) !== null && _b !== void 0 ? _b : {});
2111
2143
  if (convertedRule === undefined) {
2112
2144
  continue;
2113
2145
  }
2114
2146
  const globalRule = ruleset.rules[ruleName];
2115
- const mergedRule = globalRule ? (0, ml_config_1.mergeRule)(globalRule, convertedRule) : convertedRule;
2147
+ const mergedRule = globalRule != null ? (0, ml_config_1.mergeRule)(globalRule, convertedRule) : convertedRule;
2116
2148
  ruleLog('↑ nodeRule (%s): %O', ruleName, mergedRule);
2117
2149
  ruleMapper.set(node, ruleName, {
2118
2150
  from: 'nodeRules',
@@ -2122,19 +2154,20 @@ class MLDocument extends parent_node_1.MLParentNode {
2122
2154
  }
2123
2155
  });
2124
2156
  // overwrite rule to child node
2125
- if (selectorTarget && ruleset.childNodeRules.length) {
2157
+ if (selectorTarget && ruleset.childNodeRules.length > 0) {
2126
2158
  const descendants = [];
2127
2159
  const children = Array.from(selectorTarget.childNodes);
2128
2160
  (0, walkers_1.syncWalk)(children, childNode => {
2129
2161
  descendants.push(childNode);
2130
2162
  });
2131
- ruleset.childNodeRules.forEach((nodeRule, i) => {
2163
+ ruleset.childNodeRules.forEach(nodeRule => {
2164
+ var _a;
2132
2165
  if (!nodeRule.rules) {
2133
2166
  return;
2134
2167
  }
2135
2168
  const nodeRuleRules = nodeRule.rules;
2136
- const selector = nodeRule.selector || nodeRule.regexSelector;
2137
- if (!selector) {
2169
+ const selector = (_a = nodeRule.selector) !== null && _a !== void 0 ? _a : nodeRule.regexSelector;
2170
+ if (selector == null) {
2138
2171
  return;
2139
2172
  }
2140
2173
  const matches = (0, selector_1.matchSelector)(selectorTarget, selector);
@@ -2146,13 +2179,17 @@ class MLDocument extends parent_node_1.MLParentNode {
2146
2179
  }
2147
2180
  const targetDescendants = nodeRule.inheritance ? descendants : children;
2148
2181
  Object.keys(nodeRuleRules).forEach(ruleName => {
2182
+ var _a;
2149
2183
  const rule = nodeRuleRules[ruleName];
2150
- const convertedRule = (0, ml_config_1.exchangeValueOnRule)(rule, matches.data || {});
2184
+ if (rule == null) {
2185
+ return;
2186
+ }
2187
+ const convertedRule = (0, ml_config_1.exchangeValueOnRule)(rule, (_a = matches.data) !== null && _a !== void 0 ? _a : {});
2151
2188
  if (convertedRule === undefined) {
2152
2189
  return;
2153
2190
  }
2154
2191
  const globalRule = ruleset.rules[ruleName];
2155
- const mergedRule = globalRule ? (0, ml_config_1.mergeRule)(globalRule, convertedRule) : convertedRule;
2192
+ const mergedRule = globalRule != null ? (0, ml_config_1.mergeRule)(globalRule, convertedRule) : convertedRule;
2156
2193
  ruleLog('↑ childNodeRule (%s): %O', ruleName, mergedRule);
2157
2194
  targetDescendants.forEach(descendant => {
2158
2195
  ruleMapper.set(descendant, ruleName, {
@@ -1,33 +1,33 @@
1
1
  import type { MLAttr } from './attr';
2
2
  import type { RuleInfo } from '@markuplint/ml-config';
3
3
  type Scope = {
4
- raw: string;
5
- startOffset: number;
6
- startLine: number;
7
- startCol: number;
8
- rule: RuleInfo<any, any>;
4
+ raw: string;
5
+ startOffset: number;
6
+ startLine: number;
7
+ startCol: number;
8
+ rule: RuleInfo<any, any>;
9
9
  };
10
10
  export declare class MLDomTokenList extends Array<string> implements DOMTokenList {
11
- #private;
12
- constructor(tokens: string, ownerAttrs: MLAttr<any, any>[]);
13
- get value(): string;
14
- add(...tokens: string[]): void;
15
- /**
16
- * @implements `@markuplint/ml-core` API: `MLDomTokenList`
17
- */
18
- allTokens(): Scope[];
19
- contains(token: string): boolean;
20
- forEach(callbackfn: (value: string, index: number, parent: any) => void, thisArg?: any): void;
21
- item(index: number): string | null;
22
- /**
23
- * @implements `@markuplint/ml-core` API: `MLDomTokenList`
24
- */
25
- pick(token: string): Scope | null;
26
- remove(...tokens: string[]): void;
27
- replace(token: string, newToken: string): boolean;
28
- supports(token: string): boolean;
29
- toString(): string;
30
- toggle(token: string, force?: boolean): boolean;
31
- private _pick;
11
+ #private;
12
+ constructor(tokens: string, ownerAttrs: MLAttr<any, any>[]);
13
+ get value(): string;
14
+ add(...tokens: readonly string[]): void;
15
+ /**
16
+ * @implements `@markuplint/ml-core` API: `MLDomTokenList`
17
+ */
18
+ allTokens(): Scope[];
19
+ contains(token: string): boolean;
20
+ forEach(callbackfn: (value: string, index: number, parent: any) => void, thisArg?: any): void;
21
+ item(index: number): string | null;
22
+ /**
23
+ * @implements `@markuplint/ml-core` API: `MLDomTokenList`
24
+ */
25
+ pick(token: string): Scope | null;
26
+ remove(...tokens: readonly string[]): void;
27
+ replace(token: string, newToken: string): boolean;
28
+ supports(token: string): boolean;
29
+ toString(): string;
30
+ toggle(token: string, force?: boolean): boolean;
31
+ private _pick;
32
32
  }
33
33
  export {};
@@ -6,7 +6,9 @@ const tslib_1 = require("tslib");
6
6
  const parser_utils_1 = require("@markuplint/parser-utils");
7
7
  const unexpected_call_error_1 = tslib_1.__importDefault(require("./unexpected-call-error"));
8
8
  class MLDomTokenList extends Array {
9
- constructor(tokens, ownerAttrs) {
9
+ constructor(tokens,
10
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
11
+ ownerAttrs) {
10
12
  const list = tokens
11
13
  .split(/\s+/)
12
14
  .map(t => t.trim())
@@ -43,7 +45,7 @@ class MLDomTokenList extends Array {
43
45
  let offset = 0;
44
46
  const tokens = Array.from(this);
45
47
  const locs = [];
46
- while (tokens.length) {
48
+ while (tokens.length > 0) {
47
49
  const token = tokens.shift();
48
50
  if (!token) {
49
51
  break;
@@ -106,8 +108,8 @@ class MLDomTokenList extends Array {
106
108
  throw new unexpected_call_error_1.default('Not supported "toggle" method');
107
109
  }
108
110
  _pick(token, _offset = 0) {
109
- var _a, _b, _c, _d, _e, _f;
110
- token = token.trim().split(/\s+/g)[0];
111
+ var _a, _b, _c, _d, _e, _f, _g;
112
+ token = (_a = token.trim().split(/\s+/g)[0]) !== null && _a !== void 0 ? _a : '';
111
113
  if (!token) {
112
114
  return null;
113
115
  }
@@ -123,9 +125,9 @@ class MLDomTokenList extends Array {
123
125
  const startCol = (0, parser_utils_1.getCol)(tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_origin, "f"), startOffset);
124
126
  return {
125
127
  raw: token,
126
- startOffset: ((_b = (_a = ownerAttr.valueNode) === null || _a === void 0 ? void 0 : _a.startOffset) !== null && _b !== void 0 ? _b : 0) + startOffset,
127
- startLine: ((_d = (_c = ownerAttr.valueNode) === null || _c === void 0 ? void 0 : _c.startLine) !== null && _d !== void 0 ? _d : 0) + (startLine - 1),
128
- startCol: ((_f = (_e = ownerAttr.valueNode) === null || _e === void 0 ? void 0 : _e.startCol) !== null && _f !== void 0 ? _f : 0) + (startCol - 1),
128
+ startOffset: ((_c = (_b = ownerAttr.valueNode) === null || _b === void 0 ? void 0 : _b.startOffset) !== null && _c !== void 0 ? _c : 0) + startOffset,
129
+ startLine: ((_e = (_d = ownerAttr.valueNode) === null || _d === void 0 ? void 0 : _d.startLine) !== null && _e !== void 0 ? _e : 0) + (startLine - 1),
130
+ startCol: ((_g = (_f = ownerAttr.valueNode) === null || _f === void 0 ? void 0 : _f.startCol) !== null && _g !== void 0 ? _g : 0) + (startCol - 1),
129
131
  rule: ownerAttr.rule,
130
132
  _searchedIndex: startOffset,
131
133
  };