@markuplint/ml-core 2.3.0 → 3.0.0-alpha.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.
- package/lib/configs.d.ts +1 -1
- package/lib/configs.js +29 -9
- package/lib/index.d.ts +8 -8
- package/lib/index.js +18 -10
- package/lib/ml-core.d.ts +3 -3
- package/lib/ml-core.js +41 -42
- package/lib/ml-dom/document.d.ts +79 -70
- package/lib/ml-dom/helper/accname.d.ts +2 -2
- package/lib/ml-dom/helper/accname.js +2 -3
- package/lib/ml-dom/helper/create-node.d.ts +3 -4
- package/lib/ml-dom/helper/create-node.js +11 -15
- package/lib/ml-dom/helper/debug.d.ts +2 -2
- package/lib/ml-dom/helper/debug.js +35 -21
- package/lib/ml-dom/helper/getIndent.d.ts +5 -5
- package/lib/ml-dom/helper/getIndent.js +14 -14
- package/lib/ml-dom/helper/mapped-nodes.d.ts +51 -3
- package/lib/ml-dom/helper/match-selector.d.ts +10 -6
- package/lib/ml-dom/helper/node-store.d.ts +6 -3
- package/lib/ml-dom/helper/selector.d.ts +4 -4
- package/lib/ml-dom/helper/walkers.d.ts +5 -4
- package/lib/ml-dom/helper/walkers.js +39 -3
- package/lib/ml-dom/index.d.ts +8 -3
- package/lib/ml-dom/index.js +3 -15
- package/lib/ml-dom/manipulations/child-node-methods.d.ts +33 -0
- package/lib/ml-dom/manipulations/child-node-methods.js +73 -0
- package/lib/ml-dom/manipulations/get-children.d.ts +4 -0
- package/lib/ml-dom/manipulations/get-children.js +10 -0
- package/lib/ml-dom/node/attr.d.ts +98 -0
- package/lib/ml-dom/node/attr.js +157 -0
- package/lib/ml-dom/node/block.d.ts +38 -0
- package/lib/ml-dom/node/block.js +53 -0
- package/lib/ml-dom/node/character-data.d.ts +57 -0
- package/lib/ml-dom/node/character-data.js +87 -0
- package/lib/ml-dom/node/child-node.d.ts +9 -0
- package/lib/ml-dom/node/child-node.js +10 -0
- package/lib/ml-dom/node/comment.d.ts +17 -0
- package/lib/ml-dom/node/comment.js +24 -0
- package/lib/ml-dom/node/document-fragment.d.ts +24 -0
- package/lib/ml-dom/node/document-fragment.js +33 -0
- package/lib/ml-dom/node/document-type.d.ts +38 -0
- package/lib/ml-dom/node/document-type.js +52 -0
- package/lib/ml-dom/node/document.d.ts +1554 -0
- package/lib/ml-dom/node/document.js +2117 -0
- package/lib/ml-dom/node/dom-token-list.d.ts +33 -0
- package/lib/ml-dom/node/dom-token-list.js +137 -0
- package/lib/ml-dom/node/element.d.ts +1825 -0
- package/lib/ml-dom/node/element.js +2460 -0
- package/lib/ml-dom/node/named-node-map.d.ts +42 -0
- package/lib/ml-dom/node/named-node-map.js +64 -0
- package/lib/ml-dom/node/node-list.d.ts +6 -0
- package/lib/ml-dom/node/node-list.js +39 -0
- package/lib/ml-dom/node/node-store.d.ts +14 -0
- package/lib/ml-dom/node/node-store.js +32 -0
- package/lib/ml-dom/node/node.d.ts +475 -0
- package/lib/ml-dom/node/node.js +666 -0
- package/lib/ml-dom/node/parent-node.d.ts +66 -0
- package/lib/ml-dom/node/parent-node.js +131 -0
- package/lib/ml-dom/node/rule-mapper.d.ts +17 -0
- package/lib/ml-dom/node/rule-mapper.js +49 -0
- package/lib/ml-dom/node/text.d.ts +51 -0
- package/lib/ml-dom/node/text.js +76 -0
- package/lib/ml-dom/node/types.d.ts +25 -0
- package/lib/ml-dom/node/types.js +2 -0
- package/lib/ml-dom/node/unexpected-call-error.d.ts +2 -0
- package/lib/ml-dom/node/unexpected-call-error.js +5 -0
- package/lib/ml-dom/rule-mapper.d.ts +7 -7
- package/lib/ml-dom/token/token.d.ts +47 -0
- package/lib/ml-dom/token/token.js +89 -0
- package/lib/ml-dom/tokens/abstract-element.d.ts +47 -42
- package/lib/ml-dom/tokens/attribute.d.ts +38 -38
- package/lib/ml-dom/tokens/comment.d.ts +7 -4
- package/lib/ml-dom/tokens/doctype.d.ts +12 -9
- package/lib/ml-dom/tokens/element-close-tag.d.ts +20 -17
- package/lib/ml-dom/tokens/element.d.ts +18 -15
- package/lib/ml-dom/tokens/node.d.ts +38 -31
- package/lib/ml-dom/tokens/omitted-element.d.ts +7 -4
- package/lib/ml-dom/tokens/preprocessor-specific-attribute.d.ts +20 -20
- package/lib/ml-dom/tokens/preprocessor-specific-block.d.ts +8 -5
- package/lib/ml-dom/tokens/text.d.ts +13 -9
- package/lib/ml-dom/tokens/token.d.ts +13 -13
- package/lib/ml-dom/types.d.ts +35 -13
- package/lib/ml-rule/ml-rule-context.d.ts +13 -10
- package/lib/ml-rule/ml-rule-context.js +12 -6
- package/lib/ml-rule/ml-rule.d.ts +8 -8
- package/lib/ml-rule/ml-rule.js +62 -62
- package/lib/ml-rule/types.d.ts +11 -1
- package/lib/ruleset/index.d.ts +2 -2
- package/lib/selector/is-pure-html-element.d.ts +1 -0
- package/lib/selector/is-pure-html-element.js +7 -0
- package/lib/selector/match-selector.d.ts +14 -0
- package/lib/selector/match-selector.js +230 -0
- package/lib/selector/selector.d.ts +9 -0
- package/lib/selector/selector.js +561 -0
- package/lib/test/index.d.ts +2 -1
- package/lib/test/index.js +7 -2
- package/package.json +10 -9
- package/tsconfig.tsbuildinfo +1 -1
- package/markuplint-recommended.json +0 -196
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { MLAttr } from './attr';
|
|
2
|
+
import type { RuleInfo } from '@markuplint/ml-config';
|
|
3
|
+
declare type Scope = {
|
|
4
|
+
raw: string;
|
|
5
|
+
startOffset: number;
|
|
6
|
+
startLine: number;
|
|
7
|
+
startCol: number;
|
|
8
|
+
rule: RuleInfo<any, any>;
|
|
9
|
+
};
|
|
10
|
+
export declare class MLDomTokenList extends Array<string> implements DOMTokenList {
|
|
11
|
+
#private;
|
|
12
|
+
get value(): string;
|
|
13
|
+
constructor(tokens: string, ownerAttrs: MLAttr<any, any>[]);
|
|
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
|
+
toggle(token: string, force?: boolean): boolean;
|
|
30
|
+
toString(): string;
|
|
31
|
+
private _pick;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _MLDomTokenList_set, _MLDomTokenList_origin, _MLDomTokenList_ownerAttrs;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.MLDomTokenList = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const parser_utils_1 = require("@markuplint/parser-utils");
|
|
7
|
+
const unexpected_call_error_1 = tslib_1.__importDefault(require("./unexpected-call-error"));
|
|
8
|
+
class MLDomTokenList extends Array {
|
|
9
|
+
constructor(tokens, ownerAttrs) {
|
|
10
|
+
const list = tokens
|
|
11
|
+
.split(/\s+/)
|
|
12
|
+
.map(t => t.trim())
|
|
13
|
+
.filter(t => !!t);
|
|
14
|
+
super(...list);
|
|
15
|
+
_MLDomTokenList_set.set(this, void 0);
|
|
16
|
+
_MLDomTokenList_origin.set(this, void 0);
|
|
17
|
+
/**
|
|
18
|
+
* In some cases, an author specifies multiple attributes or directives.
|
|
19
|
+
* The reference is not always one.
|
|
20
|
+
*/
|
|
21
|
+
_MLDomTokenList_ownerAttrs.set(this, void 0);
|
|
22
|
+
tslib_1.__classPrivateFieldSet(this, _MLDomTokenList_origin, tokens, "f");
|
|
23
|
+
tslib_1.__classPrivateFieldSet(this, _MLDomTokenList_ownerAttrs, ownerAttrs, "f");
|
|
24
|
+
tslib_1.__classPrivateFieldSet(this, _MLDomTokenList_set, new Set(list), "f");
|
|
25
|
+
}
|
|
26
|
+
get value() {
|
|
27
|
+
return this.join(' ');
|
|
28
|
+
}
|
|
29
|
+
add(...tokens) {
|
|
30
|
+
for (const token of tokens) {
|
|
31
|
+
if (tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_set, "f").has(token)) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_set, "f").add(token);
|
|
35
|
+
this.push(token);
|
|
36
|
+
}
|
|
37
|
+
tslib_1.__classPrivateFieldSet(this, _MLDomTokenList_origin, tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_origin, "f") + tokens.join(' '), "f");
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @implements `@markuplint/ml-core` API: `MLDomTokenList`
|
|
41
|
+
*/
|
|
42
|
+
allTokens() {
|
|
43
|
+
let offset = 0;
|
|
44
|
+
const tokens = Array.from(this);
|
|
45
|
+
const locs = [];
|
|
46
|
+
while (tokens.length) {
|
|
47
|
+
const token = tokens.shift();
|
|
48
|
+
if (!token) {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
const loc = this._pick(token, offset);
|
|
52
|
+
if (!loc) {
|
|
53
|
+
offset = 0;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
offset = loc._searchedIndex;
|
|
57
|
+
locs.push({
|
|
58
|
+
raw: loc.raw,
|
|
59
|
+
startOffset: loc.startOffset,
|
|
60
|
+
startLine: loc.startLine,
|
|
61
|
+
startCol: loc.startCol,
|
|
62
|
+
rule: loc.rule,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return locs;
|
|
66
|
+
}
|
|
67
|
+
contains(token) {
|
|
68
|
+
return tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_set, "f").has(token);
|
|
69
|
+
}
|
|
70
|
+
forEach(callbackfn, thisArg) {
|
|
71
|
+
this.forEach.bind(this)((v, i) => callbackfn(v, i, thisArg !== null && thisArg !== void 0 ? thisArg : this));
|
|
72
|
+
}
|
|
73
|
+
item(index) {
|
|
74
|
+
var _a;
|
|
75
|
+
return (_a = this[index]) !== null && _a !== void 0 ? _a : null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @implements `@markuplint/ml-core` API: `MLDomTokenList`
|
|
79
|
+
*/
|
|
80
|
+
pick(token) {
|
|
81
|
+
const r = this._pick(token);
|
|
82
|
+
if (!r) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
raw: r.raw,
|
|
87
|
+
startOffset: r.startOffset,
|
|
88
|
+
startLine: r.startLine,
|
|
89
|
+
startCol: r.startCol,
|
|
90
|
+
rule: r.rule,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
remove(...tokens) {
|
|
94
|
+
throw new unexpected_call_error_1.default('Not supported "remove" method');
|
|
95
|
+
}
|
|
96
|
+
replace(token, newToken) {
|
|
97
|
+
throw new unexpected_call_error_1.default('Not supported "replace" method');
|
|
98
|
+
}
|
|
99
|
+
supports(token) {
|
|
100
|
+
throw new unexpected_call_error_1.default('Not supported "supports" method');
|
|
101
|
+
}
|
|
102
|
+
toggle(token, force) {
|
|
103
|
+
throw new unexpected_call_error_1.default('Not supported "toggle" method');
|
|
104
|
+
}
|
|
105
|
+
toString() {
|
|
106
|
+
return this.value;
|
|
107
|
+
}
|
|
108
|
+
_pick(token, _offset = 0) {
|
|
109
|
+
var _a, _b, _c, _d, _e, _f;
|
|
110
|
+
token = token.trim().split(/\s+/g)[0];
|
|
111
|
+
if (!token) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
for (const ownerAttr of tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_ownerAttrs, "f")) {
|
|
115
|
+
if (ownerAttr.isDynamicValue) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const startOffset = tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_origin, "f").indexOf(token, _offset);
|
|
119
|
+
if (startOffset === -1) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const startLine = (0, parser_utils_1.getLine)(tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_origin, "f"), startOffset);
|
|
123
|
+
const startCol = (0, parser_utils_1.getCol)(tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_origin, "f"), startOffset);
|
|
124
|
+
return {
|
|
125
|
+
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),
|
|
129
|
+
rule: ownerAttr.rule,
|
|
130
|
+
_searchedIndex: startOffset,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.MLDomTokenList = MLDomTokenList;
|
|
137
|
+
_MLDomTokenList_set = new WeakMap(), _MLDomTokenList_origin = new WeakMap(), _MLDomTokenList_ownerAttrs = new WeakMap();
|