just-bash-nx 2.14.4
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 +13 -0
- package/LICENSE +201 -0
- package/README.md +573 -0
- package/dist/AGENTS.md +325 -0
- package/dist/Bash.d.ts +229 -0
- package/dist/ast/types.d.ts +609 -0
- package/dist/banned-patterns-test.d.ts +1 -0
- package/dist/bin/chunks/alias-3GODYSFD.js +2 -0
- package/dist/bin/chunks/awk2-RSUCURL4.js +2 -0
- package/dist/bin/chunks/base64-43M2R3GA.js +2 -0
- package/dist/bin/chunks/basename-KBUKWB2E.js +2 -0
- package/dist/bin/chunks/bash-6ZHZ6BX7.js +2 -0
- package/dist/bin/chunks/cat-XZIJZXKP.js +2 -0
- package/dist/bin/chunks/chmod-N5CQATDW.js +2 -0
- package/dist/bin/chunks/chunk-22NDZXS5.js +33 -0
- package/dist/bin/chunks/chunk-26NO42TF.js +14 -0
- package/dist/bin/chunks/chunk-2W2SCVT6.js +140 -0
- package/dist/bin/chunks/chunk-3MBAUIBB.js +7 -0
- package/dist/bin/chunks/chunk-3Y32LPNT.js +2 -0
- package/dist/bin/chunks/chunk-4CFAYBLV.js +21 -0
- package/dist/bin/chunks/chunk-4OALHZXB.js +2 -0
- package/dist/bin/chunks/chunk-4PRVMER6.js +2 -0
- package/dist/bin/chunks/chunk-4VDEBYW7.js +2 -0
- package/dist/bin/chunks/chunk-54G6AE72.js +32 -0
- package/dist/bin/chunks/chunk-5G2VOPPJ.js +7 -0
- package/dist/bin/chunks/chunk-5WFYIUU2.js +3 -0
- package/dist/bin/chunks/chunk-6KZRLMG3.js +8 -0
- package/dist/bin/chunks/chunk-7ADG3DNO.js +8 -0
- package/dist/bin/chunks/chunk-7BORMNPQ.js +2 -0
- package/dist/bin/chunks/chunk-7G3MC56B.js +7 -0
- package/dist/bin/chunks/chunk-AAW7UMPO.js +9 -0
- package/dist/bin/chunks/chunk-AXWFPG37.js +10 -0
- package/dist/bin/chunks/chunk-AZ3RUDR2.js +9 -0
- package/dist/bin/chunks/chunk-BGGF3ELU.js +5 -0
- package/dist/bin/chunks/chunk-BYDV4VEF.js +3 -0
- package/dist/bin/chunks/chunk-CGE2EHYP.js +5 -0
- package/dist/bin/chunks/chunk-CM4532DS.js +36 -0
- package/dist/bin/chunks/chunk-CQG2HEAL.js +5 -0
- package/dist/bin/chunks/chunk-D5WP4CKS.js +3 -0
- package/dist/bin/chunks/chunk-DOXYBGNA.js +12 -0
- package/dist/bin/chunks/chunk-E5BDLLK6.js +15 -0
- package/dist/bin/chunks/chunk-EJQKHROT.js +14 -0
- package/dist/bin/chunks/chunk-EONWONZV.js +2 -0
- package/dist/bin/chunks/chunk-EPPBDXOG.js +8 -0
- package/dist/bin/chunks/chunk-EUXCM6C4.js +12 -0
- package/dist/bin/chunks/chunk-EWDHVLQL.js +21 -0
- package/dist/bin/chunks/chunk-F3LGZXLQ.js +9 -0
- package/dist/bin/chunks/chunk-FA2CHD73.js +16 -0
- package/dist/bin/chunks/chunk-FIHFXGT6.js +287 -0
- package/dist/bin/chunks/chunk-FLPVVSN5.js +5 -0
- package/dist/bin/chunks/chunk-FSZWFMB4.js +16 -0
- package/dist/bin/chunks/chunk-GO6FXSC4.js +6 -0
- package/dist/bin/chunks/chunk-GOJZHH3L.js +6 -0
- package/dist/bin/chunks/chunk-GTNBSMZR.js +23 -0
- package/dist/bin/chunks/chunk-IDGH4PGU.js +3 -0
- package/dist/bin/chunks/chunk-IO2FYBEM.js +6 -0
- package/dist/bin/chunks/chunk-ITA43A73.js +7 -0
- package/dist/bin/chunks/chunk-JBABAK44.js +4 -0
- package/dist/bin/chunks/chunk-JDNI5HBX.js +33 -0
- package/dist/bin/chunks/chunk-JLX6YWGA.js +3 -0
- package/dist/bin/chunks/chunk-JQBC3FXE.js +8 -0
- package/dist/bin/chunks/chunk-JTF74J6E.js +2 -0
- package/dist/bin/chunks/chunk-KCMUAACL.js +19 -0
- package/dist/bin/chunks/chunk-KGOUQS5A.js +2 -0
- package/dist/bin/chunks/chunk-L6XUBS6H.js +84 -0
- package/dist/bin/chunks/chunk-LCDPWJBA.js +15 -0
- package/dist/bin/chunks/chunk-LGJM5YFT.js +17 -0
- package/dist/bin/chunks/chunk-LIYVQA3X.js +2 -0
- package/dist/bin/chunks/chunk-LJKIWB5F.js +4 -0
- package/dist/bin/chunks/chunk-LMK6G2HH.js +8 -0
- package/dist/bin/chunks/chunk-LOJMXC4F.js +5 -0
- package/dist/bin/chunks/chunk-MAVV76T4.js +2 -0
- package/dist/bin/chunks/chunk-MO4RPBN2.js +2 -0
- package/dist/bin/chunks/chunk-MRP4ZCD7.js +6 -0
- package/dist/bin/chunks/chunk-N43DJTSI.js +2 -0
- package/dist/bin/chunks/chunk-NAX7MTAR.js +21 -0
- package/dist/bin/chunks/chunk-NSUMEERA.js +12 -0
- package/dist/bin/chunks/chunk-NTW6IA45.js +2 -0
- package/dist/bin/chunks/chunk-OBH7XN5N.js +1 -0
- package/dist/bin/chunks/chunk-OBI37ZY4.js +9 -0
- package/dist/bin/chunks/chunk-OOJCYVYF.js +2 -0
- package/dist/bin/chunks/chunk-ORUYSLP4.js +16 -0
- package/dist/bin/chunks/chunk-OXHVTSNH.js +74 -0
- package/dist/bin/chunks/chunk-PNI5NMXP.js +100 -0
- package/dist/bin/chunks/chunk-PPBQJBC2.js +5 -0
- package/dist/bin/chunks/chunk-PQNTKMH3.js +6 -0
- package/dist/bin/chunks/chunk-PS4LOXE5.js +8 -0
- package/dist/bin/chunks/chunk-PXVBSPBE.js +2 -0
- package/dist/bin/chunks/chunk-RA3TG4UK.js +9 -0
- package/dist/bin/chunks/chunk-RBQGQWGV.js +10 -0
- package/dist/bin/chunks/chunk-RJSAGJQJ.js +11 -0
- package/dist/bin/chunks/chunk-RLNOQILG.js +2 -0
- package/dist/bin/chunks/chunk-ROJPSS6N.js +3 -0
- package/dist/bin/chunks/chunk-RT7TRQVZ.js +3 -0
- package/dist/bin/chunks/chunk-S3QAKT3R.js +11 -0
- package/dist/bin/chunks/chunk-S7OHMN3F.js +6 -0
- package/dist/bin/chunks/chunk-SGA7Y45Z.js +17 -0
- package/dist/bin/chunks/chunk-SXRVLCZ4.js +2 -0
- package/dist/bin/chunks/chunk-TEFXEYX3.js +3 -0
- package/dist/bin/chunks/chunk-THALLNXT.js +7 -0
- package/dist/bin/chunks/chunk-TTNNO45C.js +17 -0
- package/dist/bin/chunks/chunk-UFJFAFSS.js +28 -0
- package/dist/bin/chunks/chunk-V7ZOPVQS.js +2 -0
- package/dist/bin/chunks/chunk-VNER2XXL.js +7 -0
- package/dist/bin/chunks/chunk-WLBA7L7U.js +23 -0
- package/dist/bin/chunks/chunk-WWZVR5NN.js +6 -0
- package/dist/bin/chunks/chunk-WXMBDX4P.js +14 -0
- package/dist/bin/chunks/chunk-XXCTETRW.js +11 -0
- package/dist/bin/chunks/chunk-XY5HGZW5.js +8 -0
- package/dist/bin/chunks/chunk-YEKSVVRC.js +11 -0
- package/dist/bin/chunks/chunk-YLE2OYY6.js +2 -0
- package/dist/bin/chunks/chunk-YMMJLYIX.js +2 -0
- package/dist/bin/chunks/chunk-YTIURC67.js +2 -0
- package/dist/bin/chunks/chunk-YU6OGPZR.js +5 -0
- package/dist/bin/chunks/chunk-YWZOGBFE.js +9 -0
- package/dist/bin/chunks/chunk-ZA4HUKJ3.js +13 -0
- package/dist/bin/chunks/chunk-ZKC5HQYO.js +14 -0
- package/dist/bin/chunks/chunk-ZSVBYEY4.js +6 -0
- package/dist/bin/chunks/chunk-ZUDPEMHG.js +63 -0
- package/dist/bin/chunks/clear-KRGKPFOI.js +2 -0
- package/dist/bin/chunks/column-XGV32UPN.js +2 -0
- package/dist/bin/chunks/comm-R3F3Z5DX.js +2 -0
- package/dist/bin/chunks/cp-XH2ZB7WT.js +2 -0
- package/dist/bin/chunks/curl-2DCNBIKJ.js +26 -0
- package/dist/bin/chunks/cut-5EY2XPXX.js +2 -0
- package/dist/bin/chunks/date-WUPBL2TL.js +2 -0
- package/dist/bin/chunks/diff-5NUI5BHG.js +2 -0
- package/dist/bin/chunks/dirname-5FAOMLBL.js +2 -0
- package/dist/bin/chunks/du-LDAPXSGF.js +2 -0
- package/dist/bin/chunks/echo-2MUAOGUE.js +2 -0
- package/dist/bin/chunks/env-NTPN5QYM.js +2 -0
- package/dist/bin/chunks/expand-26XPP5KB.js +2 -0
- package/dist/bin/chunks/expansion-QUT3FT7V.js +2 -0
- package/dist/bin/chunks/expr-G4EF4POQ.js +2 -0
- package/dist/bin/chunks/file-MMSHRWCJ.js +2 -0
- package/dist/bin/chunks/find-7CVMEZBO.js +2 -0
- package/dist/bin/chunks/flag-coverage-UJISFT4M.js +2 -0
- package/dist/bin/chunks/fold-XSVNTAWH.js +2 -0
- package/dist/bin/chunks/grep-7BJ7HFBM.js +2 -0
- package/dist/bin/chunks/gzip-LHOO65AN.js +2 -0
- package/dist/bin/chunks/head-YMNRW3F3.js +2 -0
- package/dist/bin/chunks/help-DVG4AAGE.js +2 -0
- package/dist/bin/chunks/history-UUKG55YW.js +2 -0
- package/dist/bin/chunks/hostname-WY6RKE32.js +2 -0
- package/dist/bin/chunks/html-to-markdown-V6PK6S5U.js +2 -0
- package/dist/bin/chunks/join-Y4Q5WVVE.js +2 -0
- package/dist/bin/chunks/jq-4JWOFG7X.js +2 -0
- package/dist/bin/chunks/js-exec-RWEELTC2.js +97 -0
- package/dist/bin/chunks/js-exec-worker.js +4380 -0
- package/dist/bin/chunks/ln-EGC4HRXZ.js +2 -0
- package/dist/bin/chunks/ls-WONXDVOX.js +2 -0
- package/dist/bin/chunks/md5sum-NCLXV2S3.js +2 -0
- package/dist/bin/chunks/mkdir-Z47OISSR.js +2 -0
- package/dist/bin/chunks/mv-OY7X62QC.js +2 -0
- package/dist/bin/chunks/nl-XH3L75DR.js +2 -0
- package/dist/bin/chunks/od-52FBC34W.js +2 -0
- package/dist/bin/chunks/paste-3UVLMQ2K.js +2 -0
- package/dist/bin/chunks/printf-NA7DYZBO.js +2 -0
- package/dist/bin/chunks/pwd-6VBAPL3Y.js +2 -0
- package/dist/bin/chunks/python3-JUJKPBFB.js +12 -0
- package/dist/bin/chunks/readlink-BD5VFOC5.js +2 -0
- package/dist/bin/chunks/rev-UHEPS2UL.js +2 -0
- package/dist/bin/chunks/rg-DK6FRF6Q.js +2 -0
- package/dist/bin/chunks/rm-L3NZOLLG.js +2 -0
- package/dist/bin/chunks/rmdir-5KLM4EA6.js +2 -0
- package/dist/bin/chunks/sed-WWXBUNG3.js +2 -0
- package/dist/bin/chunks/seq-V7KBLSQ7.js +2 -0
- package/dist/bin/chunks/sha1sum-BHNJ5ALF.js +2 -0
- package/dist/bin/chunks/sha256sum-HJJ3NJ5L.js +2 -0
- package/dist/bin/chunks/sleep-ND6FZRZ4.js +2 -0
- package/dist/bin/chunks/sort-7GENYU2I.js +2 -0
- package/dist/bin/chunks/split-YWV64TJH.js +2 -0
- package/dist/bin/chunks/sqlite3-CVNFMP3Z.js +2 -0
- package/dist/bin/chunks/stat-XS2LXYS2.js +2 -0
- package/dist/bin/chunks/strings-XXKZCWY5.js +2 -0
- package/dist/bin/chunks/tac-T42SKDDI.js +2 -0
- package/dist/bin/chunks/tail-V537TDFR.js +2 -0
- package/dist/bin/chunks/tar-GTGFEWDS.js +2 -0
- package/dist/bin/chunks/tee-HK2SYCAR.js +2 -0
- package/dist/bin/chunks/time-5R4QWCYF.js +2 -0
- package/dist/bin/chunks/timeout-Z24MNWOP.js +2 -0
- package/dist/bin/chunks/touch-DWKSZGOQ.js +2 -0
- package/dist/bin/chunks/tr-4FPGAEVB.js +2 -0
- package/dist/bin/chunks/tree-HEKABARE.js +2 -0
- package/dist/bin/chunks/true-DP5UZP52.js +2 -0
- package/dist/bin/chunks/unexpand-OYZ7KOYR.js +2 -0
- package/dist/bin/chunks/uniq-TMSAIZM3.js +2 -0
- package/dist/bin/chunks/wc-ZIV3TFVG.js +2 -0
- package/dist/bin/chunks/which-5PO4LAOG.js +2 -0
- package/dist/bin/chunks/whoami-E7PN2UWC.js +2 -0
- package/dist/bin/chunks/worker.js +3136 -0
- package/dist/bin/chunks/xan-FKXPSPE5.js +2 -0
- package/dist/bin/chunks/xan-view-6J5MMMQB.js +2 -0
- package/dist/bin/chunks/xargs-SCYIFXOW.js +2 -0
- package/dist/bin/chunks/yq-RGXFWYJN.js +2 -0
- package/dist/bin/just-bash.js +754 -0
- package/dist/bin/shell/chunks/alias-3GODYSFD.js +2 -0
- package/dist/bin/shell/chunks/awk2-RSUCURL4.js +2 -0
- package/dist/bin/shell/chunks/base64-43M2R3GA.js +2 -0
- package/dist/bin/shell/chunks/basename-KBUKWB2E.js +2 -0
- package/dist/bin/shell/chunks/bash-6ZHZ6BX7.js +2 -0
- package/dist/bin/shell/chunks/cat-XZIJZXKP.js +2 -0
- package/dist/bin/shell/chunks/chmod-N5CQATDW.js +2 -0
- package/dist/bin/shell/chunks/chunk-22NDZXS5.js +33 -0
- package/dist/bin/shell/chunks/chunk-26NO42TF.js +14 -0
- package/dist/bin/shell/chunks/chunk-2W2SCVT6.js +140 -0
- package/dist/bin/shell/chunks/chunk-3MBAUIBB.js +7 -0
- package/dist/bin/shell/chunks/chunk-3Y32LPNT.js +2 -0
- package/dist/bin/shell/chunks/chunk-4CFAYBLV.js +21 -0
- package/dist/bin/shell/chunks/chunk-4OALHZXB.js +2 -0
- package/dist/bin/shell/chunks/chunk-4PRVMER6.js +2 -0
- package/dist/bin/shell/chunks/chunk-4VDEBYW7.js +2 -0
- package/dist/bin/shell/chunks/chunk-54G6AE72.js +32 -0
- package/dist/bin/shell/chunks/chunk-5G2VOPPJ.js +7 -0
- package/dist/bin/shell/chunks/chunk-5WFYIUU2.js +3 -0
- package/dist/bin/shell/chunks/chunk-6KZRLMG3.js +8 -0
- package/dist/bin/shell/chunks/chunk-7ADG3DNO.js +8 -0
- package/dist/bin/shell/chunks/chunk-7BORMNPQ.js +2 -0
- package/dist/bin/shell/chunks/chunk-7G3MC56B.js +7 -0
- package/dist/bin/shell/chunks/chunk-AAW7UMPO.js +9 -0
- package/dist/bin/shell/chunks/chunk-AXWFPG37.js +10 -0
- package/dist/bin/shell/chunks/chunk-AZ3RUDR2.js +9 -0
- package/dist/bin/shell/chunks/chunk-BGGF3ELU.js +5 -0
- package/dist/bin/shell/chunks/chunk-BYDV4VEF.js +3 -0
- package/dist/bin/shell/chunks/chunk-CGE2EHYP.js +5 -0
- package/dist/bin/shell/chunks/chunk-CM4532DS.js +36 -0
- package/dist/bin/shell/chunks/chunk-CQG2HEAL.js +5 -0
- package/dist/bin/shell/chunks/chunk-D5WP4CKS.js +3 -0
- package/dist/bin/shell/chunks/chunk-DOXYBGNA.js +12 -0
- package/dist/bin/shell/chunks/chunk-E5BDLLK6.js +15 -0
- package/dist/bin/shell/chunks/chunk-EJQKHROT.js +14 -0
- package/dist/bin/shell/chunks/chunk-EONWONZV.js +2 -0
- package/dist/bin/shell/chunks/chunk-EPPBDXOG.js +8 -0
- package/dist/bin/shell/chunks/chunk-EUXCM6C4.js +12 -0
- package/dist/bin/shell/chunks/chunk-EWDHVLQL.js +21 -0
- package/dist/bin/shell/chunks/chunk-F3LGZXLQ.js +9 -0
- package/dist/bin/shell/chunks/chunk-FA2CHD73.js +16 -0
- package/dist/bin/shell/chunks/chunk-FIHFXGT6.js +287 -0
- package/dist/bin/shell/chunks/chunk-FLPVVSN5.js +5 -0
- package/dist/bin/shell/chunks/chunk-FSZWFMB4.js +16 -0
- package/dist/bin/shell/chunks/chunk-GO6FXSC4.js +6 -0
- package/dist/bin/shell/chunks/chunk-GOJZHH3L.js +6 -0
- package/dist/bin/shell/chunks/chunk-GTNBSMZR.js +23 -0
- package/dist/bin/shell/chunks/chunk-HC7WB764.js +2 -0
- package/dist/bin/shell/chunks/chunk-IDGH4PGU.js +3 -0
- package/dist/bin/shell/chunks/chunk-IO2FYBEM.js +6 -0
- package/dist/bin/shell/chunks/chunk-ITA43A73.js +7 -0
- package/dist/bin/shell/chunks/chunk-JBABAK44.js +4 -0
- package/dist/bin/shell/chunks/chunk-JDNI5HBX.js +33 -0
- package/dist/bin/shell/chunks/chunk-JLX6YWGA.js +3 -0
- package/dist/bin/shell/chunks/chunk-JQBC3FXE.js +8 -0
- package/dist/bin/shell/chunks/chunk-JTF74J6E.js +2 -0
- package/dist/bin/shell/chunks/chunk-KCMUAACL.js +19 -0
- package/dist/bin/shell/chunks/chunk-KGOUQS5A.js +2 -0
- package/dist/bin/shell/chunks/chunk-L6XUBS6H.js +84 -0
- package/dist/bin/shell/chunks/chunk-LCDPWJBA.js +15 -0
- package/dist/bin/shell/chunks/chunk-LGJM5YFT.js +17 -0
- package/dist/bin/shell/chunks/chunk-LIYVQA3X.js +2 -0
- package/dist/bin/shell/chunks/chunk-LJKIWB5F.js +4 -0
- package/dist/bin/shell/chunks/chunk-LMK6G2HH.js +8 -0
- package/dist/bin/shell/chunks/chunk-LOJMXC4F.js +5 -0
- package/dist/bin/shell/chunks/chunk-MAVV76T4.js +2 -0
- package/dist/bin/shell/chunks/chunk-MO4RPBN2.js +2 -0
- package/dist/bin/shell/chunks/chunk-MRP4ZCD7.js +6 -0
- package/dist/bin/shell/chunks/chunk-N43DJTSI.js +2 -0
- package/dist/bin/shell/chunks/chunk-NAX7MTAR.js +21 -0
- package/dist/bin/shell/chunks/chunk-NSUMEERA.js +12 -0
- package/dist/bin/shell/chunks/chunk-NTW6IA45.js +2 -0
- package/dist/bin/shell/chunks/chunk-OBH7XN5N.js +1 -0
- package/dist/bin/shell/chunks/chunk-OBI37ZY4.js +9 -0
- package/dist/bin/shell/chunks/chunk-OOJCYVYF.js +2 -0
- package/dist/bin/shell/chunks/chunk-ORUYSLP4.js +16 -0
- package/dist/bin/shell/chunks/chunk-OXHVTSNH.js +74 -0
- package/dist/bin/shell/chunks/chunk-PNI5NMXP.js +100 -0
- package/dist/bin/shell/chunks/chunk-PPBQJBC2.js +5 -0
- package/dist/bin/shell/chunks/chunk-PQNTKMH3.js +6 -0
- package/dist/bin/shell/chunks/chunk-PS4LOXE5.js +8 -0
- package/dist/bin/shell/chunks/chunk-RA3TG4UK.js +9 -0
- package/dist/bin/shell/chunks/chunk-RBQGQWGV.js +10 -0
- package/dist/bin/shell/chunks/chunk-RJSAGJQJ.js +11 -0
- package/dist/bin/shell/chunks/chunk-RLNOQILG.js +2 -0
- package/dist/bin/shell/chunks/chunk-ROJPSS6N.js +3 -0
- package/dist/bin/shell/chunks/chunk-RT7TRQVZ.js +3 -0
- package/dist/bin/shell/chunks/chunk-S3QAKT3R.js +11 -0
- package/dist/bin/shell/chunks/chunk-S7OHMN3F.js +6 -0
- package/dist/bin/shell/chunks/chunk-SGA7Y45Z.js +17 -0
- package/dist/bin/shell/chunks/chunk-SXRVLCZ4.js +2 -0
- package/dist/bin/shell/chunks/chunk-TEFXEYX3.js +3 -0
- package/dist/bin/shell/chunks/chunk-THALLNXT.js +7 -0
- package/dist/bin/shell/chunks/chunk-TTNNO45C.js +17 -0
- package/dist/bin/shell/chunks/chunk-UFJFAFSS.js +28 -0
- package/dist/bin/shell/chunks/chunk-V7ZOPVQS.js +2 -0
- package/dist/bin/shell/chunks/chunk-VNER2XXL.js +7 -0
- package/dist/bin/shell/chunks/chunk-WLBA7L7U.js +23 -0
- package/dist/bin/shell/chunks/chunk-WWZVR5NN.js +6 -0
- package/dist/bin/shell/chunks/chunk-WXMBDX4P.js +14 -0
- package/dist/bin/shell/chunks/chunk-XXCTETRW.js +11 -0
- package/dist/bin/shell/chunks/chunk-XY5HGZW5.js +8 -0
- package/dist/bin/shell/chunks/chunk-YEKSVVRC.js +11 -0
- package/dist/bin/shell/chunks/chunk-YLE2OYY6.js +2 -0
- package/dist/bin/shell/chunks/chunk-YMMJLYIX.js +2 -0
- package/dist/bin/shell/chunks/chunk-YTIURC67.js +2 -0
- package/dist/bin/shell/chunks/chunk-YU6OGPZR.js +5 -0
- package/dist/bin/shell/chunks/chunk-YWZOGBFE.js +9 -0
- package/dist/bin/shell/chunks/chunk-ZA4HUKJ3.js +13 -0
- package/dist/bin/shell/chunks/chunk-ZKC5HQYO.js +14 -0
- package/dist/bin/shell/chunks/chunk-ZSVBYEY4.js +6 -0
- package/dist/bin/shell/chunks/chunk-ZUDPEMHG.js +63 -0
- package/dist/bin/shell/chunks/clear-KRGKPFOI.js +2 -0
- package/dist/bin/shell/chunks/column-XGV32UPN.js +2 -0
- package/dist/bin/shell/chunks/comm-R3F3Z5DX.js +2 -0
- package/dist/bin/shell/chunks/cp-XH2ZB7WT.js +2 -0
- package/dist/bin/shell/chunks/curl-2DCNBIKJ.js +26 -0
- package/dist/bin/shell/chunks/cut-5EY2XPXX.js +2 -0
- package/dist/bin/shell/chunks/date-WUPBL2TL.js +2 -0
- package/dist/bin/shell/chunks/diff-5NUI5BHG.js +2 -0
- package/dist/bin/shell/chunks/dirname-5FAOMLBL.js +2 -0
- package/dist/bin/shell/chunks/du-LDAPXSGF.js +2 -0
- package/dist/bin/shell/chunks/echo-2MUAOGUE.js +2 -0
- package/dist/bin/shell/chunks/env-NTPN5QYM.js +2 -0
- package/dist/bin/shell/chunks/expand-26XPP5KB.js +2 -0
- package/dist/bin/shell/chunks/expansion-QUT3FT7V.js +2 -0
- package/dist/bin/shell/chunks/expr-G4EF4POQ.js +2 -0
- package/dist/bin/shell/chunks/file-MMSHRWCJ.js +2 -0
- package/dist/bin/shell/chunks/find-7CVMEZBO.js +2 -0
- package/dist/bin/shell/chunks/flag-coverage-UJISFT4M.js +2 -0
- package/dist/bin/shell/chunks/fold-XSVNTAWH.js +2 -0
- package/dist/bin/shell/chunks/grep-7BJ7HFBM.js +2 -0
- package/dist/bin/shell/chunks/gzip-LHOO65AN.js +2 -0
- package/dist/bin/shell/chunks/head-YMNRW3F3.js +2 -0
- package/dist/bin/shell/chunks/help-DVG4AAGE.js +2 -0
- package/dist/bin/shell/chunks/history-UUKG55YW.js +2 -0
- package/dist/bin/shell/chunks/hostname-WY6RKE32.js +2 -0
- package/dist/bin/shell/chunks/html-to-markdown-V6PK6S5U.js +2 -0
- package/dist/bin/shell/chunks/join-Y4Q5WVVE.js +2 -0
- package/dist/bin/shell/chunks/jq-4JWOFG7X.js +2 -0
- package/dist/bin/shell/chunks/js-exec-AKWY6BP5.js +97 -0
- package/dist/bin/shell/chunks/ln-EGC4HRXZ.js +2 -0
- package/dist/bin/shell/chunks/ls-WONXDVOX.js +2 -0
- package/dist/bin/shell/chunks/md5sum-NCLXV2S3.js +2 -0
- package/dist/bin/shell/chunks/mkdir-Z47OISSR.js +2 -0
- package/dist/bin/shell/chunks/mv-OY7X62QC.js +2 -0
- package/dist/bin/shell/chunks/nl-XH3L75DR.js +2 -0
- package/dist/bin/shell/chunks/od-52FBC34W.js +2 -0
- package/dist/bin/shell/chunks/paste-3UVLMQ2K.js +2 -0
- package/dist/bin/shell/chunks/printf-NA7DYZBO.js +2 -0
- package/dist/bin/shell/chunks/pwd-6VBAPL3Y.js +2 -0
- package/dist/bin/shell/chunks/python3-RRCCYJKA.js +12 -0
- package/dist/bin/shell/chunks/readlink-BD5VFOC5.js +2 -0
- package/dist/bin/shell/chunks/rev-UHEPS2UL.js +2 -0
- package/dist/bin/shell/chunks/rg-DK6FRF6Q.js +2 -0
- package/dist/bin/shell/chunks/rm-L3NZOLLG.js +2 -0
- package/dist/bin/shell/chunks/rmdir-5KLM4EA6.js +2 -0
- package/dist/bin/shell/chunks/sed-WWXBUNG3.js +2 -0
- package/dist/bin/shell/chunks/seq-V7KBLSQ7.js +2 -0
- package/dist/bin/shell/chunks/sha1sum-BHNJ5ALF.js +2 -0
- package/dist/bin/shell/chunks/sha256sum-HJJ3NJ5L.js +2 -0
- package/dist/bin/shell/chunks/sleep-ND6FZRZ4.js +2 -0
- package/dist/bin/shell/chunks/sort-7GENYU2I.js +2 -0
- package/dist/bin/shell/chunks/split-YWV64TJH.js +2 -0
- package/dist/bin/shell/chunks/sqlite3-CVNFMP3Z.js +2 -0
- package/dist/bin/shell/chunks/stat-XS2LXYS2.js +2 -0
- package/dist/bin/shell/chunks/strings-XXKZCWY5.js +2 -0
- package/dist/bin/shell/chunks/tac-T42SKDDI.js +2 -0
- package/dist/bin/shell/chunks/tail-V537TDFR.js +2 -0
- package/dist/bin/shell/chunks/tar-GTGFEWDS.js +2 -0
- package/dist/bin/shell/chunks/tee-HK2SYCAR.js +2 -0
- package/dist/bin/shell/chunks/time-5R4QWCYF.js +2 -0
- package/dist/bin/shell/chunks/timeout-Z24MNWOP.js +2 -0
- package/dist/bin/shell/chunks/touch-DWKSZGOQ.js +2 -0
- package/dist/bin/shell/chunks/tr-4FPGAEVB.js +2 -0
- package/dist/bin/shell/chunks/tree-HEKABARE.js +2 -0
- package/dist/bin/shell/chunks/true-DP5UZP52.js +2 -0
- package/dist/bin/shell/chunks/unexpand-OYZ7KOYR.js +2 -0
- package/dist/bin/shell/chunks/uniq-TMSAIZM3.js +2 -0
- package/dist/bin/shell/chunks/wc-ZIV3TFVG.js +2 -0
- package/dist/bin/shell/chunks/which-5PO4LAOG.js +2 -0
- package/dist/bin/shell/chunks/whoami-E7PN2UWC.js +2 -0
- package/dist/bin/shell/chunks/xan-FKXPSPE5.js +2 -0
- package/dist/bin/shell/chunks/xan-view-6J5MMMQB.js +2 -0
- package/dist/bin/shell/chunks/xargs-SCYIFXOW.js +2 -0
- package/dist/bin/shell/chunks/yq-RGXFWYJN.js +2 -0
- package/dist/bin/shell/shell.js +733 -0
- package/dist/browser.d.ts +23 -0
- package/dist/bundle/browser.js +1515 -0
- package/dist/bundle/chunks/alias-JE7RI5QX.js +1 -0
- package/dist/bundle/chunks/awk2-JFGEGLFP.js +1 -0
- package/dist/bundle/chunks/base64-4YMZCVJ5.js +1 -0
- package/dist/bundle/chunks/basename-AA2KJYZQ.js +1 -0
- package/dist/bundle/chunks/bash-IJWYRKFO.js +1 -0
- package/dist/bundle/chunks/cat-RDUMLXKC.js +1 -0
- package/dist/bundle/chunks/chmod-SYMGL4JA.js +1 -0
- package/dist/bundle/chunks/chunk-24IMIIXA.js +1 -0
- package/dist/bundle/chunks/chunk-3THT3N7L.js +1 -0
- package/dist/bundle/chunks/chunk-3ZUFRYJ4.js +1 -0
- package/dist/bundle/chunks/chunk-43RSSTFA.js +73 -0
- package/dist/bundle/chunks/chunk-44UOCSGV.js +1 -0
- package/dist/bundle/chunks/chunk-4GTNDTRF.js +7 -0
- package/dist/bundle/chunks/chunk-4HHKTUW3.js +2 -0
- package/dist/bundle/chunks/chunk-4Q4SM6WR.js +4 -0
- package/dist/bundle/chunks/chunk-55VFSPNA.js +2 -0
- package/dist/bundle/chunks/chunk-5PYKJV42.js +4 -0
- package/dist/bundle/chunks/chunk-5QMZ5MUS.js +4 -0
- package/dist/bundle/chunks/chunk-5QVNJEHU.js +8 -0
- package/dist/bundle/chunks/chunk-5V6VZH6T.js +1 -0
- package/dist/bundle/chunks/chunk-62RKD26F.js +20 -0
- package/dist/bundle/chunks/chunk-64BAICW3.js +1 -0
- package/dist/bundle/chunks/chunk-74CEPOFO.js +22 -0
- package/dist/bundle/chunks/chunk-7ESWU5HP.js +14 -0
- package/dist/bundle/chunks/chunk-7L36YK2X.js +2 -0
- package/dist/bundle/chunks/chunk-7TSDKFEO.js +1 -0
- package/dist/bundle/chunks/chunk-A4HU7SVR.js +2 -0
- package/dist/bundle/chunks/chunk-A4JSPFCI.js +6 -0
- package/dist/bundle/chunks/chunk-A5O5YHGN.js +1 -0
- package/dist/bundle/chunks/chunk-A65PWWJC.js +2 -0
- package/dist/bundle/chunks/chunk-A7A2DBEE.js +6 -0
- package/dist/bundle/chunks/chunk-A7ICOL4V.js +13 -0
- package/dist/bundle/chunks/chunk-ALLTKNUZ.js +5 -0
- package/dist/bundle/chunks/chunk-APT7OOP2.js +1 -0
- package/dist/bundle/chunks/chunk-B53Y5JFV.js +8 -0
- package/dist/bundle/chunks/chunk-BAQA74XA.js +1 -0
- package/dist/bundle/chunks/chunk-CWQS3NFK.js +1 -0
- package/dist/bundle/chunks/chunk-D4J545R4.js +11 -0
- package/dist/bundle/chunks/chunk-D6CWQ5DW.js +5 -0
- package/dist/bundle/chunks/chunk-D6EWIDSU.js +20 -0
- package/dist/bundle/chunks/chunk-D7MEQ3VN.js +4 -0
- package/dist/bundle/chunks/chunk-DBKNVD4L.js +9 -0
- package/dist/bundle/chunks/chunk-DCAAORBQ.js +1 -0
- package/dist/bundle/chunks/chunk-DXB73IDG.js +1 -0
- package/dist/bundle/chunks/chunk-EEXR5ZDP.js +2 -0
- package/dist/bundle/chunks/chunk-EIZGF4BS.js +8 -0
- package/dist/bundle/chunks/chunk-F23WWYKW.js +16 -0
- package/dist/bundle/chunks/chunk-GCTKCWKD.js +3 -0
- package/dist/bundle/chunks/chunk-GFQRA5P5.js +7 -0
- package/dist/bundle/chunks/chunk-GJTDUJ5Q.js +10 -0
- package/dist/bundle/chunks/chunk-GOV5EKKI.js +9 -0
- package/dist/bundle/chunks/chunk-GXVXFKBA.js +5 -0
- package/dist/bundle/chunks/chunk-HDQ56CKY.js +15 -0
- package/dist/bundle/chunks/chunk-HJQJAYMS.js +2 -0
- package/dist/bundle/chunks/chunk-HJWBQKYG.js +5 -0
- package/dist/bundle/chunks/chunk-HL6NGDO2.js +22 -0
- package/dist/bundle/chunks/chunk-HWBSOZZR.js +35 -0
- package/dist/bundle/chunks/chunk-HWKDQ44K.js +3 -0
- package/dist/bundle/chunks/chunk-I57KEIP3.js +10 -0
- package/dist/bundle/chunks/chunk-IPJHKYVM.js +1 -0
- package/dist/bundle/chunks/chunk-IVYA2HK4.js +286 -0
- package/dist/bundle/chunks/chunk-JVPRLUMK.js +7 -0
- package/dist/bundle/chunks/chunk-KMEYNNUA.js +15 -0
- package/dist/bundle/chunks/chunk-KX3P26DQ.js +1 -0
- package/dist/bundle/chunks/chunk-LL3S3NLB.js +1 -0
- package/dist/bundle/chunks/chunk-LTZRCH7N.js +31 -0
- package/dist/bundle/chunks/chunk-LWEGUNWT.js +7 -0
- package/dist/bundle/chunks/chunk-MDDMCKUK.js +6 -0
- package/dist/bundle/chunks/chunk-MDLLFABN.js +4 -0
- package/dist/bundle/chunks/chunk-MHTUABJP.js +8 -0
- package/dist/bundle/chunks/chunk-MIZPJHVH.js +7 -0
- package/dist/bundle/chunks/chunk-MLXIYONF.js +15 -0
- package/dist/bundle/chunks/chunk-MYE6AGBJ.js +16 -0
- package/dist/bundle/chunks/chunk-NAERJDUW.js +8 -0
- package/dist/bundle/chunks/chunk-NCNPKYJZ.js +2 -0
- package/dist/bundle/chunks/chunk-NUFRM6SI.js +0 -0
- package/dist/bundle/chunks/chunk-NUYSJFDK.js +7 -0
- package/dist/bundle/chunks/chunk-OCLXQMOG.js +6 -0
- package/dist/bundle/chunks/chunk-OCS6LSEM.js +13 -0
- package/dist/bundle/chunks/chunk-OJDRYQWQ.js +1 -0
- package/dist/bundle/chunks/chunk-P7UWRQ44.js +139 -0
- package/dist/bundle/chunks/chunk-PBXLG62G.js +8 -0
- package/dist/bundle/chunks/chunk-PP6PSHAB.js +4 -0
- package/dist/bundle/chunks/chunk-PXTK5WE2.js +20 -0
- package/dist/bundle/chunks/chunk-PYDZ2LCK.js +16 -0
- package/dist/bundle/chunks/chunk-PYSFUGCK.js +10 -0
- package/dist/bundle/chunks/chunk-QCDB2VPH.js +6 -0
- package/dist/bundle/chunks/chunk-QJ7O6ZN3.js +5 -0
- package/dist/bundle/chunks/chunk-R6QSAL5T.js +1 -0
- package/dist/bundle/chunks/chunk-R6VWJ2ZL.js +1 -0
- package/dist/bundle/chunks/chunk-RPNGRAAP.js +7 -0
- package/dist/bundle/chunks/chunk-SDNKECQQ.js +5 -0
- package/dist/bundle/chunks/chunk-T56QNPHK.js +14 -0
- package/dist/bundle/chunks/chunk-TLSUDHID.js +6 -0
- package/dist/bundle/chunks/chunk-TOMNU26N.js +4 -0
- package/dist/bundle/chunks/chunk-TXBZCHCQ.js +5 -0
- package/dist/bundle/chunks/chunk-U6NMAV24.js +32 -0
- package/dist/bundle/chunks/chunk-V7TAPXDL.js +27 -0
- package/dist/bundle/chunks/chunk-VBEY5J6R.js +99 -0
- package/dist/bundle/chunks/chunk-VJFXDYWH.js +10 -0
- package/dist/bundle/chunks/chunk-VOBGTVA6.js +6 -0
- package/dist/bundle/chunks/chunk-VXBA5RYO.js +5 -0
- package/dist/bundle/chunks/chunk-VYOJP4TV.js +13 -0
- package/dist/bundle/chunks/chunk-WKFATFPP.js +4 -0
- package/dist/bundle/chunks/chunk-X2AJGDEF.js +1 -0
- package/dist/bundle/chunks/chunk-XIZSGUXJ.js +62 -0
- package/dist/bundle/chunks/chunk-XKQRETAK.js +1 -0
- package/dist/bundle/chunks/chunk-XVDPCNWR.js +11 -0
- package/dist/bundle/chunks/chunk-YSHZL3MF.js +32 -0
- package/dist/bundle/chunks/chunk-YTNYSM6T.js +11 -0
- package/dist/bundle/chunks/chunk-Z6LRHWXI.js +13 -0
- package/dist/bundle/chunks/chunk-Z7JVV2SM.js +12 -0
- package/dist/bundle/chunks/clear-5CZ5X4YR.js +1 -0
- package/dist/bundle/chunks/column-WLPMMSTS.js +1 -0
- package/dist/bundle/chunks/comm-5SLSESQG.js +1 -0
- package/dist/bundle/chunks/cp-XOYR4ABJ.js +1 -0
- package/dist/bundle/chunks/curl-47BFPSFW.js +25 -0
- package/dist/bundle/chunks/cut-OPC3VAGB.js +1 -0
- package/dist/bundle/chunks/date-DD7FVA2V.js +1 -0
- package/dist/bundle/chunks/diff-HJF2MPDN.js +1 -0
- package/dist/bundle/chunks/dirname-LEMTZZFS.js +1 -0
- package/dist/bundle/chunks/du-WO2ENHXQ.js +1 -0
- package/dist/bundle/chunks/echo-O45JWWI2.js +1 -0
- package/dist/bundle/chunks/env-5EPCWSXR.js +1 -0
- package/dist/bundle/chunks/expand-DTNXU4LQ.js +1 -0
- package/dist/bundle/chunks/expansion-UGGADTZC.js +1 -0
- package/dist/bundle/chunks/expr-DNFUYZGY.js +1 -0
- package/dist/bundle/chunks/file-IGDTDPLG.js +1 -0
- package/dist/bundle/chunks/find-KNMMLVJD.js +1 -0
- package/dist/bundle/chunks/flag-coverage-B26Z36PC.js +1 -0
- package/dist/bundle/chunks/fold-LDSORVYE.js +1 -0
- package/dist/bundle/chunks/grep-2UMHPO7Y.js +1 -0
- package/dist/bundle/chunks/gzip-AQXSGOVS.js +1 -0
- package/dist/bundle/chunks/head-HT2B6D2J.js +1 -0
- package/dist/bundle/chunks/help-VVWX7SA5.js +1 -0
- package/dist/bundle/chunks/history-J4QRNGRO.js +1 -0
- package/dist/bundle/chunks/hostname-BK6HG2DE.js +1 -0
- package/dist/bundle/chunks/html-to-markdown-TFCECAGV.js +1 -0
- package/dist/bundle/chunks/join-GG2LDHE5.js +1 -0
- package/dist/bundle/chunks/jq-CRLZNLQG.js +1 -0
- package/dist/bundle/chunks/js-exec-VXN6TZ7U.js +96 -0
- package/dist/bundle/chunks/js-exec-worker.js +4380 -0
- package/dist/bundle/chunks/ln-4TRFBYAT.js +1 -0
- package/dist/bundle/chunks/ls-KSXFZCWH.js +1 -0
- package/dist/bundle/chunks/md5sum-INMIK4DX.js +1 -0
- package/dist/bundle/chunks/mkdir-TDEMSB6C.js +1 -0
- package/dist/bundle/chunks/mv-Z6MORUFL.js +1 -0
- package/dist/bundle/chunks/nl-U5YJDM32.js +1 -0
- package/dist/bundle/chunks/od-VJEF2UR5.js +1 -0
- package/dist/bundle/chunks/paste-7N6AFSDS.js +1 -0
- package/dist/bundle/chunks/printf-CX64KX2P.js +1 -0
- package/dist/bundle/chunks/pwd-D4OZ7N27.js +1 -0
- package/dist/bundle/chunks/python3-BFV3N3GY.js +11 -0
- package/dist/bundle/chunks/readlink-MI4GCHJF.js +1 -0
- package/dist/bundle/chunks/rev-XOSYPP45.js +1 -0
- package/dist/bundle/chunks/rg-KYSTAD4Q.js +1 -0
- package/dist/bundle/chunks/rm-RTZG23RL.js +1 -0
- package/dist/bundle/chunks/rmdir-XTQXT7RK.js +1 -0
- package/dist/bundle/chunks/sed-OFX3F4FE.js +1 -0
- package/dist/bundle/chunks/seq-RN5ZUASB.js +1 -0
- package/dist/bundle/chunks/sha1sum-VJPNLNU6.js +1 -0
- package/dist/bundle/chunks/sha256sum-PI32XWXY.js +1 -0
- package/dist/bundle/chunks/sleep-VZFPZFWA.js +1 -0
- package/dist/bundle/chunks/sort-DCNRDA7U.js +1 -0
- package/dist/bundle/chunks/split-SITCSYCZ.js +1 -0
- package/dist/bundle/chunks/sqlite3-56UMWEY3.js +1 -0
- package/dist/bundle/chunks/stat-BT5A227F.js +1 -0
- package/dist/bundle/chunks/strings-7PLOGTPD.js +1 -0
- package/dist/bundle/chunks/tac-SJGXQ4T2.js +1 -0
- package/dist/bundle/chunks/tail-S5ULNTJU.js +1 -0
- package/dist/bundle/chunks/tar-LYLTEJV3.js +1 -0
- package/dist/bundle/chunks/tee-O7VXZDCO.js +1 -0
- package/dist/bundle/chunks/time-DEUO3QV2.js +1 -0
- package/dist/bundle/chunks/timeout-VRKMCG72.js +1 -0
- package/dist/bundle/chunks/touch-DX2IJOQ4.js +1 -0
- package/dist/bundle/chunks/tr-2HXZRDSW.js +1 -0
- package/dist/bundle/chunks/tree-LYXBS7DC.js +1 -0
- package/dist/bundle/chunks/true-WHJNXCHG.js +1 -0
- package/dist/bundle/chunks/unexpand-RGTMIGZM.js +1 -0
- package/dist/bundle/chunks/uniq-SUNANL47.js +1 -0
- package/dist/bundle/chunks/wc-TQB3VNOX.js +1 -0
- package/dist/bundle/chunks/which-XZHEH76L.js +1 -0
- package/dist/bundle/chunks/whoami-DGKU3D2X.js +1 -0
- package/dist/bundle/chunks/worker.js +3136 -0
- package/dist/bundle/chunks/xan-DHUKCGIW.js +1 -0
- package/dist/bundle/chunks/xan-view-OW2TB7Z3.js +1 -0
- package/dist/bundle/chunks/xargs-I6EZUCYF.js +1 -0
- package/dist/bundle/chunks/yq-NDDDSAXH.js +1 -0
- package/dist/bundle/index.cjs +2178 -0
- package/dist/bundle/index.js +709 -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 +31 -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 +30 -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 +41 -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 +60 -0
- package/dist/commands/search-engine/regex.d.ts +33 -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 +22 -0
- package/dist/commands/sqlite3/worker.d.ts +45 -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 +71 -0
- package/dist/commands/worker-bridge/protocol.d.ts +140 -0
- package/dist/commands/worker-bridge/sync-backend.d.ts +81 -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/fs/encoding.d.ts +17 -0
- package/dist/fs/in-memory-fs/in-memory-fs.d.ts +73 -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 +229 -0
- package/dist/fs/mountable-fs/index.d.ts +1 -0
- package/dist/fs/mountable-fs/mountable-fs.d.ts +116 -0
- package/dist/fs/overlay-fs/index.d.ts +1 -0
- package/dist/fs/overlay-fs/overlay-fs.d.ts +163 -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 +96 -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 +27 -0
- package/dist/index.d.ts +27 -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 +77 -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 +344 -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/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 +198 -0
- package/dist/utils/args.d.ts +55 -0
- package/dist/utils/constants.d.ts +15 -0
- package/dist/utils/file-reader.d.ts +67 -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 +3 -0
- package/vendor/cpython-emscripten/python313.zip +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OverlayFs - Copy-on-write filesystem backed by a real directory
|
|
3
|
+
*
|
|
4
|
+
* Reads come from the real filesystem, writes go to an in-memory layer.
|
|
5
|
+
* Changes don't persist to disk and can't escape the root directory.
|
|
6
|
+
*
|
|
7
|
+
* Security: Symlinks are blocked by default (allowSymlinks: false).
|
|
8
|
+
* All real-FS access goes through resolveRealPath_() / resolveRealPathParent_()
|
|
9
|
+
* gates which detect symlink traversal via path comparison and return the
|
|
10
|
+
* canonical path for I/O (closing the TOCTOU gap). New methods must use these
|
|
11
|
+
* gates — never access the real FS directly.
|
|
12
|
+
*/
|
|
13
|
+
import { type FileContent } from "../encoding.js";
|
|
14
|
+
import type { CpOptions, DirentEntry, FsStat, IFileSystem, MkdirOptions, ReadFileOptions, RmOptions, WriteFileOptions } from "../interface.js";
|
|
15
|
+
export interface OverlayFsOptions {
|
|
16
|
+
/**
|
|
17
|
+
* The root directory on the real filesystem.
|
|
18
|
+
* All paths are relative to this root and cannot escape it.
|
|
19
|
+
*/
|
|
20
|
+
root: string;
|
|
21
|
+
/**
|
|
22
|
+
* The virtual mount point where the root directory appears.
|
|
23
|
+
* Defaults to "/home/user/project".
|
|
24
|
+
*/
|
|
25
|
+
mountPoint?: string;
|
|
26
|
+
/**
|
|
27
|
+
* If true, all write operations will throw an error.
|
|
28
|
+
* Useful for truly read-only access to the filesystem.
|
|
29
|
+
* Defaults to false.
|
|
30
|
+
*/
|
|
31
|
+
readOnly?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Maximum file size in bytes that can be read from the real filesystem.
|
|
34
|
+
* Files larger than this will throw an EFBIG error.
|
|
35
|
+
* Defaults to 10MB (10485760).
|
|
36
|
+
*/
|
|
37
|
+
maxFileReadSize?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to allow following and creating symlinks on the real filesystem.
|
|
40
|
+
* When false (default), any real-FS path traversing a symlink is rejected
|
|
41
|
+
* and symlink() throws EPERM.
|
|
42
|
+
*/
|
|
43
|
+
allowSymlinks?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare class OverlayFs implements IFileSystem {
|
|
46
|
+
private readonly root;
|
|
47
|
+
private readonly canonicalRoot;
|
|
48
|
+
private readonly mountPoint;
|
|
49
|
+
private readonly readOnly;
|
|
50
|
+
private readonly maxFileReadSize;
|
|
51
|
+
private readonly allowSymlinks;
|
|
52
|
+
private readonly memory;
|
|
53
|
+
private readonly deleted;
|
|
54
|
+
constructor(options: OverlayFsOptions);
|
|
55
|
+
/**
|
|
56
|
+
* Throws an error if the filesystem is in read-only mode.
|
|
57
|
+
*/
|
|
58
|
+
private assertWritable;
|
|
59
|
+
/**
|
|
60
|
+
* Create directory entries for the mount point path
|
|
61
|
+
*/
|
|
62
|
+
private createMountPointDirs;
|
|
63
|
+
/**
|
|
64
|
+
* Get the mount point for this overlay
|
|
65
|
+
*/
|
|
66
|
+
getMountPoint(): string;
|
|
67
|
+
/**
|
|
68
|
+
* Create a virtual directory in memory (sync, for initialization)
|
|
69
|
+
*/
|
|
70
|
+
mkdirSync(path: string, _options?: MkdirOptions): void;
|
|
71
|
+
/**
|
|
72
|
+
* Create a virtual file in memory (sync, for initialization)
|
|
73
|
+
*/
|
|
74
|
+
writeFileSync(path: string, content: string | Uint8Array): void;
|
|
75
|
+
private getDirname;
|
|
76
|
+
/**
|
|
77
|
+
* Check if a normalized virtual path is under the mount point.
|
|
78
|
+
* Returns the relative path within the mount point, or null if not under it.
|
|
79
|
+
*/
|
|
80
|
+
private getRelativeToMount;
|
|
81
|
+
/**
|
|
82
|
+
* Convert a virtual path to a real filesystem path.
|
|
83
|
+
* Returns null if the path is not under the mount point or would escape the root.
|
|
84
|
+
*/
|
|
85
|
+
private toRealPath;
|
|
86
|
+
/**
|
|
87
|
+
* Resolve a real-FS path to its canonical form and validate it stays
|
|
88
|
+
* within the sandbox. Returns the canonical path for I/O, or null if
|
|
89
|
+
* the path escapes the root or traverses a symlink (when !allowSymlinks).
|
|
90
|
+
*
|
|
91
|
+
* Callers MUST use the returned canonical path for subsequent I/O to
|
|
92
|
+
* close the TOCTOU gap between validation and use.
|
|
93
|
+
*/
|
|
94
|
+
private resolveRealPath_;
|
|
95
|
+
/**
|
|
96
|
+
* Resolve only the parent directory of a real-FS path, then join with
|
|
97
|
+
* the original basename. Used by lstat/readlink/existsInOverlay where
|
|
98
|
+
* the final component may itself be a symlink we want to inspect (not
|
|
99
|
+
* follow). Returns the canonical parent + basename for I/O, or null.
|
|
100
|
+
*/
|
|
101
|
+
private resolveRealPathParent_;
|
|
102
|
+
private sanitizeError;
|
|
103
|
+
private ensureParentDirs;
|
|
104
|
+
/**
|
|
105
|
+
* Check if a path exists in the overlay (memory + real fs - deleted)
|
|
106
|
+
*/
|
|
107
|
+
private existsInOverlay;
|
|
108
|
+
readFile(path: string, options?: ReadFileOptions | BufferEncoding): Promise<string>;
|
|
109
|
+
readFileBuffer(path: string, seen?: Set<string>): Promise<Uint8Array>;
|
|
110
|
+
writeFile(path: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
|
|
111
|
+
appendFile(path: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
|
|
112
|
+
exists(path: string): Promise<boolean>;
|
|
113
|
+
stat(path: string, seen?: Set<string>): Promise<FsStat>;
|
|
114
|
+
lstat(path: string): Promise<FsStat>;
|
|
115
|
+
private resolveSymlink;
|
|
116
|
+
/**
|
|
117
|
+
* Convert a real-fs symlink target to a virtual target suitable for resolveSymlink.
|
|
118
|
+
* Handles absolute real-fs paths that point within the root by converting them
|
|
119
|
+
* to virtual paths relative to the mount point.
|
|
120
|
+
*/
|
|
121
|
+
private realTargetToVirtual;
|
|
122
|
+
mkdir(path: string, options?: MkdirOptions): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Core readdir implementation that returns entries with file types.
|
|
125
|
+
* Both readdir and readdirWithFileTypes use this shared implementation.
|
|
126
|
+
*/
|
|
127
|
+
private readdirCore;
|
|
128
|
+
/**
|
|
129
|
+
* Follow symlinks to resolve the final directory path.
|
|
130
|
+
* Returns outsideOverlay: true if the symlink points outside the overlay or
|
|
131
|
+
* the resolved target doesn't exist (security - broken symlinks return []).
|
|
132
|
+
*/
|
|
133
|
+
private resolveForReaddir;
|
|
134
|
+
readdir(path: string): Promise<string[]>;
|
|
135
|
+
readdirWithFileTypes(path: string): Promise<DirentEntry[]>;
|
|
136
|
+
rm(path: string, options?: RmOptions): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Check (synchronously) whether a path exists on the real filesystem.
|
|
139
|
+
* Used to decide whether a tombstone is needed after deletion.
|
|
140
|
+
*/
|
|
141
|
+
private existsOnRealFs;
|
|
142
|
+
cp(src: string, dest: string, options?: CpOptions): Promise<void>;
|
|
143
|
+
mv(src: string, dest: string): Promise<void>;
|
|
144
|
+
resolvePath(base: string, rel: string): string;
|
|
145
|
+
getAllPaths(): string[];
|
|
146
|
+
private scanRealFs;
|
|
147
|
+
chmod(path: string, mode: number): Promise<void>;
|
|
148
|
+
symlink(target: string, linkPath: string): Promise<void>;
|
|
149
|
+
link(existingPath: string, newPath: string): Promise<void>;
|
|
150
|
+
readlink(path: string): Promise<string>;
|
|
151
|
+
/**
|
|
152
|
+
* Resolve all symlinks in a path to get the canonical physical path.
|
|
153
|
+
* This is equivalent to POSIX realpath().
|
|
154
|
+
*/
|
|
155
|
+
realpath(path: string): Promise<string>;
|
|
156
|
+
/**
|
|
157
|
+
* Set access and modification times of a file
|
|
158
|
+
* @param path - The file path
|
|
159
|
+
* @param _atime - Access time (ignored, kept for API compatibility)
|
|
160
|
+
* @param mtime - Modification time
|
|
161
|
+
*/
|
|
162
|
+
utimes(path: string, _atime: Date, mtime: Date): Promise<void>;
|
|
163
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure path utilities for virtual filesystems.
|
|
3
|
+
*
|
|
4
|
+
* No node:fs or node:path dependencies — safe for browser bundles.
|
|
5
|
+
* Real-FS-backed implementations should import from real-fs-utils.ts
|
|
6
|
+
* (which re-exports these) to keep a single import source.
|
|
7
|
+
*/
|
|
8
|
+
/** Maximum depth for symlink resolution loops. */
|
|
9
|
+
export declare const MAX_SYMLINK_DEPTH = 40;
|
|
10
|
+
/** Default directory permissions. */
|
|
11
|
+
export declare const DEFAULT_DIR_MODE = 493;
|
|
12
|
+
/** Default file permissions. */
|
|
13
|
+
export declare const DEFAULT_FILE_MODE = 420;
|
|
14
|
+
/** Default symlink permissions. */
|
|
15
|
+
export declare const SYMLINK_MODE = 511;
|
|
16
|
+
/**
|
|
17
|
+
* Normalize a virtual path: resolve `.` and `..`, ensure it starts with `/`,
|
|
18
|
+
* strip trailing slashes. Pure function, no I/O.
|
|
19
|
+
*/
|
|
20
|
+
export declare function normalizePath(path: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Validate that a path does not contain null bytes.
|
|
23
|
+
* Null bytes in paths can be used to truncate filenames or bypass security
|
|
24
|
+
* filters.
|
|
25
|
+
*/
|
|
26
|
+
export declare function validatePath(path: string, operation: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get the directory name of a normalized virtual path.
|
|
29
|
+
*/
|
|
30
|
+
export declare function dirname(path: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve a relative path against a base directory.
|
|
33
|
+
* If `path` is absolute, it is normalized and returned directly.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolvePath(base: string, path: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Join a parent path with a child name.
|
|
38
|
+
* Handles the root-path edge case (`"/" + "child"` → `"/child"`).
|
|
39
|
+
*/
|
|
40
|
+
export declare function joinPath(parent: string, child: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve a symlink target relative to the symlink's location.
|
|
43
|
+
* Absolute targets are normalized directly; relative targets are
|
|
44
|
+
* resolved from the symlink's parent directory.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveSymlinkTarget(symlinkPath: string, target: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ReadWriteFs, type ReadWriteFsOptions } from "./read-write-fs.js";
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ReadWriteFs - Direct wrapper around the real filesystem
|
|
3
|
+
*
|
|
4
|
+
* All operations go directly to the underlying Node.js filesystem.
|
|
5
|
+
* Paths are relative to the configured root directory.
|
|
6
|
+
*
|
|
7
|
+
* Security: Symlinks are blocked by default (allowSymlinks: false).
|
|
8
|
+
* All real-FS access goes through resolveAndValidate() / validateParent()
|
|
9
|
+
* gates which detect symlink traversal via path comparison. When symlinks
|
|
10
|
+
* are allowed, targets are validated and transformed to stay within root.
|
|
11
|
+
* New methods must use these gates — never access the real FS directly.
|
|
12
|
+
*/
|
|
13
|
+
import { type FileContent } from "../encoding.js";
|
|
14
|
+
import type { CpOptions, DirentEntry, FsStat, IFileSystem, MkdirOptions, ReadFileOptions, RmOptions, WriteFileOptions } from "../interface.js";
|
|
15
|
+
export interface ReadWriteFsOptions {
|
|
16
|
+
/**
|
|
17
|
+
* The root directory on the real filesystem.
|
|
18
|
+
* All paths are relative to this root.
|
|
19
|
+
*/
|
|
20
|
+
root: string;
|
|
21
|
+
/**
|
|
22
|
+
* Maximum file size in bytes that can be read.
|
|
23
|
+
* Files larger than this will throw an EFBIG error.
|
|
24
|
+
* Defaults to 10MB (10485760).
|
|
25
|
+
*/
|
|
26
|
+
maxFileReadSize?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Whether to allow following and creating symlinks.
|
|
29
|
+
* When false (default), any path traversing a symlink is rejected
|
|
30
|
+
* and symlink() throws EPERM.
|
|
31
|
+
*/
|
|
32
|
+
allowSymlinks?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export declare class ReadWriteFs implements IFileSystem {
|
|
35
|
+
private readonly root;
|
|
36
|
+
private readonly canonicalRoot;
|
|
37
|
+
private readonly maxFileReadSize;
|
|
38
|
+
private readonly allowSymlinks;
|
|
39
|
+
constructor(options: ReadWriteFsOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Validate that a resolved real path stays within the sandbox root and
|
|
42
|
+
* return the canonical (symlink-resolved) path for use in subsequent I/O.
|
|
43
|
+
* This closes the TOCTOU gap where the original path could be swapped
|
|
44
|
+
* between validation and use.
|
|
45
|
+
* Throws EACCES if the path escapes the root.
|
|
46
|
+
*/
|
|
47
|
+
private resolveAndValidate;
|
|
48
|
+
/**
|
|
49
|
+
* Validate the parent directory of a path (for operations like lstat/readlink
|
|
50
|
+
* that should not follow the final component's symlink).
|
|
51
|
+
* Returns the canonical parent joined with the original basename.
|
|
52
|
+
*/
|
|
53
|
+
private validateParent;
|
|
54
|
+
/**
|
|
55
|
+
* Convert a virtual path to a real filesystem path.
|
|
56
|
+
*/
|
|
57
|
+
private toRealPath;
|
|
58
|
+
readFile(path: string, options?: ReadFileOptions | BufferEncoding): Promise<string>;
|
|
59
|
+
readFileBuffer(path: string): Promise<Uint8Array>;
|
|
60
|
+
writeFile(path: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
|
|
61
|
+
appendFile(path: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
|
|
62
|
+
exists(path: string): Promise<boolean>;
|
|
63
|
+
stat(path: string): Promise<FsStat>;
|
|
64
|
+
lstat(path: string): Promise<FsStat>;
|
|
65
|
+
mkdir(path: string, options?: MkdirOptions): Promise<void>;
|
|
66
|
+
readdir(path: string): Promise<string[]>;
|
|
67
|
+
readdirWithFileTypes(path: string): Promise<DirentEntry[]>;
|
|
68
|
+
rm(path: string, options?: RmOptions): Promise<void>;
|
|
69
|
+
cp(src: string, dest: string, options?: CpOptions): Promise<void>;
|
|
70
|
+
mv(src: string, dest: string): Promise<void>;
|
|
71
|
+
resolvePath(base: string, path: string): string;
|
|
72
|
+
getAllPaths(): string[];
|
|
73
|
+
private sanitizeError;
|
|
74
|
+
/**
|
|
75
|
+
* Recursively scan a directory for symlinks whose targets escape the sandbox.
|
|
76
|
+
* Returns an array of paths (real OS paths) for any escaping symlinks found.
|
|
77
|
+
*/
|
|
78
|
+
private findEscapingSymlinks;
|
|
79
|
+
private scanDir;
|
|
80
|
+
chmod(path: string, mode: number): Promise<void>;
|
|
81
|
+
symlink(target: string, linkPath: string): Promise<void>;
|
|
82
|
+
link(existingPath: string, newPath: string): Promise<void>;
|
|
83
|
+
readlink(path: string): Promise<string>;
|
|
84
|
+
/**
|
|
85
|
+
* Resolve all symlinks in a path to get the canonical physical path.
|
|
86
|
+
* This is equivalent to POSIX realpath().
|
|
87
|
+
*/
|
|
88
|
+
realpath(path: string): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Set access and modification times of a file
|
|
91
|
+
* @param path - The file path
|
|
92
|
+
* @param atime - Access time
|
|
93
|
+
* @param mtime - Modification time
|
|
94
|
+
*/
|
|
95
|
+
utimes(path: string, atime: Date, mtime: Date): Promise<void>;
|
|
96
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for real-filesystem-backed IFileSystem implementations
|
|
3
|
+
* (OverlayFs and ReadWriteFs).
|
|
4
|
+
*
|
|
5
|
+
* Security-critical path validation logic lives here so both implementations
|
|
6
|
+
* stay consistent.
|
|
7
|
+
*
|
|
8
|
+
* Pure path utilities (normalizePath, validatePath, dirname, resolvePath, etc.)
|
|
9
|
+
* live in path-utils.ts (no node:fs dependency, browser-safe) and are
|
|
10
|
+
* re-exported here for convenience.
|
|
11
|
+
*/
|
|
12
|
+
export { normalizePath, validatePath } from "./path-utils.js";
|
|
13
|
+
/**
|
|
14
|
+
* Check whether `resolved` is equal to, or a child of, `canonicalRoot`.
|
|
15
|
+
* Uses a boundary-safe prefix check (appends `/`) so that `/data` does not
|
|
16
|
+
* match `/datastore`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isPathWithinRoot(resolved: string, canonicalRoot: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Validate that a real filesystem path stays within the sandbox root after
|
|
21
|
+
* resolving all OS-level symlinks (including in parent components).
|
|
22
|
+
*
|
|
23
|
+
* Uses `realpathSync`; when the path does not exist (`ENOENT`) it walks up
|
|
24
|
+
* to the nearest existing parent. Returns `false` for any path that escapes
|
|
25
|
+
* the sandbox (fail-closed on unexpected errors).
|
|
26
|
+
*/
|
|
27
|
+
export declare function validateRealPath(realPath: string, canonicalRoot: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve a real filesystem path to its canonical form and verify it stays
|
|
30
|
+
* within the sandbox root. Returns the canonical path on success, or `null`
|
|
31
|
+
* if the path escapes the root (fail-closed on unexpected errors).
|
|
32
|
+
*
|
|
33
|
+
* Unlike `validateRealPath` (which returns a boolean), this function returns
|
|
34
|
+
* the canonical path so callers can use it for subsequent I/O, closing the
|
|
35
|
+
* TOCTOU gap where the original (unresolved) path could be swapped between
|
|
36
|
+
* validation and use.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveCanonicalPath(realPath: string, canonicalRoot: string): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Resolve a real filesystem path to its canonical form, verify it stays
|
|
41
|
+
* within the sandbox root, AND reject the path if any symlinks were
|
|
42
|
+
* traversed.
|
|
43
|
+
*
|
|
44
|
+
* Detection: compare the relative path from `root` (unresolved) with the
|
|
45
|
+
* relative path from `canonicalRoot` (resolved). A mismatch means a
|
|
46
|
+
* symlink was followed somewhere in the path.
|
|
47
|
+
*
|
|
48
|
+
* This piggybacks on the `realpathSync` call inside `resolveCanonicalPath`
|
|
49
|
+
* — the only extra cost is one string comparison.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveCanonicalPathNoSymlinks(realPath: string, root: string, canonicalRoot: string): string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Validate that a root directory exists and is actually a directory.
|
|
54
|
+
* Throws with a descriptive message including `fsName` (e.g. "OverlayFs",
|
|
55
|
+
* "ReadWriteFs") on failure. Does NOT include the real root path in the
|
|
56
|
+
* error message to prevent information leakage.
|
|
57
|
+
*/
|
|
58
|
+
export declare function validateRootDirectory(root: string, fsName: string): void;
|
|
59
|
+
export { sanitizeErrorMessage } from "./sanitize-error.js";
|
|
60
|
+
/**
|
|
61
|
+
* Sanitize a raw OS symlink target so it does not leak real filesystem paths
|
|
62
|
+
* outside the sandbox.
|
|
63
|
+
*
|
|
64
|
+
* - Relative targets are returned as-is (they don't leak real paths).
|
|
65
|
+
* - Absolute targets that resolve within the canonical root are converted to
|
|
66
|
+
* a path relative to the root (the caller decides how to present it).
|
|
67
|
+
* - Absolute targets outside the root are reduced to `basename` only.
|
|
68
|
+
*
|
|
69
|
+
* Returns `{ withinRoot: true, relativePath }` when the target is inside the
|
|
70
|
+
* sandbox, or `{ withinRoot: false, safeName }` when it is outside.
|
|
71
|
+
*/
|
|
72
|
+
export declare function sanitizeSymlinkTarget(rawTarget: string, canonicalRoot: string): {
|
|
73
|
+
withinRoot: true;
|
|
74
|
+
relativePath: string;
|
|
75
|
+
} | {
|
|
76
|
+
withinRoot: false;
|
|
77
|
+
safeName: string;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Sanitize an error thrown during real-FS operations to prevent leaking
|
|
81
|
+
* real OS paths. Node.js ErrnoException objects contain a `.path` property
|
|
82
|
+
* with the real filesystem path — this must never reach the sandbox user.
|
|
83
|
+
*
|
|
84
|
+
* Errors whose `.path` is `undefined` are our own errors (constructed with
|
|
85
|
+
* `new Error(...)`) rather than Node.js ErrnoExceptions. If their message
|
|
86
|
+
* contains one of `passthroughPatterns`, they are rethrown as-is (they
|
|
87
|
+
* already contain safe virtual paths). All other errors are replaced with
|
|
88
|
+
* a generic `"CODE: operation 'virtualPath'"` message.
|
|
89
|
+
*/
|
|
90
|
+
export declare function sanitizeFsError(e: unknown, virtualPath: string, operation: string, passthroughPatterns: readonly string[]): never;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error message sanitization utility.
|
|
3
|
+
*
|
|
4
|
+
* This module has NO Node.js dependencies (no `node:fs`, etc.) so it can
|
|
5
|
+
* safely be imported in browser bundles.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Sanitize an error message to strip common real OS paths and stack traces.
|
|
9
|
+
*
|
|
10
|
+
* Preserves virtual paths that don't match the common host prefixes used by
|
|
11
|
+
* the default runtime.
|
|
12
|
+
*/
|
|
13
|
+
export declare function sanitizeErrorMessage(message: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Aggressive sanitizer for host-originated errors such as worker/bootstrap
|
|
16
|
+
* failures. This also scrubs file:// URLs and additional runtime roots that
|
|
17
|
+
* are common in hosted environments.
|
|
18
|
+
*/
|
|
19
|
+
export declare function sanitizeHostErrorMessage(message: string): string;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type { CommandNode, PipelineNode, ScriptNode, SimpleCommandNode, StatementNode, WordNode, } from "./ast/types.js";
|
|
2
|
+
export type { BashLogger, BashOptions, ExecOptions, JavaScriptConfig, } from "./Bash.js";
|
|
3
|
+
export { Bash } from "./Bash.js";
|
|
4
|
+
export type { AllCommandName, CommandName, JavaScriptCommandName, NetworkCommandName, PythonCommandName, } from "./commands/registry.js";
|
|
5
|
+
export { getCommandNames, getJavaScriptCommandNames, getNetworkCommandNames, getPythonCommandNames, } from "./commands/registry.js";
|
|
6
|
+
export type { CustomCommand, LazyCommand } from "./custom-commands.js";
|
|
7
|
+
export { defineCommand } from "./custom-commands.js";
|
|
8
|
+
export { InMemoryFs } from "./fs/in-memory-fs/index.js";
|
|
9
|
+
export type { BufferEncoding, CpOptions, DirectoryEntry, FileContent, FileEntry, FileInit, FileSystemFactory, FsEntry, FsStat, InitialFiles, LazyFileEntry, LazyFileProvider, MkdirOptions, RmOptions, SymlinkEntry, } from "./fs/interface.js";
|
|
10
|
+
export { MountableFs, type MountableFsOptions, type MountConfig, } from "./fs/mountable-fs/index.js";
|
|
11
|
+
export { OverlayFs, type OverlayFsOptions } from "./fs/overlay-fs/index.js";
|
|
12
|
+
export { ReadWriteFs, type ReadWriteFsOptions, } from "./fs/read-write-fs/index.js";
|
|
13
|
+
export type { AllowedUrl, AllowedUrlEntry, NetworkConfig, RequestTransform, SecureFetch, } from "./network/index.js";
|
|
14
|
+
export { NetworkAccessDeniedError, RedirectNotAllowedError, TooManyRedirectsError, } from "./network/index.js";
|
|
15
|
+
export { parse } from "./parser/parser.js";
|
|
16
|
+
export type { CommandFinished as SandboxCommandFinished, OutputMessage, SandboxOptions, WriteFilesInput, } from "./sandbox/index.js";
|
|
17
|
+
export { Command as SandboxCommand, Sandbox } from "./sandbox/index.js";
|
|
18
|
+
export type { DefenseInDepthConfig, DefenseInDepthHandle, DefenseInDepthStats, SecurityViolation, SecurityViolationType, } from "./security/index.js";
|
|
19
|
+
export { createConsoleViolationCallback, DefenseInDepthBox, SecurityViolationError, SecurityViolationLogger, } from "./security/index.js";
|
|
20
|
+
export { BashTransformPipeline } from "./transform/pipeline.js";
|
|
21
|
+
export type { CommandCollectorMetadata } from "./transform/plugins/command-collector.js";
|
|
22
|
+
export { CommandCollectorPlugin } from "./transform/plugins/command-collector.js";
|
|
23
|
+
export type { TeeFileInfo, TeePluginMetadata, TeePluginOptions, } from "./transform/plugins/tee-plugin.js";
|
|
24
|
+
export { TeePlugin } from "./transform/plugins/tee-plugin.js";
|
|
25
|
+
export { serialize } from "./transform/serialize.js";
|
|
26
|
+
export type { BashTransformResult, TransformContext, TransformPlugin, TransformResult, } from "./transform/types.js";
|
|
27
|
+
export type { BashExecResult, Command, CommandContext, ExecResult, IFileSystem, } from "./types.js";
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type { CommandNode, PipelineNode, ScriptNode, SimpleCommandNode, StatementNode, WordNode, } from "./ast/types.js";
|
|
2
|
+
export type { BashLogger, BashOptions, ExecOptions, JavaScriptConfig, } from "./Bash.js";
|
|
3
|
+
export { Bash } from "./Bash.js";
|
|
4
|
+
export type { AllCommandName, CommandName, JavaScriptCommandName, NetworkCommandName, PythonCommandName, } from "./commands/registry.js";
|
|
5
|
+
export { getCommandNames, getJavaScriptCommandNames, getNetworkCommandNames, getPythonCommandNames, } from "./commands/registry.js";
|
|
6
|
+
export type { CustomCommand, LazyCommand } from "./custom-commands.js";
|
|
7
|
+
export { defineCommand } from "./custom-commands.js";
|
|
8
|
+
export { InMemoryFs } from "./fs/in-memory-fs/index.js";
|
|
9
|
+
export type { BufferEncoding, CpOptions, DirectoryEntry, FileContent, FileEntry, FileInit, FileSystemFactory, FsEntry, FsStat, InitialFiles, LazyFileEntry, LazyFileProvider, MkdirOptions, RmOptions, SymlinkEntry, } from "./fs/interface.js";
|
|
10
|
+
export { MountableFs, type MountableFsOptions, type MountConfig, } from "./fs/mountable-fs/index.js";
|
|
11
|
+
export { OverlayFs, type OverlayFsOptions } from "./fs/overlay-fs/index.js";
|
|
12
|
+
export { ReadWriteFs, type ReadWriteFsOptions, } from "./fs/read-write-fs/index.js";
|
|
13
|
+
export type { AllowedUrl, AllowedUrlEntry, NetworkConfig, RequestTransform, SecureFetch, } from "./network/index.js";
|
|
14
|
+
export { NetworkAccessDeniedError, RedirectNotAllowedError, TooManyRedirectsError, } from "./network/index.js";
|
|
15
|
+
export { parse } from "./parser/parser.js";
|
|
16
|
+
export type { CommandFinished as SandboxCommandFinished, OutputMessage, SandboxOptions, WriteFilesInput, } from "./sandbox/index.js";
|
|
17
|
+
export { Command as SandboxCommand, Sandbox } from "./sandbox/index.js";
|
|
18
|
+
export type { DefenseInDepthConfig, DefenseInDepthHandle, DefenseInDepthStats, SecurityViolation, SecurityViolationType, } from "./security/index.js";
|
|
19
|
+
export { createConsoleViolationCallback, DefenseInDepthBox, SecurityViolationError, SecurityViolationLogger, } from "./security/index.js";
|
|
20
|
+
export { BashTransformPipeline } from "./transform/pipeline.js";
|
|
21
|
+
export type { CommandCollectorMetadata } from "./transform/plugins/command-collector.js";
|
|
22
|
+
export { CommandCollectorPlugin } from "./transform/plugins/command-collector.js";
|
|
23
|
+
export type { TeeFileInfo, TeePluginMetadata, TeePluginOptions, } from "./transform/plugins/tee-plugin.js";
|
|
24
|
+
export { TeePlugin } from "./transform/plugins/tee-plugin.js";
|
|
25
|
+
export { serialize } from "./transform/serialize.js";
|
|
26
|
+
export type { BashTransformResult, TransformContext, TransformPlugin, TransformResult, } from "./transform/types.js";
|
|
27
|
+
export type { BashExecResult, Command, CommandContext, ExecResult, IFileSystem, } from "./types.js";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alias Expansion
|
|
3
|
+
*
|
|
4
|
+
* Handles bash alias expansion for SimpleCommandNodes.
|
|
5
|
+
*
|
|
6
|
+
* Alias expansion rules:
|
|
7
|
+
* 1. Only expands if command name is a literal unquoted word
|
|
8
|
+
* 2. Alias value is substituted for the command name
|
|
9
|
+
* 3. If alias value ends with a space, the next word is also checked for alias expansion
|
|
10
|
+
* 4. Recursive expansion is allowed but limited to prevent infinite loops
|
|
11
|
+
*/
|
|
12
|
+
import type { SimpleCommandNode } from "../ast/types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Context needed for alias expansion operations
|
|
15
|
+
*/
|
|
16
|
+
export interface AliasExpansionContext {
|
|
17
|
+
env: Map<string, string>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Expand alias in a SimpleCommandNode if applicable.
|
|
21
|
+
* Returns a new node with the alias expanded, or the original node if no expansion.
|
|
22
|
+
*/
|
|
23
|
+
export declare function expandAlias(ctx: AliasExpansionContext, node: SimpleCommandNode, aliasExpansionStack: Set<string>): SimpleCommandNode;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arithmetic Evaluation
|
|
3
|
+
*
|
|
4
|
+
* Evaluates bash arithmetic expressions including:
|
|
5
|
+
* - Basic operators (+, -, *, /, %)
|
|
6
|
+
* - Comparison operators (<, <=, >, >=, ==, !=)
|
|
7
|
+
* - Bitwise operators (&, |, ^, ~, <<, >>)
|
|
8
|
+
* - Logical operators (&&, ||, !)
|
|
9
|
+
* - Assignment operators (=, +=, -=, etc.)
|
|
10
|
+
* - Ternary operator (? :)
|
|
11
|
+
* - Pre/post increment/decrement (++, --)
|
|
12
|
+
* - Nested arithmetic: $((expr))
|
|
13
|
+
* - Command substitution: $(cmd) or `cmd`
|
|
14
|
+
*
|
|
15
|
+
* Known limitations:
|
|
16
|
+
* - Bitwise operations use JavaScript's 32-bit signed integers, not 64-bit.
|
|
17
|
+
* This means values like (1 << 31) will be negative (-2147483648) instead
|
|
18
|
+
* of the bash 64-bit result (2147483648).
|
|
19
|
+
* - Dynamic arithmetic expressions (e.g., ${base}#a where base=16) are not
|
|
20
|
+
* fully supported - variable expansion happens at parse time, not runtime.
|
|
21
|
+
*/
|
|
22
|
+
import type { ArithExpr } from "../ast/types.js";
|
|
23
|
+
import type { InterpreterContext } from "./types.js";
|
|
24
|
+
export declare function evaluateArithmetic(ctx: InterpreterContext, expr: ArithExpr, isExpansionContext?: boolean): Promise<number>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assignment Expansion Helpers
|
|
3
|
+
*
|
|
4
|
+
* Handles expansion of assignment arguments for local/declare/typeset builtins.
|
|
5
|
+
* - Array assignments: name=(elem1 elem2 ...)
|
|
6
|
+
* - Scalar assignments: name=value, name+=value, name[index]=value
|
|
7
|
+
*/
|
|
8
|
+
import type { WordNode } from "../ast/types.js";
|
|
9
|
+
import type { InterpreterContext } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Check if a Word represents an array assignment (name=(...)) and expand it
|
|
12
|
+
* while preserving quote structure for elements.
|
|
13
|
+
* Returns the expanded string like "name=(elem1 elem2 ...)" or null if not an array assignment.
|
|
14
|
+
*/
|
|
15
|
+
export declare function expandLocalArrayAssignment(ctx: InterpreterContext, word: WordNode): Promise<string | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Check if a Word represents a scalar assignment (name=value, name+=value, or name[index]=value)
|
|
18
|
+
* and expand it WITHOUT glob expansion on the value part.
|
|
19
|
+
* Returns the expanded string like "name=expanded_value" or null if not a scalar assignment.
|
|
20
|
+
*
|
|
21
|
+
* This is important for bash compatibility: `local var=$x` where x='a b' should
|
|
22
|
+
* set var to "a b", not try to glob-expand it.
|
|
23
|
+
*/
|
|
24
|
+
export declare function expandScalarAssignmentArg(ctx: InterpreterContext, word: WordNode): Promise<string | null>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builtin Command Dispatch
|
|
3
|
+
*
|
|
4
|
+
* Handles dispatch of built-in shell commands like export, unset, cd, etc.
|
|
5
|
+
* Separated from interpreter.ts for modularity.
|
|
6
|
+
*/
|
|
7
|
+
import type { ExecResult } from "../types.js";
|
|
8
|
+
import type { InterpreterContext } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Type for the function that runs a command recursively
|
|
11
|
+
*/
|
|
12
|
+
export type RunCommandFn = (commandName: string, args: string[], quotedArgs: boolean[], stdin: string, skipFunctions?: boolean, useDefaultPath?: boolean, stdinSourceFd?: number) => Promise<ExecResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Type for the function that builds exported environment
|
|
15
|
+
*/
|
|
16
|
+
export type BuildExportedEnvFn = () => Record<string, string>;
|
|
17
|
+
/**
|
|
18
|
+
* Type for the function that executes user scripts
|
|
19
|
+
*/
|
|
20
|
+
export type ExecuteUserScriptFn = (scriptPath: string, args: string[], stdin?: string) => Promise<ExecResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Dispatch context containing dependencies needed for builtin dispatch
|
|
23
|
+
*/
|
|
24
|
+
export interface BuiltinDispatchContext {
|
|
25
|
+
ctx: InterpreterContext;
|
|
26
|
+
runCommand: RunCommandFn;
|
|
27
|
+
buildExportedEnv: BuildExportedEnvFn;
|
|
28
|
+
executeUserScript: ExecuteUserScriptFn;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Dispatch a command to the appropriate builtin handler or external command.
|
|
32
|
+
* Returns null if the command should be handled by external command resolution.
|
|
33
|
+
*/
|
|
34
|
+
export declare function dispatchBuiltin(dispatchCtx: BuiltinDispatchContext, commandName: string, args: string[], _quotedArgs: boolean[], stdin: string, skipFunctions: boolean, _useDefaultPath: boolean, stdinSourceFd: number): Promise<ExecResult | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Handle external command resolution and execution.
|
|
37
|
+
* Called when dispatchBuiltin returns null.
|
|
38
|
+
*/
|
|
39
|
+
export declare function executeExternalCommand(dispatchCtx: BuiltinDispatchContext, commandName: string, args: string[], stdin: string, useDefaultPath: boolean): Promise<ExecResult>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* compgen - Generate completion matches
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* compgen -v [prefix] - List variable names (optionally starting with prefix)
|
|
6
|
+
* compgen -A variable [prefix] - Same as -v
|
|
7
|
+
* compgen -A function [prefix] - List function names
|
|
8
|
+
* compgen -e [prefix] - List exported variable names
|
|
9
|
+
* compgen -A builtin [prefix] - List builtin command names
|
|
10
|
+
* compgen -A keyword [prefix] - List shell keywords (alias: -k)
|
|
11
|
+
* compgen -A alias [prefix] - List alias names
|
|
12
|
+
* compgen -A shopt [prefix] - List shopt options
|
|
13
|
+
* compgen -A helptopic [prefix] - List help topics
|
|
14
|
+
* compgen -A directory [prefix] - List directory names
|
|
15
|
+
* compgen -A file [prefix] - List file names
|
|
16
|
+
* compgen -f [prefix] - List file names (alias for -A file)
|
|
17
|
+
* compgen -A user - List user names
|
|
18
|
+
* compgen -A command [prefix] - List commands (builtins, functions, aliases, external)
|
|
19
|
+
* compgen -W wordlist [prefix] - Generate from wordlist
|
|
20
|
+
* compgen -P prefix - Prefix to add to completions
|
|
21
|
+
* compgen -S suffix - Suffix to add to completions
|
|
22
|
+
* compgen -o option - Completion option (plusdirs, dirnames, default, etc.)
|
|
23
|
+
*/
|
|
24
|
+
import type { ExecResult } from "../../types.js";
|
|
25
|
+
import type { InterpreterContext } from "../types.js";
|
|
26
|
+
export declare function handleCompgen(ctx: InterpreterContext, args: string[]): Promise<ExecResult>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* complete - Set and display programmable completion specifications
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* complete - List all completion specs
|
|
6
|
+
* complete -p - Print all completion specs in reusable format
|
|
7
|
+
* complete -p cmd - Print completion spec for specific command
|
|
8
|
+
* complete -W 'word1 word2' cmd - Set word list completion for cmd
|
|
9
|
+
* complete -F func cmd - Set function completion for cmd
|
|
10
|
+
* complete -r cmd - Remove completion spec for cmd
|
|
11
|
+
* complete -r - Remove all completion specs
|
|
12
|
+
* complete -D ... - Set default completion (for commands with no specific spec)
|
|
13
|
+
* complete -o opt cmd - Set completion options (nospace, filenames, default, etc.)
|
|
14
|
+
*/
|
|
15
|
+
import type { ExecResult } from "../../types.js";
|
|
16
|
+
import type { InterpreterContext } from "../types.js";
|
|
17
|
+
export declare function handleComplete(ctx: InterpreterContext, args: string[]): ExecResult;
|