wikilint 2.28.0 → 2.28.1
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/config/default.json +15 -16
- package/config/jawiki.json +15 -16
- package/dist/base.d.mts +1 -1
- package/dist/base.d.ts +1 -1
- package/dist/base.js +1 -0
- package/dist/base.mjs +1 -0
- package/dist/bin/config.js +11 -11
- package/dist/lib/lintConfig.js +2 -0
- package/dist/lib/lsp.js +4 -1
- package/dist/parser/commentAndExt.js +4 -1
- package/dist/parser/hrAndDoubleUnderscore.js +8 -7
- package/dist/src/arg.js +2 -3
- package/dist/src/attribute.js +1 -0
- package/dist/src/imageParameter.js +47 -8
- package/dist/src/link/file.js +1 -4
- package/dist/src/magicLink.js +12 -1
- package/dist/src/nowiki/doubleUnderscore.d.ts +3 -1
- package/dist/src/nowiki/doubleUnderscore.js +6 -2
- package/dist/src/tagPair/ext.js +10 -3
- package/i18n/en.json +2 -0
- package/i18n/zh-hans.json +2 -0
- package/i18n/zh-hant.json +2 -0
- package/package.json +4 -4
package/config/default.json
CHANGED
|
@@ -667,9 +667,7 @@
|
|
|
667
667
|
"parserFunction": [
|
|
668
668
|
{
|
|
669
669
|
"名称空间": "ns",
|
|
670
|
-
"名前空間:": "ns",
|
|
671
670
|
"名空": "ns",
|
|
672
|
-
"名空:": "ns",
|
|
673
671
|
"ns": "ns",
|
|
674
672
|
"名称空间e": "nse",
|
|
675
673
|
"名字空间e": "nse",
|
|
@@ -678,7 +676,6 @@
|
|
|
678
676
|
"nse": "nse",
|
|
679
677
|
"url编码": "urlencode",
|
|
680
678
|
"urlエンコード": "urlencode",
|
|
681
|
-
"urlエンコード:": "urlencode",
|
|
682
679
|
"urlencode": "urlencode",
|
|
683
680
|
"小写首字": "lcfirst",
|
|
684
681
|
"先頭小文字": "lcfirst",
|
|
@@ -694,23 +691,17 @@
|
|
|
694
691
|
"uc": "uc",
|
|
695
692
|
"本地url": "localurl",
|
|
696
693
|
"ローカルurl": "localurl",
|
|
697
|
-
"ローカルurl:": "localurl",
|
|
698
694
|
"localurl": "localurl",
|
|
699
695
|
"本地urle": "localurle",
|
|
700
696
|
"ローカルurle": "localurle",
|
|
701
|
-
"ローカルurle:": "localurle",
|
|
702
697
|
"localurle": "localurle",
|
|
703
698
|
"完整url": "fullurl",
|
|
704
699
|
"完全なurl": "fullurl",
|
|
705
700
|
"フルurl": "fullurl",
|
|
706
|
-
"完全なurl:": "fullurl",
|
|
707
|
-
"フルurl:": "fullurl",
|
|
708
701
|
"fullurl": "fullurl",
|
|
709
702
|
"完整url等同": "fullurle",
|
|
710
703
|
"完全なurle": "fullurle",
|
|
711
704
|
"フルurle": "fullurle",
|
|
712
|
-
"完全なurle:": "fullurle",
|
|
713
|
-
"フルurle:": "fullurle",
|
|
714
705
|
"fullurle": "fullurle",
|
|
715
706
|
"规范url": "canonicalurl",
|
|
716
707
|
"canonicalurl": "canonicalurl",
|
|
@@ -725,11 +716,9 @@
|
|
|
725
716
|
"性别": "gender",
|
|
726
717
|
"性別": "gender",
|
|
727
718
|
"性": "gender",
|
|
728
|
-
"性別:": "gender",
|
|
729
719
|
"gender": "gender",
|
|
730
720
|
"复数": "plural",
|
|
731
721
|
"複数": "plural",
|
|
732
|
-
"複数:": "plural",
|
|
733
722
|
"plural": "plural",
|
|
734
723
|
"bidi": "bidi",
|
|
735
724
|
"#语言": "language",
|
|
@@ -748,7 +737,6 @@
|
|
|
748
737
|
"anchorencode": "anchorencode",
|
|
749
738
|
"文件路径": "filepath",
|
|
750
739
|
"ファイルパス": "filepath",
|
|
751
|
-
"ファイルパス:": "filepath",
|
|
752
740
|
"filepath": "filepath",
|
|
753
741
|
"页面id": "pageid",
|
|
754
742
|
"頁面id": "pageid",
|
|
@@ -758,10 +746,7 @@
|
|
|
758
746
|
"界面": "int",
|
|
759
747
|
"インターフェース": "int",
|
|
760
748
|
"インタ": "int",
|
|
761
|
-
"インターフェース:": "int",
|
|
762
|
-
"インタ:": "int",
|
|
763
749
|
"インターフェイス": "int",
|
|
764
|
-
"インターフェイス:": "int",
|
|
765
750
|
"int": "int",
|
|
766
751
|
"#特殊": "special",
|
|
767
752
|
"#特別": "special",
|
|
@@ -989,7 +974,6 @@
|
|
|
989
974
|
"默认排序关键字": "defaultsort",
|
|
990
975
|
"默认分类排序": "defaultsort",
|
|
991
976
|
"デフォルトソート": "defaultsort",
|
|
992
|
-
"デフォルトソート:": "defaultsort",
|
|
993
977
|
"デフォルトソートキー": "defaultsort",
|
|
994
978
|
"デフォルトカテゴリソート": "defaultsort",
|
|
995
979
|
"DEFAULTSORT": "defaultsort",
|
|
@@ -1378,37 +1362,44 @@
|
|
|
1378
1362
|
"强显目录": "forcetoc",
|
|
1379
1363
|
"強制目錄": "forcetoc",
|
|
1380
1364
|
"目次強制": "forcetoc",
|
|
1365
|
+
"__目次強制__": "forcetoc",
|
|
1381
1366
|
"nocc": "nocontentconvert",
|
|
1382
1367
|
"nocontentconvert": "nocontentconvert",
|
|
1383
1368
|
"不转换内容": "nocontentconvert",
|
|
1384
1369
|
"不轉換內容": "nocontentconvert",
|
|
1385
1370
|
"内容変換無効": "nocontentconvert",
|
|
1386
1371
|
"内容変換抑制": "nocontentconvert",
|
|
1372
|
+
"__内容変換抑制__": "nocontentconvert",
|
|
1387
1373
|
"noeditsection": "noeditsection",
|
|
1388
1374
|
"无段落编辑": "noeditsection",
|
|
1389
1375
|
"无编辑段落": "noeditsection",
|
|
1390
1376
|
"無段落編輯": "noeditsection",
|
|
1391
1377
|
"節編集非表示": "noeditsection",
|
|
1392
1378
|
"セクション編集非表示": "noeditsection",
|
|
1379
|
+
"__セクション編集非表示__": "noeditsection",
|
|
1393
1380
|
"nogallery": "nogallery",
|
|
1394
1381
|
"无图库": "nogallery",
|
|
1395
1382
|
"無圖庫": "nogallery",
|
|
1396
1383
|
"ギャラリー非表示": "nogallery",
|
|
1384
|
+
"__ギャラリー非表示__": "nogallery",
|
|
1397
1385
|
"notc": "notitleconvert",
|
|
1398
1386
|
"notitleconvert": "notitleconvert",
|
|
1399
1387
|
"不转换标题": "notitleconvert",
|
|
1400
1388
|
"不轉換標題": "notitleconvert",
|
|
1401
1389
|
"タイトル変換無効": "notitleconvert",
|
|
1402
1390
|
"タイトルコンバート拒否": "notitleconvert",
|
|
1391
|
+
"__タイトルコンバート拒否__": "notitleconvert",
|
|
1403
1392
|
"タイトル非表示": "notitleconvert",
|
|
1404
1393
|
"notoc": "notoc",
|
|
1405
1394
|
"无目录": "notoc",
|
|
1406
1395
|
"無目錄": "notoc",
|
|
1407
1396
|
"目次非表示": "notoc",
|
|
1397
|
+
"__目次非表示__": "notoc",
|
|
1408
1398
|
"toc": "toc",
|
|
1409
1399
|
"目录": "toc",
|
|
1410
1400
|
"目錄": "toc",
|
|
1411
1401
|
"目次": "toc",
|
|
1402
|
+
"__目次__": "toc",
|
|
1412
1403
|
"archivedtalk": "archivedtalk",
|
|
1413
1404
|
"已存档讨论": "archivedtalk",
|
|
1414
1405
|
"notalk": "notalk",
|
|
@@ -1428,25 +1419,33 @@
|
|
|
1428
1419
|
"INDEX": "INDEX",
|
|
1429
1420
|
"索引": "INDEX",
|
|
1430
1421
|
"インデックス": "INDEX",
|
|
1422
|
+
"__インデックス__": "INDEX",
|
|
1431
1423
|
"NEWSECTIONLINK": "NEWSECTIONLINK",
|
|
1432
1424
|
"新段落链接": "NEWSECTIONLINK",
|
|
1433
1425
|
"新しい節リンク": "NEWSECTIONLINK",
|
|
1434
1426
|
"新しいセクションリンク": "NEWSECTIONLINK",
|
|
1435
1427
|
"新セクションリンク": "NEWSECTIONLINK",
|
|
1428
|
+
"__新しいセクションリンク__": "NEWSECTIONLINK",
|
|
1429
|
+
"__新セクションリンク__": "NEWSECTIONLINK",
|
|
1436
1430
|
"NOINDEX": "NOINDEX",
|
|
1437
1431
|
"无索引": "NOINDEX",
|
|
1438
1432
|
"インデックス拒否": "NOINDEX",
|
|
1433
|
+
"__インデックス拒否__": "NOINDEX",
|
|
1439
1434
|
"NONEWSECTIONLINK": "NONEWSECTIONLINK",
|
|
1440
1435
|
"无新段落链接": "NONEWSECTIONLINK",
|
|
1441
1436
|
"新しい節リンク非表示": "NONEWSECTIONLINK",
|
|
1442
1437
|
"新しいセクションリンク非表示": "NONEWSECTIONLINK",
|
|
1443
1438
|
"新セクションリンク非表示": "NONEWSECTIONLINK",
|
|
1439
|
+
"__新しいセクションリンク非表示__": "NONEWSECTIONLINK",
|
|
1440
|
+
"__新セクションリンク非表示__": "NONEWSECTIONLINK",
|
|
1444
1441
|
"STATICREDIRECT": "STATICREDIRECT",
|
|
1445
1442
|
"静态重定向": "STATICREDIRECT",
|
|
1446
1443
|
"靜態重新導向": "STATICREDIRECT",
|
|
1447
1444
|
"静的転送": "STATICREDIRECT",
|
|
1448
1445
|
"二重転送解消無効": "STATICREDIRECT",
|
|
1449
1446
|
"二重転送修正無効": "STATICREDIRECT",
|
|
1447
|
+
"__二重転送解消無効__": "STATICREDIRECT",
|
|
1448
|
+
"__二重転送修正無効__": "STATICREDIRECT",
|
|
1450
1449
|
"NOGLOBAL": "NOGLOBAL",
|
|
1451
1450
|
"禁用全域用户页": "NOGLOBAL",
|
|
1452
1451
|
"EXPECTED_UNCONNECTED_PAGE": "EXPECTEDUNCONNECTEDPAGE",
|
package/config/jawiki.json
CHANGED
|
@@ -399,14 +399,11 @@
|
|
|
399
399
|
],
|
|
400
400
|
"parserFunction": [
|
|
401
401
|
{
|
|
402
|
-
"名前空間:": "ns",
|
|
403
402
|
"名空": "ns",
|
|
404
|
-
"名空:": "ns",
|
|
405
403
|
"ns": "ns",
|
|
406
404
|
"名前空間e": "nse",
|
|
407
405
|
"nse": "nse",
|
|
408
406
|
"urlエンコード": "urlencode",
|
|
409
|
-
"urlエンコード:": "urlencode",
|
|
410
407
|
"urlencode": "urlencode",
|
|
411
408
|
"先頭小文字": "lcfirst",
|
|
412
409
|
"lcfirst": "lcfirst",
|
|
@@ -417,20 +414,14 @@
|
|
|
417
414
|
"大文字": "uc",
|
|
418
415
|
"uc": "uc",
|
|
419
416
|
"ローカルurl": "localurl",
|
|
420
|
-
"ローカルurl:": "localurl",
|
|
421
417
|
"localurl": "localurl",
|
|
422
418
|
"ローカルurle": "localurle",
|
|
423
|
-
"ローカルurle:": "localurle",
|
|
424
419
|
"localurle": "localurle",
|
|
425
420
|
"完全なurl": "fullurl",
|
|
426
421
|
"フルurl": "fullurl",
|
|
427
|
-
"完全なurl:": "fullurl",
|
|
428
|
-
"フルurl:": "fullurl",
|
|
429
422
|
"fullurl": "fullurl",
|
|
430
423
|
"完全なurle": "fullurle",
|
|
431
424
|
"フルurle": "fullurle",
|
|
432
|
-
"完全なurle:": "fullurle",
|
|
433
|
-
"フルurle:": "fullurle",
|
|
434
425
|
"fullurle": "fullurle",
|
|
435
426
|
"canonicalurl": "canonicalurl",
|
|
436
427
|
"canonicalurle": "canonicalurle",
|
|
@@ -439,10 +430,8 @@
|
|
|
439
430
|
"文法": "grammar",
|
|
440
431
|
"grammar": "grammar",
|
|
441
432
|
"性別": "gender",
|
|
442
|
-
"性別:": "gender",
|
|
443
433
|
"gender": "gender",
|
|
444
434
|
"複数": "plural",
|
|
445
|
-
"複数:": "plural",
|
|
446
435
|
"plural": "plural",
|
|
447
436
|
"bidi": "bidi",
|
|
448
437
|
"#言語": "language",
|
|
@@ -455,17 +444,13 @@
|
|
|
455
444
|
"アンカー用エンコード": "anchorencode",
|
|
456
445
|
"anchorencode": "anchorencode",
|
|
457
446
|
"ファイルパス": "filepath",
|
|
458
|
-
"ファイルパス:": "filepath",
|
|
459
447
|
"filepath": "filepath",
|
|
460
448
|
"ページid": "pageid",
|
|
461
449
|
"ページid": "pageid",
|
|
462
450
|
"pageid": "pageid",
|
|
463
451
|
"インターフェース": "int",
|
|
464
452
|
"インタ": "int",
|
|
465
|
-
"インターフェース:": "int",
|
|
466
|
-
"インタ:": "int",
|
|
467
453
|
"インターフェイス": "int",
|
|
468
|
-
"インターフェイス:": "int",
|
|
469
454
|
"int": "int",
|
|
470
455
|
"#特別": "special",
|
|
471
456
|
"#special": "special",
|
|
@@ -543,7 +528,6 @@
|
|
|
543
528
|
"NUMBERINGROUP": "numberingroup",
|
|
544
529
|
"NUMINGROUP": "numberingroup",
|
|
545
530
|
"デフォルトソート": "defaultsort",
|
|
546
|
-
"デフォルトソート:": "defaultsort",
|
|
547
531
|
"デフォルトソートキー": "defaultsort",
|
|
548
532
|
"デフォルトカテゴリソート": "defaultsort",
|
|
549
533
|
"DEFAULTSORT": "defaultsort",
|
|
@@ -837,23 +821,30 @@
|
|
|
837
821
|
[],
|
|
838
822
|
{
|
|
839
823
|
"目次非表示": "notoc",
|
|
824
|
+
"__目次非表示__": "notoc",
|
|
840
825
|
"notoc": "notoc",
|
|
841
826
|
"ギャラリー非表示": "nogallery",
|
|
827
|
+
"__ギャラリー非表示__": "nogallery",
|
|
842
828
|
"nogallery": "nogallery",
|
|
843
829
|
"目次強制": "forcetoc",
|
|
830
|
+
"__目次強制__": "forcetoc",
|
|
844
831
|
"forcetoc": "forcetoc",
|
|
845
832
|
"目次": "toc",
|
|
833
|
+
"__目次__": "toc",
|
|
846
834
|
"toc": "toc",
|
|
847
835
|
"節編集非表示": "noeditsection",
|
|
848
836
|
"セクション編集非表示": "noeditsection",
|
|
837
|
+
"__セクション編集非表示__": "noeditsection",
|
|
849
838
|
"noeditsection": "noeditsection",
|
|
850
839
|
"タイトル変換無効": "notitleconvert",
|
|
851
840
|
"タイトルコンバート拒否": "notitleconvert",
|
|
841
|
+
"__タイトルコンバート拒否__": "notitleconvert",
|
|
852
842
|
"タイトル非表示": "notitleconvert",
|
|
853
843
|
"notitleconvert": "notitleconvert",
|
|
854
844
|
"notc": "notitleconvert",
|
|
855
845
|
"内容変換無効": "nocontentconvert",
|
|
856
846
|
"内容変換抑制": "nocontentconvert",
|
|
847
|
+
"__内容変換抑制__": "nocontentconvert",
|
|
857
848
|
"nocontentconvert": "nocontentconvert",
|
|
858
849
|
"nocc": "nocontentconvert",
|
|
859
850
|
"archivedtalk": "archivedtalk",
|
|
@@ -863,10 +854,14 @@
|
|
|
863
854
|
"新しい節リンク": "NEWSECTIONLINK",
|
|
864
855
|
"新しいセクションリンク": "NEWSECTIONLINK",
|
|
865
856
|
"新セクションリンク": "NEWSECTIONLINK",
|
|
857
|
+
"__新しいセクションリンク__": "NEWSECTIONLINK",
|
|
858
|
+
"__新セクションリンク__": "NEWSECTIONLINK",
|
|
866
859
|
"NEWSECTIONLINK": "NEWSECTIONLINK",
|
|
867
860
|
"新しい節リンク非表示": "NONEWSECTIONLINK",
|
|
868
861
|
"新しいセクションリンク非表示": "NONEWSECTIONLINK",
|
|
862
|
+
"__新しいセクションリンク非表示__": "NONEWSECTIONLINK",
|
|
869
863
|
"新セクションリンク非表示": "NONEWSECTIONLINK",
|
|
864
|
+
"__新セクションリンク非表示__": "NONEWSECTIONLINK",
|
|
870
865
|
"NONEWSECTIONLINK": "NONEWSECTIONLINK",
|
|
871
866
|
"カテゴリ非表示": "HIDDENCAT",
|
|
872
867
|
"カテ非表示": "HIDDENCAT",
|
|
@@ -876,12 +871,16 @@
|
|
|
876
871
|
"EXPECTUNUSEDCATEGORY": "EXPECTUNUSEDCATEGORY",
|
|
877
872
|
"EXPECTUNUSEDTEMPLATE": "EXPECTUNUSEDTEMPLATE",
|
|
878
873
|
"インデックス": "INDEX",
|
|
874
|
+
"__インデックス__": "INDEX",
|
|
879
875
|
"INDEX": "INDEX",
|
|
880
876
|
"インデックス拒否": "NOINDEX",
|
|
877
|
+
"__インデックス拒否__": "NOINDEX",
|
|
881
878
|
"NOINDEX": "NOINDEX",
|
|
882
879
|
"静的転送": "STATICREDIRECT",
|
|
883
880
|
"二重転送解消無効": "STATICREDIRECT",
|
|
881
|
+
"__二重転送解消無効__": "STATICREDIRECT",
|
|
884
882
|
"二重転送修正無効": "STATICREDIRECT",
|
|
883
|
+
"__二重転送修正無効__": "STATICREDIRECT",
|
|
885
884
|
"STATICREDIRECT": "STATICREDIRECT",
|
|
886
885
|
"NOGLOBAL": "NOGLOBAL",
|
|
887
886
|
"DISAMBIG": "DISAMBIGUATION",
|
package/dist/base.d.mts
CHANGED
|
@@ -45,7 +45,7 @@ export declare const stages: {
|
|
|
45
45
|
'list-range': number;
|
|
46
46
|
};
|
|
47
47
|
export type Stage = keyof typeof stages;
|
|
48
|
-
export declare const rules: readonly ["bold-header", "format-leakage", "fostered-content", "h1", "illegal-attr", "insecure-style", "invalid-gallery", "invalid-imagemap", "invalid-invoke", "invalid-isbn", "lonely-apos", "lonely-bracket", "lonely-http", "nested-link", "no-arg", "no-duplicate", "no-ignored", "obsolete-attr", "obsolete-tag", "parsing-order", "pipe-like", "table-layout", "tag-like", "unbalanced-header", "unclosed-comment", "unclosed-quote", "unclosed-table", "unescaped", "unknown-page", "unmatched-tag", "unterminated-url", "url-encoding", "var-anchor", "void-ext", "invalid-css"];
|
|
48
|
+
export declare const rules: readonly ["bold-header", "format-leakage", "fostered-content", "h1", "illegal-attr", "insecure-style", "invalid-gallery", "invalid-imagemap", "invalid-invoke", "invalid-isbn", "invalid-url", "lonely-apos", "lonely-bracket", "lonely-http", "nested-link", "no-arg", "no-duplicate", "no-ignored", "obsolete-attr", "obsolete-tag", "parsing-order", "pipe-like", "table-layout", "tag-like", "unbalanced-header", "unclosed-comment", "unclosed-quote", "unclosed-table", "unescaped", "unknown-page", "unmatched-tag", "unterminated-url", "url-encoding", "var-anchor", "void-ext", "invalid-css"];
|
|
49
49
|
export declare namespace LintError {
|
|
50
50
|
type Severity = 'error' | 'warning';
|
|
51
51
|
type Rule = typeof rules[number];
|
package/dist/base.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ export declare const stages: {
|
|
|
45
45
|
'list-range': number;
|
|
46
46
|
};
|
|
47
47
|
export type Stage = keyof typeof stages;
|
|
48
|
-
export declare const rules: readonly ["bold-header", "format-leakage", "fostered-content", "h1", "illegal-attr", "insecure-style", "invalid-gallery", "invalid-imagemap", "invalid-invoke", "invalid-isbn", "lonely-apos", "lonely-bracket", "lonely-http", "nested-link", "no-arg", "no-duplicate", "no-ignored", "obsolete-attr", "obsolete-tag", "parsing-order", "pipe-like", "table-layout", "tag-like", "unbalanced-header", "unclosed-comment", "unclosed-quote", "unclosed-table", "unescaped", "unknown-page", "unmatched-tag", "unterminated-url", "url-encoding", "var-anchor", "void-ext", "invalid-css"];
|
|
48
|
+
export declare const rules: readonly ["bold-header", "format-leakage", "fostered-content", "h1", "illegal-attr", "insecure-style", "invalid-gallery", "invalid-imagemap", "invalid-invoke", "invalid-isbn", "invalid-url", "lonely-apos", "lonely-bracket", "lonely-http", "nested-link", "no-arg", "no-duplicate", "no-ignored", "obsolete-attr", "obsolete-tag", "parsing-order", "pipe-like", "table-layout", "tag-like", "unbalanced-header", "unclosed-comment", "unclosed-quote", "unclosed-table", "unescaped", "unknown-page", "unmatched-tag", "unterminated-url", "url-encoding", "var-anchor", "void-ext", "invalid-css"];
|
|
49
49
|
export declare namespace LintError {
|
|
50
50
|
type Severity = 'error' | 'warning';
|
|
51
51
|
type Rule = typeof rules[number];
|
package/dist/base.js
CHANGED
package/dist/base.mjs
CHANGED
package/dist/bin/config.js
CHANGED
|
@@ -77,7 +77,7 @@ const mw = {
|
|
|
77
77
|
},
|
|
78
78
|
},
|
|
79
79
|
};
|
|
80
|
-
const pkg = "wikilint", version = "2.28.
|
|
80
|
+
const pkg = "wikilint", version = "2.28.1";
|
|
81
81
|
let mwConfig;
|
|
82
82
|
/**
|
|
83
83
|
* Get the parser configuration for a Wikimedia Foundation project.
|
|
@@ -147,12 +147,12 @@ exports.default = async (site, url, user, force, internal) => {
|
|
|
147
147
|
...namespacealiases.filter(({ id }) => filterGadget(id)).map(({ id, alias }) => [alias.toLowerCase(), id]),
|
|
148
148
|
]),
|
|
149
149
|
articlePath: articlepath,
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
Object.assign(
|
|
154
|
-
|
|
155
|
-
|
|
150
|
+
}, { doubleUnderscore, parserFunction, variable } = config;
|
|
151
|
+
doubleUnderscore[0] = [];
|
|
152
|
+
doubleUnderscore[1] = [];
|
|
153
|
+
Object.assign(parserFunction[0], (0, cm_util_1.getConfig)(magicwords, ({ name }) => name === 'msgnw'));
|
|
154
|
+
parserFunction[2] = getAliases(magicwords, new Set(['msg', 'raw']));
|
|
155
|
+
parserFunction[3] = getAliases(magicwords, new Set(['subst', 'safesubst']));
|
|
156
156
|
if (!mwConfig.functionHooks) {
|
|
157
157
|
Object.assign(config, { functionHook: [...functionhooks.map(s => s.toLowerCase()), 'msgnw'] });
|
|
158
158
|
}
|
|
@@ -160,11 +160,11 @@ exports.default = async (site, url, user, force, internal) => {
|
|
|
160
160
|
const { query: { variables } } = await (await fetch(`${url}/api.php?${new URLSearchParams({ ...params, siprop: 'variables' }).toString()}`, headers)).json();
|
|
161
161
|
Object.assign(config, { variable: [...new Set([...variables, '='])] });
|
|
162
162
|
}
|
|
163
|
-
if ('#choose' in
|
|
164
|
-
delete
|
|
165
|
-
const i =
|
|
163
|
+
if ('#choose' in parserFunction[0]) {
|
|
164
|
+
delete parserFunction[0]['choose'];
|
|
165
|
+
const i = variable.indexOf('choose');
|
|
166
166
|
if (i !== -1) {
|
|
167
|
-
|
|
167
|
+
variable.splice(i, 1);
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
// saving configuration
|
package/dist/lib/lintConfig.js
CHANGED
package/dist/lib/lsp.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.LanguageService = exports.isAttr = exports.tasks = void 0;
|
|
7
7
|
const common_1 = require("@bhsd/common");
|
|
8
|
+
const cm_util_1 = require("@bhsd/cm-util");
|
|
8
9
|
const base_1 = require("../base");
|
|
9
10
|
const sharable_1 = require("../util/sharable");
|
|
10
11
|
const lint_1 = require("../util/lint");
|
|
@@ -542,7 +543,9 @@ class LanguageService {
|
|
|
542
543
|
Array.isArray(sensitive) ? /* istanbul ignore next */ sensitive : Object.keys(sensitive),
|
|
543
544
|
other,
|
|
544
545
|
].flat(2),
|
|
545
|
-
switches: doubleUnderscore.slice(0, 2).flat()
|
|
546
|
+
switches: doubleUnderscore.slice(0, 2).flat()
|
|
547
|
+
.filter(cm_util_1.isUnderscore)
|
|
548
|
+
.map(w => `__${w}__`),
|
|
546
549
|
protocols: protocol.split('|'),
|
|
547
550
|
params: Object.keys(img)
|
|
548
551
|
.filter(k => k.endsWith('$1') || !k.includes('$1'))
|
|
@@ -59,8 +59,11 @@ const parseCommentAndExt = (wikitext, config, accum, includeOnly) => {
|
|
|
59
59
|
return str;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
const { ext } = config
|
|
62
|
+
const { ext } = config;
|
|
63
|
+
let newExt = ext, newConfig = config;
|
|
63
64
|
if (ext.includes('translate')) {
|
|
65
|
+
newExt = ext.filter(e => e !== 'translate' && e !== 'tvar');
|
|
66
|
+
newConfig = { ...config, ext: newExt };
|
|
64
67
|
const stack = [];
|
|
65
68
|
wikitext = wikitext.replace(/<nowiki>[\s\S]*?<\/nowiki>/giu, m => {
|
|
66
69
|
stack.push(m);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseHrAndDoubleUnderscore = void 0;
|
|
4
|
+
const cm_util_1 = require("@bhsd/cm-util");
|
|
4
5
|
const hr_1 = require("../src/nowiki/hr");
|
|
5
6
|
const doubleUnderscore_1 = require("../src/nowiki/doubleUnderscore");
|
|
6
7
|
const heading_1 = require("../src/heading");
|
|
@@ -11,10 +12,10 @@ const heading_1 = require("../src/heading");
|
|
|
11
12
|
* @param accum
|
|
12
13
|
*/
|
|
13
14
|
const parseHrAndDoubleUnderscore = ({ firstChild: { data }, type, name }, config, accum) => {
|
|
14
|
-
const { doubleUnderscore: [insensitive, sensitive, aliases] } = config;
|
|
15
|
-
config.insensitiveDoubleUnderscore ??= new Set(insensitive);
|
|
16
|
-
config.sensitiveDoubleUnderscore ??= new Set(sensitive);
|
|
17
|
-
config.regexHrAndDoubleUnderscore ??= new RegExp(`__(${
|
|
15
|
+
const { doubleUnderscore: [insensitive, sensitive, aliases] } = config, all = [...insensitive, ...sensitive];
|
|
16
|
+
config.insensitiveDoubleUnderscore ??= new Set(insensitive.filter(cm_util_1.isUnderscore));
|
|
17
|
+
config.sensitiveDoubleUnderscore ??= new Set(sensitive.filter(cm_util_1.isUnderscore));
|
|
18
|
+
config.regexHrAndDoubleUnderscore ??= new RegExp(`__(${all.filter(cm_util_1.isUnderscore).join('|')})__|_{2}(${all.filter(s => !(0, cm_util_1.isUnderscore)(s)).map(s => s.slice(2, -2)).join('|')})_{2}`, 'giu');
|
|
18
19
|
if (type !== 'root' && (type !== 'ext-inner' || name !== 'poem')) {
|
|
19
20
|
data = `\0${data}`;
|
|
20
21
|
}
|
|
@@ -22,11 +23,11 @@ const parseHrAndDoubleUnderscore = ({ firstChild: { data }, type, name }, config
|
|
|
22
23
|
// @ts-expect-error abstract class
|
|
23
24
|
new hr_1.HrToken(m, config, accum);
|
|
24
25
|
return `${lead}\0${accum.length - 1}r\x7F`;
|
|
25
|
-
}).replace(config.regexHrAndDoubleUnderscore, (m, p1) => {
|
|
26
|
-
const caseSensitive = config.sensitiveDoubleUnderscore.has(
|
|
26
|
+
}).replace(config.regexHrAndDoubleUnderscore, (m, p1, p2) => {
|
|
27
|
+
const key = p1 ?? p2, caseSensitive = config.sensitiveDoubleUnderscore.has(key), lc = key.toLowerCase(), caseInsensitive = config.insensitiveDoubleUnderscore.has(lc);
|
|
27
28
|
if (caseSensitive || caseInsensitive) {
|
|
28
29
|
// @ts-expect-error abstract class
|
|
29
|
-
new doubleUnderscore_1.DoubleUnderscoreToken(
|
|
30
|
+
new doubleUnderscore_1.DoubleUnderscoreToken(key, caseSensitive, Boolean(p2), config, accum);
|
|
30
31
|
return `\0${accum.length - 1}${caseInsensitive && (aliases?.[lc] ?? /* istanbul ignore next */ lc) === 'toc' ? 'u' : 'n'}\x7F`;
|
|
31
32
|
}
|
|
32
33
|
return m;
|
package/dist/src/arg.js
CHANGED
|
@@ -126,9 +126,8 @@ let ArgToken = (() => {
|
|
|
126
126
|
errors.push(...childErrors);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
const rules = ['no-ignored', 'no-arg'], { lintConfig } = index_1.default, { computeEditInfo } = lintConfig, s = rules.map(rule => lintConfig.getSeverity(rule, 'arg'));
|
|
129
|
+
const rules = ['no-ignored', 'no-arg'], { lintConfig } = index_1.default, { computeEditInfo } = lintConfig, rect = new rect_1.BoundingRect(this, start), s = rules.map(rule => lintConfig.getSeverity(rule, 'arg'));
|
|
130
130
|
if (s[0] && rest.length > 0) {
|
|
131
|
-
const rect = new rect_1.BoundingRect(this, start);
|
|
132
131
|
errors.push(...rest.map(child => {
|
|
133
132
|
const e = (0, lint_1.generateForChild)(child, rect, rules[0], 'invisible-triple-braces', s[0]);
|
|
134
133
|
e.startIndex--;
|
|
@@ -143,7 +142,7 @@ let ArgToken = (() => {
|
|
|
143
142
|
}));
|
|
144
143
|
}
|
|
145
144
|
if (s[1] && !this.getAttribute('include')) {
|
|
146
|
-
const e = (0, lint_1.generateForSelf)(this,
|
|
145
|
+
const e = (0, lint_1.generateForSelf)(this, rect, rules[1], 'unexpected-argument', s[1]);
|
|
147
146
|
if (computeEditInfo && argDefault) {
|
|
148
147
|
e.suggestions = [(0, lint_1.fixBy)(e, 'expand', argDefault.text())];
|
|
149
148
|
}
|
package/dist/src/attribute.js
CHANGED
|
@@ -63,6 +63,7 @@ class AttributeToken extends index_2.Token {
|
|
|
63
63
|
valueToken.setAttribute('stage', constants_1.MAX_STAGE - 1);
|
|
64
64
|
}
|
|
65
65
|
else if (tag === 'gallery' && key === 'caption'
|
|
66
|
+
|| tag === 'ref' && key === 'details'
|
|
66
67
|
|| tag === 'choose' && (key === 'before' || key === 'after')) {
|
|
67
68
|
const newConfig = {
|
|
68
69
|
...config,
|
|
@@ -8,12 +8,26 @@ const common_1 = require("@bhsd/common");
|
|
|
8
8
|
const string_1 = require("../util/string");
|
|
9
9
|
const lint_1 = require("../util/lint");
|
|
10
10
|
const constants_1 = require("../util/constants");
|
|
11
|
+
const debug_1 = require("../util/debug");
|
|
11
12
|
const index_1 = __importDefault(require("../index"));
|
|
12
13
|
const index_2 = require("./index");
|
|
13
14
|
const getUrlLikeRegex = (0, common_1.getRegex)(protocol => new RegExp(String.raw `^(?:${protocol}|//|\0\d+m\x7F)`, 'iu'));
|
|
14
15
|
const getUrlRegex = (0, common_1.getRegex)(protocol => new RegExp(String.raw `^(?:(?:${protocol}|//)${string_1.extUrlCharFirst}|\0\d+m\x7F)${string_1.extUrlChar}$`, 'iu'));
|
|
15
16
|
const getSyntaxRegex = (0, common_1.getRegex)(syntax => new RegExp(String.raw `^(\s*(?!\s))${syntax.replace('$1', '(.*)')}${syntax.endsWith('$1') ? '(?=$|\n)' : ''}(\s*)$`, 'u'));
|
|
16
17
|
exports.galleryParams = new Set(['alt', 'link', 'lang', 'page', 'caption']);
|
|
18
|
+
/**
|
|
19
|
+
* 获取网址
|
|
20
|
+
* @param link 外链
|
|
21
|
+
*/
|
|
22
|
+
const getUrl = (link) => {
|
|
23
|
+
if (!link) {
|
|
24
|
+
return link;
|
|
25
|
+
}
|
|
26
|
+
else if (link.startsWith('//')) {
|
|
27
|
+
link = `https:${link}`;
|
|
28
|
+
}
|
|
29
|
+
return new URL(link).href;
|
|
30
|
+
};
|
|
17
31
|
function validate(key, val, config, halfParsed, ext) {
|
|
18
32
|
val = (0, string_1.removeComment)(val).trim();
|
|
19
33
|
let value = val.replace(key === 'link' ? /\0\d+[tq]\x7F/gu : /\0\d+t\x7F/gu, '').trim();
|
|
@@ -58,7 +72,19 @@ class ImageParameterToken extends index_2.Token {
|
|
|
58
72
|
}
|
|
59
73
|
/** image link / 图片链接 */
|
|
60
74
|
get link() {
|
|
61
|
-
|
|
75
|
+
LINT: { // eslint-disable-line no-unused-labels
|
|
76
|
+
if (this.name !== 'link') {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const value = super.text().trim();
|
|
80
|
+
return debug_1.Shadow.run(() => {
|
|
81
|
+
const token = new index_2.Token(value, this.getAttribute('config'));
|
|
82
|
+
token.parseOnce(0, this.getAttribute('include')).parseOnce();
|
|
83
|
+
return /^\0\d+m\x7F/u.test(token.toString())
|
|
84
|
+
? value
|
|
85
|
+
: validate('link', value, this.getAttribute('config'));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
62
88
|
}
|
|
63
89
|
/** @param str 图片参数 */
|
|
64
90
|
constructor(str, extension, config, accum) {
|
|
@@ -134,14 +160,27 @@ class ImageParameterToken extends index_2.Token {
|
|
|
134
160
|
errors.push(e);
|
|
135
161
|
}
|
|
136
162
|
}
|
|
137
|
-
else if (
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
163
|
+
else if (name === 'link') {
|
|
164
|
+
if (typeof link === 'string') {
|
|
165
|
+
const rule = 'invalid-url', s = lintConfig.getSeverity(rule);
|
|
166
|
+
if (s && !this.querySelector('magic-word')) {
|
|
167
|
+
try {
|
|
168
|
+
getUrl(link);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
errors.push((0, lint_1.generateForSelf)(this, { start }, rule, 'invalid-url', s));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else if (link.encoded) {
|
|
176
|
+
const rule = 'url-encoding', s = lintConfig.getSeverity(rule, 'file');
|
|
177
|
+
if (s) {
|
|
178
|
+
const e = (0, lint_1.generateForSelf)(this, { start }, rule, 'unnecessary-encoding', s);
|
|
179
|
+
if (computeEditInfo || fix) {
|
|
180
|
+
e.fix = (0, lint_1.fixByDecode)(e, this);
|
|
181
|
+
}
|
|
182
|
+
errors.push(e);
|
|
143
183
|
}
|
|
144
|
-
errors.push(e);
|
|
145
184
|
}
|
|
146
185
|
}
|
|
147
186
|
return errors;
|
package/dist/src/link/file.js
CHANGED
|
@@ -44,10 +44,7 @@ const explode = (str) => {
|
|
|
44
44
|
* @param args image parameter tokens
|
|
45
45
|
* @param types token types to be filtered
|
|
46
46
|
*/
|
|
47
|
-
const filterArgs = (args, types) => args.filter(({ childNodes }) =>
|
|
48
|
-
const visibleNodes = childNodes.filter(node => node.text().trim());
|
|
49
|
-
return visibleNodes.length !== 1 || !types.has(visibleNodes[0].type);
|
|
50
|
-
});
|
|
47
|
+
const filterArgs = (args, types) => args.filter(({ childNodes }) => !childNodes.some(node => node.text().trim() && types.has(node.type)));
|
|
51
48
|
/**
|
|
52
49
|
* image
|
|
53
50
|
*
|
package/dist/src/magicLink.js
CHANGED
|
@@ -84,7 +84,18 @@ class MagicLinkToken extends index_2.Token {
|
|
|
84
84
|
}
|
|
85
85
|
return errors;
|
|
86
86
|
}
|
|
87
|
-
|
|
87
|
+
let rule = 'invalid-url', severity = lintConfig.getSeverity(rule);
|
|
88
|
+
if (severity && !this.querySelector('magic-word')) {
|
|
89
|
+
try {
|
|
90
|
+
this.getUrl();
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
errors.push((0, lint_1.generateForSelf)(this, rect, rule, 'invalid-url', severity));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const pipe = type === 'ext-link-url';
|
|
97
|
+
rule = 'unterminated-url';
|
|
98
|
+
severity = lintConfig.getSeverity(rule, pipe ? 'pipe' : 'punctuation');
|
|
88
99
|
if (severity) {
|
|
89
100
|
const regex = pipe ? /\|/u : /[,;。:!?()]+/u, child = childNodes.find((c) => c.type === 'text' && regex.test(c.data));
|
|
90
101
|
if (child) {
|
|
@@ -7,11 +7,13 @@ import type { Token } from '../../internal';
|
|
|
7
7
|
* 状态开关
|
|
8
8
|
*/
|
|
9
9
|
export declare abstract class DoubleUnderscoreToken extends NowikiBaseToken {
|
|
10
|
+
#private;
|
|
10
11
|
readonly name: string;
|
|
11
12
|
get type(): 'double-underscore';
|
|
12
13
|
/**
|
|
13
14
|
* @param word 状态开关名
|
|
14
15
|
* @param sensitive 是否固定大小写
|
|
16
|
+
* @param fullWidth 是否为全角下划线
|
|
15
17
|
*/
|
|
16
|
-
constructor(word: string, sensitive: boolean, config: Config, accum?: Token[]);
|
|
18
|
+
constructor(word: string, sensitive: boolean, fullWidth: boolean, config: Config, accum?: Token[]);
|
|
17
19
|
}
|
|
@@ -58,21 +58,25 @@ let DoubleUnderscoreToken = (() => {
|
|
|
58
58
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
59
59
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
60
60
|
}
|
|
61
|
+
#fullWidth;
|
|
61
62
|
get type() {
|
|
62
63
|
return 'double-underscore';
|
|
63
64
|
}
|
|
64
65
|
/**
|
|
65
66
|
* @param word 状态开关名
|
|
66
67
|
* @param sensitive 是否固定大小写
|
|
68
|
+
* @param fullWidth 是否为全角下划线
|
|
67
69
|
*/
|
|
68
|
-
constructor(word, sensitive, config, accum) {
|
|
70
|
+
constructor(word, sensitive, fullWidth, config, accum) {
|
|
69
71
|
super(word, config, accum);
|
|
70
72
|
const lc = word.toLowerCase(), { doubleUnderscore: [, , iAlias, sAlias] } = config;
|
|
71
73
|
this.setAttribute('name', (sensitive ? sAlias?.[word]?.toLowerCase() : iAlias?.[lc]) ?? lc);
|
|
74
|
+
this.#fullWidth = fullWidth;
|
|
72
75
|
}
|
|
73
76
|
/** @private */
|
|
74
77
|
toString() {
|
|
75
|
-
|
|
78
|
+
const underscore = this.#fullWidth ? '__' : '__';
|
|
79
|
+
return underscore + this.innerText + underscore;
|
|
76
80
|
}
|
|
77
81
|
};
|
|
78
82
|
return DoubleUnderscoreToken = _classThis;
|
package/dist/src/tagPair/ext.js
CHANGED
|
@@ -193,9 +193,16 @@ let ExtToken = (() => {
|
|
|
193
193
|
errors.push((0, lint_1.generateForSelf)(this, rect, rule, 'ext-in-html', severity));
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
if (this.name === 'ref') {
|
|
197
|
+
let rule = 'var-anchor', s = lintConfig.getSeverity(rule, 'ref');
|
|
198
|
+
if (s && this.closest('heading-title')) {
|
|
199
|
+
errors.push((0, lint_1.generateForSelf)(this, rect, rule, 'variable-anchor', s));
|
|
200
|
+
}
|
|
201
|
+
rule = 'nested-link';
|
|
202
|
+
s = lintConfig.getSeverity(rule, 'ref');
|
|
203
|
+
if (s && this.closest('link,ext-link-text')) {
|
|
204
|
+
errors.push((0, lint_1.generateForSelf)(this, rect, rule, 'ref-in-link', s));
|
|
205
|
+
}
|
|
199
206
|
}
|
|
200
207
|
return errors;
|
|
201
208
|
}
|
package/i18n/en.json
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"invalid-isbn": "invalid ISBN",
|
|
40
40
|
"invalid-parameter": "invalid parameter of <$1>",
|
|
41
41
|
"invalid-self-closing": "invalid self-closing tag",
|
|
42
|
+
"invalid-url": "invalid URL",
|
|
42
43
|
"invisible-triple-braces": "invisible content inside triple braces",
|
|
43
44
|
"italic-apostrophes": "italic apostrophes",
|
|
44
45
|
"left-bracket": "opening bracket",
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
"prefix": null,
|
|
57
58
|
"pipe-in-link": "additional \"|\" in the link text",
|
|
58
59
|
"pipe-in-table": "additional \"|\" in a table cell",
|
|
60
|
+
"ref-in-link": "<ref> in an internal or external link",
|
|
59
61
|
"remove": null,
|
|
60
62
|
"template-in-link": "template in an internal link target",
|
|
61
63
|
"unbalanced-in-section-header": "unbalanced $1 in a section header",
|
package/i18n/zh-hans.json
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"invalid-isbn": "无效的ISBN",
|
|
40
40
|
"invalid-parameter": "<$1>的无效参数",
|
|
41
41
|
"invalid-self-closing": "无效自封闭标签",
|
|
42
|
+
"invalid-url": "无效的URL",
|
|
42
43
|
"invisible-triple-braces": "三重括号内的不可见部分",
|
|
43
44
|
"italic-apostrophes": "斜体单引号",
|
|
44
45
|
"left-bracket": "左括号",
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
"prefix": "前缀",
|
|
57
58
|
"pipe-in-link": "链接文本中多余的\"|\"",
|
|
58
59
|
"pipe-in-table": "表格单元格中多余的\"|\"",
|
|
60
|
+
"ref-in-link": "内链或外链中的<ref>",
|
|
59
61
|
"remove": "移除",
|
|
60
62
|
"template-in-link": "内链目标包含模板",
|
|
61
63
|
"unbalanced-in-section-header": "章节标题中未成对的$1",
|
package/i18n/zh-hant.json
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"invalid-isbn": "無效的ISBN",
|
|
40
40
|
"invalid-parameter": "<$1>的無效參數",
|
|
41
41
|
"invalid-self-closing": "無效自封閉標籤",
|
|
42
|
+
"invalid-url": "無效的URL",
|
|
42
43
|
"invisible-triple-braces": "三重括號內的不可見部分",
|
|
43
44
|
"italic-apostrophes": "斜體撇號",
|
|
44
45
|
"left-bracket": "左括號",
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
"prefix": "前綴",
|
|
57
58
|
"pipe-in-link": "連結文本中多餘的\"|\"",
|
|
58
59
|
"pipe-in-table": "表格儲存格中多餘的\"|\"",
|
|
60
|
+
"ref-in-link": "內部或外部連結裡的<ref>",
|
|
59
61
|
"remove": "移除",
|
|
60
62
|
"template-in-link": "內部連結目標包含模板",
|
|
61
63
|
"unbalanced-in-section-header": "章節標題裡未成對的$1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wikilint",
|
|
3
|
-
"version": "2.28.
|
|
3
|
+
"version": "2.28.1",
|
|
4
4
|
"description": "A Node.js linter for MediaWiki markup",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mediawiki",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@bhsd/cm-util": "^0.0
|
|
71
|
+
"@bhsd/cm-util": "^0.1.0",
|
|
72
72
|
"@bhsd/common": "^1.0.1",
|
|
73
73
|
"@bhsd/stylelint-util": "^0.1.0",
|
|
74
74
|
"vscode-languageserver-types": "^3.17.5"
|
|
@@ -79,13 +79,13 @@
|
|
|
79
79
|
"entities": "^6.0.0",
|
|
80
80
|
"mathjax": "^3.2.2",
|
|
81
81
|
"minimatch": "^10.0.1",
|
|
82
|
-
"stylelint": "^16.
|
|
82
|
+
"stylelint": "^16.25.0",
|
|
83
83
|
"vscode-css-languageservice": "^6.3.7",
|
|
84
84
|
"vscode-html-languageservice": "^5.5.1",
|
|
85
85
|
"vscode-json-languageservice": "^5.6.1"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
|
-
"@bhsd/code-standard": "^1.
|
|
88
|
+
"@bhsd/code-standard": "^1.2.0",
|
|
89
89
|
"@bhsd/test-util": "^0.1.0",
|
|
90
90
|
"@stylistic/eslint-plugin": "^3.1.0",
|
|
91
91
|
"@types/color-name": "^2.0.0",
|