@markuplint/ml-core 3.0.0-alpha.66 → 3.0.0-dev.24
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 +12 -3
- package/lib/configs.browser.d.ts +2 -0
- package/lib/configs.browser.js +12 -0
- package/lib/configs.js +5 -1
- package/lib/ml-core.d.ts +3 -3
- package/lib/ml-core.js +13 -7
- package/lib/ml-dom/helper/accname.d.ts +2 -1
- package/lib/ml-dom/helper/accname.js +51 -2
- package/lib/ml-dom/helper/create-node.d.ts +2 -2
- package/lib/ml-dom/helper/create-node.js +1 -1
- package/lib/ml-dom/helper/debug.js +1 -1
- package/lib/ml-dom/helper/getIndent.d.ts +1 -1
- package/lib/ml-dom/helper/walkers.d.ts +2 -2
- package/lib/ml-dom/index.d.ts +1 -0
- package/lib/ml-dom/node/attr.d.ts +5 -5
- package/lib/ml-dom/node/attr.js +18 -12
- package/lib/ml-dom/node/block.d.ts +1 -1
- package/lib/ml-dom/node/character-data.d.ts +2 -2
- package/lib/ml-dom/node/child-node.d.ts +1 -1
- package/lib/ml-dom/node/document-fragment.d.ts +2 -2
- package/lib/ml-dom/node/document-type.d.ts +1 -1
- package/lib/ml-dom/node/document.d.ts +66 -21
- package/lib/ml-dom/node/document.js +72 -17
- package/lib/ml-dom/node/dom-token-list.d.ts +3 -3
- package/lib/ml-dom/node/dom-token-list.js +6 -6
- package/lib/ml-dom/node/element.d.ts +105 -30
- package/lib/ml-dom/node/element.js +279 -58
- package/lib/ml-dom/node/node-list.d.ts +1 -1
- package/lib/ml-dom/node/node-store.d.ts +3 -3
- package/lib/ml-dom/node/node.d.ts +21 -14
- package/lib/ml-dom/node/node.js +38 -29
- package/lib/ml-dom/node/parent-node.d.ts +2 -2
- package/lib/ml-dom/node/rule-mapper.d.ts +2 -2
- package/lib/ml-dom/node/types.d.ts +25 -15
- package/lib/ml-dom/token/token.d.ts +1 -1
- package/lib/ml-rule/ml-rule-context.d.ts +2 -1
- package/lib/ml-rule/ml-rule-context.js +19 -2
- package/lib/ml-rule/ml-rule.d.ts +5 -5
- package/lib/ml-rule/ml-rule.js +11 -12
- package/lib/ml-rule/types.d.ts +7 -7
- package/lib/plugin/types.d.ts +3 -3
- package/lib/test/index.d.ts +3 -2
- package/lib/test/index.js +5 -3
- package/lib/types.d.ts +5 -4
- package/package.json +14 -12
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/ml-dom/document.d.ts +0 -94
- package/lib/ml-dom/document.js +0 -273
- package/lib/ml-dom/helper/index.d.ts +0 -4
- package/lib/ml-dom/helper/index.js +0 -12
- package/lib/ml-dom/helper/mapped-nodes.d.ts +0 -52
- package/lib/ml-dom/helper/mapped-nodes.js +0 -2
- package/lib/ml-dom/helper/match-selector.d.ts +0 -20
- package/lib/ml-dom/helper/match-selector.js +0 -233
- package/lib/ml-dom/helper/node-store.d.ts +0 -12
- package/lib/ml-dom/helper/node-store.js +0 -28
- package/lib/ml-dom/helper/selector.d.ts +0 -11
- package/lib/ml-dom/helper/selector.js +0 -549
- package/lib/ml-dom/rule-mapper.d.ts +0 -16
- package/lib/ml-dom/rule-mapper.js +0 -57
- package/lib/ml-dom/tokens/abstract-element.d.ts +0 -54
- package/lib/ml-dom/tokens/abstract-element.js +0 -249
- package/lib/ml-dom/tokens/attribute.d.ts +0 -42
- package/lib/ml-dom/tokens/attribute.js +0 -85
- package/lib/ml-dom/tokens/comment.d.ts +0 -12
- package/lib/ml-dom/tokens/comment.js +0 -15
- package/lib/ml-dom/tokens/doctype.d.ts +0 -18
- package/lib/ml-dom/tokens/doctype.js +0 -32
- package/lib/ml-dom/tokens/element-close-tag.d.ts +0 -27
- package/lib/ml-dom/tokens/element-close-tag.js +0 -45
- package/lib/ml-dom/tokens/element.d.ts +0 -26
- package/lib/ml-dom/tokens/element.js +0 -66
- package/lib/ml-dom/tokens/index.d.ts +0 -10
- package/lib/ml-dom/tokens/index.js +0 -26
- package/lib/ml-dom/tokens/node.d.ts +0 -46
- package/lib/ml-dom/tokens/node.js +0 -126
- package/lib/ml-dom/tokens/omitted-element.d.ts +0 -13
- package/lib/ml-dom/tokens/omitted-element.js +0 -12
- package/lib/ml-dom/tokens/preprocessor-specific-attribute.d.ts +0 -24
- package/lib/ml-dom/tokens/preprocessor-specific-attribute.js +0 -37
- package/lib/ml-dom/tokens/preprocessor-specific-block.d.ts +0 -14
- package/lib/ml-dom/tokens/preprocessor-specific-block.js +0 -16
- package/lib/ml-dom/tokens/text.d.ts +0 -19
- package/lib/ml-dom/tokens/text.js +0 -26
- package/lib/ml-dom/tokens/token.d.ts +0 -16
- package/lib/ml-dom/tokens/token.js +0 -55
- package/lib/ml-dom/types.d.ts +0 -49
- package/lib/ml-dom/types.js +0 -2
- package/lib/selector/is-pure-html-element.d.ts +0 -1
- package/lib/selector/is-pure-html-element.js +0 -7
- package/lib/selector/match-selector.d.ts +0 -14
- package/lib/selector/match-selector.js +0 -230
- package/lib/selector/selector.d.ts +0 -9
- package/lib/selector/selector.js +0 -561
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _MLDOMAbstractElement_fixedNodeName, _MLDOMAbstractElement_getChildElementsAndTextNodeWithoutWhitespacesCache, _MLDOMAbstractElement_normalizedString;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const ml_spec_1 = require("@markuplint/ml-spec");
|
|
6
|
-
const helper_1 = require("../helper");
|
|
7
|
-
const accname_1 = require("../helper/accname");
|
|
8
|
-
const walkers_1 = require("../helper/walkers");
|
|
9
|
-
const node_1 = tslib_1.__importDefault(require("./node"));
|
|
10
|
-
class MLDOMAbstractElement extends node_1.default {
|
|
11
|
-
constructor(astNode, document) {
|
|
12
|
-
super(astNode, document);
|
|
13
|
-
this.nodeType = 1;
|
|
14
|
-
this.attributes = [];
|
|
15
|
-
this.hasSpreadAttr = false;
|
|
16
|
-
this.ownModels = new Set();
|
|
17
|
-
this.childModels = new Set();
|
|
18
|
-
this.descendantModels = new Set();
|
|
19
|
-
_MLDOMAbstractElement_fixedNodeName.set(this, void 0);
|
|
20
|
-
_MLDOMAbstractElement_getChildElementsAndTextNodeWithoutWhitespacesCache.set(this, null);
|
|
21
|
-
_MLDOMAbstractElement_normalizedString.set(this, null);
|
|
22
|
-
this.nodeName = astNode.nodeName;
|
|
23
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMAbstractElement_fixedNodeName, astNode.nodeName, "f");
|
|
24
|
-
this.namespaceURI = astNode.namespace;
|
|
25
|
-
this.isForeignElement = this.namespaceURI !== 'http://www.w3.org/1999/xhtml';
|
|
26
|
-
this.isCustomElement = astNode.isCustomElement;
|
|
27
|
-
this.isInFragmentDocument = document.isFragment;
|
|
28
|
-
}
|
|
29
|
-
get tagName() {
|
|
30
|
-
return this.nodeName;
|
|
31
|
-
}
|
|
32
|
-
get children() {
|
|
33
|
-
return this.childNodes.filter((node) => {
|
|
34
|
-
return node.type === 'Element' || node.type === 'OmittedElement';
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
get nextElementSibling() {
|
|
38
|
-
var _a, _b;
|
|
39
|
-
let nextNode = this.nextNode;
|
|
40
|
-
while (nextNode) {
|
|
41
|
-
if ((((this.parentNode === null && nextNode.parentNode === null) ||
|
|
42
|
-
((_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.uuid) === ((_b = nextNode.parentNode) === null || _b === void 0 ? void 0 : _b.uuid)) &&
|
|
43
|
-
nextNode.type === 'Element') ||
|
|
44
|
-
nextNode.type === 'OmittedElement') {
|
|
45
|
-
return nextNode;
|
|
46
|
-
}
|
|
47
|
-
nextNode = nextNode.nextNode;
|
|
48
|
-
}
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
get previousElementSibling() {
|
|
52
|
-
var _a, _b;
|
|
53
|
-
let prevNode = this.prevNode;
|
|
54
|
-
while (prevNode) {
|
|
55
|
-
if ((((this.parentNode === null && prevNode.parentNode === null) ||
|
|
56
|
-
((_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.uuid) === ((_b = prevNode.parentNode) === null || _b === void 0 ? void 0 : _b.uuid)) &&
|
|
57
|
-
prevNode.type === 'Element') ||
|
|
58
|
-
prevNode.type === 'OmittedElement') {
|
|
59
|
-
return prevNode;
|
|
60
|
-
}
|
|
61
|
-
prevNode = prevNode.prevNode;
|
|
62
|
-
}
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
get ns() {
|
|
66
|
-
if (/[a-z]:[a-z]/i.test(this.nodeName)) {
|
|
67
|
-
return this.nodeName.split(':')[0];
|
|
68
|
-
}
|
|
69
|
-
return (0, ml_spec_1.getNS)(this.namespaceURI);
|
|
70
|
-
}
|
|
71
|
-
get nameWithNS() {
|
|
72
|
-
if (/[a-z]:[a-z]/i.test(this.nodeName)) {
|
|
73
|
-
return this.nodeName;
|
|
74
|
-
}
|
|
75
|
-
const ns = (0, ml_spec_1.getNS)(this.namespaceURI);
|
|
76
|
-
if (ns === 'html') {
|
|
77
|
-
return this.nodeName.toLowerCase();
|
|
78
|
-
}
|
|
79
|
-
return `${ns}:${this.nodeName}`;
|
|
80
|
-
}
|
|
81
|
-
get classList() {
|
|
82
|
-
const classList = [];
|
|
83
|
-
const classAttrs = this.getAttributeToken('class');
|
|
84
|
-
for (const classAttr of classAttrs) {
|
|
85
|
-
const value = classAttr.attrType === 'html-attr' ? classAttr.value : classAttr.potentialValue;
|
|
86
|
-
classList.push(...value
|
|
87
|
-
.split(/\s+/g)
|
|
88
|
-
.map(c => c.trim())
|
|
89
|
-
.filter(c => c));
|
|
90
|
-
}
|
|
91
|
-
return classList;
|
|
92
|
-
}
|
|
93
|
-
get id() {
|
|
94
|
-
return this.getAttribute('id') || '';
|
|
95
|
-
}
|
|
96
|
-
get fixedNodeName() {
|
|
97
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMAbstractElement_fixedNodeName, "f");
|
|
98
|
-
}
|
|
99
|
-
get textContent() {
|
|
100
|
-
return this.childNodes.map(child => child.textContent || '').join('');
|
|
101
|
-
}
|
|
102
|
-
querySelectorAll(selector) {
|
|
103
|
-
const matchedNodes = [];
|
|
104
|
-
const selecor = (0, helper_1.createSelector)(selector);
|
|
105
|
-
(0, walkers_1.syncWalk)(this.childNodes, node => {
|
|
106
|
-
if (node.type === 'Element' && selecor.match(node, this)) {
|
|
107
|
-
matchedNodes.push(node);
|
|
108
|
-
}
|
|
109
|
-
if (selector === '#text' && node.type === 'Text' && !node.isWhitespace()) {
|
|
110
|
-
matchedNodes.push(node);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
return matchedNodes;
|
|
114
|
-
}
|
|
115
|
-
closest(selector) {
|
|
116
|
-
const selecor = (0, helper_1.createSelector)(selector);
|
|
117
|
-
let el = this;
|
|
118
|
-
do {
|
|
119
|
-
if (selecor.match(el, this)) {
|
|
120
|
-
return el;
|
|
121
|
-
}
|
|
122
|
-
el = el.getParentElement();
|
|
123
|
-
} while (el !== null && el.type === 'Element');
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
getAttributeToken(attrName) {
|
|
127
|
-
const attrs = [];
|
|
128
|
-
attrName = attrName.toLowerCase();
|
|
129
|
-
for (const attr of this.attributes) {
|
|
130
|
-
if (attr.potentialName === attrName) {
|
|
131
|
-
attrs.push(attr);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return attrs;
|
|
135
|
-
}
|
|
136
|
-
getAttributeNode(attrName) {
|
|
137
|
-
return this.getAttributeToken(attrName)[0] || null;
|
|
138
|
-
}
|
|
139
|
-
getAttribute(attrName) {
|
|
140
|
-
attrName = attrName.toLowerCase();
|
|
141
|
-
for (const attr of this.attributes) {
|
|
142
|
-
if (attr.potentialName === attrName) {
|
|
143
|
-
if (attr.attrType === 'html-attr') {
|
|
144
|
-
return attr.value ? attr.value : null;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
return attr.potentialValue;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
hasAttribute(attrName) {
|
|
154
|
-
return !!this.getAttributeToken(attrName).length;
|
|
155
|
-
}
|
|
156
|
-
matches(selector) {
|
|
157
|
-
return !!(0, helper_1.createSelector)(selector).match(this);
|
|
158
|
-
}
|
|
159
|
-
fixNodeName(name) {
|
|
160
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMAbstractElement_fixedNodeName, name, "f");
|
|
161
|
-
}
|
|
162
|
-
getChildElementsAndTextNodeWithoutWhitespaces() {
|
|
163
|
-
if (tslib_1.__classPrivateFieldGet(this, _MLDOMAbstractElement_getChildElementsAndTextNodeWithoutWhitespacesCache, "f")) {
|
|
164
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMAbstractElement_getChildElementsAndTextNodeWithoutWhitespacesCache, "f");
|
|
165
|
-
}
|
|
166
|
-
const filteredNodes = [];
|
|
167
|
-
this.childNodes.forEach(node => {
|
|
168
|
-
if (node.type === 'Element') {
|
|
169
|
-
filteredNodes.push(node);
|
|
170
|
-
}
|
|
171
|
-
if (node.type === 'Text' && !node.isWhitespace()) {
|
|
172
|
-
filteredNodes.push(node);
|
|
173
|
-
}
|
|
174
|
-
if (node.type === 'OmittedElement') {
|
|
175
|
-
const children = node.getChildElementsAndTextNodeWithoutWhitespaces();
|
|
176
|
-
filteredNodes.push(...children);
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMAbstractElement_getChildElementsAndTextNodeWithoutWhitespacesCache, filteredNodes, "f");
|
|
180
|
-
return filteredNodes;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* This element has "Preprocessor Specific Block". In other words, Its children are potentially mutable.
|
|
184
|
-
*/
|
|
185
|
-
hasMutableChildren(attr = false) {
|
|
186
|
-
for (const child of this.childNodes) {
|
|
187
|
-
if (child.type === 'PSBlock') {
|
|
188
|
-
return true;
|
|
189
|
-
}
|
|
190
|
-
if (child.type === 'Element' || child.type === 'OmittedElement') {
|
|
191
|
-
if (attr && child.hasMutableAttributes()) {
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
194
|
-
if (child.hasMutableChildren()) {
|
|
195
|
-
return true;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
|
-
hasMutableAttributes() {
|
|
202
|
-
for (const attr of this.attributes) {
|
|
203
|
-
if (attr.attrType === 'ps-attr') {
|
|
204
|
-
return true;
|
|
205
|
-
}
|
|
206
|
-
if (attr.isDynamicValue) {
|
|
207
|
-
return true;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
isDescendantByUUIDList(uuidList) {
|
|
213
|
-
let el = this.getParentElement();
|
|
214
|
-
if (el === null) {
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
do {
|
|
218
|
-
if (uuidList.includes(el.uuid)) {
|
|
219
|
-
return true;
|
|
220
|
-
}
|
|
221
|
-
el = el.getParentElement();
|
|
222
|
-
} while (el !== null && el.type === 'Element');
|
|
223
|
-
return false;
|
|
224
|
-
}
|
|
225
|
-
getAccessibleName() {
|
|
226
|
-
return (0, accname_1.getAccname)(this);
|
|
227
|
-
}
|
|
228
|
-
toNormalizeString() {
|
|
229
|
-
if (tslib_1.__classPrivateFieldGet(this, _MLDOMAbstractElement_normalizedString, "f")) {
|
|
230
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMAbstractElement_normalizedString, "f");
|
|
231
|
-
}
|
|
232
|
-
const children = this.getChildElementsAndTextNodeWithoutWhitespaces();
|
|
233
|
-
const attrs = this.attributes.map(attr => attr.toNormalizeString());
|
|
234
|
-
const attrString = attrs.length ? ' ' + attrs.join('') : '';
|
|
235
|
-
const startTag = `<${this.nodeName}${attrString}>`;
|
|
236
|
-
const childNodes = children.map(node => {
|
|
237
|
-
if (node.type === 'Element') {
|
|
238
|
-
return node.toNormalizeString();
|
|
239
|
-
}
|
|
240
|
-
return node.originRaw;
|
|
241
|
-
});
|
|
242
|
-
const endTag = `</${this.nodeName}>`;
|
|
243
|
-
const normalizedString = `${startTag}${childNodes.join('')}${endTag}`;
|
|
244
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMAbstractElement_normalizedString, normalizedString, "f");
|
|
245
|
-
return normalizedString;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
exports.default = MLDOMAbstractElement;
|
|
249
|
-
_MLDOMAbstractElement_fixedNodeName = new WeakMap(), _MLDOMAbstractElement_getChildElementsAndTextNodeWithoutWhitespacesCache = new WeakMap(), _MLDOMAbstractElement_normalizedString = new WeakMap();
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { MLASTHTMLAttr, MLToken } from '@markuplint/ml-ast';
|
|
2
|
-
import MLDOMToken from './token';
|
|
3
|
-
export default class MLDOMAttribute extends MLDOMToken<MLASTHTMLAttr> {
|
|
4
|
-
readonly nodeType = 2;
|
|
5
|
-
readonly attrType = 'html-attr';
|
|
6
|
-
readonly name: MLDOMToken<MLToken>;
|
|
7
|
-
readonly spacesBeforeName: MLDOMToken<MLToken>;
|
|
8
|
-
readonly spacesBeforeEqual: MLDOMToken<MLToken>;
|
|
9
|
-
readonly equal: MLDOMToken<MLToken>;
|
|
10
|
-
readonly spacesAfterEqual: MLDOMToken<MLToken>;
|
|
11
|
-
readonly startQuote: MLDOMToken<MLToken>;
|
|
12
|
-
readonly valueNode: MLDOMToken<MLToken>;
|
|
13
|
-
readonly endQuote: MLDOMToken<MLToken>;
|
|
14
|
-
readonly isDynamicValue?: true;
|
|
15
|
-
readonly isDirective?: true;
|
|
16
|
-
readonly potentialName: string;
|
|
17
|
-
readonly candidate?: string;
|
|
18
|
-
readonly isDuplicatable: boolean;
|
|
19
|
-
constructor(astToken: MLASTHTMLAttr);
|
|
20
|
-
get raw(): string;
|
|
21
|
-
get startOffset(): number;
|
|
22
|
-
get endOffset(): number;
|
|
23
|
-
get startLine(): number;
|
|
24
|
-
get endLine(): number;
|
|
25
|
-
get startCol(): number;
|
|
26
|
-
get endCol(): number;
|
|
27
|
-
get value(): string;
|
|
28
|
-
getName(): {
|
|
29
|
-
line: number;
|
|
30
|
-
col: number;
|
|
31
|
-
potential: string;
|
|
32
|
-
raw: string;
|
|
33
|
-
};
|
|
34
|
-
getValue(): {
|
|
35
|
-
line: number;
|
|
36
|
-
col: number;
|
|
37
|
-
potential: string;
|
|
38
|
-
raw: string;
|
|
39
|
-
};
|
|
40
|
-
toString(withSpace?: boolean): string;
|
|
41
|
-
toNormalizeString(): string;
|
|
42
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const token_1 = tslib_1.__importDefault(require("./token"));
|
|
5
|
-
class MLDOMAttribute extends token_1.default {
|
|
6
|
-
constructor(astToken) {
|
|
7
|
-
super(astToken);
|
|
8
|
-
this.nodeType = 2;
|
|
9
|
-
this.attrType = 'html-attr';
|
|
10
|
-
this.spacesBeforeName = new token_1.default(this._astToken.spacesBeforeName);
|
|
11
|
-
this.name = new token_1.default(this._astToken.name);
|
|
12
|
-
this.spacesBeforeEqual = new token_1.default(this._astToken.spacesBeforeEqual);
|
|
13
|
-
this.equal = new token_1.default(this._astToken.equal);
|
|
14
|
-
this.spacesAfterEqual = new token_1.default(this._astToken.spacesAfterEqual);
|
|
15
|
-
this.startQuote = new token_1.default(this._astToken.startQuote);
|
|
16
|
-
this.valueNode = new token_1.default(this._astToken.value);
|
|
17
|
-
this.endQuote = new token_1.default(this._astToken.endQuote);
|
|
18
|
-
this.isDynamicValue = astToken.isDynamicValue;
|
|
19
|
-
this.isDirective = astToken.isDirective;
|
|
20
|
-
this.potentialName = astToken.potentialName || this.name.raw;
|
|
21
|
-
this.candidate = astToken.candidate;
|
|
22
|
-
this.isDuplicatable = astToken.isDuplicatable;
|
|
23
|
-
}
|
|
24
|
-
get raw() {
|
|
25
|
-
const raw = [this.name.raw];
|
|
26
|
-
if (this.equal.raw === '=') {
|
|
27
|
-
raw.push(this.spacesBeforeEqual.raw);
|
|
28
|
-
raw.push(this.equal.raw);
|
|
29
|
-
raw.push(this.spacesAfterEqual.raw);
|
|
30
|
-
raw.push(this.startQuote.raw);
|
|
31
|
-
raw.push(this.valueNode.raw);
|
|
32
|
-
raw.push(this.endQuote.raw);
|
|
33
|
-
}
|
|
34
|
-
return raw.join('');
|
|
35
|
-
}
|
|
36
|
-
get startOffset() {
|
|
37
|
-
return this.name.startOffset;
|
|
38
|
-
}
|
|
39
|
-
get endOffset() {
|
|
40
|
-
return this.endQuote.endOffset;
|
|
41
|
-
}
|
|
42
|
-
get startLine() {
|
|
43
|
-
return this.name.startLine;
|
|
44
|
-
}
|
|
45
|
-
get endLine() {
|
|
46
|
-
return this.endQuote.endLine;
|
|
47
|
-
}
|
|
48
|
-
get startCol() {
|
|
49
|
-
return this.name.startCol;
|
|
50
|
-
}
|
|
51
|
-
get endCol() {
|
|
52
|
-
return this.endQuote.endCol;
|
|
53
|
-
}
|
|
54
|
-
get value() {
|
|
55
|
-
const value = this.getValue();
|
|
56
|
-
return value.raw;
|
|
57
|
-
}
|
|
58
|
-
getName() {
|
|
59
|
-
return {
|
|
60
|
-
line: this.name.startLine,
|
|
61
|
-
col: this.name.startCol,
|
|
62
|
-
potential: this.potentialName,
|
|
63
|
-
raw: this.name.raw,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
getValue() {
|
|
67
|
-
return {
|
|
68
|
-
line: this.valueNode.startLine,
|
|
69
|
-
col: this.valueNode.startCol,
|
|
70
|
-
potential: this.valueNode.raw,
|
|
71
|
-
raw: this.valueNode.raw,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
toString(withSpace = true) {
|
|
75
|
-
return (withSpace ? this.spacesBeforeName.raw : '') + this.raw;
|
|
76
|
-
}
|
|
77
|
-
toNormalizeString() {
|
|
78
|
-
return (this.name.originRaw +
|
|
79
|
-
this.equal.originRaw +
|
|
80
|
-
this.startQuote.originRaw +
|
|
81
|
-
this.valueNode.originRaw +
|
|
82
|
-
this.endQuote.originRaw);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
exports.default = MLDOMAttribute;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { IMLDOMComment } from '../types';
|
|
2
|
-
import type { MLASTComment } from '@markuplint/ml-ast';
|
|
3
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
4
|
-
import MLDOMNode from './node';
|
|
5
|
-
export default class MLDOMComment<T extends RuleConfigValue, O = null>
|
|
6
|
-
extends MLDOMNode<T, O, MLASTComment>
|
|
7
|
-
implements IMLDOMComment
|
|
8
|
-
{
|
|
9
|
-
readonly nodeType = 8;
|
|
10
|
-
readonly type = 'Comment';
|
|
11
|
-
get textContent(): string;
|
|
12
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const node_1 = tslib_1.__importDefault(require("./node"));
|
|
5
|
-
class MLDOMComment extends node_1.default {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
this.nodeType = 8;
|
|
9
|
-
this.type = 'Comment';
|
|
10
|
-
}
|
|
11
|
-
get textContent() {
|
|
12
|
-
return this.raw;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.default = MLDOMComment;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Document } from '../';
|
|
2
|
-
import type { IMLDOMDoctype } from '../types';
|
|
3
|
-
import type { MLASTDoctype, MLASTNode } from '@markuplint/ml-ast';
|
|
4
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
5
|
-
import MLDOMNode from './node';
|
|
6
|
-
export default class MLDOMDoctype<T extends RuleConfigValue, O = null>
|
|
7
|
-
extends MLDOMNode<T, O, MLASTNode>
|
|
8
|
-
implements IMLDOMDoctype
|
|
9
|
-
{
|
|
10
|
-
#private;
|
|
11
|
-
readonly nodeType = 10;
|
|
12
|
-
readonly type = 'Doctype';
|
|
13
|
-
constructor(astNode: MLASTDoctype, document: Document<T, O>);
|
|
14
|
-
get name(): string;
|
|
15
|
-
get publicId(): string;
|
|
16
|
-
get systemId(): string;
|
|
17
|
-
get textContent(): null;
|
|
18
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _MLDOMDoctype_name, _MLDOMDoctype_publicId, _MLDOMDoctype_systemId;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const node_1 = tslib_1.__importDefault(require("./node"));
|
|
6
|
-
class MLDOMDoctype extends node_1.default {
|
|
7
|
-
constructor(astNode, document) {
|
|
8
|
-
super(astNode, document);
|
|
9
|
-
this.nodeType = 10;
|
|
10
|
-
this.type = 'Doctype';
|
|
11
|
-
_MLDOMDoctype_name.set(this, void 0);
|
|
12
|
-
_MLDOMDoctype_publicId.set(this, void 0);
|
|
13
|
-
_MLDOMDoctype_systemId.set(this, void 0);
|
|
14
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMDoctype_name, astNode.name, "f");
|
|
15
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMDoctype_publicId, astNode.publicId, "f");
|
|
16
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMDoctype_systemId, astNode.systemId, "f");
|
|
17
|
-
}
|
|
18
|
-
get name() {
|
|
19
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMDoctype_name, "f");
|
|
20
|
-
}
|
|
21
|
-
get publicId() {
|
|
22
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMDoctype_publicId, "f");
|
|
23
|
-
}
|
|
24
|
-
get systemId() {
|
|
25
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMDoctype_systemId, "f");
|
|
26
|
-
}
|
|
27
|
-
get textContent() {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.default = MLDOMDoctype;
|
|
32
|
-
_MLDOMDoctype_name = new WeakMap(), _MLDOMDoctype_publicId = new WeakMap(), _MLDOMDoctype_systemId = new WeakMap();
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { Document } from '../';
|
|
2
|
-
import type { IMLDOMElementCloseTag } from '../types';
|
|
3
|
-
import type { MLDOMElement } from './';
|
|
4
|
-
import type { MLASTElementCloseTag } from '@markuplint/ml-ast';
|
|
5
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
6
|
-
import MLDOMNode from './node';
|
|
7
|
-
export default class MLDOMElementCloseTag<T extends RuleConfigValue, O = null>
|
|
8
|
-
extends MLDOMNode<T, O, MLASTElementCloseTag>
|
|
9
|
-
implements IMLDOMElementCloseTag
|
|
10
|
-
{
|
|
11
|
-
#private;
|
|
12
|
-
readonly nodeType = 1;
|
|
13
|
-
readonly type = 'ElementCloseTag';
|
|
14
|
-
readonly nodeName: string;
|
|
15
|
-
readonly startTag: MLDOMElement<T, O>;
|
|
16
|
-
readonly isForeignElement: boolean;
|
|
17
|
-
readonly isCustomElement: boolean;
|
|
18
|
-
constructor(astNode: MLASTElementCloseTag, document: Document<T, O>, startTag: MLDOMElement<T, O>);
|
|
19
|
-
get raw(): string;
|
|
20
|
-
get rule(): import('@markuplint/ml-config').RuleInfo<T, O>;
|
|
21
|
-
fixNodeName(name: string): void;
|
|
22
|
-
getNameLocation(): {
|
|
23
|
-
offset: number;
|
|
24
|
-
line: number;
|
|
25
|
-
col: number;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _MLDOMElementCloseTag_tagOpenChar, _MLDOMElementCloseTag_fixedNodeName;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const string_splice_1 = require("../../utils/string-splice");
|
|
6
|
-
const node_1 = tslib_1.__importDefault(require("./node"));
|
|
7
|
-
class MLDOMElementCloseTag extends node_1.default {
|
|
8
|
-
constructor(astNode, document, startTag) {
|
|
9
|
-
super(astNode, document);
|
|
10
|
-
this.nodeType = 1;
|
|
11
|
-
this.type = 'ElementCloseTag';
|
|
12
|
-
_MLDOMElementCloseTag_tagOpenChar.set(this, void 0);
|
|
13
|
-
// readonly #tagCloseChar: string;
|
|
14
|
-
_MLDOMElementCloseTag_fixedNodeName.set(this, void 0);
|
|
15
|
-
this.nodeName = astNode.nodeName;
|
|
16
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMElementCloseTag_fixedNodeName, astNode.nodeName, "f");
|
|
17
|
-
this.startTag = startTag;
|
|
18
|
-
this.isForeignElement = startTag.isForeignElement;
|
|
19
|
-
this.isCustomElement = astNode.isCustomElement;
|
|
20
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMElementCloseTag_tagOpenChar, astNode.tagOpenChar, "f");
|
|
21
|
-
// this.#tagCloseChar = astNode.tagCloseChar;
|
|
22
|
-
}
|
|
23
|
-
get raw() {
|
|
24
|
-
let fixed = this.originRaw;
|
|
25
|
-
if (this.nodeName !== tslib_1.__classPrivateFieldGet(this, _MLDOMElementCloseTag_fixedNodeName, "f")) {
|
|
26
|
-
fixed = (0, string_splice_1.stringSplice)(fixed, tslib_1.__classPrivateFieldGet(this, _MLDOMElementCloseTag_tagOpenChar, "f").length, this.nodeName.length, tslib_1.__classPrivateFieldGet(this, _MLDOMElementCloseTag_fixedNodeName, "f"));
|
|
27
|
-
}
|
|
28
|
-
return fixed;
|
|
29
|
-
}
|
|
30
|
-
get rule() {
|
|
31
|
-
return this.startTag.rule;
|
|
32
|
-
}
|
|
33
|
-
fixNodeName(name) {
|
|
34
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMElementCloseTag_fixedNodeName, name, "f");
|
|
35
|
-
}
|
|
36
|
-
getNameLocation() {
|
|
37
|
-
return {
|
|
38
|
-
offset: this.startOffset,
|
|
39
|
-
line: this.startLine,
|
|
40
|
-
col: this.startCol + tslib_1.__classPrivateFieldGet(this, _MLDOMElementCloseTag_tagOpenChar, "f").length,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.default = MLDOMElementCloseTag;
|
|
45
|
-
_MLDOMElementCloseTag_tagOpenChar = new WeakMap(), _MLDOMElementCloseTag_fixedNodeName = new WeakMap();
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { Document } from '../';
|
|
2
|
-
import type { IMLDOMElement } from '../types';
|
|
3
|
-
import type { MLDOMElementCloseTag, MLDOMText } from './';
|
|
4
|
-
import type { MLASTElement, MLToken } from '@markuplint/ml-ast';
|
|
5
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
6
|
-
import MLDOMAbstractElement from './abstract-element';
|
|
7
|
-
import MLDOMToken from './token';
|
|
8
|
-
export default class MLDOMElement<T extends RuleConfigValue, O = null>
|
|
9
|
-
extends MLDOMAbstractElement<T, O, MLASTElement>
|
|
10
|
-
implements IMLDOMElement
|
|
11
|
-
{
|
|
12
|
-
#private;
|
|
13
|
-
readonly type = 'Element';
|
|
14
|
-
readonly hasSpreadAttr: boolean;
|
|
15
|
-
readonly closeTag: MLDOMElementCloseTag<T, O> | null;
|
|
16
|
-
readonly selfClosingSolidus: MLDOMToken<MLToken> | null;
|
|
17
|
-
readonly endSpace: MLDOMToken<MLToken> | null;
|
|
18
|
-
constructor(astNode: MLASTElement, document: Document<T, O>);
|
|
19
|
-
get raw(): string;
|
|
20
|
-
querySelectorAll(selector: string): (MLDOMElement<T, O> | MLDOMText<T, O>)[];
|
|
21
|
-
getNameLocation(): {
|
|
22
|
-
offset: number;
|
|
23
|
-
line: number;
|
|
24
|
-
col: number;
|
|
25
|
-
};
|
|
26
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _MLDOMElement_tagOpenChar, _MLDOMElement_tagCloseChar;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const string_splice_1 = require("../../utils/string-splice");
|
|
6
|
-
const helper_1 = require("../helper");
|
|
7
|
-
const walkers_1 = require("../helper/walkers");
|
|
8
|
-
const abstract_element_1 = tslib_1.__importDefault(require("./abstract-element"));
|
|
9
|
-
const attribute_1 = tslib_1.__importDefault(require("./attribute"));
|
|
10
|
-
const preprocessor_specific_attribute_1 = tslib_1.__importDefault(require("./preprocessor-specific-attribute"));
|
|
11
|
-
const token_1 = tslib_1.__importDefault(require("./token"));
|
|
12
|
-
class MLDOMElement extends abstract_element_1.default {
|
|
13
|
-
constructor(astNode, document) {
|
|
14
|
-
super(astNode, document);
|
|
15
|
-
this.type = 'Element';
|
|
16
|
-
_MLDOMElement_tagOpenChar.set(this, void 0);
|
|
17
|
-
_MLDOMElement_tagCloseChar.set(this, void 0);
|
|
18
|
-
this.attributes.push(...astNode.attributes.map(attr => attr.type === 'html-attr' ? new attribute_1.default(attr) : new preprocessor_specific_attribute_1.default(attr)));
|
|
19
|
-
this.hasSpreadAttr = astNode.hasSpreadAttr;
|
|
20
|
-
this.selfClosingSolidus = astNode.selfClosingSolidus ? new token_1.default(astNode.selfClosingSolidus) : null;
|
|
21
|
-
this.endSpace = astNode.endSpace ? new token_1.default(astNode.endSpace) : null;
|
|
22
|
-
this.closeTag = astNode.pearNode ? (0, helper_1.createNode)(astNode.pearNode, document, this) : null;
|
|
23
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMElement_tagOpenChar, astNode.tagOpenChar, "f");
|
|
24
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMElement_tagCloseChar, astNode.tagCloseChar, "f");
|
|
25
|
-
}
|
|
26
|
-
get raw() {
|
|
27
|
-
let fixed = this.originRaw;
|
|
28
|
-
let gap = 0;
|
|
29
|
-
if (this.nodeName !== this.fixedNodeName) {
|
|
30
|
-
fixed = (0, string_splice_1.stringSplice)(fixed, tslib_1.__classPrivateFieldGet(this, _MLDOMElement_tagOpenChar, "f").length, this.nodeName.length, this.fixedNodeName);
|
|
31
|
-
gap = gap + this.fixedNodeName.length - this.nodeName.length;
|
|
32
|
-
}
|
|
33
|
-
for (const attr of this.attributes) {
|
|
34
|
-
const startOffset = (attr.attrType === 'html-attr' ? attr.spacesBeforeName.startOffset : attr.startOffset) -
|
|
35
|
-
this.startOffset;
|
|
36
|
-
const fixedAttr = attr.toString();
|
|
37
|
-
if (attr.originRaw !== fixedAttr) {
|
|
38
|
-
fixed = (0, string_splice_1.stringSplice)(fixed, startOffset + gap, attr.originRaw.length, fixedAttr);
|
|
39
|
-
gap = gap + fixedAttr.length - attr.originRaw.length;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return fixed;
|
|
43
|
-
}
|
|
44
|
-
querySelectorAll(selector) {
|
|
45
|
-
const matchedNodes = [];
|
|
46
|
-
const selecor = (0, helper_1.createSelector)(selector);
|
|
47
|
-
(0, walkers_1.syncWalk)(this.childNodes, node => {
|
|
48
|
-
if (node.type === 'Element' && selecor.match(node, this)) {
|
|
49
|
-
matchedNodes.push(node);
|
|
50
|
-
}
|
|
51
|
-
if (selector === '#text' && node.type === 'Text' && !node.isWhitespace()) {
|
|
52
|
-
matchedNodes.push(node);
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
return matchedNodes;
|
|
56
|
-
}
|
|
57
|
-
getNameLocation() {
|
|
58
|
-
return {
|
|
59
|
-
offset: this.startOffset,
|
|
60
|
-
line: this.startLine,
|
|
61
|
-
col: this.startCol + tslib_1.__classPrivateFieldGet(this, _MLDOMElement_tagOpenChar, "f").length,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
exports.default = MLDOMElement;
|
|
66
|
-
_MLDOMElement_tagOpenChar = new WeakMap(), _MLDOMElement_tagCloseChar = new WeakMap();
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { default as MLDOMAttribute } from './attribute';
|
|
2
|
-
export { default as MLDOMComment } from './comment';
|
|
3
|
-
export { default as MLDOMToken } from './token';
|
|
4
|
-
export { default as MLDOMNode } from './node';
|
|
5
|
-
export { default as MLDOMDoctype } from './doctype';
|
|
6
|
-
export { default as MLDOMText } from './text';
|
|
7
|
-
export { default as MLDOMOmittedElement } from './omitted-element';
|
|
8
|
-
export { default as MLDOMElement } from './element';
|
|
9
|
-
export { default as MLDOMElementCloseTag } from './element-close-tag';
|
|
10
|
-
export { default as MLDOMPreprocessorSpecificBlock } from './preprocessor-specific-block';
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MLDOMPreprocessorSpecificBlock = exports.MLDOMElementCloseTag = exports.MLDOMElement = exports.MLDOMOmittedElement = exports.MLDOMText = exports.MLDOMDoctype = exports.MLDOMNode = exports.MLDOMToken = exports.MLDOMComment = exports.MLDOMAttribute = void 0;
|
|
7
|
-
var attribute_1 = require("./attribute");
|
|
8
|
-
Object.defineProperty(exports, "MLDOMAttribute", { enumerable: true, get: function () { return __importDefault(attribute_1).default; } });
|
|
9
|
-
var comment_1 = require("./comment");
|
|
10
|
-
Object.defineProperty(exports, "MLDOMComment", { enumerable: true, get: function () { return __importDefault(comment_1).default; } });
|
|
11
|
-
var token_1 = require("./token");
|
|
12
|
-
Object.defineProperty(exports, "MLDOMToken", { enumerable: true, get: function () { return __importDefault(token_1).default; } });
|
|
13
|
-
var node_1 = require("./node");
|
|
14
|
-
Object.defineProperty(exports, "MLDOMNode", { enumerable: true, get: function () { return __importDefault(node_1).default; } });
|
|
15
|
-
var doctype_1 = require("./doctype");
|
|
16
|
-
Object.defineProperty(exports, "MLDOMDoctype", { enumerable: true, get: function () { return __importDefault(doctype_1).default; } });
|
|
17
|
-
var text_1 = require("./text");
|
|
18
|
-
Object.defineProperty(exports, "MLDOMText", { enumerable: true, get: function () { return __importDefault(text_1).default; } });
|
|
19
|
-
var omitted_element_1 = require("./omitted-element");
|
|
20
|
-
Object.defineProperty(exports, "MLDOMOmittedElement", { enumerable: true, get: function () { return __importDefault(omitted_element_1).default; } });
|
|
21
|
-
var element_1 = require("./element");
|
|
22
|
-
Object.defineProperty(exports, "MLDOMElement", { enumerable: true, get: function () { return __importDefault(element_1).default; } });
|
|
23
|
-
var element_close_tag_1 = require("./element-close-tag");
|
|
24
|
-
Object.defineProperty(exports, "MLDOMElementCloseTag", { enumerable: true, get: function () { return __importDefault(element_close_tag_1).default; } });
|
|
25
|
-
var preprocessor_specific_block_1 = require("./preprocessor-specific-block");
|
|
26
|
-
Object.defineProperty(exports, "MLDOMPreprocessorSpecificBlock", { enumerable: true, get: function () { return __importDefault(preprocessor_specific_block_1).default; } });
|