@markuplint/ml-core 3.15.0 → 4.0.0-alpha.10
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/LICENSE +1 -1
- package/lib/configs.browser.js +11 -11
- package/lib/convert-ruleset.d.ts +1 -1
- package/lib/convert-ruleset.js +3 -8
- package/lib/debug.js +9 -14
- package/lib/index.d.ts +13 -23
- package/lib/index.js +12 -29
- package/lib/ml-core.d.ts +5 -5
- package/lib/ml-core.js +94 -76
- package/lib/ml-dom/helper/accname.d.ts +1 -1
- package/lib/ml-dom/helper/accname.js +12 -19
- package/lib/ml-dom/helper/create-node.d.ts +4 -8
- package/lib/ml-dom/helper/create-node.js +38 -17
- package/lib/ml-dom/helper/debug.d.ts +1 -1
- package/lib/ml-dom/helper/debug.js +13 -22
- package/lib/ml-dom/helper/get-indent.d.ts +18 -0
- package/lib/ml-dom/helper/get-indent.js +112 -0
- package/lib/ml-dom/helper/walkers.d.ts +5 -15
- package/lib/ml-dom/helper/walkers.js +3 -8
- package/lib/ml-dom/index.d.ts +9 -9
- package/lib/ml-dom/index.js +1 -5
- package/lib/ml-dom/manipulations/child-node-methods.d.ts +7 -20
- package/lib/ml-dom/manipulations/child-node-methods.js +13 -25
- package/lib/ml-dom/manipulations/get-children.d.ts +3 -5
- package/lib/ml-dom/manipulations/get-children.js +3 -7
- package/lib/ml-dom/node/attr.d.ts +113 -98
- package/lib/ml-dom/node/attr.js +93 -50
- package/lib/ml-dom/node/block.d.ts +35 -39
- package/lib/ml-dom/node/block.js +8 -14
- package/lib/ml-dom/node/character-data.d.ts +55 -62
- package/lib/ml-dom/node/character-data.js +11 -16
- package/lib/ml-dom/node/child-node.d.ts +8 -15
- package/lib/ml-dom/node/child-node.js +1 -5
- package/lib/ml-dom/node/comment.d.ts +14 -17
- package/lib/ml-dom/node/comment.js +2 -6
- package/lib/ml-dom/node/document-fragment.d.ts +22 -25
- package/lib/ml-dom/node/document-fragment.js +4 -9
- package/lib/ml-dom/node/document-type.d.ts +35 -38
- package/lib/ml-dom/node/document-type.js +8 -14
- package/lib/ml-dom/node/document.d.ts +1598 -1614
- package/lib/ml-dom/node/document.js +330 -275
- package/lib/ml-dom/node/dom-token-list.d.ts +27 -27
- package/lib/ml-dom/node/dom-token-list.js +36 -32
- package/lib/ml-dom/node/element-close-tag.d.ts +20 -0
- package/lib/ml-dom/node/element-close-tag.js +39 -0
- package/lib/ml-dom/node/element.d.ts +1957 -1951
- package/lib/ml-dom/node/element.js +364 -348
- package/lib/ml-dom/node/named-node-map.d.ts +40 -45
- package/lib/ml-dom/node/named-node-map.js +10 -18
- package/lib/ml-dom/node/node-list.d.ts +5 -11
- package/lib/ml-dom/node/node-list.js +8 -16
- package/lib/ml-dom/node/node-store.d.ts +6 -11
- package/lib/ml-dom/node/node-store.js +14 -13
- package/lib/ml-dom/node/node.d.ts +480 -500
- package/lib/ml-dom/node/node.js +83 -73
- package/lib/ml-dom/node/parent-node.d.ts +60 -69
- package/lib/ml-dom/node/parent-node.js +32 -29
- package/lib/ml-dom/node/rule-mapper.d.ts +9 -9
- package/lib/ml-dom/node/rule-mapper.js +26 -21
- package/lib/ml-dom/node/text.d.ts +48 -51
- package/lib/ml-dom/node/text.js +8 -13
- package/lib/ml-dom/node/types.d.ts +42 -90
- package/lib/ml-dom/node/types.js +1 -2
- package/lib/ml-dom/node/unexpected-call-error.d.ts +2 -1
- package/lib/ml-dom/node/unexpected-call-error.js +1 -4
- package/lib/ml-dom/token/token.d.ts +45 -45
- package/lib/ml-dom/token/token.js +32 -26
- package/lib/ml-rule/create-rule.d.ts +2 -4
- package/lib/ml-rule/create-rule.js +1 -5
- package/lib/ml-rule/create-test-rule.d.ts +5 -7
- package/lib/ml-rule/create-test-rule.js +3 -7
- package/lib/ml-rule/index.d.ts +3 -3
- package/lib/ml-rule/index.js +3 -6
- package/lib/ml-rule/ml-rule-context.d.ts +49 -57
- package/lib/ml-rule/ml-rule-context.js +11 -11
- package/lib/ml-rule/ml-rule.d.ts +26 -36
- package/lib/ml-rule/ml-rule.js +34 -31
- package/lib/ml-rule/types.d.ts +18 -33
- package/lib/ml-rule/types.js +1 -2
- package/lib/plugin/index.d.ts +2 -2
- package/lib/plugin/index.js +2 -5
- package/lib/plugin/plugin.d.ts +2 -4
- package/lib/plugin/plugin.js +1 -5
- package/lib/plugin/types.d.ts +6 -6
- package/lib/plugin/types.js +1 -2
- package/lib/ruleset/index.d.ts +5 -5
- package/lib/ruleset/index.js +4 -8
- package/lib/test/index.d.ts +11 -21
- package/lib/test/index.js +18 -24
- package/lib/types.d.ts +11 -11
- package/lib/types.js +1 -2
- package/lib/utils/get-location-from-chars.d.ts +4 -9
- package/lib/utils/get-location-from-chars.js +4 -8
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +1 -5
- package/lib/utils/string-splice.js +1 -5
- package/package.json +19 -15
- package/lib/configs.d.ts +0 -2
- package/lib/configs.js +0 -34
- package/lib/ml-dom/helper/getIndent.d.ts +0 -18
- package/lib/ml-dom/helper/getIndent.js +0 -106
- package/test/ml-dom/helper/accname.spec.js +0 -85
- package/test/ml-dom/helper/create-node.spec.js +0 -18
- package/test/ml-dom/index.spec.js +0 -680
- package/test/ml-dom/ml-rule/create-rule.spec.js +0 -108
package/LICENSE
CHANGED
package/lib/configs.browser.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
export async function getPreset(name) {
|
|
2
|
+
const res = await fetch(`@markuplint/config-presets/preset.${name}.json`).catch(
|
|
3
|
+
() =>
|
|
4
|
+
// eslint-disable-next-line unicorn/error-message
|
|
5
|
+
new Error(),
|
|
6
|
+
);
|
|
7
|
+
if (res instanceof Error) {
|
|
8
|
+
throw new ReferenceError(`Preset markuplint:${name} is not found`);
|
|
9
|
+
}
|
|
10
|
+
const json = await res.json();
|
|
11
|
+
return json;
|
|
11
12
|
}
|
|
12
|
-
exports.getPreset = getPreset;
|
package/lib/convert-ruleset.d.ts
CHANGED
package/lib/convert-ruleset.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const ruleset_1 = tslib_1.__importDefault(require("./ruleset"));
|
|
6
|
-
function convertRuleset(config = {}) {
|
|
7
|
-
return new ruleset_1.default(config);
|
|
1
|
+
import { Ruleset } from './ruleset/index.js';
|
|
2
|
+
export function convertRuleset(config = {}) {
|
|
3
|
+
return new Ruleset(config);
|
|
8
4
|
}
|
|
9
|
-
exports.convertRuleset = convertRuleset;
|
package/lib/debug.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.enableDebug = exports.log = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
1
|
+
import debug from 'debug';
|
|
6
2
|
const CLI_NS = 'markuplint-cli';
|
|
7
|
-
|
|
8
|
-
function enableDebug() {
|
|
9
|
-
if (!
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (!
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
export const log = debug('ml-core');
|
|
4
|
+
export function enableDebug() {
|
|
5
|
+
if (!log.enabled) {
|
|
6
|
+
debug.enable(`${log.namespace}*`);
|
|
7
|
+
log(`Debug enable: ${log.namespace}`);
|
|
8
|
+
if (!debug.enabled(CLI_NS)) {
|
|
9
|
+
debug.enable(`${log.namespace}*,${CLI_NS}*`);
|
|
10
|
+
log(`Debug enable: ${log.namespace}, ${CLI_NS}`);
|
|
15
11
|
}
|
|
16
12
|
}
|
|
17
13
|
}
|
|
18
|
-
exports.enableDebug = enableDebug;
|
package/lib/index.d.ts
CHANGED
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
export { RuleInfo, RuleConfig, RuleConfigValue } from '@markuplint/ml-config';
|
|
2
|
-
export {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export
|
|
14
|
-
export {
|
|
15
|
-
export { getIndent } from './ml-dom/helper/getIndent';
|
|
16
|
-
export * from './configs';
|
|
17
|
-
export * from './convert-ruleset';
|
|
18
|
-
export * from './ml-core';
|
|
19
|
-
export * from './ml-dom';
|
|
20
|
-
export * from './ml-rule';
|
|
21
|
-
export * from './plugin';
|
|
22
|
-
export * from './test';
|
|
23
|
-
export * from './types';
|
|
24
|
-
export * from './utils';
|
|
2
|
+
export { ariaSpecs, contentModelCategoryToTagNames, getAttrSpecs, getComputedRole, getImplicitRole, getPermittedRoles, getRoleSpec, getSpec, resolveNamespace, } from '@markuplint/ml-spec';
|
|
3
|
+
export { Ruleset } from './ruleset/index.js';
|
|
4
|
+
export { enableDebug } from './debug.js';
|
|
5
|
+
export { getIndent } from './ml-dom/helper/get-indent.js';
|
|
6
|
+
export * from './convert-ruleset.js';
|
|
7
|
+
export * from './ml-core.js';
|
|
8
|
+
export * from './ml-dom/index.js';
|
|
9
|
+
export * from './ml-rule/index.js';
|
|
10
|
+
export * from './plugin/index.js';
|
|
11
|
+
export * from './test/index.js';
|
|
12
|
+
export * from './types.js';
|
|
13
|
+
export * from './utils/index.js';
|
|
14
|
+
export { AccessibilityProperties } from './ml-dom/node/types.js';
|
package/lib/index.js
CHANGED
|
@@ -1,29 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, "getSpec", { enumerable: true, get: function () { return ml_spec_1.getSpec; } });
|
|
14
|
-
Object.defineProperty(exports, "resolveNamespace", { enumerable: true, get: function () { return ml_spec_1.resolveNamespace; } });
|
|
15
|
-
var ruleset_1 = require("./ruleset");
|
|
16
|
-
Object.defineProperty(exports, "Ruleset", { enumerable: true, get: function () { return tslib_1.__importDefault(ruleset_1).default; } });
|
|
17
|
-
var debug_1 = require("./debug");
|
|
18
|
-
Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return debug_1.enableDebug; } });
|
|
19
|
-
var getIndent_1 = require("./ml-dom/helper/getIndent");
|
|
20
|
-
Object.defineProperty(exports, "getIndent", { enumerable: true, get: function () { return getIndent_1.getIndent; } });
|
|
21
|
-
tslib_1.__exportStar(require("./configs"), exports);
|
|
22
|
-
tslib_1.__exportStar(require("./convert-ruleset"), exports);
|
|
23
|
-
tslib_1.__exportStar(require("./ml-core"), exports);
|
|
24
|
-
tslib_1.__exportStar(require("./ml-dom"), exports);
|
|
25
|
-
tslib_1.__exportStar(require("./ml-rule"), exports);
|
|
26
|
-
tslib_1.__exportStar(require("./plugin"), exports);
|
|
27
|
-
tslib_1.__exportStar(require("./test"), exports);
|
|
28
|
-
tslib_1.__exportStar(require("./types"), exports);
|
|
29
|
-
tslib_1.__exportStar(require("./utils"), exports);
|
|
1
|
+
export { ariaSpecs, contentModelCategoryToTagNames, getAttrSpecs, getComputedRole, getImplicitRole, getPermittedRoles, getRoleSpec, getSpec, resolveNamespace, } from '@markuplint/ml-spec';
|
|
2
|
+
export { Ruleset } from './ruleset/index.js';
|
|
3
|
+
export { enableDebug } from './debug.js';
|
|
4
|
+
export { getIndent } from './ml-dom/helper/get-indent.js';
|
|
5
|
+
export * from './convert-ruleset.js';
|
|
6
|
+
export * from './ml-core.js';
|
|
7
|
+
export * from './ml-dom/index.js';
|
|
8
|
+
export * from './ml-rule/index.js';
|
|
9
|
+
export * from './plugin/index.js';
|
|
10
|
+
export * from './test/index.js';
|
|
11
|
+
export * from './types.js';
|
|
12
|
+
export * from './utils/index.js';
|
package/lib/ml-core.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { MLFabric } from './types';
|
|
1
|
+
import type { MLFabric } from './types.js';
|
|
2
2
|
import type { PlainData, RuleConfigValue, Violation } from '@markuplint/ml-config';
|
|
3
3
|
import { ParserError } from '@markuplint/parser-utils';
|
|
4
|
-
import { Document } from './ml-dom';
|
|
4
|
+
import { Document } from './ml-dom/index.js';
|
|
5
5
|
export type MLCoreParams = {
|
|
6
6
|
readonly sourceCode: string;
|
|
7
7
|
readonly filename: string;
|
|
@@ -9,10 +9,10 @@ export type MLCoreParams = {
|
|
|
9
9
|
} & MLFabric;
|
|
10
10
|
export declare class MLCore {
|
|
11
11
|
#private;
|
|
12
|
-
constructor({ parser, sourceCode, ruleset, rules, locale, schemas, parserOptions, pretenders, filename, debug, }: MLCoreParams);
|
|
13
|
-
get document(): Document<RuleConfigValue, PlainData
|
|
12
|
+
constructor({ parser, sourceCode, ruleset, rules, locale, schemas, parserOptions, pretenders, filename, debug, configErrors, }: MLCoreParams);
|
|
13
|
+
get document(): ParserError | Document<RuleConfigValue, PlainData>;
|
|
14
14
|
setCode(sourceCode: string): void;
|
|
15
|
-
update({ parser, ruleset, rules, locale, schemas, parserOptions }: Partial<MLFabric>): void;
|
|
15
|
+
update({ parser, ruleset, rules, locale, schemas, parserOptions, configErrors }: Partial<MLFabric>): void;
|
|
16
16
|
verify(fix?: boolean): Promise<Violation[]>;
|
|
17
17
|
private _createDocument;
|
|
18
18
|
private _parse;
|
package/lib/ml-core.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _MLCore_ast, _MLCore_document, _MLCore_filename, _MLCore_locale, _MLCore_parser, _MLCore_parserOptions, _MLCore_pretenders, _MLCore_rules, _MLCore_ruleset, _MLCore_schemas, _MLCore_sourceCode, _MLCore_configErrors;
|
|
13
|
+
import { ParserError } from '@markuplint/parser-utils';
|
|
14
|
+
import { log, enableDebug } from './debug.js';
|
|
15
|
+
import { Document } from './ml-dom/index.js';
|
|
16
|
+
const resultLog = log.extend('result');
|
|
17
|
+
export class MLCore {
|
|
18
|
+
constructor({ parser, sourceCode, ruleset, rules, locale, schemas, parserOptions, pretenders, filename, debug, configErrors, }) {
|
|
13
19
|
_MLCore_ast.set(this, null);
|
|
14
20
|
_MLCore_document.set(this, void 0);
|
|
15
21
|
_MLCore_filename.set(this, void 0);
|
|
@@ -21,80 +27,92 @@ class MLCore {
|
|
|
21
27
|
_MLCore_ruleset.set(this, void 0);
|
|
22
28
|
_MLCore_schemas.set(this, void 0);
|
|
23
29
|
_MLCore_sourceCode.set(this, void 0);
|
|
30
|
+
_MLCore_configErrors.set(this, void 0);
|
|
24
31
|
if (debug) {
|
|
25
|
-
|
|
32
|
+
enableDebug();
|
|
26
33
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
rules:
|
|
32
|
-
nodeRules:
|
|
33
|
-
childNodeRules:
|
|
34
|
+
__classPrivateFieldSet(this, _MLCore_parser, parser, "f");
|
|
35
|
+
__classPrivateFieldSet(this, _MLCore_sourceCode, sourceCode, "f");
|
|
36
|
+
__classPrivateFieldSet(this, _MLCore_parserOptions, parserOptions, "f");
|
|
37
|
+
__classPrivateFieldSet(this, _MLCore_ruleset, {
|
|
38
|
+
rules: ruleset.rules ?? {},
|
|
39
|
+
nodeRules: ruleset.nodeRules ?? [],
|
|
40
|
+
childNodeRules: ruleset.childNodeRules ?? [],
|
|
34
41
|
}, "f");
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
__classPrivateFieldSet(this, _MLCore_locale, locale, "f");
|
|
43
|
+
__classPrivateFieldSet(this, _MLCore_schemas, schemas, "f");
|
|
44
|
+
__classPrivateFieldSet(this, _MLCore_filename, filename, "f");
|
|
45
|
+
__classPrivateFieldSet(this, _MLCore_rules, [...rules], "f");
|
|
46
|
+
__classPrivateFieldSet(this, _MLCore_pretenders, [...pretenders], "f");
|
|
47
|
+
__classPrivateFieldSet(this, _MLCore_configErrors, [...(configErrors ?? [])], "f");
|
|
40
48
|
this._parse();
|
|
41
49
|
this._createDocument();
|
|
42
50
|
}
|
|
43
51
|
get document() {
|
|
44
|
-
return
|
|
52
|
+
return __classPrivateFieldGet(this, _MLCore_document, "f");
|
|
45
53
|
}
|
|
46
54
|
setCode(sourceCode) {
|
|
47
|
-
|
|
55
|
+
__classPrivateFieldSet(this, _MLCore_sourceCode, sourceCode, "f");
|
|
48
56
|
this._parse();
|
|
49
57
|
this._createDocument();
|
|
50
58
|
}
|
|
51
|
-
update({ parser, ruleset, rules, locale, schemas, parserOptions }) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
childNodeRules: (_c = ruleset === null || ruleset === void 0 ? void 0 : ruleset.childNodeRules) !== null && _c !== void 0 ? _c : tslib_1.__classPrivateFieldGet(this, _MLCore_ruleset, "f").childNodeRules,
|
|
59
|
+
update({ parser, ruleset, rules, locale, schemas, parserOptions, configErrors }) {
|
|
60
|
+
__classPrivateFieldSet(this, _MLCore_parser, parser ?? __classPrivateFieldGet(this, _MLCore_parser, "f"), "f");
|
|
61
|
+
__classPrivateFieldSet(this, _MLCore_ruleset, {
|
|
62
|
+
rules: ruleset?.rules ?? __classPrivateFieldGet(this, _MLCore_ruleset, "f").rules,
|
|
63
|
+
nodeRules: ruleset?.nodeRules ?? __classPrivateFieldGet(this, _MLCore_ruleset, "f").nodeRules,
|
|
64
|
+
childNodeRules: ruleset?.childNodeRules ?? __classPrivateFieldGet(this, _MLCore_ruleset, "f").childNodeRules,
|
|
58
65
|
}, "f");
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
__classPrivateFieldSet(this, _MLCore_rules, rules?.slice() ?? __classPrivateFieldGet(this, _MLCore_rules, "f"), "f");
|
|
67
|
+
__classPrivateFieldSet(this, _MLCore_locale, locale ?? __classPrivateFieldGet(this, _MLCore_locale, "f"), "f");
|
|
68
|
+
__classPrivateFieldSet(this, _MLCore_schemas, schemas ?? __classPrivateFieldGet(this, _MLCore_schemas, "f"), "f");
|
|
69
|
+
__classPrivateFieldSet(this, _MLCore_configErrors, [...(configErrors ?? [])], "f");
|
|
62
70
|
if (parserOptions &&
|
|
63
|
-
(parserOptions.ignoreFrontMatter !==
|
|
64
|
-
parserOptions.authoredElementName !==
|
|
71
|
+
(parserOptions.ignoreFrontMatter !== __classPrivateFieldGet(this, _MLCore_parserOptions, "f").ignoreFrontMatter ||
|
|
72
|
+
parserOptions.authoredElementName !== __classPrivateFieldGet(this, _MLCore_parserOptions, "f").authoredElementName)) {
|
|
65
73
|
this._parse();
|
|
66
74
|
}
|
|
67
75
|
this._createDocument();
|
|
68
76
|
}
|
|
69
77
|
async verify(fix = false) {
|
|
70
|
-
|
|
78
|
+
log('verify: start');
|
|
71
79
|
const violations = [];
|
|
72
|
-
if (
|
|
80
|
+
if (__classPrivateFieldGet(this, _MLCore_document, "f") instanceof ParserError) {
|
|
73
81
|
violations.push({
|
|
74
82
|
ruleId: 'parse-error',
|
|
75
83
|
severity: 'error',
|
|
76
|
-
message:
|
|
77
|
-
col:
|
|
78
|
-
line:
|
|
79
|
-
raw:
|
|
84
|
+
message: __classPrivateFieldGet(this, _MLCore_document, "f").message,
|
|
85
|
+
col: __classPrivateFieldGet(this, _MLCore_document, "f").col,
|
|
86
|
+
line: __classPrivateFieldGet(this, _MLCore_document, "f").line,
|
|
87
|
+
raw: __classPrivateFieldGet(this, _MLCore_document, "f").raw,
|
|
80
88
|
});
|
|
81
|
-
|
|
89
|
+
log('verify: error %o', __classPrivateFieldGet(this, _MLCore_document, "f").message);
|
|
82
90
|
return violations;
|
|
83
91
|
}
|
|
84
|
-
for (const
|
|
85
|
-
|
|
92
|
+
for (const error of __classPrivateFieldGet(this, _MLCore_configErrors, "f")) {
|
|
93
|
+
violations.push({
|
|
94
|
+
ruleId: 'config-error',
|
|
95
|
+
severity: 'warning',
|
|
96
|
+
message: error.message,
|
|
97
|
+
col: 1,
|
|
98
|
+
line: 1,
|
|
99
|
+
raw: '',
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
for (const rule of __classPrivateFieldGet(this, _MLCore_rules, "f")) {
|
|
103
|
+
const ruleInfo = rule.getRuleInfo(__classPrivateFieldGet(this, _MLCore_ruleset, "f"), rule.name);
|
|
86
104
|
if (ruleInfo.disabled && ruleInfo.nodeRules.length === 0 && ruleInfo.childNodeRules.length === 0) {
|
|
87
105
|
continue;
|
|
88
106
|
}
|
|
89
|
-
|
|
90
|
-
const results = await rule.verify(
|
|
91
|
-
if (
|
|
92
|
-
return
|
|
107
|
+
log('%s Rule: verify', rule.name);
|
|
108
|
+
const results = await rule.verify(__classPrivateFieldGet(this, _MLCore_document, "f"), __classPrivateFieldGet(this, _MLCore_locale, "f"), fix).catch(error => {
|
|
109
|
+
if (error instanceof ParserError) {
|
|
110
|
+
return error;
|
|
93
111
|
}
|
|
94
|
-
throw
|
|
112
|
+
throw error;
|
|
95
113
|
});
|
|
96
|
-
if (results instanceof
|
|
97
|
-
|
|
114
|
+
if (results instanceof ParserError) {
|
|
115
|
+
log('%s Rule: verify error %o', rule.name, results.message);
|
|
98
116
|
violations.push({
|
|
99
117
|
ruleId: 'parse-error',
|
|
100
118
|
severity: 'error',
|
|
@@ -107,9 +125,10 @@ class MLCore {
|
|
|
107
125
|
else {
|
|
108
126
|
violations.push(...results);
|
|
109
127
|
}
|
|
110
|
-
|
|
128
|
+
log('%s Rule: verify end', rule.name);
|
|
111
129
|
}
|
|
112
130
|
if (resultLog.enabled) {
|
|
131
|
+
// eslint-disable-next-line unicorn/no-array-reduce
|
|
113
132
|
const { e, w, i } = violations.reduce((c, v) => {
|
|
114
133
|
if (v.severity === 'error')
|
|
115
134
|
c.e += 1;
|
|
@@ -123,45 +142,44 @@ class MLCore {
|
|
|
123
142
|
resultLog('Warning: %d', w);
|
|
124
143
|
resultLog('Info: %d', i);
|
|
125
144
|
}
|
|
126
|
-
|
|
145
|
+
log('verify: end');
|
|
127
146
|
return violations;
|
|
128
147
|
}
|
|
129
148
|
_createDocument() {
|
|
130
|
-
if (!
|
|
149
|
+
if (!__classPrivateFieldGet(this, _MLCore_ast, "f")) {
|
|
131
150
|
return;
|
|
132
151
|
}
|
|
133
152
|
try {
|
|
134
|
-
|
|
135
|
-
filename:
|
|
136
|
-
endTag:
|
|
137
|
-
booleanish:
|
|
138
|
-
pretenders:
|
|
153
|
+
__classPrivateFieldSet(this, _MLCore_document, new Document(__classPrivateFieldGet(this, _MLCore_ast, "f"), __classPrivateFieldGet(this, _MLCore_ruleset, "f"), __classPrivateFieldGet(this, _MLCore_schemas, "f"), {
|
|
154
|
+
filename: __classPrivateFieldGet(this, _MLCore_filename, "f"),
|
|
155
|
+
endTag: __classPrivateFieldGet(this, _MLCore_parser, "f").endTag,
|
|
156
|
+
booleanish: __classPrivateFieldGet(this, _MLCore_parser, "f").booleanish,
|
|
157
|
+
pretenders: __classPrivateFieldGet(this, _MLCore_pretenders, "f"),
|
|
139
158
|
}), "f");
|
|
140
159
|
}
|
|
141
|
-
catch (
|
|
142
|
-
if (
|
|
143
|
-
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (error instanceof ParserError) {
|
|
162
|
+
__classPrivateFieldSet(this, _MLCore_document, error, "f");
|
|
144
163
|
}
|
|
145
164
|
else {
|
|
146
|
-
throw
|
|
165
|
+
throw error;
|
|
147
166
|
}
|
|
148
167
|
}
|
|
149
168
|
}
|
|
150
169
|
_parse() {
|
|
151
170
|
try {
|
|
152
|
-
|
|
171
|
+
__classPrivateFieldSet(this, _MLCore_ast, __classPrivateFieldGet(this, _MLCore_parser, "f").parse(__classPrivateFieldGet(this, _MLCore_sourceCode, "f"), __classPrivateFieldGet(this, _MLCore_parserOptions, "f")), "f");
|
|
153
172
|
}
|
|
154
|
-
catch (
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
if (
|
|
158
|
-
|
|
173
|
+
catch (error) {
|
|
174
|
+
log('Caught the parse error: %O', error);
|
|
175
|
+
__classPrivateFieldSet(this, _MLCore_ast, null, "f");
|
|
176
|
+
if (error instanceof ParserError) {
|
|
177
|
+
__classPrivateFieldSet(this, _MLCore_document, error, "f");
|
|
159
178
|
}
|
|
160
179
|
else {
|
|
161
|
-
throw
|
|
180
|
+
throw error;
|
|
162
181
|
}
|
|
163
182
|
}
|
|
164
183
|
}
|
|
165
184
|
}
|
|
166
|
-
|
|
167
|
-
_MLCore_ast = new WeakMap(), _MLCore_document = new WeakMap(), _MLCore_filename = new WeakMap(), _MLCore_locale = new WeakMap(), _MLCore_parser = new WeakMap(), _MLCore_parserOptions = new WeakMap(), _MLCore_pretenders = new WeakMap(), _MLCore_rules = new WeakMap(), _MLCore_ruleset = new WeakMap(), _MLCore_schemas = new WeakMap(), _MLCore_sourceCode = new WeakMap();
|
|
185
|
+
_MLCore_ast = new WeakMap(), _MLCore_document = new WeakMap(), _MLCore_filename = new WeakMap(), _MLCore_locale = new WeakMap(), _MLCore_parser = new WeakMap(), _MLCore_parserOptions = new WeakMap(), _MLCore_pretenders = new WeakMap(), _MLCore_rules = new WeakMap(), _MLCore_ruleset = new WeakMap(), _MLCore_schemas = new WeakMap(), _MLCore_sourceCode = new WeakMap(), _MLCore_configErrors = new WeakMap();
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const debug_1 = require("../../debug");
|
|
6
|
-
const accnameLog = debug_1.log.extend('accname');
|
|
7
|
-
function getAccname(
|
|
1
|
+
import { getAccname as get, getComputedRole } from '@markuplint/ml-spec';
|
|
2
|
+
import { log } from '../../debug.js';
|
|
3
|
+
const accnameLog = log.extend('accname');
|
|
4
|
+
export function getAccname(
|
|
8
5
|
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
9
6
|
el, version) {
|
|
10
7
|
let accname = safeGet(el);
|
|
@@ -19,14 +16,13 @@ el, version) {
|
|
|
19
16
|
return '';
|
|
20
17
|
}
|
|
21
18
|
if (isFromContent(el, version)) {
|
|
22
|
-
return
|
|
19
|
+
return [...el.childNodes]
|
|
23
20
|
.map(child => {
|
|
24
|
-
var _a;
|
|
25
21
|
if (child.is(child.ELEMENT_NODE)) {
|
|
26
22
|
return getAccname(child, version);
|
|
27
23
|
}
|
|
28
24
|
if (child.is(child.TEXT_NODE)) {
|
|
29
|
-
return
|
|
25
|
+
return child.textContent ?? '';
|
|
30
26
|
}
|
|
31
27
|
return '';
|
|
32
28
|
})
|
|
@@ -34,25 +30,23 @@ el, version) {
|
|
|
34
30
|
}
|
|
35
31
|
return '';
|
|
36
32
|
}
|
|
37
|
-
exports.getAccname = getAccname;
|
|
38
33
|
function safeGet(
|
|
39
34
|
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
40
35
|
el) {
|
|
41
36
|
try {
|
|
42
|
-
const name = (
|
|
37
|
+
const name = get(el);
|
|
43
38
|
return name;
|
|
44
39
|
}
|
|
45
|
-
catch (
|
|
40
|
+
catch (error) {
|
|
46
41
|
accnameLog('Raw: %s', el.raw);
|
|
47
|
-
accnameLog('Error: %O',
|
|
42
|
+
accnameLog('Error: %O', error);
|
|
48
43
|
return '';
|
|
49
44
|
}
|
|
50
45
|
}
|
|
51
46
|
function getAccnameFromPretender(
|
|
52
47
|
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
53
48
|
el) {
|
|
54
|
-
|
|
55
|
-
if (((_a = el.pretenderContext) === null || _a === void 0 ? void 0 : _a.type) === 'pretender' && ((_b = el.pretenderContext.aria) === null || _b === void 0 ? void 0 : _b.name) != null) {
|
|
49
|
+
if (el.pretenderContext?.type === 'pretender' && el.pretenderContext.aria?.name != null) {
|
|
56
50
|
if (typeof el.pretenderContext.aria.name === 'boolean') {
|
|
57
51
|
return 'some-name(Pretender Options)';
|
|
58
52
|
}
|
|
@@ -72,7 +66,6 @@ el) {
|
|
|
72
66
|
function isFromContent(
|
|
73
67
|
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
74
68
|
el, version) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return !!((_a = role.role) === null || _a === void 0 ? void 0 : _a.accessibleNameFromContent);
|
|
69
|
+
const role = getComputedRole(el.ownerMLDocument.specs, el, version);
|
|
70
|
+
return !!role.role?.accessibleNameFromContent;
|
|
78
71
|
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import type { MLDocument } from '../node/document';
|
|
2
|
-
import type { MappedNode } from '../node/types';
|
|
3
|
-
import type {
|
|
1
|
+
import type { MLDocument } from '../node/document.js';
|
|
2
|
+
import type { MappedNode } from '../node/types.js';
|
|
3
|
+
import type { MLASTNode } from '@markuplint/ml-ast';
|
|
4
4
|
import type { PlainData, RuleConfigValue } from '@markuplint/ml-config';
|
|
5
|
-
export declare function createNode<
|
|
6
|
-
N extends MLASTAbstractNode,
|
|
7
|
-
T extends RuleConfigValue,
|
|
8
|
-
O extends PlainData = undefined,
|
|
9
|
-
>(astNode: N, document: MLDocument<T, O>): MappedNode<N, T, O>;
|
|
5
|
+
export declare function createNode<N extends MLASTNode, T extends RuleConfigValue, O extends PlainData = undefined>(astNode: N, document: MLDocument<T, O>): MappedNode<N, T, O>;
|
|
@@ -1,32 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const element_1 = require("../node/element");
|
|
8
|
-
const text_1 = require("../node/text");
|
|
9
|
-
function createNode(astNode,
|
|
1
|
+
import { MLBlock } from '../node/block.js';
|
|
2
|
+
import { MLComment } from '../node/comment.js';
|
|
3
|
+
import { MLDocumentType } from '../node/document-type.js';
|
|
4
|
+
import { MLElement } from '../node/element.js';
|
|
5
|
+
import { MLText } from '../node/text.js';
|
|
6
|
+
export function createNode(astNode,
|
|
10
7
|
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
11
8
|
document) {
|
|
12
|
-
|
|
13
|
-
switch (_astNode.type) {
|
|
9
|
+
switch (astNode.type) {
|
|
14
10
|
case 'doctype': {
|
|
15
|
-
return new
|
|
11
|
+
return new MLDocumentType(astNode, document);
|
|
16
12
|
}
|
|
17
13
|
case 'starttag': {
|
|
18
|
-
return new
|
|
14
|
+
return new MLElement(astNode, document);
|
|
19
15
|
}
|
|
20
16
|
case 'psblock': {
|
|
21
|
-
return new
|
|
17
|
+
return new MLBlock(astNode, document);
|
|
22
18
|
}
|
|
23
19
|
case 'comment': {
|
|
24
|
-
return new
|
|
20
|
+
return new MLComment(astNode, document);
|
|
25
21
|
}
|
|
26
22
|
case 'text': {
|
|
27
|
-
return new
|
|
23
|
+
return new MLText(astNode, document);
|
|
24
|
+
}
|
|
25
|
+
case 'invalid': {
|
|
26
|
+
switch (astNode.kind) {
|
|
27
|
+
case 'starttag': {
|
|
28
|
+
return new MLElement({
|
|
29
|
+
...astNode,
|
|
30
|
+
type: 'starttag',
|
|
31
|
+
nodeName: 'x-invalid',
|
|
32
|
+
namespace: 'http://www.w3.org/1999/xhtml',
|
|
33
|
+
elementType: 'web-component',
|
|
34
|
+
attributes: [],
|
|
35
|
+
childNodes: [],
|
|
36
|
+
pairNode: null,
|
|
37
|
+
tagOpenChar: '',
|
|
38
|
+
tagCloseChar: '',
|
|
39
|
+
isGhost: false,
|
|
40
|
+
}, document);
|
|
41
|
+
}
|
|
42
|
+
default: {
|
|
43
|
+
return new MLText({
|
|
44
|
+
...astNode,
|
|
45
|
+
type: 'text',
|
|
46
|
+
nodeName: '#text',
|
|
47
|
+
}, document);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
28
50
|
}
|
|
29
51
|
}
|
|
30
52
|
throw new TypeError(`Invalid AST node types "${astNode.type}"`);
|
|
31
53
|
}
|
|
32
|
-
exports.createNode = createNode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { MLNode } from '../node/node';
|
|
1
|
+
import type { MLNode } from '../node/node.js';
|
|
2
2
|
export declare function nodeListToDebugMaps(nodeList: Readonly<MLNode<any, any>[]>, withAttr?: boolean): string[];
|