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.
Files changed (85) hide show
  1. package/dist/base.d.ts +3 -1
  2. package/dist/lib/element.d.ts +10 -11
  3. package/dist/lib/element.js +34 -21
  4. package/dist/lib/node.d.ts +2 -3
  5. package/dist/lib/node.js +4 -4
  6. package/dist/lib/range.d.ts +2 -3
  7. package/dist/lib/ranges.d.ts +2 -3
  8. package/dist/lib/text.d.ts +0 -1
  9. package/dist/lib/title.d.ts +0 -1
  10. package/dist/mixin/attributesParent.d.ts +80 -0
  11. package/dist/mixin/fixed.d.ts +31 -0
  12. package/dist/mixin/fixed.js +8 -5
  13. package/dist/mixin/flagsParent.d.ts +61 -0
  14. package/dist/mixin/hidden.d.ts +18 -0
  15. package/dist/mixin/hidden.js +4 -5
  16. package/dist/mixin/magicLinkParent.d.ts +34 -0
  17. package/dist/mixin/singleLine.d.ts +14 -0
  18. package/dist/mixin/sol.d.ts +18 -0
  19. package/dist/mixin/syntax.d.ts +19 -0
  20. package/dist/parser/hrAndDoubleUnderscore.js +3 -3
  21. package/dist/src/arg.d.ts +1 -2
  22. package/dist/src/attribute.d.ts +3 -21
  23. package/dist/src/attribute.js +1 -1
  24. package/dist/src/attributes.d.ts +2 -3
  25. package/dist/src/converter.d.ts +3 -21
  26. package/dist/src/converterFlags.d.ts +2 -3
  27. package/dist/src/converterRule.d.ts +1 -1
  28. package/dist/src/extLink.d.ts +3 -22
  29. package/dist/src/gallery.d.ts +2 -3
  30. package/dist/src/heading.d.ts +6 -33
  31. package/dist/src/heading.js +1 -1
  32. package/dist/src/hidden.d.ts +1 -15
  33. package/dist/src/hidden.js +1 -1
  34. package/dist/src/html.d.ts +6 -35
  35. package/dist/src/html.js +19 -3
  36. package/dist/src/imageParameter.d.ts +2 -3
  37. package/dist/src/imageParameter.js +8 -8
  38. package/dist/src/imagemap.d.ts +2 -2
  39. package/dist/src/imagemapLink.d.ts +5 -32
  40. package/dist/src/imagemapLink.js +1 -1
  41. package/dist/src/index.d.ts +7 -8
  42. package/dist/src/link/base.d.ts +1 -2
  43. package/dist/src/link/base.js +2 -6
  44. package/dist/src/link/file.d.ts +12 -13
  45. package/dist/src/link/file.js +11 -8
  46. package/dist/src/link/galleryImage.d.ts +2 -18
  47. package/dist/src/link/galleryImage.js +1 -1
  48. package/dist/src/link/index.d.ts +4 -2
  49. package/dist/src/link/index.js +11 -0
  50. package/dist/src/magicLink.d.ts +2 -15
  51. package/dist/src/nested.d.ts +1 -2
  52. package/dist/src/nowiki/base.d.ts +3 -20
  53. package/dist/src/nowiki/base.js +1 -1
  54. package/dist/src/nowiki/comment.d.ts +1 -15
  55. package/dist/src/nowiki/comment.js +1 -1
  56. package/dist/src/nowiki/doubleUnderscore.d.ts +6 -27
  57. package/dist/src/nowiki/doubleUnderscore.js +7 -7
  58. package/dist/src/nowiki/hr.d.ts +4 -23
  59. package/dist/src/nowiki/list.d.ts +2 -15
  60. package/dist/src/nowiki/listBase.d.ts +1 -11
  61. package/dist/src/nowiki/noinclude.d.ts +1 -15
  62. package/dist/src/nowiki/noinclude.js +1 -1
  63. package/dist/src/nowiki/quote.d.ts +1 -11
  64. package/dist/src/nowiki/quote.js +9 -1
  65. package/dist/src/paramTag/index.d.ts +1 -1
  66. package/dist/src/parameter.d.ts +3 -20
  67. package/dist/src/parameter.js +1 -1
  68. package/dist/src/pre.d.ts +1 -1
  69. package/dist/src/syntax.d.ts +1 -12
  70. package/dist/src/table/base.d.ts +4 -26
  71. package/dist/src/table/index.d.ts +3 -3
  72. package/dist/src/table/index.js +1 -1
  73. package/dist/src/table/td.d.ts +3 -21
  74. package/dist/src/table/td.js +1 -1
  75. package/dist/src/table/tr.d.ts +1 -2
  76. package/dist/src/table/trBase.d.ts +0 -1
  77. package/dist/src/tagPair/ext.d.ts +3 -21
  78. package/dist/src/tagPair/include.d.ts +2 -19
  79. package/dist/src/tagPair/include.js +1 -1
  80. package/dist/src/tagPair/index.d.ts +3 -18
  81. package/dist/src/tagPair/index.js +1 -1
  82. package/dist/src/transclude.d.ts +8 -9
  83. package/i18n/zh-hans.json +1 -0
  84. package/i18n/zh-hant.json +1 -0
  85. package/package.json +4 -3
