wikiparser-node 1.19.0 → 1.20.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.
Files changed (113) hide show
  1. package/README.md +3 -0
  2. package/bundle/bundle-es7.min.js +25 -32
  3. package/bundle/bundle-lsp.min.js +24 -97
  4. package/bundle/bundle.min.js +26 -33
  5. package/config/default.json +49 -3
  6. package/config/minimum.json +5 -1
  7. package/data/ext/math.json +660 -0
  8. package/dist/addon/table.js +24 -5
  9. package/dist/addon/transclude.js +4 -4
  10. package/dist/base.d.mts +1 -1
  11. package/dist/base.d.ts +1 -1
  12. package/dist/bin/config.js +26 -8
  13. package/dist/index.js +10 -1
  14. package/dist/internal.d.ts +2 -0
  15. package/dist/lib/document.d.ts +6 -1
  16. package/dist/lib/document.js +21 -5
  17. package/dist/lib/element.js +15 -21
  18. package/dist/lib/lsp.js +88 -59
  19. package/dist/lib/node.d.ts +4 -4
  20. package/dist/lib/node.js +21 -24
  21. package/dist/lib/text.js +13 -14
  22. package/dist/lib/title.js +2 -1
  23. package/dist/mixin/attributesParent.js +1 -1
  24. package/dist/mixin/fixed.d.ts +1 -2
  25. package/dist/mixin/fixed.js +2 -3
  26. package/dist/mixin/gapped.d.ts +4 -0
  27. package/dist/mixin/gapped.js +24 -0
  28. package/dist/mixin/hidden.js +1 -1
  29. package/dist/mixin/multiLine.d.ts +4 -0
  30. package/dist/mixin/multiLine.js +33 -0
  31. package/dist/mixin/noEscape.js +1 -1
  32. package/dist/mixin/padded.d.ts +5 -0
  33. package/dist/mixin/padded.js +24 -0
  34. package/dist/mixin/singleLine.js +1 -1
  35. package/dist/mixin/sol.js +1 -1
  36. package/dist/mixin/syntax.js +3 -3
  37. package/dist/parser/braces.js +8 -12
  38. package/dist/parser/commentAndExt.js +18 -2
  39. package/dist/parser/magicLinks.js +2 -2
  40. package/dist/parser/quotes.js +0 -4
  41. package/dist/parser/selector.js +5 -2
  42. package/dist/src/arg.js +10 -13
  43. package/dist/src/atom.js +2 -7
  44. package/dist/src/attribute.js +6 -6
  45. package/dist/src/attributes.js +10 -14
  46. package/dist/src/commented.d.ts +26 -0
  47. package/dist/src/commented.js +52 -0
  48. package/dist/src/converter.js +3 -6
  49. package/dist/src/converterFlags.js +266 -223
  50. package/dist/src/converterRule.d.ts +2 -2
  51. package/dist/src/converterRule.js +2 -2
  52. package/dist/src/extLink.d.ts +2 -3
  53. package/dist/src/extLink.js +222 -175
  54. package/dist/src/gallery.d.ts +4 -5
  55. package/dist/src/gallery.js +179 -144
  56. package/dist/src/heading.js +11 -11
  57. package/dist/src/hidden.js +2 -7
  58. package/dist/src/imageParameter.d.ts +2 -2
  59. package/dist/src/imageParameter.js +6 -5
  60. package/dist/src/imagemap.d.ts +2 -2
  61. package/dist/src/imagemap.js +155 -123
  62. package/dist/src/imagemapLink.d.ts +2 -2
  63. package/dist/src/index.js +44 -20
  64. package/dist/src/link/base.d.ts +2 -3
  65. package/dist/src/link/base.js +13 -15
  66. package/dist/src/link/file.d.ts +2 -3
  67. package/dist/src/link/file.js +3 -3
  68. package/dist/src/link/galleryImage.d.ts +2 -3
  69. package/dist/src/link/galleryImage.js +7 -13
  70. package/dist/src/link/redirectTarget.js +1 -1
  71. package/dist/src/magicLink.js +7 -9
  72. package/dist/src/nested.d.ts +2 -2
  73. package/dist/src/nested.js +4 -7
  74. package/dist/src/nowiki/comment.d.ts +1 -1
  75. package/dist/src/nowiki/comment.js +2 -5
  76. package/dist/src/nowiki/doubleUnderscore.d.ts +1 -1
  77. package/dist/src/nowiki/doubleUnderscore.js +2 -5
  78. package/dist/src/nowiki/index.d.ts +2 -2
  79. package/dist/src/nowiki/index.js +2 -1
  80. package/dist/src/nowiki/quote.d.ts +3 -3
  81. package/dist/src/nowiki/quote.js +13 -12
  82. package/dist/src/onlyinclude.js +6 -13
  83. package/dist/src/paramTag/index.d.ts +2 -2
  84. package/dist/src/paramTag/index.js +102 -66
  85. package/dist/src/paramTag/inputbox.d.ts +1 -1
  86. package/dist/src/parameter.d.ts +4 -5
  87. package/dist/src/parameter.js +13 -13
  88. package/dist/src/pre.d.ts +4 -5
  89. package/dist/src/pre.js +8 -17
  90. package/dist/src/syntax.d.ts +1 -1
  91. package/dist/src/syntax.js +2 -7
  92. package/dist/src/table/base.d.ts +2 -2
  93. package/dist/src/table/base.js +8 -8
  94. package/dist/src/table/index.js +1 -1
  95. package/dist/src/table/td.d.ts +3 -3
  96. package/dist/src/table/td.js +9 -9
  97. package/dist/src/table/tr.d.ts +2 -2
  98. package/dist/src/tagPair/ext.js +35 -30
  99. package/dist/src/tagPair/index.d.ts +1 -1
  100. package/dist/src/tagPair/index.js +2 -5
  101. package/dist/src/tagPair/translate.d.ts +38 -0
  102. package/dist/src/tagPair/translate.js +129 -0
  103. package/dist/src/transclude.js +5 -6
  104. package/dist/util/html.js +16 -1
  105. package/dist/util/lint.js +17 -30
  106. package/dist/util/sharable.js +29 -1
  107. package/dist/util/sharable.mjs +31 -3
  108. package/dist/util/string.js +14 -1
  109. package/extensions/dist/base.js +1 -1
  110. package/extensions/dist/lsp.js +13 -2
  111. package/package.json +7 -6
  112. package/extensions/es7/base.js +0 -320
  113. package/extensions/es7/lint.js +0 -97
