wikiparser-node 1.12.4 → 1.12.5-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 (175) hide show
  1. package/bundle/bundle.min.js +37 -0
  2. package/config/default.json +29 -30
  3. package/config/enwiki.json +15 -829
  4. package/config/llwiki.json +21 -56
  5. package/config/minimum.json +6 -1
  6. package/config/moegirl.json +21 -65
  7. package/config/zhwiki.json +28 -494
  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/package.json +28 -21
  16. package/config/.schema.json +0 -203
  17. package/dist/addon/table.js +0 -494
  18. package/dist/addon/token.js +0 -392
  19. package/dist/addon/transclude.js +0 -184
  20. package/dist/base.d.ts +0 -81
  21. package/dist/base.js +0 -40
  22. package/dist/index.d.ts +0 -33
  23. package/dist/index.js +0 -275
  24. package/dist/internal.d.ts +0 -47
  25. package/dist/lib/element.d.ts +0 -125
  26. package/dist/lib/element.js +0 -377
  27. package/dist/lib/node.d.ts +0 -173
  28. package/dist/lib/node.js +0 -478
  29. package/dist/lib/range.d.ts +0 -105
  30. package/dist/lib/range.js +0 -406
  31. package/dist/lib/ranges.d.ts +0 -28
  32. package/dist/lib/ranges.js +0 -126
  33. package/dist/lib/rect.d.ts +0 -18
  34. package/dist/lib/rect.js +0 -36
  35. package/dist/lib/text.d.ts +0 -58
  36. package/dist/lib/text.js +0 -414
  37. package/dist/lib/title.d.ts +0 -49
  38. package/dist/lib/title.js +0 -253
  39. package/dist/mixin/attributesParent.d.ts +0 -49
  40. package/dist/mixin/attributesParent.js +0 -80
  41. package/dist/mixin/fixed.d.ts +0 -5
  42. package/dist/mixin/fixed.js +0 -32
  43. package/dist/mixin/flagsParent.d.ts +0 -43
  44. package/dist/mixin/flagsParent.js +0 -64
  45. package/dist/mixin/hidden.d.ts +0 -7
  46. package/dist/mixin/hidden.js +0 -39
  47. package/dist/mixin/magicLinkParent.d.ts +0 -19
  48. package/dist/mixin/magicLinkParent.js +0 -43
  49. package/dist/mixin/singleLine.d.ts +0 -5
  50. package/dist/mixin/singleLine.js +0 -25
  51. package/dist/mixin/sol.d.ts +0 -6
  52. package/dist/mixin/sol.js +0 -45
  53. package/dist/mixin/syntax.d.ts +0 -8
  54. package/dist/mixin/syntax.js +0 -46
  55. package/dist/parser/braces.js +0 -152
  56. package/dist/parser/commentAndExt.js +0 -84
  57. package/dist/parser/converter.js +0 -41
  58. package/dist/parser/externalLinks.js +0 -39
  59. package/dist/parser/hrAndDoubleUnderscore.js +0 -44
  60. package/dist/parser/html.js +0 -40
  61. package/dist/parser/links.js +0 -103
  62. package/dist/parser/list.js +0 -116
  63. package/dist/parser/magicLinks.js +0 -55
  64. package/dist/parser/quotes.js +0 -69
  65. package/dist/parser/redirect.js +0 -28
  66. package/dist/parser/selector.js +0 -393
  67. package/dist/parser/table.js +0 -125
  68. package/dist/src/arg.d.ts +0 -49
  69. package/dist/src/arg.js +0 -219
  70. package/dist/src/atom.d.ts +0 -14
  71. package/dist/src/atom.js +0 -54
  72. package/dist/src/attribute.d.ts +0 -64
  73. package/dist/src/attribute.js +0 -478
  74. package/dist/src/attributes.d.ts +0 -103
  75. package/dist/src/attributes.js +0 -380
  76. package/dist/src/converter.d.ts +0 -28
  77. package/dist/src/converter.js +0 -153
  78. package/dist/src/converterFlags.d.ts +0 -80
  79. package/dist/src/converterFlags.js +0 -241
  80. package/dist/src/converterRule.d.ts +0 -71
  81. package/dist/src/converterRule.js +0 -218
  82. package/dist/src/extLink.d.ts +0 -36
  83. package/dist/src/extLink.js +0 -223
  84. package/dist/src/gallery.d.ts +0 -47
  85. package/dist/src/gallery.js +0 -145
  86. package/dist/src/heading.d.ts +0 -44
  87. package/dist/src/heading.js +0 -222
  88. package/dist/src/hidden.d.ts +0 -9
  89. package/dist/src/hidden.js +0 -82
  90. package/dist/src/html.d.ts +0 -61
  91. package/dist/src/html.js +0 -344
  92. package/dist/src/imageParameter.d.ts +0 -60
  93. package/dist/src/imageParameter.js +0 -262
  94. package/dist/src/imagemap.d.ts +0 -47
  95. package/dist/src/imagemap.js +0 -148
  96. package/dist/src/imagemapLink.d.ts +0 -35
  97. package/dist/src/imagemapLink.js +0 -99
  98. package/dist/src/index.d.ts +0 -136
  99. package/dist/src/index.js +0 -790
  100. package/dist/src/link/base.d.ts +0 -52
  101. package/dist/src/link/base.js +0 -258
  102. package/dist/src/link/category.d.ts +0 -22
  103. package/dist/src/link/category.js +0 -36
  104. package/dist/src/link/file.d.ts +0 -102
  105. package/dist/src/link/file.js +0 -335
  106. package/dist/src/link/galleryImage.d.ts +0 -29
  107. package/dist/src/link/galleryImage.js +0 -133
  108. package/dist/src/link/index.d.ts +0 -39
  109. package/dist/src/link/index.js +0 -100
  110. package/dist/src/link/redirectTarget.d.ts +0 -27
  111. package/dist/src/link/redirectTarget.js +0 -71
  112. package/dist/src/magicLink.d.ts +0 -57
  113. package/dist/src/magicLink.js +0 -261
  114. package/dist/src/nested.d.ts +0 -40
  115. package/dist/src/nested.js +0 -108
  116. package/dist/src/nowiki/base.d.ts +0 -28
  117. package/dist/src/nowiki/base.js +0 -90
  118. package/dist/src/nowiki/comment.d.ts +0 -14
  119. package/dist/src/nowiki/comment.js +0 -123
  120. package/dist/src/nowiki/dd.d.ts +0 -8
  121. package/dist/src/nowiki/dd.js +0 -74
  122. package/dist/src/nowiki/doubleUnderscore.d.ts +0 -15
  123. package/dist/src/nowiki/doubleUnderscore.js +0 -101
  124. package/dist/src/nowiki/hr.d.ts +0 -5
  125. package/dist/src/nowiki/hr.js +0 -72
  126. package/dist/src/nowiki/index.d.ts +0 -14
  127. package/dist/src/nowiki/index.js +0 -30
  128. package/dist/src/nowiki/list.d.ts +0 -5
  129. package/dist/src/nowiki/list.js +0 -67
  130. package/dist/src/nowiki/listBase.d.ts +0 -23
  131. package/dist/src/nowiki/listBase.js +0 -100
  132. package/dist/src/nowiki/noinclude.d.ts +0 -6
  133. package/dist/src/nowiki/noinclude.js +0 -77
  134. package/dist/src/nowiki/quote.d.ts +0 -14
  135. package/dist/src/nowiki/quote.js +0 -149
  136. package/dist/src/onlyinclude.d.ts +0 -13
  137. package/dist/src/onlyinclude.js +0 -60
  138. package/dist/src/paramTag/index.d.ts +0 -28
  139. package/dist/src/paramTag/index.js +0 -80
  140. package/dist/src/paramTag/inputbox.d.ts +0 -8
  141. package/dist/src/paramTag/inputbox.js +0 -24
  142. package/dist/src/parameter.d.ts +0 -60
  143. package/dist/src/parameter.js +0 -267
  144. package/dist/src/pre.d.ts +0 -28
  145. package/dist/src/pre.js +0 -62
  146. package/dist/src/redirect.d.ts +0 -30
  147. package/dist/src/redirect.js +0 -128
  148. package/dist/src/syntax.d.ts +0 -15
  149. package/dist/src/syntax.js +0 -87
  150. package/dist/src/table/base.d.ts +0 -28
  151. package/dist/src/table/base.js +0 -81
  152. package/dist/src/table/index.d.ts +0 -230
  153. package/dist/src/table/index.js +0 -506
  154. package/dist/src/table/td.d.ts +0 -72
  155. package/dist/src/table/td.js +0 -375
  156. package/dist/src/table/tr.d.ts +0 -30
  157. package/dist/src/table/tr.js +0 -61
  158. package/dist/src/table/trBase.d.ts +0 -49
  159. package/dist/src/table/trBase.js +0 -165
  160. package/dist/src/tagPair/ext.d.ts +0 -29
  161. package/dist/src/tagPair/ext.js +0 -217
  162. package/dist/src/tagPair/include.d.ts +0 -33
  163. package/dist/src/tagPair/include.js +0 -132
  164. package/dist/src/tagPair/index.d.ts +0 -23
  165. package/dist/src/tagPair/index.js +0 -130
  166. package/dist/src/transclude.d.ts +0 -159
  167. package/dist/src/transclude.js +0 -598
  168. package/dist/util/constants.js +0 -26
  169. package/dist/util/debug.js +0 -95
  170. package/dist/util/diff.js +0 -83
  171. package/dist/util/html.js +0 -146
  172. package/dist/util/lint.js +0 -32
  173. package/dist/util/string.js +0 -107
  174. package/errors/README +0 -3
  175. 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wikiparser-node",
3
- "version": "1.12.4",
3
+ "version": "1.12.5-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"