wikiparser-node 1.12.3 → 1.12.4-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 (177) hide show
  1. package/bundle/bundle.min.js +37 -0
  2. package/config/default.json +33 -31
  3. package/config/enwiki.json +19 -830
  4. package/config/llwiki.json +21 -56
  5. package/config/minimum.json +4 -1
  6. package/config/moegirl.json +21 -65
  7. package/config/zhwiki.json +32 -495
  8. package/extensions/dist/base.js +163 -0
  9. package/extensions/dist/codejar.js +52 -0
  10. package/extensions/dist/editor.js +159 -0
  11. package/extensions/dist/highlight.js +30 -0
  12. package/extensions/dist/lint.js +72 -0
  13. package/extensions/editor.css +59 -0
  14. package/extensions/ui.css +162 -0
  15. package/i18n/zh-hans.json +1 -0
  16. package/i18n/zh-hant.json +1 -0
  17. package/package.json +28 -21
  18. package/config/.schema.json +0 -203
  19. package/dist/addon/table.js +0 -494
  20. package/dist/addon/token.js +0 -391
  21. package/dist/addon/transclude.js +0 -184
  22. package/dist/base.d.ts +0 -81
  23. package/dist/base.js +0 -40
  24. package/dist/index.d.ts +0 -33
  25. package/dist/index.js +0 -275
  26. package/dist/internal.d.ts +0 -47
  27. package/dist/lib/element.d.ts +0 -125
  28. package/dist/lib/element.js +0 -376
  29. package/dist/lib/node.d.ts +0 -173
  30. package/dist/lib/node.js +0 -478
  31. package/dist/lib/range.d.ts +0 -105
  32. package/dist/lib/range.js +0 -406
  33. package/dist/lib/ranges.d.ts +0 -28
  34. package/dist/lib/ranges.js +0 -126
  35. package/dist/lib/rect.d.ts +0 -18
  36. package/dist/lib/rect.js +0 -36
  37. package/dist/lib/text.d.ts +0 -58
  38. package/dist/lib/text.js +0 -414
  39. package/dist/lib/title.d.ts +0 -49
  40. package/dist/lib/title.js +0 -253
  41. package/dist/mixin/attributesParent.d.ts +0 -49
  42. package/dist/mixin/attributesParent.js +0 -80
  43. package/dist/mixin/fixed.d.ts +0 -5
  44. package/dist/mixin/fixed.js +0 -32
  45. package/dist/mixin/flagsParent.d.ts +0 -43
  46. package/dist/mixin/flagsParent.js +0 -64
  47. package/dist/mixin/hidden.d.ts +0 -7
  48. package/dist/mixin/hidden.js +0 -39
  49. package/dist/mixin/magicLinkParent.d.ts +0 -19
  50. package/dist/mixin/magicLinkParent.js +0 -43
  51. package/dist/mixin/singleLine.d.ts +0 -5
  52. package/dist/mixin/singleLine.js +0 -25
  53. package/dist/mixin/sol.d.ts +0 -6
  54. package/dist/mixin/sol.js +0 -45
  55. package/dist/mixin/syntax.d.ts +0 -8
  56. package/dist/mixin/syntax.js +0 -46
  57. package/dist/parser/braces.js +0 -152
  58. package/dist/parser/commentAndExt.js +0 -84
  59. package/dist/parser/converter.js +0 -41
  60. package/dist/parser/externalLinks.js +0 -39
  61. package/dist/parser/hrAndDoubleUnderscore.js +0 -44
  62. package/dist/parser/html.js +0 -40
  63. package/dist/parser/links.js +0 -103
  64. package/dist/parser/list.js +0 -116
  65. package/dist/parser/magicLinks.js +0 -54
  66. package/dist/parser/quotes.js +0 -69
  67. package/dist/parser/redirect.js +0 -28
  68. package/dist/parser/selector.js +0 -393
  69. package/dist/parser/table.js +0 -125
  70. package/dist/src/arg.d.ts +0 -51
  71. package/dist/src/arg.js +0 -225
  72. package/dist/src/atom.d.ts +0 -14
  73. package/dist/src/atom.js +0 -54
  74. package/dist/src/attribute.d.ts +0 -64
  75. package/dist/src/attribute.js +0 -478
  76. package/dist/src/attributes.d.ts +0 -103
  77. package/dist/src/attributes.js +0 -380
  78. package/dist/src/converter.d.ts +0 -28
  79. package/dist/src/converter.js +0 -150
  80. package/dist/src/converterFlags.d.ts +0 -80
  81. package/dist/src/converterFlags.js +0 -241
  82. package/dist/src/converterRule.d.ts +0 -71
  83. package/dist/src/converterRule.js +0 -218
  84. package/dist/src/extLink.d.ts +0 -36
  85. package/dist/src/extLink.js +0 -223
  86. package/dist/src/gallery.d.ts +0 -47
  87. package/dist/src/gallery.js +0 -145
  88. package/dist/src/heading.d.ts +0 -42
  89. package/dist/src/heading.js +0 -209
  90. package/dist/src/hidden.d.ts +0 -9
  91. package/dist/src/hidden.js +0 -82
  92. package/dist/src/html.d.ts +0 -61
  93. package/dist/src/html.js +0 -344
  94. package/dist/src/imageParameter.d.ts +0 -60
  95. package/dist/src/imageParameter.js +0 -262
  96. package/dist/src/imagemap.d.ts +0 -47
  97. package/dist/src/imagemap.js +0 -148
  98. package/dist/src/imagemapLink.d.ts +0 -35
  99. package/dist/src/imagemapLink.js +0 -99
  100. package/dist/src/index.d.ts +0 -136
  101. package/dist/src/index.js +0 -779
  102. package/dist/src/link/base.d.ts +0 -52
  103. package/dist/src/link/base.js +0 -258
  104. package/dist/src/link/category.d.ts +0 -22
  105. package/dist/src/link/category.js +0 -36
  106. package/dist/src/link/file.d.ts +0 -102
  107. package/dist/src/link/file.js +0 -335
  108. package/dist/src/link/galleryImage.d.ts +0 -29
  109. package/dist/src/link/galleryImage.js +0 -133
  110. package/dist/src/link/index.d.ts +0 -39
  111. package/dist/src/link/index.js +0 -100
  112. package/dist/src/link/redirectTarget.d.ts +0 -27
  113. package/dist/src/link/redirectTarget.js +0 -71
  114. package/dist/src/magicLink.d.ts +0 -57
  115. package/dist/src/magicLink.js +0 -261
  116. package/dist/src/nested.d.ts +0 -40
  117. package/dist/src/nested.js +0 -108
  118. package/dist/src/nowiki/base.d.ts +0 -28
  119. package/dist/src/nowiki/base.js +0 -90
  120. package/dist/src/nowiki/comment.d.ts +0 -14
  121. package/dist/src/nowiki/comment.js +0 -123
  122. package/dist/src/nowiki/dd.d.ts +0 -8
  123. package/dist/src/nowiki/dd.js +0 -74
  124. package/dist/src/nowiki/doubleUnderscore.d.ts +0 -15
  125. package/dist/src/nowiki/doubleUnderscore.js +0 -101
  126. package/dist/src/nowiki/hr.d.ts +0 -5
  127. package/dist/src/nowiki/hr.js +0 -72
  128. package/dist/src/nowiki/index.d.ts +0 -14
  129. package/dist/src/nowiki/index.js +0 -30
  130. package/dist/src/nowiki/list.d.ts +0 -5
  131. package/dist/src/nowiki/list.js +0 -67
  132. package/dist/src/nowiki/listBase.d.ts +0 -23
  133. package/dist/src/nowiki/listBase.js +0 -100
  134. package/dist/src/nowiki/noinclude.d.ts +0 -6
  135. package/dist/src/nowiki/noinclude.js +0 -77
  136. package/dist/src/nowiki/quote.d.ts +0 -14
  137. package/dist/src/nowiki/quote.js +0 -149
  138. package/dist/src/onlyinclude.d.ts +0 -13
  139. package/dist/src/onlyinclude.js +0 -60
  140. package/dist/src/paramTag/index.d.ts +0 -28
  141. package/dist/src/paramTag/index.js +0 -80
  142. package/dist/src/paramTag/inputbox.d.ts +0 -8
  143. package/dist/src/paramTag/inputbox.js +0 -24
  144. package/dist/src/parameter.d.ts +0 -60
  145. package/dist/src/parameter.js +0 -267
  146. package/dist/src/pre.d.ts +0 -28
  147. package/dist/src/pre.js +0 -62
  148. package/dist/src/redirect.d.ts +0 -30
  149. package/dist/src/redirect.js +0 -128
  150. package/dist/src/syntax.d.ts +0 -15
  151. package/dist/src/syntax.js +0 -87
  152. package/dist/src/table/base.d.ts +0 -28
  153. package/dist/src/table/base.js +0 -81
  154. package/dist/src/table/index.d.ts +0 -230
  155. package/dist/src/table/index.js +0 -506
  156. package/dist/src/table/td.d.ts +0 -72
  157. package/dist/src/table/td.js +0 -375
  158. package/dist/src/table/tr.d.ts +0 -30
  159. package/dist/src/table/tr.js +0 -61
  160. package/dist/src/table/trBase.d.ts +0 -49
  161. package/dist/src/table/trBase.js +0 -165
  162. package/dist/src/tagPair/ext.d.ts +0 -29
  163. package/dist/src/tagPair/ext.js +0 -217
  164. package/dist/src/tagPair/include.d.ts +0 -33
  165. package/dist/src/tagPair/include.js +0 -132
  166. package/dist/src/tagPair/index.d.ts +0 -23
  167. package/dist/src/tagPair/index.js +0 -130
  168. package/dist/src/transclude.d.ts +0 -159
  169. package/dist/src/transclude.js +0 -598
  170. package/dist/util/constants.js +0 -26
  171. package/dist/util/debug.js +0 -95
  172. package/dist/util/diff.js +0 -83
  173. package/dist/util/html.js +0 -145
  174. package/dist/util/lint.js +0 -32
  175. package/dist/util/string.js +0 -107
  176. package/errors/README +0 -3
  177. package/printed/README +0 -3
