wikiparser-node 1.1.5 → 1.1.6

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 (74) hide show
  1. package/dist/addon/table.js +9 -4
  2. package/dist/base.d.ts +23 -22
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +2 -3
  5. package/dist/internal.d.ts +2 -2
  6. package/dist/lib/element.d.ts +10 -10
  7. package/dist/lib/element.js +3 -5
  8. package/dist/lib/node.d.ts +8 -8
  9. package/dist/lib/node.js +9 -9
  10. package/dist/lib/range.d.ts +2 -2
  11. package/dist/lib/range.js +1 -2
  12. package/dist/lib/ranges.d.ts +3 -3
  13. package/dist/lib/text.d.ts +2 -2
  14. package/dist/lib/title.d.ts +1 -1
  15. package/dist/parser/selector.js +1 -1
  16. package/dist/parser/table.js +6 -4
  17. package/dist/src/arg.d.ts +3 -3
  18. package/dist/src/attribute.d.ts +5 -5
  19. package/dist/src/attribute.js +1 -1
  20. package/dist/src/attributes.d.ts +5 -4
  21. package/dist/src/attributes.js +11 -5
  22. package/dist/src/converter.d.ts +3 -3
  23. package/dist/src/converterFlags.d.ts +3 -3
  24. package/dist/src/converterRule.d.ts +1 -1
  25. package/dist/src/extLink.d.ts +2 -2
  26. package/dist/src/gallery.d.ts +3 -3
  27. package/dist/src/gallery.js +1 -1
  28. package/dist/src/heading.d.ts +4 -4
  29. package/dist/src/hidden.d.ts +1 -1
  30. package/dist/src/html.d.ts +10 -11
  31. package/dist/src/html.js +3 -4
  32. package/dist/src/imageParameter.d.ts +1 -1
  33. package/dist/src/imageParameter.js +2 -4
  34. package/dist/src/imagemap.d.ts +3 -3
  35. package/dist/src/imagemap.js +2 -2
  36. package/dist/src/imagemapLink.d.ts +4 -4
  37. package/dist/src/index.d.ts +9 -8
  38. package/dist/src/index.js +11 -11
  39. package/dist/src/link/base.d.ts +2 -2
  40. package/dist/src/link/file.d.ts +7 -7
  41. package/dist/src/link/galleryImage.d.ts +1 -1
  42. package/dist/src/link/galleryImage.js +2 -2
  43. package/dist/src/link/index.d.ts +1 -1
  44. package/dist/src/magicLink.d.ts +2 -2
  45. package/dist/src/nested.d.ts +3 -3
  46. package/dist/src/nested.js +1 -1
  47. package/dist/src/nowiki/base.d.ts +2 -2
  48. package/dist/src/nowiki/comment.d.ts +1 -1
  49. package/dist/src/nowiki/doubleUnderscore.d.ts +3 -3
  50. package/dist/src/nowiki/doubleUnderscore.js +0 -1
  51. package/dist/src/nowiki/hr.d.ts +2 -2
  52. package/dist/src/nowiki/index.d.ts +1 -1
  53. package/dist/src/nowiki/list.d.ts +1 -1
  54. package/dist/src/nowiki/listBase.d.ts +1 -1
  55. package/dist/src/nowiki/noinclude.d.ts +1 -1
  56. package/dist/src/nowiki/quote.d.ts +1 -1
  57. package/dist/src/paramTag/index.d.ts +2 -2
  58. package/dist/src/parameter.d.ts +3 -3
  59. package/dist/src/pre.d.ts +2 -2
  60. package/dist/src/syntax.d.ts +1 -2
  61. package/dist/src/table/base.d.ts +3 -3
  62. package/dist/src/table/index.d.ts +9 -9
  63. package/dist/src/table/index.js +2 -1
  64. package/dist/src/table/td.d.ts +7 -6
  65. package/dist/src/table/tr.d.ts +1 -1
  66. package/dist/src/table/trBase.d.ts +5 -5
  67. package/dist/src/table/trBase.js +12 -4
  68. package/dist/src/tagPair/ext.d.ts +7 -4
  69. package/dist/src/tagPair/include.d.ts +2 -2
  70. package/dist/src/tagPair/index.d.ts +3 -3
  71. package/dist/src/transclude.d.ts +10 -10
  72. package/dist/src/transclude.js +10 -10
  73. package/dist/util/constants.js +1 -0
  74. package/package.json +4 -4