@@ -8,10 +8,9 @@ import type { Title } from '../../lib/title';
8
8
  * @classdesc `{childNodes: [AtomToken, ...Token]}`
9
9
  */
10
10
  export declare abstract class LinkBaseToken extends Token {
11
- #private;
12
11
  type: 'link' | 'category' | 'file' | 'gallery-image' | 'imagemap-image';
13
12
  readonly name: string;
14
- readonly childNodes: [AtomToken, ...Token[]];
13
+ readonly childNodes: readonly [AtomToken, ...Token[]];
15
14
  abstract get children(): [AtomToken, ...Token[]];
16
15
  abstract get firstChild(): AtomToken;
17
16
  abstract get firstElementChild(): AtomToken;
@@ -134,7 +134,7 @@ class LinkBaseToken extends index_1.Token {
134
134
  lint(start = this.getAbsoluteIndex()) {
135
135
  const errors = super.lint(start), { childNodes: [target, linkText], type: linkType } = this, { encoded, fragment } = this.#title;
136
136
  let rect;
137
- if (linkType === 'link' && target.childNodes.some(({ type }) => type === 'template')) {
137
+ if (target.childNodes.some(({ type }) => type === 'template')) {
138
138
  rect = { start, ...this.getRootNode().posFromIndex(start) };
139
139
  errors.push((0, lint_1.generateForChild)(target, rect, 'template in an internal link target', 'warning'));
140
140
  }
@@ -142,7 +142,7 @@ class LinkBaseToken extends index_1.Token {
142
142
  rect ??= { start, ...this.getRootNode().posFromIndex(start) };
143
143
  errors.push((0, lint_1.generateForChild)(target, rect, 'unnecessary URL encoding in an internal link'));
144
144
  }
145
- if (linkType === 'link' && linkText?.childNodes.some(({ type, data }) => type === 'text' && data.includes('|'))) {
145
+ if ((linkType === 'link' || linkType === 'category') && linkText?.childNodes.some(({ type, data }) => type === 'text' && data.includes('|'))) {
146
146
  rect ??= { start, ...this.getRootNode().posFromIndex(start) };
147
147
  errors.push((0, lint_1.generateForChild)(linkText, rect, 'additional "|" in the link text', 'warning'));
148
148
  }
@@ -150,10 +150,6 @@ class LinkBaseToken extends index_1.Token {
150
150
  rect ??= { start, ...this.getRootNode().posFromIndex(start) };
151
151
  errors.push((0, lint_1.generateForChild)(target, rect, 'useless fragment'));
152
152
  }
153
- if (linkType === 'link' && this.closest('ext-link-text')) {
154
- rect ??= { start, ...this.getRootNode().posFromIndex(start) };
155
- errors.push((0, lint_1.generateForSelf)(this, rect, 'internal link in an external link'));
156
- }
157
153
  return errors;
158
154
  }
159
155
  /** @private */
@@ -9,9 +9,8 @@ import type { Token, AtomToken } from '../../internal';
9
9
  * @classdesc `{childNodes: [AtomToken, ...ImageParameterToken]}`
10
10
  */
11
11
  export declare class FileToken extends LinkBaseToken {
12
- #private;
13
12
  readonly type: 'file' | 'gallery-image' | 'imagemap-image';
14
- readonly childNodes: [AtomToken, ...ImageParameterToken[]];
13
+ readonly childNodes: readonly [AtomToken, ...ImageParameterToken[]];
15
14
  abstract get children(): [AtomToken, ...ImageParameterToken[]];
16
15
  abstract get lastChild(): AtomToken | ImageParameterToken;
17
16
  abstract get lastElementChild(): AtomToken | ImageParameterToken;
@@ -42,23 +41,28 @@ export declare class FileToken extends LinkBaseToken {
42
41
  /** @override */
43
42
  lint(start?: number): LintError[];
44
43
  /** 获取所有图片参数节点 */
45
- getAllArgs(): readonly ImageParameterToken[];
44
+ getAllArgs(): ImageParameterToken[];
46
45
  /**
47
46
  * 获取指定图片参数
48
47
  * @param key 参数名
49
48
  */
50
- getArgs(key: string): readonly ImageParameterToken[];
49
+ getArgs(key: string): ImageParameterToken[];
51
50
  /** 获取图片框架属性参数节点 */
52
- getFrameArgs(): readonly ImageParameterToken[];
51
+ getFrameArgs(): ImageParameterToken[];
53
52
  /** 获取图片水平对齐参数节点 */
54
- getHorizAlignArgs(): readonly ImageParameterToken[];
53
+ getHorizAlignArgs(): ImageParameterToken[];
55
54
  /** 获取图片垂直对齐参数节点 */
56
- getVertAlignArgs(): readonly ImageParameterToken[];
55
+ getVertAlignArgs(): ImageParameterToken[];
57
56
  /**
58
57
  * 获取生效的指定图片参数
59
58
  * @param key 参数名
60
59
  */
61
60
  getArg(key: string): ImageParameterToken | undefined;
61
+ /**
62
+ * 获取生效的指定图片参数值
63
+ * @param key 参数名
64
+ */
65
+ getValue(key: string): string | true | undefined;
62
66
  /**
63
67
  * 是否具有指定图片参数
64
68
  * @param key 参数名
@@ -75,12 +79,7 @@ export declare class FileToken extends LinkBaseToken {
75
79
  * 获取指定的图片参数值
76
80
  * @param key 参数名
77
81
  */
78
- getValues(key: string): readonly (string | true)[];
79
- /**
80
- * 获取生效的指定图片参数值
81
- * @param key 参数名
82
- */
83
- getValue(key: string): string | true | undefined;
82
+ getValues(key: string): (string | true)[];
84
83
  /**
85
84
  * 设置图片参数
86
85
  * @param key 参数名
@@ -101,6 +101,9 @@ class FileToken extends base_1.LinkBaseToken {
101
101
  const visibleNodes = childNodes.filter(node => node.text().trim());
102
102
  return visibleNodes.length !== 1 || visibleNodes[0].type !== 'arg';
103
103
  }), keys = [...new Set(args.map(({ name }) => name))].filter(key => key !== 'invalid'), frameKeys = keys.filter(key => frame.has(key)), horizAlignKeys = keys.filter(key => horizAlign.has(key)), vertAlignKeys = keys.filter(key => vertAlign.has(key));
104
+ if (this.closest('ext-link-text') && this.getValue('link')?.trim() !== '') {
105
+ errors.push((0, lint_1.generateForSelf)(this, { start }, 'internal link in an external link'));
106
+ }
104
107
  if (args.length === keys.length
105
108
  && frameKeys.length < 2
106
109
  && horizAlignKeys.length < 2
@@ -169,7 +172,6 @@ class FileToken extends base_1.LinkBaseToken {
169
172
  getVertAlignArgs() {
170
173
  return this.#getTypedArgs(vertAlign, '垂直对齐');
171
174
  }
172
- /* NOT FOR BROWSER */
173
175
  /**
174
176
  * 获取生效的指定图片参数
175
177
  * @param key 参数名
@@ -178,6 +180,14 @@ class FileToken extends base_1.LinkBaseToken {
178
180
  const args = this.getArgs(key);
179
181
  return args[args.length - 1];
180
182
  }
183
+ /**
184
+ * 获取生效的指定图片参数值
185
+ * @param key 参数名
186
+ */
187
+ getValue(key) {
188
+ return this.getArg(key)?.getValue();
189
+ }
190
+ /* NOT FOR BROWSER */
181
191
  /**
182
192
  * 是否具有指定图片参数
183
193
  * @param key 参数名
@@ -205,13 +215,6 @@ class FileToken extends base_1.LinkBaseToken {
205
215
  getValues(key) {
206
216
  return this.getArgs(key).map(token => token.getValue());
207
217
  }
208
- /**
209
- * 获取生效的指定图片参数值
210
- * @param key 参数名
211
- */
212
- getValue(key) {
213
- return this.getArg(key)?.getValue();
214
- }
215
218
  /**
216
219
  * 设置图片参数
217
220
  * @param key 参数名
@@ -3,22 +3,8 @@ import { Token } from '../index';
3
3
  import type { Title } from '../../lib/title';
4
4
  import type { LintError } from '../../base';
5
5
  import type { AtomToken, ImageParameterToken } from '../../internal';
6
- declare const GalleryImageToken_base: (abstract new (...args: any[]) => {
7
- toString(omit?: Set<string> | undefined): string;
8
- text(): string;
9
- readonly length: number;
10
- lint(start?: number | undefined): Parser.LintError[];
11
- insertAt(token: unknown, i?: number | undefined): unknown;
12
- afterBuild(): void;
13
- getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
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 | Parser.AstNodes)[]): void;
17
- constructorError(msg: string): never;
18
- }) & typeof Parser.FileToken;
19
- /** 图库图片 */
20
- export declare class GalleryImageToken extends GalleryImageToken_base {
21
- #private;
6
+ import {FileToken} from './file';
7
+ export declare class GalleryImageToken extends FileToken {
22
8
  type: 'gallery-image' | 'imagemap-image';
23
9
  /** 图片链接 */
24
10
  get link(): string | Title;
@@ -29,8 +15,6 @@ export declare class GalleryImageToken extends GalleryImageToken_base {
29
15
  * @param text 图片参数
30
16
  */
31
17
  constructor(type: 'gallery' | 'imagemap', link: string, text?: string, config?: Parser.Config, accum?: Token[]);
32
- /** private */
33
- getTitle(): Title;
34
18
  /** @override */
35
19
  lint(start?: number): LintError[];
36
20
  /**
@@ -42,7 +42,7 @@ class GalleryImageToken extends (0, singleLine_1.singleLine)(file_1.FileToken) {
42
42
  this.setAttribute('bracket', false);
43
43
  this.type = `${type}-image`;
44
44
  }
45
- /** private */
45
+ /** @private */
46
46
  getTitle() {
47
47
  const imagemap = this.type === 'imagemap-image';
48
48
  return this.normalizeTitle(String(this.firstChild), imagemap ? 0 : 6, true, !imagemap);
@@ -1,4 +1,5 @@
1
1
  import { LinkBaseToken } from './base';
2
+ import type { LintError } from '../../base';
2
3
  import type { Title } from '../../lib/title';
3
4
  import type { Token, AtomToken } from '../../internal';
4
5
  /**
@@ -6,9 +7,8 @@ import type { Token, AtomToken } from '../../internal';
6
7
  * @classdesc `{childNodes: [AtomToken, ?Token]}`
7
8
  */
8
9
  export declare class LinkToken extends LinkBaseToken {
9
- #private;
10
10
  readonly type = "link";
11
- readonly childNodes: [AtomToken] | [AtomToken, Token];
11
+ readonly childNodes: readonly [AtomToken] | readonly [AtomToken, Token];
12
12
  abstract get children(): [AtomToken] | [AtomToken, Token];
13
13
  abstract get link(): Title;
14
14
  abstract set link(link: Title);
@@ -26,6 +26,8 @@ export declare class LinkToken extends LinkBaseToken {
26
26
  /** @throws `RangeError` 非法的跨维基前缀 */
27
27
  set interwiki(interwiki: string);
28
28
  /** @override */
29
+ lint(start?: number): LintError[];
30
+ /** @override */
29
31
  setTarget(link: string): void;
30
32
  /**
31
33
  * 设置跨语言链接
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LinkToken = void 0;
4
4
  const constants_1 = require("../../util/constants");
5
+ const lint_1 = require("../../util/lint");
5
6
  const base_1 = require("./base");
6
7
  /**
7
8
  * 内链
@@ -47,6 +48,16 @@ class LinkToken extends base_1.LinkBaseToken {
47
48
  }
48
49
  this.setTarget(link);
49
50
  }
51
+ /* NOT FOR BROWSER END */
52
+ /** @override */
53
+ lint(start = this.getAbsoluteIndex()) {
54
+ const errors = super.lint(start);
55
+ if (this.closest('ext-link-text')) {
56
+ errors.push((0, lint_1.generateForSelf)(this, { start }, 'internal link in an external link'));
57
+ }
58
+ return errors;
59
+ }
60
+ /* NOT FOR BROWSER */
50
61
  /** @override */
51
62
  setTarget(link) {
52
63
  super.setTarget(`${/^\s*[:#]/u.test(link) ? '' : ':'}${link}`);
@@ -2,27 +2,14 @@ import * as Parser from '../index';
2
2
  import { Token } from './index';
3
3
  import type { LintError } from '../base';
4
4
  import type { AstNodes, AstText, CommentToken, IncludeToken, NoincludeToken, TranscludeToken } from '../internal';
5
- declare const MagicLinkToken_base: (abstract new (...args: any[]) => {
5
+ export declare class MagicLinkToken extends Token {
6
6
  "__#10@#pattern": RegExp;
7
7
  afterBuild(): void;
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
- readonly length: number;
12
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
13
- text(separator?: string | undefined): string;
14
- lint(start?: number | undefined): Parser.LintError[];
15
- insertAt(token: unknown, i?: number | undefined): unknown;
16
- addEventListener(events: string | string[], listener: AstListener): void;
17
- constructorError(msg: string): never;
18
- }) & typeof Parser.Token;
19
- /**
20
- * 自由外链
21
- * @classdesc `{childNodes: ...AstText|CommentToken|IncludeToken|NoincludeToken}`
22
- */
23
- export declare class MagicLinkToken extends MagicLinkToken_base {
24
11
  type: 'free-ext-link' | 'ext-link-url';
25
- readonly childNodes: (AstText | CommentToken | IncludeToken | NoincludeToken | TranscludeToken)[];
12
+ readonly childNodes: readonly (AstText | CommentToken | IncludeToken | NoincludeToken | TranscludeToken)[];
26
13
  abstract get children(): (CommentToken | IncludeToken | NoincludeToken | TranscludeToken)[];
27
14
  abstract get firstChild(): AstText | TranscludeToken;
28
15
  abstract get firstElementChild(): CommentToken | IncludeToken | NoincludeToken | TranscludeToken | undefined;
@@ -10,10 +10,9 @@ import type { AttributesToken } from './attributes';
10
10
  * @classdesc `{childNodes: ...ExtToken|NoincludeToken|CommentToken}`
11
11
  */
12
12
  export declare class NestedToken extends Token {
13
- #private;
14
13
  readonly type = "ext-inner";
15
14
  readonly name: string;
16
- readonly childNodes: (ExtToken | NoincludeToken | CommentToken)[];
15
+ readonly childNodes: readonly (ExtToken | NoincludeToken | CommentToken)[];
17
16
  abstract get children(): (ExtToken | NoincludeToken | CommentToken)[];
18
17
  abstract get firstChild(): ExtToken | NoincludeToken | CommentToken | undefined;
19
18
  abstract get firstElementChild(): ExtToken | NoincludeToken | CommentToken | undefined;
@@ -1,31 +1,14 @@
1
1
  import * as Parser from '../../index';
2
2
  import { Token } from '../index';
3
3
  import type { AstText } from '../../lib/text';
4
+ import type { FixedTokenBase } from '../../mixin/fixed';
4
5
  declare type NowikiTypes = 'ext-inner' | 'comment' | 'dd' | 'double-underscore' | 'hr' | 'list' | 'noinclude' | 'quote';
5
- declare const NowikiBaseToken_base: ((abstract new (...args: any[]) => {
6
+ export declare abstract class NowikiBaseToken extends Token implements FixedTokenBase {
6
7
  removeAt(): never;
7
8
  insertAt(token: string, i?: number | undefined): Parser.AstText;
8
9
  insertAt<T extends Parser.AstNodes>(token: T, i?: number | undefined): T;
9
- readonly length: number;
10
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
11
- text(separator?: string | undefined): string;
12
- lint(start?: number | undefined): Parser.LintError[];
13
- afterBuild(): void;
14
- getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
15
- setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
16
- addEventListener(events: string | string[], listener: AstListener): void;
17
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
18
- constructorError(msg: string): never;
19
- }) & {
20
- readonly fixed: true;
21
- }) & typeof Parser.Token;
22
- /**
23
- * 纯文字Token,不会被解析
24
- * @classdesc `{childNodes: [AstText]}`
25
- */
26
- export declare abstract class NowikiBaseToken extends NowikiBaseToken_base {
27
10
  type: NowikiTypes;
28
- readonly childNodes: [AstText];
11
+ readonly childNodes: readonly [AstText];
29
12
  abstract get children(): [];
30
13
  abstract get firstChild(): AstText;
31
14
  abstract get firstElementChild(): undefined;
@@ -10,7 +10,7 @@ const index_1 = require("../index");
10
10
  * 纯文字Token,不会被解析
11
11
  * @classdesc `{childNodes: [AstText]}`
12
12
  */
13
- class NowikiBaseToken extends (0, fixed_1.fixed)(index_1.Token) {
13
+ class NowikiBaseToken extends (0, fixed_1.fixedToken)(index_1.Token) {
14
14
  /** 纯文本部分 */
15
15
  get innerText() {
16
16
  return this.firstChild.data;
@@ -2,23 +2,9 @@ import * as Parser from '../../index';
2
2
  import { NowikiBaseToken } from './base';
3
3
  import type { LintError } from '../../base';
4
4
  import type { Token } from '../index';
5
- declare const CommentToken_base: ((abstract new (...args: any[]) => {
5
+ export declare class CommentToken extends NowikiBaseToken {
6
6
  text(): string;
7
7
  lint(): Parser.LintError[];
8
- readonly length: number;
9
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
10
- insertAt(token: unknown, i?: number | undefined): unknown;
11
- afterBuild(): void;
12
- getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
13
- setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
14
- addEventListener(events: string | string[], listener: AstListener): void;
15
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
16
- constructorError(msg: string): never;
17
- }) & {
18
- readonly hidden: true;
19
- }) & typeof NowikiBaseToken;
20
- /** HTML注释,不可见 */
21
- export declare class CommentToken extends CommentToken_base {
22
8
  readonly type = "comment";
23
9
  closed: boolean;
24
10
  /** 内部文本 */
@@ -9,7 +9,7 @@ const Parser = require("../../index");
9
9
  const base_1 = require("./base");
10
10
  /** HTML注释,不可见 */
11
11
  // @ts-expect-error not implementing all abstract methods
12
- class CommentToken extends (0, hidden_1.hidden)(base_1.NowikiBaseToken) {
12
+ class CommentToken extends (0, hidden_1.hiddenToken)(base_1.NowikiBaseToken) {
13
13
  type = 'comment';
14
14
  closed;
15
15
  /* NOT FOR BROWSER */
@@ -1,44 +1,23 @@
1
1
  import * as Parser from '../../index';
2
2
  import { NowikiBaseToken } from './base';
3
3
  import type { Token } from '../index';
4
- declare const DoubleUnderscoreToken_base: (abstract new (...args: any[]) => {
4
+ export declare class DoubleUnderscoreToken extends NowikiBaseToken {
5
5
  "__#10@#pattern": RegExp;
6
6
  afterBuild(): void;
7
- getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
7
+ getAttribute<T extends string>(key: T): TokenAttributeGetter<T>; /** @private */
8
8
  setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
9
9
  replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
10
- readonly length: number;
11
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
12
- text(separator?: string | undefined): string;
13
- lint(start?: number | undefined): Parser.LintError[];
14
- insertAt(token: unknown, i?: number | undefined): unknown;
15
- addEventListener(events: string | string[], listener: AstListener): void;
16
- constructorError(msg: string): never;
17
- }) & ((abstract new (...args: any[]) => {
10
+
11
+
18
12
  text(): string;
19
13
  lint(): Parser.LintError[];
20
- readonly length: number;
21
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
22
- insertAt(token: unknown, i?: number | undefined): unknown;
23
- afterBuild(): void;
24
- getAttribute<T_2 extends string>(key: T_2): TokenAttributeGetter<T_2>;
25
- setAttribute<T_3 extends string>(key: T_3, value: TokenAttributeSetter<T_3>): void;
26
- addEventListener(events: string | string[], listener: AstListener): void;
27
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
28
- constructorError(msg: string): never;
29
- }) & {
30
- readonly hidden: true;
31
- }) & typeof NowikiBaseToken;
32
- /** 状态开关 */
33
- export declare class DoubleUnderscoreToken extends DoubleUnderscoreToken_base {
34
- #private;
35
14
  readonly type = "double-underscore";
36
15
  readonly name: string;
37
16
  /**
38
17
  * @param word 状态开关名
39
- * @param fixed 是否固定大小写
18
+ * @param sensitive 是否固定大小写
40
19
  */
41
- constructor(word: string, fixed: boolean, config?: Parser.Config, accum?: Token[]);
20
+ constructor(word: string, sensitive: boolean, config?: Parser.Config, accum?: Token[]);
42
21
  /** @override */
43
22
  print(): string;
44
23
  /** @override */
@@ -9,19 +9,19 @@ const Parser = require("../../index");
9
9
  const base_1 = require("./base");
10
10
  /** 状态开关 */
11
11
  // @ts-expect-error not implementing all abstract methods
12
- class DoubleUnderscoreToken extends (0, syntax_1.syntax)((0, hidden_1.hidden)(base_1.NowikiBaseToken)) {
12
+ class DoubleUnderscoreToken extends (0, syntax_1.syntax)((0, hidden_1.hiddenToken)(base_1.NowikiBaseToken)) {
13
13
  type = 'double-underscore';
14
- #fixed;
14
+ #sensitive;
15
15
  /* NOT FOR BROWSER END */
16
16
  /**
17
17
  * @param word 状态开关名
18
- * @param fixed 是否固定大小写
18
+ * @param sensitive 是否固定大小写
19
19
  */
20
- constructor(word, fixed, config = Parser.getConfig(), accum = []) {
20
+ constructor(word, sensitive, config = Parser.getConfig(), accum = []) {
21
21
  super(word, config, accum);
22
- this.#fixed = fixed;
22
+ this.#sensitive = sensitive;
23
23
  this.setAttribute('name', word.toLowerCase());
24
- this.setAttribute('pattern', new RegExp(`^${word}$`, fixed ? 'u' : 'iu'));
24
+ this.setAttribute('pattern', new RegExp(`^${word}$`, sensitive ? 'u' : 'iu'));
25
25
  }
26
26
  /** @private */
27
27
  getAttribute(key) {
@@ -40,7 +40,7 @@ class DoubleUnderscoreToken extends (0, syntax_1.syntax)((0, hidden_1.hidden)(ba
40
40
  cloneNode() {
41
41
  const config = this.getAttribute('config');
42
42
  return debug_1.Shadow.run(() => {
43
- const token = new DoubleUnderscoreToken(this.innerText, this.#fixed, config);
43
+ const token = new DoubleUnderscoreToken(this.innerText, this.#sensitive, config);
44
44
  token.afterBuild();
45
45
  return token;
46
46
  });
@@ -1,33 +1,14 @@
1
1
  import { NowikiBaseToken } from './base';
2
- declare const HrToken_base: (abstract new (...args: any[]) => {
2
+ import type { SolTokenBase } from '../../mixin/sol';
3
+ export declare class HrToken extends NowikiBaseToken implements SolTokenBase {
3
4
  "__#10@#pattern": RegExp;
4
5
  afterBuild(): void;
5
6
  getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
6
7
  setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
7
8
  replaceChildren(...elements: (string | import("../..").AstNodes)[]): void;
8
- readonly length: number;
9
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
10
- text(separator?: string | undefined): string;
11
- lint(start?: number | undefined): import("../..").LintError[];
12
- insertAt(token: unknown, i?: number | undefined): unknown;
13
- addEventListener(events: string | string[], listener: AstListener): void;
14
- constructorError(msg: string): never;
15
- }) & (abstract new (...args: any[]) => {
9
+
10
+
16
11
  prependNewLine(): string;
17
- toString(omit?: Set<string> | undefined): string;
18
- getAttribute<S extends string>(key: S): TokenAttributeGetter<S>;
19
- text(): string;
20
- readonly length: number;
21
- lint(start?: number | undefined): import("../..").LintError[];
22
- insertAt(token: unknown, i?: number | undefined): unknown;
23
- afterBuild(): void;
24
- setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
25
- addEventListener(events: string | string[], listener: AstListener): void;
26
- replaceChildren(...elements: (string | import("../..").AstNodes)[]): void;
27
- constructorError(msg: string): never;
28
- }) & typeof NowikiBaseToken;
29
- /** `<hr>` */
30
- export declare class HrToken extends HrToken_base {
31
12
  readonly type = "hr";
32
13
  }
33
14
  export {};
@@ -1,21 +1,8 @@
1
1
  import { ListBaseToken } from './listBase';
2
2
  import type { AstRange } from '../../lib/range';
3
- declare const ListToken_base: (abstract new (...args: any[]) => {
3
+ import type { SolTokenBase } from '../../mixin/sol';
4
+ export declare class ListToken extends ListBaseToken implements SolTokenBase {
4
5
  prependNewLine(): string;
5
- toString(omit?: Set<string> | undefined): string;
6
- getAttribute<S extends string>(key: S): TokenAttributeGetter<S>;
7
- text(): string;
8
- readonly length: number;
9
- lint(start?: number | undefined): import("../..").LintError[];
10
- insertAt(token: unknown, i?: number | undefined): unknown;
11
- afterBuild(): void;
12
- setAttribute<T extends string>(key: T, value: TokenAttributeSetter<T>): void;
13
- addEventListener(events: string | string[], listener: AstListener): void;
14
- replaceChildren(...elements: (string | import("../..").AstNodes)[]): void;
15
- constructorError(msg: string): never;
16
- }) & typeof ListBaseToken;
17
- /** 位于行首的`;:*#` */
18
- export declare class ListToken extends ListToken_base {
19
6
  readonly type = "list";
20
7
  /** 是否包含`:` */
21
8
  get dd(): boolean;
@@ -1,20 +1,10 @@
1
1
  import { NowikiBaseToken } from './base';
2
- declare const ListBaseToken_base: (abstract new (...args: any[]) => {
2
+ export declare class ListBaseToken extends NowikiBaseToken {
3
3
  "__#10@#pattern": RegExp;
4
4
  afterBuild(): void;
5
5
  getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
6
6
  setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
7
7
  replaceChildren(...elements: (string | import("../..").AstNodes)[]): void;
8
- readonly length: number;
9
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
10
- text(separator?: string | undefined): string;
11
- lint(start?: number | undefined): import("../..").LintError[];
12
- insertAt(token: unknown, i?: number | undefined): unknown;
13
- addEventListener(events: string | string[], listener: AstListener): void;
14
- constructorError(msg: string): never;
15
- }) & typeof NowikiBaseToken;
16
- /** `;:*#` */
17
- export declare class ListBaseToken extends ListBaseToken_base {
18
8
  type: 'dd' | 'list';
19
9
  }
20
10
  export {};
@@ -1,21 +1,7 @@
1
1
  import { NowikiBaseToken } from './base';
2
- declare const NoincludeToken_base: ((abstract new (...args: any[]) => {
2
+ export declare class NoincludeToken extends NowikiBaseToken {
3
3
  text(): string;
4
4
  lint(): import("../..").LintError[];
5
- readonly length: number;
6
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
7
- insertAt(token: unknown, i?: number | undefined): unknown;
8
- afterBuild(): void;
9
- getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
10
- setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
11
- addEventListener(events: string | string[], listener: AstListener): void;
12
- replaceChildren(...elements: (string | import("../..").AstNodes)[]): void;
13
- constructorError(msg: string): never;
14
- }) & {
15
- readonly hidden: true;
16
- }) & typeof NowikiBaseToken;
17
- /** `<noinclude>`和`</noinclude>`,不可进行任何更改 */
18
- export declare class NoincludeToken extends NoincludeToken_base {
19
5
  readonly type = "noinclude";
20
6
  /**
21
7
  * @override
@@ -6,7 +6,7 @@ const hidden_1 = require("../../mixin/hidden");
6
6
  const base_1 = require("./base");
7
7
  /** `<noinclude>`和`</noinclude>`,不可进行任何更改 */
8
8
  // @ts-expect-error not implementing all abstract methods
9
- class NoincludeToken extends (0, hidden_1.hidden)(base_1.NowikiBaseToken) {
9
+ class NoincludeToken extends (0, hidden_1.hiddenToken)(base_1.NowikiBaseToken) {
10
10
  type = 'noinclude';
11
11
  /* NOT FOR BROWSER */
12
12
  /**
@@ -1,22 +1,12 @@
1
1
  import * as Parser from '../../index';
2
2
  import { NowikiBaseToken } from './base';
3
3
  import type { LintError } from '../../base';
4
- declare const QuoteToken_base: (abstract new (...args: any[]) => {
4
+ export declare class QuoteToken extends NowikiBaseToken {
5
5
  "__#10@#pattern": RegExp;
6
6
  afterBuild(): void;
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
- readonly length: number;
11
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
12
- text(separator?: string | undefined): string;
13
- lint(start?: number | undefined): Parser.LintError[];
14
- insertAt(token: unknown, i?: number | undefined): unknown;
15
- addEventListener(events: string | string[], listener: AstListener): void;
16
- constructorError(msg: string): never;
17
- }) & typeof NowikiBaseToken;
18
- /** `''`和`'''` */
19
- export declare class QuoteToken extends QuoteToken_base {
20
10
  readonly type = "quote";
21
11
  /** 是否粗体 */
22
12
  get bold(): boolean;
@@ -20,7 +20,7 @@ class QuoteToken extends (0, syntax_1.syntax)(base_1.NowikiBaseToken, /^(?:'{5}|
20
20
  }
21
21
  /** @override */
22
22
  lint(start = this.getAbsoluteIndex()) {
23
- const { previousSibling, nextSibling } = this, message = Parser.msg('lonely "$1"', `'`), errors = [];
23
+ const { previousSibling, nextSibling, bold } = this, message = Parser.msg('lonely "$1"', `'`), errors = [];
24
24
  let refError;
25
25
  if (previousSibling?.type === 'text' && previousSibling.data.endsWith(`'`)) {
26
26
  refError = (0, lint_1.generateForSelf)(this, { start }, message);
@@ -46,6 +46,14 @@ class QuoteToken extends (0, syntax_1.syntax)(base_1.NowikiBaseToken, /^(?:'{5}|
46
46
  endCol: startCol + length,
47
47
  });
48
48
  }
49
+ if (bold && this.closest('heading-title')) {
50
+ refError ??= (0, lint_1.generateForSelf)(this, { start }, message);
51
+ errors.push({
52
+ ...refError,
53
+ message: Parser.msg('bold in section header'),
54
+ severity: 'warning',
55
+ });
56
+ }
49
57
  return errors;
50
58
  }
51
59
  /** @override */
@@ -10,7 +10,7 @@ import type { AttributesToken, ExtToken } from '../../internal';
10
10
  export declare class ParamTagToken extends Token {
11
11
  readonly type = "ext-inner";
12
12
  readonly name: string;
13
- readonly childNodes: AtomToken[];
13
+ readonly childNodes: readonly AtomToken[];
14
14
  abstract get children(): AtomToken[];
15
15
  abstract get firstChild(): AtomToken | undefined;
16
16
  abstract get firstElementChild(): AtomToken | undefined;