@markuplint/ml-core 3.0.0-canary.5 → 3.0.0-dev.177
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.
- package/README.md +1 -1
- package/lib/configs.browser.d.ts +2 -0
- package/lib/configs.browser.js +12 -0
- package/lib/configs.js +1 -2
- package/lib/index.d.ts +11 -1
- package/lib/ml-core.d.ts +23 -12
- package/lib/ml-core.js +4 -4
- package/lib/ml-dom/helper/accname.js +18 -7
- package/lib/ml-dom/helper/create-node.d.ts +6 -2
- package/lib/ml-dom/helper/create-node.js +3 -1
- package/lib/ml-dom/helper/debug.js +9 -4
- package/lib/ml-dom/helper/getIndent.d.ts +7 -7
- package/lib/ml-dom/helper/getIndent.js +18 -12
- package/lib/ml-dom/helper/walkers.d.ts +15 -5
- package/lib/ml-dom/helper/walkers.js +22 -16
- package/lib/ml-dom/manipulations/child-node-methods.d.ts +20 -7
- package/lib/ml-dom/manipulations/child-node-methods.js +24 -6
- package/lib/ml-dom/manipulations/get-children.d.ts +4 -2
- package/lib/ml-dom/manipulations/get-children.js +3 -1
- package/lib/ml-dom/node/attr.d.ts +94 -91
- package/lib/ml-dom/node/attr.js +8 -4
- package/lib/ml-dom/node/block.d.ts +36 -32
- package/lib/ml-dom/node/block.js +14 -4
- package/lib/ml-dom/node/character-data.d.ts +60 -53
- package/lib/ml-dom/node/character-data.js +9 -3
- package/lib/ml-dom/node/child-node.d.ts +10 -3
- package/lib/ml-dom/node/child-node.js +3 -1
- package/lib/ml-dom/node/comment.d.ts +16 -13
- package/lib/ml-dom/node/document-fragment.d.ts +23 -20
- package/lib/ml-dom/node/document-type.d.ts +35 -32
- package/lib/ml-dom/node/document-type.js +14 -4
- package/lib/ml-dom/node/document.d.ts +1607 -1589
- package/lib/ml-dom/node/document.js +56 -19
- package/lib/ml-dom/node/dom-token-list.d.ts +26 -26
- package/lib/ml-dom/node/dom-token-list.js +9 -7
- package/lib/ml-dom/node/element.d.ts +1903 -1889
- package/lib/ml-dom/node/element.js +76 -27
- package/lib/ml-dom/node/named-node-map.d.ts +45 -40
- package/lib/ml-dom/node/named-node-map.js +13 -5
- package/lib/ml-dom/node/node-list.d.ts +10 -4
- package/lib/ml-dom/node/node-list.js +25 -5
- package/lib/ml-dom/node/node-store.d.ts +9 -4
- package/lib/ml-dom/node/node-store.js +19 -1
- package/lib/ml-dom/node/node.d.ts +493 -473
- package/lib/ml-dom/node/node.js +52 -19
- package/lib/ml-dom/node/parent-node.d.ts +67 -58
- package/lib/ml-dom/node/parent-node.js +15 -6
- package/lib/ml-dom/node/rule-mapper.d.ts +7 -7
- package/lib/ml-dom/node/rule-mapper.js +11 -3
- package/lib/ml-dom/node/text.d.ts +50 -47
- package/lib/ml-dom/node/types.d.ts +82 -14
- package/lib/ml-dom/node/unexpected-call-error.d.ts +1 -2
- package/lib/ml-dom/token/token.d.ts +44 -44
- package/lib/ml-rule/create-rule.d.ts +4 -2
- package/lib/ml-rule/create-test-rule.d.ts +6 -4
- package/lib/ml-rule/ml-rule-context.d.ts +58 -50
- package/lib/ml-rule/ml-rule-context.js +4 -2
- package/lib/ml-rule/ml-rule.d.ts +36 -26
- package/lib/ml-rule/ml-rule.js +37 -32
- package/lib/ml-rule/types.d.ts +35 -17
- package/lib/plugin/plugin.d.ts +3 -1
- package/lib/plugin/types.d.ts +7 -7
- package/lib/ruleset/index.d.ts +4 -4
- package/lib/ruleset/index.js +4 -4
- package/lib/test/index.d.ts +20 -8
- package/lib/test/index.js +1 -1
- package/lib/types.d.ts +9 -8
- package/lib/utils/get-location-from-chars.d.ts +9 -4
- package/package.json +21 -15
- package/test/ml-dom/helper/accname.spec.js +85 -0
- package/test/ml-dom/helper/create-node.spec.js +18 -0
- package/test/ml-dom/index.spec.js +680 -0
- package/tsconfig.test.json +0 -3
- 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(
|
|
27
|
-
|
|
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)
|
|
42
|
-
this.endTag = (
|
|
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(
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
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,
|
|
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
|
|
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
|
-
|
|
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(
|
|
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
|
|
2137
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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,
|
|
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: ((
|
|
127
|
-
startLine: ((
|
|
128
|
-
startCol: ((
|
|
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
|
};
|