@@ -10,7 +10,7 @@ import type { ConverterToken, ConverterRuleToken } from '../internal';
10
10
  export declare class ConverterFlagsToken extends Token {
11
11
  #private;
12
12
  readonly type = "converter-flags";
13
- childNodes: AtomToken[];
13
+ readonly childNodes: AtomToken[];
14
14
  abstract get children(): AtomToken[];
15
15
  abstract get firstChild(): AtomToken | undefined;
16
16
  abstract get firstElementChild(): AtomToken | undefined;
@@ -26,7 +26,7 @@ export declare class ConverterFlagsToken extends Token {
26
26
  get flags(): Set<string>;
27
27
  set flags(value: Set<string>);
28
28
  /** @param flags 转换类型标记 */
29
- constructor(flags: string[], config?: Parser.Config, accum?: Token[]);
29
+ constructor(flags: readonly string[], config?: Parser.Config, accum?: Token[]);
30
30
  /** @override */
31
31
  text(): string;
32
32
  /** 获取未知的转换类型标记 */
@@ -56,7 +56,7 @@ export declare class ConverterFlagsToken extends Token {
56
56
  * 获取转换类型标记节点
57
57
  * @param flag 转换类型标记
58
58
  */
59
- getFlagTokens(flag: string): AtomToken[];
59
+ getFlagTokens(flag: string): readonly AtomToken[];
60
60
  /** 获取有效的转换类型标记 */
61
61
  getEffectiveFlags(): Set<string>;
62
62
  /**
@@ -8,7 +8,7 @@ import type { ConverterToken, ConverterFlagsToken } from '../internal';
8
8
  */
9
9
  export declare class ConverterRuleToken extends Token {
10
10
  readonly type = "converter-rule";
11
- childNodes: [AtomToken] | [AtomToken, AtomToken] | [AtomToken, AtomToken, AtomToken];
11
+ readonly childNodes: [AtomToken] | [AtomToken, AtomToken] | [AtomToken, AtomToken, AtomToken];
12
12
  abstract get children(): [AtomToken] | [AtomToken, AtomToken] | [AtomToken, AtomToken, AtomToken];
13
13
  abstract get firstChild(): AtomToken;
14
14
  abstract get firstElementChild(): AtomToken;
@@ -8,7 +8,7 @@ declare const ExtLinkToken_base: (abstract new (...args: any[]) => {
8
8
  link: string;
9
9
  getUrl(): URL;
10
10
  setTarget(url: string): void;
11
- length: number;
11
+ readonly length: number;
12
12
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
13
13
  text(separator?: string | undefined): string;
14
14
  insertAt(token: unknown, i?: number | undefined): unknown;
@@ -25,7 +25,7 @@ declare const ExtLinkToken_base: (abstract new (...args: any[]) => {
25
25
  export declare class ExtLinkToken extends ExtLinkToken_base {
26
26
  #private;
27
27
  readonly type = "ext-link";
28
- childNodes: [MagicLinkToken] | [MagicLinkToken, Token];
28
+ readonly childNodes: [MagicLinkToken] | [MagicLinkToken, Token];
29
29
  abstract get children(): [MagicLinkToken] | [MagicLinkToken, Token];
30
30
  abstract get lastChild(): Token;
31
31
  abstract get lastElementChild(): Token;
@@ -11,8 +11,8 @@ import type { AstNodes, AstText, AttributesToken, ExtToken } from '../internal';
11
11
  export declare class GalleryToken extends Token {
12
12
  #private;
13
13
  readonly type = "ext-inner";
14
- name: 'gallery';
15
- childNodes: (GalleryImageToken | HiddenToken | AstText)[];
14
+ readonly name: 'gallery';
15
+ readonly childNodes: (GalleryImageToken | HiddenToken | AstText)[];
16
16
  abstract get children(): (GalleryImageToken | HiddenToken)[];
17
17
  abstract get firstChild(): GalleryImageToken | HiddenToken | AstText | undefined;
18
18
  abstract get firstElementChild(): GalleryImageToken | HiddenToken | undefined;
@@ -25,7 +25,7 @@ export declare class GalleryToken extends Token {
25
25
  abstract get parentNode(): ExtToken | undefined;
26
26
  abstract get parentElement(): ExtToken | undefined;
27
27
  /** 所有图片 */
28
- get images(): GalleryImageToken[];
28
+ get images(): readonly GalleryImageToken[];
29
29
  /** @param inner 标签内部wikitext */
30
30
  constructor(inner?: string, config?: Parser.Config, accum?: Token[]);
31
31
  /** @override */
@@ -16,7 +16,7 @@ class GalleryToken extends index_1.Token {
16
16
  /* NOT FOR BROWSER */
17
17
  /** 所有图片 */
18
18
  get images() {
19
- return this.childNodes.filter(({ type }) => type === 'gallery-image');
19
+ return this.childNodes.filter((child) => child.type === 'gallery-image');
20
20
  }
21
21
  /* NOT FOR BROWSER END */
22
22
  /** @param inner 标签内部wikitext */
@@ -7,7 +7,7 @@ declare const HeadingToken_base: (abstract new (...args: any[]) => {
7
7
  toString(omit?: Set<string> | undefined): string;
8
8
  getAttribute<S extends string>(key: S): TokenAttributeGetter<S>;
9
9
  text(): string;
10
- length: number;
10
+ readonly length: number;
11
11
  insertAt(token: unknown, i?: number | undefined): unknown;
12
12
  afterBuild(): void;
13
13
  setAttribute<T extends string>(key: T, value: TokenAttributeSetter<T>): void;
@@ -17,7 +17,7 @@ declare const HeadingToken_base: (abstract new (...args: any[]) => {
17
17
  removeAt(): never;
18
18
  insertAt(token: string, i?: number | undefined): Parser.AstText;
19
19
  insertAt<T_1 extends Parser.AstNodes>(token: T_1, i?: number | undefined): T_1;
20
- length: number;
20
+ readonly length: number;
21
21
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
22
22
  text(separator?: string | undefined): string;
23
23
  afterBuild(): void;
@@ -35,7 +35,7 @@ declare const HeadingToken_base: (abstract new (...args: any[]) => {
35
35
  export declare class HeadingToken extends HeadingToken_base {
36
36
  #private;
37
37
  readonly type = "heading";
38
- childNodes: [Token, SyntaxToken];
38
+ readonly childNodes: [Token, SyntaxToken];
39
39
  abstract get children(): [Token, SyntaxToken];
40
40
  abstract get firstChild(): Token;
41
41
  abstract get firstElementChild(): Token;
@@ -52,7 +52,7 @@ export declare class HeadingToken extends HeadingToken_base {
52
52
  * @param level 标题层级
53
53
  * @param input 标题文字
54
54
  */
55
- constructor(level: number, input: [string?, string?], config?: Parser.Config, accum?: Token[]);
55
+ constructor(level: number, input: readonly [string?, string?], config?: Parser.Config, accum?: Token[]);
56
56
  /** @override */
57
57
  text(): string;
58
58
  /** @override */
@@ -1,7 +1,7 @@
1
1
  import { Token } from './index';
2
2
  declare const HiddenToken_base: ((abstract new (...args: any[]) => {
3
3
  text(): string;
4
- length: number;
4
+ readonly length: number;
5
5
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
6
6
  insertAt(token: unknown, i?: number | undefined): unknown;
7
7
  afterBuild(): void;
@@ -3,7 +3,7 @@ import { Token } from './index';
3
3
  import type { LintError } from '../base';
4
4
  import type { AttributesToken } from '../internal';
5
5
  declare const HtmlToken_base: (abstract new (...args: any[]) => {
6
- childNodes: Parser.AstNodes[];
6
+ readonly childNodes: Parser.AstNodes[];
7
7
  readonly "__#8@#attributesChild": Parser.AttributesToken;
8
8
  attributes: Record<string, string | true>;
9
9
  className: string;
@@ -14,16 +14,15 @@ declare const HtmlToken_base: (abstract new (...args: any[]) => {
14
14
  getAttrNames(): Set<string>;
15
15
  getAttrs(): Record<string, string | true>;
16
16
  setAttr(key: string, value: string | boolean): void;
17
- removeAttr(key: string): void; /**
18
- * @param name 标签名
19
- * @param attr 标签属性
20
- * @param closing 是否闭合
21
- * @param selfClosing 是否自封闭
22
- */
17
+ removeAttr(key: string): void;
23
18
  toggleAttr(key: string, force?: boolean | undefined): void;
24
- length: number;
19
+ readonly length: number;
25
20
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
26
21
  text(separator?: string | undefined): string;
22
+ /**
23
+ * HTML标签
24
+ * @classdesc `{childNodes: [AttributesToken]}`
25
+ */
27
26
  insertAt(token: unknown, i?: number | undefined): unknown;
28
27
  afterBuild(): void;
29
28
  getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
@@ -34,7 +33,7 @@ declare const HtmlToken_base: (abstract new (...args: any[]) => {
34
33
  removeAt(): never;
35
34
  insertAt(token: string, i?: number | undefined): Parser.AstText;
36
35
  insertAt<T_2 extends Parser.AstNodes>(token: T_2, i?: number | undefined): T_2;
37
- length: number;
36
+ readonly length: number;
38
37
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
39
38
  text(separator?: string | undefined): string;
40
39
  afterBuild(): void;
@@ -52,8 +51,8 @@ declare const HtmlToken_base: (abstract new (...args: any[]) => {
52
51
  export declare class HtmlToken extends HtmlToken_base {
53
52
  #private;
54
53
  readonly type = "html";
55
- name: string;
56
- childNodes: [AttributesToken];
54
+ readonly name: string;
55
+ readonly childNodes: [AttributesToken];
57
56
  abstract get children(): [AttributesToken];
58
57
  abstract get firstChild(): AttributesToken;
59
58
  abstract get firstElementChild(): AttributesToken;
package/dist/src/html.js CHANGED
@@ -158,9 +158,8 @@ class HtmlToken extends (0, attributesParent_1.attributesParent)((0, fixed_1.fix
158
158
  else if (!parentNode) {
159
159
  return undefined;
160
160
  }
161
- const { childNodes } = parentNode, i = childNodes.indexOf(this), siblings = closing
162
- ? childNodes.slice(0, i).reverse().filter(({ type, name }) => type === 'html' && name === tagName)
163
- : childNodes.slice(i + 1).filter(({ type, name }) => type === 'html' && name === tagName);
161
+ const { childNodes } = parentNode, i = childNodes.indexOf(this), siblings = (closing ? childNodes.slice(0, i).reverse() : childNodes.slice(i + 1))
162
+ .filter((child) => child.type === 'html' && child.name === tagName);
164
163
  let imbalance = closing ? -1 : 1;
165
164
  for (const token of siblings) {
166
165
  if (token.#closing) {
@@ -216,7 +215,7 @@ class HtmlToken extends (0, attributesParent_1.attributesParent)((0, fixed_1.fix
216
215
  return;
217
216
  }
218
217
  const { childNodes } = parentNode, i = childNodes.indexOf(this), prevSiblings = childNodes.slice(0, i)
219
- .filter(({ type, name }) => type === 'html' && name === tagName), imbalance = prevSiblings.reduce((acc, { closing }) => acc + (closing ? 1 : -1), 0);
218
+ .filter((child) => child.type === 'html' && child.name === tagName), imbalance = prevSiblings.reduce((acc, { closing }) => acc + (closing ? 1 : -1), 0);
220
219
  if (imbalance < 0) {
221
220
  this.#selfClosing = false;
222
221
  this.#closing = true;
@@ -8,7 +8,7 @@ export declare const galleryParams: Set<string>;
8
8
  export declare class ImageParameterToken extends Token {
9
9
  #private;
10
10
  readonly type = "image-parameter";
11
- name: string;
11
+ readonly name: string;
12
12
  abstract get parentNode(): FileToken | undefined;
13
13
  abstract get parentElement(): FileToken | undefined;
14
14
  abstract get nextSibling(): this | undefined;
@@ -36,8 +36,7 @@ function validate(key, val, config = Parser.getConfig(), halfParsed = false) {
36
36
  case 'manualthumb':
37
37
  return true;
38
38
  default:
39
- // @ts-expect-error isNaN
40
- return !isNaN(value);
39
+ return !Number.isNaN(Number(value));
41
40
  }
42
41
  }
43
42
  /** 图片参数 */
@@ -74,8 +73,7 @@ class ImageParameterToken extends index_1.Token {
74
73
  return { width: size, height: '' };
75
74
  }
76
75
  const str = token.childNodes[i];
77
- str.splitText(str.data.indexOf('x'));
78
- str.nextSibling.splitText(1);
76
+ str.splitText(str.data.indexOf('x')).splitText(1);
79
77
  return { width: (0, string_1.text)(token.childNodes.slice(0, i + 1)), height: (0, string_1.text)(token.childNodes.slice(i + 2)) };
80
78
  }
81
79
  return undefined;
@@ -11,8 +11,8 @@ import type { AstNodes, AstText, AttributesToken, ExtToken } from '../internal';
11
11
  */
12
12
  export declare class ImagemapToken extends Token {
13
13
  readonly type = "ext-inner";
14
- name: 'imagemap';
15
- childNodes: (GalleryImageToken | NoincludeToken | ImagemapLinkToken | AstText)[];
14
+ readonly name: 'imagemap';
15
+ readonly childNodes: (GalleryImageToken | NoincludeToken | ImagemapLinkToken | AstText)[];
16
16
  abstract get children(): (GalleryImageToken | NoincludeToken | ImagemapLinkToken)[];
17
17
  abstract get firstChild(): NoincludeToken | GalleryImageToken | undefined;
18
18
  abstract get firstElementChild(): NoincludeToken | GalleryImageToken | undefined;
@@ -27,7 +27,7 @@ export declare class ImagemapToken extends Token {
27
27
  /** 图片 */
28
28
  get image(): GalleryImageToken | undefined;
29
29
  /** 链接 */
30
- get links(): ImagemapLinkToken[];
30
+ get links(): readonly ImagemapLinkToken[];
31
31
  /** @param inner 标签内部wikitext */
32
32
  constructor(inner?: string, config?: Parser.Config, accum?: Token[]);
33
33
  /** @override */
@@ -18,12 +18,12 @@ class ImagemapToken extends index_1.Token {
18
18
  type = 'ext-inner';
19
19
  /** 图片 */
20
20
  get image() {
21
- return this.childNodes.find(({ type }) => type === 'imagemap-image');
21
+ return this.childNodes.find((child) => child.type === 'imagemap-image');
22
22
  }
23
23
  /* NOT FOR BROWSER */
24
24
  /** 链接 */
25
25
  get links() {
26
- return this.childNodes.filter(({ type }) => type === 'imagemap-link');
26
+ return this.childNodes.filter((child) => child.type === 'imagemap-link');
27
27
  }
28
28
  /* NOT FOR BROWSER END */
29
29
  /** @param inner 标签内部wikitext */
@@ -9,7 +9,7 @@ declare const ImagemapLinkToken_base: ((abstract new (...args: any[]) => {
9
9
  removeAt(): never;
10
10
  insertAt(token: string, i?: number | undefined): Parser.AstText;
11
11
  insertAt<T extends Parser.AstNodes>(token: T, i?: number | undefined): T;
12
- length: number;
12
+ readonly length: number;
13
13
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
14
14
  text(separator?: string | undefined): string;
15
15
  afterBuild(): void;
@@ -22,7 +22,7 @@ declare const ImagemapLinkToken_base: ((abstract new (...args: any[]) => {
22
22
  }) & (abstract new (...args: any[]) => {
23
23
  toString(omit?: Set<string> | undefined): string;
24
24
  text(): string;
25
- length: number;
25
+ readonly length: number;
26
26
  insertAt(token: unknown, i?: number | undefined): unknown;
27
27
  afterBuild(): void;
28
28
  getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
@@ -36,7 +36,7 @@ declare const ImagemapLinkToken_base: ((abstract new (...args: any[]) => {
36
36
  */
37
37
  export declare class ImagemapLinkToken extends ImagemapLinkToken_base {
38
38
  readonly type = "imagemap-link";
39
- childNodes: [AstText, LinkToken | ExtLinkToken, NoincludeToken];
39
+ readonly childNodes: [AstText, LinkToken | ExtLinkToken, NoincludeToken];
40
40
  abstract get children(): [LinkToken | ExtLinkToken, NoincludeToken];
41
41
  abstract get firstChild(): AstText;
42
42
  abstract get firstElementChild(): LinkToken | ExtLinkToken;
@@ -52,6 +52,6 @@ export declare class ImagemapLinkToken extends ImagemapLinkToken_base {
52
52
  * @param linkStuff 内外链接
53
53
  * @param post 链接后的文本
54
54
  */
55
- constructor(pre: string, linkStuff: [string, string | undefined, string | undefined] | [string, string | undefined], post: string, config?: Parser.Config, accum?: Token[]);
55
+ constructor(pre: string, linkStuff: readonly [string, string | undefined, string | undefined] | readonly [string, string | undefined], post: string, config?: Parser.Config, accum?: Token[]);
56
56
  }
57
57
  export {};
@@ -4,8 +4,9 @@ import { AstElement } from '../lib/element';
4
4
  import { AstText } from '../lib/text';
5
5
  import type { Range } from '../lib/ranges';
6
6
  import type { Title } from '../lib/title';
7
- import type { AstNodes, IncludeToken, HtmlToken, ExtToken, TranscludeToken, CommentToken } from '../internal';
8
- import type { TokenTypes, CaretPosition } from '../lib/node';
7
+ import type { AstNodes, IncludeToken, HtmlToken, ExtToken, TranscludeToken, CommentToken, FileToken } from '../internal';
8
+ import type { CaretPosition } from '../lib/node';
9
+ import type { TokenTypes } from '../util/constants';
9
10
  declare type TagToken = IncludeToken | ExtToken | HtmlToken;
10
11
  /**
11
12
  * 所有节点的基类
@@ -15,11 +16,11 @@ export declare class Token extends AstElement {
15
16
  #private;
16
17
  type: TokenTypes;
17
18
  /** 所有图片,包括图库 */
18
- get images(): Token[];
19
+ get images(): readonly FileToken[];
19
20
  /** 所有内链、外链和自由外链 */
20
- get links(): Token[];
21
+ get links(): readonly Token[];
21
22
  /** 所有模板和模块 */
22
- get embeds(): TranscludeToken[];
23
+ get embeds(): readonly TranscludeToken[];
23
24
  /** @class */
24
25
  constructor(wikitext?: string, config?: Parser.Config, accum?: Token[], acceptable?: Acceptable);
25
26
  /**
@@ -103,13 +104,13 @@ export declare class Token extends AstElement {
103
104
  * 找到给定位置所在的所有节点
104
105
  * @param index 位置
105
106
  */
106
- elementsFromIndex(index?: number): AstNodes[];
107
+ elementsFromIndex(index?: number): readonly AstNodes[];
107
108
  /**
108
109
  * 找到给定位置所在的所有节点
109
110
  * @param x 列数
110
111
  * @param y 行数
111
112
  */
112
- elementsFromPoint(x: number, y: number): AstNodes[];
113
+ elementsFromPoint(x: number, y: number): readonly AstNodes[];
113
114
  /**
114
115
  * 判断标题是否是跨维基链接
115
116
  * @param title 标题
@@ -134,7 +135,7 @@ export declare class Token extends AstElement {
134
135
  */
135
136
  findEnclosingHtml(tag?: string): AstRange | undefined;
136
137
  /** 获取全部分类 */
137
- getCategories(): [string, string | undefined][];
138
+ getCategories(): readonly [string, string | undefined][];
138
139
  /** 重新解析单引号 */
139
140
  redoQuotes(): void;
140
141
  /** 解析部分魔术字 */
package/dist/src/index.js CHANGED
@@ -144,9 +144,8 @@ class Token extends element_1.AstElement {
144
144
  const nodes = str.split(/[\0\x7F]/u).map((s, i) => {
145
145
  if (i % 2 === 0) {
146
146
  return new text_1.AstText(s);
147
- // @ts-expect-error isNaN
148
147
  }
149
- else if (isNaN(s.at(-1))) {
148
+ else if (Number.isNaN(Number(s.at(-1)))) {
150
149
  return this.#accum[Number(s.slice(0, -1))];
151
150
  }
152
151
  throw new Error(`解析错误!未正确标记的 Token:${s}`);
@@ -603,7 +602,7 @@ class Token extends element_1.AstElement {
603
602
  return undefined;
604
603
  }
605
604
  const { childNodes } = this, headings = [...childNodes.entries()]
606
- .filter(([, { type }]) => type === 'heading')
605
+ .filter((entry) => entry[1].type === 'heading')
607
606
  .map(([i, { level }]) => [i, level]), lastHeading = [-1, -1, -1, -1, -1, -1], sections = new Array(headings.length);
608
607
  for (let i = 0; i < headings.length; i++) {
609
608
  const [index, level] = headings[i];
@@ -644,11 +643,12 @@ class Token extends element_1.AstElement {
644
643
  if (!parentNode) {
645
644
  return undefined;
646
645
  }
647
- const { childNodes, length } = parentNode, index = childNodes.indexOf(this);
646
+ /** @ignore */
647
+ const isHtml = (node) => node.type === 'html', { childNodes, length } = parentNode, index = childNodes.indexOf(this);
648
648
  let i;
649
649
  for (i = index - 1; i >= 0; i--) {
650
- const { type, name, selfClosing, closing, } = childNodes[i];
651
- if (type === 'html' && (!tag || name === tag) && selfClosing === false && closing === false) {
650
+ const child = childNodes[i];
651
+ if (isHtml(child) && (!tag || child.name === tag) && !child.selfClosing && !child.closing) {
652
652
  break;
653
653
  }
654
654
  }
@@ -657,8 +657,8 @@ class Token extends element_1.AstElement {
657
657
  }
658
658
  const opening = childNodes[i];
659
659
  for (i = index + 1; i < length; i++) {
660
- const { type, name, selfClosing, closing, } = childNodes[i];
661
- if (type === 'html' && name === opening.name && selfClosing === false && closing === true) {
660
+ const child = childNodes[i];
661
+ if (isHtml(child) && child.name === opening.name && !child.selfClosing && child.closing) {
662
662
  break;
663
663
  }
664
664
  }
@@ -688,7 +688,7 @@ class Token extends element_1.AstElement {
688
688
  }
689
689
  this.normalize();
690
690
  const textNodes = [...this.childNodes.entries()]
691
- .filter(([, { type }]) => type === 'text'), indices = textNodes.map(([i]) => this.getRelativeIndex(i)), token = debug_1.Shadow.run(() => {
691
+ .filter((entry) => entry[1].type === 'text'), indices = textNodes.map(([i]) => this.getRelativeIndex(i)), token = debug_1.Shadow.run(() => {
692
692
  const node = new Token((0, string_1.text)(textNodes.map(([, str]) => str)), this.getAttribute('config'));
693
693
  node.setAttribute('stage', 6);
694
694
  return node.parse(7);
@@ -707,11 +707,11 @@ class Token extends element_1.AstElement {
707
707
  solveConst() {
708
708
  const targets = this.querySelectorAll('magic-word, arg'), magicWords = new Set(['if', 'ifeq', 'switch']);
709
709
  for (let i = targets.length - 1; i >= 0; i--) {
710
- const target = targets[i], { type, name, default: argDefault, childNodes, length } = target, [, var1, var2] = childNodes;
710
+ const target = targets[i], { type, name, childNodes, length } = target, [, var1, var2] = childNodes;
711
711
  if (type === 'arg' || type === 'magic-word' && magicWords.has(name)) {
712
712
  let replace = '';
713
713
  if (type === 'arg') {
714
- replace = argDefault === false ? String(target) : argDefault;
714
+ replace = target.default === false ? String(target) : target.default;
715
715
  }
716
716
  else if (name === 'if' && !var1?.getElementByTypes('magic-word, template')) {
717
717
  replace = String(childNodes[String(var1 ?? '').trim() ? 2 : 3] ?? '').trim();
@@ -10,8 +10,8 @@ import type { Title } from '../../lib/title';
10
10
  export declare abstract class LinkBaseToken extends Token {
11
11
  #private;
12
12
  type: 'link' | 'category' | 'file' | 'gallery-image' | 'imagemap-image';
13
- name: string;
14
- childNodes: [AtomToken, ...Token[]];
13
+ readonly name: string;
14
+ readonly childNodes: [AtomToken, ...Token[]];
15
15
  abstract get children(): [AtomToken, ...Token[]];
16
16
  abstract get firstChild(): AtomToken;
17
17
  abstract get firstElementChild(): AtomToken;
@@ -11,7 +11,7 @@ import type { Token, AtomToken } from '../../internal';
11
11
  export declare class FileToken extends LinkBaseToken {
12
12
  #private;
13
13
  readonly type: 'file' | 'gallery-image' | 'imagemap-image';
14
- childNodes: [AtomToken, ...ImageParameterToken[]];
14
+ readonly childNodes: [AtomToken, ...ImageParameterToken[]];
15
15
  abstract get children(): [AtomToken, ...ImageParameterToken[]];
16
16
  abstract get lastChild(): AtomToken | ImageParameterToken;
17
17
  abstract get lastElementChild(): AtomToken | ImageParameterToken;
@@ -42,18 +42,18 @@ export declare class FileToken extends LinkBaseToken {
42
42
  /** @override */
43
43
  lint(start?: number): LintError[];
44
44
  /** 获取所有图片参数节点 */
45
- getAllArgs(): ImageParameterToken[];
45
+ getAllArgs(): readonly ImageParameterToken[];
46
46
  /**
47
47
  * 获取指定图片参数
48
48
  * @param key 参数名
49
49
  */
50
- getArgs(key: string): ImageParameterToken[];
50
+ getArgs(key: string): readonly ImageParameterToken[];
51
51
  /** 获取图片框架属性参数节点 */
52
- getFrameArgs(): ImageParameterToken[];
52
+ getFrameArgs(): readonly ImageParameterToken[];
53
53
  /** 获取图片水平对齐参数节点 */
54
- getHorizAlignArgs(): ImageParameterToken[];
54
+ getHorizAlignArgs(): readonly ImageParameterToken[];
55
55
  /** 获取图片垂直对齐参数节点 */
56
- getVertAlignArgs(): ImageParameterToken[];
56
+ getVertAlignArgs(): readonly ImageParameterToken[];
57
57
  /**
58
58
  * 获取生效的指定图片参数
59
59
  * @param key 参数名
@@ -75,7 +75,7 @@ export declare class FileToken extends LinkBaseToken {
75
75
  * 获取指定的图片参数值
76
76
  * @param key 参数名
77
77
  */
78
- getValues(key: string): (string | true)[];
78
+ getValues(key: string): readonly (string | true)[];
79
79
  /**
80
80
  * 获取生效的指定图片参数值
81
81
  * @param key 参数名
@@ -6,7 +6,7 @@ import type { AtomToken, ImageParameterToken } from '../../internal';
6
6
  declare const GalleryImageToken_base: (abstract new (...args: any[]) => {
7
7
  toString(omit?: Set<string> | undefined): string;
8
8
  text(): string;
9
- length: number;
9
+ readonly length: number;
10
10
  insertAt(token: unknown, i?: number | undefined): unknown;
11
11
  afterBuild(): void;
12
12
  getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
@@ -8,7 +8,7 @@ const singleLine_1 = require("../../mixin/singleLine");
8
8
  const Parser = require("../../index");
9
9
  const index_1 = require("../index");
10
10
  const file_1 = require("./file");
11
- const index_2 = require("../../index");
11
+ const imageParameter_1 = require("../imageParameter");
12
12
  /** 图库图片 */
13
13
  // @ts-expect-error not implementing all abstract methods
14
14
  class GalleryImageToken extends (0, singleLine_1.singleLine)(file_1.FileToken) {
@@ -96,7 +96,7 @@ class GalleryImageToken extends (0, singleLine_1.singleLine)(file_1.FileToken) {
96
96
  * @throws `TypeError` 不可插入文本节点
97
97
  */
98
98
  insertAt(child, i) {
99
- if (this.type === 'gallery-image' && child.type === 'image-parameter' && !index_2.galleryParams.has(child.name)) {
99
+ if (this.type === 'gallery-image' && child.type === 'image-parameter' && !imageParameter_1.galleryParams.has(child.name)) {
100
100
  child.setAttribute('name', 'invalid');
101
101
  }
102
102
  return super.insertAt(child, i);
@@ -8,7 +8,7 @@ import type { Token, AtomToken } from '../../internal';
8
8
  export declare class LinkToken extends LinkBaseToken {
9
9
  #private;
10
10
  readonly type = "link";
11
- childNodes: [AtomToken] | [AtomToken, Token];
11
+ readonly childNodes: [AtomToken] | [AtomToken, Token];
12
12
  abstract get children(): [AtomToken] | [AtomToken, Token];
13
13
  abstract get link(): Title;
14
14
  abstract set link(link: Title);
@@ -8,7 +8,7 @@ declare const MagicLinkToken_base: (abstract new (...args: any[]) => {
8
8
  getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
9
9
  setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
10
10
  replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
11
- length: number;
11
+ readonly length: number;
12
12
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
13
13
  text(separator?: string | undefined): string;
14
14
  insertAt(token: unknown, i?: number | undefined): unknown;
@@ -20,7 +20,7 @@ declare const MagicLinkToken_base: (abstract new (...args: any[]) => {
20
20
  */
21
21
  export declare class MagicLinkToken extends MagicLinkToken_base {
22
22
  type: 'free-ext-link' | 'ext-link-url';
23
- childNodes: (AstText | CommentToken | IncludeToken | NoincludeToken | TranscludeToken)[];
23
+ readonly childNodes: (AstText | CommentToken | IncludeToken | NoincludeToken | TranscludeToken)[];
24
24
  abstract get children(): (CommentToken | IncludeToken | NoincludeToken | TranscludeToken)[];
25
25
  abstract get firstChild(): AstText | TranscludeToken;
26
26
  abstract get firstElementChild(): CommentToken | IncludeToken | NoincludeToken | TranscludeToken | undefined;
@@ -12,8 +12,8 @@ import type { AttributesToken } from './attributes';
12
12
  export declare class NestedToken extends Token {
13
13
  #private;
14
14
  readonly type = "ext-inner";
15
- name: string;
16
- childNodes: (ExtToken | NoincludeToken | CommentToken)[];
15
+ readonly name: string;
16
+ readonly childNodes: (ExtToken | NoincludeToken | CommentToken)[];
17
17
  abstract get children(): (ExtToken | NoincludeToken | CommentToken)[];
18
18
  abstract get firstChild(): ExtToken | NoincludeToken | CommentToken | undefined;
19
19
  abstract get firstElementChild(): ExtToken | NoincludeToken | CommentToken | undefined;
@@ -29,7 +29,7 @@ export declare class NestedToken extends Token {
29
29
  * @param regex 内层正则
30
30
  * @param tags 内层标签名
31
31
  */
32
- constructor(wikitext: string | undefined, regex: RegExp, tags: string[], config?: Parser.Config, accum?: Token[]);
32
+ constructor(wikitext: string | undefined, regex: RegExp, tags: readonly string[], config?: Parser.Config, accum?: Token[]);
33
33
  /** @override */
34
34
  lint(start?: number): LintError[];
35
35
  /**
@@ -40,7 +40,7 @@ class NestedToken extends index_1.Token {
40
40
  super(wikitext, config, accum, {
41
41
  NoincludeToken: ':', ExtToken: ':',
42
42
  });
43
- this.#tags = tags;
43
+ this.#tags = [...tags];
44
44
  this.#regex = regex;
45
45
  }
46
46
  /** @override */
@@ -6,7 +6,7 @@ declare const NowikiBaseToken_base: ((abstract new (...args: any[]) => {
6
6
  removeAt(): never;
7
7
  insertAt(token: string, i?: number | undefined): Parser.AstText;
8
8
  insertAt<T extends Parser.AstNodes>(token: T, i?: number | undefined): T;
9
- length: number;
9
+ readonly length: number;
10
10
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
11
11
  text(separator?: string | undefined): string;
12
12
  afterBuild(): void;
@@ -23,7 +23,7 @@ declare const NowikiBaseToken_base: ((abstract new (...args: any[]) => {
23
23
  */
24
24
  export declare abstract class NowikiBaseToken extends NowikiBaseToken_base {
25
25
  type: NowikiTypes;
26
- childNodes: [AstText];
26
+ readonly childNodes: [AstText];
27
27
  abstract get children(): [];
28
28
  abstract get firstChild(): AstText;
29
29
  abstract get firstElementChild(): undefined;
@@ -4,7 +4,7 @@ import type { LintError } from '../../base';
4
4
  import type { Token } from '../index';
5
5
  declare const CommentToken_base: ((abstract new (...args: any[]) => {
6
6
  text(): string;
7
- length: number;
7
+ readonly length: number;
8
8
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
9
9
  insertAt(token: unknown, i?: number | undefined): unknown;
10
10
  afterBuild(): void;
@@ -7,14 +7,14 @@ declare const DoubleUnderscoreToken_base: (abstract new (...args: any[]) => {
7
7
  getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
8
8
  setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
9
9
  replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
10
- length: number;
10
+ readonly length: number;
11
11
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
12
12
  text(separator?: string | undefined): string;
13
13
  insertAt(token: unknown, i?: number | undefined): unknown;
14
14
  addEventListener(events: string | string[], listener: AstListener): void;
15
15
  }) & ((abstract new (...args: any[]) => {
16
16
  text(): string;
17
- length: number;
17
+ readonly length: number;
18
18
  toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
19
19
  insertAt(token: unknown, i?: number | undefined): unknown;
20
20
  afterBuild(): void;
@@ -29,7 +29,7 @@ declare const DoubleUnderscoreToken_base: (abstract new (...args: any[]) => {
29
29
  export declare class DoubleUnderscoreToken extends DoubleUnderscoreToken_base {
30
30
  #private;
31
31
  readonly type = "double-underscore";
32
- name: string;
32
+ readonly name: string;
33
33
  /**
34
34
  * @param word 状态开关名
35
35
  * @param fixed 是否固定大小写
@@ -11,7 +11,6 @@ const base_1 = require("./base");
11
11
  // @ts-expect-error not implementing all abstract methods
12
12
  class DoubleUnderscoreToken extends (0, syntax_1.syntax)((0, hidden_1.hidden)(base_1.NowikiBaseToken)) {
13
13
  type = 'double-underscore';
14
- /* NOT FOR BROWSER */
15
14
  #fixed;
16
15
  /* NOT FOR BROWSER END */
17
16
  /**