@@ -0,0 +1,52 @@
1
+ (() => {
2
+ const codejar = (async () => {
3
+ const { CodeJar } = 'CodeJar' in window
4
+ ? window
5
+ : await import('https://testingcf.jsdelivr.net/npm/codejar-async');
6
+ return (textbox, include, linenums) => {
7
+ var _a;
8
+ if (!(textbox instanceof HTMLTextAreaElement)) {
9
+ throw new TypeError('wikiparse.codejar方法仅可用于textarea元素!');
10
+ }
11
+ const preview = document.createElement('div'), root = document.createElement('span'), { offsetHeight, selectionStart: start, selectionEnd: end, style: { height, paddingTop, paddingBottom, paddingLeft, paddingRight }, } = textbox;
12
+ preview.className = 'wikiparser wikiparse-container';
13
+ preview.tabIndex = 0;
14
+ preview.style.height = offsetHeight ? `${offsetHeight}px` : height;
15
+ preview.style.paddingTop = paddingTop;
16
+ preview.style.paddingBottom = paddingBottom;
17
+ root.className = 'wpb-root';
18
+ root.style.paddingLeft = paddingLeft;
19
+ root.style.paddingRight = paddingRight;
20
+ preview.append(root);
21
+ textbox.after(preview);
22
+ textbox.style.display = 'none';
23
+ preview.addEventListener('focus', () => {
24
+ root.focus();
25
+ });
26
+ const id = wikiparse.id++;
27
+ const highlight = async (e) => (await wikiparse.print(e.textContent, jar.include, undefined, id)).map(([, , printed]) => printed).join('');
28
+ const jar = {
29
+ ...CodeJar(root, highlight, { spellcheck: true }),
30
+ include: Boolean(include),
31
+ };
32
+ if (linenums) {
33
+ jar.onHighlight(e => {
34
+ var _a;
35
+ (_a = e.parentNode.querySelector('.wikiparser-line-numbers')) === null || _a === void 0 ? void 0 : _a.remove();
36
+ wikiparse.lineNumbers(e, 1, paddingTop);
37
+ });
38
+ }
39
+ jar.restore({ start: 0, end: 0 });
40
+ jar.updateCode(textbox.value);
41
+ jar.restore({ start, end });
42
+ (_a = textbox.form) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', () => {
43
+ textbox.value = jar.toString();
44
+ });
45
+ return jar;
46
+ };
47
+ })();
48
+ wikiparse.codejar = codejar;
49
+ (async () => {
50
+ wikiparse.codejar = await codejar;
51
+ })();
52
+ })();
@@ -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,30 @@
1
+ (() => {
2
+ "use strict";
3
+ const highlight = async (ele, include, linenums, start) => {
4
+ if (ele.classList.contains('wikiparser')) {
5
+ return;
6
+ }
7
+ let { innerText } = ele;
8
+ if (innerText.endsWith('\n')) {
9
+ innerText = innerText.slice(0, -1);
10
+ }
11
+ innerText || (innerText = ' ');
12
+ const html = `<span class="wpb-root">${(await wikiparse.print(innerText, include)).map(([, , printed]) => printed).join('')}</span>`;
13
+ ele.classList.add('wikiparser');
14
+ ele.tabIndex = 0;
15
+ ele.innerHTML = html;
16
+ if (linenums) {
17
+ wikiparse.lineNumbers(ele.firstChild, start);
18
+ }
19
+ ele.addEventListener('keydown', e => {
20
+ if ((e.metaKey || e.ctrlKey) && e.key === 'a') {
21
+ e.preventDefault();
22
+ const range = document.createRange(), selection = window.getSelection();
23
+ range.selectNodeContents(ele.firstChild);
24
+ selection.removeAllRanges();
25
+ selection.addRange(range);
26
+ }
27
+ });
28
+ };
29
+ wikiparse.highlight = highlight;
30
+ })();
@@ -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,59 @@
1
+ .wikiparsed {
2
+ position: relative;
3
+ display: block;
4
+ box-sizing: border-box;
5
+ width: 100%;
6
+ resize: vertical;
7
+ font-family: monospace;
8
+ background: none !important;
9
+ caret-color: #000;
10
+ }
11
+ #wikiPretty {
12
+ position: absolute;
13
+ inset: 0;
14
+ -webkit-user-select: none;
15
+ user-select: none;
16
+ }
17
+ #wikiPretty + .wikiparsed, #wikiPretty {
18
+ outline: none;
19
+ border: 1.5px solid #dedede !important;
20
+ border-radius: 0;
21
+ padding: .4em;
22
+ line-height: 1.4 !important;
23
+ font-size: inherit;
24
+ tab-size: 4;
25
+ overflow-y: auto;
26
+ word-break: normal;
27
+ }
28
+
29
+ /* compromise for font-weight: bold */
30
+ .wpb-ext, .wpb-html,
31
+ .wpb-arg,
32
+ .wpb-template,
33
+ .wpb-magic-word,
34
+ .wpb-heading-title,
35
+ .wpb-table, .wpb-tr, .wpb-td,
36
+ .wpb-double-underscore, .wpb-hr, .wpb-quote, .wpb-list, .wpb-dd, .wpb-redirect-syntax,
37
+ .wpb-converter {
38
+ -webkit-text-stroke-width: .1ex;
39
+ }
40
+ .wpb-table-inter,
41
+ .wpb-hidden, .wpb-noinclude, .wpb-include, .wpb-comment, .wpb-attr-dirty,
42
+ .wpb-ext-attrs, .wpb-html-attrs,
43
+ .wpb-ext-inner,
44
+ .wpb-arg-default,
45
+ .wpb-invoke-module, .wpb-invoke-function,
46
+ .wpb-parameter,
47
+ .wpb-table-attrs,
48
+ .wpb-td-inner,
49
+ .wpb-converter-rule {
50
+ -webkit-text-stroke-width: 0;
51
+ }
52
+ #wikiPretty span {
53
+ font-weight: normal;
54
+ }
55
+
56
+ #wikiPretty.active span {
57
+ color: transparent;
58
+ background: none;
59
+ }
@@ -0,0 +1,162 @@
1
+ .wikiparse-container {
2
+ position: relative;
3
+ -webkit-text-size-adjust: none;
4
+ }
5
+ .wikiparser {
6
+ white-space: pre-wrap;
7
+ overflow-wrap: break-word;
8
+ word-break: break-all;
9
+ font-family: monospace;
10
+ border: 1.5px solid #dedede;
11
+ background-color: #fff;
12
+ }
13
+ /* wikiparse.highlight或wikiparse.codejar */
14
+ .wikiparser.wikiparse-container {
15
+ padding: 4px 0;
16
+ overflow-y: auto;
17
+ }
18
+ .wikiparse-container > .wpb-root {
19
+ padding: 0 6px;
20
+ display: block;
21
+ position: relative;
22
+ overflow-y: hidden !important;
23
+ }
24
+
25
+ .wikiparser-line-numbers {
26
+ position: absolute;
27
+ top: 0;
28
+ left: 0;
29
+ display: inline-block;
30
+ background-color: #f5f5f5;
31
+ color: #6c6c6c;
32
+ border-right: 1px solid #ddd;
33
+ padding: 4px 0;
34
+ }
35
+ .wikiparser-line-numbers > span {
36
+ display: inline-block;
37
+ width: calc(100% - .5ch);
38
+ text-align: right;
39
+ }
40
+ .wikiparser-sizer {
41
+ position: absolute;
42
+ top: 0;
43
+ left: 0;
44
+ right: 0;
45
+ visibility: hidden;
46
+ z-index: -1;
47
+ padding: 0 6px;
48
+ }
49
+ .wpb-root[contenteditable] > .wikiparser-sizer {
50
+ overflow-y: scroll;
51
+ }
52
+
53
+ .wpb-table-inter {
54
+ color: #d73333;
55
+ font-weight: normal;
56
+ text-decoration: underline wavy 1px;
57
+ }
58
+
59
+ .wpb-hidden, .wpb-noinclude, .wpb-include, .wpb-comment, .wpb-attr-dirty {
60
+ color: #7b8c8f;
61
+ font-weight: normal;
62
+ font-style: italic;
63
+ }
64
+
65
+ .wpb-ext, .wpb-html {
66
+ color: #14866d;
67
+ font-weight: bold;
68
+ }
69
+ .wpb-ext-attrs, .wpb-html-attrs {
70
+ font-weight: normal;
71
+ }
72
+ .wpb-ext-attr > .wpb-attr-value, .wpb-html-attr > .wpb-attr-value {
73
+ color: #179b1c;
74
+ }
75
+ .wpb-ext-inner {
76
+ color: initial;
77
+ font-weight: normal;
78
+ background-color: rgba(0, 0, 0, .03);
79
+ }
80
+
81
+ .wpb-arg {
82
+ color: #ac6600;
83
+ font-weight: bold;
84
+ }
85
+ .wpb-arg-default {
86
+ color: #ad9300;
87
+ font-weight: normal;
88
+ }
89
+
90
+ .wpb-template {
91
+ color: #80c;
92
+ font-weight: bold;
93
+ background-color: rgba(119, 0, 170, .03);
94
+ }
95
+ .wpb-magic-word {
96
+ color: #a11;
97
+ font-weight: bold;
98
+ background-color: rgba(170, 17, 17, .03);
99
+ }
100
+ .wpb-invoke-module, .wpb-invoke-function {
101
+ color: #bf3e13;
102
+ font-weight: normal;
103
+ }
104
+ .wpb-parameter {
105
+ font-weight: normal;
106
+ }
107
+ .wpb-template > .wpb-parameter,
108
+ .wpb-invoke-function ~ .wpb-parameter {
109
+ color: #b0c;
110
+ }
111
+ .wpb-parameter-value {
112
+ color: initial;
113
+ }
114
+
115
+ .wpb-heading, .wpb-image-parameter {
116
+ color: #0076dd;
117
+ }
118
+ .wpb-heading-title {
119
+ color: initial;
120
+ font-weight: bold;
121
+ }
122
+
123
+ .wpb-table, .wpb-tr, .wpb-td {
124
+ color: #d08;
125
+ font-weight: bold;
126
+ }
127
+ .wpb-table-attrs {
128
+ font-weight: normal;
129
+ }
130
+ .wpb-table-attr > .wpb-attr-value {
131
+ color: #f500d4;
132
+ }
133
+ .wpb-td-inner {
134
+ color: initial;
135
+ font-weight: normal;
136
+ }
137
+
138
+ .wpb-double-underscore, .wpb-hr, .wpb-quote, .wpb-list, .wpb-dd, .wpb-redirect-syntax {
139
+ color: #0076dd;
140
+ font-weight: bold;
141
+ background-color: #eee;
142
+ }
143
+
144
+ .wpb-link, .wpb-category, .wpb-file, .wpb-gallery-image, .wpb-imagemap-image, .wpb-redirect-target,
145
+ .wpb-ext-link, .wpb-free-ext-link, .wpb-magic-link {
146
+ color: #000aaa;
147
+ background-color: rgba(34, 17, 153, .03);
148
+ }
149
+ .wpb-link-text, .wpb-image-caption, .wpb-ext-link-text {
150
+ color: initial;
151
+ }
152
+
153
+ .wpb-converter {
154
+ color: #b68;
155
+ font-weight: bold;
156
+ }
157
+ .wpb-converter-rule {
158
+ font-weight: normal;
159
+ }
160
+ .wpb-converter-rule-from, .wpb-converter-rule-to, .wpb-converter-noconvert {
161
+ color: initial;
162
+ }
package/i18n/zh-hans.json CHANGED
@@ -11,6 +11,7 @@
11
11
  "content to be moved out from the table": "将被移出表格的内容",
