wikiparser-node 1.10.0 → 1.11.0-b

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 (173) hide show
  1. package/bundle/bundle.min.js +38 -0
  2. package/config/enwiki.json +1 -814
  3. package/config/llwiki.json +1 -35
  4. package/config/moegirl.json +1 -44
  5. package/config/zhwiki.json +1 -466
  6. package/extensions/dist/base.js +64 -0
  7. package/extensions/dist/editor.js +159 -0
  8. package/extensions/dist/highlight.js +56 -0
  9. package/extensions/dist/lint.js +72 -0
  10. package/extensions/editor.css +64 -0
  11. package/extensions/ui.css +144 -0
  12. package/i18n/zh-hans.json +1 -1
  13. package/i18n/zh-hant.json +1 -1
  14. package/package.json +43 -33
  15. package/config/.schema.json +0 -186
  16. package/dist/addon/table.js +0 -486
  17. package/dist/addon/token.js +0 -324
  18. package/dist/addon/transclude.js +0 -185
  19. package/dist/base.d.ts +0 -81
  20. package/dist/base.js +0 -39
  21. package/dist/index.d.ts +0 -33
  22. package/dist/index.js +0 -231
  23. package/dist/internal.d.ts +0 -46
  24. package/dist/lib/element.d.ts +0 -125
  25. package/dist/lib/element.js +0 -374
  26. package/dist/lib/node.d.ts +0 -173
  27. package/dist/lib/node.js +0 -478
  28. package/dist/lib/range.d.ts +0 -105
  29. package/dist/lib/range.js +0 -406
  30. package/dist/lib/ranges.d.ts +0 -28
  31. package/dist/lib/ranges.js +0 -126
  32. package/dist/lib/rect.d.ts +0 -18
  33. package/dist/lib/rect.js +0 -34
  34. package/dist/lib/text.d.ts +0 -58
  35. package/dist/lib/text.js +0 -361
  36. package/dist/lib/title.d.ts +0 -42
  37. package/dist/lib/title.js +0 -205
  38. package/dist/mixin/attributesParent.d.ts +0 -49
  39. package/dist/mixin/attributesParent.js +0 -79
  40. package/dist/mixin/fixed.d.ts +0 -5
  41. package/dist/mixin/fixed.js +0 -32
  42. package/dist/mixin/flagsParent.d.ts +0 -41
  43. package/dist/mixin/flagsParent.js +0 -60
  44. package/dist/mixin/hidden.d.ts +0 -7
  45. package/dist/mixin/hidden.js +0 -37
  46. package/dist/mixin/magicLinkParent.d.ts +0 -19
  47. package/dist/mixin/magicLinkParent.js +0 -43
  48. package/dist/mixin/singleLine.d.ts +0 -5
  49. package/dist/mixin/singleLine.js +0 -25
  50. package/dist/mixin/sol.d.ts +0 -6
  51. package/dist/mixin/sol.js +0 -44
  52. package/dist/mixin/syntax.d.ts +0 -8
  53. package/dist/mixin/syntax.js +0 -46
  54. package/dist/parser/braces.js +0 -150
  55. package/dist/parser/commentAndExt.js +0 -79
  56. package/dist/parser/converter.js +0 -39
  57. package/dist/parser/externalLinks.js +0 -37
  58. package/dist/parser/hrAndDoubleUnderscore.js +0 -42
  59. package/dist/parser/html.js +0 -38
  60. package/dist/parser/links.js +0 -101
  61. package/dist/parser/list.js +0 -99
  62. package/dist/parser/magicLinks.js +0 -53
  63. package/dist/parser/quotes.js +0 -67
  64. package/dist/parser/redirect.js +0 -26
  65. package/dist/parser/selector.js +0 -394
  66. package/dist/parser/table.js +0 -123
  67. package/dist/src/arg.d.ts +0 -51
  68. package/dist/src/arg.js +0 -214
  69. package/dist/src/atom.d.ts +0 -14
  70. package/dist/src/atom.js +0 -52
  71. package/dist/src/attribute.d.ts +0 -64
  72. package/dist/src/attribute.js +0 -483
  73. package/dist/src/attributes.d.ts +0 -101
  74. package/dist/src/attributes.js +0 -382
  75. package/dist/src/converter.d.ts +0 -28
  76. package/dist/src/converter.js +0 -147
  77. package/dist/src/converterFlags.d.ts +0 -80
  78. package/dist/src/converterFlags.js +0 -242
  79. package/dist/src/converterRule.d.ts +0 -71
  80. package/dist/src/converterRule.js +0 -216
  81. package/dist/src/extLink.d.ts +0 -36
  82. package/dist/src/extLink.js +0 -198
  83. package/dist/src/gallery.d.ts +0 -47
  84. package/dist/src/gallery.js +0 -142
  85. package/dist/src/heading.d.ts +0 -40
  86. package/dist/src/heading.js +0 -191
  87. package/dist/src/hidden.d.ts +0 -9
  88. package/dist/src/hidden.js +0 -80
  89. package/dist/src/html.d.ts +0 -57
  90. package/dist/src/html.js +0 -343
  91. package/dist/src/imageParameter.d.ts +0 -58
  92. package/dist/src/imageParameter.js +0 -247
  93. package/dist/src/imagemap.d.ts +0 -47
  94. package/dist/src/imagemap.js +0 -146
  95. package/dist/src/imagemapLink.d.ts +0 -31
  96. package/dist/src/imagemapLink.js +0 -97
  97. package/dist/src/index.d.ts +0 -141
  98. package/dist/src/index.js +0 -795
  99. package/dist/src/link/base.d.ts +0 -54
  100. package/dist/src/link/base.js +0 -263
  101. package/dist/src/link/category.d.ts +0 -22
  102. package/dist/src/link/category.js +0 -34
  103. package/dist/src/link/file.d.ts +0 -96
  104. package/dist/src/link/file.js +0 -276
  105. package/dist/src/link/galleryImage.d.ts +0 -29
  106. package/dist/src/link/galleryImage.js +0 -132
  107. package/dist/src/link/index.d.ts +0 -39
  108. package/dist/src/link/index.js +0 -99
  109. package/dist/src/link/redirectTarget.d.ts +0 -27
  110. package/dist/src/link/redirectTarget.js +0 -72
  111. package/dist/src/magicLink.d.ts +0 -61
  112. package/dist/src/magicLink.js +0 -261
  113. package/dist/src/nested.d.ts +0 -40
  114. package/dist/src/nested.js +0 -106
  115. package/dist/src/nowiki/base.d.ts +0 -30
  116. package/dist/src/nowiki/base.js +0 -89
  117. package/dist/src/nowiki/comment.d.ts +0 -14
  118. package/dist/src/nowiki/comment.js +0 -124
  119. package/dist/src/nowiki/dd.d.ts +0 -8
  120. package/dist/src/nowiki/dd.js +0 -72
  121. package/dist/src/nowiki/doubleUnderscore.d.ts +0 -15
  122. package/dist/src/nowiki/doubleUnderscore.js +0 -97
  123. package/dist/src/nowiki/hr.d.ts +0 -5
  124. package/dist/src/nowiki/hr.js +0 -70
  125. package/dist/src/nowiki/index.d.ts +0 -14
  126. package/dist/src/nowiki/index.js +0 -31
  127. package/dist/src/nowiki/list.d.ts +0 -5
  128. package/dist/src/nowiki/list.js +0 -65
  129. package/dist/src/nowiki/listBase.d.ts +0 -17
  130. package/dist/src/nowiki/listBase.js +0 -75
  131. package/dist/src/nowiki/noinclude.d.ts +0 -6
  132. package/dist/src/nowiki/noinclude.js +0 -75
  133. package/dist/src/nowiki/quote.d.ts +0 -14
  134. package/dist/src/nowiki/quote.js +0 -135
  135. package/dist/src/onlyinclude.d.ts +0 -13
  136. package/dist/src/onlyinclude.js +0 -58
  137. package/dist/src/paramTag/index.d.ts +0 -30
  138. package/dist/src/paramTag/index.js +0 -78
  139. package/dist/src/paramTag/inputbox.d.ts +0 -8
  140. package/dist/src/paramTag/inputbox.js +0 -22
  141. package/dist/src/parameter.d.ts +0 -60
  142. package/dist/src/parameter.js +0 -268
  143. package/dist/src/pre.d.ts +0 -28
  144. package/dist/src/pre.js +0 -60
  145. package/dist/src/redirect.d.ts +0 -30
  146. package/dist/src/redirect.js +0 -126
  147. package/dist/src/syntax.d.ts +0 -17
  148. package/dist/src/syntax.js +0 -87
  149. package/dist/src/table/base.d.ts +0 -28
  150. package/dist/src/table/base.js +0 -81
  151. package/dist/src/table/index.d.ts +0 -230
  152. package/dist/src/table/index.js +0 -505
  153. package/dist/src/table/td.d.ts +0 -72
  154. package/dist/src/table/td.js +0 -370
  155. package/dist/src/table/tr.d.ts +0 -30
  156. package/dist/src/table/tr.js +0 -59
  157. package/dist/src/table/trBase.d.ts +0 -49
  158. package/dist/src/table/trBase.js +0 -164
  159. package/dist/src/tagPair/ext.d.ts +0 -29
  160. package/dist/src/tagPair/ext.js +0 -220
  161. package/dist/src/tagPair/include.d.ts +0 -33
  162. package/dist/src/tagPair/include.js +0 -130
  163. package/dist/src/tagPair/index.d.ts +0 -23
  164. package/dist/src/tagPair/index.js +0 -128
  165. package/dist/src/transclude.d.ts +0 -159
  166. package/dist/src/transclude.js +0 -587
  167. package/dist/util/constants.js +0 -25
  168. package/dist/util/debug.js +0 -95
  169. package/dist/util/diff.js +0 -83
  170. package/dist/util/lint.js +0 -32
  171. package/dist/util/string.js +0 -84
  172. package/errors/README +0 -3
  173. package/printed/README +0 -3
