@hawkeyexl/manni 4.11.0 → 4.12.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/README.md +1 -1
- package/dist/{batch-UAULUMGH.js → batch-KMGZMIAQ.js} +20 -19
- package/dist/build-NO4AWCYG.js +36 -0
- package/dist/calibrate-XQUG5XAK.js +41 -0
- package/dist/capture-5XE3ZMXK.js +38 -0
- package/dist/{check-YEOYBFST.js → check-HTNPLWOV.js} +19 -18
- package/dist/check-RJ45IBA6.js +34 -0
- package/dist/{check-VELUQAUW.js → check-W24BQNCT.js} +35 -34
- package/dist/{check-VELUQAUW.js.map → check-W24BQNCT.js.map} +1 -1
- package/dist/check-WFXSXICD.js +30 -0
- package/dist/{chunk-IGSHYP74.js → chunk-23P7KMJM.js} +4 -4
- package/dist/{chunk-HA6MQMOY.js → chunk-24J7TYPU.js} +6 -6
- package/dist/{chunk-PCS4VJBV.js → chunk-37QJLVS3.js} +9 -9
- package/dist/{chunk-4CK6ZSOK.js → chunk-3P6KCU36.js} +3 -3
- package/dist/{chunk-54F74XR3.js → chunk-5JBVFWVP.js} +19 -19
- package/dist/{chunk-B7XYNRJQ.js → chunk-6KIYVVKL.js} +2 -2
- package/dist/{chunk-J6IDQGJL.js → chunk-6TVH4FI7.js} +469 -85
- package/dist/chunk-6TVH4FI7.js.map +1 -0
- package/dist/{chunk-GDVZ5VII.js → chunk-7A452BPZ.js} +4 -4
- package/dist/{chunk-M42DZCOU.js → chunk-7FCLXEAQ.js} +2 -2
- package/dist/{chunk-2MJ62AYQ.js → chunk-7MCQHTQ5.js} +4 -3
- package/dist/chunk-7MCQHTQ5.js.map +1 -0
- package/dist/{chunk-LBSCW232.js → chunk-7NXPQKSB.js} +7 -7
- package/dist/{chunk-OPXWPJDA.js → chunk-A3TEDWBZ.js} +14 -14
- package/dist/{chunk-BBT6AVUG.js → chunk-BHHXU2D2.js} +2 -2
- package/dist/{chunk-D4N2V43Z.js → chunk-CEI2J42X.js} +13 -7
- package/dist/chunk-CEI2J42X.js.map +1 -0
- package/dist/{chunk-FQXWVS6J.js → chunk-CMMBWHT2.js} +9 -9
- package/dist/{chunk-EIFCP6CZ.js → chunk-CO47QJKZ.js} +2 -2
- package/dist/{chunk-2DRHT73U.js → chunk-CVZMKWZ5.js} +913 -1398
- package/dist/chunk-CVZMKWZ5.js.map +1 -0
- package/dist/{chunk-ADMEPUBT.js → chunk-CXWTNT2O.js} +3 -3
- package/dist/{chunk-LKP7QDFN.js → chunk-DAQTRAP5.js} +4 -4
- package/dist/chunk-DSWKBZWW.js +16 -0
- package/dist/chunk-DSWKBZWW.js.map +1 -0
- package/dist/{chunk-PWBH7DCQ.js → chunk-EESH6COU.js} +4 -4
- package/dist/{chunk-JPQDNYXH.js → chunk-EM67O2ET.js} +8 -2
- package/dist/chunk-EM67O2ET.js.map +1 -0
- package/dist/{chunk-HQR2ZBHW.js → chunk-I2XQRRP7.js} +36 -7
- package/dist/chunk-I2XQRRP7.js.map +1 -0
- package/dist/{chunk-NCPWXHDO.js → chunk-JEUFYSFQ.js} +4 -4
- package/dist/{chunk-2IR4T5PO.js → chunk-JJ4RSDSY.js} +2 -2
- package/dist/chunk-KCB5JCK4.js +2272 -0
- package/dist/chunk-KCB5JCK4.js.map +1 -0
- package/dist/{chunk-VSEBFHAY.js → chunk-KFKL4VTL.js} +11369 -10218
- package/dist/chunk-KFKL4VTL.js.map +1 -0
- package/dist/{chunk-PCQ7ELJH.js → chunk-L2TD7DZB.js} +109 -5
- package/dist/chunk-L2TD7DZB.js.map +1 -0
- package/dist/{chunk-WDWXAYVH.js → chunk-L3RLGGRK.js} +4 -4
- package/dist/{chunk-T7JAOYE5.js → chunk-L75CAZG4.js} +6 -6
- package/dist/{chunk-U7CTFN2J.js → chunk-MYRPMSOX.js} +7 -7
- package/dist/{chunk-Y6DOMTQD.js → chunk-NCF5NQV5.js} +27 -27
- package/dist/chunk-NCF5NQV5.js.map +1 -0
- package/dist/{chunk-WQWKYAAK.js → chunk-NUQF5F5J.js} +2 -2
- package/dist/{chunk-FUCPZVRY.js → chunk-OEN6FBUW.js} +2 -2
- package/dist/{chunk-FBMZJEB3.js → chunk-OKMTUAWO.js} +4 -4
- package/dist/{chunk-QLWC7MKD.js → chunk-OTJOBZJ5.js} +135 -135
- package/dist/chunk-OTJOBZJ5.js.map +1 -0
- package/dist/{chunk-R4WXQIOZ.js → chunk-PCEM5FOZ.js} +3 -3
- package/dist/{chunk-4D5IZSXM.js → chunk-PXNCRGUL.js} +3 -3
- package/dist/chunk-Q2QC5AZB.js +1868 -0
- package/dist/chunk-Q2QC5AZB.js.map +1 -0
- package/dist/{chunk-ODRPL3WB.js → chunk-Q3ODX5PF.js} +2 -2
- package/dist/{chunk-KGEQJ5CC.js → chunk-RRFFUWDL.js} +8 -8
- package/dist/{chunk-NSBXVPZL.js → chunk-S3XUYW5K.js} +17 -17
- package/dist/{chunk-LPIF5LIE.js → chunk-SAU2WQFC.js} +2 -2
- package/dist/{chunk-MSRU4D4P.js → chunk-SFLICIQV.js} +2 -2
- package/dist/{chunk-NGTVREIH.js → chunk-U6IHLEWT.js} +2 -2
- package/dist/{chunk-QCHVR4ZM.js → chunk-VM7VAFJW.js} +33 -7
- package/dist/chunk-VM7VAFJW.js.map +1 -0
- package/dist/{chunk-6HWBRZIN.js → chunk-VQYGLU4C.js} +252 -193
- package/dist/chunk-VQYGLU4C.js.map +1 -0
- package/dist/{chunk-2IAZEB45.js → chunk-WGMFDG6U.js} +229 -821
- package/dist/chunk-WGMFDG6U.js.map +1 -0
- package/dist/{chunk-GV56WGL2.js → chunk-WO4JYWZK.js} +1036 -883
- package/dist/chunk-WO4JYWZK.js.map +1 -0
- package/dist/chunk-XYRUDFKS.js +685 -0
- package/dist/chunk-XYRUDFKS.js.map +1 -0
- package/dist/{chunk-VQK4VHLF.js → chunk-YQV75FIL.js} +2 -2
- package/dist/chunk-YUTVAMWW.js +2 -0
- package/dist/{chunk-RLT5SEML.js → chunk-Z5MZCCTT.js} +6 -6
- package/dist/{chunk-BKVHX6FU.js → chunk-ZIRBFXDW.js} +5 -10
- package/dist/chunk-ZIRBFXDW.js.map +1 -0
- package/dist/{cli-O4ABTN4Z.js → cli-236TGVJG.js} +31 -30
- package/dist/{cli-O4ABTN4Z.js.map → cli-236TGVJG.js.map} +1 -1
- package/dist/{cli-3BTCK4AB.js → cli-3FAPJBEY.js} +27 -26
- package/dist/{cli-3BTCK4AB.js.map → cli-3FAPJBEY.js.map} +1 -1
- package/dist/{cli-JJMOVIKS.js → cli-BS43EVCD.js} +14 -14
- package/dist/{cli-RORDPAPE.js → cli-CMR4FYF6.js} +59 -38
- package/dist/cli-CMR4FYF6.js.map +1 -0
- package/dist/{cli-ONTC5PKT.js → cli-FX53PBQ3.js} +9 -9
- package/dist/{cli-6KZTHWGP.js → cli-IQNJLKSN.js} +37 -36
- package/dist/{cli-6KZTHWGP.js.map → cli-IQNJLKSN.js.map} +1 -1
- package/dist/{cli-4MF37HAQ.js → cli-KOMXVPXX.js} +26 -25
- package/dist/{cli-4MF37HAQ.js.map → cli-KOMXVPXX.js.map} +1 -1
- package/dist/{cli-I62SRH3R.js → cli-NGL63E53.js} +14 -13
- package/dist/{cli-DRMZBZLB.js → cli-QPGS2MR5.js} +43 -42
- package/dist/{cli-DRMZBZLB.js.map → cli-QPGS2MR5.js.map} +1 -1
- package/dist/{cli-VID7PJS3.js → cli-RKQX4TI3.js} +23 -22
- package/dist/{cli-VID7PJS3.js.map → cli-RKQX4TI3.js.map} +1 -1
- package/dist/{cli-VUKMWSSF.js → cli-WNEI5L7P.js} +4 -4
- package/dist/cli.js +19 -13
- package/dist/cli.js.map +1 -1
- package/dist/{config-XDA42RJL.js → config-JJW75SBX.js} +5 -5
- package/dist/docmeta.js +13 -12
- package/dist/docmeta.js.map +1 -1
- package/dist/github-4UR67MEN.js +35 -0
- package/dist/github-UPGKMVVF.js +30 -0
- package/dist/graph/runtime.d.ts +4 -1
- package/dist/graph/runtime.js +20 -9
- package/dist/graph/runtime.js.map +1 -1
- package/dist/{host-6GURH5HE.js → host-YSTYO5DX.js} +3 -3
- package/dist/index.d.ts +192 -26
- package/dist/index.js +129 -124
- package/dist/index.js.map +1 -1
- package/dist/{json-BXY44ED7.js → json-DQIELR36.js} +18 -17
- package/dist/labels-XSTJJMSG.js +73 -0
- package/dist/labels-XSTJJMSG.js.map +1 -0
- package/dist/lint-BLBGGOYM.js +34 -0
- package/dist/list-B3RRRWFQ.js +32 -0
- package/dist/list-ZFRT3JQH.js +35 -0
- package/dist/{page-EV7OUBAU.js → page-5ISEVJR5.js} +18 -16
- package/dist/{prepare-JHJDJB6I.js → prepare-KFXXG2CJ.js} +22 -21
- package/dist/{prepare-JHJDJB6I.js.map → prepare-KFXXG2CJ.js.map} +1 -1
- package/dist/{pretty-Q5Y2PA64.js → pretty-Y7CGQLAF.js} +18 -17
- package/dist/{pretty-SCRK66M5.js → pretty-ZISH3Q4F.js} +18 -17
- package/dist/{provider-527CO4DM.js → provider-LBX4IXGX.js} +3 -3
- package/dist/{release-3D5PK6M7.js → release-VV3UTKE5.js} +3 -3
- package/dist/{reporters-M6LJ2IYU.js → reporters-26H3N2KW.js} +3 -3
- package/dist/{reporters-A5ADKDYR.js → reporters-4STXJJE2.js} +16 -15
- package/dist/{reporters-RBYTASMI.js → reporters-74B4U2GZ.js} +7 -7
- package/dist/run-DVGTKM52.js +37 -0
- package/dist/{term-CQAGNG3Q.js → term-PLJEYJQV.js} +981 -141
- package/dist/term-PLJEYJQV.js.map +1 -0
- package/dist/validate-CJNFQHMD.js +19 -0
- package/package.json +3 -2
- package/plugin/manni/.claude-plugin/plugin.json +1 -1
- package/shapes/graph/shapes-1.1.0.ttl +785 -0
- package/dist/build-QSPNK5AL.js +0 -35
- package/dist/calibrate-KXN4URPM.js +0 -40
- package/dist/capture-JHTSUPUC.js +0 -37
- package/dist/check-MDGXEUWL.js +0 -20
- package/dist/check-WOQRKNZK.js +0 -29
- package/dist/chunk-2DRHT73U.js.map +0 -1
- package/dist/chunk-2IAZEB45.js.map +0 -1
- package/dist/chunk-2MJ62AYQ.js.map +0 -1
- package/dist/chunk-4VBSTXN6.js +0 -392
- package/dist/chunk-4VBSTXN6.js.map +0 -1
- package/dist/chunk-6HWBRZIN.js.map +0 -1
- package/dist/chunk-BKVHX6FU.js.map +0 -1
- package/dist/chunk-D4N2V43Z.js.map +0 -1
- package/dist/chunk-EFW7CAG4.js +0 -387
- package/dist/chunk-EFW7CAG4.js.map +0 -1
- package/dist/chunk-GV56WGL2.js.map +0 -1
- package/dist/chunk-HQR2ZBHW.js.map +0 -1
- package/dist/chunk-J6IDQGJL.js.map +0 -1
- package/dist/chunk-JPQDNYXH.js.map +0 -1
- package/dist/chunk-JROBZ7JA.js +0 -818
- package/dist/chunk-JROBZ7JA.js.map +0 -1
- package/dist/chunk-PCQ7ELJH.js.map +0 -1
- package/dist/chunk-QCHVR4ZM.js.map +0 -1
- package/dist/chunk-QLWC7MKD.js.map +0 -1
- package/dist/chunk-TU2WUBVZ.js +0 -2
- package/dist/chunk-VSEBFHAY.js.map +0 -1
- package/dist/chunk-Y6DOMTQD.js.map +0 -1
- package/dist/cli-RORDPAPE.js.map +0 -1
- package/dist/github-RY3FRA6P.js +0 -29
- package/dist/github-YKQSH7FS.js +0 -34
- package/dist/lint-YJ2L22BW.js +0 -33
- package/dist/list-NSG24VVX.js +0 -31
- package/dist/list-V6EGCSHX.js +0 -34
- package/dist/run-BUE2DDXN.js +0 -36
- package/dist/term-CQAGNG3Q.js.map +0 -1
- package/dist/validate-ZBW44RHT.js +0 -18
- /package/dist/{batch-UAULUMGH.js.map → batch-KMGZMIAQ.js.map} +0 -0
- /package/dist/{build-QSPNK5AL.js.map → build-NO4AWCYG.js.map} +0 -0
- /package/dist/{calibrate-KXN4URPM.js.map → calibrate-XQUG5XAK.js.map} +0 -0
- /package/dist/{capture-JHTSUPUC.js.map → capture-5XE3ZMXK.js.map} +0 -0
- /package/dist/{check-MDGXEUWL.js.map → check-HTNPLWOV.js.map} +0 -0
- /package/dist/{check-WOQRKNZK.js.map → check-RJ45IBA6.js.map} +0 -0
- /package/dist/{check-YEOYBFST.js.map → check-WFXSXICD.js.map} +0 -0
- /package/dist/{chunk-IGSHYP74.js.map → chunk-23P7KMJM.js.map} +0 -0
- /package/dist/{chunk-HA6MQMOY.js.map → chunk-24J7TYPU.js.map} +0 -0
- /package/dist/{chunk-PCS4VJBV.js.map → chunk-37QJLVS3.js.map} +0 -0
- /package/dist/{chunk-4CK6ZSOK.js.map → chunk-3P6KCU36.js.map} +0 -0
- /package/dist/{chunk-54F74XR3.js.map → chunk-5JBVFWVP.js.map} +0 -0
- /package/dist/{chunk-B7XYNRJQ.js.map → chunk-6KIYVVKL.js.map} +0 -0
- /package/dist/{chunk-GDVZ5VII.js.map → chunk-7A452BPZ.js.map} +0 -0
- /package/dist/{chunk-M42DZCOU.js.map → chunk-7FCLXEAQ.js.map} +0 -0
- /package/dist/{chunk-LBSCW232.js.map → chunk-7NXPQKSB.js.map} +0 -0
- /package/dist/{chunk-OPXWPJDA.js.map → chunk-A3TEDWBZ.js.map} +0 -0
- /package/dist/{chunk-BBT6AVUG.js.map → chunk-BHHXU2D2.js.map} +0 -0
- /package/dist/{chunk-FQXWVS6J.js.map → chunk-CMMBWHT2.js.map} +0 -0
- /package/dist/{chunk-EIFCP6CZ.js.map → chunk-CO47QJKZ.js.map} +0 -0
- /package/dist/{chunk-ADMEPUBT.js.map → chunk-CXWTNT2O.js.map} +0 -0
- /package/dist/{chunk-LKP7QDFN.js.map → chunk-DAQTRAP5.js.map} +0 -0
- /package/dist/{chunk-PWBH7DCQ.js.map → chunk-EESH6COU.js.map} +0 -0
- /package/dist/{chunk-NCPWXHDO.js.map → chunk-JEUFYSFQ.js.map} +0 -0
- /package/dist/{chunk-2IR4T5PO.js.map → chunk-JJ4RSDSY.js.map} +0 -0
- /package/dist/{chunk-WDWXAYVH.js.map → chunk-L3RLGGRK.js.map} +0 -0
- /package/dist/{chunk-T7JAOYE5.js.map → chunk-L75CAZG4.js.map} +0 -0
- /package/dist/{chunk-U7CTFN2J.js.map → chunk-MYRPMSOX.js.map} +0 -0
- /package/dist/{chunk-WQWKYAAK.js.map → chunk-NUQF5F5J.js.map} +0 -0
- /package/dist/{chunk-FUCPZVRY.js.map → chunk-OEN6FBUW.js.map} +0 -0
- /package/dist/{chunk-FBMZJEB3.js.map → chunk-OKMTUAWO.js.map} +0 -0
- /package/dist/{chunk-R4WXQIOZ.js.map → chunk-PCEM5FOZ.js.map} +0 -0
- /package/dist/{chunk-4D5IZSXM.js.map → chunk-PXNCRGUL.js.map} +0 -0
- /package/dist/{chunk-ODRPL3WB.js.map → chunk-Q3ODX5PF.js.map} +0 -0
- /package/dist/{chunk-KGEQJ5CC.js.map → chunk-RRFFUWDL.js.map} +0 -0
- /package/dist/{chunk-NSBXVPZL.js.map → chunk-S3XUYW5K.js.map} +0 -0
- /package/dist/{chunk-LPIF5LIE.js.map → chunk-SAU2WQFC.js.map} +0 -0
- /package/dist/{chunk-MSRU4D4P.js.map → chunk-SFLICIQV.js.map} +0 -0
- /package/dist/{chunk-NGTVREIH.js.map → chunk-U6IHLEWT.js.map} +0 -0
- /package/dist/{chunk-VQK4VHLF.js.map → chunk-YQV75FIL.js.map} +0 -0
- /package/dist/{chunk-TU2WUBVZ.js.map → chunk-YUTVAMWW.js.map} +0 -0
- /package/dist/{chunk-RLT5SEML.js.map → chunk-Z5MZCCTT.js.map} +0 -0
- /package/dist/{cli-JJMOVIKS.js.map → cli-BS43EVCD.js.map} +0 -0
- /package/dist/{cli-ONTC5PKT.js.map → cli-FX53PBQ3.js.map} +0 -0
- /package/dist/{cli-I62SRH3R.js.map → cli-NGL63E53.js.map} +0 -0
- /package/dist/{cli-VUKMWSSF.js.map → cli-WNEI5L7P.js.map} +0 -0
- /package/dist/{config-XDA42RJL.js.map → config-JJW75SBX.js.map} +0 -0
- /package/dist/{github-RY3FRA6P.js.map → github-4UR67MEN.js.map} +0 -0
- /package/dist/{github-YKQSH7FS.js.map → github-UPGKMVVF.js.map} +0 -0
- /package/dist/{host-6GURH5HE.js.map → host-YSTYO5DX.js.map} +0 -0
- /package/dist/{json-BXY44ED7.js.map → json-DQIELR36.js.map} +0 -0
- /package/dist/{lint-YJ2L22BW.js.map → lint-BLBGGOYM.js.map} +0 -0
- /package/dist/{list-NSG24VVX.js.map → list-B3RRRWFQ.js.map} +0 -0
- /package/dist/{list-V6EGCSHX.js.map → list-ZFRT3JQH.js.map} +0 -0
- /package/dist/{page-EV7OUBAU.js.map → page-5ISEVJR5.js.map} +0 -0
- /package/dist/{pretty-Q5Y2PA64.js.map → pretty-Y7CGQLAF.js.map} +0 -0
- /package/dist/{pretty-SCRK66M5.js.map → pretty-ZISH3Q4F.js.map} +0 -0
- /package/dist/{provider-527CO4DM.js.map → provider-LBX4IXGX.js.map} +0 -0
- /package/dist/{release-3D5PK6M7.js.map → release-VV3UTKE5.js.map} +0 -0
- /package/dist/{reporters-A5ADKDYR.js.map → reporters-26H3N2KW.js.map} +0 -0
- /package/dist/{reporters-M6LJ2IYU.js.map → reporters-4STXJJE2.js.map} +0 -0
- /package/dist/{reporters-RBYTASMI.js.map → reporters-74B4U2GZ.js.map} +0 -0
- /package/dist/{run-BUE2DDXN.js.map → run-DVGTKM52.js.map} +0 -0
- /package/dist/{validate-ZBW44RHT.js.map → validate-CJNFQHMD.js.map} +0 -0
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
resultFor,
|
|
4
4
|
splitBaselined
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PXNCRGUL.js";
|
|
6
6
|
import {
|
|
7
7
|
errorSite
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-L3RLGGRK.js";
|
|
9
9
|
import {
|
|
10
10
|
escapeWorkflowCommandMessage,
|
|
11
11
|
escapeWorkflowCommandProperty
|
|
@@ -51,4 +51,4 @@ export {
|
|
|
51
51
|
findingMessage,
|
|
52
52
|
renderCheckGithub
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-CXWTNT2O.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
pageMarks,
|
|
11
11
|
pageSchemaSet,
|
|
12
12
|
withValueAt
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-WO4JYWZK.js";
|
|
14
14
|
import {
|
|
15
15
|
DocmetaError,
|
|
16
16
|
escapePointerSegment,
|
|
@@ -20,12 +20,12 @@ import {
|
|
|
20
20
|
rebaseConfigSchemaRefs,
|
|
21
21
|
schemaTrustRoot,
|
|
22
22
|
supportedExtensions
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-KFKL4VTL.js";
|
|
24
24
|
import {
|
|
25
25
|
decryptValue,
|
|
26
26
|
encryptValue,
|
|
27
27
|
isEncryptedValue
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-OTJOBZJ5.js";
|
|
29
29
|
import {
|
|
30
30
|
errorMessage
|
|
31
31
|
} from "./chunk-G3T47CFV.js";
|
|
@@ -195,4 +195,4 @@ export {
|
|
|
195
195
|
metaPageView,
|
|
196
196
|
declaredAt
|
|
197
197
|
};
|
|
198
|
-
//# sourceMappingURL=chunk-
|
|
198
|
+
//# sourceMappingURL=chunk-DAQTRAP5.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/shared/term-labels.ts
|
|
4
|
+
var registered;
|
|
5
|
+
function registerTermLabelSource(source) {
|
|
6
|
+
registered = source;
|
|
7
|
+
}
|
|
8
|
+
function termLabelSource() {
|
|
9
|
+
return registered;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
registerTermLabelSource,
|
|
14
|
+
termLabelSource
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=chunk-DSWKBZWW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/term-labels.ts"],"sourcesContent":["/**\n * Where `meta fill` and `graph build` get the termbase from.\n *\n * The layering runs one way: `term` imports `meta`, and nothing under\n * `src/meta` imports `term`. So the `manni` umbrella registers a source here,\n * one that loads the term domain when asked, and `fill` reads it when one is\n * registered. Under the `docmeta` bin, or a library call, nothing registers\n * one, and `fill` offers no term values.\n */\n\n/**\n * One term, as the family outside the term domain reads it: its preferred\n * label and id, and the facts the graph's concept scheme carries. Relations\n * are written as the term wrote them, a label or an id each.\n */\nexport interface TermLabel {\n label: string;\n id: string;\n /** The term's language tag, when it carries one. */\n language?: string;\n altLabels?: readonly string[];\n hiddenLabels?: readonly string[];\n broader?: readonly string[];\n narrower?: readonly string[];\n related?: readonly string[];\n /** A redirect: this entry's label is another term's, named here. */\n see?: string;\n definition?: string;\n scopeNote?: string;\n /** A code that identifies the concept in another system. */\n notation?: string;\n /** IRIs of concepts in other vocabularies, one list per kind of mapping. */\n exactMatches?: readonly string[];\n closeMatches?: readonly string[];\n broadMatches?: readonly string[];\n narrowMatches?: readonly string[];\n relatedMatches?: readonly string[];\n /** Where the term was read: the file, absolute, and its line. */\n file?: string;\n line?: number;\n}\n\n/** What a run tells the source, so it reads the termbase `term check` reads. */\nexport interface TermLabelRequest {\n /** The directory config discovery starts from. */\n cwd: string;\n /** `-c/--config`. */\n configPath?: string;\n /** `--no-config`. */\n noConfig?: boolean;\n}\n\n/** Loads the termbase's terms for one run. */\nexport type TermLabelSource = (request: TermLabelRequest) => Promise<readonly TermLabel[]>;\n\nlet registered: TermLabelSource | undefined;\n\n/** Register the source, or clear it with `undefined`. The last one registered wins. */\nexport function registerTermLabelSource(source: TermLabelSource | undefined): void {\n registered = source;\n}\n\n/** The registered source, or `undefined` when nothing registered one. */\nexport function termLabelSource(): TermLabelSource | undefined {\n return registered;\n}\n"],"mappings":";;;AAuDA,IAAI;AAGG,SAAS,wBAAwB,QAA2C;AACjF,eAAa;AACf;AAGO,SAAS,kBAA+C;AAC7D,SAAO;AACT;","names":[]}
|
|
@@ -3,16 +3,16 @@ import {
|
|
|
3
3
|
renderCalibration,
|
|
4
4
|
resolveBatchTraces,
|
|
5
5
|
runBatch
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5JBVFWVP.js";
|
|
7
7
|
import {
|
|
8
8
|
discoverConfig,
|
|
9
9
|
labelKey,
|
|
10
10
|
loadLabels
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-OKMTUAWO.js";
|
|
12
12
|
import {
|
|
13
13
|
assertProviderSelection,
|
|
14
14
|
selectProvider
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-U6IHLEWT.js";
|
|
16
16
|
import {
|
|
17
17
|
TracevalsError
|
|
18
18
|
} from "./chunk-UKZNLVJW.js";
|
|
@@ -378,4 +378,4 @@ export {
|
|
|
378
378
|
score,
|
|
379
379
|
runCalibrate
|
|
380
380
|
};
|
|
381
|
-
//# sourceMappingURL=chunk-
|
|
381
|
+
//# sourceMappingURL=chunk-EESH6COU.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
isMultilingual,
|
|
8
8
|
languageOf,
|
|
9
9
|
plural
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6TVH4FI7.js";
|
|
11
11
|
import {
|
|
12
12
|
palette
|
|
13
13
|
} from "./chunk-RNVYGWIC.js";
|
|
@@ -68,6 +68,12 @@ var GET_FIELDS = [
|
|
|
68
68
|
"see",
|
|
69
69
|
"abstract",
|
|
70
70
|
"scope-note",
|
|
71
|
+
"notation",
|
|
72
|
+
"exact-matches",
|
|
73
|
+
"close-matches",
|
|
74
|
+
"broad-matches",
|
|
75
|
+
"narrow-matches",
|
|
76
|
+
"related-matches",
|
|
71
77
|
"subject-field",
|
|
72
78
|
"contexts",
|
|
73
79
|
"notes",
|
|
@@ -330,4 +336,4 @@ export {
|
|
|
330
336
|
renderValeWiring,
|
|
331
337
|
renderFormatsPretty
|
|
332
338
|
};
|
|
333
|
-
//# sourceMappingURL=chunk-
|
|
339
|
+
//# sourceMappingURL=chunk-EM67O2ET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/term/reporters/pretty.ts"],"sourcesContent":["/**\n * Human output for every `manni term` command, in the shapes the ladder of\n * proposal 0052 prints. Columns are padded to their widest value; prose wraps\n * to 80 columns under its own column, so a long definition or message never\n * runs back to the left edge.\n */\nimport { palette, type Colors } from \"../../shared/color.js\";\nimport type { TermReport } from \"../commands/findings.js\";\nimport type { FormatRow } from \"../commands/formats.js\";\nimport { displayPath, plural } from \"../commands/run.js\";\nimport type { ValeWiring, WriteReport } from \"../commands/write.js\";\nimport type { Severity } from \"../../shared/severity.js\";\nimport { isMultilingual, languageOf } from \"../core/writers/render-util.js\";\nimport {\n TERM_AUX_FIELDS,\n TERM_DESIGNATION_FIELDS,\n TERM_FIELDS,\n type Term,\n type TermDesignation,\n type TermField,\n type TermFinding,\n type TermLink,\n type TermRecord,\n type TermTransaction,\n} from \"../types.js\";\n\nconst WIDTH = 80;\n\n/** Words packed into lines of at most `width` characters; a longer word stands alone. */\nfunction wrapWords(text: string, width: number): string[] {\n const lines: string[] = [];\n let line = \"\";\n for (const word of text.split(/\\s+/).filter((w) => w !== \"\")) {\n if (line === \"\") line = word;\n else if (line.length + 1 + word.length <= width) line = `${line} ${word}`;\n else {\n lines.push(line);\n line = word;\n }\n }\n if (line !== \"\") lines.push(line);\n return lines.length === 0 ? [\"\"] : lines;\n}\n\n/** Sentences packed into lines of at most `width`; a message that fits stays whole. */\nfunction wrapSentences(text: string, width: number): string[] {\n if (text.length <= width) return [text];\n const lines: string[] = [];\n let line = \"\";\n for (const sentence of text.split(/(?<=\\.)\\s+(?=\\S)/)) {\n if (line === \"\") line = sentence;\n else if (line.length + 1 + sentence.length <= width) line = `${line} ${sentence}`;\n else {\n lines.push(line);\n line = sentence;\n }\n }\n if (line !== \"\") lines.push(line);\n return lines;\n}\n\nfunction hanging(first: string, lines: readonly string[]): string[] {\n const indent = \" \".repeat(first.length);\n return lines.map((line, i) => `${i === 0 ? first : indent}${line}`.trimEnd());\n}\n\n// ---------------------------------------------------------------------------\n// list\n\nexport function renderListPretty(terms: readonly Term[]): string {\n const idWidth = Math.max(0, ...terms.map((t) => t.id.length)) + 3;\n const labelWidth = Math.max(0, ...terms.map((t) => t.record.label.length)) + 3;\n // The language column appears only when it tells the rows apart.\n const multilingual = isMultilingual(terms);\n const languageWidth = Math.max(0, ...terms.map((t) => languageOf(t).length)) + 3;\n const rows = terms.map((t) => {\n const language = multilingual ? languageOf(t).padEnd(languageWidth) : \"\";\n const alts = (t.record[\"alt-labels\"] ?? []).join(\", \");\n return `${t.id.padEnd(idWidth)}${language}${t.record.label.padEnd(labelWidth)}${alts}`.trimEnd();\n });\n return [...rows, plural(terms.length, \"term\")].join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// get\n\n/** A root field `get` shows as one row of text. */\ntype RowField = Exclude<TermField, \"label\" | \"concept-entry\" | \"designations\" | \"tbx-markup\" | \"tbx-elements\">;\n\n/** The order `get` shows root fields in: names first, then what they mean, the definition last. */\nconst GET_FIELDS: readonly RowField[] = [\n \"alt-labels\",\n \"hidden-labels\",\n \"broader\",\n \"narrower\",\n \"related-terms\",\n \"see\",\n \"abstract\",\n \"scope-note\",\n \"notation\",\n \"exact-matches\",\n \"close-matches\",\n \"broad-matches\",\n \"narrow-matches\",\n \"related-matches\",\n \"subject-field\",\n \"contexts\",\n \"notes\",\n \"sources\",\n \"customer-subsets\",\n \"project-subsets\",\n \"cross-references\",\n \"external-cross-references\",\n \"graphics\",\n \"transactions\",\n \"definition\",\n];\n\n/** The aux fields a block's line shows; its `tbx-elements` are counted on a row of their own. */\nconst SHOWN_AUX = TERM_AUX_FIELDS.filter((field) => field !== \"tbx-elements\");\n\n/** The key column's narrowest width: the widest 1.0.0 field, `related-terms`, plus two. */\nconst MIN_KEY_WIDTH = 15;\n\nfunction linkText(link: TermLink): string {\n return link.text === undefined ? link.target : `${link.text} (${link.target})`;\n}\n\nfunction transactionText(transaction: TermTransaction): string {\n return [transaction.type, transaction.date, transaction.responsibility].filter((part) => part !== undefined).join(\" \");\n}\n\n/** One value as `get` prints it: a list joined with commas, a link as its text and target, a transaction as its parts. */\nfunction valueText(value: string | readonly (string | TermLink | TermTransaction)[]): string {\n if (typeof value === \"string\") return value;\n return value\n .map((item) => (typeof item === \"string\" ? item : \"target\" in item ? linkText(item) : transactionText(item)))\n .join(\", \");\n}\n\n/** `progressive lens: part-of-speech noun, term-type fullForm`, or `undefined` when it says nothing but its term. */\nfunction designationLine(designation: TermDesignation): string | undefined {\n const parts: string[] = [];\n for (const key of TERM_DESIGNATION_FIELDS) {\n const value = designation[key];\n if (value !== undefined) parts.push(`${key} ${value}`);\n }\n const comments = designation[\"transfer-comments\"];\n if (comments !== undefined) parts.push(`transfer-comments ${valueText(comments)}`);\n for (const key of SHOWN_AUX) {\n const value = designation[key];\n if (value !== undefined) parts.push(`${key} ${valueText(value)}`);\n }\n return parts.length === 0 ? undefined : `${designation.term}: ${parts.join(\", \")}`;\n}\n\n/** `1 at the root, 1 on PAL, 1 in concept-entry`: where the record keeps elements no named field maps. */\nfunction passThroughText(record: TermRecord): string | undefined {\n const parts: string[] = [];\n const count = (items: readonly string[] | undefined, where: string): void => {\n if (items !== undefined) parts.push(`${String(items.length)} ${where}`);\n };\n count(record[\"tbx-elements\"], \"at the root\");\n for (const designation of record.designations ?? []) count(designation[\"tbx-elements\"], `on ${designation.term}`);\n count(record[\"concept-entry\"]?.[\"tbx-elements\"], \"in concept-entry\");\n return parts.length === 0 ? undefined : parts.join(\", \");\n}\n\nexport interface GetPrettyOptions {\n color: boolean;\n cwd?: string;\n /** The entry in its other languages: the set's other terms with the same id. */\n others?: readonly Term[];\n}\n\nexport function renderGetPretty(term: Term, opts: GetPrettyOptions): string {\n const c = palette(opts.color);\n const { record } = term;\n const where = `${displayPath(term.location.file, opts.cwd ?? process.cwd())}:${String(term.location.line)}`;\n\n // Each row is a key and its lines, collected first so the key column fits the widest key shown.\n const rows: [string, string[]][] = [[\"id\", [term.id]]];\n if (term.language !== undefined) rows.push([\"language\", [term.language]]);\n for (const field of GET_FIELDS) {\n const value = record[field];\n if (value !== undefined) rows.push([field, [valueText(value)]]);\n }\n const concept = record[\"concept-entry\"];\n if (concept !== undefined) {\n const lines = SHOWN_AUX.flatMap((key) => {\n const value = concept[key];\n return value === undefined ? [] : [`${key}: ${valueText(value)}`];\n });\n if (lines.length > 0) rows.push([\"concept-entry\", lines]);\n }\n const designations = (record.designations ?? []).map(designationLine).filter((line) => line !== undefined);\n if (designations.length > 0) rows.push([\"designations\", designations]);\n if (record[\"tbx-markup\"] !== undefined) rows.push([\"tbx-markup\", record[\"tbx-markup\"]]);\n const passThrough = passThroughText(record);\n if (passThrough !== undefined) rows.push([\"tbx-elements\", [passThrough]]);\n const others = opts.others ?? [];\n if (others.length > 0) {\n rows.push([\"other languages\", [others.map((t) => `${languageOf(t)} (${t.record.label})`).join(\", \")]]);\n }\n\n const keyWidth = Math.max(MIN_KEY_WIDTH, ...rows.map(([key]) => key.length + 2));\n const lines = [`${c.bold(record.label.padEnd(40))}${c.dim(where)}`];\n for (const [key, values] of rows) {\n values.forEach((value, i) => {\n const prefix = ` ${(i === 0 ? key : \"\").padEnd(keyWidth)}`;\n lines.push(...hanging(prefix, wrapWords(value, WIDTH - prefix.length)));\n });\n }\n return lines.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// check and lint\n\nconst RULE_WIDTH = 32;\n\nfunction severityText(c: Colors, severity: Severity): string {\n const padded = severity.padEnd(6);\n if (severity === \"error\") return c.red(padded);\n if (severity === \"warning\") return c.yellow(padded);\n return c.cyan(padded);\n}\n\nfunction counts(findings: readonly TermFinding[]): string {\n const parts: string[] = [];\n const n = (severity: Severity): number => findings.filter((f) => f.severity === severity).length;\n if (n(\"error\") > 0) parts.push(plural(n(\"error\"), \"error\"));\n if (n(\"warning\") > 0) parts.push(plural(n(\"warning\"), \"warning\"));\n if (n(\"notice\") > 0) parts.push(plural(n(\"notice\"), \"notice\"));\n return parts.join(\", \");\n}\n\nexport interface FindingsPrettyOptions {\n color: boolean;\n /** Whether the clean line counts references: `check` reads them, `lint` does not. */\n references?: boolean;\n}\n\nexport function renderFindingsPretty(report: TermReport, opts: FindingsPrettyOptions): string {\n const c = palette(opts.color);\n const { baseline } = report;\n if (baseline?.written === true) {\n return `${c.green(\"✓\")} ${plural(report.found, \"finding\")} recorded in ${baseline.path}`;\n }\n const baselined = baseline !== undefined && baseline.suppressed > 0 ? `, ${String(baseline.suppressed)} baselined` : \"\";\n const terms = plural(report.terms, \"term\");\n\n if (report.findings.length === 0) {\n const references = opts.references === false ? \"\" : `, ${plural(report.references, \"reference\")}`;\n return `${c.green(\"✓\")} ${terms}${references}, no findings${baselined}`;\n }\n\n const ruleWidth = Math.max(RULE_WIDTH, ...report.findings.map((f) => f.ruleId.length + 2));\n const lines: string[] = [];\n let group: string | undefined;\n for (const finding of report.findings) {\n const file = displayPath(finding.file, report.cwd);\n const header = finding.line === undefined ? file : `${file}:${String(finding.line)}`;\n if (header !== group) {\n lines.push(c.bold(header));\n group = header;\n }\n const prefixWidth = 2 + 6 + 1 + ruleWidth;\n const message = wrapSentences(finding.message, WIDTH - prefixWidth);\n const indent = \" \".repeat(prefixWidth);\n message.forEach((text, i) => {\n lines.push(\n i === 0 ? ` ${severityText(c, finding.severity)} ${finding.ruleId.padEnd(ruleWidth)}${text}` : `${indent}${text}`,\n );\n });\n }\n lines.push(\"\", `${counts(report.findings)} in ${terms}${baselined}`);\n return lines.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// write\n\nfunction changeLine(change: WriteReport[\"changes\"][number]): string {\n switch (change.action) {\n case \"create\":\n return `${change.path} would be created`;\n case \"change\":\n return `${change.path} would change`;\n case \"remove\":\n return `${change.path} would be removed`;\n }\n}\n\n/** A generated Vale rule file's `swap:` entries. */\nfunction swapCount(content: string): number {\n const lines = content.split(/\\r?\\n/);\n const start = lines.indexOf(\"swap:\");\n if (start === -1) return 0;\n return lines.slice(start + 1).filter((line) => line.startsWith(\" \")).length;\n}\n\nfunction baseName(path: string): string {\n return path.split(/[\\\\/]/).pop() ?? path;\n}\n\nconst CASING_RULES = new Set([\"Casing.yml\", \"Lowercase.yml\", \"SentenceStart.yml\"]);\n\n/** What each file of a Vale style holds: rule files by name, the acronym files together. */\nfunction valeLines(report: WriteReport): string[] {\n const rows: [string, string][] = [];\n const acronyms: string[] = [];\n for (const file of report.files) {\n const name = baseName(file.path);\n // A casing rule swaps each label and alt-label, so what it counts is labels.\n if (CASING_RULES.has(name)) rows.push([name, plural(swapCount(file.content), \"label\")]);\n else if (name === \"Deprecated.yml\") rows.push([name, plural(swapCount(file.content), \"swap\")]);\n else acronyms.push(name);\n }\n if (acronyms.length > 0) rows.push([acronyms.join(\", \"), plural(acronyms.length, \"acronym\")]);\n const width = Math.max(0, ...rows.map(([name]) => name.length)) + 2;\n return rows.map(([name, what]) => ` ${name.padEnd(width)}${what}`);\n}\n\n/** ` dropped from a definition list: scope-note on 3 terms, hidden-labels on 12`. */\nfunction droppedLine(report: WriteReport): string | undefined {\n if (report.dropped.length === 0) return undefined;\n // One entry per term per field, so counting entries counts terms: an id in two languages is two terms.\n const counts = new Map<TermField, number>();\n for (const { field } of report.dropped) counts.set(field, (counts.get(field) ?? 0) + 1);\n const fields = [...counts.entries()]\n .map(([field, n]) => ({ field, n }))\n .sort((a, b) => a.n - b.n || TERM_FIELDS.indexOf(a.field) - TERM_FIELDS.indexOf(b.field));\n const parts = fields.map(({ field, n }, i) => `${field} on ${i === 0 ? plural(n, \"term\") : String(n)}`);\n return ` dropped from ${report.droppedFrom ?? report.format ?? \"the render\"}: ${parts.join(\", \")}`;\n}\n\n/** ` dropped from tbx3: the headers of glossary.tbx, <stdin>`. */\nfunction droppedHeadersLine(report: WriteReport): string | undefined {\n const files = report.droppedHeaders ?? [];\n if (files.length === 0) return undefined;\n const what = files.length === 1 ? \"the header of\" : \"the headers of\";\n return ` dropped from ${report.droppedFrom ?? report.format ?? \"the render\"}: ${what} ${files.join(\", \")}`;\n}\n\n/** ` skipped 2 terms a definition list cannot read without a definition: varifocal, bifocal`. */\nfunction skippedLine(report: WriteReport): string | undefined {\n if (report.skipped.length === 0) return undefined;\n const construct = report.droppedFrom ?? report.format ?? \"the render\";\n const count = plural(report.skipped.length, \"term\");\n return ` skipped ${count} ${construct} cannot read without a definition: ${report.skipped.join(\", \")}`;\n}\n\n/** ` skipped 2 terms in another language than en: spectacle-lens (de), progressive-lens (de)`. */\nfunction otherLanguagesLine(report: WriteReport): string | undefined {\n const other = report.otherLanguages;\n if (other === undefined || other.terms.length === 0) return undefined;\n const terms = other.terms.map(({ id, language }) => `${id} (${language})`).join(\", \");\n return ` skipped ${plural(other.terms.length, \"term\")} in another language than ${other.written}: ${terms}`;\n}\n\n/**\n * ` kept the first language's value where languages differ: concept-entry.subject-field on 1 concept`.\n * Fields are counted in concepts, fewest first, as the dropped line counts terms.\n */\nfunction conflictsLine(report: WriteReport): string | undefined {\n const conflicts = report.conflicts ?? [];\n if (conflicts.length === 0) return undefined;\n const ids = new Map<string, Set<string>>();\n for (const { id, field } of conflicts) {\n const set = ids.get(field) ?? new Set<string>();\n set.add(id);\n ids.set(field, set);\n }\n // A stable sort keeps fields of one count in the order they were first reported.\n const fields = [...ids.entries()].map(([field, set]) => ({ field, n: set.size })).sort((a, b) => a.n - b.n);\n const parts = fields.map(({ field, n }, i) => `${field} on ${i === 0 ? plural(n, \"concept\") : String(n)}`);\n return ` kept the first language's value where languages differ: ${parts.join(\", \")}`;\n}\n\n/** The dropped, dropped-header, skipped and conflict lines, which a write and a dry run print alike. */\nfunction renderNotes(report: WriteReport): string[] {\n return [\n droppedLine(report),\n droppedHeadersLine(report),\n skippedLine(report),\n otherLanguagesLine(report),\n conflictsLine(report),\n ].filter(\n (line) => line !== undefined,\n );\n}\n\nfunction unchangedLine(report: WriteReport): string {\n return report.mode === \"in-place\" ? \"Nothing to write\" : `${report.target ?? \"\"} is up to date`;\n}\n\nexport function renderWritePretty(report: WriteReport): string {\n if (report.check) {\n return report.changes.length > 0 ? report.changes.map(changeLine).join(\"\\n\") : unchangedLine(report);\n }\n if (report.dryRun) {\n const changes = report.changes.length > 0 ? report.changes.map(changeLine) : [unchangedLine(report)];\n return [...changes, ...renderNotes(report)].join(\"\\n\");\n }\n if (report.mode === \"in-place\") {\n const wrote = report.changes.length === 0 ? \"Nothing to write\" : `Wrote ${plural(report.changes.length, \"file\")}`;\n return [wrote, ...renderNotes(report)].join(\"\\n\");\n }\n const each = report.shape === \"directory\" && report.format !== \"vale\" ? \", one file each\" : \"\";\n const written = report.terms - report.skipped.length - (report.otherLanguages?.terms.length ?? 0);\n const lines = [`Wrote ${plural(written, \"term\")} to ${report.target ?? \"\"}${each}`];\n if (report.format === \"vale\") lines.push(...valeLines(report));\n lines.push(...renderNotes(report));\n return lines.join(\"\\n\");\n}\n\n/** The notice `write -f vale` prints when no section of Vale's config uses the style, or there is no section. */\nexport function renderValeWiring(wiring: ValeWiring): string {\n return [\n wiring.addSection\n ? `notice: ${wiring.rootIni} has no section with BasedOnStyles. Add one that uses the Terms style:`\n : `notice: no section of ${wiring.rootIni} uses the Terms style. Add it to BasedOnStyles:`,\n ` [${wiring.section}]`,\n ` BasedOnStyles = ${wiring.styles.join(\", \")}`,\n ].join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// formats\n\nexport function renderFormatsPretty(rows: readonly FormatRow[]): string {\n const formatWidth = Math.max(0, ...rows.map((r) => r.format.length)) + 3;\n const labelWidth = Math.max(0, ...rows.map((r) => r.label.length)) + 3;\n return rows\n .map((r) =>\n `${r.format.padEnd(formatWidth)}${r.label.padEnd(labelWidth)}${r.read ? \"read \" : \" \"}${r.write ? \"write\" : \"\"}`.trimEnd(),\n )\n .join(\"\\n\");\n}\n"],"mappings":"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","names":["lines","counts"]}
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
askSampleQuestions,
|
|
3
4
|
bundledShapesPath,
|
|
4
5
|
compactIri,
|
|
6
|
+
compareFindings,
|
|
5
7
|
loadGraph,
|
|
6
8
|
parseGraph,
|
|
9
|
+
renderQuestionSummary,
|
|
7
10
|
validateGraph
|
|
8
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KCB5JCK4.js";
|
|
9
12
|
import {
|
|
13
|
+
documentBase,
|
|
10
14
|
loadRunConfig
|
|
11
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-Q2QC5AZB.js";
|
|
12
16
|
import {
|
|
13
17
|
escapeWorkflowCommandMessage,
|
|
14
18
|
escapeWorkflowCommandProperty
|
|
15
19
|
} from "./chunk-MNH7QO4Z.js";
|
|
16
20
|
|
|
17
21
|
// src/graph/commands/check.ts
|
|
18
|
-
import { resolve } from "node:path";
|
|
22
|
+
import { dirname, resolve } from "node:path";
|
|
19
23
|
|
|
20
24
|
// src/graph/reporters/github.ts
|
|
21
25
|
function renderCheckGithub(report) {
|
|
@@ -41,10 +45,28 @@ async function runCheck(opts = {}) {
|
|
|
41
45
|
},
|
|
42
46
|
cwd
|
|
43
47
|
);
|
|
44
|
-
const
|
|
48
|
+
const graphPath = resolve(cwd, opts.graph ?? config.out);
|
|
49
|
+
const store = opts.turtle === void 0 ? loadGraph(graphPath) : parseGraph(opts.turtle, "the built graph");
|
|
45
50
|
const shapesInput = opts.shapes && opts.shapes.length > 0 ? opts.shapes : config.check.shapes;
|
|
46
51
|
const shapes = shapesInput.length > 0 ? shapesInput.map((p) => resolve(cwd, p)) : [bundledShapesPath(import.meta.url)];
|
|
47
|
-
const
|
|
52
|
+
const asked = await askSampleQuestions(
|
|
53
|
+
store,
|
|
54
|
+
config.check.questions,
|
|
55
|
+
documentBase(config, {}, cwd),
|
|
56
|
+
dirname(graphPath),
|
|
57
|
+
{
|
|
58
|
+
source: {
|
|
59
|
+
...opts.config === void 0 ? {} : { configPath: opts.config },
|
|
60
|
+
...opts.noConfig === void 0 ? {} : { noConfig: opts.noConfig }
|
|
61
|
+
},
|
|
62
|
+
cwd
|
|
63
|
+
},
|
|
64
|
+
config.questionFiles,
|
|
65
|
+
config.configDir
|
|
66
|
+
);
|
|
67
|
+
const findings = [...await validateGraph(store, shapes), ...asked.findings].sort(
|
|
68
|
+
compareFindings
|
|
69
|
+
);
|
|
48
70
|
const count = (severity) => findings.filter((f) => f.severity === severity).length;
|
|
49
71
|
const errors = count("error");
|
|
50
72
|
return {
|
|
@@ -53,6 +75,7 @@ async function runCheck(opts = {}) {
|
|
|
53
75
|
warnings: count("warning"),
|
|
54
76
|
notices: count("notice"),
|
|
55
77
|
shapes,
|
|
78
|
+
...asked.summary ? { questions: asked.summary } : {},
|
|
56
79
|
// Only an `error` fails the run; a warning and a notice are reported and
|
|
57
80
|
// pass, as they were when they were called violations and warnings.
|
|
58
81
|
exitCode: errors > 0 ? 1 : 0
|
|
@@ -66,7 +89,12 @@ function renderCheck(report, format) {
|
|
|
66
89
|
const { exitCode: _exitCode, ...rest } = report;
|
|
67
90
|
return JSON.stringify(rest, null, 2);
|
|
68
91
|
}
|
|
69
|
-
|
|
92
|
+
const summary = report.questions ? renderQuestionSummary(report.questions) : [];
|
|
93
|
+
if (format === "github") {
|
|
94
|
+
const annotations = renderCheckGithub(report);
|
|
95
|
+
if (summary.length === 0) return annotations;
|
|
96
|
+
return [...annotations === "" ? [] : [annotations, ""], ...summary].join("\n");
|
|
97
|
+
}
|
|
70
98
|
const lines = [];
|
|
71
99
|
for (const f of report.findings) {
|
|
72
100
|
const where = f.docs.length > 0 ? ` [${f.docs.join(", ")}]` : "";
|
|
@@ -75,6 +103,7 @@ function renderCheck(report, format) {
|
|
|
75
103
|
);
|
|
76
104
|
}
|
|
77
105
|
if (report.findings.length > 0) lines.push("");
|
|
106
|
+
if (summary.length > 0) lines.push(...summary, "");
|
|
78
107
|
lines.push(
|
|
79
108
|
`${plural(report.errors, "error")}, ${plural(report.warnings, "warning")}, ${plural(report.notices, "notice")}`
|
|
80
109
|
);
|
|
@@ -85,4 +114,4 @@ export {
|
|
|
85
114
|
runCheck,
|
|
86
115
|
renderCheck
|
|
87
116
|
};
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
117
|
+
//# sourceMappingURL=chunk-I2XQRRP7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/graph/commands/check.ts","../src/graph/reporters/github.ts"],"sourcesContent":["/**\n * `manni graph check` — graph-level validation: run the published SHACL shapes\n * (plus the TS-side SKOS integrity checks) over the built graph and report\n * findings with the doc paths responsible. Each page's sample questions are\n * asked too (proposal 0086 §7), with each golden-set file's, and the question\n * set's health is summed up after the findings (proposal 0087). Errors exit 1; warnings and notices are\n * reported but pass.\n */\nimport { dirname, resolve } from \"node:path\";\nimport type { Severity } from \"../../shared/severity.js\";\nimport { loadRunConfig } from \"../core/config.js\";\nimport { loadGraph, compactIri, parseGraph } from \"../core/load.js\";\nimport { documentBase } from \"../core/discover.js\";\nimport { bundledShapesPath } from \"../core/pkg.js\";\nimport {\n compareFindings,\n validateGraph,\n type CheckFinding,\n} from \"../core/shacl.js\";\nimport {\n askSampleQuestions,\n renderQuestionSummary,\n type QuestionSummary,\n} from \"./questions.js\";\nimport { renderCheckGithub } from \"../reporters/github.js\";\nimport type { CheckFormat } from \"../reporters/index.js\";\n\nexport interface CheckOptions {\n config?: string;\n /** `--no-config`: skip discovery and run on the built-in defaults. */\n noConfig?: boolean;\n /** Graph .ttl path (default: config `out`). */\n graph?: string;\n /** Shapes .ttl paths (default: config `check.shapes`, then bundled). */\n shapes?: string[];\n cwd?: string;\n /**\n * The graph as Turtle, in place of reading `graph`: what `buildGraph`\n * returns, so `manni check` checks a build it never wrote.\n */\n turtle?: string;\n}\n\nexport interface CheckReport {\n findings: CheckFinding[];\n /** Counts on the family's scale, not SHACL's (proposal 0051 §2). */\n errors: number;\n warnings: number;\n notices: number;\n /** Shapes files used, as given (for reporting). */\n shapes: string[];\n /** The question set's health (proposal 0087); absent when no question exists. */\n questions?: QuestionSummary;\n exitCode: 0 | 1;\n}\n\nexport async function runCheck(opts: CheckOptions = {}): Promise<CheckReport> {\n const cwd = opts.cwd ?? process.cwd();\n const config = loadRunConfig(\n {\n ...(opts.config === undefined ? {} : { configPath: opts.config }),\n ...(opts.noConfig === undefined ? {} : { noConfig: opts.noConfig }),\n },\n cwd,\n );\n const graphPath = resolve(cwd, opts.graph ?? config.out);\n const store =\n opts.turtle === undefined\n ? loadGraph(graphPath)\n : parseGraph(opts.turtle, \"the built graph\");\n\n // CLI flag over config over the bundled contract — same precedence as\n // every other knob.\n const shapesInput =\n opts.shapes && opts.shapes.length > 0 ? opts.shapes : config.check.shapes;\n const shapes =\n shapesInput.length > 0\n ? shapesInput.map((p) => resolve(cwd, p))\n : [bundledShapesPath(import.meta.url)];\n\n // Pages read from where `build` labels them, and a vector sidecar from\n // beside the graph, as `export search` and `search` read them. Golden-set\n // files resolve from the config file's directory.\n const asked = await askSampleQuestions(\n store,\n config.check.questions,\n documentBase(config, {}, cwd),\n dirname(graphPath),\n {\n source: {\n ...(opts.config === undefined ? {} : { configPath: opts.config }),\n ...(opts.noConfig === undefined ? {} : { noConfig: opts.noConfig }),\n },\n cwd,\n },\n config.questionFiles,\n config.configDir,\n );\n const findings = [...(await validateGraph(store, shapes)), ...asked.findings].sort(\n compareFindings,\n );\n const count = (severity: Severity): number =>\n findings.filter((f) => f.severity === severity).length;\n const errors = count(\"error\");\n\n return {\n findings,\n errors,\n warnings: count(\"warning\"),\n notices: count(\"notice\"),\n shapes,\n ...(asked.summary ? { questions: asked.summary } : {}),\n // Only an `error` fails the run; a warning and a notice are reported and\n // pass, as they were when they were called violations and warnings.\n exitCode: errors > 0 ? 1 : 0,\n };\n}\n\n/** `2 errors`, `1 warning`, `0 notices` — each count pluralized on its own. */\nfunction plural(n: number, word: string): string {\n return `${String(n)} ${word}${n === 1 ? \"\" : \"s\"}`;\n}\n\nexport function renderCheck(report: CheckReport, format: CheckFormat): string {\n if (format === \"json\") {\n const { exitCode: _exitCode, ...rest } = report;\n return JSON.stringify(rest, null, 2);\n }\n const summary = report.questions ? renderQuestionSummary(report.questions) : [];\n if (format === \"github\") {\n // The summary is plain text after the annotations, which GitHub logs as is.\n const annotations = renderCheckGithub(report);\n if (summary.length === 0) return annotations;\n return [...(annotations === \"\" ? [] : [annotations, \"\"]), ...summary].join(\"\\n\");\n }\n const lines: string[] = [];\n for (const f of report.findings) {\n const where = f.docs.length > 0 ? ` [${f.docs.join(\", \")}]` : \"\";\n lines.push(\n `${f.severity}: ${compactIri(f.focusNode)}${\n f.path ? ` ${compactIri(f.path)}` : \"\"\n } — ${f.message}${where}`,\n );\n }\n if (report.findings.length > 0) lines.push(\"\");\n if (summary.length > 0) lines.push(...summary, \"\");\n lines.push(\n `${plural(report.errors, \"error\")}, ${plural(report.warnings, \"warning\")}, ${plural(report.notices, \"notice\")}`,\n );\n return lines.join(\"\\n\");\n}\n","/**\n * `--format github`: one workflow-command annotation per `check` finding.\n *\n * `::error file=<first blamed doc>::<message> (<focus node>)`, with\n * `::warning` and `::notice` for the lower levels — the family scale is\n * GitHub's, so the level is the severity, exactly as a11y's and cite's\n * reporters have it.\n *\n * A SHACL finding carries no line number (stress test 5 of proposal 0051 says\n * why SARIF and JUnit are not here), and a finding about a shared node — a\n * concept, an agent, the scheme — may trace back to no document at all. Then\n * there is nothing to anchor to and the annotation goes out without `file=`,\n * which GitHub shows against the workflow run rather than dropping.\n *\n * Empty when the run is clean, so a clean CI step logs nothing.\n */\nimport {\n escapeWorkflowCommandMessage,\n escapeWorkflowCommandProperty,\n} from \"../../shared/github.js\";\nimport type { CheckReport } from \"../commands/check.js\";\nimport { compactIri } from \"../core/load.js\";\n\nexport function renderCheckGithub(report: CheckReport): string {\n const lines: string[] = [];\n for (const f of report.findings) {\n // The first, not all of them: one annotation lands on one file, and the\n // docs are sorted, so which one is stable across runs.\n const file = f.docs[0];\n const where =\n file === undefined ? \"\" : ` file=${escapeWorkflowCommandProperty(file)}`;\n const message = escapeWorkflowCommandMessage(\n `${f.message} (${compactIri(f.focusNode)})`,\n );\n lines.push(`::${f.severity}${where}::${message}`);\n }\n return lines.join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
REPORT_FORMATS,
|
|
4
4
|
parseFormat
|
|
5
5
|
} from "./chunk-ZXRAE55H.js";
|
|
6
|
-
import {
|
|
7
|
-
palette
|
|
8
|
-
} from "./chunk-RNVYGWIC.js";
|
|
9
6
|
import {
|
|
10
7
|
escapeWorkflowCommandMessage,
|
|
11
8
|
escapeWorkflowCommandProperty
|
|
12
9
|
} from "./chunk-MNH7QO4Z.js";
|
|
10
|
+
import {
|
|
11
|
+
palette
|
|
12
|
+
} from "./chunk-RNVYGWIC.js";
|
|
13
13
|
|
|
14
14
|
// src/docevals/reporters/scope.ts
|
|
15
15
|
function scopeLine(report) {
|
|
@@ -680,4 +680,4 @@ function render(report, format, opts = {}) {
|
|
|
680
680
|
export {
|
|
681
681
|
render
|
|
682
682
|
};
|
|
683
|
-
//# sourceMappingURL=chunk-
|
|
683
|
+
//# sourceMappingURL=chunk-JEUFYSFQ.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
extractFrontmatter,
|
|
7
7
|
extractorForExtension,
|
|
8
8
|
locateFrontmatter
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KFKL4VTL.js";
|
|
10
10
|
import {
|
|
11
11
|
errorMessage
|
|
12
12
|
} from "./chunk-G3T47CFV.js";
|
|
@@ -3247,4 +3247,4 @@ export {
|
|
|
3247
3247
|
unsupportedFormatMessage,
|
|
3248
3248
|
listFormats
|
|
3249
3249
|
};
|
|
3250
|
-
//# sourceMappingURL=chunk-
|
|
3250
|
+
//# sourceMappingURL=chunk-JJ4RSDSY.js.map
|