wikiparser-node 1.0.3-b → 1.1.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 (153) hide show
  1. package/config/.schema.json +160 -0
  2. package/config/llwiki.json +35 -1
  3. package/config/moegirl.json +44 -1
  4. package/config/zhwiki.json +466 -1
  5. package/dist/addon/table.d.ts +6 -0
  6. package/dist/addon/table.js +559 -0
  7. package/dist/bin/toc.js +18 -0
  8. package/dist/index.d.ts +60 -0
  9. package/dist/index.js +210 -0
  10. package/dist/internal.d.ts +44 -0
  11. package/dist/lib/element.d.ts +155 -0
  12. package/dist/lib/element.js +655 -0
  13. package/dist/lib/node.d.ts +143 -0
  14. package/dist/lib/node.js +420 -0
  15. package/dist/lib/range.d.ts +104 -0
  16. package/dist/lib/range.js +386 -0
  17. package/dist/lib/ranges.d.ts +26 -0
  18. package/dist/lib/ranges.js +117 -0
  19. package/dist/lib/text.d.ts +63 -0
  20. package/dist/lib/text.js +218 -0
  21. package/dist/lib/title.d.ts +38 -0
  22. package/dist/lib/title.js +162 -0
  23. package/dist/mixin/attributesParent.js +94 -0
  24. package/dist/mixin/fixed.js +32 -0
  25. package/dist/mixin/flagsParent.js +70 -0
  26. package/dist/mixin/hidden.js +22 -0
  27. package/dist/mixin/magicLinkParent.js +41 -0
  28. package/dist/mixin/singleLine.js +25 -0
  29. package/dist/mixin/sol.js +43 -0
  30. package/dist/mixin/syntax.js +56 -0
  31. package/dist/parser/braces.js +123 -0
  32. package/dist/parser/commentAndExt.js +69 -0
  33. package/dist/parser/converter.js +40 -0
  34. package/dist/parser/externalLinks.js +28 -0
  35. package/dist/parser/hrAndDoubleUnderscore.js +38 -0
  36. package/dist/parser/html.js +36 -0
  37. package/dist/parser/links.js +94 -0
  38. package/dist/parser/list.js +59 -0
  39. package/dist/parser/magicLinks.js +40 -0
  40. package/dist/parser/quotes.js +67 -0
  41. package/dist/parser/selector.js +163 -0
  42. package/dist/parser/table.js +110 -0
  43. package/dist/src/arg.d.ts +58 -0
  44. package/dist/src/arg.js +190 -0
  45. package/dist/src/atom.d.ts +12 -0
  46. package/dist/src/atom.js +27 -0
  47. package/dist/src/attribute.d.ts +86 -0
  48. package/dist/src/attribute.js +392 -0
  49. package/dist/src/attributes.d.ts +106 -0
  50. package/dist/src/attributes.js +339 -0
  51. package/dist/src/converter.d.ts +51 -0
  52. package/dist/src/converter.js +79 -0
  53. package/dist/src/converterFlags.d.ts +87 -0
  54. package/dist/src/converterFlags.js +223 -0
  55. package/dist/src/converterRule.d.ts +81 -0
  56. package/dist/src/converterRule.js +221 -0
  57. package/dist/src/extLink.d.ts +53 -0
  58. package/dist/src/extLink.js +121 -0
  59. package/dist/src/gallery.d.ts +55 -0
  60. package/dist/src/gallery.js +129 -0
  61. package/dist/src/heading.d.ts +76 -0
  62. package/dist/src/heading.js +127 -0
  63. package/dist/src/hidden.d.ts +21 -0
  64. package/dist/src/hidden.js +23 -0
  65. package/dist/src/html.d.ts +105 -0
  66. package/dist/src/html.js +231 -0
  67. package/dist/src/imageParameter.d.ts +66 -0
  68. package/dist/src/imageParameter.js +246 -0
  69. package/dist/src/imagemap.d.ts +57 -0
  70. package/dist/src/imagemap.js +148 -0
  71. package/dist/src/imagemapLink.d.ts +57 -0
  72. package/dist/src/imagemapLink.js +40 -0
  73. package/dist/src/index.d.ts +145 -0
  74. package/dist/src/index.js +766 -0
  75. package/dist/src/link/base.d.ts +52 -0
  76. package/dist/src/link/base.js +198 -0
  77. package/dist/src/link/category.d.ts +13 -0
  78. package/dist/src/link/category.js +29 -0
  79. package/dist/src/link/file.d.ts +96 -0
  80. package/dist/src/link/file.js +253 -0
  81. package/dist/src/link/galleryImage.d.ts +41 -0
  82. package/dist/src/link/galleryImage.js +98 -0
  83. package/dist/src/link/index.d.ts +53 -0
  84. package/dist/src/link/index.js +123 -0
  85. package/dist/src/magicLink.d.ts +58 -0
  86. package/dist/src/magicLink.js +122 -0
  87. package/dist/src/nested.d.ts +44 -0
  88. package/dist/src/nested.js +87 -0
  89. package/dist/src/nowiki/base.d.ts +46 -0
  90. package/dist/src/nowiki/base.js +42 -0
  91. package/dist/src/nowiki/comment.d.ts +39 -0
  92. package/dist/src/nowiki/comment.js +67 -0
  93. package/dist/src/nowiki/dd.d.ts +8 -0
  94. package/dist/src/nowiki/dd.js +25 -0
  95. package/dist/src/nowiki/doubleUnderscore.d.ts +43 -0
  96. package/dist/src/nowiki/doubleUnderscore.js +51 -0
  97. package/dist/src/nowiki/hr.d.ts +29 -0
  98. package/dist/src/nowiki/hr.js +14 -0
  99. package/dist/src/nowiki/index.d.ts +16 -0
  100. package/dist/src/nowiki/index.js +21 -0
  101. package/dist/src/nowiki/list.d.ts +29 -0
  102. package/dist/src/nowiki/list.js +48 -0
  103. package/dist/src/nowiki/listBase.d.ts +18 -0
  104. package/dist/src/nowiki/listBase.js +12 -0
  105. package/dist/src/nowiki/noinclude.d.ts +25 -0
  106. package/dist/src/nowiki/noinclude.js +25 -0
  107. package/dist/src/nowiki/quote.d.ts +22 -0
  108. package/dist/src/nowiki/quote.js +50 -0
  109. package/dist/src/onlyinclude.d.ts +16 -0
  110. package/dist/src/onlyinclude.js +57 -0
  111. package/dist/src/paramTag/index.d.ts +37 -0
  112. package/dist/src/paramTag/index.js +68 -0
  113. package/dist/src/paramTag/inputbox.d.ts +8 -0
  114. package/dist/src/paramTag/inputbox.js +23 -0
  115. package/dist/src/parameter.d.ts +82 -0
  116. package/dist/src/parameter.js +202 -0
  117. package/dist/src/pre.d.ts +28 -0
  118. package/dist/src/pre.js +51 -0
  119. package/dist/src/syntax.d.ts +25 -0
  120. package/dist/src/syntax.js +30 -0
  121. package/dist/src/table/base.d.ts +52 -0
  122. package/dist/src/table/base.js +78 -0
  123. package/dist/src/table/index.d.ts +229 -0
  124. package/dist/src/table/index.js +379 -0
  125. package/dist/src/table/td.d.ts +102 -0
  126. package/dist/src/table/td.js +261 -0
  127. package/dist/src/table/tr.d.ts +32 -0
  128. package/dist/src/table/tr.js +56 -0
  129. package/dist/src/table/trBase.d.ts +54 -0
  130. package/dist/src/table/trBase.js +151 -0
  131. package/dist/src/tagPair/ext.d.ts +55 -0
  132. package/dist/src/tagPair/ext.js +142 -0
  133. package/dist/src/tagPair/include.d.ts +52 -0
  134. package/dist/src/tagPair/include.js +58 -0
  135. package/dist/src/tagPair/index.d.ts +47 -0
  136. package/dist/src/tagPair/index.js +93 -0
  137. package/dist/src/transclude.d.ts +167 -0
  138. package/dist/src/transclude.js +694 -0
  139. package/dist/util/constants.js +109 -0
  140. package/dist/util/debug.js +65 -0
  141. package/dist/util/diff.js +74 -0
  142. package/dist/util/lint.js +50 -0
  143. package/dist/util/string.js +65 -0
  144. package/errors/README +1 -0
  145. package/package.json +11 -23
  146. package/printed/README +1 -0
  147. package/bundle/bundle.min.js +0 -36
  148. package/extensions/dist/base.js +0 -70
  149. package/extensions/dist/editor.js +0 -172
  150. package/extensions/dist/highlight.js +0 -39
  151. package/extensions/dist/lint.js +0 -48
  152. package/extensions/editor.css +0 -63
  153. package/extensions/ui.css +0 -119
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promises = exports.typeAliases = exports.aliases = exports.utils = exports.parsers = exports.mixins = exports.classes = exports.MAX_STAGE = void 0;
4
+ exports.MAX_STAGE = 11;
5
+ /* NOT FOR BROWSER */
6
+ exports.classes = {};
7
+ exports.mixins = {};
8
+ exports.parsers = {};
9
+ exports.utils = {};
10
+ exports.aliases = [
11
+ ['AstText'],
12
+ ['CommentToken', 'ExtToken', 'IncludeToken', 'NoincludeToken'],
13
+ ['ArgToken', 'TranscludeToken', 'HeadingToken'],
14
+ ['HtmlToken'],
15
+ ['TableToken'],
16
+ ['HrToken', 'DoubleUnderscoreToken'],
17
+ ['LinkToken', 'FileToken', 'CategoryToken'],
18
+ ['QuoteToken'],
19
+ ['ExtLinkToken'],
20
+ ['MagicLinkToken'],
21
+ ['ListToken', 'DdToken'],
22
+ ['ConverterToken'],
23
+ ];
24
+ exports.typeAliases = {
25
+ text: ['string', 'str'],
26
+ plain: ['regular', 'normal'],
27
+ // comment and extension
28
+ onlyinclude: ['only-include'],
29
+ noinclude: ['no-include'],
30
+ include: ['includeonly', 'include-only'],
31
+ comment: undefined,
32
+ ext: ['extension'],
33
+ 'ext-attrs': ['extension-attrs', 'ext-attributes', 'extension-attributes'],
34
+ 'ext-attr-dirty': ['extension-attr-dirty', 'ext-attribute-dirty', 'extension-attribute-dirty'],
35
+ 'ext-attr': ['extension-attr', 'ext-attribute', 'extension-attribute'],
36
+ 'attr-key': ['attribute-key'],
37
+ 'attr-value': ['attribute-value', 'attr-val', 'attribute-val'],
38
+ 'ext-inner': ['extension-inner'],
39
+ // triple braces
40
+ arg: ['argument'],
41
+ 'arg-name': ['argument-name'],
42
+ 'arg-default': ['argument-default'],
43
+ hidden: ['arg-redundant'],
44
+ // double braces
45
+ 'magic-word': ['parser-function', 'parser-func'],
46
+ 'magic-word-name': ['parser-function-name', 'parser-func-name'],
47
+ 'invoke-function': ['invoke-func', 'lua-function', 'lua-func', 'module-function', 'module-func'],
48
+ 'invoke-module': ['lua-module'],
49
+ template: undefined,
50
+ 'template-name': undefined,
51
+ parameter: ['param'],
52
+ 'parameter-key': ['param-key'],
53
+ 'parameter-value': ['parameter-val', 'param-value', 'param-val'],
54
+ // heading
55
+ heading: ['header'],
56
+ 'heading-title': ['header-title'],
57
+ 'heading-trail': ['header-trail'],
58
+ // html
59
+ html: undefined,
60
+ 'html-attrs': ['html-attributes'],
61
+ 'html-attr-dirty': ['html-attribute-dirty'],
62
+ 'html-attr': ['html-attribute'],
63
+ // table
64
+ table: undefined,
65
+ tr: ['table-row'],
66
+ td: ['table-cell', 'table-data'],
67
+ 'table-syntax': undefined,
68
+ 'table-attrs': ['tr-attrs', 'td-attrs', 'table-attributes', 'tr-attributes', 'td-attributes'],
69
+ 'table-attr-dirty': ['tr-attr-dirty', 'td-attr-dirty', 'table-attribute-dirty', 'tr-attribute-dirty', 'td-attribute-dirty'],
70
+ 'table-attr': ['tr-attr', 'td-attr', 'table-attribute', 'tr-attribute', 'td-attribute'],
71
+ 'table-inter': undefined,
72
+ 'td-inner': ['table-cell-inner', 'table-data-inner'],
73
+ // hr and double-underscore
74
+ hr: ['horizontal'],
75
+ 'double-underscore': ['underscore', 'behavior-switch', 'behaviour-switch'],
76
+ // link
77
+ link: ['wikilink'],
78
+ 'link-target': ['wikilink-target'],
79
+ 'link-text': ['wikilink-text'],
80
+ category: ['category-link', 'cat', 'cat-link'],
81
+ file: ['file-link', 'image', 'image-link', 'img', 'img-link'],
82
+ 'gallery-image': ['gallery-file', 'gallery-img'],
83
+ 'imagemap-image': ['imagemap-file', 'imagemap-img', 'image-map-image', 'image-map-file', 'image-map-img'],
84
+ 'image-parameter': ['img-parameter', 'image-param', 'img-param'],
85
+ // quotes
86
+ quote: ['quotes', 'quot', 'apostrophe', 'apostrophes', 'apos'],
87
+ // external link
88
+ 'ext-link': ['external-link'],
89
+ 'ext-link-text': ['external-link-text'],
90
+ 'ext-link-url': ['external-link-url'],
91
+ // magic link
92
+ 'free-ext-link': ['free-external-link', 'magic-link'],
93
+ // list
94
+ list: ['ol', 'ordered-list', 'ul', 'unordered-list', 'dl', 'description-list'],
95
+ dd: ['indent', 'indentation'],
96
+ // converter
97
+ converter: ['convert', 'conversion'],
98
+ 'converter-flags': ['convert-flags', 'conversion-flags'],
99
+ 'converter-flag': ['convert-flag', 'conversion-flag'],
100
+ 'converter-rule': ['convert-rule', 'conversion-rule'],
101
+ 'converter-rule-noconvert': ['convert-rule-noconvert', 'conversion-rule-noconvert'],
102
+ 'converter-rule-variant': ['convert-rule-variant', 'conversion-rule-variant'],
103
+ 'converter-rule-to': ['convert-rule-to', 'conversion-rule-to'],
104
+ 'converter-rule-from': ['convert-rule-from', 'conversion-rule-from'],
105
+ // specific extensions
106
+ 'param-line': ['parameter-line'],
107
+ 'imagemap-link': ['image-map-link'],
108
+ };
109
+ exports.promises = [Promise.resolve()];
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.undo = exports.Shadow = void 0;
4
+ const constants_1 = require("./constants");
5
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
6
+ exports.Shadow = {
7
+ /* NOT FOR BROWSER */
8
+ running: false,
9
+ /* NOT FOR BROWSER END */
10
+ /** @implements */
11
+ run(callback) {
12
+ const { running } = this;
13
+ this.running = true;
14
+ try {
15
+ const result = callback();
16
+ this.running = running;
17
+ return result;
18
+ }
19
+ catch (e) {
20
+ this.running = running;
21
+ throw e;
22
+ }
23
+ },
24
+ };
25
+ /* NOT FOR BROWSER */
26
+ /**
27
+ * 撤销最近一次Mutation
28
+ * @param e 事件
29
+ * @param data 事件数据
30
+ * @throws `RangeError` 无法撤销的事件类型
31
+ */
32
+ const undo = (e, data) => {
33
+ const { target, type } = e;
34
+ switch (type) {
35
+ case 'remove': {
36
+ const childNodes = [...target.childNodes];
37
+ childNodes.splice(data.position, 0, data.removed);
38
+ data.removed.setAttribute('parentNode', target);
39
+ target.setAttribute('childNodes', childNodes);
40
+ break;
41
+ }
42
+ case 'insert': {
43
+ const childNodes = [...target.childNodes];
44
+ childNodes.splice(data.position, 1);
45
+ target.setAttribute('childNodes', childNodes);
46
+ break;
47
+ }
48
+ case 'replace': {
49
+ const { parentNode } = target, childNodes = [...parentNode.childNodes];
50
+ childNodes.splice(data.position, 1, data.oldToken);
51
+ data.oldToken.setAttribute('parentNode', parentNode);
52
+ parentNode.setAttribute('childNodes', childNodes);
53
+ break;
54
+ }
55
+ case 'text':
56
+ if (target.type === 'text') {
57
+ target.replaceData(data.oldText);
58
+ }
59
+ break;
60
+ default:
61
+ throw new RangeError(`无法撤销未知类型的事件:${String(type)}`);
62
+ }
63
+ };
64
+ exports.undo = undo;
65
+ constants_1.utils['debug'] = __filename;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.diff = exports.cmd = void 0;
4
+ const fs = require("fs/promises");
5
+ const child_process_1 = require("child_process");
6
+ const constants_1 = require("./constants");
7
+ process.on('unhandledRejection', e => {
8
+ console.error(e);
9
+ });
10
+ /**
11
+ * 将shell命令转化为Promise对象
12
+ * @param command shell指令
13
+ * @param args shell输入参数
14
+ */
15
+ const cmd = (command, args) => new Promise(resolve => {
16
+ let timer, shell;
17
+ /**
18
+ * 清除进程并返回
19
+ * @param val 返回值
20
+ */
21
+ const r = (val) => {
22
+ clearTimeout(timer);
23
+ shell?.kill('SIGINT');
24
+ resolve(val);
25
+ };
26
+ try {
27
+ shell = (0, child_process_1.spawn)(command, args);
28
+ timer = setTimeout(() => {
29
+ shell.kill('SIGINT');
30
+ }, 60 * 1000);
31
+ let buf = '';
32
+ shell.stdout.on('data', data => {
33
+ buf += String(data);
34
+ });
35
+ shell.stdout.on('end', () => {
36
+ r(buf);
37
+ });
38
+ shell.on('exit', () => {
39
+ r(shell.killed ? undefined : '');
40
+ });
41
+ shell.on('error', () => {
42
+ r(undefined);
43
+ });
44
+ }
45
+ catch {
46
+ r(undefined);
47
+ }
48
+ });
49
+ exports.cmd = cmd;
50
+ /**
51
+ * 比较两个文件
52
+ * @param oldStr 旧文本
53
+ * @param newStr 新文本
54
+ * @param uid 唯一标识
55
+ */
56
+ const diff = async (oldStr, newStr, uid = -1) => {
57
+ if (oldStr === newStr) {
58
+ return;
59
+ }
60
+ const oldFile = `diffOld${uid}`, newFile = `diffNew${uid}`;
61
+ await Promise.all([fs.writeFile(oldFile, oldStr), fs.writeFile(newFile, newStr)]);
62
+ const stdout = await (0, exports.cmd)('git', [
63
+ 'diff',
64
+ '--color-words=[\xC0-\xFF][\x80-\xBF]+|<?/?\\w+/?>?|[^[:space:]]',
65
+ '-U0',
66
+ '--no-index',
67
+ oldFile,
68
+ newFile,
69
+ ]);
70
+ await Promise.all([fs.unlink(oldFile), fs.unlink(newFile)]);
71
+ console.log(stdout?.split('\n').slice(4).join('\n'));
72
+ };
73
+ exports.diff = diff;
74
+ constants_1.utils['diff'] = __filename;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateForSelf = exports.generateForChild = void 0;
4
+ const constants_1 = require("./constants");
5
+ const Parser = require("../index");
6
+ /**
7
+ * 生成对于子节点的LintError对象
8
+ * @param child 子节点
9
+ * @param boundingRect 父节点的绝对定位
10
+ * @param msg 错误信息
11
+ * @param severity 严重程度
12
+ */
13
+ const generateForChild = (child, boundingRect, msg, severity = 'error') => {
14
+ const index = child.getRelativeIndex(), { offsetHeight, offsetWidth, parentNode } = child, { top: offsetTop, left: offsetLeft } = parentNode.posFromIndex(index), { start } = boundingRect, { top, left } = 'top' in boundingRect ? boundingRect : child.getRootNode().posFromIndex(start), str = String(child), startIndex = start + index, startLine = top + offsetTop, startCol = offsetTop ? offsetLeft : left + offsetLeft;
15
+ return {
16
+ message: Parser.msg(msg),
17
+ severity,
18
+ startIndex,
19
+ endIndex: startIndex + str.length,
20
+ startLine,
21
+ endLine: startLine + offsetHeight - 1,
22
+ startCol,
23
+ endCol: offsetHeight === 1 ? startCol + offsetWidth : offsetWidth,
24
+ excerpt: str.slice(0, 50),
25
+ };
26
+ };
27
+ exports.generateForChild = generateForChild;
28
+ /**
29
+ * 生成对于自己的LintError对象
30
+ * @param token 节点
31
+ * @param boundingRect 绝对定位
32
+ * @param msg 错误信息
33
+ * @param severity 严重程度
34
+ */
35
+ const generateForSelf = (token, boundingRect, msg, severity = 'error') => {
36
+ const { start } = boundingRect, { offsetHeight, offsetWidth } = token, str = String(token), { top, left } = 'top' in boundingRect ? boundingRect : token.getRootNode().posFromIndex(start);
37
+ return {
38
+ message: Parser.msg(msg),
39
+ severity,
40
+ startIndex: start,
41
+ endIndex: start + str.length,
42
+ startLine: top,
43
+ endLine: top + offsetHeight - 1,
44
+ startCol: left,
45
+ endCol: offsetHeight === 1 ? left + offsetWidth : offsetWidth,
46
+ excerpt: str.slice(0, 50),
47
+ };
48
+ };
49
+ exports.generateForSelf = generateForSelf;
50
+ constants_1.utils['lint'] = __filename;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeSpace = exports.print = exports.noWrap = exports.decodeHtml = exports.text = exports.escapeRegExp = exports.removeComment = exports.extUrlChar = exports.extUrlCharFirst = void 0;
4
+ const constants_1 = require("./constants");
5
+ exports.extUrlCharFirst = '(?:\\[[\\da-f:.]+\\]|[^[\\]<>"\\0-\\x1F\\x7F\\p{Zs}\\uFFFD])';
6
+ exports.extUrlChar = '(?:[^[\\]<>"\\0-\\x1F\\x7F\\p{Zs}\\uFFFD]|\\0\\d+c\\x7F)*';
7
+ /**
8
+ * remove half-parsed comment-like tokens
9
+ * @param str 原字符串
10
+ */
11
+ const removeComment = (str) => str.replace(/\0\d+c\x7F/gu, '');
12
+ exports.removeComment = removeComment;
13
+ /**
14
+ * escape special chars for RegExp constructor
15
+ * @param str RegExp source
16
+ */
17
+ const escapeRegExp = (str) => str.replace(/[\\{}()|.?*+^$[\]]/gu, '\\$&');
18
+ exports.escapeRegExp = escapeRegExp;
19
+ /**
20
+ * extract effective wikitext
21
+ * @param childNodes a Token's contents
22
+ * @param separator delimiter between nodes
23
+ */
24
+ const text = (childNodes, separator = '') => childNodes.map(child => typeof child === 'string' ? child : child.text()).join(separator);
25
+ exports.text = text;
26
+ /**
27
+ * decode HTML entities
28
+ * @param str 原字符串
29
+ */
30
+ const decodeHtml = (str) => str.replace(/&#(\d+|x[\da-f]+);/giu, (_, code) => String.fromCodePoint(Number(`${code[0].toLowerCase() === 'x' ? '0' : ''}${code}`)));
31
+ exports.decodeHtml = decodeHtml;
32
+ /**
33
+ * escape newlines
34
+ * @param str 原字符串
35
+ */
36
+ const noWrap = (str) => str.replaceAll('\n', '\\n');
37
+ exports.noWrap = noWrap;
38
+ /**
39
+ * 以HTML格式打印
40
+ * @param childNodes 子节点
41
+ * @param opt 选项
42
+ */
43
+ const print = (childNodes, opt = {}) => {
44
+ const { pre = '', post = '', sep = '' } = opt, entities = { '&': 'amp', '<': 'lt', '>': 'gt' };
45
+ return `${pre}${childNodes.map(child => child.type === 'text'
46
+ ? child.data.replace(/[&<>]/gu, p => `&${entities[p]};`)
47
+ : child.print()).join(sep)}${post}`;
48
+ };
49
+ exports.print = print;
50
+ /* NOT FOR BROWSER */
51
+ /**
52
+ * convert newline in text nodes to single whitespace
53
+ * @param token 父节点
54
+ */
55
+ const normalizeSpace = (token) => {
56
+ if (token) {
57
+ for (const child of token.childNodes) {
58
+ if (child.type === 'text') {
59
+ child.replaceData(child.data.replaceAll('\n', ' '));
60
+ }
61
+ }
62
+ }
63
+ };
64
+ exports.normalizeSpace = normalizeSpace;
65
+ constants_1.utils['string'] = __filename;
package/errors/README ADDED
@@ -0,0 +1 @@
1
+ 这里记录解析失败时处于半解析状态的维基文本以及错误信息。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wikiparser-node",
3
- "version": "1.0.3-b",
3
+ "version": "1.1.0",
4
4
  "description": "A Node.js parser for MediaWiki markup with AST",
5
5
  "keywords": [
6
6
  "mediawiki",
@@ -14,34 +14,28 @@
14
14
  "license": "GPL-3.0",
15
15
  "author": "Bhsd",
16
16
  "files": [
17
- "/bundle/bundle.min.js",
18
- "/extensions/dist/",
19
- "/extensions/*.css",
20
- "!/extensions/dist/gh-page.js",
21
- "!/extensions/gh-page.css",
17
+ "/errors/README",
18
+ "/printed/README",
22
19
  "/config/",
23
20
  "/i18n/",
24
- "!/config/.schema.json"
21
+ "/dist/"
25
22
  ],
26
- "browser": "/bundle/bundle.min.js",
27
- "main": "./bundle/bundle.js",
23
+ "main": "./dist/index.js",
28
24
  "repository": {
29
25
  "type": "git",
30
26
  "url": "git+https://github.com/bhsd-harry/wikiparser-node.git"
31
27
  },
32
28
  "scripts": {
33
- "prepublishOnly": "webpack build --mode production && npm run build:ext",
34
- "build:core": "rm bundle/*.js; webpack build --mode development; webpack build --mode production; eslint --no-eslintrc -c .eslintrc.browser.json bundle/",
35
- "build:ext": "rm -rf extensions/dist/; tsc --project extensions/tsconfig.json; ls extensions/dist/*.js | xargs gsed -i '/export {};/d'; eslint --no-eslintrc -c .eslintrc.browser.json extensions/dist/",
36
- "build:test": "rm -rf dist/; tsc; gsed -i 's|./config/minimum|../config/minimum|' dist/index.js",
37
- "build": "npm run build:core && npm run build:ext",
29
+ "toc": "node ./dist/bin/toc.js",
30
+ "prepublishOnly": "npm run build; rm dist/internal.js; rm -r dist/test; rm dist/[bmpu]*/*.d.ts; grep -rl --include='*.d.ts' '@private' dist/ | xargs gsed -i '/@private/,+1d'",
31
+ "build": "rm -rf dist/; tsc; grep -rl --include='*.d.ts' '@private' dist/ | xargs gsed -i '/@private/,+1d'",
38
32
  "diff": "git diff --ignore-all-space --color-moved",
39
33
  "lint:ts": "tsc --noEmit && eslint --cache .",
40
34
  "lint:json": "ajv -s config/.schema.json -d 'config/*.json' --strict=true --strict-required=false",
41
- "lint:css": "stylelint extensions/*.css",
42
- "lint": "npm run lint:ts && npm run lint:json && npm run lint:css",
35
+ "lint": "npm run lint:ts && npm run lint:json",
36
+ "test": "node dist/test/test.js",
43
37
  "test:real": "node dist/test/real.js",
44
- "test:single": "node dist/test/single.js"
38
+ "test:single": "node dist/test/single.js; node --prof dist/test/single.js && node --prof-process isolate-0x*-v8.log > test/processed.txt && rm isolate-0x*-v8.log"
45
39
  },
46
40
  "devDependencies": {
47
41
  "@cypress/request": "^3.0.1",
@@ -50,9 +44,7 @@
50
44
  "@typescript-eslint/eslint-plugin": "^6.12.0",
51
45
  "@typescript-eslint/parser": "^6.12.0",
52
46
  "ajv-cli": "^5.0.0",
53
- "esbuild-loader": "^4.0.2",
54
47
  "eslint": "^8.53.0",
55
- "eslint-plugin-es-x": "^7.3.0",
56
48
  "eslint-plugin-eslint-comments": "^3.2.0",
57
49
  "eslint-plugin-jsdoc": "^46.8.2",
58
50
  "eslint-plugin-json-es": "^1.5.7",
@@ -60,10 +52,6 @@
60
52
  "eslint-plugin-promise": "^6.1.1",
61
53
  "eslint-plugin-regexp": "^2.1.1",
62
54
  "eslint-plugin-unicorn": "^49.0.0",
63
- "stylelint": "^15.11.0",
64
- "stylelint-config-recommended": "^13.0.0",
65
- "webpack-cli": "^5.1.4",
66
- "webpack": "^5.89.0",
67
55
  "typescript": "^5.1.6"
68
56
  },
69
57
  "engines": {
package/printed/README ADDED
@@ -0,0 +1 @@
1
+ 这里存放以 JSON 格式打印的 AST。