@maycombhq/atticus 2.0.0-beta.2 → 2.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +8 -4
- package/dist/chunk-265LWMOA.js +91 -0
- package/dist/chunk-26WBY34Y.js +37 -0
- package/dist/{chunk-UBBC2XSG.js → chunk-26Z7OGQW.js} +518 -93
- package/dist/chunk-2D7PWSOK.js +172 -0
- package/dist/{chunk-JCZIKA4C.js → chunk-2HH3UCZM.js} +4 -4
- package/dist/{chunk-GDLULHTC.js → chunk-2HTEMYTB.js} +12 -26
- package/dist/chunk-2UCRFXFZ.js +130 -0
- package/dist/{chunk-MVZVGYXH.js → chunk-2V2ZPQQU.js} +81 -13
- package/dist/{chunk-BOHJZTEQ.js → chunk-36RY7ZXM.js} +130 -71
- package/dist/{chunk-I3E7CX4H.js → chunk-37WE3LS2.js} +3 -3
- package/dist/{chunk-IPKHE5D6.js → chunk-3AQ2R5NL.js} +1520 -871
- package/dist/chunk-3G6S7LAA.js +43 -0
- package/dist/chunk-3J5I7ZOU.js +58 -0
- package/dist/{chunk-65NYPGRC.js → chunk-3LZ6P5EP.js} +1 -1
- package/dist/chunk-3SSTNB4E.js +191 -0
- package/dist/chunk-3TD6S4TC.js +49 -0
- package/dist/{chunk-3C7EYRFZ.js → chunk-3UTYPHN3.js} +1 -1
- package/dist/{chunk-G2B4ZQGH.js → chunk-3WON4G3M.js} +2 -2
- package/dist/{chunk-S3QNRWYR.js → chunk-42EPP7OB.js} +12 -12
- package/dist/chunk-455SYIIE.js +113 -0
- package/dist/{chunk-YISXLPHN.js → chunk-4B6BT75O.js} +166 -23
- package/dist/{chunk-C6EKFH7J.js → chunk-4CLK2RJO.js} +7 -7
- package/dist/chunk-4CYTJ5TZ.js +38 -0
- package/dist/{chunk-EYWIDJFU.js → chunk-4D62IZII.js} +5 -5
- package/dist/chunk-4FOAYLI4.js +328 -0
- package/dist/{chunk-7JUKDRSZ.js → chunk-4KNOJC6J.js} +294 -215
- package/dist/{chunk-YMZ3TNYB.js → chunk-4PYC2UGC.js} +2 -2
- package/dist/{chunk-27NKUS3X.js → chunk-4SLBCEPD.js} +2104 -726
- package/dist/chunk-4TKVU2I2.js +122 -0
- package/dist/{chunk-RUVFXE2L.js → chunk-4WXRPQDE.js} +448 -47
- package/dist/{chunk-7ZUIMTOU.js → chunk-5CMPVC3N.js} +24 -24
- package/dist/chunk-5G7ILBUG.js +66 -0
- package/dist/{chunk-HFQCFSJR.js → chunk-5PV7S2ZP.js} +3 -3
- package/dist/{chunk-FITWGOJ2.js → chunk-5QUOPNLN.js} +4 -4
- package/dist/{chunk-Z6LF7HQN.js → chunk-5TDRBOAV.js} +5 -5
- package/dist/{chunk-T6AIP7H5.js → chunk-5WERBKLE.js} +199 -63
- package/dist/{chunk-XPCM366L.js → chunk-62DLJSLV.js} +8 -8
- package/dist/{chunk-L24C55VN.js → chunk-64AADMTW.js} +99 -25
- package/dist/{chunk-K65BJIMT.js → chunk-67BP7HXL.js} +17 -17
- package/dist/chunk-6DQYZU2W.js +379 -0
- package/dist/{chunk-EDS2L2LD.js → chunk-6EXDI5GI.js} +52 -26
- package/dist/chunk-6FNAKCET.js +38 -0
- package/dist/{chunk-6IU67AEK.js → chunk-75ASLHBT.js} +21 -15
- package/dist/{chunk-A3GY6SOA.js → chunk-75ZOZFGH.js} +18 -18
- package/dist/{chunk-MGYZM27B.js → chunk-77O633L5.js} +49 -23
- package/dist/{chunk-GQ4N4WKF.js → chunk-7AB6OWTV.js} +3 -3
- package/dist/{chunk-M766ZJ6W.js → chunk-7CZHUZBL.js} +25 -25
- package/dist/{chunk-A7UPUQFY.js → chunk-7FHNFCHK.js} +643 -124
- package/dist/chunk-7FUIVIBG.js +415 -0
- package/dist/{chunk-6QSERWXH.js → chunk-7QPCGTPS.js} +21 -21
- package/dist/{chunk-LR3R6Z2A.js → chunk-A2G72UI4.js} +7 -7
- package/dist/{chunk-I4JRCD6M.js → chunk-AE4P57KK.js} +23 -17
- package/dist/{chunk-AVJDSJ2F.js → chunk-AHW3RY3X.js} +7 -7
- package/dist/chunk-AM6FP6JW.js +43 -0
- package/dist/{chunk-CSZ4C5N6.js → chunk-AOCWFA7T.js} +93 -10
- package/dist/{chunk-EPTBZ3GP.js → chunk-API5TOUB.js} +1 -1
- package/dist/{chunk-652QWTLZ.js → chunk-AZDITBCT.js} +3 -3
- package/dist/{chunk-DPUYDDQG.js → chunk-BA2HUMDN.js} +25 -3
- package/dist/chunk-BA3U7ALS.js +99 -0
- package/dist/{chunk-HVUPKCGJ.js → chunk-BC6KKZ67.js} +5 -5
- package/dist/{chunk-CKSITVS4.js → chunk-BEPCKDCP.js} +2554 -722
- package/dist/{chunk-3ALD2W2A.js → chunk-BPPU3PW7.js} +4 -4
- package/dist/{chunk-QRAOANID.js → chunk-BVWWPBKD.js} +21 -21
- package/dist/{chunk-ZDPAS56H.js → chunk-BXBCMGIQ.js} +7 -1
- package/dist/chunk-BXZ4PKIT.js +233 -0
- package/dist/chunk-C7CEK3KW.js +247 -0
- package/dist/chunk-CFH3QH26.js +29 -0
- package/dist/chunk-CG6CULP6.js +170 -0
- package/dist/chunk-CLD4RVTA.js +45 -0
- package/dist/{chunk-DKJA76CJ.js → chunk-CNPY4NTZ.js} +13 -13
- package/dist/chunk-CNU5Q2D5.js +575 -0
- package/dist/{chunk-T2UYZSCQ.js → chunk-COYN3UAN.js} +126 -23
- package/dist/{chunk-23W7VWKR.js → chunk-CPK7QSBG.js} +1360 -113
- package/dist/{chunk-4AK7IBVP.js → chunk-D2WSW4GU.js} +1 -1
- package/dist/{chunk-ABWHYWNI.js → chunk-D57MFJPP.js} +3 -3
- package/dist/chunk-D5KV5PSK.js +45 -0
- package/dist/chunk-D5MASS4I.js +48 -0
- package/dist/{chunk-7EOBHUMC.js → chunk-DCWN3HFV.js} +2 -2
- package/dist/{chunk-QSXK2RGH.js → chunk-DDJPM5YX.js} +2 -2
- package/dist/chunk-DN4A2Q2O.js +57 -0
- package/dist/{chunk-IHMLFRVV.js → chunk-DUPZPDCJ.js} +58 -16
- package/dist/{chunk-PRPPGYZG.js → chunk-E2VXBSIR.js} +4 -4
- package/dist/chunk-E57AOFYN.js +32 -0
- package/dist/{chunk-UGLN7QHV.js → chunk-ECLXZWAG.js} +12 -12
- package/dist/{chunk-5WG5YP4T.js → chunk-EDZ45WIR.js} +14 -14
- package/dist/chunk-EFCQSMXB.js +37 -0
- package/dist/{chunk-2ANOROX3.js → chunk-EZIN5E5B.js} +8 -8
- package/dist/{chunk-BWZ77RQT.js → chunk-F6H2RJ3N.js} +1 -1
- package/dist/{chunk-OLQJTJJU.js → chunk-FAJDKNSD.js} +7 -3
- package/dist/chunk-FGAGWYZB.js +47 -0
- package/dist/{chunk-4WBVUHXN.js → chunk-FLVZFTLQ.js} +18 -18
- package/dist/chunk-FQ6WH6PB.js +140 -0
- package/dist/{chunk-T6XQL73F.js → chunk-FRHD22WM.js} +61 -23
- package/dist/{chunk-XAKWMCXI.js → chunk-FVMPFCDS.js} +4 -4
- package/dist/{chunk-B2WLAWNJ.js → chunk-FY3QIRTL.js} +3 -3
- package/dist/{chunk-CPA6HPVR.js → chunk-FYBF5MB2.js} +15 -11
- package/dist/{chunk-V2YTAIQO.js → chunk-G5YJBNDZ.js} +21 -6
- package/dist/chunk-G6IQYM25.js +339 -0
- package/dist/chunk-G6X4YL4D.js +161 -0
- package/dist/{chunk-SJRGMG6A.js → chunk-GC2VK3JT.js} +25 -25
- package/dist/{chunk-SP2I63OO.js → chunk-GCS3FZOB.js} +77 -3
- package/dist/{chunk-6TACQN3N.js → chunk-GDZB57IU.js} +5 -5
- package/dist/chunk-GIFMBCTW.js +221 -0
- package/dist/{chunk-YY6ZQQBP.js → chunk-GK4PYVEC.js} +18 -8
- package/dist/{chunk-TDD55CJH.js → chunk-GNWAOVFQ.js} +6 -5
- package/dist/chunk-GS76RXQE.js +226 -0
- package/dist/{chunk-YYQN46FY.js → chunk-GSGIZ2OO.js} +23 -23
- package/dist/chunk-GUYL7RMK.js +60 -0
- package/dist/chunk-GX74YWR7.js +321 -0
- package/dist/chunk-HE3HRDNZ.js +122 -0
- package/dist/{chunk-AIOQPLA5.js → chunk-HGHRSF3E.js} +30 -12
- package/dist/{chunk-2RMYG36Q.js → chunk-HK3VOHIE.js} +198 -336
- package/dist/{chunk-QZSX3F7C.js → chunk-HS4BGB4G.js} +24 -22
- package/dist/{chunk-XY3P7JW7.js → chunk-HSZMPH5T.js} +834 -149
- package/dist/{chunk-L6SGQIR3.js → chunk-HWD4JPU7.js} +4 -2
- package/dist/{chunk-PCVDV3UZ.js → chunk-HXXP2NTE.js} +6 -6
- package/dist/{chunk-AA6YULYB.js → chunk-I2A3Z5AK.js} +7 -7
- package/dist/{chunk-N7IXEHK3.js → chunk-ICHDSWEY.js} +7 -7
- package/dist/chunk-IFFRGC3N.js +31 -0
- package/dist/{chunk-4BN53TG3.js → chunk-IFHDV6KQ.js} +31 -23
- package/dist/chunk-J2O4LFVI.js +80 -0
- package/dist/chunk-J5AAZ6OJ.js +161 -0
- package/dist/{chunk-ZMFPW66A.js → chunk-JAABT3DA.js} +3 -3
- package/dist/chunk-JITJP64K.js +34 -0
- package/dist/chunk-JKIGL3XQ.js +162 -0
- package/dist/chunk-JRVNXLZP.js +615 -0
- package/dist/chunk-JRXHON4E.js +41 -0
- package/dist/{chunk-DHPACDG7.js → chunk-JS6WMC3J.js} +8 -8
- package/dist/chunk-JU4QNJSR.js +62 -0
- package/dist/{chunk-PAMPPUR6.js → chunk-JYMIB5XY.js} +1697 -172
- package/dist/{chunk-RRTKKSLQ.js → chunk-JYTIHTIK.js} +8 -6
- package/dist/{chunk-3HI6Z55Y.js → chunk-K332XW7K.js} +324 -39
- package/dist/{chunk-GLUX4EEP.js → chunk-K6JB6XTX.js} +9 -9
- package/dist/chunk-KDAHXQIE.js +294 -0
- package/dist/chunk-KYZMRSPS.js +93 -0
- package/dist/chunk-L4CESDPB.js +22 -0
- package/dist/{chunk-NXFPS2LR.js → chunk-LEBR5NHW.js} +14 -14
- package/dist/chunk-LIJJCBQI.js +223 -0
- package/dist/{chunk-DE76JROX.js → chunk-LIRVU3HW.js} +16 -16
- package/dist/{chunk-JMSCMUCA.js → chunk-LN77DXBM.js} +145 -21
- package/dist/{chunk-JIITQXFB.js → chunk-LNWEWYCM.js} +2969 -788
- package/dist/{chunk-TANFV3MZ.js → chunk-LO3BLMVG.js} +3 -3
- package/dist/chunk-LPV6T362.js +250 -0
- package/dist/{chunk-2VHF7OXM.js → chunk-LQH4P45K.js} +1 -1
- package/dist/chunk-LU4MQVAL.js +41 -0
- package/dist/chunk-LWDNKE4X.js +273 -0
- package/dist/chunk-M4H2UG4R.js +218 -0
- package/dist/{chunk-6BVONWJ7.js → chunk-M6D2U3YM.js} +3 -3
- package/dist/chunk-MD7KUEJ3.js +514 -0
- package/dist/{chunk-66YVAGGM.js → chunk-MMZUN7ZO.js} +20 -20
- package/dist/chunk-MZGRDONP.js +916 -0
- package/dist/chunk-N3RUGTGV.js +39 -0
- package/dist/{chunk-JGZCG5VM.js → chunk-NCB6656Z.js} +7 -7
- package/dist/{chunk-4NDAAFQT.js → chunk-NRQ65LTQ.js} +7 -5
- package/dist/{chunk-UNM6ZOKP.js → chunk-NTAVOWYD.js} +145 -18
- package/dist/{chunk-3USYZGRF.js → chunk-NYOABJNK.js} +36 -27
- package/dist/{chunk-WVPJSRRJ.js → chunk-O4IKAIZ2.js} +24 -20
- package/dist/{chunk-D3PO4DOZ.js → chunk-ODMBPDDV.js} +51 -14
- package/dist/chunk-OKUB6RJA.js +533 -0
- package/dist/chunk-OMPENNWY.js +39 -0
- package/dist/chunk-OPQZISG3.js +25 -0
- package/dist/{chunk-5GGOLAKC.js → chunk-OV57AHCG.js} +26 -26
- package/dist/chunk-OZJ3JLYI.js +58 -0
- package/dist/{chunk-KEM4SDDP.js → chunk-P2VBXX7N.js} +11 -10
- package/dist/{chunk-S2A7YC3Q.js → chunk-PAINMSID.js} +10150 -1720
- package/dist/chunk-PKJAV25S.js +43 -0
- package/dist/{chunk-EBEW3XXQ.js → chunk-PNQLCRSS.js} +4 -4
- package/dist/{chunk-WY6PP6AA.js → chunk-PQH56YF6.js} +37 -5
- package/dist/chunk-PRTBPXYA.js +50 -0
- package/dist/{chunk-YEDDOYSC.js → chunk-PRW3HXM3.js} +2 -2
- package/dist/chunk-PRZ7KMWL.js +42 -0
- package/dist/{chunk-6M5NK3K3.js → chunk-PTQ3ZALZ.js} +42 -4
- package/dist/{chunk-5GDRCDQB.js → chunk-PUEWDYGP.js} +2 -2
- package/dist/chunk-Q26LDIUV.js +236 -0
- package/dist/{chunk-CR3MTH32.js → chunk-Q46QDDMF.js} +77 -7
- package/dist/chunk-QBNWF5ZU.js +19 -0
- package/dist/chunk-QE527XRY.js +342 -0
- package/dist/{chunk-CNUKCS2T.js → chunk-QHJJMZLX.js} +1518 -54
- package/dist/chunk-QJCJOMW3.js +425 -0
- package/dist/{chunk-VYDBJ73M.js → chunk-QKMRFNMA.js} +15 -15
- package/dist/chunk-QOOEYDNJ.js +317 -0
- package/dist/chunk-QSIDVFB7.js +45 -0
- package/dist/{chunk-R77KLRB3.js → chunk-RA33EYS4.js} +19 -18
- package/dist/{chunk-DFBCSHVT.js → chunk-RALY3E5U.js} +4 -4
- package/dist/{chunk-ZCJDOK2S.js → chunk-S2RY3BOD.js} +35 -21
- package/dist/chunk-S5LSDXV4.js +40 -0
- package/dist/chunk-SB5GRUFM.js +54 -0
- package/dist/chunk-SH27FYPF.js +150 -0
- package/dist/chunk-T74WQQGS.js +40 -0
- package/dist/{chunk-O3WI5KWW.js → chunk-TGVVUKTG.js} +2 -2
- package/dist/chunk-THN26IEF.js +48 -0
- package/dist/chunk-TJH2EUAZ.js +47 -0
- package/dist/{chunk-ZNCEKR4J.js → chunk-TQ4TG57V.js} +12 -8
- package/dist/{chunk-7FBGJFEE.js → chunk-TQTRWENN.js} +12 -12
- package/dist/{chunk-TYAID7B7.js → chunk-TSM6T6GQ.js} +23 -23
- package/dist/{chunk-DPZHZQKE.js → chunk-TW3KOSQK.js} +43 -10
- package/dist/{chunk-MC3H7736.js → chunk-TWQRPM76.js} +37 -4
- package/dist/chunk-TYD6I4CZ.js +109 -0
- package/dist/chunk-U3NBK4EU.js +420 -0
- package/dist/{chunk-6JCPI55B.js → chunk-UDXWIPCB.js} +47 -7
- package/dist/{chunk-MMOSZPWJ.js → chunk-UEVZZZU2.js} +4 -4
- package/dist/{chunk-JBTK5OP2.js → chunk-UF4UHCIG.js} +2 -2
- package/dist/{chunk-6JUBZBMW.js → chunk-UFE36WJH.js} +4 -4
- package/dist/{chunk-ONLS5QA5.js → chunk-URIKUID7.js} +12 -12
- package/dist/chunk-UYLBRRFK.js +1106 -0
- package/dist/chunk-UZACEG2C.js +515 -0
- package/dist/{chunk-7SW2QWLU.js → chunk-VAMHOHUU.js} +12 -12
- package/dist/{chunk-RZPYKDWS.js → chunk-VUVGX5L2.js} +1 -1
- package/dist/{chunk-Q4D5X7QB.js → chunk-VYOCPTUB.js} +44 -24
- package/dist/{chunk-CAQZUNOH.js → chunk-WAZEXEJH.js} +567 -3
- package/dist/chunk-WCEF7H6L.js +221 -0
- package/dist/{chunk-2DIQQJCB.js → chunk-WEOMJHPV.js} +12 -12
- package/dist/{chunk-FHH4I4ZV.js → chunk-WFU77T3A.js} +12 -6
- package/dist/chunk-WIWTJMMR.js +292 -0
- package/dist/{chunk-2BFCZ3RK.js → chunk-WNTIOBOG.js} +18 -18
- package/dist/{chunk-7WD63HU2.js → chunk-X2CUXTWU.js} +6 -6
- package/dist/chunk-X7EMBM5X.js +34 -0
- package/dist/chunk-XEQCQO66.js +33 -0
- package/dist/{chunk-F7HYOUFF.js → chunk-XG4WJHLQ.js} +20 -4
- package/dist/{chunk-EFHQ3TWP.js → chunk-XOL3GFW2.js} +171 -31
- package/dist/{chunk-NE2W3OO7.js → chunk-XQ3YZ4QW.js} +22 -22
- package/dist/{chunk-CEXSU4S6.js → chunk-Y6K3CJBU.js} +723 -85
- package/dist/{chunk-4RS5KZQD.js → chunk-YAH5IQAL.js} +5 -5
- package/dist/{chunk-64EQYWCA.js → chunk-YBOVNMHC.js} +51 -14
- package/dist/chunk-YF5DZCPN.js +1212 -0
- package/dist/chunk-YIGBJNH4.js +37 -0
- package/dist/{chunk-BKVWTZ6A.js → chunk-YJ3TBOTK.js} +25 -25
- package/dist/{chunk-Q5AMFEWD.js → chunk-YKTE2RU3.js} +2 -2
- package/dist/{chunk-7EKXJZ2Y.js → chunk-YO2PKTXT.js} +296 -37
- package/dist/{chunk-6J5OKA4Y.js → chunk-YTTNTQOX.js} +15 -15
- package/dist/{chunk-OT2O76OS.js → chunk-YWAKDNMH.js} +183 -33
- package/dist/{chunk-R6XF6UR3.js → chunk-YZDZOEV4.js} +4 -4
- package/dist/chunk-Z3QFH7YG.js +17 -0
- package/dist/{chunk-W5BVQF44.js → chunk-Z6VLC5X4.js} +17 -17
- package/dist/{chunk-HLJAXMM4.js → chunk-ZFQMMU5Y.js} +2 -2
- package/dist/{chunk-W3BQAZ3Q.js → chunk-ZKYRDV7A.js} +12 -12
- package/dist/{chunk-ZMAINWBW.js → chunk-ZLS6PU2O.js} +3 -3
- package/dist/{chunk-ZVM6AKKM.js → chunk-ZOSD4FXV.js} +3 -3
- package/dist/chunk-ZPDDEVQX.js +47 -0
- package/dist/{chunk-TXLH6WHQ.js → chunk-ZQLRCA2V.js} +11 -11
- package/dist/{chunk-HITVBIJS.js → chunk-ZX7235KR.js} +128 -54
- package/dist/{chunk-GT4I4ZWM.js → chunk-ZZFHLRQW.js} +18 -16
- package/dist/files.json +636 -364
- package/dist/packages/naysayer/constitution/constitution.yaml +19 -0
- package/dist/packages/sdk/npm/index.js +5614 -2343
- package/dist/packages/ui/dist/assets/{elk-api-tma0MCuh.js → elk-api-CowTnhEJ.js} +2 -2
- package/dist/packages/ui/dist/assets/index-Dw20IRhQ.css +1 -0
- package/dist/packages/ui/dist/assets/index-z2wv0d5d.js +47 -0
- package/dist/packages/ui/dist/index.html +2 -2
- package/package.json +4 -4
- package/dist/chunk-2BF2EYJV.js +0 -174
- package/dist/chunk-42EVSKME.js +0 -37
- package/dist/chunk-4BKGMUIK.js +0 -53
- package/dist/chunk-5KLGBXG5.js +0 -48
- package/dist/chunk-6BNC6EQ4.js +0 -41
- package/dist/chunk-6D2CQ5II.js +0 -41
- package/dist/chunk-7AVHLZGD.js +0 -45
- package/dist/chunk-D46WUV3T.js +0 -33
- package/dist/chunk-E36QOJMD.js +0 -47
- package/dist/chunk-FQXYPF7E.js +0 -147
- package/dist/chunk-GBRFVT63.js +0 -45
- package/dist/chunk-ICY36XCH.js +0 -34
- package/dist/chunk-J4K3KVLD.js +0 -131
- package/dist/chunk-JZU3H6UQ.js +0 -54
- package/dist/chunk-NN2ZQEB4.js +0 -38
- package/dist/chunk-PCOCACY3.js +0 -385
- package/dist/chunk-RTEYOSJY.js +0 -29
- package/dist/chunk-RVH5SUW5.js +0 -69
- package/dist/chunk-VN3DP4LQ.js +0 -43
- package/dist/chunk-XPTOBS2D.js +0 -48
- package/dist/packages/ui/dist/assets/index-B54fm9FQ.js +0 -29
- package/dist/packages/ui/dist/assets/index-DD_hufQz.css +0 -1
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { createRequire as __atticusCreateRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
3
|
+
var require = __atticusCreateRequire(import.meta.url);
|
|
4
|
+
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
|
+
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
forgetCatalogs,
|
|
8
|
+
readCatalog
|
|
9
|
+
} from "./chunk-4SLBCEPD.js";
|
|
10
|
+
import "./chunk-64AADMTW.js";
|
|
11
|
+
import "./chunk-JYMIB5XY.js";
|
|
12
|
+
import "./chunk-CPK7QSBG.js";
|
|
13
|
+
import "./chunk-YO2PKTXT.js";
|
|
14
|
+
import "./chunk-TWQRPM76.js";
|
|
15
|
+
import {
|
|
16
|
+
loadRepos
|
|
17
|
+
} from "./chunk-XOL3GFW2.js";
|
|
18
|
+
import "./chunk-QHJJMZLX.js";
|
|
19
|
+
import "./chunk-7AB6OWTV.js";
|
|
20
|
+
import {
|
|
21
|
+
FACTS_COMPANIONS,
|
|
22
|
+
ManifestEditError,
|
|
23
|
+
RecordId,
|
|
24
|
+
catalogDirOf,
|
|
25
|
+
factsDirOf,
|
|
26
|
+
factsRelOf,
|
|
27
|
+
listQuestions,
|
|
28
|
+
mapRelOf,
|
|
29
|
+
orgPackDirOf,
|
|
30
|
+
parseRecord,
|
|
31
|
+
recordPath,
|
|
32
|
+
renameManifestRepo,
|
|
33
|
+
require_dist,
|
|
34
|
+
serializeRecord,
|
|
35
|
+
specRelOf,
|
|
36
|
+
writeQuestion
|
|
37
|
+
} from "./chunk-PAINMSID.js";
|
|
38
|
+
import {
|
|
39
|
+
LockHeldError,
|
|
40
|
+
acquireLock,
|
|
41
|
+
writeFileAtomic
|
|
42
|
+
} from "./chunk-ODMBPDDV.js";
|
|
43
|
+
import {
|
|
44
|
+
__toESM
|
|
45
|
+
} from "./chunk-TV45EUGM.js";
|
|
46
|
+
|
|
47
|
+
// packages/cli/dist/repo-rename.js
|
|
48
|
+
var import_yaml = __toESM(require_dist(), 1);
|
|
49
|
+
import { existsSync } from "node:fs";
|
|
50
|
+
import { readFile, rm } from "node:fs/promises";
|
|
51
|
+
import { join, relative, sep } from "node:path";
|
|
52
|
+
var posix = (p) => p.split(sep).join("/");
|
|
53
|
+
function renamed(v, from, to) {
|
|
54
|
+
let changed = false;
|
|
55
|
+
const walk = (x) => {
|
|
56
|
+
if (Array.isArray(x))
|
|
57
|
+
return x.map(walk);
|
|
58
|
+
if (x && typeof x === "object") {
|
|
59
|
+
const out = {};
|
|
60
|
+
for (const [k, y] of Object.entries(x)) {
|
|
61
|
+
if (k === "repo" && y === from) {
|
|
62
|
+
out[k] = to;
|
|
63
|
+
changed = true;
|
|
64
|
+
} else
|
|
65
|
+
out[k] = walk(y);
|
|
66
|
+
}
|
|
67
|
+
return out;
|
|
68
|
+
}
|
|
69
|
+
return x;
|
|
70
|
+
};
|
|
71
|
+
return { value: walk(v), changed };
|
|
72
|
+
}
|
|
73
|
+
function renamedText(text, from, to) {
|
|
74
|
+
const esc = from.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
75
|
+
return text.replace(new RegExp(`(?<![A-Za-z0-9._-])${esc}(?![A-Za-z0-9._-])`, "g"), to);
|
|
76
|
+
}
|
|
77
|
+
function rewriteFactsFile(name, text, from, to) {
|
|
78
|
+
if (name.endsWith(".jsonl"))
|
|
79
|
+
return text.split(/\r?\n/).map((line) => {
|
|
80
|
+
if (!line.trim())
|
|
81
|
+
return line;
|
|
82
|
+
try {
|
|
83
|
+
const r = renamed(JSON.parse(line), from, to);
|
|
84
|
+
return r.changed ? JSON.stringify(r.value) : line;
|
|
85
|
+
} catch {
|
|
86
|
+
return line;
|
|
87
|
+
}
|
|
88
|
+
}).join("\n");
|
|
89
|
+
try {
|
|
90
|
+
const r = renamed((0, import_yaml.parse)(text), from, to);
|
|
91
|
+
return r.changed ? (0, import_yaml.stringify)(r.value) : text;
|
|
92
|
+
} catch {
|
|
93
|
+
return text;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async function repoRename(root, from, to, io) {
|
|
97
|
+
if (!from || !to) {
|
|
98
|
+
io.err("Usage: atticus repo rename <old id> <new id>");
|
|
99
|
+
return 2;
|
|
100
|
+
}
|
|
101
|
+
if (!RecordId.safeParse(to).success) {
|
|
102
|
+
io.err(`${to} isn't a repo id: ids are lowercase slugs (a-z, 0-9, '.', '_' and '-').`);
|
|
103
|
+
return 2;
|
|
104
|
+
}
|
|
105
|
+
const listed = await loadRepos(root).catch(() => []);
|
|
106
|
+
if (!listed.some((r) => r.id === from)) {
|
|
107
|
+
io.err(`There is no repo ${from} in any manifest (atticus repos list shows the ids).`);
|
|
108
|
+
return 2;
|
|
109
|
+
}
|
|
110
|
+
if (listed.some((r) => r.id === to)) {
|
|
111
|
+
io.err(`${to} is already listed; repo ids are unique across every profile.`);
|
|
112
|
+
return 2;
|
|
113
|
+
}
|
|
114
|
+
const factsDir = factsDirOf(root);
|
|
115
|
+
const fRel = factsRelOf(root);
|
|
116
|
+
const moves = [];
|
|
117
|
+
for (const suffix of [".jsonl", ...FACTS_COMPANIONS]) {
|
|
118
|
+
const src = join(factsDir, `${from}${suffix}`);
|
|
119
|
+
if (!existsSync(src))
|
|
120
|
+
continue;
|
|
121
|
+
moves.push({
|
|
122
|
+
src,
|
|
123
|
+
dst: join(factsDir, `${to}${suffix}`),
|
|
124
|
+
rel: `${fRel}/${from}${suffix}`,
|
|
125
|
+
relTo: `${fRel}/${to}${suffix}`,
|
|
126
|
+
name: suffix
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
const scanDir = join(orgPackDirOf(root), "scan");
|
|
130
|
+
const scanSrc = join(scanDir, `${from}.yaml`);
|
|
131
|
+
if (existsSync(scanSrc)) {
|
|
132
|
+
const rel = posix(relative(root, scanDir));
|
|
133
|
+
moves.push({
|
|
134
|
+
src: scanSrc,
|
|
135
|
+
dst: join(scanDir, `${to}.yaml`),
|
|
136
|
+
rel: `${rel}/${from}.yaml`,
|
|
137
|
+
relTo: `${rel}/${to}.yaml`,
|
|
138
|
+
name: ".yaml"
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const taken = moves.filter((m) => existsSync(m.dst));
|
|
142
|
+
if (taken.length) {
|
|
143
|
+
for (const m of taken)
|
|
144
|
+
io.err(`${m.relTo} is already there: move or remove it first, so ${m.rel} doesn't overwrite it. Nothing was changed.`);
|
|
145
|
+
return 1;
|
|
146
|
+
}
|
|
147
|
+
let lock;
|
|
148
|
+
try {
|
|
149
|
+
lock = await acquireLock(root, "scan", `atticus repo rename ${from} ${to}`);
|
|
150
|
+
} catch (e) {
|
|
151
|
+
if (e instanceof LockHeldError) {
|
|
152
|
+
io.err(e.message);
|
|
153
|
+
return 1;
|
|
154
|
+
}
|
|
155
|
+
throw e;
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const said = [];
|
|
159
|
+
let manifest;
|
|
160
|
+
try {
|
|
161
|
+
manifest = await renameManifestRepo(root, from, to);
|
|
162
|
+
} catch (e) {
|
|
163
|
+
if (e instanceof ManifestEditError) {
|
|
164
|
+
io.err(e.message);
|
|
165
|
+
return e.code === "not-found" ? 2 : 1;
|
|
166
|
+
}
|
|
167
|
+
throw e;
|
|
168
|
+
}
|
|
169
|
+
said.push(`${manifest.rel}: the entry's id`);
|
|
170
|
+
for (const m of moves) {
|
|
171
|
+
const text = await readFile(m.src, "utf8");
|
|
172
|
+
await writeFileAtomic(m.dst, rewriteFactsFile(m.name, text, from, to));
|
|
173
|
+
await rm(m.src, { force: true });
|
|
174
|
+
said.push(`${m.rel} \u2192 ${m.relTo}`);
|
|
175
|
+
}
|
|
176
|
+
const qs = (await listQuestions(root)).questions.filter((q) => q.repo === from);
|
|
177
|
+
for (const q of qs) {
|
|
178
|
+
const next = {
|
|
179
|
+
...q,
|
|
180
|
+
repo: to,
|
|
181
|
+
rerun: renamedText(q.rerun, from, to),
|
|
182
|
+
askedBy: { ...q.askedBy, command: renamedText(q.askedBy.command, from, to) },
|
|
183
|
+
...q.scope.level === "repo" && q.scope.id === from ? { scope: { ...q.scope, id: to } } : {}
|
|
184
|
+
};
|
|
185
|
+
await writeQuestion(root, next);
|
|
186
|
+
}
|
|
187
|
+
if (qs.length)
|
|
188
|
+
said.push(`${qs.length} question${qs.length === 1 ? "" : "s"} (repo ${to})`);
|
|
189
|
+
let records = 0;
|
|
190
|
+
for (const sub of ["generated", "curated"]) {
|
|
191
|
+
const dir = join(catalogDirOf(root), sub);
|
|
192
|
+
const cat = await readCatalog(dir, { cacheRoot: root });
|
|
193
|
+
for (const r of cat.records) {
|
|
194
|
+
const n = renamed(r, from, to);
|
|
195
|
+
if (!n.changed)
|
|
196
|
+
continue;
|
|
197
|
+
const p = parseRecord(n.value);
|
|
198
|
+
if (!p.ok) {
|
|
199
|
+
io.err(`${r.kind} ${r.id} names ${from} but wouldn't be valid renamed (${p.issues.map((i) => i.message).join("; ")}); left as it is.`);
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
await writeFileAtomic(join(dir, ...recordPath(p.record).split("/")), serializeRecord(p.record));
|
|
203
|
+
records++;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
forgetCatalogs();
|
|
207
|
+
if (records)
|
|
208
|
+
said.push(`${records} catalog record${records === 1 ? "" : "s"} (repo ${to})`);
|
|
209
|
+
io.out(`Renamed ${from} to ${to}:`);
|
|
210
|
+
for (const l of said)
|
|
211
|
+
io.out(` ${l}`);
|
|
212
|
+
const left = [
|
|
213
|
+
existsSync(join(root, ...specRelOf(root, from).split("/"))) ? specRelOf(root, from) : "",
|
|
214
|
+
existsSync(join(root, ...`${mapRelOf(root)}/${from}`.split("/"))) ? `${mapRelOf(root)}/${from}` : ""
|
|
215
|
+
].filter(Boolean);
|
|
216
|
+
if (left.length)
|
|
217
|
+
io.out(`Left as they are: ${left.join(" and ")}. atticus verify ${to} --write writes them under ${to}; remove the old ones in the same pull request.`);
|
|
218
|
+
io.out(`Review the change and commit it in a pull request: Atticus commits and pushes nothing. A clone under the old id is cloned again under ${to} by atticus workspace sync.`);
|
|
219
|
+
return 0;
|
|
220
|
+
} finally {
|
|
221
|
+
await lock.release();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
export {
|
|
225
|
+
repoRename
|
|
226
|
+
};
|
|
@@ -3,40 +3,40 @@ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
|
3
3
|
var require = __atticusCreateRequire(import.meta.url);
|
|
4
4
|
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
5
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-K6JB6XTX.js";
|
|
7
7
|
import {
|
|
8
8
|
loadCatalog
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-5QUOPNLN.js";
|
|
10
10
|
import {
|
|
11
11
|
repoFor
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TGVVUKTG.js";
|
|
13
13
|
import {
|
|
14
14
|
recordFact,
|
|
15
15
|
verifyScan
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-P2VBXX7N.js";
|
|
17
|
+
import "./chunk-ZOSD4FXV.js";
|
|
18
18
|
import {
|
|
19
19
|
stepJudges
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-BEPCKDCP.js";
|
|
21
|
+
import "./chunk-HWD4JPU7.js";
|
|
22
|
+
import "./chunk-5WERBKLE.js";
|
|
23
|
+
import "./chunk-K332XW7K.js";
|
|
24
|
+
import "./chunk-HSZMPH5T.js";
|
|
25
|
+
import "./chunk-D2WSW4GU.js";
|
|
26
|
+
import "./chunk-4KNOJC6J.js";
|
|
26
27
|
import {
|
|
27
28
|
checkScanSettings
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
29
|
+
} from "./chunk-4SLBCEPD.js";
|
|
30
|
+
import "./chunk-64AADMTW.js";
|
|
31
|
+
import "./chunk-JYMIB5XY.js";
|
|
32
|
+
import "./chunk-CPK7QSBG.js";
|
|
33
|
+
import "./chunk-YO2PKTXT.js";
|
|
34
|
+
import "./chunk-TWQRPM76.js";
|
|
35
|
+
import "./chunk-XOL3GFW2.js";
|
|
36
|
+
import "./chunk-QHJJMZLX.js";
|
|
36
37
|
import {
|
|
37
38
|
fsRepo
|
|
38
|
-
} from "./chunk-
|
|
39
|
-
import "./chunk-CNUKCS2T.js";
|
|
39
|
+
} from "./chunk-7AB6OWTV.js";
|
|
40
40
|
import {
|
|
41
41
|
SCAN_VERIFY_SCHEMA_VERSION,
|
|
42
42
|
ScanSettings,
|
|
@@ -50,8 +50,8 @@ import {
|
|
|
50
50
|
raiseQuestions,
|
|
51
51
|
require_dist,
|
|
52
52
|
reusedLine
|
|
53
|
-
} from "./chunk-
|
|
54
|
-
import "./chunk-
|
|
53
|
+
} from "./chunk-PAINMSID.js";
|
|
54
|
+
import "./chunk-ODMBPDDV.js";
|
|
55
55
|
import {
|
|
56
56
|
__toESM
|
|
57
57
|
} from "./chunk-TV45EUGM.js";
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createRequire as __atticusCreateRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
3
|
+
var require = __atticusCreateRequire(import.meta.url);
|
|
4
|
+
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
|
+
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
READS_AS_RULE,
|
|
8
|
+
dataBlock,
|
|
9
|
+
draftPrompt,
|
|
10
|
+
missedOf,
|
|
11
|
+
rulesAddCommand,
|
|
12
|
+
rulesDraftCommand,
|
|
13
|
+
rulesImportCommand,
|
|
14
|
+
rulesListCommand,
|
|
15
|
+
rulesNotesCommand,
|
|
16
|
+
rulesSetCommand,
|
|
17
|
+
rulesTryCommand,
|
|
18
|
+
scopeFile,
|
|
19
|
+
tryDiff
|
|
20
|
+
} from "./chunk-JRVNXLZP.js";
|
|
21
|
+
import "./chunk-LIJJCBQI.js";
|
|
22
|
+
import "./chunk-26Z7OGQW.js";
|
|
23
|
+
import "./chunk-OKUB6RJA.js";
|
|
24
|
+
import "./chunk-THN26IEF.js";
|
|
25
|
+
import "./chunk-L4CESDPB.js";
|
|
26
|
+
import "./chunk-455SYIIE.js";
|
|
27
|
+
import "./chunk-3J5I7ZOU.js";
|
|
28
|
+
import "./chunk-GIFMBCTW.js";
|
|
29
|
+
import "./chunk-MD7KUEJ3.js";
|
|
30
|
+
import "./chunk-Q46QDDMF.js";
|
|
31
|
+
import "./chunk-TGVVUKTG.js";
|
|
32
|
+
import "./chunk-3AQ2R5NL.js";
|
|
33
|
+
import "./chunk-4SLBCEPD.js";
|
|
34
|
+
import "./chunk-64AADMTW.js";
|
|
35
|
+
import "./chunk-JYMIB5XY.js";
|
|
36
|
+
import "./chunk-CPK7QSBG.js";
|
|
37
|
+
import "./chunk-YO2PKTXT.js";
|
|
38
|
+
import "./chunk-TWQRPM76.js";
|
|
39
|
+
import "./chunk-VUVGX5L2.js";
|
|
40
|
+
import "./chunk-XOL3GFW2.js";
|
|
41
|
+
import "./chunk-QHJJMZLX.js";
|
|
42
|
+
import "./chunk-7AB6OWTV.js";
|
|
43
|
+
import "./chunk-PAINMSID.js";
|
|
44
|
+
import "./chunk-ODMBPDDV.js";
|
|
45
|
+
import "./chunk-TV45EUGM.js";
|
|
46
|
+
export {
|
|
47
|
+
READS_AS_RULE,
|
|
48
|
+
dataBlock,
|
|
49
|
+
draftPrompt,
|
|
50
|
+
missedOf,
|
|
51
|
+
rulesAddCommand,
|
|
52
|
+
rulesDraftCommand,
|
|
53
|
+
rulesImportCommand,
|
|
54
|
+
rulesListCommand,
|
|
55
|
+
rulesNotesCommand,
|
|
56
|
+
rulesSetCommand,
|
|
57
|
+
rulesTryCommand,
|
|
58
|
+
scopeFile,
|
|
59
|
+
tryDiff
|
|
60
|
+
};
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import { createRequire as __atticusCreateRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
3
|
+
var require = __atticusCreateRequire(import.meta.url);
|
|
4
|
+
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
|
+
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
headCommitOf
|
|
8
|
+
} from "./chunk-G6IQYM25.js";
|
|
9
|
+
import {
|
|
10
|
+
denyHashesAt
|
|
11
|
+
} from "./chunk-LPV6T362.js";
|
|
12
|
+
import {
|
|
13
|
+
intakeContext
|
|
14
|
+
} from "./chunk-TQ4TG57V.js";
|
|
15
|
+
import {
|
|
16
|
+
componentRenames,
|
|
17
|
+
estateFacts,
|
|
18
|
+
estateJoinOf,
|
|
19
|
+
hostAliases,
|
|
20
|
+
joinReposOf,
|
|
21
|
+
outsideProfileSystems
|
|
22
|
+
} from "./chunk-4SLBCEPD.js";
|
|
23
|
+
import {
|
|
24
|
+
sameCommit
|
|
25
|
+
} from "./chunk-JYMIB5XY.js";
|
|
26
|
+
import {
|
|
27
|
+
openApiContractSpecs,
|
|
28
|
+
readContractSpecs,
|
|
29
|
+
readRepoSpecs,
|
|
30
|
+
readVendorSpec
|
|
31
|
+
} from "./chunk-CPK7QSBG.js";
|
|
32
|
+
import {
|
|
33
|
+
VERSION
|
|
34
|
+
} from "./chunk-VUVGX5L2.js";
|
|
35
|
+
import {
|
|
36
|
+
createGit
|
|
37
|
+
} from "./chunk-XOL3GFW2.js";
|
|
38
|
+
import {
|
|
39
|
+
SpecsFile,
|
|
40
|
+
catalogDirOf,
|
|
41
|
+
checkContracts,
|
|
42
|
+
factsDirOf,
|
|
43
|
+
factsRelOf,
|
|
44
|
+
inputsDirOf,
|
|
45
|
+
joinConventions,
|
|
46
|
+
joinVendorOperations,
|
|
47
|
+
newFindings,
|
|
48
|
+
orgPackDirOf,
|
|
49
|
+
questionsDirOf,
|
|
50
|
+
require_dist
|
|
51
|
+
} from "./chunk-PAINMSID.js";
|
|
52
|
+
import {
|
|
53
|
+
writeFileAtomic
|
|
54
|
+
} from "./chunk-ODMBPDDV.js";
|
|
55
|
+
import {
|
|
56
|
+
__toESM
|
|
57
|
+
} from "./chunk-TV45EUGM.js";
|
|
58
|
+
|
|
59
|
+
// packages/cli/dist/contract-check-files.js
|
|
60
|
+
var import_yaml = __toESM(require_dist(), 1);
|
|
61
|
+
import { createHash } from "node:crypto";
|
|
62
|
+
import { existsSync } from "node:fs";
|
|
63
|
+
import { readdir, readFile, rm, stat } from "node:fs/promises";
|
|
64
|
+
import { join, resolve } from "node:path";
|
|
65
|
+
var SPEC_CLASSES = /* @__PURE__ */ new Set(["openapi", "swagger", "asyncapi", "protobuf", "avro"]);
|
|
66
|
+
async function specsCommitOf(facts, dir, git = createGit()) {
|
|
67
|
+
const counts = /* @__PURE__ */ new Map();
|
|
68
|
+
for (const f of facts)
|
|
69
|
+
counts.set(f.commit, (counts.get(f.commit) ?? 0) + 1);
|
|
70
|
+
if (!counts.size)
|
|
71
|
+
return void 0;
|
|
72
|
+
const head = await headCommitOf(dir);
|
|
73
|
+
const atHead = head ? [...counts.keys()].find((c) => sameCommit(c, head)) : void 0;
|
|
74
|
+
if (atHead)
|
|
75
|
+
return atHead;
|
|
76
|
+
const most = Math.max(...counts.values());
|
|
77
|
+
const top = [...counts].filter(([, n]) => n === most).map(([c]) => c).sort();
|
|
78
|
+
if (top.length === 1)
|
|
79
|
+
return top[0];
|
|
80
|
+
const newest = await git(["rev-list", "--no-walk", ...top], dir).then((r) => r.stdout.split("\n")[0]?.trim(), () => void 0);
|
|
81
|
+
return top.find((c) => !!newest && sameCommit(c, newest)) ?? top[0];
|
|
82
|
+
}
|
|
83
|
+
async function commitTree(dir, commit, git) {
|
|
84
|
+
const listed = await git(["ls-tree", "-r", "-l", "-z", "--full-tree", commit], dir).then((r) => r.stdout, () => void 0);
|
|
85
|
+
if (listed === void 0)
|
|
86
|
+
return void 0;
|
|
87
|
+
const files = listed.split("\0").filter(Boolean).flatMap((line) => {
|
|
88
|
+
const tab = line.indexOf(" ");
|
|
89
|
+
const [mode, type, , size] = line.slice(0, tab).trim().split(/\s+/);
|
|
90
|
+
if (tab < 0 || type !== "blob" || mode === "120000")
|
|
91
|
+
return [];
|
|
92
|
+
return [{ path: line.slice(tab + 1), size: Number(size) || 0 }];
|
|
93
|
+
});
|
|
94
|
+
return {
|
|
95
|
+
files: async () => files,
|
|
96
|
+
read: (p) => git(["cat-file", "blob", `${commit}:${p}`], dir).then((r) => r.stdout, () => void 0)
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
async function specTreeOf(repo, dir, commit, git, note) {
|
|
100
|
+
const as = commit ? { commit } : {};
|
|
101
|
+
if (!existsSync(join(dir, ".git")))
|
|
102
|
+
return as;
|
|
103
|
+
if (commit) {
|
|
104
|
+
const tree2 = await commitTree(dir, commit, git);
|
|
105
|
+
if (tree2)
|
|
106
|
+
return { tree: tree2, commit };
|
|
107
|
+
note?.(`${repo}: the facts' commit ${commit.slice(0, 12)} isn't in the clone, so its specs are read at the clone's HEAD; fetch it, or read the repo again.`);
|
|
108
|
+
}
|
|
109
|
+
const tree = await commitTree(dir, "HEAD", git);
|
|
110
|
+
if (!tree) {
|
|
111
|
+
note?.(`${repo}: git can't list the clone's files, so its specs are read from the folder.`);
|
|
112
|
+
return as;
|
|
113
|
+
}
|
|
114
|
+
const head = await headCommitOf(dir);
|
|
115
|
+
return { tree, ...head ? { commit: head } : as };
|
|
116
|
+
}
|
|
117
|
+
async function writeRepoSpecs(root, repo, dir, facts, onRefused, git = createGit()) {
|
|
118
|
+
const { tree, commit } = await specTreeOf(repo, dir, await specsCommitOf(facts, dir, git), git, onRefused);
|
|
119
|
+
const deny = await denyHashesAt(root);
|
|
120
|
+
const file = await readRepoSpecs(dir, {
|
|
121
|
+
repo,
|
|
122
|
+
...commit ? { commit } : {},
|
|
123
|
+
...tree ? { tree } : {},
|
|
124
|
+
facts,
|
|
125
|
+
...deny.size ? { denyHashes: deny } : {},
|
|
126
|
+
...onRefused ? { onRefused } : {}
|
|
127
|
+
});
|
|
128
|
+
const path = join(factsDirOf(root), `${repo}.specs.yaml`);
|
|
129
|
+
if (file.specs.length)
|
|
130
|
+
await writeFileAtomic(path, (0, import_yaml.stringify)(file, { lineWidth: 0 }));
|
|
131
|
+
else
|
|
132
|
+
await rm(path, { force: true });
|
|
133
|
+
return file;
|
|
134
|
+
}
|
|
135
|
+
async function loadRepoSpecs(root) {
|
|
136
|
+
const files = [];
|
|
137
|
+
const problems = [];
|
|
138
|
+
const rel = factsRelOf(root);
|
|
139
|
+
for (const n of (await readdir(factsDirOf(root)).catch(() => [])).sort()) {
|
|
140
|
+
if (!n.endsWith(".specs.yaml"))
|
|
141
|
+
continue;
|
|
142
|
+
let v;
|
|
143
|
+
try {
|
|
144
|
+
v = (0, import_yaml.parse)(await readFile(join(factsDirOf(root), n), "utf8"));
|
|
145
|
+
} catch (e) {
|
|
146
|
+
problems.push(`${rel}/${n} isn't YAML (${e.message}); it is left out.`);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const p = SpecsFile.safeParse(v);
|
|
150
|
+
if (p.success)
|
|
151
|
+
files.push(p.data);
|
|
152
|
+
else
|
|
153
|
+
problems.push(`${rel}/${n} isn't a specs file; it is left out.`);
|
|
154
|
+
}
|
|
155
|
+
return { files, problems };
|
|
156
|
+
}
|
|
157
|
+
async function intakenSpec(root, doc, system) {
|
|
158
|
+
const body = await readFile(join(inputsDirOf(root), ...doc.path.split("/").slice(1)), "utf8").catch(() => void 0);
|
|
159
|
+
if (body === void 0)
|
|
160
|
+
return void 0;
|
|
161
|
+
const vendor = readVendorSpec(doc.path, body, system);
|
|
162
|
+
const specs = vendor ? openApiContractSpecs(vendor) : readContractSpecs(doc.path, body);
|
|
163
|
+
if (!specs.length)
|
|
164
|
+
return void 0;
|
|
165
|
+
return {
|
|
166
|
+
path: doc.path,
|
|
167
|
+
...doc.title ? { title: doc.title } : {},
|
|
168
|
+
...doc.version ? { version: doc.version } : {},
|
|
169
|
+
specs,
|
|
170
|
+
operations: (vendor?.operations ?? []).map((o) => ({
|
|
171
|
+
id: o.id,
|
|
172
|
+
method: o.method,
|
|
173
|
+
path: o.path,
|
|
174
|
+
fullPath: o.fullPath,
|
|
175
|
+
cite: o.cite
|
|
176
|
+
})),
|
|
177
|
+
hosts: vendor?.hosts ?? []
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
async function stampOf(root) {
|
|
181
|
+
const out = [];
|
|
182
|
+
const walk = async (dir, rel) => {
|
|
183
|
+
const entries = await readdir(dir, { withFileTypes: true }).catch(() => void 0);
|
|
184
|
+
if (!entries)
|
|
185
|
+
return;
|
|
186
|
+
await Promise.all(entries.map(async (e) => {
|
|
187
|
+
const p = join(dir, e.name);
|
|
188
|
+
if (e.isDirectory())
|
|
189
|
+
return walk(p, `${rel}/${e.name}`);
|
|
190
|
+
const s = await stat(p).catch(() => void 0);
|
|
191
|
+
if (s)
|
|
192
|
+
out.push(`${rel}/${e.name}\0${s.size}\0${s.mtimeMs}`);
|
|
193
|
+
}));
|
|
194
|
+
};
|
|
195
|
+
const dirs = [
|
|
196
|
+
factsDirOf(root),
|
|
197
|
+
inputsDirOf(root),
|
|
198
|
+
orgPackDirOf(root),
|
|
199
|
+
questionsDirOf(root),
|
|
200
|
+
join(catalogDirOf(root), "curated")
|
|
201
|
+
];
|
|
202
|
+
await Promise.all(dirs.map((d, i) => walk(d, String(i))));
|
|
203
|
+
return out.sort().join("\n");
|
|
204
|
+
}
|
|
205
|
+
var kept = /* @__PURE__ */ new Map();
|
|
206
|
+
var cacheFileOf = (root, name) => join(resolve(root), ".atticus", "cache", `${name}.json`);
|
|
207
|
+
var stampKey = (stamp) => createHash("sha256").update(VERSION).update("\0").update(stamp).digest("hex");
|
|
208
|
+
async function readCached(root, name, stamp) {
|
|
209
|
+
try {
|
|
210
|
+
const c = JSON.parse(await readFile(cacheFileOf(root, name), "utf8"));
|
|
211
|
+
return c.key === stampKey(stamp) ? c.value : void 0;
|
|
212
|
+
} catch {
|
|
213
|
+
return void 0;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async function writeCached(root, name, stamp, value) {
|
|
217
|
+
await writeFileAtomic(cacheFileOf(root, name), JSON.stringify({ key: stampKey(stamp), value })).catch(() => void 0);
|
|
218
|
+
}
|
|
219
|
+
var breathe = () => new Promise((r) => setImmediate(r));
|
|
220
|
+
async function estateJoinOnFile(root, op, estate, stamp) {
|
|
221
|
+
const at = stamp ?? await stampOf(root);
|
|
222
|
+
const hit = await readCached(root, "estate-join", at);
|
|
223
|
+
if (hit)
|
|
224
|
+
return hit;
|
|
225
|
+
await breathe();
|
|
226
|
+
const join2 = estateJoinOf(op, estate.repos, estate.targets, estate.pairs, estate.aiTargets);
|
|
227
|
+
await writeCached(root, "estate-join", at, join2);
|
|
228
|
+
return join2;
|
|
229
|
+
}
|
|
230
|
+
async function contractCheckOf(root) {
|
|
231
|
+
const key = resolve(root);
|
|
232
|
+
const stamp = await stampOf(root);
|
|
233
|
+
const hit = kept.get(key);
|
|
234
|
+
if (hit && hit.stamp === stamp)
|
|
235
|
+
return hit.value;
|
|
236
|
+
const value = (async () => {
|
|
237
|
+
const disk = await readCached(root, "contract-check", stamp);
|
|
238
|
+
if (disk)
|
|
239
|
+
return { ...disk, newBySystem: new Map(disk.newBySystem) };
|
|
240
|
+
const v = await workOutContractCheck(root, stamp);
|
|
241
|
+
await writeCached(root, "contract-check", stamp, {
|
|
242
|
+
...v,
|
|
243
|
+
newBySystem: [...v.newBySystem]
|
|
244
|
+
});
|
|
245
|
+
return v;
|
|
246
|
+
})();
|
|
247
|
+
kept.set(key, { stamp, value });
|
|
248
|
+
value.catch(() => {
|
|
249
|
+
if (kept.get(key)?.value === value)
|
|
250
|
+
kept.delete(key);
|
|
251
|
+
});
|
|
252
|
+
return value;
|
|
253
|
+
}
|
|
254
|
+
async function workOutContractCheck(root, stamp) {
|
|
255
|
+
const quiet = { out: () => void 0, err: () => void 0 };
|
|
256
|
+
const { op, inputs } = await intakeContext(root, quiet);
|
|
257
|
+
const estate = await estateFacts(root, op, "");
|
|
258
|
+
const join2 = await estateJoinOnFile(root, op, estate, stamp);
|
|
259
|
+
const { files, problems } = await loadRepoSpecs(root);
|
|
260
|
+
const systems = outsideProfileSystems(op);
|
|
261
|
+
const outside = [];
|
|
262
|
+
for (const s of systems) {
|
|
263
|
+
const docs = inputs.documents.filter((d) => d.id && SPEC_CLASSES.has(d.classification) && d.systems[0] === s.id);
|
|
264
|
+
const newestDoc = docs.find((d) => !d.supersededBy);
|
|
265
|
+
const previousDoc = newestDoc ? docs.find((d) => d.supersededBy === newestDoc.id) : void 0;
|
|
266
|
+
const newest = newestDoc ? await intakenSpec(root, newestDoc, s.id) : void 0;
|
|
267
|
+
const previous = previousDoc ? await intakenSpec(root, previousDoc, s.id) : void 0;
|
|
268
|
+
outside.push({
|
|
269
|
+
system: s.id,
|
|
270
|
+
name: s.name,
|
|
271
|
+
...newest ? { newest } : {},
|
|
272
|
+
...previous ? { previous } : {}
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
const repos = joinReposOf(op, estate.repos, componentRenames(estate.repos, op));
|
|
276
|
+
const run = (pick) => {
|
|
277
|
+
const specs = [];
|
|
278
|
+
const vendors = [];
|
|
279
|
+
for (const o of outside) {
|
|
280
|
+
const s = pick(o);
|
|
281
|
+
if (!s)
|
|
282
|
+
continue;
|
|
283
|
+
const sys = systems.find((x) => x.id === o.system);
|
|
284
|
+
specs.push({ system: o.system, name: o.name, specs: s.specs });
|
|
285
|
+
if (s.operations.length)
|
|
286
|
+
vendors.push({
|
|
287
|
+
system: o.system,
|
|
288
|
+
boundary: "internal",
|
|
289
|
+
names: [sys.name, ...sys.aliases],
|
|
290
|
+
hosts: [.../* @__PURE__ */ new Set([...s.hosts, ...hostAliases(sys.aliases)])],
|
|
291
|
+
operations: s.operations
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
const matched = vendors.length ? joinVendorOperations({ repos, vendors, targets: estate.targets, ...joinConventions(op) }) : { matches: [] };
|
|
295
|
+
return checkContracts({
|
|
296
|
+
repos: estate.repos,
|
|
297
|
+
join: join2,
|
|
298
|
+
specs: files,
|
|
299
|
+
outside: specs,
|
|
300
|
+
vendorMatches: matched.matches
|
|
301
|
+
});
|
|
302
|
+
};
|
|
303
|
+
await breathe();
|
|
304
|
+
const result = run((o) => o.newest);
|
|
305
|
+
const newBySystem = /* @__PURE__ */ new Map();
|
|
306
|
+
if (outside.some((o) => o.previous)) {
|
|
307
|
+
await breathe();
|
|
308
|
+
const before = run((o) => o.previous ?? o.newest);
|
|
309
|
+
for (const o of outside)
|
|
310
|
+
if (o.previous)
|
|
311
|
+
newBySystem.set(o.system, newFindings(result.findings.filter((f) => f.system === o.system), before.findings.filter((f) => f.system === o.system)));
|
|
312
|
+
}
|
|
313
|
+
return { result, notes: [...estate.notes, ...problems], outside, newBySystem };
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export {
|
|
317
|
+
writeRepoSpecs,
|
|
318
|
+
stampOf,
|
|
319
|
+
estateJoinOnFile,
|
|
320
|
+
contractCheckOf
|
|
321
|
+
};
|