@@ -0,0 +1,159 @@
1
+ (() => {
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _Printer_instances, _Printer_id, _Printer_preview, _Printer_textbox, _Printer_root, _Printer_viewportChanged, _Printer_running, _Printer_ticks, _Printer_tick, _Printer_exec, _Printer_paint, _Printer_coarsePrint, _Printer_finePrint;
14
+ class Printer {
15
+ constructor(preview, textbox, include) {
16
+ _Printer_instances.add(this);
17
+ _Printer_id.set(this, void 0);
18
+ _Printer_preview.set(this, void 0);
19
+ _Printer_textbox.set(this, void 0);
20
+ _Printer_root.set(this, void 0);
21
+ _Printer_viewportChanged.set(this, void 0);
22
+ _Printer_running.set(this, void 0);
23
+ _Printer_ticks.set(this, void 0);
24
+ __classPrivateFieldSet(this, _Printer_id, wikiparse.id++, "f");
25
+ __classPrivateFieldSet(this, _Printer_preview, preview, "f");
26
+ __classPrivateFieldSet(this, _Printer_textbox, textbox, "f");
27
+ __classPrivateFieldSet(this, _Printer_root, [], "f");
28
+ __classPrivateFieldSet(this, _Printer_viewportChanged, false, "f");
29
+ this.include = Boolean(include);
30
+ __classPrivateFieldSet(this, _Printer_ticks, [0, undefined], "f");
31
+ }
32
+ queue(delay, method) {
33
+ const [state] = __classPrivateFieldGet(this, _Printer_ticks, "f");
34
+ if (delay === 0 || state <= 0 || method === 0 || __classPrivateFieldGet(this, _Printer_ticks, "f")[1] !== 0) {
35
+ __classPrivateFieldSet(this, _Printer_ticks, [delay, method], "f");
36
+ if (delay === 0) {
37
+ __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_exec).call(this, method);
38
+ }
39
+ else if (state <= 0) {
40
+ __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_tick).call(this);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ _Printer_id = new WeakMap(), _Printer_preview = new WeakMap(), _Printer_textbox = new WeakMap(), _Printer_root = new WeakMap(), _Printer_viewportChanged = new WeakMap(), _Printer_running = new WeakMap(), _Printer_ticks = new WeakMap(), _Printer_instances = new WeakSet(), _Printer_tick = function _Printer_tick() {
46
+ setTimeout(() => {
47
+ const [t, method] = __classPrivateFieldGet(this, _Printer_ticks, "f");
48
+ if (t > 0) {
49
+ __classPrivateFieldGet(this, _Printer_ticks, "f")[0] -= 500;
50
+ if (t <= 500) {
51
+ __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_exec).call(this, method);
52
+ }
53
+ else {
54
+ __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_tick).call(this);
55
+ }
56
+ }
57
+ }, 500);
58
+ }, _Printer_exec = function _Printer_exec(method) {
59
+ if (method === 0) {
60
+ __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_coarsePrint).call(this);
61
+ }
62
+ else {
63
+ __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_finePrint).call(this);
64
+ }
65
+ }, _Printer_paint = function _Printer_paint() {
66
+ __classPrivateFieldGet(this, _Printer_preview, "f").innerHTML = `<span class="wpb-root">${__classPrivateFieldGet(this, _Printer_root, "f").map(([, , printed]) => printed).join('')}</span> `;
67
+ __classPrivateFieldGet(this, _Printer_preview, "f").scrollTop = __classPrivateFieldGet(this, _Printer_textbox, "f").scrollTop;
68
+ __classPrivateFieldGet(this, _Printer_preview, "f").classList.remove('active');
69
+ __classPrivateFieldGet(this, _Printer_textbox, "f").style.color = 'transparent';
70
+ }, _Printer_coarsePrint = async function _Printer_coarsePrint() {
71
+ if (__classPrivateFieldGet(this, _Printer_running, "f")) {
72
+ return __classPrivateFieldGet(this, _Printer_running, "f");
73
+ }
74
+ const { include } = this, { value } = __classPrivateFieldGet(this, _Printer_textbox, "f"), parsed = await wikiparse.print(value, include, 2, __classPrivateFieldGet(this, _Printer_id, "f"));
75
+ if (this.include !== include || __classPrivateFieldGet(this, _Printer_textbox, "f").value !== value) {
76
+ __classPrivateFieldSet(this, _Printer_running, undefined, "f");
77
+ __classPrivateFieldSet(this, _Printer_running, __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_coarsePrint).call(this), "f");
78
+ return __classPrivateFieldGet(this, _Printer_running, "f");
79
+ }
80
+ __classPrivateFieldSet(this, _Printer_root, parsed, "f");
81
+ __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_paint).call(this);
82
+ __classPrivateFieldSet(this, _Printer_running, undefined, "f");
83
+ __classPrivateFieldSet(this, _Printer_running, __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_finePrint).call(this), "f");
84
+ return __classPrivateFieldGet(this, _Printer_running, "f");
85
+ }, _Printer_finePrint = async function _Printer_finePrint() {
86
+ if (__classPrivateFieldGet(this, _Printer_running, "f")) {
87
+ __classPrivateFieldSet(this, _Printer_viewportChanged, true, "f");
88
+ return __classPrivateFieldGet(this, _Printer_running, "f");
89
+ }
90
+ __classPrivateFieldSet(this, _Printer_viewportChanged, false, "f");
91
+ const { include } = this, { value } = __classPrivateFieldGet(this, _Printer_textbox, "f"), { scrollHeight, offsetHeight: parentHeight, scrollTop, children: [rootNode] } = __classPrivateFieldGet(this, _Printer_preview, "f");
92
+ let text = value, start = 0, end = __classPrivateFieldGet(this, _Printer_root, "f").length;
93
+ if (scrollHeight > parentHeight) {
94
+ const childNodes = [...rootNode.childNodes], headings = childNodes.filter(({ className }) => className === 'wpb-heading'), { length } = headings;
95
+ if (length > 0) {
96
+ let i = headings.findIndex(({ offsetTop, offsetHeight }) => offsetTop + offsetHeight > scrollTop);
97
+ i = i === -1 ? length : i;
98
+ let j = headings.slice(i).findIndex(({ offsetTop }) => offsetTop >= scrollTop + parentHeight);
99
+ j = j === -1 ? length : i + j;
100
+ start = i ? childNodes.indexOf(headings[i - 1]) : 0;
101
+ while (i <= j && __classPrivateFieldGet(this, _Printer_root, "f")[start][0] === Infinity) {
102
+ start = childNodes.indexOf(headings[i++]);
103
+ }
104
+ end = j === length ? end : childNodes.indexOf(headings[j]);
105
+ while (i <= j && __classPrivateFieldGet(this, _Printer_root, "f")[end - 1][0] === Infinity) {
106
+ end = childNodes.indexOf(headings[--j]);
107
+ }
108
+ text = __classPrivateFieldGet(this, _Printer_root, "f").slice(start, end).map(([, str]) => str).join('');
109
+ }
110
+ }
111
+ if (start === end) {
112
+ __classPrivateFieldSet(this, _Printer_running, undefined, "f");
113
+ return undefined;
114
+ }
115
+ const parsed = await wikiparse.print(text, include, undefined, __classPrivateFieldGet(this, _Printer_id, "f"));
116
+ if (this.include === include && __classPrivateFieldGet(this, _Printer_textbox, "f").value === value) {
117
+ __classPrivateFieldGet(this, _Printer_root, "f").splice(start, end - start, ...parsed);
118
+ __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_paint).call(this);
119
+ __classPrivateFieldSet(this, _Printer_running, undefined, "f");
120
+ if (__classPrivateFieldGet(this, _Printer_viewportChanged, "f")) {
121
+ __classPrivateFieldSet(this, _Printer_running, __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_finePrint).call(this), "f");
122
+ }
123
+ }
124
+ else {
125
+ __classPrivateFieldSet(this, _Printer_running, undefined, "f");
126
+ __classPrivateFieldSet(this, _Printer_running, __classPrivateFieldGet(this, _Printer_instances, "m", _Printer_coarsePrint).call(this), "f");
127
+ }
128
+ return __classPrivateFieldGet(this, _Printer_running, "f");
129
+ };
130
+ const edit = (textbox, include) => {
131
+ if (!(textbox instanceof HTMLTextAreaElement)) {
132
+ throw new TypeError('wikiparse.edit方法仅可用于textarea元素!');
133
+ }
134
+ const preview = document.createElement('div'), container = document.createElement('div'), printer = new Printer(preview, textbox, include);
135
+ preview.id = 'wikiPretty';
136
+ preview.classList.add('wikiparser', 'active');
137
+ container.className = 'wikiparse-container';
138
+ textbox.replaceWith(container);
139
+ textbox.classList.add('wikiparsed');
140
+ container.append(preview, textbox);
141
+ textbox.addEventListener('input', e => {
142
+ if (!e.isComposing) {
143
+ printer.queue(2000, 0);
144
+ }
145
+ textbox.style.color = '';
146
+ preview.classList.add('active');
147
+ });
148
+ textbox.addEventListener('scroll', () => {
149
+ if (preview.scrollHeight > preview.offsetHeight && !preview.classList.contains('active')) {
150
+ preview.scrollTop = textbox.scrollTop;
151
+ printer.queue(500, 1);
152
+ }
153
+ });
154
+ printer.queue(0, 0);
155
+ return printer;
156
+ };
157
+ wikiparse.Printer = Printer;
158
+ wikiparse.edit = edit;
159
+ })();
@@ -0,0 +1,56 @@
1
+ (() => {
2
+ "use strict";
3
+ const append = (parent, text) => {
4
+ if (text) {
5
+ parent.append(text);
6
+ }
7
+ };
8
+ const splitNewLine = (html) => {
9
+ let cur = html.cloneNode();
10
+ const result = [cur];
11
+ for (const child of html.childNodes) {
12
+ const { textContent } = child;
13
+ if (!(textContent === null || textContent === void 0 ? void 0 : textContent.includes('\n'))) {
14
+ cur.append(child.cloneNode(true));
15
+ continue;
16
+ }
17
+ const lines = child.nodeType === Node.TEXT_NODE ? textContent.split('\n') : splitNewLine(child);
18
+ append(cur, lines[0]);
19
+ for (const text of lines.slice(1)) {
20
+ cur = html.cloneNode();
21
+ result.push(cur);
22
+ append(cur, text);
23
+ }
24
+ }
25
+ return result;
26
+ };
27
+ const highlight = async (ele, include, linenums = false, start = 1) => {
28
+ if (ele.classList.contains('wikiparser')) {
29
+ return;
30
+ }
31
+ const html = (await wikiparse.print(ele.innerText, include)).map(([, , printed]) => printed).join('');
32
+ ele.classList.add('wikiparser');
33
+ if (linenums) {
34
+ const root = document.createElement('span');
35
+ root.innerHTML = html;
36
+ const lines = splitNewLine(root.firstElementChild || root).map((line, i) => {
37
+ const li = document.createElement('li');
38
+ li.id = `L${i + start}`;
39
+ li.append(line);
40
+ return li;
41
+ }), { length } = lines;
42
+ if (length > 1 && !lines[length - 1].textContent) {
43
+ lines.pop();
44
+ }
45
+ const ol = document.createElement('ol');
46
+ ol.style.counterReset = `wikiparser ${start - 1}`;
47
+ ol.style.paddingLeft = `${String(lines.length + start - 1).length + 1.5}ch`;
48
+ ol.replaceChildren(...lines);
49
+ ele.replaceChildren(ol);
50
+ }
51
+ else {
52
+ ele.innerHTML = html;
53
+ }
54
+ };
55
+ wikiparse.highlight = highlight;
56
+ })();
@@ -0,0 +1,72 @@
1
+ (() => {
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _Linter_instances, _Linter_id, _Linter_wikitext, _Linter_running, _Linter_lint;
14
+ class Linter {
15
+ constructor(include) {
16
+ _Linter_instances.add(this);
17
+ _Linter_id.set(this, void 0);
18
+ _Linter_wikitext.set(this, void 0);
19
+ _Linter_running.set(this, void 0);
20
+ __classPrivateFieldSet(this, _Linter_id, wikiparse.id++, "f");
21
+ this.include = Boolean(include);
22
+ }
23
+ queue(wikitext) {
24
+ var _a;
25
+ __classPrivateFieldSet(this, _Linter_wikitext, wikitext, "f");
26
+ __classPrivateFieldSet(this, _Linter_running, (_a = __classPrivateFieldGet(this, _Linter_running, "f")) !== null && _a !== void 0 ? _a : __classPrivateFieldGet(this, _Linter_instances, "m", _Linter_lint).call(this, wikitext), "f");
27
+ return __classPrivateFieldGet(this, _Linter_running, "f");
28
+ }
29
+ async codemirror(wikitext) {
30
+ return (await this.queue(wikitext))
31
+ .map(({ startIndex, endIndex, severity, message, rule, fix, suggestions = [] }) => ({
32
+ source: 'WikiLint',
33
+ from: startIndex,
34
+ to: endIndex,
35
+ severity,
36
+ rule,
37
+ message: `${message} (${rule})`,
38
+ actions: [
39
+ ...fix ? [{ name: 'fix', fix }] : [],
40
+ ...suggestions.map(suggestion => ({ name: 'suggestion', fix: suggestion })),
41
+ ].map(({ name, fix: { range: [from, to], text } }) => ({
42
+ name,
43
+ apply(view) {
44
+ view.dispatch({ changes: { from, to, insert: text } });
45
+ },
46
+ })),
47
+ }));
48
+ }
49
+ async monaco(wikitext) {
50
+ return (await this.queue(wikitext)).map(({ startLine, startCol, endLine, endCol, severity, message, rule }) => ({
51
+ source: `WikiLint(${rule})`,
52
+ startLineNumber: startLine + 1,
53
+ startColumn: startCol + 1,
54
+ endLineNumber: endLine + 1,
55
+ endColumn: endCol + 1,
56
+ severity: severity === 'error' ? 8 : 4,
57
+ rule,
58
+ message,
59
+ }));
60
+ }
61
+ }
62
+ _Linter_id = new WeakMap(), _Linter_wikitext = new WeakMap(), _Linter_running = new WeakMap(), _Linter_instances = new WeakSet(), _Linter_lint = async function _Linter_lint(wikitext) {
63
+ const { include } = this, errors = await wikiparse.lint(wikitext, include, __classPrivateFieldGet(this, _Linter_id, "f"));
64
+ if (this.include === include && __classPrivateFieldGet(this, _Linter_wikitext, "f") === wikitext) {
65
+ __classPrivateFieldSet(this, _Linter_running, undefined, "f");
66
+ return errors;
67
+ }
68
+ __classPrivateFieldSet(this, _Linter_running, __classPrivateFieldGet(this, _Linter_instances, "m", _Linter_lint).call(this, __classPrivateFieldGet(this, _Linter_wikitext, "f")), "f");
69
+ return __classPrivateFieldGet(this, _Linter_running, "f");
70
+ };
71
+ wikiparse.Linter = Linter;
72
+ })();
@@ -0,0 +1,64 @@
1
+ .wikiparse-container {
2
+ position: relative;
3
+ -webkit-text-size-adjust: none;
4
+ }
5
+ .wikiparsed {
6
+ position: relative;
7
+ display: block;
8
+ box-sizing: border-box;
9
+ width: 100%;
10
+ resize: vertical;
11
+ font-family: monospace;
12
+ background: none !important;
13
+ caret-color: #000;
14
+ }
15
+ #wikiPretty {
16
+ position: absolute;
17
+ inset: 0;
18
+ background-color: #fff;
19
+ -webkit-user-select: none;
20
+ user-select: none;
21
+ }
22
+ #wikiPretty + .wikiparsed, #wikiPretty {
23
+ outline: none;
24
+ border: 1.5px solid #dedede !important;
25
+ border-radius: 0;
26
+ padding: .4em;
27
+ line-height: 1.4 !important;
28
+ font-size: inherit;
29
+ tab-size: 4;
30
+ overflow-y: auto;
31
+ word-break: normal;
32
+ }
33
+
34
+ /* compromise for font-weight: bold */
35
+ .wpb-ext, .wpb-html,
36
+ .wpb-arg,
37
+ .wpb-template,
38
+ .wpb-magic-word,
39
+ .wpb-heading-title,
40
+ .wpb-table, .wpb-tr, .wpb-td,
41
+ .wpb-double-underscore, .wpb-hr, .wpb-quote, .wpb-list, .wpb-dd, .wpb-redirect-syntax,
42
+ .wpb-converter {
43
+ -webkit-text-stroke-width: .1ex;
44
+ }
45
+ .wpb-table-inter,
46
+ .wpb-hidden, .wpb-noinclude, .wpb-include, .wpb-comment, .wpb-attr-dirty,
47
+ .wpb-ext-attrs, .wpb-html-attrs,
48
+ .wpb-ext-inner,
49
+ .wpb-arg-default,
50
+ .wpb-invoke-module, .wpb-invoke-function,
51
+ .wpb-parameter,
52
+ .wpb-table-attrs,
53
+ .wpb-td-inner,
54
+ .wpb-converter-rule {
55
+ -webkit-text-stroke-width: 0;
56
+ }
57
+ #wikiPretty span {
58
+ font-weight: normal;
59
+ }
60
+
61
+ #wikiPretty.active span {
62
+ color: transparent;
63
+ background: none;
64
+ }
@@ -0,0 +1,144 @@
1
+ .wikiparser {
2
+ white-space: pre-wrap;
3
+ overflow-wrap: break-word;
4
+ word-break: break-all;
5
+ font-family: monospace;
6
+ border: 1.5px solid #dedede;
7
+ }
8
+ .wikiparser > ol {
9
+ background-color: #f5f5f5;
10
+ list-style: none;
11
+ }
12
+ .wikiparser > ol > li {
13
+ background-color: #fff;
14
+ padding: 0 6px;
15
+ border-left: 1px solid #ddd;
16
+ counter-increment: wikiparser;
17
+ }
18
+ .wikiparser > ol > li:first-child {
19
+ padding-top: 4px;
20
+ }
21
+ .wikiparser > ol > li:last-child {
22
+ padding-bottom: 4px;
23
+ }
24
+ .wikiparser > ol > li::before {
25
+ content: counter(wikiparser);
26
+ position: absolute;
27
+ transform: translateX(calc(-100% - 10px));
28
+ color: #6c6c6c;
29
+ }
30
+ .wikiparser > ol > li::after {
31
+ content: "";
32
+ display: inline-block;
33
+ }
34
+
35
+ .wpb-table-inter {
36
+ color: #d73333;
37
+ font-weight: normal;
38
+ text-decoration: underline wavy 1px;
39
+ }
40
+
41
+ .wpb-hidden, .wpb-noinclude, .wpb-include, .wpb-comment, .wpb-attr-dirty {
42
+ color: #7b8c8f;
43
+ font-weight: normal;
44
+ font-style: italic;
45
+ }
46
+
47
+ .wpb-ext, .wpb-html {
48
+ color: #14866d;
49
+ font-weight: bold;
50
+ }
51
+ .wpb-ext-attrs, .wpb-html-attrs {
52
+ font-weight: normal;
53
+ }
54
+ .wpb-ext-attr > .wpb-attr-value, .wpb-html-attr > .wpb-attr-value {
55
+ color: #179b1c;
56
+ }
57
+ .wpb-ext-inner {
58
+ color: initial;
59
+ font-weight: normal;
60
+ background-color: rgba(0, 0, 0, .03);
61
+ }
62
+
63
+ .wpb-arg {
64
+ color: #ac6600;
65
+ font-weight: bold;
66
+ }
67
+ .wpb-arg-default {
68
+ color: #ad9300;
69
+ font-weight: normal;
70
+ }
71
+
72
+ .wpb-template {
73
+ color: #80c;
74
+ font-weight: bold;
75
+ background-color: rgba(119, 0, 170, .03);
76
+ }
77
+ .wpb-magic-word {
78
+ color: #a11;
79
+ font-weight: bold;
80
+ background-color: rgba(170, 17, 17, .03);
81
+ }
82
+ .wpb-invoke-module, .wpb-invoke-function {
83
+ color: #bf3e13;
84
+ font-weight: normal;
85
+ }
86
+ .wpb-parameter {
87
+ font-weight: normal;
88
+ }
89
+ .wpb-template > .wpb-parameter,
90
+ .wpb-invoke-function ~ .wpb-parameter {
91
+ color: #b0c;
92
+ }
93
+ .wpb-parameter-value {
94
+ color: initial;
95
+ }
96
+
97
+ .wpb-heading, .wpb-image-parameter {
98
+ color: #0076dd;
99
+ }
100
+ .wpb-heading-title {
101
+ color: initial;
102
+ font-weight: bold;
103
+ }
104
+
105
+ .wpb-table, .wpb-tr, .wpb-td {
106
+ color: #d08;
107
+ font-weight: bold;
108
+ }
109
+ .wpb-table-attrs {
110
+ font-weight: normal;
111
+ }
112
+ .wpb-table-attr > .wpb-attr-value {
113
+ color: #f500d4;
114
+ }
115
+ .wpb-td-inner {
116
+ color: initial;
117
+ font-weight: normal;
118
+ }
119
+
120
+ .wpb-double-underscore, .wpb-hr, .wpb-quote, .wpb-list, .wpb-dd, .wpb-redirect-syntax {
121
+ color: #0076dd;
122
+ font-weight: bold;
123
+ background-color: #eee;
124
+ }
125
+
126
+ .wpb-link, .wpb-category, .wpb-file, .wpb-gallery-image, .wpb-imagemap-image, .wpb-redirect-target,
127
+ .wpb-ext-link, .wpb-free-ext-link, .wpb-magic-link {
128
+ color: #000aaa;
129
+ background-color: rgba(34, 17, 153, .03);
130
+ }
131
+ .wpb-link-text, .wpb-image-caption, .wpb-ext-link-text {
132
+ color: initial;
133
+ }
134
+
135
+ .wpb-converter {
136
+ color: #b68;
137
+ font-weight: bold;
138
+ }
139
+ .wpb-converter-rule {
140
+ font-weight: normal;
141
+ }
142
+ .wpb-converter-rule-from, .wpb-converter-rule-to, .wpb-converter-noconvert {
143
+ color: initial;
144
+ }
package/i18n/zh-hans.json CHANGED
@@ -27,7 +27,7 @@
27
27
  "invalid content in <$1>": "<$1>内的无效内容",
