wikilint 2.18.4 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base.d.mts +3 -2
- package/dist/base.d.ts +3 -2
- package/dist/index.d.ts +2 -2
- package/dist/lib/document.d.ts +4 -0
- package/dist/lib/document.js +22 -1
- package/dist/lib/lsp.js +37 -5
- package/dist/parser/braces.js +1 -1
- package/dist/src/imageParameter.js +7 -5
- package/dist/src/index.js +7 -7
- package/dist/src/paramTag/inputbox.js +9 -4
- package/dist/src/tagPair/ext.js +4 -2
- package/package.json +7 -6
package/dist/base.d.mts
CHANGED
|
@@ -15,6 +15,7 @@ export interface Config {
|
|
|
15
15
|
readonly variants: string[];
|
|
16
16
|
readonly articlePath?: string;
|
|
17
17
|
}
|
|
18
|
+
export type ConfigData = Omit<Config, 'excludes'>;
|
|
18
19
|
export type TokenTypes = 'root' | 'plain' | 'redirect' | 'redirect-syntax' | 'redirect-target' | 'onlyinclude' | 'noinclude' | 'include' | 'comment' | 'ext' | 'ext-attrs' | 'ext-attr-dirty' | 'ext-attr' | 'attr-key' | 'attr-value' | 'ext-inner' | 'arg' | 'arg-name' | 'arg-default' | 'hidden' | 'magic-word' | 'magic-word-name' | 'invoke-function' | 'invoke-module' | 'template' | 'template-name' | 'parameter' | 'parameter-key' | 'parameter-value' | 'heading' | 'heading-title' | 'heading-trail' | 'html' | 'html-attrs' | 'html-attr-dirty' | 'html-attr' | 'table' | 'tr' | 'td' | 'table-syntax' | 'table-attrs' | 'table-attr-dirty' | 'table-attr' | 'table-inter' | 'td-inner' | 'hr' | 'double-underscore' | 'link' | 'link-target' | 'link-text' | 'category' | 'file' | 'gallery-image' | 'imagemap-image' | 'image-parameter' | 'quote' | 'ext-link' | 'ext-link-text' | 'ext-link-url' | 'free-ext-link' | 'magic-link' | 'list' | 'dd' | 'list-range' | 'converter' | 'converter-flags' | 'converter-flag' | 'converter-rule' | 'converter-rule-variant' | 'converter-rule-to' | 'converter-rule-from' | 'param-line' | 'imagemap-link';
|
|
19
20
|
export declare const stages: {
|
|
20
21
|
redirect: number;
|
|
@@ -250,7 +251,7 @@ export interface LanguageService {
|
|
|
250
251
|
setTargetWikipedia(wiki: string): Promise<void>;
|
|
251
252
|
}
|
|
252
253
|
export interface Parser {
|
|
253
|
-
config:
|
|
254
|
+
config: ConfigData | string;
|
|
254
255
|
i18n: Record<string, string> | string | undefined;
|
|
255
256
|
/**
|
|
256
257
|
* Get the current parser configuration
|
|
@@ -258,7 +259,7 @@ export interface Parser {
|
|
|
258
259
|
* 获取当前的解析设置
|
|
259
260
|
* @param config unprocessed parser configuration / 未处理的解析设置
|
|
260
261
|
*/
|
|
261
|
-
getConfig(config?:
|
|
262
|
+
getConfig(config?: ConfigData): Config;
|
|
262
263
|
/**
|
|
263
264
|
* Parse wikitext
|
|
264
265
|
*
|
package/dist/base.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export interface Config {
|
|
|
15
15
|
readonly variants: string[];
|
|
16
16
|
readonly articlePath?: string;
|
|
17
17
|
}
|
|
18
|
+
export type ConfigData = Omit<Config, 'excludes'>;
|
|
18
19
|
export type TokenTypes = 'root' | 'plain' | 'redirect' | 'redirect-syntax' | 'redirect-target' | 'onlyinclude' | 'noinclude' | 'include' | 'comment' | 'ext' | 'ext-attrs' | 'ext-attr-dirty' | 'ext-attr' | 'attr-key' | 'attr-value' | 'ext-inner' | 'arg' | 'arg-name' | 'arg-default' | 'hidden' | 'magic-word' | 'magic-word-name' | 'invoke-function' | 'invoke-module' | 'template' | 'template-name' | 'parameter' | 'parameter-key' | 'parameter-value' | 'heading' | 'heading-title' | 'heading-trail' | 'html' | 'html-attrs' | 'html-attr-dirty' | 'html-attr' | 'table' | 'tr' | 'td' | 'table-syntax' | 'table-attrs' | 'table-attr-dirty' | 'table-attr' | 'table-inter' | 'td-inner' | 'hr' | 'double-underscore' | 'link' | 'link-target' | 'link-text' | 'category' | 'file' | 'gallery-image' | 'imagemap-image' | 'image-parameter' | 'quote' | 'ext-link' | 'ext-link-text' | 'ext-link-url' | 'free-ext-link' | 'magic-link' | 'list' | 'dd' | 'list-range' | 'converter' | 'converter-flags' | 'converter-flag' | 'converter-rule' | 'converter-rule-variant' | 'converter-rule-to' | 'converter-rule-from' | 'param-line' | 'imagemap-link';
|
|
19
20
|
export declare const stages: {
|
|
20
21
|
redirect: number;
|
|
@@ -250,7 +251,7 @@ export interface LanguageService {
|
|
|
250
251
|
setTargetWikipedia(wiki: string): Promise<void>;
|
|
251
252
|
}
|
|
252
253
|
export interface Parser {
|
|
253
|
-
config:
|
|
254
|
+
config: ConfigData | string;
|
|
254
255
|
i18n: Record<string, string> | string | undefined;
|
|
255
256
|
/**
|
|
256
257
|
* Get the current parser configuration
|
|
@@ -258,7 +259,7 @@ export interface Parser {
|
|
|
258
259
|
* 获取当前的解析设置
|
|
259
260
|
* @param config unprocessed parser configuration / 未处理的解析设置
|
|
260
261
|
*/
|
|
261
|
-
getConfig(config?:
|
|
262
|
+
getConfig(config?: ConfigData): Config;
|
|
262
263
|
/**
|
|
263
264
|
* Parse wikitext
|
|
264
265
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Config, LintError, TokenTypes, Parser as ParserBase, Stage } from './base';
|
|
1
|
+
import type { Config, ConfigData, LintError, TokenTypes, Parser as ParserBase, Stage } from './base';
|
|
2
2
|
import type { Title, TitleOptions } from './lib/title';
|
|
3
3
|
import type { LanguageService, QuickFixData } from './lib/lsp';
|
|
4
4
|
import type { Token } from './internal';
|
|
@@ -37,6 +37,6 @@ declare const Parser: Parser;
|
|
|
37
37
|
// @ts-expect-error mixed export styles
|
|
38
38
|
export = Parser;
|
|
39
39
|
export default Parser;
|
|
40
|
-
export type { Config, LintError, TokenTypes, LanguageService, QuickFixData, };
|
|
40
|
+
export type { Config, ConfigData, LintError, TokenTypes, LanguageService, QuickFixData, };
|
|
41
41
|
export type * from './internal';
|
|
42
42
|
declare global { type Acceptable = unknown; }
|
package/dist/lib/document.d.ts
CHANGED
|
@@ -3,6 +3,10 @@ import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
|
3
3
|
import type { JSONDocument } from 'vscode-json-languageservice';
|
|
4
4
|
import type { Stylesheet } from 'vscode-css-languageservice';
|
|
5
5
|
import type { Token } from '../internal';
|
|
6
|
+
declare interface Jax {
|
|
7
|
+
tex2mml(tex: string): string;
|
|
8
|
+
}
|
|
9
|
+
export declare const MathJax: Promise<Jax | undefined>;
|
|
6
10
|
export declare const jsonTags: string[];
|
|
7
11
|
export declare const jsonLSP: import("vscode-json-languageservice").LanguageService | undefined;
|
|
8
12
|
export declare const cssLSP: import("vscode-css-languageservice").LanguageService | undefined;
|
package/dist/lib/document.js
CHANGED
|
@@ -3,9 +3,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EmbeddedCSSDocument = exports.EmbeddedJSONDocument = exports.stylelint = exports.cssLSP = exports.jsonLSP = exports.jsonTags = void 0;
|
|
6
|
+
exports.EmbeddedCSSDocument = exports.EmbeddedJSONDocument = exports.stylelint = exports.cssLSP = exports.jsonLSP = exports.jsonTags = exports.MathJax = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const common_1 = require("@bhsd/common");
|
|
9
|
+
exports.MathJax = (async () => {
|
|
10
|
+
try {
|
|
11
|
+
const jax = require('mathjax');
|
|
12
|
+
return await jax.init({
|
|
13
|
+
loader: {
|
|
14
|
+
load: ['input/tex', '[tex]/mhchem'],
|
|
15
|
+
},
|
|
16
|
+
tex: {
|
|
17
|
+
packages: { '[+]': ['mhchem'] },
|
|
18
|
+
/** @ignore */
|
|
19
|
+
formatError(_, error) {
|
|
20
|
+
throw error;
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
startup: { typeset: false },
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
})();
|
|
9
30
|
exports.jsonTags = ['templatedata', 'mapframe', 'maplink'];
|
|
10
31
|
exports.jsonLSP = (() => {
|
|
11
32
|
try {
|
package/dist/lib/lsp.js
CHANGED
|
@@ -21,7 +21,7 @@ const document_1 = require("./document");
|
|
|
21
21
|
const cssRules = {
|
|
22
22
|
'block-no-empty': null,
|
|
23
23
|
'property-no-unknown': null,
|
|
24
|
-
}, jsonSelector = document_1.jsonTags.map(s => `ext
|
|
24
|
+
}, jsonSelector = document_1.jsonTags.map(s => `ext#${s}`).join(), mathSelector = ['math', 'chem', 'ce'].map(s => `ext#${s}`).join(), scores = new Map();
|
|
25
25
|
let colors;
|
|
26
26
|
/* NOT FOR BROWSER ONLY END */
|
|
27
27
|
exports.tasks = new WeakMap();
|
|
@@ -768,8 +768,11 @@ class LanguageService {
|
|
|
768
768
|
});
|
|
769
769
|
})() :
|
|
770
770
|
[], jsonDiagnostics = document_1.jsonLSP ?
|
|
771
|
-
await Promise.all(root.querySelectorAll(jsonSelector).map(async (
|
|
772
|
-
|
|
771
|
+
await Promise.all(root.querySelectorAll(jsonSelector).map(async ({ name, lastChild, selfClosing }) => {
|
|
772
|
+
if (selfClosing) {
|
|
773
|
+
return [];
|
|
774
|
+
}
|
|
775
|
+
const textDoc = new document_1.EmbeddedJSONDocument(root, lastChild), severityLevel = name === 'templatedata' ? 'error' : 'ignore', e = (await document_1.jsonLSP.doValidation(textDoc, textDoc.jsonDoc, {
|
|
773
776
|
comments: severityLevel,
|
|
774
777
|
trailingCommas: severityLevel,
|
|
775
778
|
})).map((error) => ({
|
|
@@ -824,6 +827,32 @@ class LanguageService {
|
|
|
824
827
|
}));
|
|
825
828
|
}
|
|
826
829
|
}
|
|
830
|
+
const MathJax = await document_1.MathJax, mathDiagnostics = MathJax
|
|
831
|
+
? root.querySelectorAll(mathSelector)
|
|
832
|
+
.map(({ selfClosing, innerText, lastChild, name }) => {
|
|
833
|
+
if (selfClosing) {
|
|
834
|
+
return [];
|
|
835
|
+
}
|
|
836
|
+
try {
|
|
837
|
+
MathJax.tex2mml(name === 'math' ? innerText : String.raw `\ce{${innerText}}`);
|
|
838
|
+
return [];
|
|
839
|
+
}
|
|
840
|
+
catch (e) {
|
|
841
|
+
if (e && typeof e === 'object' && 'id' in e && 'message' in e) {
|
|
842
|
+
return [
|
|
843
|
+
{
|
|
844
|
+
range: createNodeRange(lastChild),
|
|
845
|
+
severity: 1,
|
|
846
|
+
source: 'MathJax',
|
|
847
|
+
code: e.id,
|
|
848
|
+
message: e.message,
|
|
849
|
+
},
|
|
850
|
+
];
|
|
851
|
+
}
|
|
852
|
+
return [];
|
|
853
|
+
}
|
|
854
|
+
})
|
|
855
|
+
: [];
|
|
827
856
|
/* NOT FOR BROWSER ONLY END */
|
|
828
857
|
return [
|
|
829
858
|
diagnostics,
|
|
@@ -831,6 +860,7 @@ class LanguageService {
|
|
|
831
860
|
jsonDiagnostics,
|
|
832
861
|
/* NOT FOR BROWSER ONLY */
|
|
833
862
|
lilypondDiagnostics,
|
|
863
|
+
mathDiagnostics,
|
|
834
864
|
].flat(2);
|
|
835
865
|
}
|
|
836
866
|
/**
|
|
@@ -883,8 +913,10 @@ class LanguageService {
|
|
|
883
913
|
}
|
|
884
914
|
/* NOT FOR BROWSER ONLY */
|
|
885
915
|
if (document_1.jsonLSP) {
|
|
886
|
-
for (const
|
|
887
|
-
|
|
916
|
+
for (const { selfClosing, lastChild } of root.querySelectorAll(jsonSelector)) {
|
|
917
|
+
if (!selfClosing) {
|
|
918
|
+
ranges.push(...document_1.jsonLSP.getFoldingRanges(new document_1.EmbeddedJSONDocument(root, lastChild)));
|
|
919
|
+
}
|
|
888
920
|
}
|
|
889
921
|
}
|
|
890
922
|
/* NOT FOR BROWSER ONLY END */
|
package/dist/parser/braces.js
CHANGED
|
@@ -61,7 +61,7 @@ const getSymbol = (s) => {
|
|
|
61
61
|
* @throws `TranscludeToken.constructor()`
|
|
62
62
|
*/
|
|
63
63
|
const parseBraces = (wikitext, config, accum) => {
|
|
64
|
-
const source = String.raw `${config.excludes
|
|
64
|
+
const source = String.raw `${config.excludes.includes('heading') ? '' : String.raw `^((?:\0\d+[cno]\x7F)*)={1,6}|`}\[\[|-\{(?!\{)`, { parserFunction: [, , , subst] } = config, stack = [], linkStack = [];
|
|
65
65
|
/**
|
|
66
66
|
* 恢复内链
|
|
67
67
|
* @param s 不含内链的字符串
|
|
@@ -14,7 +14,7 @@ const getUrlRegex = (0, common_1.getRegex)(protocol => new RegExp(String.raw `^(
|
|
|
14
14
|
const getSyntaxRegex = (0, common_1.getRegex)(syntax => new RegExp(String.raw `^(\s*(?!\s))${syntax.replace('$1', '(.*)')}${syntax.endsWith('$1') ? '(?=$|\n)' : ''}(\s*)$`, 'u'));
|
|
15
15
|
exports.galleryParams = new Set(['alt', 'link', 'lang', 'page', 'caption']);
|
|
16
16
|
function validate(key, val, config, halfParsed, ext) {
|
|
17
|
-
val = val.trim();
|
|
17
|
+
val = (0, string_1.removeComment)(val).trim();
|
|
18
18
|
let value = val.replace(key === 'link' ? /\0\d+[tq]\x7F/gu : /\0\d+t\x7F/gu, '').trim();
|
|
19
19
|
switch (key) {
|
|
20
20
|
case 'width':
|
|
@@ -81,10 +81,12 @@ class ImageParameterToken extends index_2.Token {
|
|
|
81
81
|
this.setAttribute('name', param[1]);
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
|
-
super(str,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
super(str, config.excludes.includes('list')
|
|
85
|
+
? config
|
|
86
|
+
: {
|
|
87
|
+
...config,
|
|
88
|
+
excludes: [...config.excludes, 'list'],
|
|
89
|
+
}, accum);
|
|
88
90
|
this.setAttribute('name', 'caption');
|
|
89
91
|
this.setAttribute('stage', 7);
|
|
90
92
|
}
|
package/dist/src/index.js
CHANGED
|
@@ -224,7 +224,7 @@ class Token extends element_1.AstElement {
|
|
|
224
224
|
}
|
|
225
225
|
/** 解析HTML标签 */
|
|
226
226
|
#parseHtml() {
|
|
227
|
-
if (this.#config.excludes
|
|
227
|
+
if (this.#config.excludes.includes('html')) {
|
|
228
228
|
return;
|
|
229
229
|
}
|
|
230
230
|
const { parseHtml } = require('../parser/html');
|
|
@@ -232,7 +232,7 @@ class Token extends element_1.AstElement {
|
|
|
232
232
|
}
|
|
233
233
|
/** 解析表格 */
|
|
234
234
|
#parseTable() {
|
|
235
|
-
if (this.#config.excludes
|
|
235
|
+
if (this.#config.excludes.includes('table')) {
|
|
236
236
|
return;
|
|
237
237
|
}
|
|
238
238
|
const { parseTable } = require('../parser/table');
|
|
@@ -240,7 +240,7 @@ class Token extends element_1.AstElement {
|
|
|
240
240
|
}
|
|
241
241
|
/** 解析`<hr>`和状态开关 */
|
|
242
242
|
#parseHrAndDoubleUnderscore() {
|
|
243
|
-
if (this.#config.excludes
|
|
243
|
+
if (this.#config.excludes.includes('hr')) {
|
|
244
244
|
return;
|
|
245
245
|
}
|
|
246
246
|
const { parseHrAndDoubleUnderscore } = require('../parser/hrAndDoubleUnderscore');
|
|
@@ -259,7 +259,7 @@ class Token extends element_1.AstElement {
|
|
|
259
259
|
* @param tidy 是否整理
|
|
260
260
|
*/
|
|
261
261
|
#parseQuotes(tidy) {
|
|
262
|
-
if (this.#config.excludes
|
|
262
|
+
if (this.#config.excludes.includes('quote')) {
|
|
263
263
|
return;
|
|
264
264
|
}
|
|
265
265
|
const { parseQuotes } = require('../parser/quotes');
|
|
@@ -271,7 +271,7 @@ class Token extends element_1.AstElement {
|
|
|
271
271
|
}
|
|
272
272
|
/** 解析外部链接 */
|
|
273
273
|
#parseExternalLinks() {
|
|
274
|
-
if (this.#config.excludes
|
|
274
|
+
if (this.#config.excludes.includes('extLink')) {
|
|
275
275
|
return;
|
|
276
276
|
}
|
|
277
277
|
const { parseExternalLinks } = require('../parser/externalLinks');
|
|
@@ -279,7 +279,7 @@ class Token extends element_1.AstElement {
|
|
|
279
279
|
}
|
|
280
280
|
/** 解析自由外链 */
|
|
281
281
|
#parseMagicLinks() {
|
|
282
|
-
if (this.#config.excludes
|
|
282
|
+
if (this.#config.excludes.includes('magicLink')) {
|
|
283
283
|
return;
|
|
284
284
|
}
|
|
285
285
|
const { parseMagicLinks } = require('../parser/magicLinks');
|
|
@@ -287,7 +287,7 @@ class Token extends element_1.AstElement {
|
|
|
287
287
|
}
|
|
288
288
|
/** 解析列表 */
|
|
289
289
|
#parseList() {
|
|
290
|
-
if (this.#config.excludes
|
|
290
|
+
if (this.#config.excludes.includes('list')) {
|
|
291
291
|
return;
|
|
292
292
|
}
|
|
293
293
|
const { parseList } = require('../parser/list');
|
|
@@ -12,12 +12,17 @@ const index_2 = require("./index");
|
|
|
12
12
|
class InputboxToken extends index_2.ParamTagToken {
|
|
13
13
|
/** @class */
|
|
14
14
|
constructor(include, wikitext, config = index_1.default.getConfig(), accum = []) {
|
|
15
|
-
const placeholder = Symbol('InputboxToken'),
|
|
15
|
+
const placeholder = Symbol('InputboxToken'), newConfig = config.excludes.includes('heading')
|
|
16
|
+
? config
|
|
17
|
+
: {
|
|
18
|
+
...config,
|
|
19
|
+
excludes: [...config.excludes, 'heading'],
|
|
20
|
+
}, { length } = accum;
|
|
16
21
|
accum.push(placeholder);
|
|
17
|
-
wikitext &&= (0, commentAndExt_1.parseCommentAndExt)(wikitext,
|
|
18
|
-
wikitext &&= (0, braces_1.parseBraces)(wikitext,
|
|
22
|
+
wikitext &&= (0, commentAndExt_1.parseCommentAndExt)(wikitext, newConfig, accum, include);
|
|
23
|
+
wikitext &&= (0, braces_1.parseBraces)(wikitext, newConfig, accum);
|
|
19
24
|
accum.splice(length, 1);
|
|
20
|
-
super(include, wikitext,
|
|
25
|
+
super(include, wikitext, newConfig, accum, {});
|
|
21
26
|
}
|
|
22
27
|
}
|
|
23
28
|
exports.InputboxToken = InputboxToken;
|
package/dist/src/tagPair/ext.js
CHANGED
|
@@ -98,7 +98,7 @@ let ExtToken = (() => {
|
|
|
98
98
|
attrToken = new attributes_1.AttributesToken(!attr || /^\s/u.test(attr) ? attr : ` ${attr}`, 'ext-attrs', lcName, config, accum), newConfig = {
|
|
99
99
|
...config,
|
|
100
100
|
ext: del(config.ext, lcName),
|
|
101
|
-
excludes: [...config.excludes
|
|
101
|
+
excludes: [...config.excludes],
|
|
102
102
|
};
|
|
103
103
|
let innerToken;
|
|
104
104
|
switch (lcName) {
|
|
@@ -127,11 +127,11 @@ let ExtToken = (() => {
|
|
|
127
127
|
innerToken = new index_4.ParamTagToken(include, inner, newConfig, accum);
|
|
128
128
|
break;
|
|
129
129
|
case 'inputbox':
|
|
130
|
-
newConfig.excludes.push('heading');
|
|
131
130
|
// @ts-expect-error abstract class
|
|
132
131
|
innerToken = new inputbox_1.InputboxToken(include, inner, newConfig, accum);
|
|
133
132
|
break;
|
|
134
133
|
case 'references': {
|
|
134
|
+
// NestedToken 依赖 ExtToken
|
|
135
135
|
const { NestedToken } = require('../nested');
|
|
136
136
|
newConfig.excludes.push('heading');
|
|
137
137
|
// @ts-expect-error abstract class
|
|
@@ -139,12 +139,14 @@ let ExtToken = (() => {
|
|
|
139
139
|
break;
|
|
140
140
|
}
|
|
141
141
|
case 'choose': {
|
|
142
|
+
// NestedToken 依赖 ExtToken
|
|
142
143
|
const { NestedToken } = require('../nested');
|
|
143
144
|
// @ts-expect-error abstract class
|
|
144
145
|
innerToken = new NestedToken(inner, /<(option|choicetemplate)(\s[^>]*?)?(?:\/>|>([\s\S]*?)<\/(\1)>)/gu, ['option', 'choicetemplate'], newConfig, accum);
|
|
145
146
|
break;
|
|
146
147
|
}
|
|
147
148
|
case 'combobox': {
|
|
149
|
+
// NestedToken 依赖 ExtToken
|
|
148
150
|
const { NestedToken } = require('../nested');
|
|
149
151
|
// @ts-expect-error abstract class
|
|
150
152
|
innerToken = new NestedToken(inner, /<(combooption)(\s[^>]*?)?(?:\/>|>([\s\S]*?)<\/(combooption\s*)>)/giu, ['combooption'], newConfig, accum);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wikilint",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.19.0",
|
|
4
4
|
"description": "A Node.js linter for MediaWiki markup",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mediawiki",
|
|
@@ -65,13 +65,14 @@
|
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@bhsd/common": "^0.9.
|
|
68
|
+
"@bhsd/common": "^0.9.2",
|
|
69
69
|
"vscode-languageserver-types": "^3.17.5"
|
|
70
70
|
},
|
|
71
71
|
"optionalDependencies": {
|
|
72
72
|
"chalk": "^4.1.2",
|
|
73
73
|
"color-name": "^2.0.0",
|
|
74
74
|
"entities": "^6.0.0",
|
|
75
|
+
"mathjax": "^3.2.2",
|
|
75
76
|
"minimatch": "^10.0.1",
|
|
76
77
|
"stylelint": "^16.14.1",
|
|
77
78
|
"vscode-css-languageservice": "^6.3.2",
|
|
@@ -85,10 +86,10 @@
|
|
|
85
86
|
"@types/color-rgba": "^2.1.3",
|
|
86
87
|
"@types/mocha": "^10.0.10",
|
|
87
88
|
"@types/node": "^22.13.1",
|
|
88
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
89
|
-
"@typescript-eslint/parser": "^8.
|
|
89
|
+
"@typescript-eslint/eslint-plugin": "^8.29.0",
|
|
90
|
+
"@typescript-eslint/parser": "^8.29.0",
|
|
90
91
|
"color-rgba": "^3.0.0",
|
|
91
|
-
"esbuild": "^0.25.
|
|
92
|
+
"esbuild": "^0.25.2",
|
|
92
93
|
"eslint": "^8.57.1",
|
|
93
94
|
"eslint-plugin-es-x": "^8.4.1",
|
|
94
95
|
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
@@ -103,7 +104,7 @@
|
|
|
103
104
|
"mocha": "^11.1.0",
|
|
104
105
|
"nyc": "^17.1.0",
|
|
105
106
|
"stylelint-config-recommended": "^15.0.0",
|
|
106
|
-
"typescript": "^5.
|
|
107
|
+
"typescript": "^5.8.2",
|
|
107
108
|
"v8r": "^4.2.1",
|
|
108
109
|
"vscode-languageserver-textdocument": "^1.0.12"
|
|
109
110
|
},
|