@markuplint/ml-core 3.0.0-alpha.66 → 3.0.0-dev.176
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/lib/configs.browser.d.ts +2 -0
- package/lib/configs.browser.js +12 -0
- package/lib/configs.js +4 -1
- package/lib/index.d.ts +11 -1
- package/lib/ml-core.d.ts +24 -13
- package/lib/ml-core.js +16 -10
- package/lib/ml-dom/helper/accname.d.ts +2 -1
- package/lib/ml-dom/helper/accname.js +62 -2
- package/lib/ml-dom/helper/create-node.d.ts +7 -3
- package/lib/ml-dom/helper/create-node.js +4 -2
- package/lib/ml-dom/helper/debug.js +10 -5
- 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/index.d.ts +1 -0
- 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 +26 -16
- 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 +61 -54
- 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 +24 -21
- 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 +1608 -1545
- package/lib/ml-dom/node/document.js +125 -33
- package/lib/ml-dom/node/dom-token-list.d.ts +27 -27
- package/lib/ml-dom/node/dom-token-list.js +15 -13
- package/lib/ml-dom/node/element.d.ts +1906 -1817
- package/lib/ml-dom/node/element.js +345 -75
- 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 +10 -5
- package/lib/ml-dom/node/node-store.js +19 -1
- package/lib/ml-dom/node/node.d.ts +494 -467
- package/lib/ml-dom/node/node.js +89 -47
- package/lib/ml-dom/node/parent-node.d.ts +68 -59
- package/lib/ml-dom/node/parent-node.js +15 -6
- package/lib/ml-dom/node/rule-mapper.d.ts +9 -9
- 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 +94 -16
- 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 -49
- package/lib/ml-rule/ml-rule-context.js +23 -4
- package/lib/ml-rule/ml-rule.d.ts +36 -26
- package/lib/ml-rule/ml-rule.js +39 -34
- package/lib/ml-rule/types.d.ts +35 -17
- package/lib/plugin/plugin.d.ts +3 -1
- package/lib/plugin/types.d.ts +9 -9
- package/lib/ruleset/index.d.ts +4 -4
- package/lib/ruleset/index.js +4 -4
- package/lib/test/index.d.ts +21 -8
- package/lib/test/index.js +6 -4
- package/lib/types.d.ts +12 -10
- 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/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
- package/tsconfig.test.json +0 -3
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -1,42 +1,47 @@
|
|
|
1
1
|
import type { MLAttr } from './attr';
|
|
2
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
3
|
-
export declare class MLNamedNodeMap<T extends RuleConfigValue, O
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
2
|
+
import type { PlainData, RuleConfigValue } from '@markuplint/ml-config';
|
|
3
|
+
export declare class MLNamedNodeMap<T extends RuleConfigValue, O extends PlainData = undefined>
|
|
4
|
+
extends Array<MLAttr<T, O>>
|
|
5
|
+
implements NamedNodeMap
|
|
6
|
+
{
|
|
7
|
+
getNamedItem(qualifiedName: string): MLAttr<T, O> | null;
|
|
8
|
+
/**
|
|
9
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
10
|
+
*
|
|
11
|
+
* @unsupported
|
|
12
|
+
* @implements DOM API: `NamedNodeMap`
|
|
13
|
+
*/
|
|
14
|
+
getNamedItemNS(namespace: string | null, localName: string): Attr | null;
|
|
15
|
+
item(index: number): MLAttr<T, O> | null;
|
|
16
|
+
/**
|
|
17
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
18
|
+
*
|
|
19
|
+
* @unsupported
|
|
20
|
+
* @implements DOM API: `NamedNodeMap`
|
|
21
|
+
*/
|
|
22
|
+
removeNamedItem(qualifiedName: string): MLAttr<T, O>;
|
|
23
|
+
/**
|
|
24
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
25
|
+
*
|
|
26
|
+
* @unsupported
|
|
27
|
+
* @implements DOM API: `NamedNodeMap`
|
|
28
|
+
*/
|
|
29
|
+
removeNamedItemNS(namespace: string | null, localName: string): MLAttr<T, O>;
|
|
30
|
+
/**
|
|
31
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
32
|
+
*
|
|
33
|
+
* @unsupported
|
|
34
|
+
* @implements DOM API: `NamedNodeMap`
|
|
35
|
+
*/
|
|
36
|
+
setNamedItem(attr: MLAttr<T, O>): MLAttr<T, O> | null;
|
|
37
|
+
/**
|
|
38
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
39
|
+
*
|
|
40
|
+
* @unsupported
|
|
41
|
+
* @implements DOM API: `NamedNodeMap`
|
|
42
|
+
*/
|
|
43
|
+
setNamedItemNS(attr: MLAttr<T, O>): MLAttr<T, O> | null;
|
|
41
44
|
}
|
|
42
|
-
export declare function toNamedNodeMap<T extends RuleConfigValue, O =
|
|
45
|
+
export declare function toNamedNodeMap<T extends RuleConfigValue, O extends PlainData = undefined>(
|
|
46
|
+
nodes: ReadonlyArray<MLAttr<T, O>>,
|
|
47
|
+
): MLNamedNodeMap<T, O>;
|
|
@@ -5,7 +5,8 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const unexpected_call_error_1 = tslib_1.__importDefault(require("./unexpected-call-error"));
|
|
6
6
|
class MLNamedNodeMap extends Array {
|
|
7
7
|
getNamedItem(qualifiedName) {
|
|
8
|
-
|
|
8
|
+
var _a;
|
|
9
|
+
return (_a = this.find(attr => attr.name === qualifiedName)) !== null && _a !== void 0 ? _a : null;
|
|
9
10
|
}
|
|
10
11
|
/**
|
|
11
12
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
@@ -17,7 +18,8 @@ class MLNamedNodeMap extends Array {
|
|
|
17
18
|
throw new unexpected_call_error_1.default('Not supported "getNamedItemNS" method');
|
|
18
19
|
}
|
|
19
20
|
item(index) {
|
|
20
|
-
|
|
21
|
+
var _a;
|
|
22
|
+
return (_a = this[index]) !== null && _a !== void 0 ? _a : null;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
@@ -43,7 +45,9 @@ class MLNamedNodeMap extends Array {
|
|
|
43
45
|
* @unsupported
|
|
44
46
|
* @implements DOM API: `NamedNodeMap`
|
|
45
47
|
*/
|
|
46
|
-
setNamedItem(
|
|
48
|
+
setNamedItem(
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
50
|
+
attr) {
|
|
47
51
|
throw new unexpected_call_error_1.default('Not supported "setNamedItem" method');
|
|
48
52
|
}
|
|
49
53
|
/**
|
|
@@ -52,12 +56,16 @@ class MLNamedNodeMap extends Array {
|
|
|
52
56
|
* @unsupported
|
|
53
57
|
* @implements DOM API: `NamedNodeMap`
|
|
54
58
|
*/
|
|
55
|
-
setNamedItemNS(
|
|
59
|
+
setNamedItemNS(
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
61
|
+
attr) {
|
|
56
62
|
throw new unexpected_call_error_1.default('Not supported "setNamedItemNS" method');
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
65
|
exports.MLNamedNodeMap = MLNamedNodeMap;
|
|
60
|
-
function toNamedNodeMap(
|
|
66
|
+
function toNamedNodeMap(
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
68
|
+
nodes) {
|
|
61
69
|
const namedNodeMap = new MLNamedNodeMap(...nodes);
|
|
62
70
|
return namedNodeMap;
|
|
63
71
|
}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { MLChildNode } from './child-node';
|
|
2
2
|
import type { MLElement } from './element';
|
|
3
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
4
|
-
export declare function toNodeList<T extends RuleConfigValue, O extends
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import type { PlainData, RuleConfigValue } from '@markuplint/ml-config';
|
|
4
|
+
export declare function toNodeList<T extends RuleConfigValue, O extends PlainData, N extends MLChildNode<T, O>>(
|
|
5
|
+
nodes: ReadonlyArray<N>,
|
|
6
|
+
): NodeListOf<N>;
|
|
7
|
+
export declare function toHTMLCollection<T extends RuleConfigValue, O extends PlainData = undefined>(
|
|
8
|
+
nodes: ReadonlyArray<MLElement<T, O>>,
|
|
9
|
+
): HTMLCollectionOf<MLElement<T, O>>;
|
|
10
|
+
export declare function nodeListToHTMLCollection<T extends RuleConfigValue, O extends PlainData = undefined>(
|
|
11
|
+
nodeList: NodeListOf<MLChildNode<T, O>>,
|
|
12
|
+
): HTMLCollectionOf<MLElement<T, O>>;
|
|
@@ -6,7 +6,21 @@ class MLNodeList extends Array {
|
|
|
6
6
|
return super.forEach.bind(this)((v, k) => callbackfn(v, k, thisArg !== null && thisArg !== void 0 ? thisArg : this));
|
|
7
7
|
}
|
|
8
8
|
item(index) {
|
|
9
|
-
|
|
9
|
+
const node = this[index];
|
|
10
|
+
if (!node) {
|
|
11
|
+
/**
|
|
12
|
+
* ⚠ TYPE CONTRADICTION
|
|
13
|
+
*
|
|
14
|
+
* It throws an error because it should return null but the `item` method of `NodeListOf` doesn't return null in the type definition of TypeScript.
|
|
15
|
+
*
|
|
16
|
+
* @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-844377136
|
|
17
|
+
*
|
|
18
|
+
* > item
|
|
19
|
+
* > Returns the index-th item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.
|
|
20
|
+
*/
|
|
21
|
+
throw new ReferenceError('Invalid index');
|
|
22
|
+
}
|
|
23
|
+
return node;
|
|
10
24
|
}
|
|
11
25
|
}
|
|
12
26
|
function toNodeList(nodes) {
|
|
@@ -16,18 +30,24 @@ function toNodeList(nodes) {
|
|
|
16
30
|
exports.toNodeList = toNodeList;
|
|
17
31
|
class MLHTMLCollection extends Array {
|
|
18
32
|
item(index) {
|
|
19
|
-
|
|
33
|
+
var _a;
|
|
34
|
+
return (_a = this[index]) !== null && _a !== void 0 ? _a : null;
|
|
20
35
|
}
|
|
21
36
|
namedItem(name) {
|
|
22
|
-
|
|
37
|
+
var _a;
|
|
38
|
+
return (_a = this.find(el => el.getAttribute('name') === name)) !== null && _a !== void 0 ? _a : null;
|
|
23
39
|
}
|
|
24
40
|
}
|
|
25
|
-
function toHTMLCollection(
|
|
41
|
+
function toHTMLCollection(
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
43
|
+
nodes) {
|
|
26
44
|
const collection = new MLHTMLCollection(...nodes);
|
|
27
45
|
return collection;
|
|
28
46
|
}
|
|
29
47
|
exports.toHTMLCollection = toHTMLCollection;
|
|
30
|
-
function nodeListToHTMLCollection(
|
|
48
|
+
function nodeListToHTMLCollection(
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
50
|
+
nodeList) {
|
|
31
51
|
const collection = new MLHTMLCollection();
|
|
32
52
|
nodeList.forEach(node => {
|
|
33
53
|
if (node.is(node.ELEMENT_NODE)) {
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { MLNode } from './node';
|
|
2
2
|
import type { MappedNode } from './types';
|
|
3
|
-
import type {
|
|
4
|
-
import type { RuleConfigValue } from '@markuplint/ml-config';
|
|
3
|
+
import type { MLASTAbstractNode } from '@markuplint/ml-ast';
|
|
4
|
+
import type { PlainData, RuleConfigValue } from '@markuplint/ml-config';
|
|
5
5
|
declare class NodeStore {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
#private;
|
|
7
|
+
getNode<N extends MLASTAbstractNode, T extends RuleConfigValue, O extends PlainData = undefined>(
|
|
8
|
+
astNode: N,
|
|
9
|
+
): MappedNode<N, T, O>;
|
|
10
|
+
setNode<A extends MLASTAbstractNode, T extends RuleConfigValue, O extends PlainData = undefined>(
|
|
11
|
+
astNode: A,
|
|
12
|
+
node: MLNode<T, O, A>,
|
|
13
|
+
): void;
|
|
9
14
|
}
|
|
10
15
|
/**
|
|
11
16
|
* `NodeStore` Singleton
|
|
@@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.nodeStore = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const parser_utils_1 = require("@markuplint/parser-utils");
|
|
7
|
+
const debug_1 = require("../../debug");
|
|
8
|
+
const nodeStoreLog = debug_1.log.extend('node-store');
|
|
9
|
+
const nodeStoreError = nodeStoreLog.extend('error');
|
|
7
10
|
class NodeStore {
|
|
8
11
|
constructor() {
|
|
9
12
|
_NodeStore_store.set(this, new Map());
|
|
@@ -12,6 +15,11 @@ class NodeStore {
|
|
|
12
15
|
// console.log(`Get: ${astNode.uuid} -> ${astNode.raw.trim()}(${astNode.type})`);
|
|
13
16
|
const node = tslib_1.__classPrivateFieldGet(this, _NodeStore_store, "f").get(astNode.uuid);
|
|
14
17
|
if (!node) {
|
|
18
|
+
nodeStoreError('Ref ID: %s (%s: "%s")', astNode.uuid, astNode.nodeName, astNode.raw);
|
|
19
|
+
nodeStoreError('Map: %O', Array.from(tslib_1.__classPrivateFieldGet(this, _NodeStore_store, "f").entries()).map(([id, node]) => ({
|
|
20
|
+
id,
|
|
21
|
+
name: node.nodeName,
|
|
22
|
+
})));
|
|
15
23
|
throw new parser_utils_1.ParserError('Broke mapping nodes.', {
|
|
16
24
|
line: astNode.startLine,
|
|
17
25
|
col: astNode.startCol,
|
|
@@ -21,7 +29,17 @@ class NodeStore {
|
|
|
21
29
|
}
|
|
22
30
|
return node;
|
|
23
31
|
}
|
|
24
|
-
setNode(astNode,
|
|
32
|
+
setNode(astNode,
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
34
|
+
node) {
|
|
35
|
+
if (node.is(node.DOCUMENT_NODE)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!astNode.uuid) {
|
|
39
|
+
nodeStoreError('UUID is invalid: %s (%s: "%s")', astNode.uuid, astNode.nodeName, astNode.raw);
|
|
40
|
+
nodeStoreError('Invalid node: %O', node);
|
|
41
|
+
}
|
|
42
|
+
nodeStoreLog('Mapped: %s (%s: "%s")', astNode.uuid, astNode.nodeName, astNode.raw.replace(/\n/g, '⏎').replace(/\t/g, '→'));
|
|
25
43
|
tslib_1.__classPrivateFieldGet(this, _NodeStore_store, "f").set(astNode.uuid, node);
|
|
26
44
|
}
|
|
27
45
|
}
|