wikilint 2.27.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.
Files changed (90) hide show
  1. package/config/default.json +15 -16
  2. package/config/jawiki.json +15 -16
  3. package/coverage/badge.svg +1 -1
  4. package/dist/base.d.mts +2 -2
  5. package/dist/base.d.ts +2 -2
  6. package/dist/base.js +1 -0
  7. package/dist/base.mjs +1 -0
  8. package/dist/bin/config.js +11 -11
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +2 -3
  11. package/dist/internal.d.ts +5 -5
  12. package/dist/lib/lintConfig.js +7 -5
  13. package/dist/lib/lsp.d.ts +1 -1
  14. package/dist/lib/lsp.js +5 -2
  15. package/dist/lib/node.js +44 -33
  16. package/dist/mixin/attributesParent.js +16 -14
  17. package/dist/mixin/elementLike.js +45 -43
  18. package/dist/mixin/hidden.js +0 -1
  19. package/dist/mixin/nodeLike.js +2 -2
  20. package/dist/mixin/padded.js +9 -7
  21. package/dist/parser/commentAndExt.js +5 -2
  22. package/dist/parser/hrAndDoubleUnderscore.js +8 -7
  23. package/dist/parser/html.js +1 -1
  24. package/dist/src/arg.js +3 -4
  25. package/dist/src/atom.d.ts +1 -1
  26. package/dist/src/atom.js +0 -1
  27. package/dist/src/attribute.d.ts +2 -4
  28. package/dist/src/attribute.js +7 -2
  29. package/dist/src/attributes.d.ts +3 -4
  30. package/dist/src/attributes.js +5 -3
  31. package/dist/src/commented.d.ts +3 -3
  32. package/dist/src/imageParameter.js +53 -13
  33. package/dist/src/index.js +1 -1
  34. package/dist/src/link/file.js +8 -9
  35. package/dist/src/link/index.js +1 -1
  36. package/dist/src/magicLink.js +12 -1
  37. package/dist/src/multiLine/gallery.d.ts +20 -0
  38. package/dist/src/multiLine/gallery.js +95 -0
  39. package/dist/src/multiLine/imagemap.d.ts +21 -0
  40. package/dist/src/multiLine/imagemap.js +111 -0
  41. package/dist/src/multiLine/index.d.ts +14 -0
  42. package/dist/src/multiLine/index.js +27 -0
  43. package/dist/src/{paramTag → multiLine}/inputbox.d.ts +1 -1
  44. package/dist/src/{paramTag → multiLine}/inputbox.js +2 -2
  45. package/dist/src/multiLine/paramTag.d.ts +16 -0
  46. package/dist/src/multiLine/paramTag.js +67 -0
  47. package/dist/src/nowiki/base.d.ts +1 -1
  48. package/dist/src/nowiki/comment.js +1 -0
  49. package/dist/src/nowiki/commentLine.d.ts +10 -0
  50. package/dist/src/nowiki/commentLine.js +12 -0
  51. package/dist/src/nowiki/doubleUnderscore.d.ts +3 -1
  52. package/dist/src/nowiki/doubleUnderscore.js +6 -2
  53. package/dist/src/nowiki/quote.js +1 -1
  54. package/dist/src/paramLine.d.ts +13 -0
  55. package/dist/src/paramLine.js +15 -0
  56. package/dist/src/parameter.d.ts +0 -1
  57. package/dist/src/parameter.js +1 -0
  58. package/dist/src/pre.d.ts +3 -5
  59. package/dist/src/pre.js +2 -2
  60. package/dist/src/syntax.d.ts +1 -1
  61. package/dist/src/table/base.d.ts +6 -1
  62. package/dist/src/table/base.js +73 -23
  63. package/dist/src/table/index.js +43 -39
  64. package/dist/src/table/td.d.ts +1 -1
  65. package/dist/src/table/td.js +6 -4
  66. package/dist/src/table/tr.d.ts +1 -1
  67. package/dist/src/table/trBase.js +3 -1
  68. package/dist/src/{html.d.ts → tag/html.d.ts} +5 -13
  69. package/dist/src/{html.js → tag/html.js} +11 -71
  70. package/dist/src/tag/index.d.ts +31 -0
  71. package/dist/src/tag/index.js +110 -0
  72. package/dist/src/tag/tvar.d.ts +20 -0
  73. package/dist/src/tag/tvar.js +75 -0
  74. package/dist/src/tagPair/ext.js +14 -7
  75. package/dist/src/tagPair/index.d.ts +1 -1
  76. package/dist/src/tagPair/translate.js +9 -9
  77. package/dist/src/transclude.d.ts +3 -5
  78. package/dist/src/transclude.js +3 -1
  79. package/i18n/en.json +2 -0
  80. package/i18n/zh-hans.json +2 -0
  81. package/i18n/zh-hant.json +2 -0
  82. package/package.json +5 -5
  83. package/dist/mixin/multiLine.d.ts +0 -4
  84. package/dist/mixin/multiLine.js +0 -26
  85. package/dist/src/gallery.d.ts +0 -26
  86. package/dist/src/gallery.js +0 -149
  87. package/dist/src/imagemap.d.ts +0 -27
  88. package/dist/src/imagemap.js +0 -164
  89. package/dist/src/paramTag/index.d.ts +0 -21
  90. package/dist/src/paramTag/index.js +0 -121
