wikiparser-node 1.3.9 → 1.4.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/dist/base.d.ts +3 -1
- package/dist/lib/element.d.ts +10 -11
- package/dist/lib/element.js +34 -21
- package/dist/lib/node.d.ts +2 -3
- package/dist/lib/node.js +4 -4
- package/dist/lib/range.d.ts +2 -3
- package/dist/lib/ranges.d.ts +2 -3
- package/dist/lib/text.d.ts +0 -1
- package/dist/lib/title.d.ts +0 -1
- package/dist/mixin/attributesParent.d.ts +80 -0
- package/dist/mixin/fixed.d.ts +31 -0
- package/dist/mixin/fixed.js +8 -5
- package/dist/mixin/flagsParent.d.ts +61 -0
- package/dist/mixin/hidden.d.ts +18 -0
- package/dist/mixin/hidden.js +4 -5
- package/dist/mixin/magicLinkParent.d.ts +34 -0
- package/dist/mixin/singleLine.d.ts +14 -0
- package/dist/mixin/sol.d.ts +18 -0
- package/dist/mixin/syntax.d.ts +19 -0
- package/dist/parser/hrAndDoubleUnderscore.js +3 -3
- package/dist/src/arg.d.ts +1 -2
- package/dist/src/attribute.d.ts +3 -21
- package/dist/src/attribute.js +1 -1
- package/dist/src/attributes.d.ts +2 -3
- package/dist/src/converter.d.ts +3 -21
- package/dist/src/converterFlags.d.ts +2 -3
- package/dist/src/converterRule.d.ts +1 -1
- package/dist/src/extLink.d.ts +3 -22
- package/dist/src/gallery.d.ts +2 -3
- package/dist/src/heading.d.ts +6 -33
- package/dist/src/heading.js +1 -1
- package/dist/src/hidden.d.ts +1 -15
- package/dist/src/hidden.js +1 -1
- package/dist/src/html.d.ts +6 -35
- package/dist/src/html.js +19 -3
- package/dist/src/imageParameter.d.ts +2 -3
- package/dist/src/imageParameter.js +8 -8
- package/dist/src/imagemap.d.ts +2 -2
- package/dist/src/imagemapLink.d.ts +5 -32
- package/dist/src/imagemapLink.js +1 -1
- package/dist/src/index.d.ts +7 -8
- package/dist/src/link/base.d.ts +1 -2
- package/dist/src/link/base.js +2 -6
- package/dist/src/link/file.d.ts +12 -13
- package/dist/src/link/file.js +11 -8
- package/dist/src/link/galleryImage.d.ts +2 -18
- package/dist/src/link/galleryImage.js +1 -1
- package/dist/src/link/index.d.ts +4 -2
- package/dist/src/link/index.js +11 -0
- package/dist/src/magicLink.d.ts +2 -15
- package/dist/src/nested.d.ts +1 -2
- package/dist/src/nowiki/base.d.ts +3 -20
- package/dist/src/nowiki/base.js +1 -1
- package/dist/src/nowiki/comment.d.ts +1 -15
- package/dist/src/nowiki/comment.js +1 -1
- package/dist/src/nowiki/doubleUnderscore.d.ts +6 -27
- package/dist/src/nowiki/doubleUnderscore.js +7 -7
- package/dist/src/nowiki/hr.d.ts +4 -23
- package/dist/src/nowiki/list.d.ts +2 -15
- package/dist/src/nowiki/listBase.d.ts +1 -11
- package/dist/src/nowiki/noinclude.d.ts +1 -15
- package/dist/src/nowiki/noinclude.js +1 -1
- package/dist/src/nowiki/quote.d.ts +1 -11
- package/dist/src/nowiki/quote.js +9 -1
- package/dist/src/paramTag/index.d.ts +1 -1
- package/dist/src/parameter.d.ts +3 -20
- package/dist/src/parameter.js +1 -1
- package/dist/src/pre.d.ts +1 -1
- package/dist/src/syntax.d.ts +1 -12
- package/dist/src/table/base.d.ts +4 -26
- package/dist/src/table/index.d.ts +3 -3
- package/dist/src/table/index.js +1 -1
- package/dist/src/table/td.d.ts +3 -21
- package/dist/src/table/td.js +1 -1
- package/dist/src/table/tr.d.ts +1 -2
- package/dist/src/table/trBase.d.ts +0 -1
- package/dist/src/tagPair/ext.d.ts +3 -21
- package/dist/src/tagPair/include.d.ts +2 -19
- package/dist/src/tagPair/include.js +1 -1
- package/dist/src/tagPair/index.d.ts +3 -18
- package/dist/src/tagPair/index.js +1 -1
- package/dist/src/transclude.d.ts +8 -9
- package/i18n/zh-hans.json +1 -0
- package/i18n/zh-hant.json +1 -0
- package/package.json +4 -3
package/dist/base.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export interface LintError {
|
|
|
27
27
|
/** 类似Node */
|
|
28
28
|
export interface AstNode {
|
|
29
29
|
type: string;
|
|
30
|
-
readonly childNodes: AstNode[];
|
|
30
|
+
readonly childNodes: readonly AstNode[];
|
|
31
31
|
/** Linter */
|
|
32
32
|
lint(): LintError[];
|
|
33
33
|
/** 以HTML格式打印 */
|
|
@@ -41,6 +41,8 @@ interface AstElement extends AstNode {
|
|
|
41
41
|
export interface Parser {
|
|
42
42
|
config: string | Config;
|
|
43
43
|
i18n: string | Record<string, string> | undefined;
|
|
44
|
+
/** 获取解析设置 */
|
|
45
|
+
getConfig(): Config;
|
|
44
46
|
/**
|
|
45
47
|
* 解析wikitext
|
|
46
48
|
* @param include 是否嵌入
|
package/dist/lib/element.d.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { AstNode } from './node';
|
|
2
2
|
import type { LintError } from '../base';
|
|
3
|
-
import type { AstNodes, AstText, Token
|
|
3
|
+
import type { AstNodes, AstText, Token } from '../internal';
|
|
4
4
|
/** 类似HTMLElement */
|
|
5
5
|
export declare abstract class AstElement extends AstNode {
|
|
6
|
-
#private;
|
|
7
6
|
readonly name?: string;
|
|
8
7
|
readonly data: undefined;
|
|
9
8
|
/** 子节点总数 */
|
|
10
9
|
get length(): number;
|
|
11
10
|
/** 全部非文本子节点 */
|
|
12
|
-
get children():
|
|
11
|
+
get children(): Token[];
|
|
13
12
|
/** 首位非文本子节点 */
|
|
14
13
|
get firstElementChild(): Token | undefined;
|
|
15
14
|
/** 末位非文本子节点 */
|
|
@@ -54,7 +53,7 @@ export declare abstract class AstElement extends AstNode {
|
|
|
54
53
|
* 最近的祖先节点
|
|
55
54
|
* @param selector 选择器
|
|
56
55
|
*/
|
|
57
|
-
closest<T
|
|
56
|
+
closest<T = Token>(selector: string): T | undefined;
|
|
58
57
|
/**
|
|
59
58
|
* 在末尾批量插入子节点
|
|
60
59
|
* @param elements 插入节点
|
|
@@ -93,37 +92,37 @@ export declare abstract class AstElement extends AstNode {
|
|
|
93
92
|
* 检查是否符合选择器
|
|
94
93
|
* @param selector 选择器
|
|
95
94
|
*/
|
|
96
|
-
matches(selector?: string):
|
|
95
|
+
matches<T>(selector?: string): this is T;
|
|
97
96
|
/**
|
|
98
97
|
* 符合选择器的第一个后代节点
|
|
99
98
|
* @param selector 选择器
|
|
100
99
|
*/
|
|
101
|
-
querySelector<T
|
|
100
|
+
querySelector<T = Token>(selector: string): T | undefined;
|
|
102
101
|
/**
|
|
103
102
|
* 类型选择器
|
|
104
103
|
* @param types
|
|
105
104
|
*/
|
|
106
|
-
getElementByTypes<T
|
|
105
|
+
getElementByTypes<T = Token>(types: string): T | undefined;
|
|
107
106
|
/**
|
|
108
107
|
* id选择器
|
|
109
108
|
* @param id id名
|
|
110
109
|
*/
|
|
111
|
-
getElementById(id: string):
|
|
110
|
+
getElementById<T = Token>(id: string): T | undefined;
|
|
112
111
|
/**
|
|
113
112
|
* 符合选择器的所有后代节点
|
|
114
113
|
* @param selector 选择器
|
|
115
114
|
*/
|
|
116
|
-
querySelectorAll<T
|
|
115
|
+
querySelectorAll<T = Token>(selector: string): T[];
|
|
117
116
|
/**
|
|
118
117
|
* 类选择器
|
|
119
118
|
* @param className 类名之一
|
|
120
119
|
*/
|
|
121
|
-
getElementsByClassName(className: string):
|
|
120
|
+
getElementsByClassName<T = Token>(className: string): T[];
|
|
122
121
|
/**
|
|
123
122
|
* 标签名选择器
|
|
124
123
|
* @param tag 标签名
|
|
125
124
|
*/
|
|
126
|
-
getElementsByTagName(tag: string):
|
|
125
|
+
getElementsByTagName<T = Token>(tag: string): T[];
|
|
127
126
|
/**
|
|
128
127
|
* 获取某一行的wikitext
|
|
129
128
|
* @param n 行号
|
package/dist/lib/element.js
CHANGED
|
@@ -6,6 +6,8 @@ const path = require("path");
|
|
|
6
6
|
const string_1 = require("../util/string");
|
|
7
7
|
const constants_1 = require("../util/constants");
|
|
8
8
|
const debug_1 = require("../util/debug");
|
|
9
|
+
const debug_2 = require("../util/debug");
|
|
10
|
+
const lint_1 = require("../util/lint");
|
|
9
11
|
const selector_1 = require("../parser/selector");
|
|
10
12
|
const ranges_1 = require("./ranges");
|
|
11
13
|
const title_1 = require("./title");
|
|
@@ -156,19 +158,28 @@ class AstElement extends node_1.AstNode {
|
|
|
156
158
|
return node;
|
|
157
159
|
}
|
|
158
160
|
/**
|
|
159
|
-
*
|
|
161
|
+
* 将选择器转化为类型谓词
|
|
160
162
|
* @param selector 选择器
|
|
161
163
|
*/
|
|
162
|
-
|
|
163
|
-
let
|
|
164
|
+
#getCondition(selector) {
|
|
165
|
+
let condition;
|
|
164
166
|
if (/[^a-z\-,\s]/u.test(selector)) {
|
|
165
167
|
const stack = (0, selector_1.parseSelector)(selector);
|
|
166
|
-
condition =
|
|
168
|
+
condition = (token => stack.some(copy => token.#matchesArray(copy)));
|
|
167
169
|
}
|
|
168
170
|
else {
|
|
169
171
|
const types = new Set(selector.split(',').map(str => str.trim()));
|
|
170
|
-
condition =
|
|
172
|
+
condition = (token => types.has(token.type));
|
|
171
173
|
}
|
|
174
|
+
return condition;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* 最近的祖先节点
|
|
178
|
+
* @param selector 选择器
|
|
179
|
+
*/
|
|
180
|
+
closest(selector) {
|
|
181
|
+
const condition = this.#getCondition(selector);
|
|
182
|
+
let { parentNode } = this;
|
|
172
183
|
while (parentNode) {
|
|
173
184
|
if (condition(parentNode)) {
|
|
174
185
|
return parentNode;
|
|
@@ -225,9 +236,18 @@ class AstElement extends node_1.AstNode {
|
|
|
225
236
|
*/
|
|
226
237
|
lint(start = this.getAbsoluteIndex()) {
|
|
227
238
|
const errors = [];
|
|
239
|
+
const cats = new Set(), isCategory = (0, debug_2.isToken)('category');
|
|
228
240
|
for (let i = 0, cur = start + this.getAttribute('padding'); i < this.length; i++) {
|
|
229
241
|
const child = this.childNodes[i];
|
|
230
242
|
errors.push(...child.lint(cur));
|
|
243
|
+
if (isCategory(child)) {
|
|
244
|
+
if (cats.has(child.name)) {
|
|
245
|
+
errors.push((0, lint_1.generateForSelf)(child, { start: cur }, 'duplicated category'));
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
cats.add(child.name);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
231
251
|
cur += String(child).length + this.getGaps(i);
|
|
232
252
|
}
|
|
233
253
|
return errors;
|
|
@@ -458,19 +478,12 @@ class AstElement extends node_1.AstNode {
|
|
|
458
478
|
}
|
|
459
479
|
return false;
|
|
460
480
|
}
|
|
461
|
-
/**
|
|
462
|
-
* 检查是否符合解析后的组合选择器
|
|
463
|
-
* @param stack 解析后的一组选择器
|
|
464
|
-
*/
|
|
465
|
-
#matchesStack(stack) {
|
|
466
|
-
return stack.some(condition => this.#matchesArray(condition));
|
|
467
|
-
}
|
|
468
481
|
/**
|
|
469
482
|
* 检查是否符合选择器
|
|
470
483
|
* @param selector 选择器
|
|
471
484
|
*/
|
|
472
485
|
matches(selector) {
|
|
473
|
-
return selector === undefined || this.#
|
|
486
|
+
return selector === undefined || this.#getCondition(selector)(this);
|
|
474
487
|
}
|
|
475
488
|
/**
|
|
476
489
|
* 符合条件的第一个后代节点
|
|
@@ -493,8 +506,8 @@ class AstElement extends node_1.AstNode {
|
|
|
493
506
|
* @param selector 选择器
|
|
494
507
|
*/
|
|
495
508
|
querySelector(selector) {
|
|
496
|
-
const
|
|
497
|
-
return this.#getElementBy(
|
|
509
|
+
const condition = this.#getCondition(selector);
|
|
510
|
+
return this.#getElementBy(condition);
|
|
498
511
|
}
|
|
499
512
|
/**
|
|
500
513
|
* 类型选择器
|
|
@@ -502,14 +515,14 @@ class AstElement extends node_1.AstNode {
|
|
|
502
515
|
*/
|
|
503
516
|
getElementByTypes(types) {
|
|
504
517
|
const typeSet = new Set(types.split(',').map(str => str.trim()));
|
|
505
|
-
return this.#getElementBy(({ type }) => typeSet.has(type));
|
|
518
|
+
return this.#getElementBy((({ type }) => typeSet.has(type)));
|
|
506
519
|
}
|
|
507
520
|
/**
|
|
508
521
|
* id选择器
|
|
509
522
|
* @param id id名
|
|
510
523
|
*/
|
|
511
524
|
getElementById(id) {
|
|
512
|
-
return this.#getElementBy(token => 'id' in token && token.id === id);
|
|
525
|
+
return this.#getElementBy((token => 'id' in token && token.id === id));
|
|
513
526
|
}
|
|
514
527
|
/**
|
|
515
528
|
* 符合条件的所有后代节点
|
|
@@ -530,22 +543,22 @@ class AstElement extends node_1.AstNode {
|
|
|
530
543
|
* @param selector 选择器
|
|
531
544
|
*/
|
|
532
545
|
querySelectorAll(selector) {
|
|
533
|
-
const
|
|
534
|
-
return this.#getElementsBy(
|
|
546
|
+
const condition = this.#getCondition(selector);
|
|
547
|
+
return this.#getElementsBy(condition);
|
|
535
548
|
}
|
|
536
549
|
/**
|
|
537
550
|
* 类选择器
|
|
538
551
|
* @param className 类名之一
|
|
539
552
|
*/
|
|
540
553
|
getElementsByClassName(className) {
|
|
541
|
-
return this.#getElementsBy(token => 'classList' in token && token.classList.has(className));
|
|
554
|
+
return this.#getElementsBy((token => 'classList' in token && token.classList.has(className)));
|
|
542
555
|
}
|
|
543
556
|
/**
|
|
544
557
|
* 标签名选择器
|
|
545
558
|
* @param tag 标签名
|
|
546
559
|
*/
|
|
547
560
|
getElementsByTagName(tag) {
|
|
548
|
-
return this.#getElementsBy(({ type, name }) => name === tag && (type === 'html' || type === 'ext'));
|
|
561
|
+
return this.#getElementsBy((({ type, name }) => name === tag && (type === 'html' || type === 'ext')));
|
|
549
562
|
}
|
|
550
563
|
/**
|
|
551
564
|
* 获取某一行的wikitext
|
package/dist/lib/node.d.ts
CHANGED
|
@@ -16,10 +16,9 @@ export interface CaretPosition {
|
|
|
16
16
|
}
|
|
17
17
|
/** 类似Node */
|
|
18
18
|
export declare abstract class AstNode implements AstNodeBase {
|
|
19
|
-
#private;
|
|
20
19
|
type: TokenTypes | 'text';
|
|
21
20
|
data?: string | undefined;
|
|
22
|
-
readonly childNodes: AstNodes[];
|
|
21
|
+
readonly childNodes: readonly AstNodes[];
|
|
23
22
|
abstract lint(): LintError[];
|
|
24
23
|
abstract print(): string;
|
|
25
24
|
/** 首位子节点 */
|
|
@@ -120,7 +119,7 @@ export declare abstract class AstNode implements AstNodeBase {
|
|
|
120
119
|
* 列举事件监听
|
|
121
120
|
* @param type 事件类型
|
|
122
121
|
*/
|
|
123
|
-
listEventListeners(type: string):
|
|
122
|
+
listEventListeners(type: string): Function[];
|
|
124
123
|
/**
|
|
125
124
|
* 触发事件
|
|
126
125
|
* @param e 事件对象
|
package/dist/lib/node.js
CHANGED
|
@@ -94,7 +94,7 @@ class AstNode {
|
|
|
94
94
|
}
|
|
95
95
|
/** @private */
|
|
96
96
|
get fixed() {
|
|
97
|
-
return
|
|
97
|
+
return false;
|
|
98
98
|
}
|
|
99
99
|
constructor() {
|
|
100
100
|
Object.defineProperty(this, 'childNodes', { writable: false });
|
|
@@ -203,13 +203,13 @@ class AstNode {
|
|
|
203
203
|
throw new Error(`${this.constructor.name} ${msg}!`);
|
|
204
204
|
}
|
|
205
205
|
/** @private */
|
|
206
|
-
seal(key,
|
|
207
|
-
if (!
|
|
206
|
+
seal(key, permanent) {
|
|
207
|
+
if (!permanent) {
|
|
208
208
|
this.#optional.add(key);
|
|
209
209
|
}
|
|
210
210
|
Object.defineProperty(this, key, {
|
|
211
211
|
writable: false,
|
|
212
|
-
enumerable: !
|
|
212
|
+
enumerable: !permanent && Boolean(this[key]),
|
|
213
213
|
configurable: true,
|
|
214
214
|
});
|
|
215
215
|
}
|
package/dist/lib/range.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import type { AstNodes } from '../internal';
|
|
|
2
2
|
import type { Dimension, Position } from './node';
|
|
3
3
|
/** 模拟Range对象 */
|
|
4
4
|
export declare class AstRange {
|
|
5
|
-
#private;
|
|
6
5
|
/** 起点容器 */
|
|
7
6
|
get startContainer(): AstNodes;
|
|
8
7
|
/** 起点位置 */
|
|
@@ -98,7 +97,7 @@ export declare class AstRange {
|
|
|
98
97
|
*/
|
|
99
98
|
insertNode(newNode: AstNodes | string): void;
|
|
100
99
|
/** 获取范围内的全部节点 */
|
|
101
|
-
extractContents():
|
|
100
|
+
extractContents(): AstNodes[];
|
|
102
101
|
/** 在满足条件时拷贝范围内的全部节点 */
|
|
103
|
-
cloneContents():
|
|
102
|
+
cloneContents(): AstNodes[];
|
|
104
103
|
}
|
package/dist/lib/ranges.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/** 模拟Python的Range对象。除`step`至少为`1`外,允许负数、小数或`end < start`的情形。 */
|
|
2
2
|
export declare class Range {
|
|
3
|
-
#private;
|
|
4
3
|
/**
|
|
5
4
|
* @param s 表达式
|
|
6
5
|
* @throws `RangeError` 起点、终点和步长均应为整数
|
|
@@ -12,7 +11,7 @@ export declare class Range {
|
|
|
12
11
|
* 将Range转换为针对特定数组的下标集
|
|
13
12
|
* @param arr 参考数组`[0, 1, 2, ...]`
|
|
14
13
|
*/
|
|
15
|
-
applyTo(arr: readonly number[]):
|
|
14
|
+
applyTo(arr: readonly number[]): number[];
|
|
16
15
|
}
|
|
17
16
|
/** @extends {Array<number|Range>} */
|
|
18
17
|
export declare class Ranges extends Array<number | Range> {
|
|
@@ -22,5 +21,5 @@ export declare class Ranges extends Array<number | Range> {
|
|
|
22
21
|
* 将Ranges转换为针对特定Array的下标集
|
|
23
22
|
* @param arr 参考数组
|
|
24
23
|
*/
|
|
25
|
-
applyTo(arr: number | readonly unknown[]):
|
|
24
|
+
applyTo(arr: number | readonly unknown[]): number[];
|
|
26
25
|
}
|
package/dist/lib/text.d.ts
CHANGED
package/dist/lib/title.d.ts
CHANGED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { AstNodes, AttributesToken } from '../internal';
|
|
2
|
+
export interface AttributesParentBase {
|
|
3
|
+
attributes: Record<string, string | true>;
|
|
4
|
+
className: string;
|
|
5
|
+
classList: Set<string>;
|
|
6
|
+
id: string;
|
|
7
|
+
hasAttr(key: string): boolean;
|
|
8
|
+
getAttr(key: string): string | true | undefined;
|
|
9
|
+
getAttrNames(): Set<string>;
|
|
10
|
+
getAttrs(): Record<string, string | true>;
|
|
11
|
+
setAttr(key: string, value: string | boolean): void;
|
|
12
|
+
setAttr(prop: Record<string, string | boolean>): void;
|
|
13
|
+
removeAttr(key: string): void;
|
|
14
|
+
toggleAttr(key: string, force?: boolean): void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 子节点含有AttributesToken的类
|
|
18
|
+
* @param constructor 基类
|
|
19
|
+
* @param i AttributesToken子节点的位置
|
|
20
|
+
*/
|
|
21
|
+
export declare const attributesParent: <T extends AstConstructor>(constructor: T, i?: number) => (abstract new (...args: any[]) => {
|
|
22
|
+
readonly childNodes: readonly AstNodes[];
|
|
23
|
+
/** AttributesToken子节点 */
|
|
24
|
+
readonly "__#7@#attributesChild": AttributesToken;
|
|
25
|
+
/** getAttrs()方法的getter写法 */
|
|
26
|
+
attributes: Record<string, string | true>;
|
|
27
|
+
/** 以字符串表示的class属性 */
|
|
28
|
+
className: string;
|
|
29
|
+
/** 以Set表示的class属性 */
|
|
30
|
+
classList: Set<string>;
|
|
31
|
+
/** id属性 */
|
|
32
|
+
id: string;
|
|
33
|
+
/**
|
|
34
|
+
* AttributesToken子节点是否具有某属性
|
|
35
|
+
* @param key 属性键
|
|
36
|
+
*/
|
|
37
|
+
hasAttr(key: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 获取AttributesToken子节点的属性
|
|
40
|
+
* @param key 属性键
|
|
41
|
+
*/
|
|
42
|
+
getAttr(key: string): string | true | undefined;
|
|
43
|
+
/** 列举AttributesToken子节点的属性键 */
|
|
44
|
+
getAttrNames(): Set<string>;
|
|
45
|
+
/** 获取AttributesToken子节点的全部标签属性 */
|
|
46
|
+
getAttrs(): Record<string, string | true>;
|
|
47
|
+
/**
|
|
48
|
+
* 对AttributesToken子节点设置属性
|
|
49
|
+
* @param key 属性键
|
|
50
|
+
* @param value 属性值
|
|
51
|
+
* @param prop 属性对象
|
|
52
|
+
*/
|
|
53
|
+
setAttr(key: string, value: string | boolean): void;
|
|
54
|
+
/**
|
|
55
|
+
* 对AttributesToken子节点设置属性
|
|
56
|
+
* @param key 属性键
|
|
57
|
+
* @param value 属性值
|
|
58
|
+
* @param prop 属性对象
|
|
59
|
+
*/
|
|
60
|
+
setAttr(prop: Record<string, string | boolean>): void;
|
|
61
|
+
/**
|
|
62
|
+
* 移除AttributesToken子节点的某属性
|
|
63
|
+
* @param key 属性键
|
|
64
|
+
*/
|
|
65
|
+
removeAttr(key: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* 开关AttributesToken子节点的某属性
|
|
68
|
+
* @param key 属性键
|
|
69
|
+
* @param force 强制开启或关闭
|
|
70
|
+
*/
|
|
71
|
+
toggleAttr(key: string, force?: boolean): void;
|
|
72
|
+
toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
|
|
73
|
+
text(separator?: string | undefined): string;
|
|
74
|
+
insertAt(token: unknown, i?: number | undefined): unknown;
|
|
75
|
+
getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
|
|
76
|
+
setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
|
|
77
|
+
addEventListener(events: string | string[], listener: AstListener): void;
|
|
78
|
+
replaceChildren(...elements: (string | AstNodes)[]): void;
|
|
79
|
+
constructorError(msg: string): never;
|
|
80
|
+
}) & T;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AstNodes, AstText } from '../internal';
|
|
2
|
+
export interface FixedTokenBase {
|
|
3
|
+
removeAt(): never;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 不可增删子节点的类
|
|
7
|
+
* @param constructor 基类
|
|
8
|
+
*/
|
|
9
|
+
export declare const fixedToken: <S extends AstConstructor>(constructor: S) => (abstract new (...args: any[]) => {
|
|
10
|
+
/** @override */
|
|
11
|
+
removeAt(): never;
|
|
12
|
+
/**
|
|
13
|
+
* @override
|
|
14
|
+
* @param token 待插入的子节点
|
|
15
|
+
* @param i 插入位置
|
|
16
|
+
*/
|
|
17
|
+
insertAt(token: string, i?: number): AstText;
|
|
18
|
+
/**
|
|
19
|
+
* @override
|
|
20
|
+
* @param token 待插入的子节点
|
|
21
|
+
* @param i 插入位置
|
|
22
|
+
*/
|
|
23
|
+
insertAt<T extends AstNodes>(token: T, i?: number): T;
|
|
24
|
+
toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
|
|
25
|
+
text(separator?: string | undefined): string; /** @private */
|
|
26
|
+
getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
|
|
27
|
+
setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
|
|
28
|
+
addEventListener(events: string | string[], listener: AstListener): void;
|
|
29
|
+
replaceChildren(...elements: (string | AstNodes)[]): void;
|
|
30
|
+
constructorError(msg: string): never;
|
|
31
|
+
}) & S;
|
package/dist/mixin/fixed.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.fixedToken = void 0;
|
|
4
4
|
const debug_1 = require("../util/debug");
|
|
5
5
|
const constants_1 = require("../util/constants");
|
|
6
6
|
/**
|
|
7
7
|
* 不可增删子节点的类
|
|
8
8
|
* @param constructor 基类
|
|
9
9
|
*/
|
|
10
|
-
const
|
|
10
|
+
const fixedToken = (constructor) => {
|
|
11
11
|
/** 不可增删子节点的类 */
|
|
12
12
|
class FixedToken extends constructor {
|
|
13
|
-
|
|
13
|
+
/** @private */
|
|
14
|
+
get fixed() {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
14
17
|
/** @override */
|
|
15
18
|
removeAt() {
|
|
16
19
|
this.constructorError('不可删除元素');
|
|
@@ -21,5 +24,5 @@ const fixed = (constructor) => {
|
|
|
21
24
|
}
|
|
22
25
|
return FixedToken;
|
|
23
26
|
};
|
|
24
|
-
exports.
|
|
25
|
-
constants_1.mixins['
|
|
27
|
+
exports.fixedToken = fixedToken;
|
|
28
|
+
constants_1.mixins['fixedToken'] = __filename;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { ConverterFlagsToken } from '../src/converterFlags';
|
|
2
|
+
export interface FlagsParentBase {
|
|
3
|
+
flags: Set<string>;
|
|
4
|
+
getAllFlags(): Set<string>;
|
|
5
|
+
getEffectiveFlags(): Set<string>;
|
|
6
|
+
getUnknownFlags(): Set<string>;
|
|
7
|
+
hasFlag(flag: string): boolean;
|
|
8
|
+
hasEffectiveFlag(flag: string): boolean;
|
|
9
|
+
removeFlag(flag: string): void;
|
|
10
|
+
setFlag(flag: string): void;
|
|
11
|
+
toggleFlag(flag: string): void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* ConverterToken
|
|
15
|
+
* @param constructor 基类
|
|
16
|
+
*/
|
|
17
|
+
export declare const flagsParent: <T extends AstConstructor>(constructor: T) => (abstract new (...args: any[]) => {
|
|
18
|
+
readonly firstChild: ConverterFlagsToken;
|
|
19
|
+
readonly firstElementChild: ConverterFlagsToken;
|
|
20
|
+
/** 所有转换类型标记 */
|
|
21
|
+
flags: Set<string>;
|
|
22
|
+
/** 获取所有转换类型标记 */
|
|
23
|
+
getAllFlags(): Set<string>;
|
|
24
|
+
/** 获取有效的转换类型标记 */
|
|
25
|
+
getEffectiveFlags(): Set<string>;
|
|
26
|
+
/** 获取未知的转换类型标记 */
|
|
27
|
+
getUnknownFlags(): Set<string>;
|
|
28
|
+
/**
|
|
29
|
+
* 是否具有某转换类型标记
|
|
30
|
+
* @param flag 转换类型标记
|
|
31
|
+
*/
|
|
32
|
+
hasFlag(flag: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 是否具有某有效的转换类型标记
|
|
35
|
+
* @param flag 转换类型标记
|
|
36
|
+
*/
|
|
37
|
+
hasEffectiveFlag(flag: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 移除转换类型标记
|
|
40
|
+
* @param flag 转换类型标记
|
|
41
|
+
*/
|
|
42
|
+
removeFlag(flag: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* 设置转换类型标记
|
|
45
|
+
* @param flag 转换类型标记
|
|
46
|
+
*/
|
|
47
|
+
setFlag(flag: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* 开关某转换类型标记
|
|
50
|
+
* @param flag 转换类型标记
|
|
51
|
+
*/
|
|
52
|
+
toggleFlag(flag: string): void;
|
|
53
|
+
toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
|
|
54
|
+
text(separator?: string | undefined): string;
|
|
55
|
+
insertAt(token: unknown, i?: number | undefined): unknown;
|
|
56
|
+
getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
|
|
57
|
+
setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
|
|
58
|
+
addEventListener(events: string | string[], listener: AstListener): void;
|
|
59
|
+
replaceChildren(...elements: (string | import("..").AstNodes)[]): void;
|
|
60
|
+
constructorError(msg: string): never;
|
|
61
|
+
}) & T;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LintError } from '../base';
|
|
2
|
+
/**
|
|
3
|
+
* 解析后不可见的类
|
|
4
|
+
* @param constructor 基类
|
|
5
|
+
*/
|
|
6
|
+
export declare const hiddenToken: <T extends AstConstructor>(constructor: T) => (abstract new (...args: any[]) => {
|
|
7
|
+
/** 没有可见部分 */
|
|
8
|
+
text(): string;
|
|
9
|
+
/** @override */
|
|
10
|
+
lint(): LintError[];
|
|
11
|
+
toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
|
|
12
|
+
insertAt(token: unknown, i?: number | undefined): unknown;
|
|
13
|
+
getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
|
|
14
|
+
setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
|
|
15
|
+
addEventListener(events: string | string[], listener: AstListener): void;
|
|
16
|
+
replaceChildren(...elements: (string | import("..").AstNodes)[]): void;
|
|
17
|
+
constructorError(msg: string): never;
|
|
18
|
+
}) & T;
|
package/dist/mixin/hidden.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.hiddenToken = void 0;
|
|
4
4
|
const constants_1 = require("../util/constants");
|
|
5
5
|
/**
|
|
6
6
|
* 解析后不可见的类
|
|
7
7
|
* @param constructor 基类
|
|
8
8
|
*/
|
|
9
|
-
const
|
|
9
|
+
const hiddenToken = (constructor) => {
|
|
10
10
|
/** 解析后不可见的类 */
|
|
11
11
|
class AnyHiddenToken extends constructor {
|
|
12
|
-
static hidden = true;
|
|
13
12
|
/** 没有可见部分 */
|
|
14
13
|
text() {
|
|
15
14
|
return '';
|
|
@@ -21,5 +20,5 @@ const hidden = (constructor) => {
|
|
|
21
20
|
}
|
|
22
21
|
return AnyHiddenToken;
|
|
23
22
|
};
|
|
24
|
-
exports.
|
|
25
|
-
constants_1.mixins['
|
|
23
|
+
exports.hiddenToken = hiddenToken;
|
|
24
|
+
constants_1.mixins['hiddenToken'] = __filename;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { MagicLinkToken } from '../src/magicLink';
|
|
2
|
+
export interface MagicLinkParentBase {
|
|
3
|
+
protocol: string | undefined;
|
|
4
|
+
link: string;
|
|
5
|
+
getUrl(): URL;
|
|
6
|
+
setTarget(url: string): void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* ExtLinkToken
|
|
10
|
+
* @param constructor 基类
|
|
11
|
+
*/
|
|
12
|
+
export declare const magicLinkParent: <T extends AstConstructor>(constructor: T) => (abstract new (...args: any[]) => {
|
|
13
|
+
readonly firstChild: MagicLinkToken;
|
|
14
|
+
readonly firstElementChild: MagicLinkToken;
|
|
15
|
+
/** 协议 */
|
|
16
|
+
protocol: string | undefined;
|
|
17
|
+
/** 和内链保持一致 */
|
|
18
|
+
link: string;
|
|
19
|
+
/** 获取网址 */
|
|
20
|
+
getUrl(): URL;
|
|
21
|
+
/**
|
|
22
|
+
* 设置链接目标
|
|
23
|
+
* @param url 网址
|
|
24
|
+
*/
|
|
25
|
+
setTarget(url: string): void;
|
|
26
|
+
toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
|
|
27
|
+
text(separator?: string | undefined): string;
|
|
28
|
+
insertAt(token: unknown, i?: number | undefined): unknown;
|
|
29
|
+
getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
|
|
30
|
+
setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
|
|
31
|
+
addEventListener(events: string | string[], listener: AstListener): void;
|
|
32
|
+
replaceChildren(...elements: (string | import("..").AstNodes)[]): void;
|
|
33
|
+
constructorError(msg: string): never;
|
|
34
|
+
}) & T;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 不可包含换行符的类
|
|
3
|
+
* @param constructor 基类
|
|
4
|
+
*/
|
|
5
|
+
export declare const singleLine: <T extends AstConstructor>(constructor: T) => (abstract new (...args: any[]) => {
|
|
6
|
+
/** @override */
|
|
7
|
+
text(): string;
|
|
8
|
+
insertAt(token: unknown, i?: number | undefined): unknown;
|
|
9
|
+
getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
|
|
10
|
+
setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
|
|
11
|
+
addEventListener(events: string | string[], listener: AstListener): void;
|
|
12
|
+
replaceChildren(...elements: (string | import("..").AstNodes)[]): void;
|
|
13
|
+
constructorError(msg: string): never;
|
|
14
|
+
}) & T;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface SolTokenBase {
|
|
2
|
+
prependNewLine(): string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* 只能位于行首的类
|
|
6
|
+
* @param constructor 基类
|
|
7
|
+
*/
|
|
8
|
+
export declare const sol: <T extends AstConstructor>(constructor: T) => (abstract new (...args: any[]) => {
|
|
9
|
+
/** 在前方插入newline */
|
|
10
|
+
prependNewLine(): string;
|
|
11
|
+
/** @override */
|
|
12
|
+
text(): string;
|
|
13
|
+
insertAt(token: unknown, i?: number | undefined): unknown;
|
|
14
|
+
setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
|
|
15
|
+
addEventListener(events: string | string[], listener: AstListener): void;
|
|
16
|
+
replaceChildren(...elements: (string | import("..").AstNodes)[]): void; /** @private */
|
|
17
|
+
constructorError(msg: string): never;
|
|
18
|
+
}) & T;
|