@eidos.space/just-bash 3.0.2
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/CHANGELOG.md +53 -0
- package/LICENSE +201 -0
- package/README.md +609 -0
- package/dist/AGENTS.md +325 -0
- package/dist/Bash.d.ts +257 -0
- package/dist/ast/types.d.ts +609 -0
- package/dist/banned-patterns-test.d.ts +1 -0
- package/dist/bin/chunks/alias-YRVAW27Y.js +3 -0
- package/dist/bin/chunks/awk2-RLMNTGI7.js +3 -0
- package/dist/bin/chunks/base64-RZRLGMB3.js +3 -0
- package/dist/bin/chunks/basename-F3AQ4KAQ.js +3 -0
- package/dist/bin/chunks/bash-CLP24TE2.js +3 -0
- package/dist/bin/chunks/cat-LQH5FSAR.js +3 -0
- package/dist/bin/chunks/chmod-S564JCJW.js +3 -0
- package/dist/bin/chunks/chunk-22HCD466.js +3 -0
- package/dist/bin/chunks/chunk-2AIXTPH2.js +9 -0
- package/dist/bin/chunks/chunk-2ETT4ELS.js +4 -0
- package/dist/bin/chunks/chunk-2GG3NVC4.js +10 -0
- package/dist/bin/chunks/chunk-2NRAWO6E.js +7 -0
- package/dist/bin/chunks/chunk-2SVX7I5P.js +14 -0
- package/dist/bin/chunks/chunk-3BYTCO2H.js +12 -0
- package/dist/bin/chunks/chunk-3MRB66F4.js +3 -0
- package/dist/bin/chunks/chunk-3UKQXBQ3.js +6 -0
- package/dist/bin/chunks/chunk-3WIMLJM7.js +8 -0
- package/dist/bin/chunks/chunk-47WZ2U6M.js +9 -0
- package/dist/bin/chunks/chunk-4KSZJAQK.js +6 -0
- package/dist/bin/chunks/chunk-5XSZHUEI.js +15 -0
- package/dist/bin/chunks/chunk-6FSBHK6H.js +22 -0
- package/dist/bin/chunks/chunk-6WJQNLR2.js +7 -0
- package/dist/bin/chunks/chunk-77MLOOQS.js +11 -0
- package/dist/bin/chunks/chunk-7AYT3UKI.js +6 -0
- package/dist/bin/chunks/chunk-7JZKVC3F.js +2 -0
- package/dist/bin/chunks/chunk-7NC4CPHS.js +20 -0
- package/dist/bin/chunks/chunk-7UU7KPEM.js +7 -0
- package/dist/bin/chunks/chunk-7VCQWCSH.js +15 -0
- package/dist/bin/chunks/chunk-AGKL4LDL.js +4 -0
- package/dist/bin/chunks/chunk-AJF3OBTR.js +4 -0
- package/dist/bin/chunks/chunk-ALVEEXFD.js +19 -0
- package/dist/bin/chunks/chunk-B2DRBHGQ.js +3 -0
- package/dist/bin/chunks/chunk-BE4PARL3.js +13 -0
- package/dist/bin/chunks/chunk-BGX3RW7H.js +10 -0
- package/dist/bin/chunks/chunk-BIJXTWZ4.js +3 -0
- package/dist/bin/chunks/chunk-BPZJYOUA.js +33 -0
- package/dist/bin/chunks/chunk-BZP56QBM.js +24 -0
- package/dist/bin/chunks/chunk-C7ISPH7Y.js +18 -0
- package/dist/bin/chunks/chunk-CAZ75E7E.js +3 -0
- package/dist/bin/chunks/chunk-D6CPXGKK.js +75 -0
- package/dist/bin/chunks/chunk-DJAX3ZRG.js +8 -0
- package/dist/bin/chunks/chunk-DYIBFLS3.js +17 -0
- package/dist/bin/chunks/chunk-EDTBGO7F.js +37 -0
- package/dist/bin/chunks/chunk-F3GKANW3.js +12 -0
- package/dist/bin/chunks/chunk-F3WNDKOC.js +3 -0
- package/dist/bin/chunks/chunk-FKVQZWJQ.js +10 -0
- package/dist/bin/chunks/chunk-FOUVACI7.js +16 -0
- package/dist/bin/chunks/chunk-FVRXEJYQ.js +141 -0
- package/dist/bin/chunks/chunk-G4AUMZUY.js +4 -0
- package/dist/bin/chunks/chunk-H7JTIXAO.js +4 -0
- package/dist/bin/chunks/chunk-HL4ZS7TX.js +6 -0
- package/dist/bin/chunks/chunk-HN2DCT7T.js +13 -0
- package/dist/bin/chunks/chunk-I4IRHQDW.js +3 -0
- package/dist/bin/chunks/chunk-IEXQTXU5.js +34 -0
- package/dist/bin/chunks/chunk-IZGLHVBB.js +8 -0
- package/dist/bin/chunks/chunk-J7TUF2VI.js +9 -0
- package/dist/bin/chunks/chunk-JNUX75OX.js +85 -0
- package/dist/bin/chunks/chunk-JXLDT4KX.js +4 -0
- package/dist/bin/chunks/chunk-JZW7NFK2.js +288 -0
- package/dist/bin/chunks/chunk-KFMPGSUT.js +9 -0
- package/dist/bin/chunks/chunk-KI54R2QB.js +3 -0
- package/dist/bin/chunks/chunk-KRRM5UCC.js +3 -0
- package/dist/bin/chunks/chunk-KUMHQGUR.js +3 -0
- package/dist/bin/chunks/chunk-L24QXM5S.js +34 -0
- package/dist/bin/chunks/chunk-LAHBP3FW.js +11 -0
- package/dist/bin/chunks/chunk-LC6D27QJ.js +3 -0
- package/dist/bin/chunks/chunk-LNNWMRCB.js +3 -0
- package/dist/bin/chunks/chunk-LNVSXNT7.js +3 -0
- package/dist/bin/chunks/chunk-LSQTB2QK.js +7 -0
- package/dist/bin/chunks/chunk-M65CQLJE.js +101 -0
- package/dist/bin/chunks/chunk-MLUOPG3W.js +3 -0
- package/dist/bin/chunks/chunk-MNWK4UIM.js +22 -0
- package/dist/bin/chunks/chunk-MROECM42.js +3 -0
- package/dist/bin/chunks/chunk-MUFNRCMY.js +24 -0
- package/dist/bin/chunks/chunk-N6YW4W3Z.js +29 -0
- package/dist/bin/chunks/chunk-NE4R2FVV.js +5 -0
- package/dist/bin/chunks/chunk-NXVG64T3.js +22 -0
- package/dist/bin/chunks/chunk-NYIPFY36.js +3 -0
- package/dist/bin/chunks/chunk-O2BCKSMK.js +3 -0
- package/dist/bin/chunks/chunk-OLEQNRKX.js +8 -0
- package/dist/bin/chunks/chunk-OPMLWMNH.js +17 -0
- package/dist/bin/chunks/chunk-PAYQNSZN.js +18 -0
- package/dist/bin/chunks/chunk-PBOVSFTJ.js +3 -0
- package/dist/bin/chunks/chunk-PXP4YYZA.js +13 -0
- package/dist/bin/chunks/chunk-PZQVSQX6.js +4 -0
- package/dist/bin/chunks/chunk-Q2GOPGDA.js +6 -0
- package/dist/bin/chunks/chunk-Q4UMTSRO.js +15 -0
- package/dist/bin/chunks/chunk-QL33F2W6.js +8 -0
- package/dist/bin/chunks/chunk-RVPTAYDS.js +4 -0
- package/dist/bin/chunks/chunk-SMSELHIY.js +12 -0
- package/dist/bin/chunks/chunk-UGJM7CKP.js +17 -0
- package/dist/bin/chunks/chunk-UO5LOD7U.js +12 -0
- package/dist/bin/chunks/chunk-UOMNSQEZ.js +10 -0
- package/dist/bin/chunks/chunk-UR4CEP4Y.js +3 -0
- package/dist/bin/chunks/chunk-V2RP73X4.js +15 -0
- package/dist/bin/chunks/chunk-VBDLSL7Y.js +10 -0
- package/dist/bin/chunks/chunk-VZK4FHWJ.js +3 -0
- package/dist/bin/chunks/chunk-WDWNEHHE.js +9 -0
- package/dist/bin/chunks/chunk-X4MX6EHF.js +6 -0
- package/dist/bin/chunks/chunk-XBB73LFB.js +5 -0
- package/dist/bin/chunks/chunk-XFFUAO3F.js +3 -0
- package/dist/bin/chunks/chunk-XHCCSVP6.js +9 -0
- package/dist/bin/chunks/chunk-XJ37N3S5.js +7 -0
- package/dist/bin/chunks/chunk-XPTYN6UE.js +8 -0
- package/dist/bin/chunks/chunk-XRUDFQG5.js +7 -0
- package/dist/bin/chunks/chunk-Y4FPH5DQ.js +64 -0
- package/dist/bin/chunks/chunk-YJ5OCPSK.js +7 -0
- package/dist/bin/chunks/chunk-YOIFOOGX.js +9 -0
- package/dist/bin/chunks/chunk-YOKQNNQO.js +6 -0
- package/dist/bin/chunks/chunk-YUZRUF5F.js +10 -0
- package/dist/bin/chunks/chunk-YY5PJR7O.js +7 -0
- package/dist/bin/chunks/chunk-ZFUVUYWG.js +15 -0
- package/dist/bin/chunks/clear-FGNEKYDU.js +3 -0
- package/dist/bin/chunks/column-AQB3A3PJ.js +3 -0
- package/dist/bin/chunks/comm-Q4VDF6ZO.js +3 -0
- package/dist/bin/chunks/cp-HYXTMN3D.js +3 -0
- package/dist/bin/chunks/curl-PLHETP4J.js +27 -0
- package/dist/bin/chunks/cut-ZI2HIAW7.js +3 -0
- package/dist/bin/chunks/date-JEZYSA4F.js +3 -0
- package/dist/bin/chunks/diff-YDJ42RKS.js +3 -0
- package/dist/bin/chunks/dirname-VCINTLPD.js +3 -0
- package/dist/bin/chunks/du-4LRQIGRG.js +3 -0
- package/dist/bin/chunks/echo-KCOHTNDF.js +3 -0
- package/dist/bin/chunks/env-NY32PQJM.js +3 -0
- package/dist/bin/chunks/expand-YYSO35NS.js +3 -0
- package/dist/bin/chunks/expansion-PPP6PD75.js +3 -0
- package/dist/bin/chunks/expr-7PLWSWZI.js +3 -0
- package/dist/bin/chunks/file-GRZLWDVH.js +3 -0
- package/dist/bin/chunks/find-P4DOE7CE.js +3 -0
- package/dist/bin/chunks/flag-coverage-RFKIBJ6L.js +3 -0
- package/dist/bin/chunks/fold-5MF7QZWQ.js +3 -0
- package/dist/bin/chunks/grep-VAYCFO4O.js +3 -0
- package/dist/bin/chunks/gzip-UGBQQKIH.js +3 -0
- package/dist/bin/chunks/head-QNC2ZYDO.js +3 -0
- package/dist/bin/chunks/help-CGUEOGXQ.js +3 -0
- package/dist/bin/chunks/history-AQQWW3QB.js +3 -0
- package/dist/bin/chunks/hostname-USNWOQCK.js +3 -0
- package/dist/bin/chunks/html-to-markdown-QEFY7XQR.js +3 -0
- package/dist/bin/chunks/join-EJ73DYTK.js +3 -0
- package/dist/bin/chunks/jq-GGTKKMEN.js +3 -0
- package/dist/bin/chunks/js-exec-BC6NI55L.js +98 -0
- package/dist/bin/chunks/js-exec-worker.js +4443 -0
- package/dist/bin/chunks/ln-LP4HMCSM.js +3 -0
- package/dist/bin/chunks/ls-KBNHNZWQ.js +3 -0
- package/dist/bin/chunks/md5sum-MCVDIB35.js +3 -0
- package/dist/bin/chunks/mkdir-P4DKRCDX.js +3 -0
- package/dist/bin/chunks/mv-QQK4FQX6.js +3 -0
- package/dist/bin/chunks/nl-KUPLVCTS.js +3 -0
- package/dist/bin/chunks/od-YQ5ZUI2H.js +3 -0
- package/dist/bin/chunks/paste-A5KKPWXX.js +3 -0
- package/dist/bin/chunks/printf-Z5C2UOI5.js +3 -0
- package/dist/bin/chunks/pwd-FCNDA467.js +3 -0
- package/dist/bin/chunks/python3-BQWDPUBM.js +13 -0
- package/dist/bin/chunks/readlink-25V57VOL.js +3 -0
- package/dist/bin/chunks/rev-PYHOZ4D4.js +3 -0
- package/dist/bin/chunks/rg-BGFMSIVK.js +3 -0
- package/dist/bin/chunks/rm-ECNUFR66.js +3 -0
- package/dist/bin/chunks/rmdir-DLOHIA7Q.js +3 -0
- package/dist/bin/chunks/sed-FWA634SN.js +3 -0
- package/dist/bin/chunks/seq-UXDJE6FB.js +3 -0
- package/dist/bin/chunks/sha1sum-4KF52U3Y.js +3 -0
- package/dist/bin/chunks/sha256sum-6YEPULPX.js +3 -0
- package/dist/bin/chunks/sleep-QHAPNY3Q.js +3 -0
- package/dist/bin/chunks/sort-4C6WOKNK.js +3 -0
- package/dist/bin/chunks/split-TV7NL7LA.js +3 -0
- package/dist/bin/chunks/sqlite3-W777NCI4.js +3 -0
- package/dist/bin/chunks/sqlite3-worker.js +1728 -0
- package/dist/bin/chunks/stat-BD6KT3BP.js +3 -0
- package/dist/bin/chunks/strings-MDD72LR6.js +3 -0
- package/dist/bin/chunks/tac-C2N4NQ6S.js +3 -0
- package/dist/bin/chunks/tail-BCB5W6JC.js +3 -0
- package/dist/bin/chunks/tar-DOO744MK.js +3 -0
- package/dist/bin/chunks/tee-UQHPO4OW.js +3 -0
- package/dist/bin/chunks/time-ZPY52VT2.js +3 -0
- package/dist/bin/chunks/timeout-5AX3ZS3X.js +3 -0
- package/dist/bin/chunks/touch-DFGSVIX7.js +3 -0
- package/dist/bin/chunks/tr-G7K6M6HP.js +3 -0
- package/dist/bin/chunks/tree-6D7SMPUR.js +3 -0
- package/dist/bin/chunks/true-SKL4L7JP.js +3 -0
- package/dist/bin/chunks/unexpand-QIR4EDPG.js +3 -0
- package/dist/bin/chunks/uniq-I7PVFJR4.js +3 -0
- package/dist/bin/chunks/wc-6NGWULAP.js +3 -0
- package/dist/bin/chunks/which-LCXKCLFC.js +3 -0
- package/dist/bin/chunks/whoami-TZDZDU7T.js +3 -0
- package/dist/bin/chunks/worker.js +3150 -0
- package/dist/bin/chunks/xan-KX4VPXUN.js +3 -0
- package/dist/bin/chunks/xan-view-JXOZLJ7S.js +3 -0
- package/dist/bin/chunks/xargs-UWHPYLY7.js +3 -0
- package/dist/bin/chunks/yq-GCDCJBKB.js +3 -0
- package/dist/bin/just-bash.js +755 -0
- package/dist/bin/shell/chunks/alias-YRVAW27Y.js +3 -0
- package/dist/bin/shell/chunks/awk2-RLMNTGI7.js +3 -0
- package/dist/bin/shell/chunks/base64-RZRLGMB3.js +3 -0
- package/dist/bin/shell/chunks/basename-F3AQ4KAQ.js +3 -0
- package/dist/bin/shell/chunks/bash-CLP24TE2.js +3 -0
- package/dist/bin/shell/chunks/cat-LQH5FSAR.js +3 -0
- package/dist/bin/shell/chunks/chmod-S564JCJW.js +3 -0
- package/dist/bin/shell/chunks/chunk-22HCD466.js +3 -0
- package/dist/bin/shell/chunks/chunk-2AIXTPH2.js +9 -0
- package/dist/bin/shell/chunks/chunk-2ETT4ELS.js +4 -0
- package/dist/bin/shell/chunks/chunk-2GG3NVC4.js +10 -0
- package/dist/bin/shell/chunks/chunk-2NRAWO6E.js +7 -0
- package/dist/bin/shell/chunks/chunk-2SVX7I5P.js +14 -0
- package/dist/bin/shell/chunks/chunk-3BYTCO2H.js +12 -0
- package/dist/bin/shell/chunks/chunk-3MRB66F4.js +3 -0
- package/dist/bin/shell/chunks/chunk-3UKQXBQ3.js +6 -0
- package/dist/bin/shell/chunks/chunk-3WIMLJM7.js +8 -0
- package/dist/bin/shell/chunks/chunk-47WZ2U6M.js +9 -0
- package/dist/bin/shell/chunks/chunk-4KSZJAQK.js +6 -0
- package/dist/bin/shell/chunks/chunk-5XSZHUEI.js +15 -0
- package/dist/bin/shell/chunks/chunk-6FSBHK6H.js +22 -0
- package/dist/bin/shell/chunks/chunk-6WJQNLR2.js +7 -0
- package/dist/bin/shell/chunks/chunk-77MLOOQS.js +11 -0
- package/dist/bin/shell/chunks/chunk-7AYT3UKI.js +6 -0
- package/dist/bin/shell/chunks/chunk-7JZKVC3F.js +2 -0
- package/dist/bin/shell/chunks/chunk-7NC4CPHS.js +20 -0
- package/dist/bin/shell/chunks/chunk-7UU7KPEM.js +7 -0
- package/dist/bin/shell/chunks/chunk-7VCQWCSH.js +15 -0
- package/dist/bin/shell/chunks/chunk-AGKL4LDL.js +4 -0
- package/dist/bin/shell/chunks/chunk-AJF3OBTR.js +4 -0
- package/dist/bin/shell/chunks/chunk-ALVEEXFD.js +19 -0
- package/dist/bin/shell/chunks/chunk-B2DRBHGQ.js +3 -0
- package/dist/bin/shell/chunks/chunk-BE4PARL3.js +13 -0
- package/dist/bin/shell/chunks/chunk-BGX3RW7H.js +10 -0
- package/dist/bin/shell/chunks/chunk-BIJXTWZ4.js +3 -0
- package/dist/bin/shell/chunks/chunk-BPZJYOUA.js +33 -0
- package/dist/bin/shell/chunks/chunk-BZP56QBM.js +24 -0
- package/dist/bin/shell/chunks/chunk-C7ISPH7Y.js +18 -0
- package/dist/bin/shell/chunks/chunk-CAZ75E7E.js +3 -0
- package/dist/bin/shell/chunks/chunk-D6CPXGKK.js +75 -0
- package/dist/bin/shell/chunks/chunk-DJAX3ZRG.js +8 -0
- package/dist/bin/shell/chunks/chunk-DYIBFLS3.js +17 -0
- package/dist/bin/shell/chunks/chunk-EDTBGO7F.js +37 -0
- package/dist/bin/shell/chunks/chunk-F3GKANW3.js +12 -0
- package/dist/bin/shell/chunks/chunk-F3WNDKOC.js +3 -0
- package/dist/bin/shell/chunks/chunk-FKVQZWJQ.js +10 -0
- package/dist/bin/shell/chunks/chunk-FOUVACI7.js +16 -0
- package/dist/bin/shell/chunks/chunk-FVRXEJYQ.js +141 -0
- package/dist/bin/shell/chunks/chunk-G4AUMZUY.js +4 -0
- package/dist/bin/shell/chunks/chunk-H7JTIXAO.js +4 -0
- package/dist/bin/shell/chunks/chunk-HL4ZS7TX.js +6 -0
- package/dist/bin/shell/chunks/chunk-HN2DCT7T.js +13 -0
- package/dist/bin/shell/chunks/chunk-I4IRHQDW.js +3 -0
- package/dist/bin/shell/chunks/chunk-IEXQTXU5.js +34 -0
- package/dist/bin/shell/chunks/chunk-IZGLHVBB.js +8 -0
- package/dist/bin/shell/chunks/chunk-J7TUF2VI.js +9 -0
- package/dist/bin/shell/chunks/chunk-JNUX75OX.js +85 -0
- package/dist/bin/shell/chunks/chunk-JXLDT4KX.js +4 -0
- package/dist/bin/shell/chunks/chunk-JZW7NFK2.js +288 -0
- package/dist/bin/shell/chunks/chunk-KFMPGSUT.js +9 -0
- package/dist/bin/shell/chunks/chunk-KI54R2QB.js +3 -0
- package/dist/bin/shell/chunks/chunk-KRRM5UCC.js +3 -0
- package/dist/bin/shell/chunks/chunk-KUMHQGUR.js +3 -0
- package/dist/bin/shell/chunks/chunk-L24QXM5S.js +34 -0
- package/dist/bin/shell/chunks/chunk-LAHBP3FW.js +11 -0
- package/dist/bin/shell/chunks/chunk-LC6D27QJ.js +3 -0
- package/dist/bin/shell/chunks/chunk-LNNWMRCB.js +3 -0
- package/dist/bin/shell/chunks/chunk-LNVSXNT7.js +3 -0
- package/dist/bin/shell/chunks/chunk-LSQTB2QK.js +7 -0
- package/dist/bin/shell/chunks/chunk-M65CQLJE.js +101 -0
- package/dist/bin/shell/chunks/chunk-MLUOPG3W.js +3 -0
- package/dist/bin/shell/chunks/chunk-MNWK4UIM.js +22 -0
- package/dist/bin/shell/chunks/chunk-MROECM42.js +3 -0
- package/dist/bin/shell/chunks/chunk-MUFNRCMY.js +24 -0
- package/dist/bin/shell/chunks/chunk-N6YW4W3Z.js +29 -0
- package/dist/bin/shell/chunks/chunk-NE4R2FVV.js +5 -0
- package/dist/bin/shell/chunks/chunk-NXVG64T3.js +22 -0
- package/dist/bin/shell/chunks/chunk-NYIPFY36.js +3 -0
- package/dist/bin/shell/chunks/chunk-O2BCKSMK.js +3 -0
- package/dist/bin/shell/chunks/chunk-OLEQNRKX.js +8 -0
- package/dist/bin/shell/chunks/chunk-OPMLWMNH.js +17 -0
- package/dist/bin/shell/chunks/chunk-PAYQNSZN.js +18 -0
- package/dist/bin/shell/chunks/chunk-PBOVSFTJ.js +3 -0
- package/dist/bin/shell/chunks/chunk-PXP4YYZA.js +13 -0
- package/dist/bin/shell/chunks/chunk-PZQVSQX6.js +4 -0
- package/dist/bin/shell/chunks/chunk-Q2GOPGDA.js +6 -0
- package/dist/bin/shell/chunks/chunk-Q4UMTSRO.js +15 -0
- package/dist/bin/shell/chunks/chunk-QL33F2W6.js +8 -0
- package/dist/bin/shell/chunks/chunk-RVPTAYDS.js +4 -0
- package/dist/bin/shell/chunks/chunk-SMSELHIY.js +12 -0
- package/dist/bin/shell/chunks/chunk-UGJM7CKP.js +17 -0
- package/dist/bin/shell/chunks/chunk-UO5LOD7U.js +12 -0
- package/dist/bin/shell/chunks/chunk-UOMNSQEZ.js +10 -0
- package/dist/bin/shell/chunks/chunk-UR4CEP4Y.js +3 -0
- package/dist/bin/shell/chunks/chunk-V2RP73X4.js +15 -0
- package/dist/bin/shell/chunks/chunk-VBDLSL7Y.js +10 -0
- package/dist/bin/shell/chunks/chunk-VZK4FHWJ.js +3 -0
- package/dist/bin/shell/chunks/chunk-WDWNEHHE.js +9 -0
- package/dist/bin/shell/chunks/chunk-X4MX6EHF.js +6 -0
- package/dist/bin/shell/chunks/chunk-XBB73LFB.js +5 -0
- package/dist/bin/shell/chunks/chunk-XFFUAO3F.js +3 -0
- package/dist/bin/shell/chunks/chunk-XHCCSVP6.js +9 -0
- package/dist/bin/shell/chunks/chunk-XJ37N3S5.js +7 -0
- package/dist/bin/shell/chunks/chunk-XPTYN6UE.js +8 -0
- package/dist/bin/shell/chunks/chunk-XRUDFQG5.js +7 -0
- package/dist/bin/shell/chunks/chunk-Y4FPH5DQ.js +64 -0
- package/dist/bin/shell/chunks/chunk-YJ5OCPSK.js +7 -0
- package/dist/bin/shell/chunks/chunk-YOIFOOGX.js +9 -0
- package/dist/bin/shell/chunks/chunk-YOKQNNQO.js +6 -0
- package/dist/bin/shell/chunks/chunk-YUZRUF5F.js +10 -0
- package/dist/bin/shell/chunks/chunk-YY5PJR7O.js +7 -0
- package/dist/bin/shell/chunks/chunk-ZFUVUYWG.js +15 -0
- package/dist/bin/shell/chunks/clear-FGNEKYDU.js +3 -0
- package/dist/bin/shell/chunks/column-AQB3A3PJ.js +3 -0
- package/dist/bin/shell/chunks/comm-Q4VDF6ZO.js +3 -0
- package/dist/bin/shell/chunks/cp-HYXTMN3D.js +3 -0
- package/dist/bin/shell/chunks/curl-PLHETP4J.js +27 -0
- package/dist/bin/shell/chunks/cut-ZI2HIAW7.js +3 -0
- package/dist/bin/shell/chunks/date-JEZYSA4F.js +3 -0
- package/dist/bin/shell/chunks/diff-YDJ42RKS.js +3 -0
- package/dist/bin/shell/chunks/dirname-VCINTLPD.js +3 -0
- package/dist/bin/shell/chunks/du-4LRQIGRG.js +3 -0
- package/dist/bin/shell/chunks/echo-KCOHTNDF.js +3 -0
- package/dist/bin/shell/chunks/env-NY32PQJM.js +3 -0
- package/dist/bin/shell/chunks/expand-YYSO35NS.js +3 -0
- package/dist/bin/shell/chunks/expansion-PPP6PD75.js +3 -0
- package/dist/bin/shell/chunks/expr-7PLWSWZI.js +3 -0
- package/dist/bin/shell/chunks/file-GRZLWDVH.js +3 -0
- package/dist/bin/shell/chunks/find-P4DOE7CE.js +3 -0
- package/dist/bin/shell/chunks/flag-coverage-RFKIBJ6L.js +3 -0
- package/dist/bin/shell/chunks/fold-5MF7QZWQ.js +3 -0
- package/dist/bin/shell/chunks/grep-VAYCFO4O.js +3 -0
- package/dist/bin/shell/chunks/gzip-UGBQQKIH.js +3 -0
- package/dist/bin/shell/chunks/head-QNC2ZYDO.js +3 -0
- package/dist/bin/shell/chunks/help-CGUEOGXQ.js +3 -0
- package/dist/bin/shell/chunks/history-AQQWW3QB.js +3 -0
- package/dist/bin/shell/chunks/hostname-USNWOQCK.js +3 -0
- package/dist/bin/shell/chunks/html-to-markdown-QEFY7XQR.js +3 -0
- package/dist/bin/shell/chunks/join-EJ73DYTK.js +3 -0
- package/dist/bin/shell/chunks/jq-GGTKKMEN.js +3 -0
- package/dist/bin/shell/chunks/js-exec-BC6NI55L.js +98 -0
- package/dist/bin/shell/chunks/ln-LP4HMCSM.js +3 -0
- package/dist/bin/shell/chunks/ls-KBNHNZWQ.js +3 -0
- package/dist/bin/shell/chunks/md5sum-MCVDIB35.js +3 -0
- package/dist/bin/shell/chunks/mkdir-P4DKRCDX.js +3 -0
- package/dist/bin/shell/chunks/mv-QQK4FQX6.js +3 -0
- package/dist/bin/shell/chunks/nl-KUPLVCTS.js +3 -0
- package/dist/bin/shell/chunks/od-YQ5ZUI2H.js +3 -0
- package/dist/bin/shell/chunks/paste-A5KKPWXX.js +3 -0
- package/dist/bin/shell/chunks/printf-Z5C2UOI5.js +3 -0
- package/dist/bin/shell/chunks/pwd-FCNDA467.js +3 -0
- package/dist/bin/shell/chunks/python3-BQWDPUBM.js +13 -0
- package/dist/bin/shell/chunks/readlink-25V57VOL.js +3 -0
- package/dist/bin/shell/chunks/rev-PYHOZ4D4.js +3 -0
- package/dist/bin/shell/chunks/rg-BGFMSIVK.js +3 -0
- package/dist/bin/shell/chunks/rm-ECNUFR66.js +3 -0
- package/dist/bin/shell/chunks/rmdir-DLOHIA7Q.js +3 -0
- package/dist/bin/shell/chunks/sed-FWA634SN.js +3 -0
- package/dist/bin/shell/chunks/seq-UXDJE6FB.js +3 -0
- package/dist/bin/shell/chunks/sha1sum-4KF52U3Y.js +3 -0
- package/dist/bin/shell/chunks/sha256sum-6YEPULPX.js +3 -0
- package/dist/bin/shell/chunks/sleep-QHAPNY3Q.js +3 -0
- package/dist/bin/shell/chunks/sort-4C6WOKNK.js +3 -0
- package/dist/bin/shell/chunks/split-TV7NL7LA.js +3 -0
- package/dist/bin/shell/chunks/sqlite3-W777NCI4.js +3 -0
- package/dist/bin/shell/chunks/stat-BD6KT3BP.js +3 -0
- package/dist/bin/shell/chunks/strings-MDD72LR6.js +3 -0
- package/dist/bin/shell/chunks/tac-C2N4NQ6S.js +3 -0
- package/dist/bin/shell/chunks/tail-BCB5W6JC.js +3 -0
- package/dist/bin/shell/chunks/tar-DOO744MK.js +3 -0
- package/dist/bin/shell/chunks/tee-UQHPO4OW.js +3 -0
- package/dist/bin/shell/chunks/time-ZPY52VT2.js +3 -0
- package/dist/bin/shell/chunks/timeout-5AX3ZS3X.js +3 -0
- package/dist/bin/shell/chunks/touch-DFGSVIX7.js +3 -0
- package/dist/bin/shell/chunks/tr-G7K6M6HP.js +3 -0
- package/dist/bin/shell/chunks/tree-6D7SMPUR.js +3 -0
- package/dist/bin/shell/chunks/true-SKL4L7JP.js +3 -0
- package/dist/bin/shell/chunks/unexpand-QIR4EDPG.js +3 -0
- package/dist/bin/shell/chunks/uniq-I7PVFJR4.js +3 -0
- package/dist/bin/shell/chunks/wc-6NGWULAP.js +3 -0
- package/dist/bin/shell/chunks/which-LCXKCLFC.js +3 -0
- package/dist/bin/shell/chunks/whoami-TZDZDU7T.js +3 -0
- package/dist/bin/shell/chunks/xan-KX4VPXUN.js +3 -0
- package/dist/bin/shell/chunks/xan-view-JXOZLJ7S.js +3 -0
- package/dist/bin/shell/chunks/xargs-UWHPYLY7.js +3 -0
- package/dist/bin/shell/chunks/yq-GCDCJBKB.js +3 -0
- package/dist/bin/shell/shell.js +734 -0
- package/dist/browser.d.ts +23 -0
- package/dist/bundle/browser.js +1515 -0
- package/dist/bundle/chunks/alias-RTYYYW3D.js +2 -0
- package/dist/bundle/chunks/awk2-LA3USKJP.js +2 -0
- package/dist/bundle/chunks/base64-C2AIWVNC.js +2 -0
- package/dist/bundle/chunks/basename-UB3CIYNI.js +2 -0
- package/dist/bundle/chunks/bash-YZ33HQZQ.js +2 -0
- package/dist/bundle/chunks/cat-TSFMZVYS.js +2 -0
- package/dist/bundle/chunks/chmod-TFEPA42X.js +2 -0
- package/dist/bundle/chunks/chunk-27JIFWUR.js +3 -0
- package/dist/bundle/chunks/chunk-2JIPICV3.js +13 -0
- package/dist/bundle/chunks/chunk-2SMD2AUA.js +3 -0
- package/dist/bundle/chunks/chunk-2VDTE5BV.js +14 -0
- package/dist/bundle/chunks/chunk-2VJJEDV2.js +8 -0
- package/dist/bundle/chunks/chunk-46RN27KI.js +100 -0
- package/dist/bundle/chunks/chunk-4I3HOE5Z.js +21 -0
- package/dist/bundle/chunks/chunk-4JLVZKHC.js +8 -0
- package/dist/bundle/chunks/chunk-4MZPEZTU.js +3 -0
- package/dist/bundle/chunks/chunk-4N6J7B5P.js +6 -0
- package/dist/bundle/chunks/chunk-4RUAZWKT.js +33 -0
- package/dist/bundle/chunks/chunk-4WKZNNJK.js +2 -0
- package/dist/bundle/chunks/chunk-5H5SCKJM.js +11 -0
- package/dist/bundle/chunks/chunk-6LASZU3O.js +5 -0
- package/dist/bundle/chunks/chunk-6SHYIICL.js +4 -0
- package/dist/bundle/chunks/chunk-6VAT5Z2D.js +5 -0
- package/dist/bundle/chunks/chunk-7AISL3XV.js +12 -0
- package/dist/bundle/chunks/chunk-7EUWTCWK.js +2 -0
- package/dist/bundle/chunks/chunk-7JHM3L42.js +6 -0
- package/dist/bundle/chunks/chunk-A4R2GWRF.js +9 -0
- package/dist/bundle/chunks/chunk-ACSZB4FE.js +11 -0
- package/dist/bundle/chunks/chunk-AQ6FYS2X.js +2 -0
- package/dist/bundle/chunks/chunk-BVKWRAS6.js +12 -0
- package/dist/bundle/chunks/chunk-BZUGFHVS.js +2 -0
- package/dist/bundle/chunks/chunk-CBJVD2XA.js +7 -0
- package/dist/bundle/chunks/chunk-CHFEPBH4.js +18 -0
- package/dist/bundle/chunks/chunk-CN5XGDNN.js +6 -0
- package/dist/bundle/chunks/chunk-DLL7UR66.js +2 -0
- package/dist/bundle/chunks/chunk-EBAPSGAO.js +9 -0
- package/dist/bundle/chunks/chunk-FAXLQUCQ.js +10 -0
- package/dist/bundle/chunks/chunk-FHC24QSK.js +7 -0
- package/dist/bundle/chunks/chunk-FJK43EBQ.js +14 -0
- package/dist/bundle/chunks/chunk-FOCWZZDE.js +2 -0
- package/dist/bundle/chunks/chunk-FW54FHZR.js +2 -0
- package/dist/bundle/chunks/chunk-FX4RBUYU.js +5 -0
- package/dist/bundle/chunks/chunk-FX7KQCEA.js +33 -0
- package/dist/bundle/chunks/chunk-FZRQOL3C.js +7 -0
- package/dist/bundle/chunks/chunk-G5EVRAOO.js +74 -0
- package/dist/bundle/chunks/chunk-GGC5NEPZ.js +8 -0
- package/dist/bundle/chunks/chunk-GIUR5SNU.js +15 -0
- package/dist/bundle/chunks/chunk-GJC3WVOW.js +2 -0
- package/dist/bundle/chunks/chunk-GSPYNYZA.js +6 -0
- package/dist/bundle/chunks/chunk-GTQIUQM6.js +5 -0
- package/dist/bundle/chunks/chunk-HBVMHTO5.js +2 -0
- package/dist/bundle/chunks/chunk-HDRAUQK2.js +2 -0
- package/dist/bundle/chunks/chunk-HJBTD7PY.js +21 -0
- package/dist/bundle/chunks/chunk-ICIEVHY5.js +36 -0
- package/dist/bundle/chunks/chunk-KATRCGLX.js +2 -0
- package/dist/bundle/chunks/chunk-KD3KENL6.js +11 -0
- package/dist/bundle/chunks/chunk-KWGBQNTV.js +32 -0
- package/dist/bundle/chunks/chunk-L2UW7DWF.js +2 -0
- package/dist/bundle/chunks/chunk-L64BMZUV.js +2 -0
- package/dist/bundle/chunks/chunk-LEKBROJD.js +6 -0
- package/dist/bundle/chunks/chunk-LNBPBRV4.js +21 -0
- package/dist/bundle/chunks/chunk-LPJEKUCB.js +8 -0
- package/dist/bundle/chunks/chunk-LSLPJOYM.js +3 -0
- package/dist/bundle/chunks/chunk-MFDPAVC6.js +14 -0
- package/dist/bundle/chunks/chunk-MLIO3BK2.js +7 -0
- package/dist/bundle/chunks/chunk-MQKGGNPS.js +16 -0
- package/dist/bundle/chunks/chunk-MZFCCXPZ.js +63 -0
- package/dist/bundle/chunks/chunk-N6DXJ2JN.js +287 -0
- package/dist/bundle/chunks/chunk-NRSASXYY.js +2 -0
- package/dist/bundle/chunks/chunk-OC35HPHG.js +2 -0
- package/dist/bundle/chunks/chunk-OGJ5CFPR.js +9 -0
- package/dist/bundle/chunks/chunk-OVGANXCG.js +8 -0
- package/dist/bundle/chunks/chunk-Q7H5W7YE.js +140 -0
- package/dist/bundle/chunks/chunk-QAYAQNCG.js +23 -0
- package/dist/bundle/chunks/chunk-QIQMJJZ4.js +4 -0
- package/dist/bundle/chunks/chunk-R4IFXNY5.js +28 -0
- package/dist/bundle/chunks/chunk-R74UQCKX.js +5 -0
- package/dist/bundle/chunks/chunk-S3LEJEPP.js +2 -0
- package/dist/bundle/chunks/chunk-S443BAN4.js +7 -0
- package/dist/bundle/chunks/chunk-SAI2SPQQ.js +8 -0
- package/dist/bundle/chunks/chunk-SBBYKIYU.js +3 -0
- package/dist/bundle/chunks/chunk-SETW5JBN.js +9 -0
- package/dist/bundle/chunks/chunk-SHKOQWO4.js +3 -0
- package/dist/bundle/chunks/chunk-SJYEXC2Z.js +14 -0
- package/dist/bundle/chunks/chunk-SO6R3ZKN.js +16 -0
- package/dist/bundle/chunks/chunk-STHBFACM.js +1 -0
- package/dist/bundle/chunks/chunk-SX2HC7SO.js +2 -0
- package/dist/bundle/chunks/chunk-T4TFLF3R.js +16 -0
- package/dist/bundle/chunks/chunk-TDD4NFYE.js +2 -0
- package/dist/bundle/chunks/chunk-TN7HHBQW.js +5 -0
- package/dist/bundle/chunks/chunk-U73A73IE.js +17 -0
- package/dist/bundle/chunks/chunk-UIJUTQPH.js +3 -0
- package/dist/bundle/chunks/chunk-UP6MSJGD.js +17 -0
- package/dist/bundle/chunks/chunk-VLCHOJWK.js +6 -0
- package/dist/bundle/chunks/chunk-VPADYNBD.js +10 -0
- package/dist/bundle/chunks/chunk-W5DWRFSU.js +2 -0
- package/dist/bundle/chunks/chunk-WM5IJFMP.js +8 -0
- package/dist/bundle/chunks/chunk-WNH3HOQA.js +2 -0
- package/dist/bundle/chunks/chunk-WPGQVBSY.js +6 -0
- package/dist/bundle/chunks/chunk-WVRWIZF5.js +23 -0
- package/dist/bundle/chunks/chunk-XCQWV4AU.js +12 -0
- package/dist/bundle/chunks/chunk-XDGLKIHR.js +9 -0
- package/dist/bundle/chunks/chunk-XHLMAZX2.js +5 -0
- package/dist/bundle/chunks/chunk-XRFHFXFP.js +2 -0
- package/dist/bundle/chunks/chunk-XUIHBHL5.js +5 -0
- package/dist/bundle/chunks/chunk-XYXUMFSU.js +14 -0
- package/dist/bundle/chunks/chunk-Y4LIDHSD.js +7 -0
- package/dist/bundle/chunks/chunk-YCLFEX4T.js +3 -0
- package/dist/bundle/chunks/chunk-YS4NUBYX.js +9 -0
- package/dist/bundle/chunks/chunk-ZDIT6ST5.js +7 -0
- package/dist/bundle/chunks/chunk-ZDPFA4L3.js +6 -0
- package/dist/bundle/chunks/chunk-ZZKH2ELC.js +11 -0
- package/dist/bundle/chunks/clear-HKGFEOF6.js +2 -0
- package/dist/bundle/chunks/column-XT6UFXNQ.js +2 -0
- package/dist/bundle/chunks/comm-VV2LDX2J.js +2 -0
- package/dist/bundle/chunks/cp-BISAAS7A.js +2 -0
- package/dist/bundle/chunks/curl-GRYA74XW.js +26 -0
- package/dist/bundle/chunks/cut-OKARJCCV.js +2 -0
- package/dist/bundle/chunks/date-UUUPW43J.js +2 -0
- package/dist/bundle/chunks/diff-MWJFIG7X.js +2 -0
- package/dist/bundle/chunks/dirname-MPHRFUTI.js +2 -0
- package/dist/bundle/chunks/du-572XNP42.js +2 -0
- package/dist/bundle/chunks/echo-NDWZZHPO.js +2 -0
- package/dist/bundle/chunks/env-36M5BO7M.js +2 -0
- package/dist/bundle/chunks/expand-JSPG6VOP.js +2 -0
- package/dist/bundle/chunks/expansion-R25BK4W3.js +2 -0
- package/dist/bundle/chunks/expr-5JAACS4X.js +2 -0
- package/dist/bundle/chunks/file-IPZJC3FQ.js +2 -0
- package/dist/bundle/chunks/find-INTH3OLC.js +2 -0
- package/dist/bundle/chunks/flag-coverage-XWSYNE72.js +2 -0
- package/dist/bundle/chunks/fold-4TQNYMSW.js +2 -0
- package/dist/bundle/chunks/grep-V3LQVMRQ.js +2 -0
- package/dist/bundle/chunks/gzip-O5ASJAFY.js +2 -0
- package/dist/bundle/chunks/head-442HYESI.js +2 -0
- package/dist/bundle/chunks/help-HZ6M2CKN.js +2 -0
- package/dist/bundle/chunks/history-WYYKSLSZ.js +2 -0
- package/dist/bundle/chunks/hostname-C4HQXXUP.js +2 -0
- package/dist/bundle/chunks/html-to-markdown-JW4MSQZO.js +2 -0
- package/dist/bundle/chunks/join-TBRGI3LQ.js +2 -0
- package/dist/bundle/chunks/jq-4XLYLOS5.js +2 -0
- package/dist/bundle/chunks/js-exec-N5KEZBH7.js +97 -0
- package/dist/bundle/chunks/js-exec-worker.js +4443 -0
- package/dist/bundle/chunks/ln-4LGSXXGD.js +2 -0
- package/dist/bundle/chunks/ls-ZJGQER7M.js +2 -0
- package/dist/bundle/chunks/md5sum-SPU24VSG.js +2 -0
- package/dist/bundle/chunks/mkdir-MEPGZOB6.js +2 -0
- package/dist/bundle/chunks/mv-W5BIQ646.js +2 -0
- package/dist/bundle/chunks/nl-WSDW7I4O.js +2 -0
- package/dist/bundle/chunks/od-WOKFDJTP.js +2 -0
- package/dist/bundle/chunks/paste-7JC6S4DX.js +2 -0
- package/dist/bundle/chunks/printf-TWGXF445.js +2 -0
- package/dist/bundle/chunks/pwd-WE6EN5AV.js +2 -0
- package/dist/bundle/chunks/python3-POMOR4OA.js +12 -0
- package/dist/bundle/chunks/readlink-OPJF4DL5.js +2 -0
- package/dist/bundle/chunks/rev-5EHFX4EJ.js +2 -0
- package/dist/bundle/chunks/rg-S4FXYXWB.js +2 -0
- package/dist/bundle/chunks/rm-SSGETQVQ.js +2 -0
- package/dist/bundle/chunks/rmdir-OC4ZLPYA.js +2 -0
- package/dist/bundle/chunks/sed-S5UIK574.js +2 -0
- package/dist/bundle/chunks/seq-M5EC7Q57.js +2 -0
- package/dist/bundle/chunks/sha1sum-2PTOAFR6.js +2 -0
- package/dist/bundle/chunks/sha256sum-NS7D3IXX.js +2 -0
- package/dist/bundle/chunks/sleep-X22JJINO.js +2 -0
- package/dist/bundle/chunks/sort-SW2YEO5B.js +2 -0
- package/dist/bundle/chunks/split-4KKZZXXE.js +2 -0
- package/dist/bundle/chunks/sqlite3-CGOEFJAO.js +2 -0
- package/dist/bundle/chunks/sqlite3-worker.js +1728 -0
- package/dist/bundle/chunks/stat-CD34IZ4P.js +2 -0
- package/dist/bundle/chunks/strings-6WDHLGMX.js +2 -0
- package/dist/bundle/chunks/tac-2STMMJYW.js +2 -0
- package/dist/bundle/chunks/tail-R4PCA2C4.js +2 -0
- package/dist/bundle/chunks/tar-STHHZTZ6.js +2 -0
- package/dist/bundle/chunks/tee-YUZ2FKCJ.js +2 -0
- package/dist/bundle/chunks/time-D4LNBSWX.js +2 -0
- package/dist/bundle/chunks/timeout-YDCRSLPQ.js +2 -0
- package/dist/bundle/chunks/touch-UA33VN3N.js +2 -0
- package/dist/bundle/chunks/tr-36LHWFRQ.js +2 -0
- package/dist/bundle/chunks/tree-YLD52CNT.js +2 -0
- package/dist/bundle/chunks/true-FHQXJXBE.js +2 -0
- package/dist/bundle/chunks/unexpand-CADSA4VO.js +2 -0
- package/dist/bundle/chunks/uniq-XSIZR6PB.js +2 -0
- package/dist/bundle/chunks/wc-LF7NU4LA.js +2 -0
- package/dist/bundle/chunks/which-XEM24D5D.js +2 -0
- package/dist/bundle/chunks/whoami-XMTX52VE.js +2 -0
- package/dist/bundle/chunks/worker.js +3150 -0
- package/dist/bundle/chunks/xan-Y6WF3IRG.js +2 -0
- package/dist/bundle/chunks/xan-view-HDVKHFC2.js +2 -0
- package/dist/bundle/chunks/xargs-MGZPH7AX.js +2 -0
- package/dist/bundle/chunks/yq-4QJW3EQG.js +2 -0
- package/dist/bundle/index.cjs +2178 -0
- package/dist/bundle/index.js +710 -0
- package/dist/commands/alias/alias.d.ts +6 -0
- package/dist/commands/awk/ast.d.ts +202 -0
- package/dist/commands/awk/awk2.d.ts +9 -0
- package/dist/commands/awk/builtins.d.ts +17 -0
- package/dist/commands/awk/interpreter/context.d.ts +75 -0
- package/dist/commands/awk/interpreter/expressions.d.ts +17 -0
- package/dist/commands/awk/interpreter/fields.d.ts +25 -0
- package/dist/commands/awk/interpreter/index.d.ts +8 -0
- package/dist/commands/awk/interpreter/interpreter.d.ts +54 -0
- package/dist/commands/awk/interpreter/statements.d.ts +11 -0
- package/dist/commands/awk/interpreter/type-coercion.d.ts +32 -0
- package/dist/commands/awk/interpreter/types.d.ts +13 -0
- package/dist/commands/awk/interpreter/variables.d.ts +35 -0
- package/dist/commands/awk/lexer.d.ts +100 -0
- package/dist/commands/awk/parser2-print.d.ts +35 -0
- package/dist/commands/awk/parser2.d.ts +81 -0
- package/dist/commands/base64/base64.d.ts +7 -0
- package/dist/commands/basename/basename.d.ts +4 -0
- package/dist/commands/bash/bash.d.ts +6 -0
- package/dist/commands/browser-excluded.d.ts +16 -0
- package/dist/commands/cat/cat.d.ts +4 -0
- package/dist/commands/chmod/chmod.d.ts +4 -0
- package/dist/commands/clear/clear.d.ts +4 -0
- package/dist/commands/column/column.d.ts +11 -0
- package/dist/commands/comm/comm.d.ts +12 -0
- package/dist/commands/cp/cp.d.ts +4 -0
- package/dist/commands/curl/curl.d.ts +8 -0
- package/dist/commands/curl/form.d.ts +21 -0
- package/dist/commands/curl/help.d.ts +9 -0
- package/dist/commands/curl/parse.d.ts +9 -0
- package/dist/commands/curl/response-formatting.d.ts +20 -0
- package/dist/commands/curl/types.d.ts +60 -0
- package/dist/commands/cut/cut.d.ts +4 -0
- package/dist/commands/date/date.d.ts +7 -0
- package/dist/commands/diff/diff.d.ts +7 -0
- package/dist/commands/dirname/dirname.d.ts +4 -0
- package/dist/commands/du/du.d.ts +4 -0
- package/dist/commands/duration.d.ts +5 -0
- package/dist/commands/echo/echo.d.ts +4 -0
- package/dist/commands/env/env.d.ts +6 -0
- package/dist/commands/expand/expand.d.ts +12 -0
- package/dist/commands/expand/unexpand.d.ts +12 -0
- package/dist/commands/expr/expr.d.ts +9 -0
- package/dist/commands/file/file.d.ts +9 -0
- package/dist/commands/find/find.d.ts +4 -0
- package/dist/commands/find/matcher.d.ts +69 -0
- package/dist/commands/find/parser.d.ts +2 -0
- package/dist/commands/find/types.d.ts +88 -0
- package/dist/commands/flag-coverage.d.ts +2 -0
- package/dist/commands/fold/fold.d.ts +12 -0
- package/dist/commands/format-mode.d.ts +4 -0
- package/dist/commands/fuzz-flags-types.d.ts +17 -0
- package/dist/commands/fuzz-flags.d.ts +8 -0
- package/dist/commands/grep/grep.d.ts +8 -0
- package/dist/commands/gzip/gzip.d.ts +13 -0
- package/dist/commands/head/head-tail-shared.d.ts +38 -0
- package/dist/commands/head/head.d.ts +4 -0
- package/dist/commands/help/help.d.ts +4 -0
- package/dist/commands/help.d.ts +16 -0
- package/dist/commands/history/history.d.ts +4 -0
- package/dist/commands/hostname/hostname.d.ts +11 -0
- package/dist/commands/html-to-markdown/html-to-markdown.d.ts +9 -0
- package/dist/commands/join/join.d.ts +12 -0
- package/dist/commands/jq/jq.d.ts +9 -0
- package/dist/commands/js-exec/fetch-polyfill.d.ts +6 -0
- package/dist/commands/js-exec/js-exec-worker.d.ts +32 -0
- package/dist/commands/js-exec/js-exec.d.ts +11 -0
- package/dist/commands/js-exec/module-shims.d.ts +29 -0
- package/dist/commands/js-exec/path-polyfill.d.ts +6 -0
- package/dist/commands/ln/ln.d.ts +4 -0
- package/dist/commands/ls/ls.d.ts +4 -0
- package/dist/commands/md5sum/checksum.d.ts +7 -0
- package/dist/commands/md5sum/md5sum.d.ts +4 -0
- package/dist/commands/md5sum/sha1sum.d.ts +4 -0
- package/dist/commands/md5sum/sha256sum.d.ts +4 -0
- package/dist/commands/mkdir/mkdir.d.ts +4 -0
- package/dist/commands/mv/mv.d.ts +4 -0
- package/dist/commands/nl/nl.d.ts +12 -0
- package/dist/commands/od/od.d.ts +12 -0
- package/dist/commands/paste/paste.d.ts +4 -0
- package/dist/commands/printf/escapes.d.ts +25 -0
- package/dist/commands/printf/printf.d.ts +4 -0
- package/dist/commands/printf/strftime.d.ts +9 -0
- package/dist/commands/pwd/pwd.d.ts +4 -0
- package/dist/commands/python3/python3.d.ts +16 -0
- package/dist/commands/python3/worker.d.ts +28 -0
- package/dist/commands/query-engine/builtins/array-builtins.d.ts +20 -0
- package/dist/commands/query-engine/builtins/control-builtins.d.ts +18 -0
- package/dist/commands/query-engine/builtins/date-builtins.d.ts +15 -0
- package/dist/commands/query-engine/builtins/format-builtins.d.ts +11 -0
- package/dist/commands/query-engine/builtins/index-builtins.d.ts +16 -0
- package/dist/commands/query-engine/builtins/index.d.ts +17 -0
- package/dist/commands/query-engine/builtins/math-builtins.d.ts +15 -0
- package/dist/commands/query-engine/builtins/navigation-builtins.d.ts +18 -0
- package/dist/commands/query-engine/builtins/object-builtins.d.ts +15 -0
- package/dist/commands/query-engine/builtins/path-builtins.d.ts +20 -0
- package/dist/commands/query-engine/builtins/sql-builtins.d.ts +16 -0
- package/dist/commands/query-engine/builtins/string-builtins.d.ts +15 -0
- package/dist/commands/query-engine/builtins/type-builtins.d.ts +11 -0
- package/dist/commands/query-engine/evaluator.d.ts +40 -0
- package/dist/commands/query-engine/index.d.ts +8 -0
- package/dist/commands/query-engine/parser-types.d.ts +171 -0
- package/dist/commands/query-engine/parser.d.ts +9 -0
- package/dist/commands/query-engine/path-operations.d.ts +15 -0
- package/dist/commands/query-engine/safe-object.d.ts +83 -0
- package/dist/commands/query-engine/value-operations.d.ts +41 -0
- package/dist/commands/readlink/readlink.d.ts +4 -0
- package/dist/commands/registry.d.ts +56 -0
- package/dist/commands/rev/rev.d.ts +13 -0
- package/dist/commands/rg/file-types.d.ts +49 -0
- package/dist/commands/rg/gitignore.d.ts +98 -0
- package/dist/commands/rg/rg-options.d.ts +61 -0
- package/dist/commands/rg/rg-parser.d.ts +20 -0
- package/dist/commands/rg/rg-search.d.ts +15 -0
- package/dist/commands/rg/rg.d.ts +14 -0
- package/dist/commands/rm/rm.d.ts +4 -0
- package/dist/commands/rmdir/rmdir.d.ts +4 -0
- package/dist/commands/search-engine/index.d.ts +10 -0
- package/dist/commands/search-engine/matcher.d.ts +66 -0
- package/dist/commands/search-engine/regex.d.ts +46 -0
- package/dist/commands/sed/executor.d.ts +7 -0
- package/dist/commands/sed/lexer.d.ts +86 -0
- package/dist/commands/sed/parser.d.ts +18 -0
- package/dist/commands/sed/sed-regex.d.ts +23 -0
- package/dist/commands/sed/sed.d.ts +4 -0
- package/dist/commands/sed/types.d.ts +216 -0
- package/dist/commands/seq/seq.d.ts +16 -0
- package/dist/commands/sleep/sleep.d.ts +4 -0
- package/dist/commands/sort/comparator.d.ts +9 -0
- package/dist/commands/sort/parser.d.ts +11 -0
- package/dist/commands/sort/sort.d.ts +4 -0
- package/dist/commands/sort/types.d.ts +30 -0
- package/dist/commands/split/split.d.ts +12 -0
- package/dist/commands/sqlite3/formatters.d.ts +15 -0
- package/dist/commands/sqlite3/sqlite3.d.ts +23 -0
- package/dist/commands/sqlite3/worker.d.ts +45 -0
- package/dist/commands/sqlite3/worker.js +1728 -0
- package/dist/commands/stat/stat.d.ts +4 -0
- package/dist/commands/strings/strings.d.ts +12 -0
- package/dist/commands/tac/tac.d.ts +11 -0
- package/dist/commands/tail/tail.d.ts +4 -0
- package/dist/commands/tar/archive.d.ts +135 -0
- package/dist/commands/tar/bzip2-compress.d.ts +17 -0
- package/dist/commands/tar/tar-options.d.ts +37 -0
- package/dist/commands/tar/tar.d.ts +10 -0
- package/dist/commands/tee/tee.d.ts +4 -0
- package/dist/commands/time/time.d.ts +27 -0
- package/dist/commands/timeout/timeout.d.ts +4 -0
- package/dist/commands/touch/touch.d.ts +4 -0
- package/dist/commands/tr/tr.d.ts +4 -0
- package/dist/commands/tree/tree.d.ts +4 -0
- package/dist/commands/true/true.d.ts +6 -0
- package/dist/commands/uniq/uniq.d.ts +4 -0
- package/dist/commands/wc/wc.d.ts +4 -0
- package/dist/commands/which/which.d.ts +4 -0
- package/dist/commands/whoami/whoami.d.ts +11 -0
- package/dist/commands/worker-bridge/bridge-handler.d.ts +73 -0
- package/dist/commands/worker-bridge/protocol.d.ts +141 -0
- package/dist/commands/worker-bridge/sync-backend.d.ts +86 -0
- package/dist/commands/xan/aggregation.d.ts +20 -0
- package/dist/commands/xan/column-selection.d.ts +19 -0
- package/dist/commands/xan/csv.d.ts +37 -0
- package/dist/commands/xan/moonblade-parser.d.ts +80 -0
- package/dist/commands/xan/moonblade-to-jq.d.ts +12 -0
- package/dist/commands/xan/moonblade-tokenizer.d.ts +25 -0
- package/dist/commands/xan/subcommands.d.ts +15 -0
- package/dist/commands/xan/xan-agg.d.ts +8 -0
- package/dist/commands/xan/xan-columns.d.ts +8 -0
- package/dist/commands/xan/xan-core.d.ts +10 -0
- package/dist/commands/xan/xan-data.d.ts +52 -0
- package/dist/commands/xan/xan-filter.d.ts +8 -0
- package/dist/commands/xan/xan-map.d.ts +11 -0
- package/dist/commands/xan/xan-reshape.d.ts +40 -0
- package/dist/commands/xan/xan-simple.d.ts +40 -0
- package/dist/commands/xan/xan-view.d.ts +12 -0
- package/dist/commands/xan/xan.d.ts +10 -0
- package/dist/commands/xargs/xargs.d.ts +4 -0
- package/dist/commands/yq/formats.d.ts +64 -0
- package/dist/commands/yq/yq.d.ts +13 -0
- package/dist/custom-commands.d.ts +42 -0
- package/dist/encoding.d.ts +115 -0
- package/dist/fs/encoding.d.ts +17 -0
- package/dist/fs/in-memory-fs/in-memory-fs.d.ts +75 -0
- package/dist/fs/in-memory-fs/index.d.ts +1 -0
- package/dist/fs/init.d.ts +22 -0
- package/dist/fs/interface.d.ts +251 -0
- package/dist/fs/mountable-fs/index.d.ts +1 -0
- package/dist/fs/mountable-fs/mountable-fs.d.ts +118 -0
- package/dist/fs/overlay-fs/index.d.ts +1 -0
- package/dist/fs/overlay-fs/overlay-fs.d.ts +165 -0
- package/dist/fs/path-utils.d.ts +46 -0
- package/dist/fs/read-write-fs/index.d.ts +1 -0
- package/dist/fs/read-write-fs/read-write-fs.d.ts +98 -0
- package/dist/fs/real-fs-utils.d.ts +90 -0
- package/dist/fs/sanitize-error.d.ts +19 -0
- package/dist/index.d.cts +29 -0
- package/dist/index.d.ts +29 -0
- package/dist/interpreter/alias-expansion.d.ts +23 -0
- package/dist/interpreter/arithmetic.d.ts +24 -0
- package/dist/interpreter/assignment-expansion.d.ts +24 -0
- package/dist/interpreter/builtin-dispatch.d.ts +39 -0
- package/dist/interpreter/builtins/break.d.ts +6 -0
- package/dist/interpreter/builtins/cd.d.ts +6 -0
- package/dist/interpreter/builtins/compgen.d.ts +26 -0
- package/dist/interpreter/builtins/complete.d.ts +17 -0
- package/dist/interpreter/builtins/compopt.d.ts +28 -0
- package/dist/interpreter/builtins/continue.d.ts +6 -0
- package/dist/interpreter/builtins/declare-array-parsing.d.ts +14 -0
- package/dist/interpreter/builtins/declare-print.d.ts +39 -0
- package/dist/interpreter/builtins/declare.d.ts +35 -0
- package/dist/interpreter/builtins/dirs.d.ts +29 -0
- package/dist/interpreter/builtins/eval.d.ts +9 -0
- package/dist/interpreter/builtins/exit.d.ts +5 -0
- package/dist/interpreter/builtins/export.d.ts +14 -0
- package/dist/interpreter/builtins/getopts.d.ts +18 -0
- package/dist/interpreter/builtins/hash.d.ts +19 -0
- package/dist/interpreter/builtins/help.d.ts +12 -0
- package/dist/interpreter/builtins/index.d.ts +45 -0
- package/dist/interpreter/builtins/let.d.ts +18 -0
- package/dist/interpreter/builtins/local.d.ts +6 -0
- package/dist/interpreter/builtins/mapfile.d.ts +17 -0
- package/dist/interpreter/builtins/read.d.ts +6 -0
- package/dist/interpreter/builtins/return.d.ts +6 -0
- package/dist/interpreter/builtins/set.d.ts +9 -0
- package/dist/interpreter/builtins/shift.d.ts +15 -0
- package/dist/interpreter/builtins/shopt.d.ts +7 -0
- package/dist/interpreter/builtins/source.d.ts +6 -0
- package/dist/interpreter/builtins/unset.d.ts +16 -0
- package/dist/interpreter/builtins/variable-assignment.d.ts +66 -0
- package/dist/interpreter/command-resolution.d.ts +43 -0
- package/dist/interpreter/conditionals.d.ts +17 -0
- package/dist/interpreter/control-flow.d.ts +21 -0
- package/dist/interpreter/defense-aware-command-context.d.ts +6 -0
- package/dist/interpreter/errors.d.ts +158 -0
- package/dist/interpreter/expansion/analysis.d.ts +37 -0
- package/dist/interpreter/expansion/arith-text-expansion.d.ts +20 -0
- package/dist/interpreter/expansion/array-pattern-ops.d.ts +21 -0
- package/dist/interpreter/expansion/array-prefix-suffix.d.ts +46 -0
- package/dist/interpreter/expansion/array-slice-transform.d.ts +36 -0
- package/dist/interpreter/expansion/array-word-expansion.d.ts +39 -0
- package/dist/interpreter/expansion/brace-range.d.ts +20 -0
- package/dist/interpreter/expansion/command-substitution.d.ts +23 -0
- package/dist/interpreter/expansion/glob-escape.d.ts +32 -0
- package/dist/interpreter/expansion/indirect-expansion.d.ts +42 -0
- package/dist/interpreter/expansion/parameter-ops.d.ts +113 -0
- package/dist/interpreter/expansion/pattern-expansion.d.ts +23 -0
- package/dist/interpreter/expansion/pattern-removal.d.ts +18 -0
- package/dist/interpreter/expansion/pattern.d.ts +23 -0
- package/dist/interpreter/expansion/positional-params.d.ts +59 -0
- package/dist/interpreter/expansion/prompt.d.ts +39 -0
- package/dist/interpreter/expansion/quoting.d.ts +13 -0
- package/dist/interpreter/expansion/tilde.d.ts +12 -0
- package/dist/interpreter/expansion/unquoted-expansion.d.ts +76 -0
- package/dist/interpreter/expansion/variable-attrs.d.ts +19 -0
- package/dist/interpreter/expansion/variable.d.ts +36 -0
- package/dist/interpreter/expansion/word-glob-expansion.d.ts +33 -0
- package/dist/interpreter/expansion/word-split.d.ts +29 -0
- package/dist/interpreter/expansion.d.ts +53 -0
- package/dist/interpreter/functions.d.ts +12 -0
- package/dist/interpreter/helpers/array.d.ts +43 -0
- package/dist/interpreter/helpers/condition.d.ts +22 -0
- package/dist/interpreter/helpers/errors.d.ts +8 -0
- package/dist/interpreter/helpers/file-tests.d.ts +33 -0
- package/dist/interpreter/helpers/ifs.d.ts +104 -0
- package/dist/interpreter/helpers/loop.d.ts +24 -0
- package/dist/interpreter/helpers/nameref.d.ts +65 -0
- package/dist/interpreter/helpers/numeric-compare.d.ts +13 -0
- package/dist/interpreter/helpers/quoting.d.ts +24 -0
- package/dist/interpreter/helpers/readonly.d.ts +45 -0
- package/dist/interpreter/helpers/regex.d.ts +8 -0
- package/dist/interpreter/helpers/result.d.ts +60 -0
- package/dist/interpreter/helpers/shell-constants.d.ts +25 -0
- package/dist/interpreter/helpers/shellopts.d.ts +28 -0
- package/dist/interpreter/helpers/statements.d.ts +20 -0
- package/dist/interpreter/helpers/string-compare.d.ts +24 -0
- package/dist/interpreter/helpers/string-tests.d.ts +13 -0
- package/dist/interpreter/helpers/tilde.d.ts +13 -0
- package/dist/interpreter/helpers/variable-tests.d.ts +9 -0
- package/dist/interpreter/helpers/word-matching.d.ts +26 -0
- package/dist/interpreter/helpers/word-parts.d.ts +22 -0
- package/dist/interpreter/helpers/xtrace.d.ts +18 -0
- package/dist/interpreter/index.d.ts +3 -0
- package/dist/interpreter/interpreter.d.ts +79 -0
- package/dist/interpreter/pipeline-execution.d.ts +16 -0
- package/dist/interpreter/redirections.d.ts +51 -0
- package/dist/interpreter/simple-command-assignments.d.ts +29 -0
- package/dist/interpreter/subshell-group.d.ts +32 -0
- package/dist/interpreter/type-command.d.ts +37 -0
- package/dist/interpreter/types.d.ts +349 -0
- package/dist/limits.d.ts +52 -0
- package/dist/network/allow-list/shared.d.ts +57 -0
- package/dist/network/allow-list.d.ts +59 -0
- package/dist/network/dns-pin.d.ts +43 -0
- package/dist/network/fetch.d.ts +25 -0
- package/dist/network/index.d.ts +7 -0
- package/dist/network/types.d.ts +155 -0
- package/dist/parser/arithmetic-parser.d.ts +23 -0
- package/dist/parser/arithmetic-primaries.d.ts +45 -0
- package/dist/parser/command-parser.d.ts +10 -0
- package/dist/parser/compound-parser.d.ts +28 -0
- package/dist/parser/conditional-parser.d.ts +8 -0
- package/dist/parser/expansion-parser.d.ts +16 -0
- package/dist/parser/lexer.d.ts +197 -0
- package/dist/parser/parser-substitution.d.ts +62 -0
- package/dist/parser/parser.d.ts +135 -0
- package/dist/parser/types.d.ts +25 -0
- package/dist/parser/word-parser.d.ts +33 -0
- package/dist/sandbox/Command.d.ts +35 -0
- package/dist/sandbox/Sandbox.d.ts +90 -0
- package/dist/sandbox/index.d.ts +2 -0
- package/dist/shell-metadata.d.ts +25 -0
- package/dist/timers.d.ts +4 -0
- package/dist/types.d.ts +247 -0
- package/dist/utils/args.d.ts +55 -0
- package/dist/utils/constants.d.ts +15 -0
- package/dist/utils/file-reader.d.ts +74 -0
- package/dist/utils/glob.d.ts +25 -0
- package/dist/vitest-setup.d.ts +1 -0
- package/package.json +127 -0
- package/vendor/cpython-emscripten/python.cjs +2 -0
- package/vendor/cpython-emscripten/python.wasm +0 -0
- package/vendor/cpython-emscripten/python313.zip +0 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interpreter Types
|
|
3
|
+
*/
|
|
4
|
+
import type { CommandNode, FunctionDefNode, ScriptNode, StatementNode } from "../ast/types.js";
|
|
5
|
+
import type { IFileSystem } from "../fs/interface.js";
|
|
6
|
+
import type { ExecutionLimits } from "../limits.js";
|
|
7
|
+
import type { SecureFetch } from "../network/index.js";
|
|
8
|
+
import type { CommandRegistry, ExecResult, FeatureCoverageWriter, TraceCallback } from "../types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Completion specification for a command, set by the `complete` builtin.
|
|
11
|
+
*/
|
|
12
|
+
export interface CompletionSpec {
|
|
13
|
+
/** Word list for -W option */
|
|
14
|
+
wordlist?: string;
|
|
15
|
+
/** Function name for -F option */
|
|
16
|
+
function?: string;
|
|
17
|
+
/** Command to run for -C option */
|
|
18
|
+
command?: string;
|
|
19
|
+
/** Completion options (nospace, filenames, etc.) */
|
|
20
|
+
options?: string[];
|
|
21
|
+
/** Actions to perform (from -A option) */
|
|
22
|
+
actions?: string[];
|
|
23
|
+
/** Whether this is a default completion (-D) */
|
|
24
|
+
isDefault?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface ShellOptions {
|
|
27
|
+
/** set -e: Exit immediately if a command exits with non-zero status */
|
|
28
|
+
errexit: boolean;
|
|
29
|
+
/** set -o pipefail: Return the exit status of the last (rightmost) command in a pipeline that fails */
|
|
30
|
+
pipefail: boolean;
|
|
31
|
+
/** set -u: Treat unset variables as an error when substituting */
|
|
32
|
+
nounset: boolean;
|
|
33
|
+
/** set -x: Print commands and their arguments as they are executed */
|
|
34
|
+
xtrace: boolean;
|
|
35
|
+
/** set -v: Print shell input lines as they are read (verbose) */
|
|
36
|
+
verbose: boolean;
|
|
37
|
+
/** set -o posix: POSIX mode for stricter compliance */
|
|
38
|
+
posix: boolean;
|
|
39
|
+
/** set -a: Export all variables */
|
|
40
|
+
allexport: boolean;
|
|
41
|
+
/** set -C: Prevent overwriting files with redirection */
|
|
42
|
+
noclobber: boolean;
|
|
43
|
+
/** set -f: Disable filename expansion (globbing) */
|
|
44
|
+
noglob: boolean;
|
|
45
|
+
/** set -n: Read commands but do not execute them (syntax check mode) */
|
|
46
|
+
noexec: boolean;
|
|
47
|
+
/** set -o vi: Use vi-style line editing (mutually exclusive with emacs) */
|
|
48
|
+
vi: boolean;
|
|
49
|
+
/** set -o emacs: Use emacs-style line editing (mutually exclusive with vi) */
|
|
50
|
+
emacs: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface ShoptOptions {
|
|
53
|
+
/** shopt -s extglob: Enable extended globbing patterns @(), *(), +(), ?(), !() */
|
|
54
|
+
extglob: boolean;
|
|
55
|
+
/** shopt -s dotglob: Include dotfiles in glob expansion */
|
|
56
|
+
dotglob: boolean;
|
|
57
|
+
/** shopt -s nullglob: Return empty for non-matching globs instead of literal pattern */
|
|
58
|
+
nullglob: boolean;
|
|
59
|
+
/** shopt -s failglob: Fail if glob pattern has no matches */
|
|
60
|
+
failglob: boolean;
|
|
61
|
+
/** shopt -s globstar: Enable ** recursive glob patterns */
|
|
62
|
+
globstar: boolean;
|
|
63
|
+
/** shopt -s globskipdots: Skip . and .. in glob patterns (default: true in bash >=5.2) */
|
|
64
|
+
globskipdots: boolean;
|
|
65
|
+
/** shopt -s nocaseglob: Case-insensitive glob matching */
|
|
66
|
+
nocaseglob: boolean;
|
|
67
|
+
/** shopt -s nocasematch: Case-insensitive pattern matching in [[ ]] and case */
|
|
68
|
+
nocasematch: boolean;
|
|
69
|
+
/** shopt -s expand_aliases: Enable alias expansion */
|
|
70
|
+
expand_aliases: boolean;
|
|
71
|
+
/** shopt -s lastpipe: Run last command of pipeline in current shell context */
|
|
72
|
+
lastpipe: boolean;
|
|
73
|
+
/** shopt -s xpg_echo: Make echo interpret backslash escapes by default (like echo -e) */
|
|
74
|
+
xpg_echo: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Tracks variable type attributes (declare -i, -l, -u, -n, -a, -A, etc.)
|
|
78
|
+
* and export status. These affect how variables are read, written, and expanded.
|
|
79
|
+
*/
|
|
80
|
+
export interface VariableAttributeState {
|
|
81
|
+
/** Set of variable names that are readonly */
|
|
82
|
+
readonlyVars?: Set<string>;
|
|
83
|
+
/** Set of variable names that are associative arrays */
|
|
84
|
+
associativeArrays?: Set<string>;
|
|
85
|
+
/** Set of variable names that are namerefs (declare -n) */
|
|
86
|
+
namerefs?: Set<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Set of nameref variable names that were "bound" to valid targets at creation time.
|
|
89
|
+
* A bound nameref will always resolve through to its target, even if the target
|
|
90
|
+
* is later unset. An unbound nameref (target didn't exist at creation) acts like
|
|
91
|
+
* a regular variable, returning its raw value.
|
|
92
|
+
*/
|
|
93
|
+
boundNamerefs?: Set<string>;
|
|
94
|
+
/**
|
|
95
|
+
* Set of nameref variable names that were created with an invalid target.
|
|
96
|
+
* Invalid namerefs always read/write their value directly, never resolving.
|
|
97
|
+
* For example, after `ref=1; typeset -n ref`, ref has an invalid target "1".
|
|
98
|
+
*/
|
|
99
|
+
invalidNamerefs?: Set<string>;
|
|
100
|
+
/** Set of variable names that have integer attribute (declare -i) */
|
|
101
|
+
integerVars?: Set<string>;
|
|
102
|
+
/** Set of variable names that have lowercase attribute (declare -l) */
|
|
103
|
+
lowercaseVars?: Set<string>;
|
|
104
|
+
/** Set of variable names that have uppercase attribute (declare -u) */
|
|
105
|
+
uppercaseVars?: Set<string>;
|
|
106
|
+
/** Set of exported variable names */
|
|
107
|
+
exportedVars?: Set<string>;
|
|
108
|
+
/** Set of temporarily exported variable names (for prefix assignments like FOO=bar cmd) */
|
|
109
|
+
tempExportedVars?: Set<string>;
|
|
110
|
+
/**
|
|
111
|
+
* Stack of sets tracking variables exported within each local scope.
|
|
112
|
+
* When a function returns and a local scope is popped, if a variable was
|
|
113
|
+
* exported only in that scope (not before entering), the export attribute
|
|
114
|
+
* should be removed. This enables bash's scoped export behavior where
|
|
115
|
+
* `local V=x; export V` only exports the local, not the global.
|
|
116
|
+
*/
|
|
117
|
+
localExportedVars?: Set<string>[];
|
|
118
|
+
/** Set of variable names that have been declared but not assigned a value */
|
|
119
|
+
declaredVars?: Set<string>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Tracks the complex local variable scoping machinery.
|
|
123
|
+
* Bash's local variable behavior is intricate: variables are dynamically scoped,
|
|
124
|
+
* can be declared multiple times in nested contexts, and have different unset
|
|
125
|
+
* behaviors depending on whether the unset happens in the declaring scope.
|
|
126
|
+
*/
|
|
127
|
+
export interface LocalScopingState {
|
|
128
|
+
/** Stack of local variable scopes (one Map per function call) */
|
|
129
|
+
localScopes: Map<string, string | undefined>[];
|
|
130
|
+
/**
|
|
131
|
+
* Tracks at which call depth each local variable was declared.
|
|
132
|
+
* Used for bash-specific unset scoping behavior:
|
|
133
|
+
* - local-unset (same scope): value-unset (clears value, keeps local cell)
|
|
134
|
+
* - dynamic-unset (different scope): cell-unset (removes local cell, exposes outer value)
|
|
135
|
+
*/
|
|
136
|
+
localVarDepth?: Map<string, number>;
|
|
137
|
+
/**
|
|
138
|
+
* Stack of saved values for each local variable, supporting bash's localvar-nest behavior.
|
|
139
|
+
* Each entry contains the saved (outer) value and the scope index where it was saved.
|
|
140
|
+
* This allows multiple nested `local` declarations of the same variable (e.g., in nested evals)
|
|
141
|
+
* to each have their own cell that can be unset independently.
|
|
142
|
+
*/
|
|
143
|
+
localVarStack?: Map<string, Array<{
|
|
144
|
+
value: string | undefined;
|
|
145
|
+
scopeIndex: number;
|
|
146
|
+
}>>;
|
|
147
|
+
/**
|
|
148
|
+
* Map of variable names to scope index where they were fully unset.
|
|
149
|
+
* Used to prevent tempenv restoration after all local cells are removed.
|
|
150
|
+
* Entries are cleared when their scope returns.
|
|
151
|
+
*/
|
|
152
|
+
fullyUnsetLocals?: Map<string, number>;
|
|
153
|
+
/**
|
|
154
|
+
* Stack of temporary environment bindings from prefix assignments (e.g., FOO=bar cmd).
|
|
155
|
+
* Each entry maps variable names to their saved (underlying) values.
|
|
156
|
+
* Used for bash-specific unset behavior: when unsetting a variable that has a
|
|
157
|
+
* tempenv binding, the unset should reveal the underlying value, not completely
|
|
158
|
+
* remove the variable.
|
|
159
|
+
*/
|
|
160
|
+
tempEnvBindings?: Map<string, string | undefined>[];
|
|
161
|
+
/**
|
|
162
|
+
* Set of tempenv variable names that have been explicitly written to within
|
|
163
|
+
* the current function context (after the prefix assignment, before local).
|
|
164
|
+
* Used to distinguish between "fresh" tempenvs (local-unset = value-unset)
|
|
165
|
+
* and "mutated" tempenvs (local-unset reveals the mutated value).
|
|
166
|
+
*/
|
|
167
|
+
mutatedTempEnvVars?: Set<string>;
|
|
168
|
+
/**
|
|
169
|
+
* Set of tempenv variable names that have been accessed (read or written)
|
|
170
|
+
* within the current function context. Used to determine if a tempenv was
|
|
171
|
+
* "observed" before a local declaration.
|
|
172
|
+
*/
|
|
173
|
+
accessedTempEnvVars?: Set<string>;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Tracks the function call stack and source file nesting.
|
|
177
|
+
* This state powers the FUNCNAME, BASH_LINENO, and BASH_SOURCE arrays,
|
|
178
|
+
* and determines the behavior of `return` in different contexts.
|
|
179
|
+
*/
|
|
180
|
+
export interface CallStackState {
|
|
181
|
+
/** Function definitions (name -> AST node) */
|
|
182
|
+
functions: Map<string, FunctionDefNode>;
|
|
183
|
+
/** Current function call depth (for recursion limits and local scoping) */
|
|
184
|
+
callDepth: number;
|
|
185
|
+
/** Current source script nesting depth (for return in sourced scripts) */
|
|
186
|
+
sourceDepth: number;
|
|
187
|
+
/** Stack of call line numbers for BASH_LINENO */
|
|
188
|
+
callLineStack?: number[];
|
|
189
|
+
/** Stack of function names for FUNCNAME */
|
|
190
|
+
funcNameStack?: string[];
|
|
191
|
+
/** Stack of source files for BASH_SOURCE (tracks where functions were defined) */
|
|
192
|
+
sourceStack?: string[];
|
|
193
|
+
/** Current source file context (for function definitions) */
|
|
194
|
+
currentSource?: string;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Tracks loop nesting and condition context.
|
|
198
|
+
* Used to implement break/continue commands and to suppress errexit
|
|
199
|
+
* in condition contexts (if, while, until, ||, &&).
|
|
200
|
+
*/
|
|
201
|
+
export interface ControlFlowState {
|
|
202
|
+
/** True when executing condition for if/while/until (errexit doesn't apply) */
|
|
203
|
+
inCondition: boolean;
|
|
204
|
+
/** Current loop nesting depth (for break/continue) */
|
|
205
|
+
loopDepth: number;
|
|
206
|
+
/** True if this subshell was spawned from within a loop context (for break/continue to exit subshell) */
|
|
207
|
+
parentHasLoopContext?: boolean;
|
|
208
|
+
/** True when the last executed statement's exit code is "safe" for errexit purposes
|
|
209
|
+
* (e.g., from a &&/|| chain where the failure wasn't the final command) */
|
|
210
|
+
errexitSafe?: boolean;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Tracks process IDs, timing, and execution counts.
|
|
214
|
+
* Powers special variables like $$, $BASHPID, $!, and $SECONDS.
|
|
215
|
+
*/
|
|
216
|
+
export interface ProcessState {
|
|
217
|
+
/** Total commands executed (for execution limits) */
|
|
218
|
+
commandCount: number;
|
|
219
|
+
/** Time when shell started (for $SECONDS) */
|
|
220
|
+
startTime: number;
|
|
221
|
+
/** PID of last background job (for $!) */
|
|
222
|
+
lastBackgroundPid: number;
|
|
223
|
+
/** Current BASHPID (changes in subshells, unlike $$) */
|
|
224
|
+
bashPid: number;
|
|
225
|
+
/** Counter for generating unique virtual PIDs for subshells */
|
|
226
|
+
nextVirtualPid: number;
|
|
227
|
+
/** Virtual main shell PID for $$ (default 1, never exposes real process.pid) */
|
|
228
|
+
virtualPid: number;
|
|
229
|
+
/** Virtual parent PID for $PPID (default 0, never exposes real process.ppid) */
|
|
230
|
+
virtualPpid: number;
|
|
231
|
+
/** Virtual user ID for $UID/$EUID (default 1000, never exposes real UID) */
|
|
232
|
+
virtualUid: number;
|
|
233
|
+
/** Virtual group ID (default 1000, never exposes real GID) */
|
|
234
|
+
virtualGid: number;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Tracks file descriptors and stdin content for I/O operations.
|
|
238
|
+
* Used for process substitution, here-documents, and compound command stdin.
|
|
239
|
+
*/
|
|
240
|
+
export interface IOState {
|
|
241
|
+
/** Stdin available for commands in compound commands (groups, subshells, while loops with piped input) */
|
|
242
|
+
groupStdin?: string;
|
|
243
|
+
/** File descriptors for process substitution and here-docs */
|
|
244
|
+
fileDescriptors?: Map<number, string>;
|
|
245
|
+
/** Next available file descriptor for {varname}>file allocation (starts at 10) */
|
|
246
|
+
nextFd?: number;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Captures errors that occur during parameter expansion.
|
|
250
|
+
* Some expansion errors need to be reported after expansion completes,
|
|
251
|
+
* with their exit codes and stderr preserved.
|
|
252
|
+
*/
|
|
253
|
+
export interface ExpansionState {
|
|
254
|
+
/** Exit code from expansion errors (arithmetic, etc.) - overrides command exit code */
|
|
255
|
+
expansionExitCode?: number;
|
|
256
|
+
/** Stderr from expansion errors */
|
|
257
|
+
expansionStderr?: string;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Complete interpreter state for bash script execution.
|
|
261
|
+
*
|
|
262
|
+
* This interface is composed from focused sub-interfaces:
|
|
263
|
+
* - {@link VariableAttributeState} - Variable type attributes (readonly, integer, etc.)
|
|
264
|
+
* - {@link LocalScopingState} - Local variable scoping machinery
|
|
265
|
+
* - {@link CallStackState} - Function calls and source file tracking
|
|
266
|
+
* - {@link ControlFlowState} - Loop nesting and condition context
|
|
267
|
+
* - {@link ProcessState} - PIDs, timing, execution counts
|
|
268
|
+
* - {@link IOState} - File descriptors and stdin
|
|
269
|
+
* - {@link ExpansionState} - Expansion error capture
|
|
270
|
+
*/
|
|
271
|
+
export interface InterpreterState extends VariableAttributeState, LocalScopingState, CallStackState, ControlFlowState, ProcessState, IOState, ExpansionState {
|
|
272
|
+
/** Environment variables (exported to commands) - uses Map to prevent prototype pollution */
|
|
273
|
+
env: Map<string, string>;
|
|
274
|
+
/** Current working directory */
|
|
275
|
+
cwd: string;
|
|
276
|
+
/** Previous directory (for `cd -`) */
|
|
277
|
+
previousDir: string;
|
|
278
|
+
/** Exit code of last executed command */
|
|
279
|
+
lastExitCode: number;
|
|
280
|
+
/** Last argument of previous command, for $_ expansion */
|
|
281
|
+
lastArg: string;
|
|
282
|
+
/** Current line number being executed (for $LINENO) */
|
|
283
|
+
currentLine: number;
|
|
284
|
+
/** Shell options (set -e, etc.) */
|
|
285
|
+
options: ShellOptions;
|
|
286
|
+
/** Shopt options (shopt -s, etc.) */
|
|
287
|
+
shoptOptions: ShoptOptions;
|
|
288
|
+
/** Completion specifications set by the `complete` builtin */
|
|
289
|
+
completionSpecs?: Map<string, CompletionSpec>;
|
|
290
|
+
/** Directory stack for pushd/popd/dirs */
|
|
291
|
+
directoryStack?: string[];
|
|
292
|
+
/** Hash table for PATH command lookup caching */
|
|
293
|
+
hashTable?: Map<string, string>;
|
|
294
|
+
/**
|
|
295
|
+
* Suppress verbose mode output (set -v) when inside command substitutions.
|
|
296
|
+
* bash only prints verbose output for the main script, not for commands
|
|
297
|
+
* inside $(...) or backticks.
|
|
298
|
+
*/
|
|
299
|
+
suppressVerbose?: boolean;
|
|
300
|
+
/**
|
|
301
|
+
* Abort signal for cooperative cancellation.
|
|
302
|
+
* Checked at statement boundaries; when aborted, execution stops.
|
|
303
|
+
*/
|
|
304
|
+
signal?: AbortSignal;
|
|
305
|
+
/** Extra arguments injected via exec({ args }), appended to first command's args */
|
|
306
|
+
extraArgs?: string[];
|
|
307
|
+
}
|
|
308
|
+
export interface InterpreterContext {
|
|
309
|
+
state: InterpreterState;
|
|
310
|
+
fs: IFileSystem;
|
|
311
|
+
commands: CommandRegistry;
|
|
312
|
+
/** Execution limits configuration */
|
|
313
|
+
limits: Required<ExecutionLimits>;
|
|
314
|
+
execFn: (script: string, options?: {
|
|
315
|
+
env?: Record<string, string>;
|
|
316
|
+
cwd?: string;
|
|
317
|
+
replaceEnv?: boolean;
|
|
318
|
+
signal?: AbortSignal;
|
|
319
|
+
args?: string[];
|
|
320
|
+
}) => Promise<ExecResult>;
|
|
321
|
+
executeScript: (node: ScriptNode) => Promise<ExecResult>;
|
|
322
|
+
executeStatement: (node: StatementNode) => Promise<ExecResult>;
|
|
323
|
+
executeCommand: (node: CommandNode, stdin: string) => Promise<ExecResult>;
|
|
324
|
+
/** Optional secure fetch function for network-enabled commands */
|
|
325
|
+
fetch?: SecureFetch;
|
|
326
|
+
/** Optional sleep function for testing with mock clocks */
|
|
327
|
+
sleep?: (ms: number) => Promise<void>;
|
|
328
|
+
/** Optional trace callback for performance profiling */
|
|
329
|
+
trace?: TraceCallback;
|
|
330
|
+
/** Current command substitution nesting depth (for limit enforcement) */
|
|
331
|
+
substitutionDepth?: number;
|
|
332
|
+
/** Optional feature coverage writer for fuzzing instrumentation */
|
|
333
|
+
coverage?: FeatureCoverageWriter;
|
|
334
|
+
/**
|
|
335
|
+
* When true, interpreter execution must run inside DefenseInDepthBox
|
|
336
|
+
* sandbox async context. Used to fail closed on context-loss bugs.
|
|
337
|
+
*/
|
|
338
|
+
requireDefenseContext?: boolean;
|
|
339
|
+
/**
|
|
340
|
+
* Bootstrap JavaScript code for js-exec.
|
|
341
|
+
* Threaded through the context chain instead of shell env.
|
|
342
|
+
*/
|
|
343
|
+
jsBootstrapCode?: string;
|
|
344
|
+
/**
|
|
345
|
+
* Tool invoker hook. When present, js-exec sets up a `tools` proxy that
|
|
346
|
+
* routes calls through this callback.
|
|
347
|
+
*/
|
|
348
|
+
invokeTool?: (path: string, argsJson: string) => Promise<string>;
|
|
349
|
+
}
|
package/dist/limits.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execution Limits Configuration
|
|
3
|
+
*
|
|
4
|
+
* Centralized configuration for all execution limits to prevent runaway compute.
|
|
5
|
+
* These limits can be overridden when creating a BashEnv instance.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for execution limits.
|
|
9
|
+
* All limits are optional - undefined values use defaults.
|
|
10
|
+
*/
|
|
11
|
+
export interface ExecutionLimits {
|
|
12
|
+
/** Maximum function call/recursion depth (default: 100) */
|
|
13
|
+
maxCallDepth?: number;
|
|
14
|
+
/** Maximum number of commands to execute (default: 10000) */
|
|
15
|
+
maxCommandCount?: number;
|
|
16
|
+
/** Maximum loop iterations for bash while/for/until loops (default: 10000) */
|
|
17
|
+
maxLoopIterations?: number;
|
|
18
|
+
/** Maximum loop iterations for AWK while/for loops (default: 10000) */
|
|
19
|
+
maxAwkIterations?: number;
|
|
20
|
+
/** Maximum command iterations for SED (branch loops) (default: 10000) */
|
|
21
|
+
maxSedIterations?: number;
|
|
22
|
+
/** Maximum iterations for jq loops (until, while, repeat) (default: 10000) */
|
|
23
|
+
maxJqIterations?: number;
|
|
24
|
+
/** Maximum sqlite3 query execution time in milliseconds (default: 5000) */
|
|
25
|
+
maxSqliteTimeoutMs?: number;
|
|
26
|
+
/** Maximum Python execution time in milliseconds (default: 10000, or 60000 with network) */
|
|
27
|
+
maxPythonTimeoutMs?: number;
|
|
28
|
+
/** Maximum JavaScript (js-exec) execution time in milliseconds (default: 10000, or 60000 with network) */
|
|
29
|
+
maxJsTimeoutMs?: number;
|
|
30
|
+
/** Maximum glob filesystem operations (default: 100000) */
|
|
31
|
+
maxGlobOperations?: number;
|
|
32
|
+
/** Maximum string length in bytes (default: 10MB = 10485760) */
|
|
33
|
+
maxStringLength?: number;
|
|
34
|
+
/** Maximum array elements (default: 100000) */
|
|
35
|
+
maxArrayElements?: number;
|
|
36
|
+
/** Maximum heredoc size in bytes (default: 10MB = 10485760) */
|
|
37
|
+
maxHeredocSize?: number;
|
|
38
|
+
/** Maximum command substitution nesting depth (default: 50) */
|
|
39
|
+
maxSubstitutionDepth?: number;
|
|
40
|
+
/** Maximum brace expansion results (default: 10000) */
|
|
41
|
+
maxBraceExpansionResults?: number;
|
|
42
|
+
/** Maximum total output size (stdout + stderr) in bytes (default: 10MB = 10485760) */
|
|
43
|
+
maxOutputSize?: number;
|
|
44
|
+
/** Maximum number of open file descriptors (default: 1024) */
|
|
45
|
+
maxFileDescriptors?: number;
|
|
46
|
+
/** Maximum source/. nesting depth (default: 100) */
|
|
47
|
+
maxSourceDepth?: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolve execution limits by merging user-provided limits with defaults.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveLimits(userLimits?: ExecutionLimits): Required<ExecutionLimits>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for allow-list e2e tests
|
|
3
|
+
*
|
|
4
|
+
* This module provides:
|
|
5
|
+
* - Mock fetch implementation with predefined responses
|
|
6
|
+
* - Environment adapters for BashEnv and Sandbox
|
|
7
|
+
* - Test utilities like expectBlocked
|
|
8
|
+
*/
|
|
9
|
+
import { vi } from "vitest";
|
|
10
|
+
import type { BashOptions } from "../../Bash.js";
|
|
11
|
+
export declare const MOCK_SUCCESS_BODY: string;
|
|
12
|
+
export declare const MOCK_USERS_BODY: string;
|
|
13
|
+
export declare const MOCK_POSTS_BODY: string;
|
|
14
|
+
export declare const MOCK_FILE_BODY: string;
|
|
15
|
+
export declare const MOCK_EVIL_BODY: string;
|
|
16
|
+
export declare const originalFetch: typeof fetch;
|
|
17
|
+
export declare function createMockFetch(): ReturnType<typeof vi.fn<typeof fetch>>;
|
|
18
|
+
/**
|
|
19
|
+
* Environment adapter interface for running tests with both BashEnv and Sandbox
|
|
20
|
+
*/
|
|
21
|
+
export interface EnvAdapter {
|
|
22
|
+
exec(cmd: string): Promise<{
|
|
23
|
+
exitCode: number;
|
|
24
|
+
stdout: string;
|
|
25
|
+
stderr: string;
|
|
26
|
+
}>;
|
|
27
|
+
readFile(path: string): Promise<string>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates an adapter for BashEnv
|
|
31
|
+
*/
|
|
32
|
+
export declare function createBashEnvAdapter(options: BashOptions): EnvAdapter;
|
|
33
|
+
/**
|
|
34
|
+
* Creates an adapter for Sandbox
|
|
35
|
+
*/
|
|
36
|
+
export declare function createSandboxAdapter(options: BashOptions): Promise<EnvAdapter>;
|
|
37
|
+
export type AdapterFactory = (options: BashOptions) => EnvAdapter | Promise<EnvAdapter>;
|
|
38
|
+
/**
|
|
39
|
+
* Utility for testing that a URL is blocked
|
|
40
|
+
*/
|
|
41
|
+
export declare function expectBlocked(env: EnvAdapter, url: string, expectedUrl?: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Utility for testing that a URL is blocked due to private IP
|
|
44
|
+
*/
|
|
45
|
+
export declare function expectBlockedPrivate(env: EnvAdapter, url: string, expectedUrl?: string): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Utility for testing that a URL is blocked due to DNS-resolved private IP
|
|
48
|
+
*/
|
|
49
|
+
export declare function expectBlockedDnsPrivate(env: EnvAdapter, url: string, expectedUrl?: string): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Utility for testing that a URL is blocked due to DNS resolution failure (fail-closed)
|
|
52
|
+
*/
|
|
53
|
+
export declare function expectBlockedDnsFailure(env: EnvAdapter, url: string, expectedUrl?: string): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Utility for testing that a URL succeeds with expected mock response
|
|
56
|
+
*/
|
|
57
|
+
export declare function expectAllowed(env: EnvAdapter, url: string, expectedBody: string): Promise<void>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL allow-list matching
|
|
3
|
+
*
|
|
4
|
+
* This module provides URL allow-list matching that is enforced at the fetch layer,
|
|
5
|
+
* independent of any parsing or user input manipulation.
|
|
6
|
+
*/
|
|
7
|
+
import type { AllowedUrlEntry } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Parses a URL string into its components.
|
|
10
|
+
* Returns null if the URL is invalid.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseUrl(urlString: string): {
|
|
13
|
+
origin: string;
|
|
14
|
+
pathname: string;
|
|
15
|
+
href: string;
|
|
16
|
+
} | null;
|
|
17
|
+
/**
|
|
18
|
+
* Normalizes an allow-list entry for consistent matching.
|
|
19
|
+
* - Removes trailing slashes from origins without paths
|
|
20
|
+
* - Preserves path prefixes as-is
|
|
21
|
+
*/
|
|
22
|
+
export declare function normalizeAllowListEntry(entry: string): {
|
|
23
|
+
origin: string;
|
|
24
|
+
pathPrefix: string;
|
|
25
|
+
} | null;
|
|
26
|
+
/**
|
|
27
|
+
* Checks if a URL matches an allow-list entry.
|
|
28
|
+
*
|
|
29
|
+
* The matching rules are:
|
|
30
|
+
* 1. Origins must match exactly (case-sensitive for scheme and host)
|
|
31
|
+
* 2. Path-scoped entries match on path segment boundaries, not raw string prefix
|
|
32
|
+
* 3. Ambiguous encoded separators (%2f, %5c) are rejected for path-scoped entries
|
|
33
|
+
* 4. If the allow-list entry has no path (or just "/"), all paths are allowed
|
|
34
|
+
*
|
|
35
|
+
* @param url The URL to check (as a string)
|
|
36
|
+
* @param allowedEntry The allow-list entry to match against
|
|
37
|
+
* @returns true if the URL matches the allow-list entry
|
|
38
|
+
*/
|
|
39
|
+
export declare function matchesAllowListEntry(url: string, allowedEntry: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Checks if a URL is allowed by any entry in the allow-list.
|
|
42
|
+
*
|
|
43
|
+
* @param url The URL to check
|
|
44
|
+
* @param allowedUrlPrefixes The list of allowed URL prefixes (strings or objects)
|
|
45
|
+
* @returns true if the URL is allowed
|
|
46
|
+
*/
|
|
47
|
+
export declare function isUrlAllowed(url: string, allowedUrlPrefixes: AllowedUrlEntry[]): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check if a hostname is a private/loopback IP address.
|
|
50
|
+
* Only checks the string format — does not perform DNS resolution.
|
|
51
|
+
*/
|
|
52
|
+
export declare function isPrivateIp(hostname: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Validates an allow-list configuration.
|
|
55
|
+
* Each entry must be a full origin (scheme + host), optionally followed by a path prefix.
|
|
56
|
+
* Accepts both plain strings and AllowedUrl objects.
|
|
57
|
+
* Returns an array of error messages for invalid entries.
|
|
58
|
+
*/
|
|
59
|
+
export declare function validateAllowList(allowedUrlPrefixes: AllowedUrlEntry[]): string[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pin DNS resolution for the actual fetch to the IPs that were validated
|
|
3
|
+
* by the preflight private-range check, defeating DNS rebinding.
|
|
4
|
+
*
|
|
5
|
+
* How it works:
|
|
6
|
+
* - `dns.lookup` is monkey-patched once globally to consult an
|
|
7
|
+
* AsyncLocalStorage store. When called inside a `pinDns(...)` async
|
|
8
|
+
* context for the same hostname, it returns the pre-validated address
|
|
9
|
+
* without performing any network DNS query.
|
|
10
|
+
* - Calls outside any pinning context (or for a different hostname)
|
|
11
|
+
* are delegated to the original `dns.lookup`.
|
|
12
|
+
*
|
|
13
|
+
* Why `dns.lookup` and not `dns.promises.lookup`:
|
|
14
|
+
* - Node's `net.connect`/`tls.connect` (used by undici under `globalThis.fetch`)
|
|
15
|
+
* reads `dns.lookup` at call time and uses the callback form.
|
|
16
|
+
* - We do not patch the promises form because it's not on the connect path.
|
|
17
|
+
*
|
|
18
|
+
* Browser builds: this module is imported transitively from `fetch.ts`
|
|
19
|
+
* (re-exported via `just-bash/browser`). `node:dns` is aliased to a
|
|
20
|
+
* stub by the browser build, but `node:async_hooks` cannot be aliased
|
|
21
|
+
* via a static import. We therefore lazy-load both via `require()`
|
|
22
|
+
* inside an `IS_BROWSER === false` guard so esbuild can dead-code
|
|
23
|
+
* eliminate the Node-only path. In the browser the exported `pinDns`
|
|
24
|
+
* is a passthrough that just runs the callback (the preflight that
|
|
25
|
+
* would have produced a `PinnedAddress` always throws first because
|
|
26
|
+
* `node:dns` is unavailable, so the passthrough is unreachable).
|
|
27
|
+
*/
|
|
28
|
+
export interface PinnedAddress {
|
|
29
|
+
hostname: string;
|
|
30
|
+
address: string;
|
|
31
|
+
family: 4 | 6;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Run `fn` with `dns.lookup` for `pinned.hostname` resolving to
|
|
35
|
+
* `pinned.address`/`pinned.family`. Resolutions for other hostnames
|
|
36
|
+
* pass through to the original `dns.lookup`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function pinDns<T>(pinned: PinnedAddress, fn: () => Promise<T>): Promise<T>;
|
|
39
|
+
/**
|
|
40
|
+
* @internal Exposed for tests to verify the patched dns.lookup behaves
|
|
41
|
+
* correctly inside and outside a pinning context.
|
|
42
|
+
*/
|
|
43
|
+
export declare function _ensureDnsHookInstalled(): void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secure fetch wrapper with allow-list enforcement
|
|
3
|
+
*
|
|
4
|
+
* This module provides a fetch wrapper that:
|
|
5
|
+
* 1. Enforces URL allow-list at the fetch layer (not subject to parsing)
|
|
6
|
+
* 2. Handles redirects manually to check each redirect target against the allow-list
|
|
7
|
+
* 3. Provides timeout support
|
|
8
|
+
*/
|
|
9
|
+
import { type FetchResult, type NetworkConfig } from "./types.js";
|
|
10
|
+
export interface SecureFetchOptions {
|
|
11
|
+
method?: string;
|
|
12
|
+
headers?: Headers | Record<string, string>;
|
|
13
|
+
body?: string;
|
|
14
|
+
followRedirects?: boolean;
|
|
15
|
+
/** Override timeout for this request (capped at global timeout) */
|
|
16
|
+
timeoutMs?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Type for the secure fetch function
|
|
20
|
+
*/
|
|
21
|
+
export type SecureFetch = (url: string, options?: SecureFetchOptions) => Promise<FetchResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a secure fetch function that enforces the allow-list.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createSecureFetch(config: NetworkConfig): SecureFetch;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network module
|
|
3
|
+
*
|
|
4
|
+
* Provides secure network access with URL allow-list enforcement.
|
|
5
|
+
*/
|
|
6
|
+
export { createSecureFetch, type SecureFetch, type SecureFetchOptions, } from "./fetch.js";
|
|
7
|
+
export { type AllowedUrl, type AllowedUrlEntry, type FetchResult, type HttpMethod, NetworkAccessDeniedError, type NetworkConfig, RedirectNotAllowedError, type RequestTransform, TooManyRedirectsError, } from "./types.js";
|