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
@@ -0,0 +1,19 @@
1
+ import type { AstNodes } from '../lib/node';
2
+ /**
3
+ * 满足特定语法格式的Token
4
+ * @param constructor 基类
5
+ * @param pattern 语法正则
6
+ */
7
+ export declare const syntax: <S extends AstConstructor>(constructor: S, pattern?: RegExp) => (abstract new (...args: any[]) => {
8
+ "__#10@#pattern": RegExp;
9
+ /**
10
+ * @override
11
+ * @param elements 待替换的子节点
12
+ */
13
+ replaceChildren(...elements: (AstNodes | string)[]): void;
14
+ toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
15
+ text(separator?: string | undefined): string;
16
+ insertAt(token: unknown, i?: number | undefined): unknown; /** @private */
17
+ addEventListener(events: string | string[], listener: AstListener): void;
18
+ constructorError(msg: string): never;
19
+ }) & S;
@@ -21,9 +21,9 @@ const parseHrAndDoubleUnderscore = ({ firstChild: { data }, type, name }, config
21
21
  new hr_1.HrToken(m, config, accum);
22
22
  return `${lead}\0${accum.length - 1}r\x7F`;
23
23
  }).replace(new RegExp(`__(${doubleUnderscore.flat().join('|')})__`, 'giu'), (m, p1) => {
24
- const fixed = sensitive.has(p1);
25
- if (fixed || insensitive.has(p1.toLowerCase())) {
26
- new doubleUnderscore_1.DoubleUnderscoreToken(p1, fixed, config, accum);
24
+ const caseSensitive = sensitive.has(p1);
25
+ if (caseSensitive || insensitive.has(p1.toLowerCase())) {
26
+ new doubleUnderscore_1.DoubleUnderscoreToken(p1, caseSensitive, config, accum);
27
27
  return `\0${accum.length - 1}u\x7F`;
28
28
  }
29
29
  return m;
package/dist/src/arg.d.ts CHANGED
@@ -8,10 +8,9 @@ import type { LintError } from '../base';
8
8
  * @classdesc `{childNodes: [AtomToken, ?Token, ...HiddenToken]}`
9
9
  */
10
10
  export declare class ArgToken extends Token {
11
- #private;
12
11
  readonly type = "arg";
13
12
  readonly name: string;
14
- readonly childNodes: [AtomToken] | [AtomToken, Token, ...HiddenToken[]];
13
+ readonly childNodes: readonly [AtomToken] | readonly [AtomToken, Token, ...HiddenToken[]];
15
14
  abstract get children(): [AtomToken] | [AtomToken, Token, ...HiddenToken[]];
16
15
  abstract get firstChild(): AtomToken;
17
16
  abstract get firstElementChild(): AtomToken;
@@ -2,35 +2,17 @@ import * as Parser from '../index';
2
2
  import { Token } from './index';
3
3
  import { AtomToken } from './atom';
4
4
  import type { LintError } from '../base';
5
+ import type { FixedTokenBase } from '../mixin/fixed';
5
6
  import type { AttributesToken } from '../internal';
6
7
  export type AttributeTypes = 'ext-attr' | 'html-attr' | 'table-attr';
7
- declare const AttributeToken_base: ((abstract new (...args: any[]) => {
8
+ export declare class AttributeToken extends Token implements FixedTokenBase {
8
9
  removeAt(): never;
9
10
  insertAt(token: string, i?: number | undefined): Parser.AstText;
10
11
  insertAt<T extends Parser.AstNodes>(token: T, i?: number | undefined): T;
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
- afterBuild(): void;
16
- getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
17
- setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
18
- addEventListener(events: string | string[], listener: AstListener): void;
19
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
20
- constructorError(msg: string): never;
21
- }) & {
22
- readonly fixed: true;
23
- }) & typeof Parser.Token;
24
- /**
25
- * 扩展和HTML标签属性
26
- * @classdesc `{childNodes: [AtomToken, Token|AtomToken]}`
27
- */
28
- export declare class AttributeToken extends AttributeToken_base {
29
- #private;
30
12
  type: AttributeTypes;
31
13
  readonly name: string;
32
14
  readonly tag: string;
33
- readonly childNodes: [AtomToken, Token];
15
+ readonly childNodes: readonly [AtomToken, Token];
34
16
  abstract get children(): [AtomToken, Token];
35
17
  abstract get firstChild(): AtomToken;
36
18
  abstract get firstElementChild(): AtomToken;
@@ -176,7 +176,7 @@ const commonHtmlAttrs = new Set([
176
176
  * 扩展和HTML标签属性
177
177
  * @classdesc `{childNodes: [AtomToken, Token|AtomToken]}`
178
178
  */
179
- class AttributeToken extends (0, fixed_1.fixed)(index_1.Token) {
179
+ class AttributeToken extends (0, fixed_1.fixedToken)(index_1.Token) {
180
180
  tag;
181
181
  #equal;
182
182
  #quotes;
@@ -11,10 +11,9 @@ declare type AttributesTypes = `${AttributeTypes}s`;
11
11
  * @classdesc `{childNodes: ...AtomToken|AttributeToken}`
12
12
  */
13
13
  export declare class AttributesToken extends Token {
14
- #private;
15
14
  type: AttributesTypes;
16
15
  readonly name: string;
17
- readonly childNodes: (AtomToken | AttributeToken)[];
16
+ readonly childNodes: readonly (AtomToken | AttributeToken)[];
18
17
  abstract get children(): (AtomToken | AttributeToken)[];
19
18
  abstract get firstChild(): AtomToken | AttributeToken | undefined;
20
19
  abstract get firstElementChild(): AtomToken | AttributeToken | undefined;
@@ -47,7 +46,7 @@ export declare class AttributesToken extends Token {
47
46
  * 所有指定属性名的AttributeToken
48
47
  * @param key 属性名
49
48
  */
50
- getAttrTokens(key?: string): readonly AttributeToken[];
49
+ getAttrTokens(key?: string): AttributeToken[];
51
50
  /**
52
51
  * 指定属性名的最后一个AttributeToken
53
52
  * @param key 属性名
@@ -2,9 +2,8 @@ import * as Parser from '../index';
2
2
  import { Token } from './index';
3
3
  import { ConverterFlagsToken } from './converterFlags';
4
4
  import { ConverterRuleToken } from './converterRule';
5
- declare const ConverterToken_base: (abstract new (...args: any[]) => {
6
- readonly firstChild: Parser.ConverterFlagsToken;
7
- readonly firstElementChild: Parser.ConverterFlagsToken;
5
+ import type { FlagsParentBase } from '../mixin/flagsParent';
6
+ export declare class ConverterToken extends Token implements FlagsParentBase {
8
7
  flags: Set<string>;
9
8
  getAllFlags(): Set<string>;
10
9
  getEffectiveFlags(): Set<string>;
@@ -14,25 +13,8 @@ declare const ConverterToken_base: (abstract new (...args: any[]) => {
14
13
  removeFlag(flag: string): void;
15
14
  setFlag(flag: string): void;
16
15
  toggleFlag(flag: string): void;
17
- readonly length: number;
18
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
19
- text(separator?: string | undefined): string;
20
- lint(start?: number | undefined): Parser.LintError[];
21
- insertAt(token: unknown, i?: number | undefined): unknown;
22
- afterBuild(): void;
23
- getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
24
- setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
25
- addEventListener(events: string | string[], listener: AstListener): void;
26
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
27
- constructorError(msg: string): never;
28
- }) & typeof Parser.Token;
29
- /**
30
- * 转换
31
- * @classdesc `{childNodes: [ConverterFlagsToken, ...ConverterRuleToken]}`
32
- */
33
- export declare class ConverterToken extends ConverterToken_base {
34
16
  readonly type = "converter";
35
- readonly childNodes: [ConverterFlagsToken, ...ConverterRuleToken[]];
17
+ readonly childNodes: readonly [ConverterFlagsToken, ...ConverterRuleToken[]];
36
18
  abstract get children(): [ConverterFlagsToken, ...ConverterRuleToken[]];
37
19
  abstract get lastChild(): ConverterFlagsToken | ConverterRuleToken;
38
20
  abstract get lastElementChild(): ConverterFlagsToken | ConverterRuleToken;
@@ -8,9 +8,8 @@ import type { ConverterToken, ConverterRuleToken } from '../internal';
8
8
  * @classdesc `{childNodes: ...AtomToken}`
9
9
  */
10
10
  export declare class ConverterFlagsToken extends Token {
11
- #private;
12
11
  readonly type = "converter-flags";
13
- readonly childNodes: AtomToken[];
12
+ readonly childNodes: readonly AtomToken[];
14
13
  abstract get children(): AtomToken[];
15
14
  abstract get firstChild(): AtomToken | undefined;
16
15
  abstract get firstElementChild(): AtomToken | undefined;
@@ -56,7 +55,7 @@ export declare class ConverterFlagsToken extends Token {
56
55
  * 获取转换类型标记节点
57
56
  * @param flag 转换类型标记
58
57
  */
59
- getFlagTokens(flag: string): readonly AtomToken[];
58
+ getFlagTokens(flag: string): AtomToken[];
60
59
  /** 获取有效的转换类型标记 */
61
60
  getEffectiveFlags(): Set<string>;
62
61
  /**
@@ -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
- readonly childNodes: [AtomToken] | [AtomToken, AtomToken] | [AtomToken, AtomToken, AtomToken];
11
+ readonly childNodes: readonly [AtomToken] | readonly [AtomToken, AtomToken] | readonly [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;
@@ -1,33 +1,14 @@
1
1
  import * as Parser from '../index';
2
2
  import { Token } from './index';
3
3
  import { MagicLinkToken } from './magicLink';
4
- declare const ExtLinkToken_base: (abstract new (...args: any[]) => {
5
- readonly firstChild: Parser.MagicLinkToken;
6
- readonly firstElementChild: Parser.MagicLinkToken;
4
+ import type { MagicLinkParentBase } from '../mixin/magicLinkParent';
5
+ export declare class ExtLinkToken extends Token implements MagicLinkParentBase {
7
6
  protocol: string | undefined;
8
7
  link: string;
9
8
  getUrl(): URL;
10
9
  setTarget(url: string): 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
- afterBuild(): void;
17
- getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
18
- setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
19
- addEventListener(events: string | string[], listener: AstListener): void;
20
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
21
- constructorError(msg: string): never;
22
- }) & typeof Parser.Token;
23
- /**
24
- * 外链
25
- * @classdesc `{childNodes: [MagicLinkToken, ?Token]}`
26
- */
27
- export declare class ExtLinkToken extends ExtLinkToken_base {
28
- #private;
29
10
  readonly type = "ext-link";
30
- readonly childNodes: [MagicLinkToken] | [MagicLinkToken, Token];
11
+ readonly childNodes: readonly [MagicLinkToken] | readonly [MagicLinkToken, Token];
31
12
  abstract get children(): [MagicLinkToken] | [MagicLinkToken, Token];
32
13
  abstract get lastChild(): Token;
33
14
  abstract get lastElementChild(): Token;
@@ -9,10 +9,9 @@ import type { AstNodes, AstText, AttributesToken, ExtToken } from '../internal';
9
9
  * @classdesc `{childNodes: ...(GalleryImageToken|NoincludeToken|AstText)}`
10
10
  */
11
11
  export declare class GalleryToken extends Token {
12
- #private;
13
12
  readonly type = "ext-inner";
14
13
  readonly name: 'gallery';
15
- readonly childNodes: (GalleryImageToken | NoincludeToken | AstText)[];
14
+ readonly childNodes: readonly (GalleryImageToken | NoincludeToken | AstText)[];
16
15
  abstract get children(): (GalleryImageToken | NoincludeToken)[];
17
16
  abstract get firstChild(): GalleryImageToken | NoincludeToken | AstText | undefined;
18
17
  abstract get firstElementChild(): GalleryImageToken | NoincludeToken | undefined;
@@ -25,7 +24,7 @@ export declare class GalleryToken extends Token {
25
24
  abstract get parentNode(): ExtToken | undefined;
26
25
  abstract get parentElement(): ExtToken | undefined;
27
26
  /** 所有图片 */
28
- get images(): readonly GalleryImageToken[];
27
+ get images(): GalleryImageToken[];
29
28
  /** @param inner 标签内部wikitext */
30
29
  constructor(inner?: string, config?: Parser.Config, accum?: Token[]);
31
30
  /** @override */
@@ -2,44 +2,17 @@ import * as Parser from '../index';
2
2
  import { Token } from './index';
3
3
  import { SyntaxToken } from './syntax';
4
4
  import type { LintError } from '../base';
5
- declare const HeadingToken_base: (abstract new (...args: any[]) => {
5
+ import type { FixedTokenBase } from '../mixin/fixed';
6
+ import type { SolTokenBase } from '../mixin/sol';
7
+ export declare class HeadingToken extends Token implements FixedTokenBase, SolTokenBase {
6
8
  prependNewLine(): string;
7
- toString(omit?: Set<string> | undefined): string;
8
- getAttribute<S extends string>(key: S): TokenAttributeGetter<S>; /** 标题格式的等号 */
9
- text(): string;
10
- readonly length: number;
11
- lint(start?: number | undefined): Parser.LintError[];
12
- insertAt(token: unknown, i?: number | undefined): unknown;
13
- afterBuild(): void;
14
- setAttribute<T extends string>(key: T, value: TokenAttributeSetter<T>): void;
15
- addEventListener(events: string | string[], listener: AstListener): void;
16
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
17
- constructorError(msg: string): never;
18
- }) & ((abstract new (...args: any[]) => {
9
+
10
+
19
11
  removeAt(): never;
20
12
  insertAt(token: string, i?: number | undefined): Parser.AstText;
21
13
  insertAt<T_1 extends Parser.AstNodes>(token: T_1, i?: number | undefined): T_1;
22
- readonly length: number;
23
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
24
- text(separator?: string | undefined): string;
25
- lint(start?: number | undefined): Parser.LintError[];
26
- afterBuild(): void;
27
- getAttribute<T_2 extends string>(key: T_2): TokenAttributeGetter<T_2>;
28
- setAttribute<T extends string>(key: T, value: TokenAttributeSetter<T>): void;
29
- addEventListener(events: string | string[], listener: AstListener): void;
30
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
31
- constructorError(msg: string): never;
32
- }) & {
33
- readonly fixed: true;
34
- }) & typeof Parser.Token;
35
- /**
36
- * 章节标题
37
- * @classdesc `{childNodes: [Token, SyntaxToken]}`
38
- */
39
- export declare class HeadingToken extends HeadingToken_base {
40
- #private;
41
14
  readonly type = "heading";
42
- readonly childNodes: [Token, SyntaxToken];
15
+ readonly childNodes: readonly [Token, SyntaxToken];
43
16
  abstract get children(): [Token, SyntaxToken];
44
17
  abstract get firstChild(): Token;
45
18
  abstract get firstElementChild(): Token;
@@ -13,7 +13,7 @@ const syntax_1 = require("./syntax");
13
13
  * 章节标题
14
14
  * @classdesc `{childNodes: [Token, SyntaxToken]}`
15
15
  */
16
- class HeadingToken extends (0, sol_1.sol)((0, fixed_1.fixed)(index_1.Token)) {
16
+ class HeadingToken extends (0, sol_1.sol)((0, fixed_1.fixedToken)(index_1.Token)) {
17
17
  type = 'heading';
18
18
  #level;
19
19
  /** 标题格式的等号 */
@@ -1,21 +1,7 @@
1
1
  import { Token } from './index';
2
- declare const HiddenToken_base: ((abstract new (...args: any[]) => {
2
+ export declare class HiddenToken extends Token {
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 Token;
17
- /** 不可见的节点 */
18
- export declare class HiddenToken extends HiddenToken_base {
19
5
  readonly type = "hidden";
20
6
  /** @override */
21
7
  cloneNode(): this;
@@ -6,7 +6,7 @@ const constants_1 = require("../util/constants");
6
6
  const hidden_1 = require("../mixin/hidden");
7
7
  const index_1 = require("./index");
8
8
  /** 不可见的节点 */
9
- class HiddenToken extends (0, hidden_1.hidden)(index_1.Token) {
9
+ class HiddenToken extends (0, hidden_1.hiddenToken)(index_1.Token) {
10
10
  type = 'hidden';
11
11
  /* NOT FOR BROWSER */
12
12
  /** @override */
@@ -1,10 +1,10 @@
1
1
  import * as Parser from '../index';
2
2
  import { Token } from './index';
3
3
  import type { LintError } from '../base';
4
+ import type { AttributesParentBase } from '../mixin/attributesParent';
5
+ import type { FixedTokenBase } from '../mixin/fixed';
4
6
  import type { AttributesToken } from '../internal';
5
- declare const HtmlToken_base: (abstract new (...args: any[]) => {
6
- readonly childNodes: Parser.AstNodes[];
7
- readonly "__#7@#attributesChild": Parser.AttributesToken;
7
+ export declare class HtmlToken extends Token implements AttributesParentBase, FixedTokenBase {
8
8
  attributes: Record<string, string | true>;
9
9
  className: string;
10
10
  classList: Set<string>;
@@ -17,43 +17,14 @@ declare const HtmlToken_base: (abstract new (...args: any[]) => {
17
17
  setAttr(prop: Record<string, string | boolean>): void;
18
18
  removeAttr(key: string): void;
19
19
  toggleAttr(key: string, force?: boolean | undefined): void;
20
- readonly length: number;
21
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
22
- text(separator?: string | undefined): string;
23
- lint(start?: number | undefined): Parser.LintError[];
24
- insertAt(token: unknown, i?: number | undefined): unknown;
25
- afterBuild(): void;
26
- getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
27
- setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
28
- addEventListener(events: string | string[], listener: AstListener): void;
29
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
30
- constructorError(msg: string): never;
31
- }) & ((abstract new (...args: any[]) => {
20
+
21
+
32
22
  removeAt(): never;
33
23
  insertAt(token: string, i?: number | undefined): Parser.AstText;
34
24
  insertAt<T_2 extends Parser.AstNodes>(token: T_2, i?: number | undefined): T_2;
35
- readonly length: number;
36
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
37
- text(separator?: string | undefined): string;
38
- lint(start?: number | undefined): Parser.LintError[];
39
- afterBuild(): void;
40
- getAttribute<T extends string>(key: T): TokenAttributeGetter<T>;
41
- setAttribute<T_1 extends string>(key: T_1, value: TokenAttributeSetter<T_1>): void;
42
- addEventListener(events: string | string[], listener: AstListener): void;
43
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
44
- constructorError(msg: string): never;
45
- }) & {
46
- readonly fixed: true;
47
- }) & typeof Parser.Token;
48
- /**
49
- * HTML标签
50
- * @classdesc `{childNodes: [AttributesToken]}`
51
- */
52
- export declare class HtmlToken extends HtmlToken_base {
53
- #private;
54
25
  readonly type = "html";
55
26
  readonly name: string;
56
- readonly childNodes: [AttributesToken];
27
+ readonly childNodes: readonly [AttributesToken];
57
28
  abstract get children(): [AttributesToken];
58
29
  abstract get firstChild(): AttributesToken;
59
30
  abstract get firstElementChild(): AttributesToken;
package/dist/src/html.js CHANGED
@@ -40,7 +40,7 @@ const magicWords = new Set(['if', 'ifeq', 'ifexpr', 'ifexist', 'iferror', 'switc
40
40
  * HTML标签
41
41
  * @classdesc `{childNodes: [AttributesToken]}`
42
42
  */
43
- class HtmlToken extends (0, attributesParent_1.attributesParent)((0, fixed_1.fixed)(index_1.Token)) {
43
+ class HtmlToken extends (0, attributesParent_1.attributesParent)((0, fixed_1.fixedToken)(index_1.Token)) {
44
44
  type = 'html';
45
45
  #closing;
46
46
  #selfClosing;
@@ -145,8 +145,16 @@ class HtmlToken extends (0, attributesParent_1.attributesParent)((0, fixed_1.fix
145
145
  const { message: errorMsg } = e;
146
146
  refError ??= (0, lint_1.generateForSelf)(this, { start }, '');
147
147
  const [msg] = errorMsg.split(':'), error = { ...refError, message: Parser.msg(msg) };
148
- if (msg === 'unclosed tag' && !formattingTags.has(this.name)) {
149
- error.severity = 'warning';
148
+ if (msg === 'unclosed tag' && !this.closest('heading-title')) {
149
+ if (formattingTags.has(this.name)) {
150
+ const childNodes = this.parentNode?.childNodes, i = childNodes?.indexOf(this);
151
+ if (!childNodes?.slice(0, i).some(({ type, name }) => type === 'html' && name === this.name)) {
152
+ error.severity = 'warning';
153
+ }
154
+ }
155
+ else {
156
+ error.severity = 'warning';
157
+ }
150
158
  }
151
159
  else if (msg === 'unmatched closing tag') {
152
160
  const ancestor = this.closest('magic-word');
@@ -165,6 +173,14 @@ class HtmlToken extends (0, attributesParent_1.attributesParent)((0, fixed_1.fix
165
173
  severity: 'warning',
166
174
  });
167
175
  }
176
+ if ((this.name === 'b' || this.name === 'strong') && this.closest('heading-title')) {
177
+ refError ??= (0, lint_1.generateForSelf)(this, { start }, '');
178
+ errors.push({
179
+ ...refError,
180
+ message: Parser.msg('bold in section header'),
181
+ severity: 'warning',
182
+ });
183
+ }
168
184
  return errors;
169
185
  }
170
186
  /**
@@ -6,7 +6,6 @@ import type { AstNodes, AstText, AtomToken, FileToken } from '../internal';
6
6
  export declare const galleryParams: Set<string>;
7
7
  /** 图片参数 */
8
8
  export declare class ImageParameterToken extends Token {
9
- #private;
10
9
  readonly type = "image-parameter";
11
10
  readonly name: string;
12
11
  abstract get parentNode(): FileToken | undefined;
@@ -42,6 +41,8 @@ export declare class ImageParameterToken extends Token {
42
41
  text(): string;
43
42
  /** @override */
44
43
  lint(start?: number): LintError[];
44
+ /** 获取参数值 */
45
+ getValue(): string | true;
45
46
  /** @override */
46
47
  print(): string;
47
48
  /** @override */
@@ -54,8 +55,6 @@ export declare class ImageParameterToken extends Token {
54
55
  */
55
56
  insertAt(token: string, i?: number): AstText;
56
57
  insertAt<T extends AstNodes>(token: T, i?: number): T;
57
- /** 获取参数值 */
58
- getValue(): string | true;
59
58
  /**
60
59
  * 设置参数值
61
60
  * @param value 参数值
@@ -175,6 +175,14 @@ class ImageParameterToken extends index_1.Token {
175
175
  }
176
176
  return errors;
177
177
  }
178
+ /** 是否是不可变参数 */
179
+ #isVoid() {
180
+ return this.#syntax && !this.#syntax.includes('$1');
181
+ }
182
+ /** 获取参数值 */
183
+ getValue() {
184
+ return this.name === 'invalid' ? this.text() : this.#isVoid() || super.text();
185
+ }
178
186
  /** @override */
179
187
  print() {
180
188
  if (this.#syntax) {
@@ -205,20 +213,12 @@ class ImageParameterToken extends index_1.Token {
205
213
  super.setAttribute(key, value);
206
214
  }
207
215
  }
208
- /** 是否是不可变参数 */
209
- #isVoid() {
210
- return this.#syntax && !this.#syntax.includes('$1');
211
- }
212
216
  insertAt(token, i) {
213
217
  if (!debug_1.Shadow.running && this.#isVoid()) {
214
218
  throw new Error(`图片参数 ${this.name} 不接受自定义输入!`);
215
219
  }
216
220
  return super.insertAt(token, i);
217
221
  }
218
- /** 获取参数值 */
219
- getValue() {
220
- return this.name === 'invalid' ? this.text() : this.#isVoid() || super.text();
221
- }
222
222
  /**
223
223
  * 设置参数值
224
224
  * @param value 参数值
@@ -12,7 +12,7 @@ import type { AstNodes, AstText, AttributesToken, ExtToken } from '../internal';
12
12
  export declare class ImagemapToken extends Token {
13
13
  readonly type = "ext-inner";
14
14
  readonly name: 'imagemap';
15
- readonly childNodes: (GalleryImageToken | NoincludeToken | ImagemapLinkToken | AstText)[];
15
+ readonly childNodes: readonly (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(): readonly ImagemapLinkToken[];
30
+ get links(): ImagemapLinkToken[];
31
31
  /** @param inner 标签内部wikitext */
32
32
  constructor(inner?: string, config?: Parser.Config, accum?: Token[]);
33
33
  /** @override */
@@ -4,43 +4,16 @@ import { NoincludeToken } from './nowiki/noinclude';
4
4
  import { LinkToken } from './link/index';
5
5
  import { ExtLinkToken } from './extLink';
6
6
  import type { Title } from '../lib/title';
7
+ import type { FixedTokenBase } from '../mixin/fixed';
7
8
  import type { AstText, ImagemapToken } from '../internal';
8
- declare const ImagemapLinkToken_base: ((abstract new (...args: any[]) => {
9
+ export declare class ImagemapLinkToken extends Token implements FixedTokenBase {
9
10
  removeAt(): never;
10
11
  insertAt(token: string, i?: number | undefined): Parser.AstText;
11
12
  insertAt<T extends Parser.AstNodes>(token: T, i?: number | undefined): T;
12
- readonly length: number;
13
- toString(omit?: Set<string> | undefined, separator?: string | undefined): string;
14
- text(separator?: string | undefined): string;
15
- lint(start?: number | undefined): Parser.LintError[];
16
- afterBuild(): void;
17
- getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
18
- setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
19
- addEventListener(events: string | string[], listener: AstListener): void;
20
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
21
- constructorError(msg: string): never;
22
- }) & {
23
- readonly fixed: true;
24
- }) & (abstract new (...args: any[]) => {
25
- toString(omit?: Set<string> | undefined): string;
26
- text(): string;
27
- readonly length: number;
28
- lint(start?: number | undefined): Parser.LintError[];
29
- insertAt(token: unknown, i?: number | undefined): unknown;
30
- afterBuild(): void;
31
- getAttribute<T_1 extends string>(key: T_1): TokenAttributeGetter<T_1>;
32
- setAttribute<T_2 extends string>(key: T_2, value: TokenAttributeSetter<T_2>): void;
33
- addEventListener(events: string | string[], listener: AstListener): void;
34
- replaceChildren(...elements: (string | Parser.AstNodes)[]): void;
35
- constructorError(msg: string): never;
36
- }) & typeof Parser.Token;
37
- /**
38
- * `<imagemap>`内的链接
39
- * @classdesc `{childNodes: [AstText, LinkToken|ExtLinkToken, NoincludeToken]}`
40
- */
41
- export declare class ImagemapLinkToken extends ImagemapLinkToken_base {
13
+
14
+
42
15
  readonly type = "imagemap-link";
43
- readonly childNodes: [AstText, LinkToken | ExtLinkToken, NoincludeToken];
16
+ readonly childNodes: readonly [AstText, LinkToken | ExtLinkToken, NoincludeToken];
44
17
  abstract get children(): [LinkToken | ExtLinkToken, NoincludeToken];
45
18
  abstract get firstChild(): AstText;
46
19
  abstract get firstElementChild(): LinkToken | ExtLinkToken;
@@ -13,7 +13,7 @@ const extLink_1 = require("./extLink");
13
13
  * `<imagemap>`内的链接
14
14
  * @classdesc `{childNodes: [AstText, LinkToken|ExtLinkToken, NoincludeToken]}`
15
15
  */
16
- class ImagemapLinkToken extends (0, fixed_1.fixed)((0, singleLine_1.singleLine)(index_1.Token)) {
16
+ class ImagemapLinkToken extends (0, fixed_1.fixedToken)((0, singleLine_1.singleLine)(index_1.Token)) {
17
17
  type = 'imagemap-link';
18
18
  /* NOT FOR BROWSER */
19
19
  /** 内外链接 */
@@ -5,7 +5,7 @@ import { AstElement } from '../lib/element';
5
5
  import { AstText } from '../lib/text';
6
6
  import type { Range } from '../lib/ranges';
7
7
  import type { Title } from '../lib/title';
8
- import type { AstNodes, IncludeToken, HtmlToken, ExtToken, TranscludeToken, CommentToken, FileToken } from '../internal';
8
+ import type { AstNodes, IncludeToken, HtmlToken, ExtToken, TranscludeToken, CommentToken, FileToken, LinkToken, ExtLinkToken, MagicLinkToken, ImageParameterToken, ImagemapLinkToken } from '../internal';
9
9
  import type { CaretPosition } from '../lib/node';
10
10
  import type { TokenTypes } from '../util/constants';
11
11
  declare type TagToken = IncludeToken | ExtToken | HtmlToken;
@@ -14,14 +14,13 @@ declare type TagToken = IncludeToken | ExtToken | HtmlToken;
14
14
  * @classdesc `{childNodes: ...(AstText|Token)}`
15
15
  */
16
16
  export declare class Token extends AstElement {
17
- #private;
18
17
  type: TokenTypes;
19
18
  /** 所有图片,包括图库 */
20
- get images(): readonly FileToken[];
19
+ get images(): FileToken[];
21
20
  /** 所有内链、外链和自由外链 */
22
- get links(): readonly Token[];
21
+ get links(): (LinkToken | ExtLinkToken | MagicLinkToken | ImageParameterToken | ImagemapLinkToken)[];
23
22
  /** 所有模板和模块 */
24
- get embeds(): readonly TranscludeToken[];
23
+ get embeds(): TranscludeToken[];
25
24
  /** @class */
26
25
  constructor(wikitext?: string, config?: Parser.Config, accum?: Token[], acceptable?: Acceptable);
27
26
  /**
@@ -101,13 +100,13 @@ export declare class Token extends AstElement {
101
100
  * 找到给定位置所在的所有节点
102
101
  * @param index 位置
103
102
  */
104
- elementsFromIndex(index?: number): readonly AstNodes[];
103
+ elementsFromIndex(index?: number): AstNodes[];
105
104
  /**
106
105
  * 找到给定位置所在的所有节点
107
106
  * @param x 列数
108
107
  * @param y 行数
109
108
  */
110
- elementsFromPoint(x: number, y: number): readonly AstNodes[];
109
+ elementsFromPoint(x: number, y: number): AstNodes[];
111
110
  /**
112
111
  * 判断标题是否是跨维基链接
113
112
  * @param title 标题
@@ -129,7 +128,7 @@ export declare class Token extends AstElement {
129
128
  */
130
129
  findEnclosingHtml(tag?: string): AstRange | undefined;
131
130
  /** 获取全部分类 */
132
- getCategories(): readonly [string, string | undefined][];
131
+ getCategories(): [string, string | undefined][];
133
132
  /** 重新解析单引号 */
134
133
  redoQuotes(): void;
135
134
  /** 解析部分魔术字 */