@maycombhq/atticus 2.0.0-beta.11 → 2.0.0-beta.12
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 +3 -3
- package/dist/{chunk-IILZ7J3L.js → chunk-22GLUHGE.js} +171 -62
- package/dist/{chunk-4UZJOQYK.js → chunk-2A24BNRZ.js} +7 -7
- package/dist/{chunk-HOUUBE74.js → chunk-2ELFEKOO.js} +4 -4
- package/dist/{chunk-R6UTCLH5.js → chunk-2P6IHSRO.js} +16 -16
- package/dist/chunk-2Q2YBAR5.js +40 -0
- package/dist/{chunk-6E2GJANQ.js → chunk-2VQLFNBO.js} +19 -19
- package/dist/{chunk-SILY6ZEZ.js → chunk-3256EDLL.js} +3 -3
- package/dist/{chunk-YLAM4HZH.js → chunk-34BCKMBS.js} +3 -3
- package/dist/{chunk-GVFUEGGM.js → chunk-34NWVIBC.js} +2 -2
- package/dist/{chunk-4ONORLK5.js → chunk-36KD4OGC.js} +13 -13
- package/dist/{chunk-B3QOYE74.js → chunk-3CFBU2O6.js} +4 -4
- package/dist/{chunk-77RSRG3A.js → chunk-3JLTN3Y7.js} +7 -7
- package/dist/{chunk-QWHTTA2X.js → chunk-3M7QBKKG.js} +8 -6
- package/dist/{chunk-DQNKG4HY.js → chunk-3RP34PYV.js} +17 -17
- package/dist/{chunk-7HQOZALR.js → chunk-3ZKLWM5Y.js} +10 -10
- package/dist/{chunk-SUQZGPVG.js → chunk-47HPZ34V.js} +24 -24
- package/dist/chunk-4BPROPGG.js +45 -0
- package/dist/{chunk-LUPW4WLK.js → chunk-4G56W6H7.js} +8 -8
- package/dist/{chunk-JRPQX2EK.js → chunk-4HIQ2FTI.js} +4 -4
- package/dist/{chunk-2K2ZEJVR.js → chunk-4HTILEXW.js} +2 -2
- package/dist/{chunk-S7ZWCMDO.js → chunk-4Q2PGM5T.js} +8 -9
- package/dist/{chunk-XPJR74MA.js → chunk-4RDW2X43.js} +37 -25
- package/dist/{chunk-7LCQ7JAM.js → chunk-4VOG5H2K.js} +1 -1
- package/dist/chunk-5CSZTVXH.js +34 -0
- package/dist/{chunk-KU4T2CXJ.js → chunk-5FFMJMVH.js} +18 -18
- package/dist/{chunk-XOVLGBKI.js → chunk-5GGGAI5C.js} +17 -17
- package/dist/{chunk-7S3XFWOU.js → chunk-5H46QFSL.js} +4 -4
- package/dist/{chunk-XJAJQGXJ.js → chunk-5ION6STH.js} +2 -2
- package/dist/{chunk-HZYFLEWO.js → chunk-5M3CLAOV.js} +17 -17
- package/dist/{chunk-WUE6HKIU.js → chunk-5OACMWWI.js} +135 -39
- package/dist/{chunk-OR5VRULZ.js → chunk-6ENDKY52.js} +10 -10
- package/dist/{chunk-6V3DTQWK.js → chunk-6FG7QKJC.js} +21 -21
- package/dist/{chunk-SH7AZZDA.js → chunk-6JV3YHRR.js} +17 -17
- package/dist/{chunk-GWSWS264.js → chunk-6ROZRBWH.js} +4 -4
- package/dist/{chunk-MYKQVS5W.js → chunk-6S27MUQQ.js} +10 -6
- package/dist/{chunk-TZXHUDI6.js → chunk-72DY5NCN.js} +2 -2
- package/dist/chunk-76QVBNEM.js +37 -0
- package/dist/{chunk-XNRPCI23.js → chunk-77UOXZVM.js} +5 -5
- package/dist/{chunk-EHUYLNLC.js → chunk-7AXMUE2U.js} +14 -14
- package/dist/{chunk-LS3WR2RF.js → chunk-7TEQF64E.js} +122 -59
- package/dist/{chunk-EI4KQYJ3.js → chunk-7TH6I6TL.js} +8 -8
- package/dist/{chunk-7SZPENUP.js → chunk-7UKETVPW.js} +1 -1
- package/dist/{chunk-LDIARP6F.js → chunk-7VNEDDCC.js} +2 -2
- package/dist/{chunk-CRQ73DIF.js → chunk-A5GY2EWH.js} +11 -11
- package/dist/{chunk-FOQXYMOR.js → chunk-AEZ3EICK.js} +19 -19
- package/dist/{chunk-RJDP642F.js → chunk-ARLH2ZMD.js} +1 -1
- package/dist/{chunk-26DBAGOP.js → chunk-AYVLEB55.js} +17 -17
- package/dist/{chunk-IA2RKC6I.js → chunk-B6X5PJSA.js} +52 -11
- package/dist/{chunk-S2FDPN32.js → chunk-BRCDEGNE.js} +1 -1
- package/dist/{chunk-JEUXCIRD.js → chunk-BSVTNNUK.js} +5 -5
- package/dist/{chunk-Y5AYBGLB.js → chunk-BTOGAUWX.js} +13 -10
- package/dist/{chunk-MCWWMMLN.js → chunk-BXP2Q4TD.js} +22 -22
- package/dist/{chunk-UFBKJOWB.js → chunk-BZRWJUB4.js} +14 -14
- package/dist/{chunk-5ACUW753.js → chunk-CH6LUQLD.js} +1 -1
- package/dist/{chunk-7VFVQX5K.js → chunk-CIIRPLI6.js} +4 -4
- package/dist/{chunk-SNHOLLGN.js → chunk-CJXM6SG4.js} +84 -25
- package/dist/{chunk-BKFGGJKA.js → chunk-CQD26SMZ.js} +3 -1
- package/dist/{chunk-4URR24DD.js → chunk-CW5SEPUT.js} +6 -6
- package/dist/{chunk-MV4637YA.js → chunk-CWSZP2LU.js} +24 -24
- package/dist/{chunk-5BJFMAQU.js → chunk-CXK27ZUY.js} +12 -12
- package/dist/{chunk-5NZSJ5ZG.js → chunk-CXY4YDXS.js} +2 -2
- package/dist/{chunk-NG5R2WIY.js → chunk-DDZZXVQ5.js} +9 -9
- package/dist/{chunk-PQW7PYUR.js → chunk-DGZXJO5I.js} +7 -7
- package/dist/{chunk-TCADP67G.js → chunk-DONCF2XC.js} +3 -3
- package/dist/{chunk-XF3DATVU.js → chunk-DPNCAFMB.js} +17 -17
- package/dist/{chunk-ORZSD2KD.js → chunk-DQKNOHUZ.js} +1 -1
- package/dist/{chunk-CAN3EBE5.js → chunk-DW4BM73R.js} +1 -1
- package/dist/{chunk-NX6QEEOA.js → chunk-DWN7RSNQ.js} +3 -3
- package/dist/{chunk-EV4TEFOD.js → chunk-DWYPYVPJ.js} +13 -13
- package/dist/{chunk-5RUMHLIS.js → chunk-E73QLYK7.js} +24 -3
- package/dist/{chunk-LZWVK4YY.js → chunk-EE3UNC44.js} +3 -3
- package/dist/{chunk-REWZE2XI.js → chunk-EJDZEK22.js} +23 -23
- package/dist/{chunk-VYNZED7B.js → chunk-ENZWVTTN.js} +20 -20
- package/dist/{chunk-NBGBMRIS.js → chunk-EREL3TQG.js} +1 -1
- package/dist/{chunk-NH5QH3WS.js → chunk-ESGIBN3S.js} +1 -1
- package/dist/{chunk-EBWIOODZ.js → chunk-EU7VTBAI.js} +4 -4
- package/dist/chunk-F5GA6G3U.js +48 -0
- package/dist/{chunk-Z2EYRUOH.js → chunk-F6FGIYPT.js} +19 -19
- package/dist/{chunk-H4VJO3M2.js → chunk-FAET4BB6.js} +5 -5
- package/dist/{chunk-5ICB2BXH.js → chunk-FBFSTYAB.js} +7 -7
- package/dist/{chunk-IWZPGIGT.js → chunk-FEBYMFZA.js} +23 -23
- package/dist/chunk-FMV6IZ3P.js +54 -0
- package/dist/{chunk-TGEOLIAK.js → chunk-FQ6IBYFC.js} +3 -3
- package/dist/{chunk-R3VFLYZZ.js → chunk-FSJMFPA3.js} +6 -6
- package/dist/{chunk-SIUDWWKS.js → chunk-GFZ5MIQG.js} +23 -23
- package/dist/{chunk-6RGIM2ZH.js → chunk-GHSVJNVL.js} +75 -8
- package/dist/{chunk-XR5DD5DQ.js → chunk-GKPOCUQR.js} +12 -7
- package/dist/{chunk-NR5T46ZY.js → chunk-GLSNVC67.js} +16 -16
- package/dist/{chunk-T6ESD5KM.js → chunk-GMDOXWIS.js} +4 -4
- package/dist/{chunk-5TY4DTHQ.js → chunk-GN5ZLSLD.js} +3 -3
- package/dist/{chunk-MKIULIUQ.js → chunk-GUNBOZ75.js} +3 -3
- package/dist/{chunk-ZTNS3L5Z.js → chunk-GYS64N6F.js} +5 -5
- package/dist/{chunk-ANCI3LFS.js → chunk-HIQWJ6JZ.js} +4 -4
- package/dist/{chunk-4AYZQ3SY.js → chunk-HJ52XDST.js} +4 -4
- package/dist/{chunk-EW7MRMD5.js → chunk-HJUEQERG.js} +16 -7
- package/dist/{chunk-ZJQUIG3A.js → chunk-HKGQUOQ3.js} +15 -14
- package/dist/chunk-HP32HUWR.js +41 -0
- package/dist/{chunk-WIMOJMAK.js → chunk-HY2VVVFZ.js} +168 -14
- package/dist/{chunk-G3PBLW4K.js → chunk-I2PNEG3M.js} +34 -9
- package/dist/{chunk-XKJRPVJO.js → chunk-INCECZ2E.js} +5 -5
- package/dist/{chunk-6N2GUZMZ.js → chunk-ISXNWUG7.js} +1 -1
- package/dist/{chunk-HGQZTUAC.js → chunk-ITJ7ST5E.js} +4 -4
- package/dist/{chunk-SINJKQSI.js → chunk-J3VAFDEX.js} +13 -13
- package/dist/{chunk-WFYHOXTB.js → chunk-JGLZUQVN.js} +15 -15
- package/dist/{chunk-7RGCQ4VZ.js → chunk-JLIEAQP4.js} +4 -4
- package/dist/{chunk-L7I5PKGD.js → chunk-JQG4VO47.js} +1 -1
- package/dist/{chunk-GPLFYLGH.js → chunk-JXXQHETS.js} +10 -10
- package/dist/{chunk-JUZ75OG4.js → chunk-KNGESBFW.js} +15 -15
- package/dist/{chunk-UABFFMWH.js → chunk-KUYA2E7M.js} +7 -7
- package/dist/{chunk-YWZDAZMA.js → chunk-KY2ZHTBJ.js} +6 -6
- package/dist/{chunk-5P5BGG5L.js → chunk-L4UIKAWD.js} +6 -6
- package/dist/{chunk-IRW64JFF.js → chunk-LDUJ6NIT.js} +4 -4
- package/dist/{chunk-7A7IG7OA.js → chunk-LTLR4JZJ.js} +10 -10
- package/dist/{chunk-UTR67XU2.js → chunk-MFRPLAOH.js} +2 -2
- package/dist/{chunk-V4XKYGLK.js → chunk-MH7UBG47.js} +4 -4
- package/dist/{chunk-XPWSNKF3.js → chunk-MLAACAES.js} +55 -12
- package/dist/{chunk-BQNEHB5U.js → chunk-MNCQ2GL7.js} +11 -11
- package/dist/{chunk-Z46OXTBE.js → chunk-MNUZX67F.js} +5 -5
- package/dist/{chunk-RWMSJP7H.js → chunk-MQHYCS6A.js} +26 -25
- package/dist/{chunk-FMRMTI7W.js → chunk-MRLCNXXR.js} +1 -1
- package/dist/{chunk-BA5DTXHQ.js → chunk-NCONDPHH.js} +4 -4
- package/dist/{chunk-UNFCFJMF.js → chunk-NHS55U7T.js} +17 -17
- package/dist/{chunk-C2YGYTU6.js → chunk-NL6XQZSV.js} +22 -22
- package/dist/{chunk-TC3KTG33.js → chunk-NSJ6ZR2A.js} +3 -3
- package/dist/{chunk-3DDJLI7N.js → chunk-NTNJNRHW.js} +4 -4
- package/dist/{chunk-GG6HIU74.js → chunk-NTTXTLCQ.js} +24 -24
- package/dist/{chunk-55TBYJF2.js → chunk-NWL7XEQ4.js} +17 -16
- package/dist/{chunk-U6YKL7SI.js → chunk-NWXY3B4R.js} +22 -22
- package/dist/{chunk-4YWRU7JK.js → chunk-O5W4ECUY.js} +15 -15
- package/dist/{chunk-IVHN2VYG.js → chunk-OJAJXU65.js} +3 -1
- package/dist/{chunk-EZSZFI54.js → chunk-OMH3I5BH.js} +2 -2
- package/dist/{chunk-RIEFYHXI.js → chunk-P6UJ22XR.js} +4 -4
- package/dist/{chunk-LVBPY2M6.js → chunk-P76AW3PA.js} +298 -14
- package/dist/{chunk-23VFQHFQ.js → chunk-PCCPXWJC.js} +31 -21
- package/dist/{chunk-DS3ZEJVN.js → chunk-PGFRXGHA.js} +2 -2
- package/dist/{chunk-5V5BJACL.js → chunk-PJRMMWU4.js} +2 -2
- package/dist/{chunk-BX52REMA.js → chunk-PKJ3K3GM.js} +5 -5
- package/dist/{chunk-KLKENMWQ.js → chunk-PVW2N63M.js} +58 -43
- package/dist/{chunk-OFWYZH6B.js → chunk-Q55UP5EZ.js} +21 -21
- package/dist/{chunk-C5JFMAXX.js → chunk-QAFMLBPF.js} +11 -11
- package/dist/{chunk-CZI2ACNT.js → chunk-QEZSA2O7.js} +16 -16
- package/dist/{chunk-27EDZN52.js → chunk-QJ3OX7OC.js} +31 -31
- package/dist/{chunk-GMJXC5AL.js → chunk-QL4VNY4U.js} +1 -1
- package/dist/{chunk-TEBBD4XH.js → chunk-QR65C3DV.js} +4 -4
- package/dist/{chunk-SG5KY4VB.js → chunk-QXGOEP44.js} +3 -3
- package/dist/chunk-QY7RGTUP.js +326 -0
- package/dist/{chunk-XZJE6WIT.js → chunk-RA64IK43.js} +1 -1
- package/dist/{chunk-7HWXYP4H.js → chunk-RLJDYLID.js} +11 -11
- package/dist/{chunk-NELU7LSL.js → chunk-RMLUZYEA.js} +10 -10
- package/dist/chunk-RSVBX6A3.js +54 -0
- package/dist/{chunk-D7MWYJZF.js → chunk-RZWZO2JQ.js} +16 -17
- package/dist/{chunk-KQRYW7OS.js → chunk-SAC6FNKR.js} +108 -108
- package/dist/{chunk-HR4DVO6X.js → chunk-SCBU46AJ.js} +3 -3
- package/dist/{chunk-Q32Y5T2U.js → chunk-SGNHNN3G.js} +11 -11
- package/dist/{chunk-WKXOEIOY.js → chunk-SHAAGH3T.js} +14 -14
- package/dist/{chunk-ATNG5VOZ.js → chunk-SK5OYWIY.js} +2 -2
- package/dist/{chunk-CE4S5ZY3.js → chunk-SNSFQ47W.js} +11 -11
- package/dist/{chunk-WCLAOKCH.js → chunk-SSL6JMPA.js} +8 -8
- package/dist/{chunk-SKMHS4CL.js → chunk-TA2ZNDYD.js} +1 -1
- package/dist/{chunk-YVCOQ5TZ.js → chunk-TEHH47TG.js} +3 -3
- package/dist/{chunk-EATSD7YD.js → chunk-TEZSZ24W.js} +4 -4
- package/dist/{chunk-RB2VSED2.js → chunk-TH526O6E.js} +11 -11
- package/dist/{chunk-WUP77GG2.js → chunk-TIAPEYWI.js} +3 -3
- package/dist/{chunk-C75W7VXX.js → chunk-TLCRIAU3.js} +20 -18
- package/dist/chunk-TV4CGNEY.js +43 -0
- package/dist/{chunk-IY4PHPHT.js → chunk-TVSNWIAM.js} +7 -5
- package/dist/{chunk-7RUMD56V.js → chunk-TWHZU36X.js} +1 -1
- package/dist/{chunk-JBSD57N7.js → chunk-TXV2AYZB.js} +23 -23
- package/dist/{chunk-JMOLB347.js → chunk-U25OX22K.js} +64 -8
- package/dist/{chunk-JQX6BSE4.js → chunk-U4NNG3ES.js} +10 -10
- package/dist/{chunk-3LU6YCSQ.js → chunk-U5T4A2QV.js} +5 -5
- package/dist/{chunk-G7WZH54P.js → chunk-UT5OA7KA.js} +20 -10
- package/dist/{chunk-MKC7P5LD.js → chunk-V3VCUSQ6.js} +14 -14
- package/dist/{chunk-MYOW3RPC.js → chunk-V5XV3JSP.js} +6 -6
- package/dist/{chunk-YWOMGMZB.js → chunk-VF4VOPMB.js} +22 -22
- package/dist/{chunk-DYWTQXP4.js → chunk-VLDM4QZM.js} +22 -22
- package/dist/chunk-VP5H6DII.js +34 -0
- package/dist/{chunk-OHXTB6CO.js → chunk-VRYQJZFL.js} +7 -8
- package/dist/{chunk-EQOSXLK3.js → chunk-VS6FS472.js} +14 -14
- package/dist/{chunk-U5PDQTLA.js → chunk-VTMIRRIZ.js} +2 -2
- package/dist/{chunk-MSL3CLHX.js → chunk-VXSJKWB7.js} +16 -16
- package/dist/{chunk-MQNBEO3N.js → chunk-WE5VMPUP.js} +106 -102
- package/dist/{chunk-J27QGXO4.js → chunk-WEG7DY5K.js} +9 -9
- package/dist/{chunk-OXVVRJDQ.js → chunk-WIF7A6JU.js} +11 -11
- package/dist/{chunk-KXZR2BLL.js → chunk-WM4N2L4T.js} +1 -1
- package/dist/{chunk-NIYB5K5B.js → chunk-X64BFQ3R.js} +9 -9
- package/dist/{chunk-WGU6NIUV.js → chunk-XJRC3ZDI.js} +12 -12
- package/dist/{chunk-EAQFRD2B.js → chunk-XVIVWG7B.js} +6 -6
- package/dist/{chunk-3WU7LVTL.js → chunk-Y3ZKT6IF.js} +5 -5
- package/dist/{chunk-7KXYMC2P.js → chunk-YURIUFKF.js} +15 -15
- package/dist/{chunk-R3RVFCJ2.js → chunk-YY2WGL6S.js} +2 -2
- package/dist/{chunk-HQMCHHY5.js → chunk-Z2BA4NNR.js} +2 -2
- package/dist/{chunk-JUQHYTXN.js → chunk-Z47YGBUY.js} +18 -17
- package/dist/chunk-Z4JSRKNR.js +41 -0
- package/dist/{chunk-DGKNOPSE.js → chunk-Z53ZB34U.js} +7 -7
- package/dist/{chunk-LEHZTKB3.js → chunk-ZBOPIYOY.js} +11 -11
- package/dist/{chunk-KIWEBM6G.js → chunk-ZBQCLKTH.js} +11 -11
- package/dist/chunk-ZGI7DNJ6.js +38 -0
- package/dist/{chunk-BUWSOQLU.js → chunk-ZPT4QX3J.js} +4 -4
- package/dist/{chunk-52WCHTVZ.js → chunk-ZS47PQ3O.js} +3 -3
- package/dist/{chunk-7J7UY46S.js → chunk-ZTIMXVV5.js} +2 -2
- package/dist/{chunk-ZKUDS7JG.js → chunk-ZYASEL7K.js} +4 -4
- package/dist/files.json +443 -439
- package/dist/packages/sdk/npm/index.js +9 -0
- package/dist/packages/ui/dist/assets/{elk-api-DDup23Us.js → elk-api-D2NcYpUJ.js} +2 -2
- package/dist/packages/ui/dist/assets/index-CT7skl01.js +29 -0
- package/dist/packages/ui/dist/index.html +1 -1
- package/package.json +3 -3
- package/dist/chunk-4Y4FY34K.js +0 -34
- package/dist/chunk-ACWQDL6T.js +0 -37
- package/dist/chunk-ASKDCMW5.js +0 -275
- package/dist/chunk-B3UHYXHU.js +0 -41
- package/dist/chunk-DDAEAZEV.js +0 -54
- package/dist/chunk-E25G46RW.js +0 -54
- package/dist/chunk-KQK6SQPE.js +0 -48
- package/dist/chunk-NCR24CPV.js +0 -41
- package/dist/chunk-NDW4ROST.js +0 -38
- package/dist/chunk-OJN7WME4.js +0 -34
- package/dist/chunk-UFTQIK2J.js +0 -43
- package/dist/chunk-ZHWSL6SR.js +0 -45
- package/dist/packages/ui/dist/assets/index-mTOWhQZm.js +0 -29
package/dist/bin.js
CHANGED
|
@@ -6,7 +6,7 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
|
6
6
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
7
7
|
import {
|
|
8
8
|
VERSION
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TWHZU36X.js";
|
|
10
10
|
import "./chunk-TV45EUGM.js";
|
|
11
11
|
|
|
12
12
|
// packages/cli/dist/bin.js
|
|
@@ -21,7 +21,7 @@ if (argv.length === 1 && (argv[0] === "--version" || argv[0] === "-v"))
|
|
|
21
21
|
process.stdout.write(VERSION + "\n");
|
|
22
22
|
else {
|
|
23
23
|
if (process.env.ATTICUS_MAX_OLD_SPACE) {
|
|
24
|
-
const { reExecForMemory } = await import("./chunk-
|
|
24
|
+
const { reExecForMemory } = await import("./chunk-PGFRXGHA.js");
|
|
25
25
|
const again = reExecForMemory(process.env, process.execArgv);
|
|
26
26
|
if (again) {
|
|
27
27
|
const { spawnSync } = await import("node:child_process");
|
|
@@ -29,7 +29,7 @@ else {
|
|
|
29
29
|
process.exit(r.status ?? 1);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
const { main } = await import("./chunk-
|
|
32
|
+
const { main } = await import("./chunk-WE5VMPUP.js");
|
|
33
33
|
await main(argv, {
|
|
34
34
|
out: (line) => process.stdout.write(line + "\n"),
|
|
35
35
|
err: (line) => process.stderr.write(line + "\n")
|
|
@@ -7,18 +7,18 @@ import {
|
|
|
7
7
|
featuresForScan,
|
|
8
8
|
namingHint,
|
|
9
9
|
syncSources
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-QR65C3DV.js";
|
|
11
11
|
import {
|
|
12
12
|
dirSource,
|
|
13
13
|
sameCommit,
|
|
14
14
|
verifyFacts
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-MLAACAES.js";
|
|
16
16
|
import {
|
|
17
17
|
scanInputs
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-HY2VVVFZ.js";
|
|
19
19
|
import {
|
|
20
20
|
listIngestors
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-PJRMMWU4.js";
|
|
22
22
|
import {
|
|
23
23
|
BUILT_IN_EXTRACTORS,
|
|
24
24
|
MODEL_READERS,
|
|
@@ -33,12 +33,12 @@ import {
|
|
|
33
33
|
runDialectTests,
|
|
34
34
|
runFrameworkTests,
|
|
35
35
|
unmodelledFrameworks
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-34NWVIBC.js";
|
|
37
37
|
import {
|
|
38
38
|
baseClonePath,
|
|
39
39
|
changesSince,
|
|
40
40
|
checkoutState
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-RA64IK43.js";
|
|
42
42
|
import {
|
|
43
43
|
DEFAULT_IGNORES,
|
|
44
44
|
configHash,
|
|
@@ -50,11 +50,11 @@ import {
|
|
|
50
50
|
sandboxedExtractor,
|
|
51
51
|
scanRepo,
|
|
52
52
|
withParseCache
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-MRLCNXXR.js";
|
|
54
54
|
import {
|
|
55
55
|
buildContextPack,
|
|
56
56
|
toRunSummary
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-CQD26SMZ.js";
|
|
58
58
|
import {
|
|
59
59
|
AgentDefinition,
|
|
60
60
|
DECLARED_CALLER,
|
|
@@ -135,7 +135,7 @@ import {
|
|
|
135
135
|
toCanonicalYaml,
|
|
136
136
|
topicQuestionText,
|
|
137
137
|
urlHostPort
|
|
138
|
-
} from "./chunk-
|
|
138
|
+
} from "./chunk-U25OX22K.js";
|
|
139
139
|
import {
|
|
140
140
|
SCHEMA_VERSION,
|
|
141
141
|
writeFileAtomic
|
|
@@ -1494,6 +1494,7 @@ import { createHash as createHash2 } from "node:crypto";
|
|
|
1494
1494
|
// packages/scanner/dist/target-suggest.js
|
|
1495
1495
|
var TARGETS_MAX_SUGGESTED = 5;
|
|
1496
1496
|
var TARGETS_ANOTHER = TARGETS_ANOTHER_LABEL;
|
|
1497
|
+
var TARGETS_NO_EVIDENCE = "no evidence; listed so you can pick it";
|
|
1497
1498
|
var STOP = new Set("url uri base host client clients service services svc api apis http https rest endpoint endpoints impl java kt ts js py cs go src main test get post put delete patch the and for com www internal example config configs properties yaml yml env app apps application new call calls feign template web request requests response gateway proxy remote adapter port".split(" "));
|
|
1498
1499
|
function nameWords(s) {
|
|
1499
1500
|
if (!s)
|
|
@@ -1531,20 +1532,14 @@ function hostOf(f, facts) {
|
|
|
1531
1532
|
return fromUrl(f.host) ?? f.host.split(/[/:]/)[0];
|
|
1532
1533
|
if (f.base) {
|
|
1533
1534
|
const cfg = facts.find((x) => x.kind === "config" && x.key === f.base && !!x.value);
|
|
1534
|
-
|
|
1535
|
+
if (!cfg?.value)
|
|
1536
|
+
return void 0;
|
|
1537
|
+
return fromUrl(cfg.value) ?? (/^[a-z0-9-]+(\.[a-z0-9-]+)+(:\d+)?$/i.test(cfg.value) ? cfg.value.split(":")[0] : void 0);
|
|
1535
1538
|
}
|
|
1536
1539
|
return void 0;
|
|
1537
1540
|
}
|
|
1538
1541
|
var answerLabel = (q) => q.answer?.option !== void 0 ? q.options[q.answer.option - 1]?.label : q.answer?.text;
|
|
1539
1542
|
var NOT_A_TARGET = /* @__PURE__ */ new Set(["None of these", TARGETS_SPLIT_LABEL, TARGETS_ANOTHER_LABEL]);
|
|
1540
|
-
var SERVES = {
|
|
1541
|
-
rest: ["rest"],
|
|
1542
|
-
soap: ["soap"],
|
|
1543
|
-
graphql: ["graphql"],
|
|
1544
|
-
grpc: ["grpc"],
|
|
1545
|
-
webhook: ["webhook"],
|
|
1546
|
-
sftp: ["file-drop"]
|
|
1547
|
-
};
|
|
1548
1543
|
function candidates(callerRepo, ctx) {
|
|
1549
1544
|
const manifest = estateRepos(ctx.op).filter((r) => r.id !== callerRepo || !!ctx.only);
|
|
1550
1545
|
const systems = ctx.op.profiles.flatMap((p) => p.profile?.systems ?? []);
|
|
@@ -1612,7 +1607,6 @@ function candidates(callerRepo, ctx) {
|
|
|
1612
1607
|
names,
|
|
1613
1608
|
bases,
|
|
1614
1609
|
entries,
|
|
1615
|
-
types: new Set(mine.map((e) => e.endpointType)),
|
|
1616
1610
|
...m.description?.text ? { description: m.description.text } : {},
|
|
1617
1611
|
hosts: m.hosts.map((h) => h.toLowerCase())
|
|
1618
1612
|
});
|
|
@@ -1632,7 +1626,6 @@ function candidates(callerRepo, ctx) {
|
|
|
1632
1626
|
names: /* @__PURE__ */ new Map(),
|
|
1633
1627
|
bases: [],
|
|
1634
1628
|
entries: [],
|
|
1635
|
-
types: /* @__PURE__ */ new Set(),
|
|
1636
1629
|
hosts: []
|
|
1637
1630
|
});
|
|
1638
1631
|
const own = new Set(estateRepos(ctx.op).flatMap((r) => r.system ? [r.system] : []));
|
|
@@ -1659,7 +1652,6 @@ function candidates(callerRepo, ctx) {
|
|
|
1659
1652
|
names,
|
|
1660
1653
|
bases: [],
|
|
1661
1654
|
entries: [],
|
|
1662
|
-
types: /* @__PURE__ */ new Set(),
|
|
1663
1655
|
hosts: s.aliases.map((a) => a.toLowerCase())
|
|
1664
1656
|
});
|
|
1665
1657
|
}
|
|
@@ -1675,21 +1667,20 @@ function targetSuggestions(f, ctx) {
|
|
|
1675
1667
|
const host = hostOf(f, ctx.facts)?.toLowerCase();
|
|
1676
1668
|
const client = clientOf(f);
|
|
1677
1669
|
const said = [
|
|
1678
|
-
{ from: f.base ? `
|
|
1679
|
-
{ from: client ? `
|
|
1670
|
+
{ from: f.base ? `the config key ${f.base}` : "", words: nameWords(f.base), weight: 4 },
|
|
1671
|
+
{ from: client ? `the client ${client}` : "", words: nameWords(client), weight: 4 },
|
|
1680
1672
|
{
|
|
1681
|
-
from: host ? `
|
|
1673
|
+
from: host ? `the host label ${host.split(".")[0]} (${host})` : "",
|
|
1682
1674
|
words: host ? nameWords(host.split(".")[0]) : [],
|
|
1683
1675
|
weight: 4
|
|
1684
1676
|
},
|
|
1685
1677
|
{
|
|
1686
|
-
from: `
|
|
1678
|
+
from: `the path ${f.path}`,
|
|
1687
1679
|
words: nameWords(segs(f.path).filter((x) => x !== "{}").join(" ")),
|
|
1688
1680
|
weight: 2
|
|
1689
1681
|
}
|
|
1690
1682
|
].filter((x) => x.from && x.words.length);
|
|
1691
1683
|
const method = f.method?.toUpperCase();
|
|
1692
|
-
const types = new Set(SERVES[f.callType] ?? []);
|
|
1693
1684
|
const earlier = (ctx.questions ?? []).filter((q) => q.askedBy?.step === TARGETS_STEP_ID && q.state === "answered" && q.repo === f.repo && !q.evidence.includes(`${f.cite.file}:${f.cite.line}`));
|
|
1694
1685
|
const only = ctx.only ? new Set(ctx.only) : void 0;
|
|
1695
1686
|
const out = [];
|
|
@@ -1703,18 +1694,21 @@ function targetSuggestions(f, ctx) {
|
|
|
1703
1694
|
};
|
|
1704
1695
|
if (only?.has(c.s.label))
|
|
1705
1696
|
add(6, "the join found an entry of it that serves the call");
|
|
1706
|
-
const hit = c.entries.find((e) => (!method || !e.method || e.method === method) && serves(e.path, f.path, c.bases.map((b) => b.path)));
|
|
1707
|
-
if (hit && !only)
|
|
1708
|
-
|
|
1697
|
+
const hit = c.entries.find((e) => (!method || !e.method || e.method === method || e.method === "ANY") && serves(e.path, f.path, c.bases.map((b) => b.path)));
|
|
1698
|
+
if (hit && !only) {
|
|
1699
|
+
const what2 = [hit.method, hit.path].filter(Boolean).join(" ");
|
|
1700
|
+
add(6, `serves ${what2} (${hit.at})`);
|
|
1701
|
+
s.serves = [what2];
|
|
1702
|
+
}
|
|
1709
1703
|
const base2 = c.bases.find((b) => under(f.path, b.path));
|
|
1710
1704
|
if (base2)
|
|
1711
|
-
add(5,
|
|
1705
|
+
add(5, `its basePath ${base2.path} matches: ${base2.from}`);
|
|
1712
1706
|
if (host && c.hosts.includes(host))
|
|
1713
|
-
add(8, `it
|
|
1707
|
+
add(8, `it lists ${host} under hosts`);
|
|
1714
1708
|
for (const x of said) {
|
|
1715
1709
|
const w = x.words.find((y) => c.names.has(y) && telling(y));
|
|
1716
1710
|
if (w)
|
|
1717
|
-
add(x.weight,
|
|
1711
|
+
add(x.weight, `named like ${x.from}`);
|
|
1718
1712
|
}
|
|
1719
1713
|
if (c.description) {
|
|
1720
1714
|
const d = new Set(nameWords(c.description));
|
|
@@ -1730,9 +1724,9 @@ function targetSuggestions(f, ctx) {
|
|
|
1730
1724
|
return t === slugify(c.s.label) || !!c.s.repo && t === slugify(c.s.repo);
|
|
1731
1725
|
}).length;
|
|
1732
1726
|
if (named2)
|
|
1733
|
-
add(3,
|
|
1734
|
-
if (
|
|
1735
|
-
s.why.push(
|
|
1727
|
+
add(3, `picked for ${named2} other ${named2 === 1 ? "call" : "calls"} of ${f.repo}`);
|
|
1728
|
+
if (!s.score)
|
|
1729
|
+
s.why.push(TARGETS_NO_EVIDENCE);
|
|
1736
1730
|
s.why = [...new Set(s.why)];
|
|
1737
1731
|
out.push(s);
|
|
1738
1732
|
}
|
|
@@ -1867,7 +1861,7 @@ function targetQuestionFor(f) {
|
|
|
1867
1861
|
evidence: [`${f.cite.file}:${f.cite.line}`]
|
|
1868
1862
|
};
|
|
1869
1863
|
}
|
|
1870
|
-
var
|
|
1864
|
+
var SERVES = {
|
|
1871
1865
|
rest: ["rest"],
|
|
1872
1866
|
soap: ["soap"],
|
|
1873
1867
|
graphql: ["graphql"],
|
|
@@ -1886,7 +1880,7 @@ function targetAsks(facts, records, asks) {
|
|
|
1886
1880
|
if (f.kind !== "call" || !needsTarget(f, facts) && !ask)
|
|
1887
1881
|
continue;
|
|
1888
1882
|
const own = slugify(f.component ?? f.repo).replace(/\./g, "-");
|
|
1889
|
-
const types = new Set(
|
|
1883
|
+
const types = new Set(SERVES[f.callType] ?? []);
|
|
1890
1884
|
const servers = ask ? [...new Set(ask.candidates.map((c) => c.component))].sort() : [
|
|
1891
1885
|
...new Set(records.filter((r) => r.kind === "Endpoint" && types.has(r.endpointType) && r.component !== own).filter((r) => repoOf.get(r.component) !== f.repo).map((r) => r.component))
|
|
1892
1886
|
].sort();
|
|
@@ -1896,20 +1890,31 @@ function targetAsks(facts, records, asks) {
|
|
|
1896
1890
|
}
|
|
1897
1891
|
var outsideAs = (s) => s.boundary === "vendor" ? "an outside system" : "another team's system";
|
|
1898
1892
|
var callWhat = (f) => [f.method?.toUpperCase(), f.path].filter(Boolean).join(" ");
|
|
1899
|
-
function
|
|
1900
|
-
const
|
|
1901
|
-
|
|
1893
|
+
function suggestionWhy(s, prefix) {
|
|
1894
|
+
const served = s.serves ?? [];
|
|
1895
|
+
let why = s.why;
|
|
1896
|
+
if (prefix !== void 0 && served.length > 1) {
|
|
1897
|
+
const under2 = prefix === "/" ? "" : ` under ${prefix}`;
|
|
1898
|
+
why = [
|
|
1899
|
+
`serves ${served[0]} and ${served.length - 1} more${under2}`,
|
|
1900
|
+
...why.filter((w) => !w.startsWith("serves "))
|
|
1901
|
+
];
|
|
1902
|
+
}
|
|
1903
|
+
return (why.length ? why : [TARGETS_NO_EVIDENCE]).slice(0, 3).join("; ");
|
|
1904
|
+
}
|
|
1905
|
+
function suggestionOption(s, callerRepo, n, prefix) {
|
|
1906
|
+
const why = suggestionWhy(s, prefix);
|
|
1902
1907
|
if (s.kind === "outside")
|
|
1903
1908
|
return {
|
|
1904
1909
|
label: s.label,
|
|
1905
|
-
means: `${s.name}, ${outsideAs({ boundary: s.boundary ?? "vendor" })}
|
|
1910
|
+
means: `${s.name}, ${outsideAs({ boundary: s.boundary ?? "vendor" })}: ${why}`,
|
|
1906
1911
|
changes: n ? `The ${n} calls go to ${s.name} when the facts are next written` : `The call goes to ${s.name} when the facts are next written`
|
|
1907
1912
|
};
|
|
1908
|
-
const who = s.label === s.repo ? `${s.repo}${s.read ? "" : "
|
|
1913
|
+
const who = s.label === s.repo ? `${s.repo}${s.read ? "" : " (not read yet)"}` : `${s.label}, built in ${s.repo}${s.read ? "" : " (not read yet)"}`;
|
|
1909
1914
|
const them = n ? `The ${n} calls` : "The call";
|
|
1910
1915
|
return {
|
|
1911
1916
|
label: s.label,
|
|
1912
|
-
means: `${who}
|
|
1917
|
+
means: `${who}: ${why}`,
|
|
1913
1918
|
changes: s.read ? `${them} ${n ? "join" : "joins"} ${s.label} when the facts are next written (atticus verify ${callerRepo} --write)` : `${them} ${n ? "go" : "goes"} to ${s.repo} when the facts are next written (atticus verify ${callerRepo} --write), and ${n ? "join" : "joins"} its route once ${s.repo} is read and verified (/atticus-map ${s.repo}); if no route of it serves ${n ? "them" : "it"}, the question opens again`
|
|
1914
1919
|
};
|
|
1915
1920
|
}
|
|
@@ -1937,29 +1942,33 @@ function offered(members, facts, records, op, asks, ctx) {
|
|
|
1937
1942
|
})) {
|
|
1938
1943
|
const x = merged.get(s.label);
|
|
1939
1944
|
if (!x)
|
|
1940
|
-
merged.set(s.label, { ...s, why: [...s.why] });
|
|
1945
|
+
merged.set(s.label, { ...s, why: [...s.why], serves: [...s.serves ?? []] });
|
|
1941
1946
|
else {
|
|
1942
1947
|
x.score += s.score;
|
|
1943
1948
|
for (const w of s.why)
|
|
1944
1949
|
if (!x.why.includes(w))
|
|
1945
1950
|
x.why.push(w);
|
|
1951
|
+
for (const w of s.serves ?? [])
|
|
1952
|
+
if (!x.serves.includes(w))
|
|
1953
|
+
x.serves.push(w);
|
|
1954
|
+
if (x.why.length > 1)
|
|
1955
|
+
x.why = x.why.filter((w) => w !== TARGETS_NO_EVIDENCE);
|
|
1946
1956
|
}
|
|
1947
1957
|
}
|
|
1948
1958
|
}
|
|
1949
1959
|
const ranked = [...merged.values()].sort((a, b) => b.score - a.score || Number(b.read) - Number(a.read) || (a.kind === b.kind ? 0 : a.kind === "repo" ? -1 : 1) || a.label.localeCompare(b.label));
|
|
1950
1960
|
const serving = new Set(members.flatMap((m) => m.servers));
|
|
1951
|
-
const types = new Set(members.flatMap((m) =>
|
|
1961
|
+
const types = new Set(members.flatMap((m) => SERVES[m.f.callType] ?? []));
|
|
1952
1962
|
return offeredSuggestions(ranked, { types, serving });
|
|
1953
1963
|
}
|
|
1954
1964
|
function targetQuestionDrafts(facts, records, op, asks, ctx = {}) {
|
|
1955
1965
|
const { list } = targetAsks(facts, records, asks);
|
|
1956
1966
|
return list.map((m) => {
|
|
1957
1967
|
const { f, q } = m;
|
|
1958
|
-
const what2 = callWhat(f);
|
|
1959
1968
|
const draft = {
|
|
1960
1969
|
question: q.question,
|
|
1961
1970
|
options: [
|
|
1962
|
-
...offered([m], facts, records, op, asks, ctx).map((s) => suggestionOption(s, f.repo
|
|
1971
|
+
...offered([m], facts, records, op, asks, ctx).map((s) => suggestionOption(s, f.repo)),
|
|
1963
1972
|
anotherOption(op),
|
|
1964
1973
|
{
|
|
1965
1974
|
label: TARGETS_NONE,
|
|
@@ -2006,9 +2015,28 @@ function groupVia(f) {
|
|
|
2006
2015
|
return ` through ${f.base}`;
|
|
2007
2016
|
return "";
|
|
2008
2017
|
}
|
|
2009
|
-
function targetGroupQuestion(repo, f) {
|
|
2018
|
+
function targetGroupQuestion(repo, f, facts) {
|
|
2019
|
+
const proxy = facts ? proxyOf(f, facts) : void 0;
|
|
2020
|
+
const through = f.base ?? f.host ?? f.to;
|
|
2021
|
+
if (proxy && through) {
|
|
2022
|
+
const p = targetPathPrefix(f.path);
|
|
2023
|
+
return `Which repo serves the routes under ${p === "/" ? "" : p}/** that ${proxy} forwards to ${through}?`;
|
|
2024
|
+
}
|
|
2010
2025
|
return `Which repo or system answers the calls ${repo} makes under ${targetPathPrefix(f.path)}${groupVia(f)}?`;
|
|
2011
2026
|
}
|
|
2027
|
+
function proxyOf(f, facts) {
|
|
2028
|
+
if (!f.from)
|
|
2029
|
+
return void 0;
|
|
2030
|
+
const from = facts.find((x) => x.id === f.from);
|
|
2031
|
+
if (!from || from.kind !== "entry")
|
|
2032
|
+
return void 0;
|
|
2033
|
+
const proxy = facts.find((x) => x.kind === "deploy" && x.repo === f.repo && x.platform === "apigee" && !!x.basePath);
|
|
2034
|
+
return proxy ? proxy.resourceName ?? f.repo : void 0;
|
|
2035
|
+
}
|
|
2036
|
+
function targetGroupWordings(repo, f, facts) {
|
|
2037
|
+
return [.../* @__PURE__ */ new Set([targetGroupQuestion(repo, f, facts), targetGroupQuestion(repo, f)])];
|
|
2038
|
+
}
|
|
2039
|
+
var repo0 = (members) => members[0].f.repo;
|
|
2012
2040
|
var byLine = (a, b) => a.localeCompare(b, "en", { numeric: true });
|
|
2013
2041
|
var answerLabel2 = (q) => q.answer?.option !== void 0 ? q.options[q.answer.option - 1]?.label : q.answer?.text;
|
|
2014
2042
|
function splitTargetGroups(questions) {
|
|
@@ -2025,12 +2053,13 @@ function groupedTargetDrafts(facts, records, op, asks, o) {
|
|
|
2025
2053
|
for (const a of list) {
|
|
2026
2054
|
if (!o.ask.has(a.f.id))
|
|
2027
2055
|
continue;
|
|
2028
|
-
const k = targetGroupQuestion(a.f.repo, a.f);
|
|
2056
|
+
const k = targetGroupQuestion(a.f.repo, a.f, facts);
|
|
2029
2057
|
groups.set(k, [...groups.get(k) ?? [], a]);
|
|
2030
2058
|
}
|
|
2031
2059
|
const out = [];
|
|
2032
2060
|
for (const [question, members] of groups) {
|
|
2033
|
-
|
|
2061
|
+
const split = targetGroupWordings(repo0(members), members[0].f, facts).some((w) => o.split?.has(w));
|
|
2062
|
+
if (members.length === 1 || split) {
|
|
2034
2063
|
for (const m of members)
|
|
2035
2064
|
out.push({ ...own.get(m.f.id), factIds: [m.f.id] });
|
|
2036
2065
|
continue;
|
|
@@ -2043,7 +2072,7 @@ function groupedTargetDrafts(facts, records, op, asks, o) {
|
|
|
2043
2072
|
const draft = {
|
|
2044
2073
|
question,
|
|
2045
2074
|
options: [
|
|
2046
|
-
...offered(members, facts, records, op, asks, ctx).map((s) => suggestionOption(s, repo,
|
|
2075
|
+
...offered(members, facts, records, op, asks, ctx).map((s) => suggestionOption(s, repo, n, targetPathPrefix(members[0].f.path))),
|
|
2047
2076
|
anotherOption(op),
|
|
2048
2077
|
{
|
|
2049
2078
|
label: TARGETS_SPLIT,
|
|
@@ -2069,6 +2098,40 @@ function groupedTargetDrafts(facts, records, op, asks, o) {
|
|
|
2069
2098
|
}
|
|
2070
2099
|
return out.sort((a, b) => a.factId.localeCompare(b.factId));
|
|
2071
2100
|
}
|
|
2101
|
+
function targetRuleOffers(questions, factsOf) {
|
|
2102
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
2103
|
+
for (const q of questions) {
|
|
2104
|
+
if (q.state !== "open" || q.askedBy?.step !== TARGETS_STEP)
|
|
2105
|
+
continue;
|
|
2106
|
+
const facts = factsOf(q.repo) ?? [];
|
|
2107
|
+
const at3 = new Set(q.evidence);
|
|
2108
|
+
const calls = facts.filter((f) => f.kind === "call" && f.repo === q.repo && at3.has(`${f.cite.file}:${f.cite.line}`));
|
|
2109
|
+
if (!calls.length)
|
|
2110
|
+
continue;
|
|
2111
|
+
const prefixes = new Set(calls.map((c) => targetPathPrefix(c.path)));
|
|
2112
|
+
const hosts = new Set(calls.map((c) => c.host?.replace(/^[a-z][a-z0-9+.-]*:\/\//i, "").split(/[/:]/)[0]));
|
|
2113
|
+
const [prefix] = prefixes;
|
|
2114
|
+
const [host] = hosts;
|
|
2115
|
+
const match = prefixes.size === 1 && prefix !== "/" ? `${prefix}/**` : hosts.size === 1 && host ? host : void 0;
|
|
2116
|
+
if (!match)
|
|
2117
|
+
continue;
|
|
2118
|
+
const key = `${q.repo}
|
|
2119
|
+
${match}`;
|
|
2120
|
+
const x = byKey.get(key) ?? { match, ids: [], calls: 0 };
|
|
2121
|
+
x.ids.push(q.id);
|
|
2122
|
+
x.calls += calls.length;
|
|
2123
|
+
byKey.set(key, x);
|
|
2124
|
+
}
|
|
2125
|
+
const out = /* @__PURE__ */ new Map();
|
|
2126
|
+
for (const x of byKey.values()) {
|
|
2127
|
+
if (x.ids.length < 2)
|
|
2128
|
+
continue;
|
|
2129
|
+
const ids = [...x.ids].sort();
|
|
2130
|
+
for (const id of ids)
|
|
2131
|
+
out.set(id, { match: x.match, ids, calls: x.calls });
|
|
2132
|
+
}
|
|
2133
|
+
return out;
|
|
2134
|
+
}
|
|
2072
2135
|
var segmentsOf = (p) => p.split(/[?#]/)[0].split("/").filter(Boolean).map((x) => /^[{:<]/.test(x) ? "{}" : x);
|
|
2073
2136
|
function ruleCoversCall(match, f, facts) {
|
|
2074
2137
|
if (isPathMatch(match)) {
|
|
@@ -2110,7 +2173,7 @@ function targetsFromAnswers(repo, facts, questions, o = {}) {
|
|
|
2110
2173
|
continue;
|
|
2111
2174
|
let asked = byId.get(questionId({ step: TARGETS_STEP, repo, ...q }));
|
|
2112
2175
|
if (!asked || asked.state !== "answered" || !asked.answer) {
|
|
2113
|
-
const g = groups.get(
|
|
2176
|
+
const g = targetGroupWordings(repo, f, facts).map((w) => groups.get(w)).find((x) => !!x);
|
|
2114
2177
|
asked = g && (needsTarget(f, facts) || g.evidence.includes(q.evidence[0])) ? g : void 0;
|
|
2115
2178
|
}
|
|
2116
2179
|
let label2 = asked && asked.state === "answered" && asked.answer ? answerLabel2(asked) : void 0;
|
|
@@ -2135,7 +2198,7 @@ function answeredQuestionOfCall(repo, facts, questions, factId) {
|
|
|
2135
2198
|
const own = targetQuestionFor(f);
|
|
2136
2199
|
const ownId = questionId({ step: TARGETS_STEP, repo, ...own });
|
|
2137
2200
|
const answered = questions.filter((q2) => q2.askedBy?.step === TARGETS_STEP && q2.state === "answered" && q2.repo === repo);
|
|
2138
|
-
const q = answered.find((x) => x.id === ownId) ?? answered.find((x) => x.question.trim()
|
|
2201
|
+
const q = answered.find((x) => x.id === ownId) ?? answered.find((x) => targetGroupWordings(repo, f, facts).includes(x.question.trim()) && x.evidence.includes(own.evidence[0]));
|
|
2139
2202
|
return q?.answer?.match ? void 0 : q;
|
|
2140
2203
|
}
|
|
2141
2204
|
function answerReconfirmed(q) {
|
|
@@ -2158,7 +2221,7 @@ function callsOfTargetQuestion(repo, facts, q) {
|
|
|
2158
2221
|
const own = targetQuestionFor(f);
|
|
2159
2222
|
if (questionId({ step: TARGETS_STEP, repo, ...own }) === q.id)
|
|
2160
2223
|
return true;
|
|
2161
|
-
return
|
|
2224
|
+
return targetGroupWordings(repo, f, facts).includes(q.question.trim()) && q.evidence.includes(own.evidence[0]);
|
|
2162
2225
|
});
|
|
2163
2226
|
}
|
|
2164
2227
|
function staleTargetQuestions(input) {
|
|
@@ -4896,6 +4959,17 @@ function fieldLineage(f, field) {
|
|
|
4896
4959
|
}
|
|
4897
4960
|
|
|
4898
4961
|
// packages/scanner/dist/hosts-asked.js
|
|
4962
|
+
var segs3 = (p) => p.split(/[?#]/)[0].split("/").filter(Boolean).map((x) => /^[{:<$]/.test(x) ? "{}" : x);
|
|
4963
|
+
var underPath = (path, base2) => {
|
|
4964
|
+
const b = segs3(base2);
|
|
4965
|
+
const c = segs3(path);
|
|
4966
|
+
return b.length > 0 && b.length <= c.length && b.every((x, i) => x === c[i]);
|
|
4967
|
+
};
|
|
4968
|
+
var servesPath = (entry, path) => {
|
|
4969
|
+
const e = segs3(entry);
|
|
4970
|
+
const c = segs3(path);
|
|
4971
|
+
return e.length === c.length && e.every((x, i) => x === "{}" || c[i] === "{}" || x === c[i]);
|
|
4972
|
+
};
|
|
4899
4973
|
var HTTP_TYPES = /* @__PURE__ */ new Set(["rest", "graphql", "soap", "websocket", "sse", "webhook"]);
|
|
4900
4974
|
var CONFIG_FILES = [
|
|
4901
4975
|
"**/application*.properties",
|
|
@@ -4958,8 +5032,12 @@ async function unknownHosts(o) {
|
|
|
4958
5032
|
const entry = byHost.get(h.label) ?? {
|
|
4959
5033
|
...h.port !== void 0 ? { port: h.port } : {},
|
|
4960
5034
|
explicit: h.label !== h.host,
|
|
4961
|
-
calls: []
|
|
5035
|
+
calls: [],
|
|
5036
|
+
paths: /* @__PURE__ */ new Set()
|
|
4962
5037
|
};
|
|
5038
|
+
const path = /^[a-z][a-z0-9+.-]*:\/\/[^/?#]*(\/[^?#]*)?/i.exec(url)?.[1];
|
|
5039
|
+
if (path)
|
|
5040
|
+
entry.paths.add(path);
|
|
4963
5041
|
const at3 = `${e.path}:${e.line}`;
|
|
4964
5042
|
if (!entry.calls.some((c) => c.repo === repo && c.at === at3))
|
|
4965
5043
|
entry.calls.push({ repo, at: at3 });
|
|
@@ -5012,6 +5090,25 @@ async function unknownHosts(o) {
|
|
|
5012
5090
|
}
|
|
5013
5091
|
const suggest = hits.length === 1 ? hits[0] : void 0;
|
|
5014
5092
|
const calls = entry.calls.sort((a, b) => a.repo.localeCompare(b.repo) || a.at.localeCompare(b.at, "en", { numeric: true }));
|
|
5093
|
+
const byPath = [];
|
|
5094
|
+
for (const g of o.records) {
|
|
5095
|
+
if (g.kind !== "GatewayRoute")
|
|
5096
|
+
continue;
|
|
5097
|
+
const repo = g.evidence.find((e) => e.repo)?.repo;
|
|
5098
|
+
if (!repo || byPath.some((b) => b.repo === repo))
|
|
5099
|
+
continue;
|
|
5100
|
+
const under2 = [...entry.paths].filter((p) => underPath(p, g.basepath));
|
|
5101
|
+
if (!under2.length)
|
|
5102
|
+
continue;
|
|
5103
|
+
const comps = new Set([...compRepo].filter(([, r]) => r === repo).map(([c]) => c));
|
|
5104
|
+
const hit = o.records.find((r) => r.kind === "Endpoint" && comps.has(r.component) && under2.some((p) => servesPath(r.pathOrTopic, p)));
|
|
5105
|
+
byPath.push({
|
|
5106
|
+
repo,
|
|
5107
|
+
serves: hit ? [hit.method?.toUpperCase(), hit.pathOrTopic].filter(Boolean).join(" ") : `the routes under ${g.basepath}`
|
|
5108
|
+
});
|
|
5109
|
+
}
|
|
5110
|
+
byPath.sort((a, b) => a.repo.localeCompare(b.repo));
|
|
5111
|
+
const first = suggest ? [suggest.repo] : byPath.map((b) => b.repo).filter((x) => servers.includes(x));
|
|
5015
5112
|
const about = Object.fromEntries(servers.flatMap((s) => {
|
|
5016
5113
|
const d = o.repos.find((r) => r.id === s)?.description;
|
|
5017
5114
|
return d ? [[s, { text: d.text, trust: d.trust }]] : [];
|
|
@@ -5019,9 +5116,10 @@ async function unknownHosts(o) {
|
|
|
5019
5116
|
asks.push({
|
|
5020
5117
|
host,
|
|
5021
5118
|
calls,
|
|
5022
|
-
servers:
|
|
5119
|
+
servers: [...first, ...servers.filter((s) => !first.includes(s))],
|
|
5023
5120
|
...suggest ? { suggest } : {},
|
|
5024
|
-
...Object.keys(about).length ? { about } : {}
|
|
5121
|
+
...Object.keys(about).length ? { about } : {},
|
|
5122
|
+
...byPath.length ? { byPath } : {}
|
|
5025
5123
|
});
|
|
5026
5124
|
}
|
|
5027
5125
|
return asks;
|
|
@@ -5032,18 +5130,24 @@ function aboutOf(a, repo) {
|
|
|
5032
5130
|
return "";
|
|
5033
5131
|
return d.trust === "suggested" ? `. What it is, as your assistant drafted it (unconfirmed): ${d.text}` : `. What it is: ${d.text}`;
|
|
5034
5132
|
}
|
|
5133
|
+
function gatewayHostFix(host, byPath) {
|
|
5134
|
+
const repos = byPath.map((b) => b.repo);
|
|
5135
|
+
return `${repos.length === 1 ? `${repos[0]}'s routes serve` : `The routes of ${repos.join(", ")} serve`} the paths the calls to ${host} make, and no repo lists ${host}: it looks like a shared gateway's host. Once, not per call: list ${host} under hosts: on each proxy repo in repos.manifest.yaml (${repos.join(", ")}, and any other proxy on it); the path then picks the proxy, and this question retires itself`;
|
|
5136
|
+
}
|
|
5035
5137
|
function hostQuestionDrafts(asks) {
|
|
5036
5138
|
return asks.map((a) => {
|
|
5037
5139
|
const repo = a.calls[0].repo;
|
|
5140
|
+
const byPath = new Map((a.byPath ?? []).map((b) => [b.repo, b.serves]));
|
|
5038
5141
|
return {
|
|
5039
5142
|
repo,
|
|
5143
|
+
...a.byPath?.length ? { byPath: a.byPath } : {},
|
|
5040
5144
|
draft: {
|
|
5041
5145
|
question: hostQuestionText(a.host),
|
|
5042
5146
|
options: [
|
|
5043
5147
|
...a.servers.map((s) => ({
|
|
5044
5148
|
label: s,
|
|
5045
|
-
means: (a.suggest?.repo === s ? `${s} serves HTTP, and its ${a.suggest.at} sets the port ${a.host.split(":").pop()} (${a.suggest.line})` : `${s} serves HTTP`) + aboutOf(a, s),
|
|
5046
|
-
changes: `${a.host} goes under hosts for ${s} in repos.manifest.yaml, and the calls to it join ${s} on the next scan`
|
|
5149
|
+
means: (a.suggest?.repo === s ? `${s} serves HTTP, and its ${a.suggest.at} sets the port ${a.host.split(":").pop()} (${a.suggest.line})` : byPath.has(s) ? `${s} serves ${byPath.get(s)}, a path the calls to ${a.host} make` : `${s} serves HTTP`) + aboutOf(a, s),
|
|
5150
|
+
changes: byPath.has(s) ? `${a.host} goes under hosts for ${s} in repos.manifest.yaml, and the calls to it join ${s} on the next scan; on a shared gateway host, list it on each proxy repo instead (${[...byPath.keys()].join(", ")}, and any other proxy on it), and the path picks the proxy` : `${a.host} goes under hosts for ${s} in repos.manifest.yaml, and the calls to it join ${s} on the next scan`
|
|
5047
5151
|
})),
|
|
5048
5152
|
// O1: a system outside the estate, declared in the profile with the host as its alias.
|
|
5049
5153
|
...[
|
|
@@ -5162,12 +5266,12 @@ function parseLinkReference(source) {
|
|
|
5162
5266
|
return { ok: true, reference: { ...estate ? { estate } : {}, repos } };
|
|
5163
5267
|
}
|
|
5164
5268
|
var stripped = (o) => Object.fromEntries(Object.entries(o).filter(([, v]) => v !== void 0));
|
|
5165
|
-
function
|
|
5269
|
+
function segs4(path) {
|
|
5166
5270
|
return path.split(/[?#]/)[0].split("/").filter(Boolean).map((s) => /^(\{[^}]*\}|:\w+|\*)$/.test(s) ? "{}" : s.toLowerCase());
|
|
5167
5271
|
}
|
|
5168
5272
|
function pathMatch(a, b) {
|
|
5169
|
-
const x =
|
|
5170
|
-
const y =
|
|
5273
|
+
const x = segs4(a);
|
|
5274
|
+
const y = segs4(b);
|
|
5171
5275
|
if (x.length === y.length && x.every((s, i) => s === y[i]))
|
|
5172
5276
|
return 2;
|
|
5173
5277
|
const [short, long] = x.length < y.length ? [x, y] : [y, x];
|
|
@@ -5464,6 +5568,7 @@ export {
|
|
|
5464
5568
|
curatedDirOf,
|
|
5465
5569
|
TARGETS_MAX_SUGGESTED,
|
|
5466
5570
|
TARGETS_ANOTHER,
|
|
5571
|
+
TARGETS_NO_EVIDENCE,
|
|
5467
5572
|
nameWords,
|
|
5468
5573
|
targetSuggestions,
|
|
5469
5574
|
offeredSuggestions,
|
|
@@ -5474,12 +5579,15 @@ export {
|
|
|
5474
5579
|
TARGETS_NONE,
|
|
5475
5580
|
remapIds,
|
|
5476
5581
|
targetQuestionFor,
|
|
5582
|
+
suggestionWhy,
|
|
5477
5583
|
targetQuestionDrafts,
|
|
5478
5584
|
TARGETS_SPLIT,
|
|
5479
5585
|
targetPathPrefix,
|
|
5480
5586
|
targetGroupQuestion,
|
|
5587
|
+
targetGroupWordings,
|
|
5481
5588
|
splitTargetGroups,
|
|
5482
5589
|
groupedTargetDrafts,
|
|
5590
|
+
targetRuleOffers,
|
|
5483
5591
|
ruleCoversCall,
|
|
5484
5592
|
ruledTargets,
|
|
5485
5593
|
targetsFromAnswers,
|
|
@@ -5540,6 +5648,7 @@ export {
|
|
|
5540
5648
|
fieldLineage,
|
|
5541
5649
|
lineSetsPort,
|
|
5542
5650
|
unknownHosts,
|
|
5651
|
+
gatewayHostFix,
|
|
5543
5652
|
hostQuestionDrafts,
|
|
5544
5653
|
parseLinkReference,
|
|
5545
5654
|
measureLinks,
|
|
@@ -6,13 +6,13 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
|
6
6
|
import {
|
|
7
7
|
acceptOrgPackDraft,
|
|
8
8
|
draftOrgPack
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-QR65C3DV.js";
|
|
10
|
+
import "./chunk-HY2VVVFZ.js";
|
|
11
|
+
import "./chunk-PJRMMWU4.js";
|
|
12
|
+
import "./chunk-34NWVIBC.js";
|
|
13
|
+
import "./chunk-MRLCNXXR.js";
|
|
14
|
+
import "./chunk-CQD26SMZ.js";
|
|
15
|
+
import "./chunk-U25OX22K.js";
|
|
16
16
|
import "./chunk-MMB2OHUY.js";
|
|
17
17
|
import "./chunk-TV45EUGM.js";
|
|
18
18
|
|
|
@@ -5,20 +5,20 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
|
5
5
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
6
|
import {
|
|
7
7
|
readCatalog
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-22GLUHGE.js";
|
|
9
9
|
import {
|
|
10
10
|
scopeWords
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-QR65C3DV.js";
|
|
12
12
|
import {
|
|
13
13
|
baseClonePath,
|
|
14
14
|
loadManifest
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-RA64IK43.js";
|
|
16
16
|
import {
|
|
17
17
|
Sources,
|
|
18
18
|
catalogDirOf,
|
|
19
19
|
orgPackDirOf,
|
|
20
20
|
require_dist
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-U25OX22K.js";
|
|
22
22
|
import {
|
|
23
23
|
__toESM
|
|
24
24
|
} from "./chunk-TV45EUGM.js";
|
|
@@ -74,22 +74,22 @@ import {
|
|
|
74
74
|
writeStartingPack,
|
|
75
75
|
yamlItems,
|
|
76
76
|
zeroInstallFiles
|
|
77
|
-
} from "./chunk-
|
|
78
|
-
import "./chunk-
|
|
79
|
-
import "./chunk-
|
|
80
|
-
import "./chunk-
|
|
81
|
-
import "./chunk-
|
|
82
|
-
import "./chunk-
|
|
83
|
-
import "./chunk-
|
|
84
|
-
import "./chunk-
|
|
85
|
-
import "./chunk-
|
|
86
|
-
import "./chunk-
|
|
87
|
-
import "./chunk-
|
|
88
|
-
import "./chunk-
|
|
89
|
-
import "./chunk-
|
|
90
|
-
import "./chunk-
|
|
91
|
-
import "./chunk-
|
|
92
|
-
import "./chunk-
|
|
77
|
+
} from "./chunk-DDZZXVQ5.js";
|
|
78
|
+
import "./chunk-GHSVJNVL.js";
|
|
79
|
+
import "./chunk-GMDOXWIS.js";
|
|
80
|
+
import "./chunk-U5T4A2QV.js";
|
|
81
|
+
import "./chunk-JQG4VO47.js";
|
|
82
|
+
import "./chunk-DW4BM73R.js";
|
|
83
|
+
import "./chunk-22GLUHGE.js";
|
|
84
|
+
import "./chunk-QR65C3DV.js";
|
|
85
|
+
import "./chunk-MLAACAES.js";
|
|
86
|
+
import "./chunk-HY2VVVFZ.js";
|
|
87
|
+
import "./chunk-PJRMMWU4.js";
|
|
88
|
+
import "./chunk-34NWVIBC.js";
|
|
89
|
+
import "./chunk-RA64IK43.js";
|
|
90
|
+
import "./chunk-MRLCNXXR.js";
|
|
91
|
+
import "./chunk-CQD26SMZ.js";
|
|
92
|
+
import "./chunk-U25OX22K.js";
|
|
93
93
|
import "./chunk-MMB2OHUY.js";
|
|
94
94
|
import "./chunk-TV45EUGM.js";
|
|
95
95
|
export {
|