28
28
  "invalid conversion flag": "无效的转换标记",
29
29
  "invalid gallery image": "无效的图库图片",
30
- "invalid gallery image parameter": "无效的图库图片参数",
30
+ "invalid image parameter": "无效的图片参数",
31
31
  "invalid ISBN": "无效的ISBN",
32
32
  "invalid link in <imagemap>": "无效的<imagemap>链接",
33
33
  "invalid parameter of <$1>": "<$1>的无效参数",
package/i18n/zh-hant.json CHANGED
@@ -27,7 +27,7 @@
27
27
  "invalid content in <$1>": "<$1>內的無效內容",
28
28
  "invalid conversion flag": "無效的轉換標記",
29
29
  "invalid gallery image": "無效的圖庫圖片",
30
- "invalid gallery image parameter": "無效的圖庫圖片參數",
30
+ "invalid image parameter": "無效的圖片參數",
31
31
  "invalid ISBN": "無效的ISBN",
32
32
  "invalid link in <imagemap>": "無效的<imagemap>連結",
33
33
  "invalid parameter of <$1>": "<$1>的無效參數",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wikiparser-node",
3
- "version": "1.10.0",
3
+ "version": "1.11.0-b",
4
4
  "description": "A Node.js parser for MediaWiki markup with AST",
