@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.
- 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 +48 -44
- package/lib/ml-dom/helper/accname.d.ts +3 -2
- package/lib/ml-dom/helper/accname.js +53 -5
- package/lib/ml-dom/helper/create-node.d.ts +4 -5
- package/lib/ml-dom/helper/create-node.js +12 -16
- 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/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 +1563 -0
- package/lib/ml-dom/node/document.js +2140 -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 +1844 -0
- package/lib/ml-dom/node/element.js +2601 -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/{helper → node}/node-store.js +8 -4
- package/lib/ml-dom/node/node.d.ts +482 -0
- package/lib/ml-dom/node/node.js +675 -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/{rule-mapper.js → node/rule-mapper.js} +20 -28
- 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 +35 -0
- package/lib/ml-dom/{types.js → node/types.js} +0 -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/token/token.d.ts +47 -0
- package/lib/ml-dom/token/token.js +89 -0
- package/lib/ml-rule/ml-rule-context.d.ts +14 -10
- package/lib/ml-rule/ml-rule-context.js +29 -6
- package/lib/ml-rule/ml-rule.d.ts +12 -12
- package/lib/ml-rule/ml-rule.js +63 -63
- package/lib/ml-rule/types.d.ts +12 -2
- package/lib/ruleset/index.d.ts +2 -2
- package/lib/test/index.d.ts +3 -1
- package/lib/test/index.js +12 -5
- package/lib/types.d.ts +3 -2
- package/package.json +11 -10
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/ml-dom/document.d.ts +0 -85
- 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 -4
- package/lib/ml-dom/helper/mapped-nodes.js +0 -2
- package/lib/ml-dom/helper/match-selector.d.ts +0 -16
- package/lib/ml-dom/helper/match-selector.js +0 -233
- package/lib/ml-dom/helper/node-store.d.ts +0 -9
- 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/tokens/abstract-element.d.ts +0 -49
- 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 -9
- package/lib/ml-dom/tokens/comment.js +0 -15
- package/lib/ml-dom/tokens/doctype.d.ts +0 -15
- package/lib/ml-dom/tokens/doctype.js +0 -32
- package/lib/ml-dom/tokens/element-close-tag.d.ts +0 -24
- package/lib/ml-dom/tokens/element-close-tag.js +0 -45
- package/lib/ml-dom/tokens/element.d.ts +0 -23
- 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 -39
- package/lib/ml-dom/tokens/node.js +0 -126
- package/lib/ml-dom/tokens/omitted-element.d.ts +0 -10
- 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 -11
- package/lib/ml-dom/tokens/preprocessor-specific-block.js +0 -16
- package/lib/ml-dom/tokens/text.d.ts +0 -15
- 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 -27
- package/markuplint-recommended.json +0 -196
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { Document } from '../';
|
|
2
|
-
import type { RuleInfo } from '../../';
|
|
3
|
-
import type { AnonymousNode, IMLDOMNode, NodeType } from '../types';
|
|
4
|
-
import type { MLDOMElement, MLDOMOmittedElement, MLDOMPreprocessorSpecificBlock } from './';
|
|
5
|
-
import type { MLASTAbstructNode } from '@markuplint/ml-ast';
|
|
6
|
-
import type { AnyRule, RuleConfigValue } from '@markuplint/ml-config';
|
|
7
|
-
import MLDOMToken from './token';
|
|
8
|
-
export default abstract class MLDOMNode<T extends RuleConfigValue, O = null, A extends MLASTAbstructNode = MLASTAbstructNode> extends MLDOMToken<A> implements IMLDOMNode {
|
|
9
|
-
#private;
|
|
10
|
-
readonly ELEMENT_NODE = 1;
|
|
11
|
-
readonly ATTRIBUTE_NODE = 2;
|
|
12
|
-
readonly TEXT_NODE = 3;
|
|
13
|
-
readonly CDATA_SECTION_NODE = 4;
|
|
14
|
-
readonly ENTITY_REFERENCE_NODE = 5;
|
|
15
|
-
readonly ENTITY_NODE = 6;
|
|
16
|
-
readonly PROCESSING_INSTRUCTION_NODE = 7;
|
|
17
|
-
readonly COMMENT_NODE = 8;
|
|
18
|
-
readonly DOCUMENT_NODE = 9;
|
|
19
|
-
readonly DOCUMENT_TYPE_NODE = 10;
|
|
20
|
-
readonly DOCUMENT_FRAGMENT_NODE = 11;
|
|
21
|
-
readonly NOTATION_NODE = 12;
|
|
22
|
-
readonly ownerDocument: Document<T, O>;
|
|
23
|
-
readonly type: NodeType;
|
|
24
|
-
readonly rules: Record<string, AnyRule>;
|
|
25
|
-
protected _astToken: A;
|
|
26
|
-
constructor(astNode: A, document: Document<T, O>);
|
|
27
|
-
get childNodes(): AnonymousNode<T, O>[];
|
|
28
|
-
get parentNode(): MLDOMElement<T, O> | MLDOMOmittedElement<T, O> | MLDOMPreprocessorSpecificBlock<T, O> | null;
|
|
29
|
-
get prevNode(): AnonymousNode<T, O> | null;
|
|
30
|
-
get nextNode(): AnonymousNode<T, O> | null;
|
|
31
|
-
get syntaxicalParentNode(): MLDOMElement<T, O> | MLDOMPreprocessorSpecificBlock<T, O> | null;
|
|
32
|
-
get prevToken(): AnonymousNode<T, O> | null;
|
|
33
|
-
get nodeStore(): import("../helper").NodeStore;
|
|
34
|
-
get rule(): RuleInfo<T, O>;
|
|
35
|
-
get textContent(): string | null;
|
|
36
|
-
getParentElement(): MLDOMElement<T, O> | MLDOMOmittedElement<T, O> | null;
|
|
37
|
-
is(type: NodeType): boolean;
|
|
38
|
-
toString(): string;
|
|
39
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _MLDOMNode_prevToken;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const token_1 = tslib_1.__importDefault(require("./token"));
|
|
6
|
-
class MLDOMNode extends token_1.default {
|
|
7
|
-
constructor(astNode, document) {
|
|
8
|
-
super(astNode);
|
|
9
|
-
// https://dom.spec.whatwg.org/#interface-node
|
|
10
|
-
this.ELEMENT_NODE = 1;
|
|
11
|
-
this.ATTRIBUTE_NODE = 2;
|
|
12
|
-
this.TEXT_NODE = 3;
|
|
13
|
-
this.CDATA_SECTION_NODE = 4;
|
|
14
|
-
this.ENTITY_REFERENCE_NODE = 5; // legacy
|
|
15
|
-
this.ENTITY_NODE = 6; // legacy
|
|
16
|
-
this.PROCESSING_INSTRUCTION_NODE = 7;
|
|
17
|
-
this.COMMENT_NODE = 8;
|
|
18
|
-
this.DOCUMENT_NODE = 9;
|
|
19
|
-
this.DOCUMENT_TYPE_NODE = 10;
|
|
20
|
-
this.DOCUMENT_FRAGMENT_NODE = 11;
|
|
21
|
-
this.NOTATION_NODE = 12; // legacy
|
|
22
|
-
this.type = 'Node';
|
|
23
|
-
this.rules = {};
|
|
24
|
-
/**
|
|
25
|
-
* prevToken cache props
|
|
26
|
-
*/
|
|
27
|
-
_MLDOMNode_prevToken.set(this, void 0);
|
|
28
|
-
this._astToken = astNode;
|
|
29
|
-
this.ownerDocument = document;
|
|
30
|
-
this.ownerDocument.nodeStore.setNode(astNode, this);
|
|
31
|
-
}
|
|
32
|
-
get childNodes() {
|
|
33
|
-
if (this._astToken.type === 'starttag' || this._astToken.type === 'omittedtag') {
|
|
34
|
-
// @ts-ignore
|
|
35
|
-
const astChildren = this._astToken.childNodes || [];
|
|
36
|
-
return astChildren.map(node => this.nodeStore.getNode(node));
|
|
37
|
-
}
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
get parentNode() {
|
|
41
|
-
if (!this._astToken.parentNode) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
return this.ownerDocument.nodeStore.getNode(this._astToken.parentNode);
|
|
45
|
-
}
|
|
46
|
-
get prevNode() {
|
|
47
|
-
if (!this._astToken.prevNode) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
return this.ownerDocument.nodeStore.getNode(this._astToken.prevNode);
|
|
51
|
-
}
|
|
52
|
-
get nextNode() {
|
|
53
|
-
if (!this._astToken.nextNode) {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
return this.ownerDocument.nodeStore.getNode(this._astToken.nextNode);
|
|
57
|
-
}
|
|
58
|
-
get syntaxicalParentNode() {
|
|
59
|
-
let parentNode = this.parentNode;
|
|
60
|
-
while (parentNode && parentNode.type === 'OmittedElement') {
|
|
61
|
-
parentNode = parentNode.parentNode;
|
|
62
|
-
}
|
|
63
|
-
return parentNode;
|
|
64
|
-
}
|
|
65
|
-
get prevToken() {
|
|
66
|
-
if (tslib_1.__classPrivateFieldGet(this, _MLDOMNode_prevToken, "f") !== undefined) {
|
|
67
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMNode_prevToken, "f");
|
|
68
|
-
}
|
|
69
|
-
let index = -1;
|
|
70
|
-
for (let i = 0; i < this.ownerDocument.nodeList.length; i++) {
|
|
71
|
-
const node = this.ownerDocument.nodeList[i];
|
|
72
|
-
if (!node) {
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (node.type === 'OmittedElement') {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
if (node.uuid === this.uuid) {
|
|
79
|
-
index = i;
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (index === -1) {
|
|
84
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMNode_prevToken, null, "f");
|
|
85
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMNode_prevToken, "f");
|
|
86
|
-
}
|
|
87
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMNode_prevToken, this.ownerDocument.nodeList[index - 1] || null, "f");
|
|
88
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMNode_prevToken, "f");
|
|
89
|
-
}
|
|
90
|
-
get nodeStore() {
|
|
91
|
-
return this.ownerDocument.nodeStore;
|
|
92
|
-
}
|
|
93
|
-
get rule() {
|
|
94
|
-
if (!this.ownerDocument.currentRule) {
|
|
95
|
-
throw new Error('Invalid call.');
|
|
96
|
-
}
|
|
97
|
-
const name = this.ownerDocument.currentRule.name;
|
|
98
|
-
const rule = this.rules[name];
|
|
99
|
-
return this.ownerDocument.currentRule.optimizeOption(rule);
|
|
100
|
-
}
|
|
101
|
-
get textContent() {
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
getParentElement() {
|
|
105
|
-
let parent = this.parentNode;
|
|
106
|
-
if (!parent) {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
while (parent) {
|
|
110
|
-
if (parent.type === 'PSBlock') {
|
|
111
|
-
parent = parent.parentNode;
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
return parent;
|
|
115
|
-
}
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
is(type) {
|
|
119
|
-
return this.type === type;
|
|
120
|
-
}
|
|
121
|
-
toString() {
|
|
122
|
-
return this.raw;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
exports.default = MLDOMNode;
|
|
126
|
-
_MLDOMNode_prevToken = new WeakMap();
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Document } from '../';
|
|
2
|
-
import type { IMLDOMOmittedElement } from '../types';
|
|
3
|
-
import type { MLASTOmittedElement } from '@markuplint/ml-ast';
|
|
4
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
5
|
-
import MLDOMAbstractElement from './abstract-element';
|
|
6
|
-
export default class MLDOMOmittedElement<T extends RuleConfigValue, O = null> extends MLDOMAbstractElement<T, O, MLASTOmittedElement> implements IMLDOMOmittedElement {
|
|
7
|
-
readonly type = "OmittedElement";
|
|
8
|
-
obsolete: boolean;
|
|
9
|
-
constructor(astNode: MLASTOmittedElement, document: Document<T, O>);
|
|
10
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const abstract_element_1 = tslib_1.__importDefault(require("./abstract-element"));
|
|
5
|
-
class MLDOMOmittedElement extends abstract_element_1.default {
|
|
6
|
-
constructor(astNode, document) {
|
|
7
|
-
super(astNode, document);
|
|
8
|
-
this.type = 'OmittedElement';
|
|
9
|
-
this.obsolete = false;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
exports.default = MLDOMOmittedElement;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { MLASTPreprocessorSpecificAttr } from '@markuplint/ml-ast';
|
|
2
|
-
import MLDOMToken from './token';
|
|
3
|
-
export default class MLDOMPreprocessorSpecificAttribute extends MLDOMToken<MLASTPreprocessorSpecificAttr> {
|
|
4
|
-
readonly attrType = "ps-attr";
|
|
5
|
-
readonly potentialName: string;
|
|
6
|
-
readonly potentialValue: string;
|
|
7
|
-
readonly valueType: 'string' | 'number' | 'boolean' | 'code';
|
|
8
|
-
readonly isDuplicatable: boolean;
|
|
9
|
-
constructor(astToken: MLASTPreprocessorSpecificAttr);
|
|
10
|
-
getName(): {
|
|
11
|
-
line: number;
|
|
12
|
-
col: number;
|
|
13
|
-
potential: string;
|
|
14
|
-
raw: string;
|
|
15
|
-
};
|
|
16
|
-
getValue(): {
|
|
17
|
-
line: number;
|
|
18
|
-
col: number;
|
|
19
|
-
potential: string;
|
|
20
|
-
raw: string;
|
|
21
|
-
};
|
|
22
|
-
toString(): string;
|
|
23
|
-
toNormalizeString(): string;
|
|
24
|
-
}
|
|
@@ -1,37 +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 MLDOMPreprocessorSpecificAttribute extends token_1.default {
|
|
6
|
-
constructor(astToken) {
|
|
7
|
-
super(astToken);
|
|
8
|
-
this.attrType = 'ps-attr';
|
|
9
|
-
this.potentialName = astToken.potentialName;
|
|
10
|
-
this.potentialValue = astToken.potentialValue;
|
|
11
|
-
this.valueType = astToken.valueType;
|
|
12
|
-
this.isDuplicatable = astToken.isDuplicatable;
|
|
13
|
-
}
|
|
14
|
-
getName() {
|
|
15
|
-
return {
|
|
16
|
-
line: this.startLine,
|
|
17
|
-
col: this.startCol,
|
|
18
|
-
potential: this.potentialName.toLowerCase(),
|
|
19
|
-
raw: this.raw,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
getValue() {
|
|
23
|
-
return {
|
|
24
|
-
line: this.startLine,
|
|
25
|
-
col: this.startCol,
|
|
26
|
-
potential: this.potentialValue,
|
|
27
|
-
raw: this.raw,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
toString() {
|
|
31
|
-
return this.raw;
|
|
32
|
-
}
|
|
33
|
-
toNormalizeString() {
|
|
34
|
-
return this.raw;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
exports.default = MLDOMPreprocessorSpecificAttribute;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { AnonymousNode, Document } from '../';
|
|
2
|
-
import type { IMLDOMPreprocessorSpecificBlock } from '../types';
|
|
3
|
-
import type { MLASTPreprocessorSpecificBlock } from '@markuplint/ml-ast';
|
|
4
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
5
|
-
import MLDOMNode from './node';
|
|
6
|
-
export default class MLDOMPreprocessorSpecificBlock<T extends RuleConfigValue, O = null> extends MLDOMNode<T, O, MLASTPreprocessorSpecificBlock> implements IMLDOMPreprocessorSpecificBlock {
|
|
7
|
-
readonly type = "PSBlock";
|
|
8
|
-
readonly nodeName: string;
|
|
9
|
-
constructor(astNode: MLASTPreprocessorSpecificBlock, document: Document<T, O>);
|
|
10
|
-
get childNodes(): AnonymousNode<T, O>[];
|
|
11
|
-
}
|
|
@@ -1,16 +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 MLDOMPreprocessorSpecificBlock extends node_1.default {
|
|
6
|
-
constructor(astNode, document) {
|
|
7
|
-
super(astNode, document);
|
|
8
|
-
this.type = 'PSBlock';
|
|
9
|
-
this.nodeName = astNode.nodeName;
|
|
10
|
-
}
|
|
11
|
-
get childNodes() {
|
|
12
|
-
const astChildren = this._astToken.childNodes || [];
|
|
13
|
-
return astChildren.map(node => this.nodeStore.getNode(node));
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.default = MLDOMPreprocessorSpecificBlock;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Document } from '../';
|
|
2
|
-
import type { IMLDOMText } from '../types';
|
|
3
|
-
import type { MLASTText } from '@markuplint/ml-ast';
|
|
4
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
5
|
-
import type { ContentModel } from '@markuplint/ml-spec';
|
|
6
|
-
import MLDOMNode from './node';
|
|
7
|
-
export default class MLDOMText<T extends RuleConfigValue, O = null> extends MLDOMNode<T, O, MLASTText> implements IMLDOMText {
|
|
8
|
-
readonly nodeType = 3;
|
|
9
|
-
readonly type = "Text";
|
|
10
|
-
readonly isRawText: boolean;
|
|
11
|
-
readonly ownModels: Set<ContentModel>;
|
|
12
|
-
constructor(astNode: MLASTText, document: Document<T, O>);
|
|
13
|
-
get textContent(): string;
|
|
14
|
-
isWhitespace(): boolean;
|
|
15
|
-
}
|
|
@@ -1,26 +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
|
-
/**
|
|
6
|
-
* Raw text elements
|
|
7
|
-
*
|
|
8
|
-
* @see https://html.spec.whatwg.org/multipage/syntax.html#raw-text-elements
|
|
9
|
-
*/
|
|
10
|
-
const rawTextElements = ['script', 'style'];
|
|
11
|
-
class MLDOMText extends node_1.default {
|
|
12
|
-
constructor(astNode, document) {
|
|
13
|
-
super(astNode, document);
|
|
14
|
-
this.nodeType = 3;
|
|
15
|
-
this.type = 'Text';
|
|
16
|
-
this.ownModels = new Set();
|
|
17
|
-
this.isRawText = this.parentNode ? rawTextElements.includes(this.parentNode.nodeName.toLowerCase()) : false;
|
|
18
|
-
}
|
|
19
|
-
get textContent() {
|
|
20
|
-
return this.raw;
|
|
21
|
-
}
|
|
22
|
-
isWhitespace() {
|
|
23
|
-
return /^\s+$/.test(this.raw);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.default = MLDOMText;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { MLToken } from '@markuplint/ml-ast';
|
|
2
|
-
export default class MLDOMToken<A extends MLToken> {
|
|
3
|
-
#private;
|
|
4
|
-
readonly uuid: string;
|
|
5
|
-
protected readonly _astToken: A;
|
|
6
|
-
constructor(astToken: A);
|
|
7
|
-
get originRaw(): string;
|
|
8
|
-
get raw(): string;
|
|
9
|
-
get startOffset(): number;
|
|
10
|
-
get endOffset(): number;
|
|
11
|
-
get startLine(): number;
|
|
12
|
-
get endLine(): number;
|
|
13
|
-
get startCol(): number;
|
|
14
|
-
get endCol(): number;
|
|
15
|
-
fix(raw: string): void;
|
|
16
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _MLDOMToken_startLine, _MLDOMToken_endLine, _MLDOMToken_startCol, _MLDOMToken_endCol, _MLDOMToken_startOffset, _MLDOMToken_endOffset, _MLDOMToken_raw, _MLDOMToken_fixed;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
class MLDOMToken {
|
|
6
|
-
constructor(astToken) {
|
|
7
|
-
_MLDOMToken_startLine.set(this, void 0);
|
|
8
|
-
_MLDOMToken_endLine.set(this, void 0);
|
|
9
|
-
_MLDOMToken_startCol.set(this, void 0);
|
|
10
|
-
_MLDOMToken_endCol.set(this, void 0);
|
|
11
|
-
_MLDOMToken_startOffset.set(this, void 0);
|
|
12
|
-
_MLDOMToken_endOffset.set(this, void 0);
|
|
13
|
-
_MLDOMToken_raw.set(this, void 0);
|
|
14
|
-
_MLDOMToken_fixed.set(this, void 0);
|
|
15
|
-
this._astToken = astToken;
|
|
16
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_raw, astToken.raw, "f");
|
|
17
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_fixed, astToken.raw, "f");
|
|
18
|
-
this.uuid = astToken.uuid;
|
|
19
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_startLine, astToken.startLine, "f");
|
|
20
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_endLine, astToken.endLine, "f");
|
|
21
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_startCol, astToken.startCol, "f");
|
|
22
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_endCol, astToken.endCol, "f");
|
|
23
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_startOffset, astToken.startOffset, "f");
|
|
24
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_endOffset, astToken.endOffset, "f");
|
|
25
|
-
}
|
|
26
|
-
get originRaw() {
|
|
27
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMToken_raw, "f");
|
|
28
|
-
}
|
|
29
|
-
get raw() {
|
|
30
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMToken_fixed, "f");
|
|
31
|
-
}
|
|
32
|
-
get startOffset() {
|
|
33
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMToken_startOffset, "f");
|
|
34
|
-
}
|
|
35
|
-
get endOffset() {
|
|
36
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMToken_endOffset, "f");
|
|
37
|
-
}
|
|
38
|
-
get startLine() {
|
|
39
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMToken_startLine, "f");
|
|
40
|
-
}
|
|
41
|
-
get endLine() {
|
|
42
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMToken_endLine, "f");
|
|
43
|
-
}
|
|
44
|
-
get startCol() {
|
|
45
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMToken_startCol, "f");
|
|
46
|
-
}
|
|
47
|
-
get endCol() {
|
|
48
|
-
return tslib_1.__classPrivateFieldGet(this, _MLDOMToken_endCol, "f");
|
|
49
|
-
}
|
|
50
|
-
fix(raw) {
|
|
51
|
-
tslib_1.__classPrivateFieldSet(this, _MLDOMToken_fixed, raw, "f");
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.default = MLDOMToken;
|
|
55
|
-
_MLDOMToken_startLine = new WeakMap(), _MLDOMToken_endLine = new WeakMap(), _MLDOMToken_startCol = new WeakMap(), _MLDOMToken_endCol = new WeakMap(), _MLDOMToken_startOffset = new WeakMap(), _MLDOMToken_endOffset = new WeakMap(), _MLDOMToken_raw = new WeakMap(), _MLDOMToken_fixed = new WeakMap();
|
package/lib/ml-dom/types.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { MLDOMComment, MLDOMDoctype, MLDOMElement, MLDOMElementCloseTag, MLDOMOmittedElement, MLDOMPreprocessorSpecificBlock, MLDOMText } from './tokens';
|
|
2
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
3
|
-
export interface IMLDOMDoctype extends IMLDOMNode {
|
|
4
|
-
type: 'Doctype';
|
|
5
|
-
}
|
|
6
|
-
export interface IMLDOMElement extends IMLDOMNode {
|
|
7
|
-
type: 'Element';
|
|
8
|
-
}
|
|
9
|
-
export interface IMLDOMElementCloseTag extends IMLDOMNode {
|
|
10
|
-
type: 'ElementCloseTag';
|
|
11
|
-
}
|
|
12
|
-
export interface IMLDOMOmittedElement extends IMLDOMNode {
|
|
13
|
-
type: 'OmittedElement';
|
|
14
|
-
}
|
|
15
|
-
export interface IMLDOMComment extends IMLDOMNode {
|
|
16
|
-
type: 'Comment';
|
|
17
|
-
}
|
|
18
|
-
export interface IMLDOMText extends IMLDOMNode {
|
|
19
|
-
type: 'Text';
|
|
20
|
-
}
|
|
21
|
-
export interface IMLDOMPreprocessorSpecificBlock extends IMLDOMNode {
|
|
22
|
-
type: 'PSBlock';
|
|
23
|
-
}
|
|
24
|
-
export interface IMLDOMNode {
|
|
25
|
-
}
|
|
26
|
-
export declare type AnonymousNode<T extends RuleConfigValue, O = null> = MLDOMDoctype<T, O> | MLDOMElement<T, O> | MLDOMElementCloseTag<T, O> | MLDOMOmittedElement<T, O> | MLDOMComment<T, O> | MLDOMPreprocessorSpecificBlock<T, O> | MLDOMText<T, O>;
|
|
27
|
-
export declare type NodeType = 'Doctype' | 'Element' | 'ElementCloseTag' | 'OmittedElement' | 'Comment' | 'Text' | 'Node' | 'PSBlock';
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"rules": {
|
|
3
|
-
"attr-duplication": true,
|
|
4
|
-
"attr-equal-space-after": false,
|
|
5
|
-
"attr-equal-space-before": false,
|
|
6
|
-
"attr-spacing": false,
|
|
7
|
-
"attr-value-quotes": false,
|
|
8
|
-
"case-sensitive-attr-name": false,
|
|
9
|
-
"case-sensitive-tag-name": false,
|
|
10
|
-
"character-reference": true,
|
|
11
|
-
"class-naming": false,
|
|
12
|
-
"deprecated-attr": true,
|
|
13
|
-
"deprecated-element": true,
|
|
14
|
-
"disallowed-element": ["hgroup"],
|
|
15
|
-
"doctype": true,
|
|
16
|
-
"end-tag": false,
|
|
17
|
-
"id-duplication": true,
|
|
18
|
-
"indentation": false,
|
|
19
|
-
"ineffective-attr": true,
|
|
20
|
-
"invalid-attr": {
|
|
21
|
-
"option": {
|
|
22
|
-
"attrs": {
|
|
23
|
-
"autofocus": {
|
|
24
|
-
"disallowed": true
|
|
25
|
-
},
|
|
26
|
-
"accesskey": {
|
|
27
|
-
"disallowed": true
|
|
28
|
-
},
|
|
29
|
-
"tabindex": {
|
|
30
|
-
"enum": ["-1", "0"]
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
"landmark-roles": true,
|
|
36
|
-
"no-boolean-attr-value": true,
|
|
37
|
-
"no-default-value": false,
|
|
38
|
-
"no-hard-code-id": false,
|
|
39
|
-
"no-refer-to-non-existent-id": true,
|
|
40
|
-
"no-use-event-handler-attr": false,
|
|
41
|
-
"permitted-contents": true,
|
|
42
|
-
"require-accessible-name": true,
|
|
43
|
-
"required-attr": true,
|
|
44
|
-
"required-element": false,
|
|
45
|
-
"required-h1": true,
|
|
46
|
-
"use-list": false,
|
|
47
|
-
"wai-aria": true
|
|
48
|
-
},
|
|
49
|
-
"nodeRules": [
|
|
50
|
-
{
|
|
51
|
-
"selector": ":where(html)",
|
|
52
|
-
"rules": {
|
|
53
|
-
"required-attr": ["lang"]
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"selector": ":where(head)",
|
|
58
|
-
"rules": {
|
|
59
|
-
"required-element": ["meta[charset=\"UTF-8\" i]"]
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"selector": ":where(meta[property])",
|
|
64
|
-
"rules": {
|
|
65
|
-
"invalid-attr": {
|
|
66
|
-
"option": {
|
|
67
|
-
"attrs": {
|
|
68
|
-
"property": {
|
|
69
|
-
"pattern": "/^og:[a-z_]+/"
|
|
70
|
-
},
|
|
71
|
-
"content": {
|
|
72
|
-
"type": "NoEmptyAny"
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
"required-attr": false
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"selector": ":where(meta[itemprop])",
|
|
82
|
-
"rules": {
|
|
83
|
-
"invalid-attr": {
|
|
84
|
-
"option": {
|
|
85
|
-
"attrs": {
|
|
86
|
-
"content": {
|
|
87
|
-
"type": "NoEmptyAny"
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"selector": ":where(script[src]:not([type=module]))",
|
|
96
|
-
"rules": {
|
|
97
|
-
"required-attr": ["defer"]
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"selector": "h1, h2, h3, h4, h5, h6",
|
|
102
|
-
"rules": {
|
|
103
|
-
"disallowed-element": {
|
|
104
|
-
"value": ["small"],
|
|
105
|
-
"reason": "The small element must not be used for subheadings. https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-small-element"
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"selector": ":where(img)",
|
|
111
|
-
"rules": {
|
|
112
|
-
"required-attr": [
|
|
113
|
-
"width",
|
|
114
|
-
"height",
|
|
115
|
-
"alt",
|
|
116
|
-
{
|
|
117
|
-
"name": "decoding",
|
|
118
|
-
"value": "async"
|
|
119
|
-
}
|
|
120
|
-
]
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
"selector": ":where(iframe)",
|
|
125
|
-
"rules": {
|
|
126
|
-
"required-attr": [
|
|
127
|
-
"title",
|
|
128
|
-
{
|
|
129
|
-
"name": "loading",
|
|
130
|
-
"value": "lazy"
|
|
131
|
-
}
|
|
132
|
-
]
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"selector": ":where(a[target=_blank], area[target=_blank])",
|
|
137
|
-
"rules": {
|
|
138
|
-
"required-attr": {
|
|
139
|
-
"value": [
|
|
140
|
-
{
|
|
141
|
-
"name": "rel",
|
|
142
|
-
"value": "/(?<![^\\s]+)noreferrer(?![^\\s]+)/"
|
|
143
|
-
}
|
|
144
|
-
],
|
|
145
|
-
"reason": "The \"rel\" attribute should be required with \"noreferrer\" if the \"a\" element has the \"target=_blank\""
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
"selector": ":where(abbr)",
|
|
151
|
-
"rules": {
|
|
152
|
-
"required-attr": ["title"]
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"selector": ":where(video, audio)",
|
|
157
|
-
"rules": {
|
|
158
|
-
"required-element": ["track"]
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"selector": ":where(video[autoplay])",
|
|
163
|
-
"rules": {
|
|
164
|
-
"required-attr": ["muted"]
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
"selector": ":where(th, td)",
|
|
169
|
-
"rules": {
|
|
170
|
-
"invalid-attr": {
|
|
171
|
-
"option": {
|
|
172
|
-
"attrs": {
|
|
173
|
-
"span": {
|
|
174
|
-
"disallowed": false
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
"selector": ":where(body :not(button))",
|
|
183
|
-
"rules": {
|
|
184
|
-
"invalid-attr": {
|
|
185
|
-
"option": {
|
|
186
|
-
"attrs": {
|
|
187
|
-
"onclick": {
|
|
188
|
-
"disallowed": false
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
]
|
|
196
|
-
}
|