@@ -1,13 +1,49 @@
1
1
  "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
2
36
  Object.defineProperty(exports, "__esModule", { value: true });
3
37
  exports.ConverterFlagsToken = void 0;
4
38
  const lint_1 = require("../util/lint");
5
39
  const rect_1 = require("../lib/rect");
40
+ const gapped_1 = require("../mixin/gapped");
6
41
  const index_1 = require("./index");
7
42
  const atom_1 = require("./atom");
8
43
  /* NOT FOR BROWSER */
9
44
  const debug_1 = require("../util/debug");
10
45
  const constants_1 = require("../util/constants");
46
+ const html_1 = require("../util/html");
11
47
  /* NOT FOR BROWSER END */
12
48
  const definedFlags = new Set(['A', 'T', 'R', 'D', '-', 'H', 'N']);
13
49
  /**
@@ -16,249 +52,256 @@ const definedFlags = new Set(['A', 'T', 'R', 'D', '-', 'H', 'N']);
16
52
  * 转换flags
17
53
  * @classdesc `{childNodes: AtomToken[]}`
18
54
  */
19
- class ConverterFlagsToken extends index_1.Token {
20
- #flags;
21
- /* NOT FOR BROWSER END */
22
- get type() {
23
- return 'converter-flags';
24
- }
25
- /* NOT FOR BROWSER */
26
- /** all language conversion flags / 所有转换类型标记 */
27
- get flags() {
28
- return this.getAllFlags();
29
- }
30
- set flags(value) {
31
- this.replaceChildren();
32
- for (const flag of value) {
33
- this.#newFlag(flag);
55
+ let ConverterFlagsToken = (() => {
56
+ let _classDecorators = [(0, gapped_1.gapped)()];
57
+ let _classDescriptor;
58
+ let _classExtraInitializers = [];
59
+ let _classThis;
60
+ let _classSuper = index_1.Token;
61
+ var ConverterFlagsToken = class extends _classSuper {
62
+ static { _classThis = this; }
63
+ static {
64
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
65
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
66
+ ConverterFlagsToken = _classThis = _classDescriptor.value;
67
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
68
+ __runInitializers(_classThis, _classExtraInitializers);
69
+ }
70
+ #flags;
71
+ /* NOT FOR BROWSER END */
72
+ get type() {
73
+ return 'converter-flags';
34
74
  }
35
- }
36
- /* NOT FOR BROWSER END */
37
- /** @param flags 转换类型标记 */
38
- constructor(flags, config, accum = []) {
39
- super(undefined, config, accum, {
40
- AtomToken: ':',
41
- });
42
- this.append(...flags.map(flag => new atom_1.AtomToken(flag, 'converter-flag', config, accum)));
43
- }
44
- /** @private */
45
- afterBuild() {
46
- this.#flags = this.childNodes.map(child => child.text().trim());
47
- super.afterBuild();
48
75
  /* NOT FOR BROWSER */
49
- const /** @implements */ converterFlagsListener = ({ prevTarget }) => {
50
- if (prevTarget) {
51
- this.#flags[this.childNodes.indexOf(prevTarget)] = prevTarget.text().trim();
76
+ /** all language conversion flags / 所有转换类型标记 */
77
+ get flags() {
78
+ return this.getAllFlags();
79
+ }
80
+ set flags(value) {
81
+ this.replaceChildren();
82
+ for (const flag of value) {
83
+ this.#newFlag(flag);
52
84
  }
53
- };
54
- this.addEventListener(['remove', 'insert', 'text', 'replace'], converterFlagsListener);
55
- }
56
- /** @private */
57
- toString(skip) {
58
- return super.toString(skip, ';');
59
- }
60
- /** @private */
61
- text() {
62
- return super.text(';');
63
- }
64
- /** @private */
65
- getGaps() {
66
- return 1;
67
- }
68
- /**
69
- * Get unknown language conversion flags
70
- *
71
- * 获取未知的转换类型标记
72
- */
73
- getUnknownFlags() {
74
- return new Set(this.#flags.filter(flag => /\{{3}[^{}]+\}{3}/u.test(flag)));
75
- }
76
- /**
77
- * Get language coversion flags that specify a language variant
78
- *
79
- * 获取指定语言变体的转换标记
80
- */
81
- getVariantFlags() {
82
- const variants = new Set(this.getAttribute('config').variants);
83
- return new Set(this.#flags.filter(flag => variants.has(flag)));
84
- }
85
- /** @private */
86
- lint(start = this.getAbsoluteIndex(), re) {
87
- const variantFlags = this.getVariantFlags(), unknownFlags = this.getUnknownFlags(), validFlags = new Set(this.#flags.filter(flag => definedFlags.has(flag))), emptyFlagCount = this.#flags.filter(flag => !flag).length, knownFlagCount = this.#flags.length - unknownFlags.size - emptyFlagCount, errors = super.lint(start, re);
88
- if (variantFlags.size === knownFlagCount || validFlags.size === knownFlagCount) {
89
- return errors;
90
85
  }
91
- const rect = new rect_1.BoundingRect(this, start);
92
- for (let i = 0; i < this.length; i++) {
93
- const child = this.childNodes[i], flag = child.text().trim();
94
- if (flag
95
- && !variantFlags.has(flag)
96
- && !unknownFlags.has(flag)
97
- && (variantFlags.size > 0 || !validFlags.has(flag))) {
98
- const e = (0, lint_1.generateForChild)(child, rect, 'no-ignored', 'invalid conversion flag');
99
- if (variantFlags.size === 0 && definedFlags.has(flag.toUpperCase())) {
100
- e.fix = { range: [e.startIndex, e.endIndex], text: flag.toUpperCase(), desc: 'uppercase' };
86
+ /* NOT FOR BROWSER END */
87
+ /** @param flags 转换类型标记 */
88
+ constructor(flags, config, accum = []) {
89
+ super(undefined, config, accum, {
90
+ AtomToken: ':',
91
+ });
92
+ this.safeAppend(flags.map(flag => new atom_1.AtomToken(flag, 'converter-flag', config, accum)));
93
+ }
94
+ /** @private */
95
+ afterBuild() {
96
+ this.#flags = this.childNodes.map(child => child.text().trim());
97
+ super.afterBuild();
98
+ /* NOT FOR BROWSER */
99
+ const /** @implements */ converterFlagsListener = ({ prevTarget }) => {
100
+ if (prevTarget) {
101
+ this.#flags[this.childNodes.indexOf(prevTarget)] = prevTarget.text().trim();
101
102
  }
102
- else {
103
- e.suggestions = [{ desc: 'remove', range: [e.startIndex - (i && 1), e.endIndex], text: '' }];
103
+ };
104
+ this.addEventListener(['remove', 'insert', 'text', 'replace'], converterFlagsListener);
105
+ }
106
+ /** @private */
107
+ toString(skip) {
108
+ return super.toString(skip, ';');
109
+ }
110
+ /** @private */
111
+ text() {
112
+ return super.text(';');
113
+ }
114
+ /**
115
+ * Get unknown language conversion flags
116
+ *
117
+ * 获取未知的转换类型标记
118
+ */
119
+ getUnknownFlags() {
120
+ return new Set(this.#flags.filter(flag => /\{{3}[^{}]+\}{3}/u.test(flag)));
121
+ }
122
+ /**
123
+ * Get language coversion flags that specify a language variant
124
+ *
125
+ * 获取指定语言变体的转换标记
126
+ */
127
+ getVariantFlags() {
128
+ const variants = new Set(this.getAttribute('config').variants);
129
+ return new Set(this.#flags.filter(flag => variants.has(flag)));
130
+ }
131
+ /** @private */
132
+ lint(start = this.getAbsoluteIndex(), re) {
133
+ const variantFlags = this.getVariantFlags(), unknownFlags = this.getUnknownFlags(), validFlags = new Set(this.#flags.filter(flag => definedFlags.has(flag))), emptyFlagCount = this.#flags.filter(flag => !flag).length, knownFlagCount = this.#flags.length - unknownFlags.size - emptyFlagCount, errors = super.lint(start, re);
134
+ if (variantFlags.size === knownFlagCount || validFlags.size === knownFlagCount) {
135
+ return errors;
136
+ }
137
+ const rect = new rect_1.BoundingRect(this, start);
138
+ for (let i = 0; i < this.length; i++) {
139
+ const child = this.childNodes[i], flag = child.text().trim();
140
+ if (flag
141
+ && !variantFlags.has(flag)
142
+ && !unknownFlags.has(flag)
143
+ && (variantFlags.size > 0 || !validFlags.has(flag))) {
144
+ const e = (0, lint_1.generateForChild)(child, rect, 'no-ignored', 'invalid conversion flag');
145
+ if (variantFlags.size === 0 && definedFlags.has(flag.toUpperCase())) {
146
+ e.fix = { range: [e.startIndex, e.endIndex], text: flag.toUpperCase(), desc: 'uppercase' };
147
+ }
148
+ else {
149
+ e.suggestions = [{ desc: 'remove', range: [e.startIndex - (i && 1), e.endIndex], text: '' }];
150
+ }
151
+ errors.push(e);
104
152
  }
105
- errors.push(e);
106
153
  }
154
+ return errors;
107
155
  }
108
- return errors;
109
- }
110
- /** @private */
111
- print() {
112
- return super.print({ sep: ';' });
113
- }
114
- /* NOT FOR BROWSER */
115
- cloneNode() {
116
- const cloned = this.cloneChildNodes();
117
- return debug_1.Shadow.run(() => {
118
- // @ts-expect-error abstract class
119
- const token = new ConverterFlagsToken([], this.getAttribute('config'));
120
- token.append(...cloned);
121
- return token;
122
- });
123
- }
124
- /**
125
- * @override
126
- * @param i position of the child node / 移除位置
127
- */
128
- removeAt(i) {
129
- const token = super.removeAt(i);
130
- this.#flags?.splice(i, 1);
131
- return token;
132
- }
133
- /**
134
- * @override
135
- * @param token node to be inserted / 待插入的子节点
136
- * @param i position to be inserted at / 插入位置
137
- */
138
- insertAt(token, i = this.length) {
139
- super.insertAt(token, i);
140
- this.#flags?.splice(i, 0, token.text().trim());
141
- return token;
142
- }
143
- /**
144
- * Get all language conversion flags
145
- *
146
- * 获取所有转换类型标记
147
- */
148
- getAllFlags() {
149
- return new Set(this.#flags);
150
- }
151
- /**
152
- * Get the conversion flag token
153
- *
154
- * 获取转换类型标记节点
155
- * @param flag language conversion flag / 转换类型标记
156
- */
157
- getFlagTokens(flag) {
158
- return this.#flags.includes(flag) ? this.childNodes.filter(child => child.text().trim() === flag) : [];
159
- }
160
- /**
161
- * Get effective language conversion flags
162
- *
163
- * 获取有效的转换类型标记
164
- */
165
- getEffectiveFlags() {
166
- const variantFlags = this.getVariantFlags(), unknownFlags = this.getUnknownFlags();
167
- const flags = new Set([...this.#flags.filter(flag => definedFlags.has(flag)), ...unknownFlags]);
168
- if (flags.size === 0 && variantFlags.size === 0) {
169
- return new Set('S');
156
+ /** @private */
157
+ print() {
158
+ return super.print({ sep: ';' });
170
159
  }
171
- else if (flags.has('R')) {
172
- return new Set('R');
160
+ /* NOT FOR BROWSER */
161
+ cloneNode() {
162
+ // @ts-expect-error abstract class
163
+ return (0, html_1.cloneNode)(this, () => new ConverterFlagsToken([], this.getAttribute('config')));
173
164
  }
174
- else if (flags.has('N')) {
175
- return new Set('N');
165
+ /**
166
+ * @override
167
+ * @param i position of the child node / 移除位置
168
+ */
169
+ removeAt(i) {
170
+ const token = super.removeAt(i);
171
+ this.#flags?.splice(i, 1);
172
+ return token;
176
173
  }
177
- else if (flags.has('-')) {
178
- return new Set('-');
174
+ /**
175
+ * @override
176
+ * @param token node to be inserted / 待插入的子节点
177
+ * @param i position to be inserted at / 插入位置
178
+ */
179
+ insertAt(token, i = this.length) {
180
+ super.insertAt(token, i);
181
+ this.#flags?.splice(i, 0, token.text().trim());
182
+ return token;
179
183
  }
180
- else if (flags.has('H')) {
181
- const hasT = flags.has('T'), hasD = flags.has('D');
182
- return hasT && hasD
183
- ? new Set(['+', 'H', 'T', 'D'])
184
- : new Set(['+', 'H', ...hasT ? ['T'] : [], ...hasD ? ['D'] : [], ...unknownFlags]);
184
+ /**
185
+ * Get all language conversion flags
186
+ *
187
+ * 获取所有转换类型标记
188
+ */
189
+ getAllFlags() {
190
+ return new Set(this.#flags);
185
191
  }
186
- else if (variantFlags.size > 0) {
187
- return new Set([...variantFlags, ...unknownFlags]);
192
+ /**
193
+ * Get the conversion flag token
194
+ *
195
+ * 获取转换类型标记节点
196
+ * @param flag language conversion flag / 转换类型标记
197
+ */
198
+ getFlagTokens(flag) {
199
+ return this.#flags.includes(flag) ? this.childNodes.filter(child => child.text().trim() === flag) : [];
188
200
  }
189
- if (flags.size === 1 && flags.has('T')) {
190
- flags.add('H');
201
+ /**
202
+ * Get effective language conversion flags
203
+ *
204
+ * 获取有效的转换类型标记
205
+ */
206
+ getEffectiveFlags() {
207
+ const variantFlags = this.getVariantFlags(), unknownFlags = this.getUnknownFlags();
208
+ const flags = new Set([...this.#flags.filter(flag => definedFlags.has(flag)), ...unknownFlags]);
209
+ if (flags.size === 0 && variantFlags.size === 0) {
210
+ return new Set('S');
211
+ }
212
+ else if (flags.has('R')) {
213
+ return new Set('R');
214
+ }
215
+ else if (flags.has('N')) {
216
+ return new Set('N');
217
+ }
218
+ else if (flags.has('-')) {
219
+ return new Set('-');
220
+ }
221
+ else if (flags.has('H')) {
222
+ const hasT = flags.has('T'), hasD = flags.has('D');
223
+ return hasT && hasD
224
+ ? new Set(['+', 'H', 'T', 'D'])
225
+ : new Set(['+', 'H', ...hasT ? ['T'] : [], ...hasD ? ['D'] : [], ...unknownFlags]);
226
+ }
227
+ else if (variantFlags.size > 0) {
228
+ return new Set([...variantFlags, ...unknownFlags]);
229
+ }
230
+ if (flags.size === 1 && flags.has('T')) {
231
+ flags.add('H');
232
+ }
233
+ if (flags.has('A')) {
234
+ flags.add('+');
235
+ flags.add('S');
236
+ }
237
+ if (flags.has('D')) {
238
+ flags.delete('S');
239
+ }
240
+ return flags;
191
241
  }
192
- if (flags.has('A')) {
193
- flags.add('+');
194
- flags.add('S');
242
+ /**
243
+ * Check if a language conversion flag is present
244
+ *
245
+ * 是否具有某转换类型标记
246
+ * @param flag language conversion flag / 转换类型标记
247
+ */
248
+ hasFlag(flag) {
249
+ return this.#flags.includes(flag);
195
250
  }
196
- if (flags.has('D')) {
197
- flags.delete('S');
251
+ /**
252
+ * Check if an effective language conversion flag is present
253
+ *
254
+ * 是否具有某有效的转换类型标记
255
+ * @param flag language conversion flag / 转换类型标记
256
+ */
257
+ hasEffectiveFlag(flag) {
258
+ return this.getEffectiveFlags().has(flag);
198
259
  }
199
- return flags;
200
- }
201
- /**
202
- * Check if a language conversion flag is present
203
- *
204
- * 是否具有某转换类型标记
205
- * @param flag language conversion flag / 转换类型标记
206
- */
207
- hasFlag(flag) {
208
- return this.#flags.includes(flag);
209
- }
210
- /**
211
- * Check if an effective language conversion flag is present
212
- *
213
- * 是否具有某有效的转换类型标记
214
- * @param flag language conversion flag / 转换类型标记
215
- */
216
- hasEffectiveFlag(flag) {
217
- return this.getEffectiveFlags().has(flag);
218
- }
219
- /**
220
- * Remove a language conversion flag
221
- *
222
- * 移除某转换类型标记
223
- * @param flag language conversion flag / 转换类型标记
224
- */
225
- removeFlag(flag) {
226
- for (const token of this.getFlagTokens(flag)) {
227
- token.remove();
260
+ /**
261
+ * Remove a language conversion flag
262
+ *
263
+ * 移除某转换类型标记
264
+ * @param flag language conversion flag / 转换类型标记
265
+ */
266
+ removeFlag(flag) {
267
+ for (const token of this.getFlagTokens(flag)) {
268
+ token.remove();
269
+ }
228
270
  }
229
- }
230
- /**
231
- * 添加转换类型标记
232
- * @param flag 转换类型标记
233
- */
234
- #newFlag(flag) {
235
- this.insertAt(debug_1.Shadow.run(() => new atom_1.AtomToken(flag, 'converter-flag', this.getAttribute('config'))));
236
- }
237
- /**
238
- * Set a language conversion flag
239
- *
240
- * 设置转换类型标记
241
- * @param flag language conversion flag / 转换类型标记
242
- */
243
- setFlag(flag) {
244
- if (!this.#flags.includes(flag)) {
245
- this.#newFlag(flag);
271
+ /**
272
+ * 添加转换类型标记
273
+ * @param flag 转换类型标记
274
+ */
275
+ #newFlag(flag) {
276
+ this.insertAt(debug_1.Shadow.run(() => new atom_1.AtomToken(flag, 'converter-flag', this.getAttribute('config'))));
246
277
  }
247
- }
248
- /**
249
- * Toggle a language conversion flag
250
- *
251
- * 开关转换类型标记
252
- * @param flag language conversion flag / 转换类型标记
253
- */
254
- toggleFlag(flag) {
255
- if (this.#flags.includes(flag)) {
256
- this.removeFlag(flag);
278
+ /**
279
+ * Set a language conversion flag
280
+ *
281
+ * 设置转换类型标记
282
+ * @param flag language conversion flag / 转换类型标记
283
+ */
284
+ setFlag(flag) {
285
+ if (!this.#flags.includes(flag)) {
286
+ this.#newFlag(flag);
287
+ }
257
288
  }
258
- else {
259
- this.#newFlag(flag);
289
+ /**
290
+ * Toggle a language conversion flag
291
+ *
292
+ * 开关转换类型标记
293
+ * @param flag language conversion flag / 转换类型标记
294
+ */
295
+ toggleFlag(flag) {
296
+ if (this.#flags.includes(flag)) {
297
+ this.removeFlag(flag);
298
+ }
299
+ else {
300
+ this.#newFlag(flag);
301
+ }
260
302
  }
261
- }
262
- }
303
+ };
304
+ return ConverterFlagsToken = _classThis;
305
+ })();
263
306
  exports.ConverterFlagsToken = ConverterFlagsToken;
264
307
  constants_1.classes['ConverterFlagsToken'] = __filename;
@@ -14,13 +14,13 @@ export declare abstract class ConverterRuleToken extends Token {
14
14
  abstract get firstChild(): AtomToken;
15
15
  abstract get lastChild(): AtomToken;
16
16
  abstract get parentNode(): ConverterToken | undefined;
17
- abstract get previousSibling(): ConverterFlagsToken | this;
17
+ abstract get previousSibling(): ConverterFlagsToken | this | undefined;
18
18
  abstract get nextSibling(): this | undefined;
19
19
  abstract get children(): [AtomToken] | [AtomToken, AtomToken] | [AtomToken, AtomToken, AtomToken];
20
20
  abstract get firstElementChild(): AtomToken;
21
21
  abstract get lastElementChild(): AtomToken;
22
22
  abstract get parentElement(): ConverterToken | undefined;
23
- abstract get previousElementSibling(): ConverterFlagsToken | this;
23
+ abstract get previousElementSibling(): ConverterFlagsToken | this | undefined;
24
24
  abstract get nextElementSibling(): this | undefined;
25
25
  get type(): 'converter-rule';
26
26
  /** language variant / 语言变体 */
@@ -185,7 +185,7 @@ class ConverterRuleToken extends index_2.Token {
185
185
  setTo(to) {
186
186
  const { childNodes } = index_1.default
187
187
  .parse(to, this.getAttribute('include'), undefined, this.getAttribute('config'));
188
- this.lastChild.replaceChildren(...childNodes);
188
+ this.lastChild.safeReplaceChildren(childNodes);
189
189
  }
190
190
  /**
191
191
  * Set the language variant
@@ -218,7 +218,7 @@ class ConverterRuleToken extends index_2.Token {
218
218
  if (!unidirectional) {
219
219
  super.insertAt(debug_1.Shadow.run(() => new atom_1.AtomToken(undefined, 'converter-rule-from', config)), 0);
220
220
  }
221
- this.firstChild.replaceChildren(...childNodes);
221
+ this.firstChild.safeReplaceChildren(childNodes);
222
222
  }
223
223
  /**
224
224
  * Make the language conversion unidirectional
@@ -1,7 +1,6 @@
1
- import Parser from '../index';
2
1
  import { Token } from './index';
3
2
  import { MagicLinkToken } from './magicLink';
4
- import type { LintError } from '../base';
3
+ import type { Config, LintError } from '../base';
5
4
  /**
6
5
  * external link
7
6
  *
@@ -31,7 +30,7 @@ export declare abstract class ExtLinkToken extends Token {
31
30
  * @param space 空白字符
32
31
  * @param text 链接文字
33
32
  */
34
- constructor(url?: string, space?: string, text?: string, config?: Parser.Config, accum?: Token[]);
33
+ constructor(url?: string, space?: string, text?: string, config?: Config, accum?: Token[]);
35
34
  cloneNode(): this;
36
35
  /**
37
36
  * Set the text of the link