5
5
  "keywords": [
6
6
  "mediawiki",
@@ -14,57 +14,67 @@
14
14
  "license": "GPL-3.0",
15
15
  "author": "Bhsd",
16
16
  "files": [
17
- "/errors/README",
18
- "/printed/README",
17
+ "/bundle/bundle.min.js",
18
+ "/extensions/dist/",
19
+ "/extensions/*.css",
20
+ "!/extensions/dist/gh-page.js",
21
+ "!/extensions/gh-page.css",
22
+ "!/extensions/dist/parserTests.js",
23
+ "!/extensions/test-page.css",
19
24
  "/config/",
20
25
  "/i18n/",
21
- "/dist/",
22
- "!/dist/[bt]*/"
26
+ "!/config/.schema.json"
23
27
  ],
24
- "main": "./dist/index.js",
25
- "types": "./dist/index.d.ts",
28
+ "browser": "/bundle/bundle.min.js",
29
+ "main": "./bundle/bundle.min.js",
30
+ "types": "./extensions/typings.d.ts",
26
31
  "repository": {
27
32
  "type": "git",
28
33
  "url": "git+https://github.com/bhsd-harry/wikiparser-node.git"
29
34
  },
30
35
  "scripts": {
31
- "toc": "node ./dist/bin/toc.js",
32
- "declaration": "grep -rl --include='*.d.ts' '@private' dist/ | xargs bash sed.sh -i -E '/^\\s+\\/\\*\\* @private/,+1d'; grep -rl --include='*.d.ts' '/util/' dist/ | xargs bash sed.sh -i -E '/^import .+\\/util\\//d'; bash sed.sh -i -E 's/abstract (lint|print|text)\\b/\\1/' dist/lib/node.d.ts; node ./dist/bin/declaration.js",
33
- "prepublishOnly": "npm run build:core",
34
- "build:core": "bash build.sh",
35
- "build": "npm run build:core && node ./dist/bin/parserTests.js",
36
+ "prepublishOnly": "npm run build",
37
+ "build:core": "esbuild index.ts --bundle --minify --target=es2018 --sourcemap --outfile=bundle/bundle.min.js && eslint --no-eslintrc -c .eslintrc.browser.json bundle/bundle.min.js",
38
+ "build:ext": "bash build-ext.sh",
39
+ "build:test": "npm run build:core && tsc --project tsconfig.dist.json",
40
+ "build": "npm run build:core && npm run build:ext",
36
41
  "diff": "bash diff.sh",
37
42
  "diff:stat": "f() { git diff --stat --ignore-all-space --color=always $1 $2 -- . ':!extensions/' ':!bin/' | grep '\\.ts'; }; f",
38
- "lint:ts": "tsc --noEmit && eslint --cache .",
43
+ "lint:ts": "tsc --noEmit && tsc --noEmit --project extensions/tsconfig.json && eslint --cache .",
39
44
  "lint:json": "v8r -s config/.schema.json config/*.json",
40
- "lint": "npm run lint:ts && npm run lint:json",
41
- "prof": "node --prof dist/test/prof.js && node --prof-process isolate-0x*-v8.log > test/prof.txt && bash sed.sh -i '0,/Bottom up/d' test/prof.txt && rm isolate-0x*-v8.log",
42
- "test": "node dist/test/test.js",
43
- "test:parser": "node dist/test/parserTests.js",
45
+ "lint:css": "stylelint extensions/*.css",
46
+ "lint": "npm run lint:ts && npm run lint:json && npm run lint:css",
47
+ "server": "npm run test:end; http-server .. -c-1 --cors &",
48
+ "test": " node --enable-source-maps dist/test/test.js",
49
+ "test:parser": "node --enable-source-maps dist/test/parserTests.js",
50
+ "test:server": "npm run build && bash sed.sh -i 's|importScripts.*|importScripts(\"http://127.0.0.1:8080/wikiparser-node/bundle/bundle.min.js\");|' extensions/dist/base.js; npm run server",
44
51
  "test:end": "pkill -x http-server",
45
- "test:real": "node dist/test/real.js"
46
- },
47
- "dependencies": {
48
- "chalk": "^4.1.2"
52
+ "test:real": "node --enable-source-maps dist/test/real.js"
49
53
  },
50
54
  "devDependencies": {
55
+ "@bhsd/codemirror-mediawiki": "^2.14.0",
51
56
  "@codemirror/lint": "^6.8.0",
52
- "@stylistic/eslint-plugin": "^2.1.0",
57
+ "@stylistic/eslint-plugin": "^2.3.0",
58
+ "@stylistic/stylelint-plugin": "^2.0.0",
53
59
  "@types/node": "^20.11.6",
54
- "@typescript-eslint/eslint-plugin": "^7.10.0",
55
- "@typescript-eslint/parser": "^7.10.0",
60
+ "@typescript-eslint/eslint-plugin": "^7.15.0",
61
+ "@typescript-eslint/parser": "^7.15.0",
62
+ "chalk": "^4.1.2",
63
+ "esbuild": "^0.21.4",
56
64
  "eslint": "^8.56.0",
57
- "eslint-plugin-es-x": "^7.5.0",
65
+ "eslint-plugin-es-x": "^8.0.0",
58
66
  "eslint-plugin-eslint-comments": "^3.2.0",
59
- "eslint-plugin-jsdoc": "^48.0.2",
67
+ "eslint-plugin-jsdoc": "^48.5.2",
60
68
  "eslint-plugin-json-es": "^1.6.0",
61
- "eslint-plugin-markdown": "^4.0.1",
62
- "eslint-plugin-n": "^17.6.0",
63
- "eslint-plugin-promise": "^6.1.1",
64
- "eslint-plugin-regexp": "^2.2.0",
65
- "eslint-plugin-unicorn": "^53.0.0",
66
- "monaco-editor": "^0.49.0",
67
- "typescript": "^5.4.5",
69
+ "eslint-plugin-n": "^17.9.0",
70
+ "eslint-plugin-promise": "^6.2.0",
71
+ "eslint-plugin-regexp": "^2.6.0",
72
+ "eslint-plugin-unicorn": "^54.0.0",
73
+ "http-server": "^14.1.0",
74
+ "monaco-editor": "^0.50.0",
75
+ "stylelint": "^16.6.1",
76
+ "stylelint-config-recommended": "^14.0.0",
77
+ "typescript": "^5.5.3",
68
78
  "v8r": "^3.0.0"
69
79
  },
70
80
  "engines": {