wikiparser-node 1.30.0 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/bundle/bundle-es8.min.js +28 -29
- package/bundle/bundle-lsp.min.js +34 -34
- package/bundle/bundle.min.js +23 -23
- package/dist/addon/attribute.js +166 -0
- package/dist/addon/link.js +92 -0
- package/dist/addon/table.js +12 -3
- package/dist/addon/token.js +5 -316
- package/dist/addon/transclude.js +11 -8
- package/dist/base.d.mts +13 -4
- package/dist/base.d.ts +13 -4
- package/dist/base.js +2 -0
- package/dist/base.mjs +2 -0
- package/dist/bin/config.js +1 -1
- package/dist/index.d.ts +34 -5
- package/dist/index.js +100 -88
- package/dist/internal.d.ts +6 -1
- package/dist/lib/document.d.ts +9 -7
- package/dist/lib/document.js +91 -66
- package/dist/lib/element.d.ts +8 -8
- package/dist/lib/element.js +52 -50
- package/dist/lib/lintConfig.js +6 -2
- package/dist/lib/lsp.js +120 -56
- package/dist/lib/node.js +21 -15
- package/dist/lib/redirectMap.js +1 -1
- package/dist/lib/text.js +17 -14
- package/dist/lib/title.d.ts +11 -0
- package/dist/lib/title.js +37 -13
- package/dist/mixin/elementLike.js +2 -3
- package/dist/mixin/syntax.js +13 -7
- package/dist/parser/commentAndExt.js +4 -4
- package/dist/parser/hrAndDoubleUnderscore.js +11 -9
- package/dist/parser/selector.js +16 -41
- package/dist/render/expand.js +216 -0
- package/dist/render/extension.js +141 -0
- package/dist/render/html.js +91 -0
- package/dist/render/magicWords.js +768 -0
- package/dist/render/syntaxhighlight.js +415 -0
- package/dist/src/arg.js +8 -1
- package/dist/src/atom.js +2 -0
- package/dist/src/attribute.d.ts +5 -0
- package/dist/src/attribute.js +59 -104
- package/dist/src/attributes.d.ts +5 -0
- package/dist/src/attributes.js +17 -51
- package/dist/src/converter.js +4 -2
- package/dist/src/converterFlags.js +8 -6
- package/dist/src/converterRule.js +19 -15
- package/dist/src/extLink.js +2 -2
- package/dist/src/heading.d.ts +1 -1
- package/dist/src/heading.js +5 -3
- package/dist/src/imageParameter.d.ts +0 -1
- package/dist/src/imageParameter.js +34 -24
- package/dist/src/index.d.ts +5 -5
- package/dist/src/index.js +37 -27
- package/dist/src/link/base.js +26 -36
- package/dist/src/link/category.d.ts +8 -1
- package/dist/src/link/category.js +104 -38
- package/dist/src/link/file.js +21 -8
- package/dist/src/link/galleryImage.js +2 -3
- package/dist/src/link/index.d.ts +1 -1
- package/dist/src/link/index.js +12 -33
- package/dist/src/multiLine/index.js +1 -1
- package/dist/src/nowiki/comment.js +1 -1
- package/dist/src/nowiki/doubleUnderscore.js +4 -2
- package/dist/src/nowiki/index.js +34 -31
- package/dist/src/nowiki/list.js +3 -1
- package/dist/src/nowiki/listBase.d.ts +2 -1
- package/dist/src/nowiki/listBase.js +22 -8
- package/dist/src/nowiki/quote.d.ts +1 -1
- package/dist/src/nowiki/quote.js +3 -3
- package/dist/src/onlyinclude.js +1 -1
- package/dist/src/paramLine.js +2 -0
- package/dist/src/parameter.js +1 -1
- package/dist/src/redirect.js +1 -1
- package/dist/src/table/base.js +5 -4
- package/dist/src/table/index.d.ts +1 -6
- package/dist/src/table/index.js +7 -16
- package/dist/src/table/td.js +12 -9
- package/dist/src/tag/html.js +2 -3
- package/dist/src/tag/index.js +8 -6
- package/dist/src/tagPair/ext.js +18 -41
- package/dist/src/tagPair/index.js +6 -4
- package/dist/src/tagPair/translate.d.ts +1 -0
- package/dist/src/tagPair/translate.js +10 -3
- package/dist/src/transclude.js +18 -21
- package/dist/util/constants.js +9 -3
- package/dist/util/debug.js +72 -5
- package/dist/util/diff.js +17 -15
- package/dist/util/html.js +14 -5
- package/dist/util/selector.js +37 -0
- package/dist/util/sharable.d.mts +4 -1
- package/dist/util/sharable.js +7 -7
- package/dist/util/sharable.mjs +7 -7
- package/dist/util/string.js +51 -20
- package/extensions/dist/base.js +2 -2
- package/extensions/editor.css +1 -1
- package/i18n/en.json +1 -0
- package/i18n/zh-hans.json +30 -29
- package/i18n/zh-hant.json +31 -30
- package/package.json +23 -16
- package/dist/addon/magicWords.js +0 -132
package/dist/lib/document.js
CHANGED
|
@@ -3,87 +3,112 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EmbeddedCSSDocument = exports.EmbeddedJSONDocument = exports.
|
|
6
|
+
exports.EmbeddedCSSDocument = exports.EmbeddedJSONDocument = exports.loadStylelint = exports.loadHtmlData = exports.loadCssLSP = exports.loadJsonLSP = exports.jsonTags = exports.loadTexvcjs = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const common_1 = require("@bhsd/common");
|
|
9
9
|
/* NOT FOR BROWSER */
|
|
10
10
|
const constants_1 = require("../util/constants");
|
|
11
|
-
|
|
11
|
+
let texcvjs;
|
|
12
|
+
const loadTexvcjs = () => {
|
|
12
13
|
NPM: {
|
|
14
|
+
if (texcvjs === undefined) {
|
|
15
|
+
try {
|
|
16
|
+
texcvjs = require('mathoid-texvcjs');
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
/* istanbul ignore next */
|
|
20
|
+
texcvjs = null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return texcvjs;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.loadTexvcjs = loadTexvcjs;
|
|
27
|
+
exports.jsonTags = ['templatedata', 'mapframe', 'maplink'];
|
|
28
|
+
let jsonLSP;
|
|
29
|
+
const loadJsonLSP = () => {
|
|
30
|
+
if (jsonLSP === undefined) {
|
|
13
31
|
try {
|
|
14
|
-
|
|
32
|
+
jsonLSP = require('vscode-json-languageservice')
|
|
33
|
+
.getLanguageService({
|
|
34
|
+
/** @implements */
|
|
35
|
+
async schemaRequestService(uri) {
|
|
36
|
+
return (await fetch(uri)).text();
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
const dir = path_1.default.join('..', '..', 'data', 'ext');
|
|
40
|
+
jsonLSP.configure({
|
|
41
|
+
schemas: exports.jsonTags.map((tag) => {
|
|
42
|
+
const uri = path_1.default.join(dir, tag);
|
|
43
|
+
try {
|
|
44
|
+
const schema = require(tag === 'maplink' ? path_1.default.join(dir, 'mapframe') : uri);
|
|
45
|
+
return {
|
|
46
|
+
uri,
|
|
47
|
+
fileMatch: [tag],
|
|
48
|
+
schema,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
/* istanbul ignore next */
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}).filter(schema => schema !== false),
|
|
56
|
+
});
|
|
15
57
|
}
|
|
16
58
|
catch {
|
|
17
59
|
/* istanbul ignore next */
|
|
18
|
-
|
|
60
|
+
jsonLSP = null;
|
|
19
61
|
}
|
|
20
62
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
exports.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
const schema = require(tag === 'maplink' ? path_1.default.join(dir, 'mapframe') : uri);
|
|
37
|
-
return {
|
|
38
|
-
uri,
|
|
39
|
-
fileMatch: [tag],
|
|
40
|
-
schema,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
/* istanbul ignore next */
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}).filter(Boolean),
|
|
48
|
-
});
|
|
49
|
-
return lsp;
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
/* istanbul ignore next */
|
|
53
|
-
return undefined;
|
|
54
|
-
}
|
|
55
|
-
})();
|
|
56
|
-
exports.cssLSP = (() => {
|
|
57
|
-
try {
|
|
58
|
-
return require('vscode-css-languageservice')
|
|
59
|
-
.getCSSLanguageService();
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
/* istanbul ignore next */
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
})();
|
|
66
|
-
exports.htmlData = (() => {
|
|
67
|
-
try {
|
|
68
|
-
return require('vscode-html-languageservice')
|
|
69
|
-
.getDefaultHTMLDataProvider();
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
/* istanbul ignore next */
|
|
73
|
-
return undefined;
|
|
63
|
+
return jsonLSP;
|
|
64
|
+
};
|
|
65
|
+
exports.loadJsonLSP = loadJsonLSP;
|
|
66
|
+
let cssLSP;
|
|
67
|
+
const loadCssLSP = () => {
|
|
68
|
+
if (cssLSP === undefined) {
|
|
69
|
+
try {
|
|
70
|
+
cssLSP = require('vscode-css-languageservice')
|
|
71
|
+
.getCSSLanguageService();
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
/* istanbul ignore next */
|
|
75
|
+
cssLSP = null;
|
|
76
|
+
}
|
|
74
77
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
return cssLSP;
|
|
79
|
+
};
|
|
80
|
+
exports.loadCssLSP = loadCssLSP;
|
|
81
|
+
let htmlData;
|
|
82
|
+
const loadHtmlData = () => {
|
|
83
|
+
if (htmlData === undefined) {
|
|
78
84
|
try {
|
|
79
|
-
|
|
85
|
+
htmlData = require('vscode-html-languageservice')
|
|
86
|
+
.getDefaultHTMLDataProvider();
|
|
80
87
|
}
|
|
81
88
|
catch {
|
|
82
89
|
/* istanbul ignore next */
|
|
83
|
-
|
|
90
|
+
htmlData = null;
|
|
84
91
|
}
|
|
85
92
|
}
|
|
86
|
-
|
|
93
|
+
return htmlData;
|
|
94
|
+
};
|
|
95
|
+
exports.loadHtmlData = loadHtmlData;
|
|
96
|
+
let stylelint;
|
|
97
|
+
const loadStylelint = () => {
|
|
98
|
+
NPM: {
|
|
99
|
+
stylelint ??= (async () => {
|
|
100
|
+
try {
|
|
101
|
+
return (await import('stylelint')).default;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
/* istanbul ignore next */
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
})();
|
|
108
|
+
return stylelint;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
exports.loadStylelint = loadStylelint;
|
|
87
112
|
/** embedded document */
|
|
88
113
|
class EmbeddedDocument {
|
|
89
114
|
uri = '';
|
|
@@ -136,7 +161,7 @@ class EmbeddedJSONDocument extends EmbeddedDocument {
|
|
|
136
161
|
constructor(root, token) {
|
|
137
162
|
super('json', root, token);
|
|
138
163
|
this.uri = token.name;
|
|
139
|
-
this.jsonDoc = exports.
|
|
164
|
+
this.jsonDoc = (0, exports.loadJsonLSP)().parseJSONDocument(this);
|
|
140
165
|
}
|
|
141
166
|
}
|
|
142
167
|
exports.EmbeddedJSONDocument = EmbeddedJSONDocument;
|
|
@@ -149,11 +174,11 @@ class EmbeddedCSSDocument extends EmbeddedDocument {
|
|
|
149
174
|
constructor(root, token) {
|
|
150
175
|
const { type, tag } = token.parentNode;
|
|
151
176
|
super('css', root, token, `${type === 'ext-attr' ? 'div' : tag}{`, '}');
|
|
152
|
-
this.styleSheet = exports.
|
|
177
|
+
this.styleSheet = (0, exports.loadCssLSP)().parseStylesheet(this);
|
|
153
178
|
}
|
|
154
179
|
getContent() {
|
|
155
180
|
return (0, common_1.sanitizeInlineStyle)(super.getContent());
|
|
156
181
|
}
|
|
157
182
|
}
|
|
158
183
|
exports.EmbeddedCSSDocument = EmbeddedCSSDocument;
|
|
159
|
-
constants_1.classes['
|
|
184
|
+
constants_1.classes['EmbeddedDocument'] = __filename;
|
package/dist/lib/element.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AstNode } from './node';
|
|
2
|
-
import type { LintError, AST } from '../base';
|
|
2
|
+
import type { TokenTypes, LintError, AST } from '../base';
|
|
3
3
|
import type { ElementLike } from '../mixin/elementLike';
|
|
4
4
|
import type { AstNodes, AstText, Token, FileToken, LinkToken, RedirectTargetToken, ExtLinkToken, MagicLinkToken, ImageParameterToken, TranscludeToken } from '../internal';
|
|
5
5
|
declare type LinkTokens = LinkToken | RedirectTargetToken | ExtLinkToken | MagicLinkToken | ImageParameterToken;
|
|
@@ -38,12 +38,6 @@ export declare abstract class AstElement extends AstNode {
|
|
|
38
38
|
/** all templates and modules / 所有模板和模块 */
|
|
39
39
|
get embeds(): TranscludeToken[];
|
|
40
40
|
constructor();
|
|
41
|
-
/**
|
|
42
|
-
* Merge adjacent text child nodes
|
|
43
|
-
*
|
|
44
|
-
* 合并相邻的文本子节点
|
|
45
|
-
*/
|
|
46
|
-
normalize(): void;
|
|
47
41
|
/**
|
|
48
42
|
* Remove a child node
|
|
49
43
|
*
|
|
@@ -113,13 +107,19 @@ export declare abstract class AstElement extends AstNode {
|
|
|
113
107
|
* @param start
|
|
114
108
|
*/
|
|
115
109
|
json(file?: string, start?: number): AST;
|
|
110
|
+
/**
|
|
111
|
+
* Merge adjacent text child nodes
|
|
112
|
+
*
|
|
113
|
+
* 合并相邻的文本子节点
|
|
114
|
+
*/
|
|
115
|
+
normalize(): void;
|
|
116
116
|
/**
|
|
117
117
|
* Check if the current element matches the selector
|
|
118
118
|
*
|
|
119
119
|
* 检查是否符合选择器
|
|
120
120
|
* @param selector selector / 选择器
|
|
121
121
|
*/
|
|
122
|
-
matches<T>(selector
|
|
122
|
+
matches<T>(selector: string): this is T;
|
|
123
123
|
/**
|
|
124
124
|
* Insert a batch of child nodes at the start
|
|
125
125
|
*
|
package/dist/lib/element.js
CHANGED
|
@@ -40,7 +40,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
40
40
|
exports.AstElement = void 0;
|
|
41
41
|
const string_1 = require("../util/string");
|
|
42
42
|
const debug_1 = require("../util/debug");
|
|
43
|
-
const selector_1 = require("../
|
|
43
|
+
const selector_1 = require("../util/selector");
|
|
44
44
|
const node_1 = require("./node");
|
|
45
45
|
const elementLike_1 = require("../mixin/elementLike");
|
|
46
46
|
/* NOT FOR BROWSER */
|
|
@@ -130,45 +130,6 @@ let AstElement = (() => {
|
|
|
130
130
|
text(separator) {
|
|
131
131
|
return (0, string_1.text)(this.childNodes, separator);
|
|
132
132
|
}
|
|
133
|
-
/**
|
|
134
|
-
* Merge adjacent text child nodes
|
|
135
|
-
*
|
|
136
|
-
* 合并相邻的文本子节点
|
|
137
|
-
*/
|
|
138
|
-
normalize() {
|
|
139
|
-
const childNodes = this.getChildNodes();
|
|
140
|
-
/**
|
|
141
|
-
* 移除子节点
|
|
142
|
-
* @param i 移除位置
|
|
143
|
-
*/
|
|
144
|
-
const remove = (i) => {
|
|
145
|
-
/* NOT FOR BROWSER */
|
|
146
|
-
childNodes[i].setAttribute('parentNode', undefined);
|
|
147
|
-
/* NOT FOR BROWSER END */
|
|
148
|
-
childNodes.splice(i, 1);
|
|
149
|
-
childNodes[i - 1]?.setAttribute('nextSibling', childNodes[i]);
|
|
150
|
-
childNodes[i]?.setAttribute('previousSibling', childNodes[i - 1]);
|
|
151
|
-
};
|
|
152
|
-
for (let i = childNodes.length - 1; i >= 0; i--) {
|
|
153
|
-
const { type, data } = childNodes[i];
|
|
154
|
-
if (type !== 'text' || childNodes.length === 1 || this.getGaps(i - (i && 1))) {
|
|
155
|
-
//
|
|
156
|
-
}
|
|
157
|
-
else if (data === '') {
|
|
158
|
-
remove(i);
|
|
159
|
-
/* NOT FOR BROWSER */
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
const prev = childNodes[i - 1];
|
|
163
|
-
if (prev?.type === 'text') {
|
|
164
|
-
prev.setAttribute('data', prev.data + data);
|
|
165
|
-
remove(i);
|
|
166
|
-
}
|
|
167
|
-
/* NOT FOR BROWSER END */
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
this.setAttribute('childNodes', childNodes);
|
|
171
|
-
}
|
|
172
133
|
/**
|
|
173
134
|
* Remove a child node
|
|
174
135
|
*
|
|
@@ -221,6 +182,10 @@ let AstElement = (() => {
|
|
|
221
182
|
}
|
|
222
183
|
return undefined;
|
|
223
184
|
}
|
|
185
|
+
/** @private */
|
|
186
|
+
isInside(type) {
|
|
187
|
+
return this.closest(`${type},ext`)?.type === type;
|
|
188
|
+
}
|
|
224
189
|
/**
|
|
225
190
|
* Insert a batch of child nodes at the end
|
|
226
191
|
*
|
|
@@ -242,7 +207,7 @@ let AstElement = (() => {
|
|
|
242
207
|
for (let i = this.length - 1; i >= 0; i--) {
|
|
243
208
|
this.removeAt(i);
|
|
244
209
|
}
|
|
245
|
-
this.safeAppend(elements);
|
|
210
|
+
this.safeAppend([...elements]);
|
|
246
211
|
}
|
|
247
212
|
}
|
|
248
213
|
/**
|
|
@@ -355,15 +320,17 @@ let AstElement = (() => {
|
|
|
355
320
|
}
|
|
356
321
|
/** @private */
|
|
357
322
|
print(opt = {}) {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
323
|
+
PRINT: {
|
|
324
|
+
const cl = opt.class;
|
|
325
|
+
if (this.toString()) {
|
|
326
|
+
return (cl === ''
|
|
327
|
+
? ''
|
|
328
|
+
: `<span class="wpb-${cl ?? this.type}${this.getAttribute('invalid') ? ' wpb-invalid' : ''}">`)
|
|
329
|
+
+ (0, string_1.print)(this.childNodes, opt)
|
|
330
|
+
+ (cl === '' ? '' : '</span>');
|
|
331
|
+
}
|
|
332
|
+
return '';
|
|
365
333
|
}
|
|
366
|
-
return '';
|
|
367
334
|
}
|
|
368
335
|
/**
|
|
369
336
|
* Save in JSON format
|
|
@@ -398,6 +365,41 @@ let AstElement = (() => {
|
|
|
398
365
|
}
|
|
399
366
|
}
|
|
400
367
|
/* NOT FOR BROWSER */
|
|
368
|
+
/**
|
|
369
|
+
* Merge adjacent text child nodes
|
|
370
|
+
*
|
|
371
|
+
* 合并相邻的文本子节点
|
|
372
|
+
*/
|
|
373
|
+
normalize() {
|
|
374
|
+
const childNodes = this.getChildNodes();
|
|
375
|
+
/**
|
|
376
|
+
* 移除子节点
|
|
377
|
+
* @param i 移除位置
|
|
378
|
+
*/
|
|
379
|
+
const remove = (i) => {
|
|
380
|
+
childNodes[i].setAttribute('parentNode', undefined);
|
|
381
|
+
childNodes.splice(i, 1);
|
|
382
|
+
childNodes[i - 1]?.setAttribute('nextSibling', childNodes[i]);
|
|
383
|
+
childNodes[i]?.setAttribute('previousSibling', childNodes[i - 1]);
|
|
384
|
+
};
|
|
385
|
+
for (let i = childNodes.length - 1; i >= 0; i--) {
|
|
386
|
+
const { type, data } = childNodes[i];
|
|
387
|
+
if (type !== 'text' || childNodes.length === 1 || this.getGaps(i - (i && 1))) {
|
|
388
|
+
//
|
|
389
|
+
}
|
|
390
|
+
else if (data === '') {
|
|
391
|
+
remove(i);
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
const prev = childNodes[i - 1];
|
|
395
|
+
if (prev?.type === 'text') {
|
|
396
|
+
prev.setAttribute('data', prev.data + data);
|
|
397
|
+
remove(i);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
this.setAttribute('childNodes', childNodes);
|
|
402
|
+
}
|
|
401
403
|
/**
|
|
402
404
|
* Check if the current element matches the selector
|
|
403
405
|
*
|
|
@@ -405,7 +407,7 @@ let AstElement = (() => {
|
|
|
405
407
|
* @param selector selector / 选择器
|
|
406
408
|
*/
|
|
407
409
|
matches(selector) {
|
|
408
|
-
return
|
|
410
|
+
return (0, selector_1.getCondition)(selector, this)(this);
|
|
409
411
|
}
|
|
410
412
|
/**
|
|
411
413
|
* Insert a batch of child nodes at the start
|
package/dist/lib/lintConfig.js
CHANGED
|
@@ -15,6 +15,7 @@ const dict = new Map([
|
|
|
15
15
|
['error', 'error'],
|
|
16
16
|
]);
|
|
17
17
|
const defaultLintRuleConfig = {
|
|
18
|
+
'arg-in-ext': 1,
|
|
18
19
|
'bold-header': [
|
|
19
20
|
1,
|
|
20
21
|
{
|
|
@@ -271,11 +272,14 @@ const set = (obj, key, value) => {
|
|
|
271
272
|
/* istanbul ignore next */
|
|
272
273
|
throw new RangeError(`Invalid lint config for ${key}: ${JSON.stringify(value)}`);
|
|
273
274
|
};
|
|
275
|
+
const clone = typeof structuredClone === 'function'
|
|
276
|
+
? structuredClone
|
|
277
|
+
: /* istanbul ignore next */ (obj) => JSON.parse(JSON.stringify(obj));
|
|
274
278
|
/** 语法规则设置 */
|
|
275
279
|
class LintRuleConfiguration {
|
|
276
280
|
/** @param config 语法规则设置 */
|
|
277
281
|
constructor(config) {
|
|
278
|
-
Object.assign(this,
|
|
282
|
+
Object.assign(this, clone(defaultLintRuleConfig));
|
|
279
283
|
if (!config) {
|
|
280
284
|
return;
|
|
281
285
|
}
|
|
@@ -302,9 +306,9 @@ class LintConfiguration {
|
|
|
302
306
|
set rules(config) {
|
|
303
307
|
this.#rules = new Proxy(new LintRuleConfiguration(config), {
|
|
304
308
|
set,
|
|
309
|
+
/* istanbul ignore next */
|
|
305
310
|
/** @ignore */
|
|
306
311
|
deleteProperty() {
|
|
307
|
-
/* istanbul ignore next */
|
|
308
312
|
return false;
|
|
309
313
|
},
|
|
310
314
|
});
|