12
12
  "duplicated $1 attribute": "重复的$1属性",
13
13
  "duplicated category": "重复的分类",
14
+ "duplicated id": "重复的id",
14
15
  "duplicated image $1 parameter": "重复的图片$1参数",
15
16
  "duplicated parameter": "重复参数",
16
17
  "extension tag in HTML tag attributes": "HTML标签属性中的扩展标签",
package/i18n/zh-hant.json CHANGED
@@ -11,6 +11,7 @@
11
11
  "content to be moved out from the table": "將被移出表格的內容",
12
12
  "duplicated $1 attribute": "重複的$1屬性",
13
13
  "duplicated category": "重複的分類",
14
+ "duplicated id": "重複的id",
14
15
  "duplicated image $1 parameter": "重複的圖片$1參數",
15
16
  "duplicated parameter": "重複參數",
16
17
  "extension tag in HTML tag attributes": "HTML標籤屬性中的擴展標籤",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wikiparser-node",
3
- "version": "1.12.3",
3
+ "version": "1.12.4-b",
4
4
  "description": "A Node.js parser for MediaWiki markup with AST",
5
5
  "keywords": [
6
6
  "mediawiki",
@@ -14,43 +14,50 @@
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 && tsc --noEmit --project extensions/tsconfig.codejar.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 dist/test/prof.js",
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
  "@bhsd/common": "^0.0.0",
52
57
  "@codemirror/lint": "^6.8.0",
53
58
  "@types/node": "^20.11.6",
59
+ "@types/prismjs": "^1.26.3",
60
+ "chalk": "^4.1.2",
54
61
  "codejar-async": "^4.2.0",
55
62
  "monaco-editor": "^0.50.0",
56
63
  "v8r": "^3.0.0"