@@ -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",
@@ -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",
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="98" height="20" role="img" aria-label="Coverage: 89%"><title>Coverage: 89%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="98" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="63" height="20" fill="#555"/><rect x="63" width="35" height="20" fill="#4c1"/><rect width="98" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">Coverage</text><text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text><text aria-hidden="true" x="795" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">89%</text><text x="795" y="140" transform="scale(.1)" fill="#fff" textLength="250">89%</text></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="98" height="20" role="img" aria-label="Coverage: 90%"><title>Coverage: 90%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="98" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="63" height="20" fill="#555"/><rect x="63" width="35" height="20" fill="#4c1"/><rect width="98" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">Coverage</text><text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text><text aria-hidden="true" x="795" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">90%</text><text x="795" y="140" transform="scale(.1)" fill="#fff" textLength="250">90%</text></g></svg>
package/dist/base.d.mts CHANGED
@@ -16,7 +16,7 @@ export interface Config {
16
16
  readonly articlePath?: string;
17
17
  }
18
18
  export type ConfigData = Omit<Config, 'excludes'>;
19
- export type TokenTypes = 'root' | 'plain' | 'redirect' | 'redirect-syntax' | 'redirect-target' | 'translate' | 'translate-attr' | 'translate-inner' | '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
+ export type TokenTypes = 'root' | 'plain' | 'redirect' | 'redirect-syntax' | 'redirect-target' | 'translate' | 'translate-attr' | 'translate-inner' | 'tvar' | 'tvar-name' | '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';
20
20
  export declare const stages: {
21
21
  redirect: number;
22
22
  onlyinclude: number;
@@ -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
@@ -16,7 +16,7 @@ export interface Config {
16
16
  readonly articlePath?: string;
17
17
  }
18
18
  export type ConfigData = Omit<Config, 'excludes'>;
19
- export type TokenTypes = 'root' | 'plain' | 'redirect' | 'redirect-syntax' | 'redirect-target' | 'translate' | 'translate-attr' | 'translate-inner' | '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
+ export type TokenTypes = 'root' | 'plain' | 'redirect' | 'redirect-syntax' | 'redirect-target' | 'translate' | 'translate-attr' | 'translate-inner' | 'tvar' | 'tvar-name' | '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';
20
20
  export declare const stages: {
21
21
  redirect: number;
22
22
  onlyinclude: number;
@@ -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
@@ -44,6 +44,7 @@ exports.rules = (() => {
44
44
  'invalid-imagemap',
45
45
  'invalid-invoke',
46
46
  'invalid-isbn',
47
+ 'invalid-url',
47
48
  'lonely-apos',
48
49
  'lonely-bracket',
49
50
  'lonely-http',
package/dist/base.mjs CHANGED
@@ -41,6 +41,7 @@ const rules = /* @__PURE__ */ (() => {
41
41
  "invalid-imagemap",
42
42
  "invalid-invoke",
43
43
  "invalid-isbn",
44
+ "invalid-url",
44
45
  "lonely-apos",
45
46
  "lonely-bracket",
46
47
  "lonely-http",
@@ -77,7 +77,7 @@ const mw = {
77
77
  },
78
78
  },
79
79
  };
80
- const pkg = "wikilint", version = "2.27.0";
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
- config.doubleUnderscore[0] = [];
152
- config.doubleUnderscore[1] = [];
153
- Object.assign(config.parserFunction[0], (0, cm_util_1.getConfig)(magicwords, ({ name }) => name === 'msgnw'));
154
- config.parserFunction[2] = getAliases(magicwords, new Set(['msg', 'raw']));
155
- config.parserFunction[3] = getAliases(magicwords, new Set(['subst', 'safesubst']));
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 config.parserFunction[0]) {
164
- delete config.parserFunction[0]['choose'];
165
- const i = config.variable.indexOf('choose');
163
+ if ('#choose' in parserFunction[0]) {
164
+ delete parserFunction[0]['choose'];
165
+ const i = variable.indexOf('choose');
166
166
  if (i !== -1) {
167
- config.variable.splice(i, 1);
167
+ variable.splice(i, 1);
168
168
  }
169
169
  }
170
170
  // saving configuration
package/dist/index.d.ts CHANGED
@@ -49,6 +49,6 @@ declare const Parser: Parser;
49
49
  // @ts-expect-error mixed export styles
50
50
  export = Parser;
51
51
  export default Parser;
52
- export type { Config, ConfigData, LintConfig, LintError, TokenTypes, LanguageService, QuickFixData, };
52
+ export type { Config, ConfigData, LintConfig, LintError, TokenTypes, LanguageService, QuickFixData, Title, };
53
53
  export type * from './internal';
54
54
  declare global { type WikiParserAcceptable = Record<string, any>; }
package/dist/index.js CHANGED
@@ -117,9 +117,8 @@ const Parser = {
117
117
  },
118
118
  /** @implements */
119
119
  msg(msg, arg = '') {
120
- LINT: { // eslint-disable-line no-unused-labels
121
- return msg && (this.i18n[msg] ?? msg).replace('$1', this.msg(arg));
122
- }
120
+ LINT: return msg // eslint-disable-line no-unused-labels
121
+ && (this.i18n[msg] ?? msg).replace('$1', this.msg(arg));
123
122
  },
124
123
  /** @implements */
125
124
  normalizeTitle(title, defaultNs = 0, include, config = Parser.getConfig(), opt) {
@@ -17,7 +17,7 @@ export type { SyntaxToken } from './src/syntax';
17
17
  export type { ParameterToken } from './src/parameter';
18
18
  export type { TranscludeToken } from './src/transclude';
19
19
  export type { HeadingToken } from './src/heading';
20
- export type { HtmlToken } from './src/html';
20
+ export type { HtmlToken } from './src/tag/html';
21
21
  export type { TdToken } from './src/table/td';
22
22
  export type { TrToken } from './src/table/tr';
23
23
  export type { TableToken } from './src/table/index';
@@ -38,11 +38,11 @@ export type { ConverterRuleToken } from './src/converterRule';
38
38
  export type { ConverterToken } from './src/converter';
39
39
  export type { NowikiToken } from './src/nowiki/index';
40
40
  export type { PreToken } from './src/pre';
41
- export type { ParamTagToken } from './src/paramTag/index';
42
- export type { InputboxToken } from './src/paramTag/inputbox';
41
+ export type { ParamTagToken } from './src/multiLine/paramTag';
42
+ export type { InputboxToken } from './src/multiLine/inputbox';
43
43
  export type { NestedToken } from './src/nested';
44
- export type { GalleryToken } from './src/gallery';
44
+ export type { GalleryToken } from './src/multiLine/gallery';
45
45
  export type { ImagemapLinkToken } from './src/imagemapLink';
46
- export type { ImagemapToken } from './src/imagemap';
46
+ export type { ImagemapToken } from './src/multiLine/imagemap';
47
47
  export type { CommentedToken } from './src/commented';
48
48
  export type { TranslateToken } from './src/tagPair/translate';
@@ -69,6 +69,7 @@ const defaultLintRuleConfig = {
69
69
  },
70
70
  ],
71
71
  'invalid-isbn': 2,
72
+ 'invalid-url': 1,
72
73
  'lonely-apos': [
73
74
  1,
74
75
  {
@@ -96,6 +97,7 @@ const defaultLintRuleConfig = {
96
97
  2,
97
98
  {
98
99
  // file: 2,
100
+ // ref: 2,
99
101
  },
100
102
  ],
101
103
  'no-arg': 1,
@@ -172,11 +174,11 @@ const defaultLintRuleConfig = {
172
174
  'unmatched-tag': [
173
175
  1,
174
176
  {
175
- // both: 1,
176
- // closing: 1,
177
- // conditional: 1,
178
- // opening: 1,
179
- // selfClosing: 1,
177
+ both: 2,
178
+ // closing: 1,
179
+ // conditional: 1,
180
+ // opening: 1,
181
+ selfClosing: 2,
180
182
  },
181
183
  ],
182
184
  'unterminated-url': [
package/dist/lib/lsp.d.ts CHANGED
@@ -167,8 +167,8 @@ export declare class LanguageService implements LanguageServiceBase {
167
167
  * 设置目标维基百科
168
168
  * @param wiki Wikipedia URL / 维基百科网址
169
169
  * @param user URI for wiki userpage or email address of the user / 维基用户页面地址或用户的电子邮件地址
170
- * @throws `RangeError` 不是有效的维基百科网址
171
170
  * @since v1.18.1
171
+ * @throws `RangeError` 不是有效的维基百科网址
172
172
  */
173
173
  setTargetWikipedia(wiki: string, user: string): Promise<void>;
174
174
  }
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().map(w => `__${w}__`),
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'))
@@ -1526,8 +1529,8 @@ class LanguageService {
1526
1529
  * 设置目标维基百科
1527
1530
  * @param wiki Wikipedia URL / 维基百科网址
1528
1531
  * @param user URI for wiki userpage or email address of the user / 维基用户页面地址或用户的电子邮件地址
1529
- * @throws `RangeError` 不是有效的维基百科网址
1530
1532
  * @since v1.18.1
1533
+ * @throws `RangeError` 不是有效的维基百科网址
1531
1534
  */
1532
1535
  async setTargetWikipedia(wiki, user) {
1533
1536
  const [site, host] = index_1.default.getWMFSite(wiki);