@poe-platform/safe-bash 0.1.799 → 0.1.800
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -17
- package/dist/image-ast/index.browser.js +1384 -23
- package/dist/image-ast/index.js +1384 -23
- package/dist/mp4-ast/types.d.ts +1 -0
- package/dist/office-package/zip.d.ts +2 -0
- package/dist/office-package/zip.js +1 -1
- package/dist/pdf-ast/index.js +1 -1
- package/dist/safe-bash/chunks/{chunk-IUTD5FH5.js → chunk-46UISJCK.js} +1 -6
- package/dist/safe-bash/chunks/chunk-4SEW2Q6H.js +26 -0
- package/dist/safe-bash/chunks/{chunk-AKC46AF6.js → chunk-7YSRXFEG.js} +7 -40
- package/dist/safe-bash/chunks/{chunk-KTGR4U57.js → chunk-BHJE5LPZ.js} +1 -2
- package/dist/safe-bash/chunks/{chunk-TRVGCN3U.js → chunk-HHW7MGS2.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-ZNAFMYIA.js → chunk-I7L3G3NX.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-KMH2DF3I.js → chunk-JJSTTIEZ.js} +6 -1
- package/dist/safe-bash/chunks/{chunk-6IBTC4YL.js → chunk-JTLSUJ7V.js} +57 -20
- package/dist/safe-bash/chunks/chunk-K2VCOJ2B.js +111 -0
- package/dist/safe-bash/chunks/chunk-K4YMYFRJ.js +9802 -0
- package/dist/safe-bash/chunks/{chunk-SPYL72GN.js → chunk-KW24TAIU.js} +446 -5519
- package/dist/safe-bash/chunks/{chunk-ENR3HB2B.js → chunk-NLAW7KDI.js} +0 -1
- package/dist/safe-bash/chunks/{chunk-B3DDEDH2.js → chunk-PPYM75Z3.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-NX2SQVON.js → chunk-RKKRJ54E.js} +19 -7
- package/dist/safe-bash/chunks/{chunk-WUNK5NXJ.js → chunk-RMWLWH7Q.js} +870 -953
- package/dist/safe-bash/chunks/{chunk-JSVX4VIA.js → chunk-TFGRKY43.js} +2 -1
- package/dist/safe-bash/chunks/{chunk-T5KKDMYB.js → chunk-TYD7EVUJ.js} +6 -0
- package/dist/safe-bash/chunks/{csvkit-W2UEKH6P.js → csvkit-QGP3GAOB.js} +1 -1
- package/dist/safe-bash/chunks/{ffmpeg-42CGASMV.js → ffmpeg-JTVH26MK.js} +1 -1
- package/dist/safe-bash/chunks/{gh-26GYLH6D.js → gh-I7QX7N5C.js} +1 -1
- package/dist/safe-bash/chunks/{git-YREKMUVD.js → git-MA7NKYVP.js} +1 -1
- package/dist/safe-bash/chunks/{imagemagick-3YIX4XO2.js → imagemagick-Y4NPWX2Q.js} +1 -1
- package/dist/safe-bash/chunks/{implementation-E3YMKU3Z.js → implementation-BWDKOVQJ.js} +1 -1
- package/dist/safe-bash/chunks/mmdc-44PELHDG.js +118 -0
- package/dist/safe-bash/chunks/{pdfimages-UE2UISP2.js → pdfimages-635TRW4Q.js} +1 -1
- package/dist/safe-bash/chunks/{pdfinfo-RGARKLI5.js → pdfinfo-FSDAA2KY.js} +3 -11
- package/dist/safe-bash/chunks/{pdftk-JY3WVCCC.js → pdftk-GQ5UH3VG.js} +1 -1
- package/dist/safe-bash/chunks/{pdftoppm-GPD3BMPY.js → pdftoppm-YTXQCAYT.js} +1 -1
- package/dist/safe-bash/chunks/{pdftotext-K7GQ2QJZ.js → pdftotext-CVA2G7FY.js} +1 -1
- package/dist/safe-bash/chunks/{qpdf-F4U7WUSU.js → qpdf-HZMIFG4A.js} +1 -1
- package/dist/safe-bash/chunks/{sips-RWENS7X5.js → sips-E7UBDP33.js} +1 -1
- package/dist/safe-bash/chunks/{soffice-IT6W2C5F.js → soffice-ELASUWUK.js} +1 -1
- package/dist/safe-bash/chunks/{wkhtmltopdf-JYNDAHIZ.js → wkhtmltopdf-EPO6YCMG.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-2FGJYFWZ.js +44 -0
- package/dist/safe-bash/command-chunks/chunk-2H4JTFIL.js +53 -0
- package/dist/safe-bash/command-chunks/{chunk-LLCXZKZ6.js → chunk-2QHG43WJ.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-364TMWBT.js +946 -0
- package/dist/safe-bash/command-chunks/{chunk-EIVW3X3N.js → chunk-3DT2YOGW.js} +11 -6
- package/dist/safe-bash/command-chunks/chunk-3E2OIS2J.js +7037 -0
- package/dist/safe-bash/command-chunks/{chunk-AIRGA2SU.js → chunk-3HXDA5PT.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-3LSOYLNV.js +1091 -0
- package/dist/safe-bash/command-chunks/chunk-4B7Y7S6E.js +61 -0
- package/dist/safe-bash/command-chunks/{chunk-HRLIAMXC.js → chunk-4C6QI5BQ.js} +3 -2
- package/dist/safe-bash/command-chunks/chunk-4ZHMW6F5.js +104 -0
- package/dist/safe-bash/command-chunks/{chunk-4ZALPDBV.js → chunk-53P53XFM.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-5LSGEIZY.js +379 -0
- package/dist/safe-bash/command-chunks/{chunk-MKQVQMXO.js → chunk-5LU4UCBR.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-5T7CRJHW.js +560 -0
- package/dist/safe-bash/command-chunks/chunk-5TBUOBDE.js +346 -0
- package/dist/safe-bash/command-chunks/chunk-5XY4DTNG.js +34 -0
- package/dist/safe-bash/command-chunks/chunk-5ZMZ573Q.js +140 -0
- package/dist/safe-bash/command-chunks/{chunk-OPUJSTHS.js → chunk-67IQF5GC.js} +200 -66
- package/dist/safe-bash/command-chunks/chunk-67QKREJK.js +347 -0
- package/dist/safe-bash/command-chunks/chunk-6EPHJGGF.js +23 -0
- package/dist/safe-bash/command-chunks/chunk-6F4XCVON.js +266 -0
- package/dist/safe-bash/command-chunks/{chunk-ESMCX3YV.js → chunk-6HMX4CQS.js} +669 -130
- package/dist/safe-bash/command-chunks/chunk-7K6JYKPJ.js +422 -0
- package/dist/safe-bash/command-chunks/chunk-7N2LI2KO.js +206 -0
- package/dist/safe-bash/command-chunks/chunk-7RGB363W.js +362 -0
- package/dist/safe-bash/command-chunks/{pptx-GBPNWNEP-7EQEVXV5.js → chunk-AI5JAXQF.js} +34820 -18029
- package/dist/safe-bash/command-chunks/chunk-AMO3THU4.js +105 -0
- package/dist/safe-bash/command-chunks/chunk-BAGCY35S.js +231 -0
- package/dist/safe-bash/command-chunks/chunk-BAXU7B5Z.js +101 -0
- package/dist/safe-bash/command-chunks/{chunk-KMCZ6P4O.js → chunk-BKCNF5U3.js} +68 -7
- package/dist/safe-bash/command-chunks/chunk-BNOU5YQS.js +182 -0
- package/dist/safe-bash/command-chunks/chunk-C7I25AAL.js +25 -0
- package/dist/safe-bash/command-chunks/chunk-CKXV2CLD.js +65 -0
- package/dist/safe-bash/command-chunks/chunk-CQ5YGOGB.js +150 -0
- package/dist/safe-bash/command-chunks/{chunk-I3K5RYU4.js → chunk-D4OP2BR3.js} +72 -24
- package/dist/safe-bash/command-chunks/chunk-DB453IE6.js +122 -0
- package/dist/safe-bash/command-chunks/chunk-DOKKNRRM.js +87 -0
- package/dist/safe-bash/command-chunks/{chunk-2PX5B7T5.js → chunk-DQAVUDDX.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-DT7BCTWY.js +249 -0
- package/dist/safe-bash/command-chunks/chunk-E2LB7FRT.js +42 -0
- package/dist/safe-bash/command-chunks/chunk-EK6YNAXT.js +343 -0
- package/dist/safe-bash/command-chunks/chunk-EQ4HV54N.js +22 -0
- package/dist/safe-bash/command-chunks/chunk-ERYJLO6G.js +293 -0
- package/dist/safe-bash/command-chunks/{chunk-4ONEXMD3.js → chunk-EUSPTFAX.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-FKKB5X5V.js +97 -0
- package/dist/safe-bash/command-chunks/chunk-FXELCPFX.js +195 -0
- package/dist/safe-bash/command-chunks/{chunk-JCNNOMBV.js → chunk-GI4CJED2.js} +3 -2
- package/dist/safe-bash/command-chunks/{chunk-CU5RLO62.js → chunk-GLOZX57Y.js} +92 -18
- package/dist/safe-bash/command-chunks/chunk-GMIHJYDG.js +331 -0
- package/dist/safe-bash/command-chunks/chunk-H622NS6Z.js +11 -0
- package/dist/safe-bash/command-chunks/{chunk-UI32HWGS.js → chunk-HMOZ6XVJ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-AVSPNLWV.js → chunk-I237SNW5.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ZS3QPNUL.js → chunk-IR2BY7EL.js} +21 -6
- package/dist/safe-bash/command-chunks/chunk-IYPAQ7PH.js +42 -0
- package/dist/safe-bash/command-chunks/chunk-JN7WIP6S.js +94 -0
- package/dist/safe-bash/command-chunks/chunk-JNZ3CVAE.js +147 -0
- package/dist/safe-bash/command-chunks/{chunk-HLBX5IRS.js → chunk-JQ74HC37.js} +24 -32
- package/dist/safe-bash/command-chunks/chunk-KFVV7ZJO.js +216 -0
- package/dist/safe-bash/command-chunks/{chunk-G4PNVO6Z.js → chunk-KP7AO66M.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-KWESKQHR.js +25 -0
- package/dist/safe-bash/command-chunks/chunk-KYSPGS33.js +41 -0
- package/dist/safe-bash/command-chunks/{chunk-C7IHMJEW.js → chunk-KZC5UWFF.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-L6DVEBW3.js +553 -0
- package/dist/safe-bash/command-chunks/chunk-LC2MFKT4.js +2489 -0
- package/dist/safe-bash/command-chunks/chunk-LE5LZNHE.js +204 -0
- package/dist/safe-bash/command-chunks/chunk-MDH5T4OS.js +41 -0
- package/dist/safe-bash/command-chunks/chunk-MM6HU6CX.js +20 -0
- package/dist/safe-bash/command-chunks/{chunk-MYJAZ3U2.js → chunk-MPL2466A.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-VZHRZMS7.js → chunk-NAY27PXB.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-NCD7PEWH.js +298 -0
- package/dist/safe-bash/command-chunks/chunk-NFGI5IGF.js +266 -0
- package/dist/safe-bash/command-chunks/{chunk-KVFCSLKK.js → chunk-NXEQ3ESQ.js} +6 -0
- package/dist/safe-bash/command-chunks/{chunk-3VGGYEDH.js → chunk-ORYGZYKW.js} +4 -3
- package/dist/safe-bash/command-chunks/{chunk-OLQG7ZCN.js → chunk-PEF7K3UQ.js} +136 -75
- package/dist/safe-bash/command-chunks/chunk-PII4YEZW.js +123 -0
- package/dist/safe-bash/command-chunks/{chunk-43GSSUAY.js → chunk-PJJUYO3R.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-ZT4KSS2V.js → chunk-PTT3I223.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-Q3DII3Q7.js +174 -0
- package/dist/safe-bash/command-chunks/chunk-Q3EWDEUQ.js +185 -0
- package/dist/safe-bash/command-chunks/{chunk-2FUAW6GO.js → chunk-QI7LGHJJ.js} +58 -9
- package/dist/safe-bash/command-chunks/{chunk-6BETHLXZ.js → chunk-QJAFJP2G.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-QNIMV57G.js +63 -0
- package/dist/safe-bash/command-chunks/{chunk-VVI4Z73I.js → chunk-QP4R6GLA.js} +5 -1
- package/dist/safe-bash/command-chunks/{chunk-LPORMIZS.js → chunk-QWIDNAAK.js} +8 -8
- package/dist/safe-bash/command-chunks/chunk-RVLO4DYT.js +35 -0
- package/dist/safe-bash/command-chunks/{chunk-X2YQLGKS.js → chunk-SAMH7SQE.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-SEM36PG5.js +11 -0
- package/dist/safe-bash/command-chunks/chunk-STC3LEWJ.js +634 -0
- package/dist/safe-bash/command-chunks/chunk-SVULUDOP.js +331 -0
- package/dist/safe-bash/command-chunks/chunk-TEVJJPTC.js +1392 -0
- package/dist/safe-bash/command-chunks/{chunk-ZXKW7SJ2.js → chunk-TYCGMRLM.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-UG7SMZFF.js +178 -0
- package/dist/safe-bash/command-chunks/{chunk-YZ5SVZFD.js → chunk-UMDIOL3O.js} +3 -3
- package/dist/safe-bash/command-chunks/chunk-UXSR5BZH.js +136 -0
- package/dist/safe-bash/command-chunks/chunk-V6BEDRMQ.js +112 -0
- package/dist/safe-bash/command-chunks/chunk-V6MSPQLA.js +362 -0
- package/dist/safe-bash/command-chunks/{chunk-J4PEQWSF.js → chunk-VGG2DL5Q.js} +0 -1
- package/dist/safe-bash/command-chunks/{chunk-SG424QWS.js → chunk-VL67NWNS.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-WB5SVIG7.js +1034 -0
- package/dist/safe-bash/command-chunks/{src-UJOWAS2S.js → chunk-WD3ERGRY.js} +77 -277
- package/dist/safe-bash/command-chunks/{chunk-YFSDDFGV.js → chunk-WH627NJL.js} +446 -53
- package/dist/safe-bash/command-chunks/chunk-WNE7FPVR.js +236 -0
- package/dist/safe-bash/command-chunks/{chunk-UKS2XJZI.js → chunk-WPYIOKE3.js} +4 -4
- package/dist/safe-bash/command-chunks/chunk-XETLEHZP.js +1227 -0
- package/dist/safe-bash/command-chunks/chunk-XIIBTGC5.js +580 -0
- package/dist/safe-bash/command-chunks/chunk-XJXU3VVH.js +737 -0
- package/dist/safe-bash/command-chunks/chunk-Y5INTD6S.js +220 -0
- package/dist/safe-bash/command-chunks/{chunk-5ZSM4UFN.js → chunk-YGC6OS5O.js} +3 -56
- package/dist/safe-bash/command-chunks/chunk-YJDV76GL.js +262 -0
- package/dist/safe-bash/command-chunks/chunk-YOF7R4OY.js +80 -0
- package/dist/safe-bash/command-chunks/chunk-Z7RVSD5K.js +594 -0
- package/dist/safe-bash/command-chunks/chunk-ZHUWOUWB.js +618 -0
- package/dist/safe-bash/command-chunks/{model-store-L35QTZMJ.js → model-store-WPKMRPV4.js} +2 -2
- package/dist/safe-bash/command-chunks/pptx-7G52EJ6L-4JACH5FB.js +625 -0
- package/dist/safe-bash/command-chunks/python-worker-source-TYOFJMCW.js +4 -0
- package/dist/safe-bash/command-chunks/src-ICMQISAA.js +501 -0
- package/dist/safe-bash/commands/archive/create.d.ts +1 -17
- package/dist/safe-bash/commands/archive/create.js +1 -252
- package/dist/safe-bash/commands/archive/extract.d.ts +1 -11
- package/dist/safe-bash/commands/archive/extract.js +1 -640
- package/dist/safe-bash/commands/archive/format.d.ts +1 -32
- package/dist/safe-bash/commands/archive/format.js +1 -225
- package/dist/safe-bash/commands/archive/index.d.ts +5 -10
- package/dist/safe-bash/commands/archive/index.js +6 -931
- package/dist/safe-bash/commands/archive/listing.d.ts +1 -2
- package/dist/safe-bash/commands/archive/listing.js +1 -21
- package/dist/safe-bash/commands/archive/modes.d.ts +1 -5
- package/dist/safe-bash/commands/archive/modes.js +1 -182
- package/dist/safe-bash/commands/archive/options.d.ts +1 -53
- package/dist/safe-bash/commands/archive/options.js +1 -462
- package/dist/safe-bash/commands/archive/stream.d.ts +1 -22
- package/dist/safe-bash/commands/archive/stream.js +1 -188
- package/dist/safe-bash/commands/archive/transform.d.ts +1 -16
- package/dist/safe-bash/commands/archive/transform.js +1 -85
- package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +1 -53
- package/dist/safe-bash/commands/archive/unzip/arguments.js +1 -322
- package/dist/safe-bash/commands/archive/unzip/safety.d.ts +1 -32
- package/dist/safe-bash/commands/archive/unzip/safety.js +1 -295
- package/dist/safe-bash/commands/archive/unzip.d.ts +1 -3
- package/dist/safe-bash/commands/archive/unzip.js +1 -398
- package/dist/safe-bash/commands/archive/zip/aes.d.ts +1 -17
- package/dist/safe-bash/commands/archive/zip/aes.js +1 -156
- package/dist/safe-bash/commands/archive/zip/comments.d.ts +1 -17
- package/dist/safe-bash/commands/archive/zip/comments.js +1 -83
- package/dist/safe-bash/commands/archive/zip/crc.d.ts +1 -1
- package/dist/safe-bash/commands/archive/zip/crc.js +1 -1
- package/dist/safe-bash/commands/archive/zip/crypto.d.ts +1 -19
- package/dist/safe-bash/commands/archive/zip/crypto.js +1 -118
- package/dist/safe-bash/commands/archive/zip/dates.d.ts +1 -4
- package/dist/safe-bash/commands/archive/zip/dates.js +1 -66
- package/dist/safe-bash/commands/archive/zip/environment.d.ts +1 -2
- package/dist/safe-bash/commands/archive/zip/environment.js +1 -62
- package/dist/safe-bash/commands/archive/zip/grow.d.ts +1 -3
- package/dist/safe-bash/commands/archive/zip/grow.js +1 -2
- package/dist/safe-bash/commands/archive/zip/help.d.ts +1 -4
- package/dist/safe-bash/commands/archive/zip/help.js +1 -182
- package/dist/safe-bash/commands/archive/zip/line-endings.d.ts +1 -2
- package/dist/safe-bash/commands/archive/zip/line-endings.js +1 -194
- package/dist/safe-bash/commands/archive/zip/log.d.ts +1 -22
- package/dist/safe-bash/commands/archive/zip/log.js +1 -159
- package/dist/safe-bash/commands/archive/zip/lzma.d.ts +1 -9
- package/dist/safe-bash/commands/archive/zip/lzma.js +1 -40
- package/dist/safe-bash/commands/archive/zip/move.d.ts +1 -11
- package/dist/safe-bash/commands/archive/zip/move.js +1 -59
- package/dist/safe-bash/commands/archive/zip/names.d.ts +1 -2
- package/dist/safe-bash/commands/archive/zip/names.js +1 -33
- package/dist/safe-bash/commands/archive/zip/options.d.ts +1 -13
- package/dist/safe-bash/commands/archive/zip/options.js +1 -124
- package/dist/safe-bash/commands/archive/zip/repair.d.ts +1 -10
- package/dist/safe-bash/commands/archive/zip/repair.js +1 -392
- package/dist/safe-bash/commands/archive/zip/safety.d.ts +1 -54
- package/dist/safe-bash/commands/archive/zip/safety.js +1 -360
- package/dist/safe-bash/commands/archive/zip/sfx.d.ts +1 -4
- package/dist/safe-bash/commands/archive/zip/sfx.js +1 -52
- package/dist/safe-bash/commands/archive/zip/test-command.d.ts +1 -5
- package/dist/safe-bash/commands/archive/zip/test-command.js +1 -101
- package/dist/safe-bash/commands/archive/zip/volumes.d.ts +1 -21
- package/dist/safe-bash/commands/archive/zip/volumes.js +1 -281
- package/dist/safe-bash/commands/archive/zip/zip64.d.ts +1 -30
- package/dist/safe-bash/commands/archive/zip/zip64.js +1 -227
- package/dist/safe-bash/commands/archive/zip-format.d.ts +1 -68
- package/dist/safe-bash/commands/archive/zip-format.js +1 -1075
- package/dist/safe-bash/commands/archive/zip.d.ts +1 -3
- package/dist/safe-bash/commands/archive/zip.js +1 -1523
- package/dist/safe-bash/commands/awk/index.d.ts +2 -0
- package/dist/safe-bash/commands/awk/index.js +2 -0
- package/dist/safe-bash/commands/bytes/compression/index.js +2 -1
- package/dist/safe-bash/commands/curl/index.d.ts +2 -0
- package/dist/safe-bash/commands/curl/index.js +2 -0
- package/dist/safe-bash/commands/diff/index.d.ts +2 -0
- package/dist/safe-bash/commands/diff/index.js +2 -0
- package/dist/safe-bash/commands/diff-patch/diff-format.d.ts +1 -10
- package/dist/safe-bash/commands/diff-patch/diff-format.js +1 -237
- package/dist/safe-bash/commands/diff-patch/diff-options.d.ts +1 -38
- package/dist/safe-bash/commands/diff-patch/diff-options.js +1 -261
- package/dist/safe-bash/commands/diff-patch/diff-output.d.ts +1 -20
- package/dist/safe-bash/commands/diff-patch/diff-output.js +1 -290
- package/dist/safe-bash/commands/diff-patch/diff.d.ts +1 -2
- package/dist/safe-bash/commands/diff-patch/diff.js +1 -656
- package/dist/safe-bash/commands/diff-patch/index.d.ts +4 -5
- package/dist/safe-bash/commands/diff-patch/index.js +8 -333
- package/dist/safe-bash/commands/diff-patch/patch-envelope.d.ts +1 -2
- package/dist/safe-bash/commands/diff-patch/patch-envelope.js +1 -63
- package/dist/safe-bash/commands/diff-patch/patch-formats.d.ts +1 -7
- package/dist/safe-bash/commands/diff-patch/patch-formats.js +1 -264
- package/dist/safe-bash/commands/diff-patch/patch-gnu-paths.d.ts +1 -41
- package/dist/safe-bash/commands/diff-patch/patch-gnu-paths.js +1 -263
- package/dist/safe-bash/commands/diff-patch/patch-gnu-reject.d.ts +1 -3
- package/dist/safe-bash/commands/diff-patch/patch-gnu-reject.js +1 -100
- package/dist/safe-bash/commands/diff-patch/patch-path.d.ts +1 -3
- package/dist/safe-bash/commands/diff-patch/patch-path.js +1 -91
- package/dist/safe-bash/commands/diff-patch/patch-publication.d.ts +1 -13
- package/dist/safe-bash/commands/diff-patch/patch-publication.js +1 -107
- package/dist/safe-bash/commands/diff-patch/patch.d.ts +1 -2
- package/dist/safe-bash/commands/diff-patch/patch.js +1 -653
- package/dist/safe-bash/commands/diff-patch/shared.d.ts +1 -53
- package/dist/safe-bash/commands/diff-patch/shared.js +1 -267
- package/dist/safe-bash/commands/diff-patch/unified.d.ts +1 -52
- package/dist/safe-bash/commands/diff-patch/unified.js +1 -385
- package/dist/safe-bash/commands/directory-admission.d.ts +1 -3
- package/dist/safe-bash/commands/directory-admission.js +1 -26
- package/dist/safe-bash/commands/find/index.d.ts +2 -0
- package/dist/safe-bash/commands/find/index.js +2 -0
- package/dist/safe-bash/commands/find-format.d.ts +1 -20
- package/dist/safe-bash/commands/find-format.js +1 -161
- package/dist/safe-bash/commands/find.d.ts +2 -18
- package/dist/safe-bash/commands/find.js +2 -1236
- package/dist/safe-bash/commands/gzip/index.d.ts +2 -0
- package/dist/safe-bash/commands/gzip/index.js +2 -0
- package/dist/safe-bash/commands/line-endings/index.browser.js +1 -1
- package/dist/safe-bash/commands/line-endings/index.d.ts +1 -1
- package/dist/safe-bash/commands/line-endings/index.js +1 -262
- package/dist/safe-bash/commands/llm/index.browser.js +3 -1
- package/dist/safe-bash/commands/mdq/index.browser.js +2 -2
- package/dist/safe-bash/commands/metadata/chmod.d.ts +1 -4
- package/dist/safe-bash/commands/metadata/chmod.js +2 -63
- package/dist/safe-bash/commands/network/aggregate.d.ts +1 -4
- package/dist/safe-bash/commands/network/aggregate.js +1 -23
- package/dist/safe-bash/commands/network/args.d.ts +1 -68
- package/dist/safe-bash/commands/network/args.js +1 -321
- package/dist/safe-bash/commands/network/authorizer.d.ts +1 -6
- package/dist/safe-bash/commands/network/authorizer.js +1 -33
- package/dist/safe-bash/commands/network/body.d.ts +1 -9
- package/dist/safe-bash/commands/network/body.js +1 -393
- package/dist/safe-bash/commands/network/curl.d.ts +3 -13
- package/dist/safe-bash/commands/network/curl.js +6 -693
- package/dist/safe-bash/commands/network/deadline.d.ts +1 -2
- package/dist/safe-bash/commands/network/deadline.js +1 -14
- package/dist/safe-bash/commands/network/decode.d.ts +1 -2
- package/dist/safe-bash/commands/network/decode.js +1 -79
- package/dist/safe-bash/commands/network/fetch-transport.d.ts +1 -7
- package/dist/safe-bash/commands/network/fetch-transport.js +1 -94
- package/dist/safe-bash/commands/network/form-content-type.d.ts +1 -5
- package/dist/safe-bash/commands/network/form-content-type.js +1 -63
- package/dist/safe-bash/commands/network/form-headers.d.ts +1 -2
- package/dist/safe-bash/commands/network/form-headers.js +1 -35
- package/dist/safe-bash/commands/network/glob.d.ts +1 -7
- package/dist/safe-bash/commands/network/glob.js +1 -134
- package/dist/safe-bash/commands/network/index.browser.js +2 -10
- package/dist/safe-bash/commands/network/input.d.ts +1 -5
- package/dist/safe-bash/commands/network/input.js +1 -276
- package/dist/safe-bash/commands/network/output.d.ts +1 -6
- package/dist/safe-bash/commands/network/output.js +1 -131
- package/dist/safe-bash/commands/network/private-address.d.ts +1 -1
- package/dist/safe-bash/commands/network/private-address.js +1 -44
- package/dist/safe-bash/commands/network/shared.d.ts +1 -14
- package/dist/safe-bash/commands/network/shared.js +1 -71
- package/dist/safe-bash/commands/network/types.d.ts +1 -37
- package/dist/safe-bash/commands/network/types.js +1 -31
- package/dist/safe-bash/commands/network/url.d.ts +1 -2
- package/dist/safe-bash/commands/network/url.js +1 -30
- package/dist/safe-bash/commands/network/wget.d.ts +3 -3
- package/dist/safe-bash/commands/network/wget.js +10 -331
- package/dist/safe-bash/commands/node/index.browser.js +4 -5
- package/dist/safe-bash/commands/node/index.d.ts +3 -3
- package/dist/safe-bash/commands/node/index.js +5 -0
- package/dist/safe-bash/commands/node/safejs.d.ts +3 -3
- package/dist/safe-bash/commands/node/safejs.js +6 -1
- package/dist/safe-bash/commands/node/types.d.ts +1 -1
- package/dist/safe-bash/commands/node/unconfigured.d.ts +3 -0
- package/dist/safe-bash/commands/node/unconfigured.js +10 -0
- package/dist/safe-bash/commands/op/index.browser.js +2 -2
- package/dist/safe-bash/commands/patch/index.d.ts +2 -0
- package/dist/safe-bash/commands/patch/index.js +2 -0
- package/dist/safe-bash/commands/pdfinfo/index.js +2 -1
- package/dist/safe-bash/commands/predicates.js +3 -4
- package/dist/safe-bash/commands/python/index.browser.js +5 -5
- package/dist/safe-bash/commands/python/llm-capability.d.ts +1 -0
- package/dist/safe-bash/commands/python/llm-capability.js +27 -7
- package/dist/safe-bash/commands/python/llm-module.js +11 -0
- package/dist/safe-bash/commands/python/manifest.d.ts +1 -0
- package/dist/safe-bash/commands/python/manifest.js +9 -5
- package/dist/safe-bash/commands/python/provisioning.js +1 -1
- package/dist/safe-bash/commands/regex-execution/matching.js +1 -2
- package/dist/safe-bash/commands/regex-execution/public.browser.js +5 -5
- package/dist/safe-bash/commands/search/index.d.ts +1 -1
- package/dist/safe-bash/commands/search/index.js +1 -347
- package/dist/safe-bash/commands/search/portable.d.ts +2 -2
- package/dist/safe-bash/commands/search/portable.js +3 -2
- package/dist/safe-bash/commands/sed/index.d.ts +2 -0
- package/dist/safe-bash/commands/sed/index.js +2 -0
- package/dist/safe-bash/commands/tar/index.d.ts +2 -0
- package/dist/safe-bash/commands/tar/index.js +2 -0
- package/dist/safe-bash/commands/text-programs/awk-inspection.d.ts +1 -19
- package/dist/safe-bash/commands/text-programs/awk-inspection.js +1 -50
- package/dist/safe-bash/commands/text-programs/awk-pipes.d.ts +2 -0
- package/dist/safe-bash/commands/text-programs/awk-pipes.js +2 -0
- package/dist/safe-bash/commands/text-programs/awk-pretty.d.ts +1 -3
- package/dist/safe-bash/commands/text-programs/awk-pretty.js +1 -197
- package/dist/safe-bash/commands/text-programs/awk-quote.d.ts +1 -2
- package/dist/safe-bash/commands/text-programs/awk-quote.js +1 -15
- package/dist/safe-bash/commands/text-programs/awk-reader.d.ts +1 -42
- package/dist/safe-bash/commands/text-programs/awk-reader.js +1 -449
- package/dist/safe-bash/commands/text-programs/awk-retention.d.ts +1 -13
- package/dist/safe-bash/commands/text-programs/awk-retention.js +1 -51
- package/dist/safe-bash/commands/text-programs/awk-runtime.d.ts +1 -150
- package/dist/safe-bash/commands/text-programs/awk-runtime.js +1 -2627
- package/dist/safe-bash/commands/text-programs/awk-syntax.d.ts +1 -142
- package/dist/safe-bash/commands/text-programs/awk-syntax.js +1 -509
- package/dist/safe-bash/commands/text-programs/awk-values.d.ts +1 -32
- package/dist/safe-bash/commands/text-programs/awk-values.js +1 -386
- package/dist/safe-bash/commands/text-programs/awk.d.ts +1 -3
- package/dist/safe-bash/commands/text-programs/awk.js +1 -361
- package/dist/safe-bash/commands/text-programs/inplace.d.ts +1 -16
- package/dist/safe-bash/commands/text-programs/inplace.js +1 -155
- package/dist/safe-bash/commands/text-programs/sed.d.ts +1 -3
- package/dist/safe-bash/commands/text-programs/sed.js +1 -1647
- package/dist/safe-bash/commands/unzip/index.d.ts +2 -0
- package/dist/safe-bash/commands/unzip/index.js +2 -0
- package/dist/safe-bash/commands/wget/index.d.ts +2 -0
- package/dist/safe-bash/commands/wget/index.js +2 -0
- package/dist/safe-bash/commands/yq/index.browser.js +7 -2
- package/dist/safe-bash/commands/yq/index.d.ts +1 -6
- package/dist/safe-bash/commands/yq/index.js +1 -36
- package/dist/safe-bash/commands/zip/index.d.ts +2 -0
- package/dist/safe-bash/commands/zip/index.js +2 -0
- package/dist/safe-bash/core.browser.js +1 -1
- package/dist/safe-bash/core.d.ts +8 -1
- package/dist/safe-bash/core.js +7 -1
- package/dist/safe-bash/fs/s3/index.d.ts +2 -2
- package/dist/safe-bash/fs/s3/index.js +1 -1
- package/dist/safe-bash/full-core.browser.js +254 -223
- package/dist/safe-bash/jobs.browser.js +2 -2
- package/dist/safe-bash/lazy-mmdc.d.ts +6 -0
- package/dist/safe-bash/lazy-mmdc.js +23 -0
- package/dist/safe-bash/opt-in/commands/yq/mike.js +6 -13
- package/dist/safe-bash/opt-in/commands/yq/native-work.d.ts +1 -0
- package/dist/safe-bash/opt-in/commands/yq/native-work.js +17 -0
- package/dist/safe-bash/optional-host.browser.js +8 -4
- package/dist/safe-bash/optional-host.d.ts +1 -1
- package/dist/safe-bash/optional-host.js +1 -1
- package/dist/safe-bash/playwright/ability-execution.js +3 -2
- package/dist/safe-bash/playwright/adapter.js +1 -1
- package/dist/safe-bash/playwright/controller.js +9 -8
- package/dist/safe-bash/playwright/modal-capabilities.js +2 -1
- package/dist/safe-bash/playwright/native-json-snapshot.js +4 -3
- package/dist/safe-bash/playwright/native-snapshot.js +5 -4
- package/dist/safe-bash/playwright/open-options.js +3 -3
- package/dist/safe-bash/playwright/resource-limit.d.ts +2 -0
- package/dist/safe-bash/playwright/resource-limit.js +4 -0
- package/dist/safe-bash/playwright/session-configuration.js +8 -3
- package/dist/safe-bash/playwright/snapshot.js +8 -7
- package/dist/safe-bash/playwright/standard-capabilities.js +5 -4
- package/dist/safe-bash/plugins/index.browser.js +14 -16
- package/dist/safe-bash/registry-entry.browser.js +14 -16
- package/dist/safe-bash/shell/arrays/bindings.d.ts +3 -5
- package/dist/safe-bash/shell/arrays/bindings.js +6 -2
- package/dist/safe-bash/shell/input.js +16 -14
- package/dist/safe-bash/shell/runtime.d.ts +3 -0
- package/dist/safe-bash/shell/runtime.js +316 -64
- package/dist/safe-bash/shell/types.d.ts +2 -0
- package/dist/safe-bash/shell/value-state.js +17 -2
- package/dist/safe-bash/shell/worker-limits.js +1 -0
- package/dist/safe-bash/shell-entry.browser.js +13 -15
- package/dist/safe-bash/trap.browser.d.ts +3 -0
- package/dist/safe-bash/trap.browser.js +14 -0
- package/dist/safe-bash/worker/host.js +1 -1
- package/dist/safe-bash-command-apply-patch/apply.js +2 -2
- package/dist/safe-bash-command-apply-patch/index.js +3 -3
- package/dist/safe-bash-command-awk/LICENSE +21 -0
- package/dist/safe-bash-command-awk/awk-inspection.d.ts +19 -0
- package/dist/safe-bash-command-awk/awk-inspection.js +9 -0
- package/dist/safe-bash-command-awk/awk-pipes.d.ts +19 -0
- package/dist/safe-bash-command-awk/awk-pipes.js +8 -0
- package/dist/safe-bash-command-awk/awk-pretty.d.ts +3 -0
- package/dist/safe-bash-command-awk/awk-pretty.js +8 -0
- package/dist/safe-bash-command-awk/awk-quote.d.ts +2 -0
- package/dist/safe-bash-command-awk/awk-quote.js +7 -0
- package/dist/safe-bash-command-awk/awk-reader.d.ts +42 -0
- package/dist/safe-bash-command-awk/awk-reader.js +9 -0
- package/dist/safe-bash-command-awk/awk-retention.d.ts +13 -0
- package/dist/safe-bash-command-awk/awk-retention.js +7 -0
- package/dist/safe-bash-command-awk/awk-runtime.d.ts +151 -0
- package/dist/safe-bash-command-awk/awk-runtime.js +11 -0
- package/dist/safe-bash-command-awk/awk-syntax.d.ts +144 -0
- package/dist/safe-bash-command-awk/awk-syntax.js +14 -0
- package/dist/safe-bash-command-awk/awk-values.d.ts +32 -0
- package/dist/safe-bash-command-awk/awk-values.js +35 -0
- package/dist/safe-bash-command-awk/awk.d.ts +3 -0
- package/dist/safe-bash-command-awk/awk.js +16 -0
- package/dist/safe-bash-command-awk/index.d.ts +7 -0
- package/dist/safe-bash-command-awk/index.js +36 -0
- package/dist/safe-bash-command-bc/index.d.ts +4 -0
- package/dist/safe-bash-command-bc/index.js +15 -176
- package/dist/safe-bash-command-column/column.js +3 -3
- package/dist/safe-bash-command-column/index.js +3 -3
- package/dist/safe-bash-command-column/layout.js +2 -2
- package/dist/safe-bash-command-csplit/command.js +2 -2
- package/dist/safe-bash-command-csplit/index.js +2 -2
- package/dist/safe-bash-command-csvkit/contracts.d.ts +1 -0
- package/dist/safe-bash-command-csvkit/csvpy-interpreter.d.ts +2 -1
- package/dist/safe-bash-command-csvkit/default-csvpy.d.ts +11 -0
- package/dist/safe-bash-command-csvkit/errors.js +22 -0
- package/dist/safe-bash-command-csvkit/index.d.ts +1 -0
- package/dist/safe-bash-command-csvkit/index.js +172 -4
- package/dist/safe-bash-command-csvkit/python-worker-browser.d.ts +3 -0
- package/dist/safe-bash-command-csvkit/python-worker-browser.js +16 -0
- package/dist/safe-bash-command-csvkit/python-worker-contract.d.ts +20 -0
- package/dist/safe-bash-command-csvkit/python-worker-node.d.ts +3 -0
- package/dist/safe-bash-command-csvkit/python-worker-node.js +9 -0
- package/dist/safe-bash-command-csvkit/runtime.d.ts +1 -0
- package/dist/safe-bash-command-curl/LICENSE +21 -0
- package/dist/safe-bash-command-curl/curl.d.ts +13 -0
- package/dist/safe-bash-command-curl/curl.js +9 -0
- package/dist/safe-bash-command-curl/index.d.ts +6 -0
- package/dist/safe-bash-command-curl/index.js +26 -0
- package/dist/safe-bash-command-diff/LICENSE +21 -0
- package/dist/safe-bash-command-diff/diff-format.d.ts +10 -0
- package/dist/safe-bash-command-diff/diff-format.js +10 -0
- package/dist/safe-bash-command-diff/diff-options.d.ts +38 -0
- package/dist/safe-bash-command-diff/diff-options.js +7 -0
- package/dist/safe-bash-command-diff/diff-output.d.ts +20 -0
- package/dist/safe-bash-command-diff/diff-output.js +19 -0
- package/dist/safe-bash-command-diff/diff.d.ts +2 -0
- package/dist/safe-bash-command-diff/diff.js +10 -0
- package/dist/safe-bash-command-diff/index.d.ts +8 -0
- package/dist/safe-bash-command-diff/index.js +34 -0
- package/dist/safe-bash-command-diff/sync.d.ts +2 -0
- package/dist/safe-bash-command-diff/sync.js +9 -0
- package/dist/safe-bash-command-diff3/index.js +5 -5
- package/dist/safe-bash-command-docx/index.d.ts +4 -4
- package/dist/safe-bash-command-docx/index.js +12 -5
- package/dist/safe-bash-command-dos2unix/index.d.ts +1 -0
- package/dist/safe-bash-command-dos2unix/index.js +225 -1
- package/dist/safe-bash-command-dos2unix/sync.d.ts +1 -0
- package/dist/safe-bash-command-exiftool/index.js +2 -2
- package/dist/safe-bash-command-factor/command.js +2 -2
- package/dist/safe-bash-command-factor/index.js +2 -2
- package/dist/safe-bash-command-ffmpeg/index.js +86 -94
- package/dist/safe-bash-command-file/index.js +3 -3
- package/dist/safe-bash-command-find/LICENSE +21 -0
- package/dist/safe-bash-command-find/find-format.d.ts +20 -0
- package/dist/safe-bash-command-find/find-format.js +9 -0
- package/dist/safe-bash-command-find/find.d.ts +18 -0
- package/dist/safe-bash-command-find/find.js +10 -0
- package/dist/safe-bash-command-find/index.d.ts +13 -0
- package/dist/safe-bash-command-find/index.js +45 -0
- package/dist/safe-bash-command-fmt/index.js +7 -4
- package/dist/safe-bash-command-git/git_rust.wasm +0 -0
- package/dist/safe-bash-command-git/index.js +5 -7
- package/dist/safe-bash-command-git/wasm.generated.js +1 -1
- package/dist/safe-bash-command-gzip/LICENSE +21 -0
- package/dist/safe-bash-command-gzip/index.d.ts +11 -0
- package/dist/safe-bash-command-gzip/index.js +94 -0
- package/dist/safe-bash-command-html-to-markdown/index.js +5 -5
- package/dist/safe-bash-command-htmlq/index.js +12 -8
- package/dist/safe-bash-command-imagemagick/index.js +22 -30
- package/dist/safe-bash-command-jq/index.js +1 -1
- package/dist/safe-bash-command-jq/jq.js +1 -1
- package/dist/safe-bash-command-llm/command.js +1 -1
- package/dist/safe-bash-command-llm/index.d.ts +1 -0
- package/dist/safe-bash-command-llm/index.js +16 -14
- package/dist/safe-bash-command-llm/openai.js +3 -3
- package/dist/safe-bash-command-llm/providers/index.js +3 -3
- package/dist/safe-bash-command-llm/providers/openai.js +3 -3
- package/dist/safe-bash-command-llm/stored-schema.d.ts +10 -0
- package/dist/safe-bash-command-mmdc/index.js +13 -604
- package/dist/safe-bash-command-mmdc/settings.d.ts +2 -0
- package/dist/safe-bash-command-mmdc/settings.js +7 -0
- package/dist/safe-bash-command-pandoc/command.js +4 -3
- package/dist/safe-bash-command-pandoc/defaults.d.ts +1 -0
- package/dist/safe-bash-command-pandoc/index.js +4 -3
- package/dist/safe-bash-command-pandoc/lua-filters.js +1 -1
- package/dist/safe-bash-command-pandoc/types.d.ts +3 -1
- package/dist/safe-bash-command-patch/LICENSE +21 -0
- package/dist/safe-bash-command-patch/index.d.ts +8 -0
- package/dist/safe-bash-command-patch/index.js +38 -0
- package/dist/safe-bash-command-patch/patch-envelope.d.ts +2 -0
- package/dist/safe-bash-command-patch/patch-envelope.js +7 -0
- package/dist/safe-bash-command-patch/patch-formats.d.ts +7 -0
- package/dist/safe-bash-command-patch/patch-formats.js +9 -0
- package/dist/safe-bash-command-patch/patch-gnu-paths.d.ts +41 -0
- package/dist/safe-bash-command-patch/patch-gnu-paths.js +26 -0
- package/dist/safe-bash-command-patch/patch-gnu-reject.d.ts +3 -0
- package/dist/safe-bash-command-patch/patch-gnu-reject.js +7 -0
- package/dist/safe-bash-command-patch/patch-path.d.ts +3 -0
- package/dist/safe-bash-command-patch/patch-path.js +11 -0
- package/dist/safe-bash-command-patch/patch-publication.d.ts +13 -0
- package/dist/safe-bash-command-patch/patch-publication.js +7 -0
- package/dist/safe-bash-command-patch/patch.d.ts +2 -0
- package/dist/safe-bash-command-patch/patch.js +14 -0
- package/dist/safe-bash-command-patch/sync.d.ts +2 -0
- package/dist/safe-bash-command-patch/sync.js +7 -0
- package/dist/safe-bash-command-patch/unified.d.ts +52 -0
- package/dist/safe-bash-command-patch/unified.js +16 -0
- package/dist/safe-bash-command-pdfimages/index.js +37 -16
- package/dist/safe-bash-command-pdfinfo/index.d.ts +0 -23
- package/dist/safe-bash-command-pdfinfo/index.js +20 -772
- package/dist/safe-bash-command-pdftk/index.js +37 -9
- package/dist/safe-bash-command-pdftoppm/index.js +50 -20
- package/dist/safe-bash-command-pdftotext/index.js +10 -2
- package/dist/safe-bash-command-pptx/index.d.ts +4 -4
- package/dist/safe-bash-command-pptx/index.js +11 -5
- package/dist/safe-bash-command-pr/command.js +2 -2
- package/dist/safe-bash-command-pr/index.js +4 -4
- package/dist/safe-bash-command-qpdf/index.js +26 -13
- package/dist/safe-bash-command-rg/index.d.ts +1 -0
- package/dist/safe-bash-command-rg/index.js +222 -1
- package/dist/safe-bash-command-rg/rg-command.js +1 -1
- package/dist/safe-bash-command-rg/sync.d.ts +1 -0
- package/dist/safe-bash-command-sed/LICENSE +21 -0
- package/dist/safe-bash-command-sed/index.d.ts +7 -0
- package/dist/safe-bash-command-sed/index.js +28 -0
- package/dist/safe-bash-command-sed/inplace.d.ts +16 -0
- package/dist/safe-bash-command-sed/inplace.js +9 -0
- package/dist/safe-bash-command-sed/sed.d.ts +3 -0
- package/dist/safe-bash-command-sed/sed.js +8 -0
- package/dist/safe-bash-command-sips/index.js +111 -35
- package/dist/safe-bash-command-soffice/index.js +4 -4
- package/dist/safe-bash-command-sqlite3/engine.d.ts +1 -2
- package/dist/safe-bash-command-sqlite3/index.js +152 -452
- package/dist/safe-bash-command-ssconvert/commands.js +1 -1
- package/dist/safe-bash-command-ssconvert/formats/ods.js +2 -2
- package/dist/safe-bash-command-ssconvert/formats/xlsx.js +3 -3
- package/dist/safe-bash-command-ssconvert/index.js +5 -5
- package/dist/safe-bash-command-tar/LICENSE +21 -0
- package/dist/safe-bash-command-tar/create.d.ts +17 -0
- package/dist/safe-bash-command-tar/create.js +14 -0
- package/dist/safe-bash-command-tar/extract.d.ts +11 -0
- package/dist/safe-bash-command-tar/extract.js +14 -0
- package/dist/safe-bash-command-tar/format.d.ts +32 -0
- package/dist/safe-bash-command-tar/format.js +19 -0
- package/dist/safe-bash-command-tar/index.d.ts +8 -0
- package/dist/safe-bash-command-tar/index.js +550 -0
- package/dist/safe-bash-command-tar/listing.d.ts +2 -0
- package/dist/safe-bash-command-tar/listing.js +7 -0
- package/dist/safe-bash-command-tar/modes.d.ts +5 -0
- package/dist/safe-bash-command-tar/modes.js +16 -0
- package/dist/safe-bash-command-tar/options.d.ts +53 -0
- package/dist/safe-bash-command-tar/options.js +10 -0
- package/dist/safe-bash-command-tar/stream.d.ts +22 -0
- package/dist/safe-bash-command-tar/stream.js +15 -0
- package/dist/safe-bash-command-tar/transform.d.ts +16 -0
- package/dist/safe-bash-command-tar/transform.js +9 -0
- package/dist/safe-bash-command-unzip/LICENSE +21 -0
- package/dist/safe-bash-command-unzip/index.d.ts +7 -0
- package/dist/safe-bash-command-unzip/index.js +39 -0
- package/dist/safe-bash-command-unzip/sync.d.ts +3 -0
- package/dist/safe-bash-command-unzip/sync.js +9 -0
- package/dist/safe-bash-command-unzip/unzip/safety.d.ts +32 -0
- package/dist/safe-bash-command-unzip/unzip/safety.js +7 -0
- package/dist/safe-bash-command-unzip/unzip.d.ts +3 -0
- package/dist/safe-bash-command-unzip/unzip.js +8 -0
- package/dist/safe-bash-command-wget/LICENSE +21 -0
- package/dist/safe-bash-command-wget/index.d.ts +6 -0
- package/dist/safe-bash-command-wget/index.js +26 -0
- package/dist/safe-bash-command-wget/wget.d.ts +3 -0
- package/dist/safe-bash-command-wget/wget.js +7 -0
- package/dist/safe-bash-command-xan/argv.d.ts +4 -1
- package/dist/safe-bash-command-xan/argv.js +1 -1
- package/dist/safe-bash-command-xan/commands.js +4 -3
- package/dist/safe-bash-command-xan/index.js +15 -14
- package/dist/safe-bash-command-xan/io.js +2 -2
- package/dist/safe-bash-command-xmllint/index.js +189 -49
- package/dist/safe-bash-command-xz/index.js +3 -2
- package/dist/safe-bash-command-xz/options.d.ts +9 -1
- package/dist/safe-bash-command-xz/options.js +3 -1
- package/dist/safe-bash-command-yq/index.d.ts +4 -11
- package/dist/safe-bash-command-yq/index.js +3367 -670
- package/dist/safe-bash-command-yq/mike.js +6 -13
- package/dist/safe-bash-command-yq/native-work.d.ts +1 -0
- package/dist/safe-bash-command-yq/native-work.js +17 -0
- package/dist/safe-bash-command-yq/query.d.ts +11 -0
- package/dist/safe-bash-command-yq/query.js +735 -0
- package/dist/safe-bash-command-zip/LICENSE +21 -0
- package/dist/safe-bash-command-zip/index.d.ts +7 -0
- package/dist/safe-bash-command-zip/index.js +38 -0
- package/dist/safe-bash-command-zip/sync.d.ts +3 -0
- package/dist/safe-bash-command-zip/sync.js +9 -0
- package/dist/safe-bash-command-zip/zip.d.ts +3 -0
- package/dist/safe-bash-command-zip/zip.js +7 -0
- package/dist/safe-bash-compression-engine/files.js +4 -4
- package/dist/safe-bash-compression-engine/index.js +2 -2
- package/dist/safe-bash-compression-engine/operand.js +6 -6
- package/dist/safe-bash-compression-engine/stream.js +2 -2
- package/dist/safe-bash-compression-engine/zstd-decode.js +1 -1
- package/dist/safe-bash-contracts/command.js +1 -1
- package/dist/safe-bash-contracts/diagnostics.js +4 -4
- package/dist/safe-bash-contracts/escaping.js +11 -11
- package/dist/safe-bash-contracts/filesystem-descriptor.js +1 -1
- package/dist/safe-bash-contracts/filesystem-output.js +8 -8
- package/dist/safe-bash-contracts/index.js +34 -34
- package/dist/safe-bash-contracts/io.js +2 -2
- package/dist/safe-bash-contracts/output.js +3 -3
- package/dist/safe-bash-diff-engine/LICENSE +21 -0
- package/dist/safe-bash-diff-engine/index.d.ts +1 -0
- package/dist/safe-bash-diff-engine/index.js +24 -0
- package/dist/safe-bash-diff-engine/shared.d.ts +53 -0
- package/dist/safe-bash-diff-engine/shared.js +19 -0
- package/dist/safe-bash-io-engine/commands/directory-admission.d.ts +3 -0
- package/dist/safe-bash-io-engine/commands/directory-admission.js +34 -0
- package/dist/safe-bash-io-engine/commands/mode-change.d.ts +4 -0
- package/dist/safe-bash-io-engine/commands/mode-change.js +60 -0
- package/dist/safe-bash-io-engine/commands/text-programs/shared.js +20 -31
- package/dist/safe-bash-io-engine/shell/pattern.js +7 -12
- package/dist/safe-bash-markdown-engine/commonmark-blocks.js +4 -4
- package/dist/safe-bash-markdown-engine/commonmark-inlines.js +4 -4
- package/dist/safe-bash-markdown-engine/commonmark-syntax.js +2 -2
- package/dist/safe-bash-markdown-engine/gfm-syntax.js +3 -3
- package/dist/safe-bash-markdown-engine/index.js +7 -7
- package/dist/safe-bash-mcp/index.browser.d.ts +6 -0
- package/dist/safe-bash-mcp/index.browser.js +1 -0
- package/dist/safe-bash-mcp/index.d.ts +12 -0
- package/dist/safe-bash-mcp/index.js +1558 -36
- package/dist/safe-bash-network-engine/LICENSE +21 -0
- package/dist/safe-bash-network-engine/aggregate.d.ts +4 -0
- package/dist/safe-bash-network-engine/aggregate.js +37 -0
- package/dist/safe-bash-network-engine/args.d.ts +68 -0
- package/dist/safe-bash-network-engine/args.js +19 -0
- package/dist/safe-bash-network-engine/authorizer.d.ts +6 -0
- package/dist/safe-bash-network-engine/authorizer.js +8 -0
- package/dist/safe-bash-network-engine/body.d.ts +9 -0
- package/dist/safe-bash-network-engine/body.js +374 -0
- package/dist/safe-bash-network-engine/deadline.d.ts +2 -0
- package/dist/safe-bash-network-engine/deadline.js +7 -0
- package/dist/safe-bash-network-engine/decode.d.ts +2 -0
- package/dist/safe-bash-network-engine/decode.js +81 -0
- package/dist/safe-bash-network-engine/fetch-transport.d.ts +7 -0
- package/dist/safe-bash-network-engine/fetch-transport.js +9 -0
- package/dist/safe-bash-network-engine/form-content-type.d.ts +5 -0
- package/dist/safe-bash-network-engine/form-content-type.js +8 -0
- package/dist/safe-bash-network-engine/form-headers.d.ts +2 -0
- package/dist/safe-bash-network-engine/form-headers.js +10 -0
- package/dist/safe-bash-network-engine/glob.d.ts +7 -0
- package/dist/safe-bash-network-engine/glob.js +124 -0
- package/dist/safe-bash-network-engine/index.d.ts +3 -0
- package/dist/safe-bash-network-engine/index.js +26 -0
- package/dist/safe-bash-network-engine/input.d.ts +5 -0
- package/dist/safe-bash-network-engine/input.js +255 -0
- package/dist/safe-bash-network-engine/output.d.ts +6 -0
- package/dist/safe-bash-network-engine/output.js +132 -0
- package/dist/safe-bash-network-engine/platform-portable.d.ts +5 -0
- package/dist/safe-bash-network-engine/platform-portable.js +19 -0
- package/dist/safe-bash-network-engine/private-address.d.ts +1 -0
- package/dist/safe-bash-network-engine/private-address.js +7 -0
- package/dist/safe-bash-network-engine/shared.d.ts +14 -0
- package/dist/safe-bash-network-engine/shared.js +23 -0
- package/dist/safe-bash-network-engine/types.d.ts +37 -0
- package/dist/safe-bash-network-engine/types.js +11 -0
- package/dist/safe-bash-network-engine/url.d.ts +2 -0
- package/dist/safe-bash-network-engine/url.js +8 -0
- package/dist/safe-bash-query-engine/capture.d.ts +1 -0
- package/dist/safe-bash-query-engine/capture.js +9 -7
- package/dist/safe-bash-query-engine/dates.d.ts +5 -1
- package/dist/safe-bash-query-engine/dates.js +10 -2
- package/dist/safe-bash-query-engine/delpaths.js +5 -5
- package/dist/safe-bash-query-engine/formats.js +3 -3
- package/dist/safe-bash-query-engine/index.js +15 -15
- package/dist/safe-bash-query-engine/indices.js +5 -5
- package/dist/safe-bash-query-engine/input.d.ts +1 -2
- package/dist/safe-bash-query-engine/input.js +2 -4
- package/dist/safe-bash-query-engine/interpreter.d.ts +5 -0
- package/dist/safe-bash-query-engine/interpreter.js +13 -13
- package/dist/safe-bash-query-engine/limits.js +1 -1
- package/dist/safe-bash-query-engine/parser.d.ts +8 -1
- package/dist/safe-bash-query-engine/parser.js +2 -2
- package/dist/safe-bash-query-engine/query-core.js +15 -15
- package/dist/safe-bash-query-engine/recurse.js +2 -2
- package/dist/safe-bash-query-engine/regex.d.ts +4 -2
- package/dist/safe-bash-query-engine/regex.js +10 -5
- package/dist/safe-bash-query-engine/split.js +2 -2
- package/dist/safe-bash-query-engine/splits.d.ts +1 -1
- package/dist/safe-bash-query-engine/splits.js +7 -6
- package/dist/safe-bash-query-engine/values.js +4 -4
- package/dist/safe-bash-regex-engine/ere/matcher.js +4 -4
- package/dist/safe-bash-regex-engine/index.js +2 -2
- package/dist/safe-bash-regex-engine/text/regex.d.ts +1 -0
- package/dist/safe-bash-regex-engine/text/regex.js +2 -2
- package/dist/safe-bash-search-engine/ergonomic-regex.d.ts +12 -2
- package/dist/safe-bash-search-engine/ergonomic-regex.js +2 -2
- package/dist/safe-bash-search-engine/glob.js +2 -2
- package/dist/safe-bash-search-engine/grep.js +2 -2
- package/dist/safe-bash-search-engine/matcher.d.ts +6 -2
- package/dist/safe-bash-search-engine/matcher.js +30 -8
- package/dist/safe-bash-search-engine/options.js +1 -1
- package/dist/safe-bash-search-engine/output.d.ts +3 -2
- package/dist/safe-bash-search-engine/output.js +111 -30
- package/dist/safe-bash-search-engine/shared.d.ts +2 -0
- package/dist/safe-bash-search-engine/shared.js +2 -2
- package/dist/safe-bash-search-engine/walk.js +11 -10
- package/dist/safe-bash-xml-engine/document.d.ts +1 -1
- package/dist/safe-bash-xml-engine/document.js +3 -3
- package/dist/safe-bash-xml-engine/evaluate.d.ts +1 -0
- package/dist/safe-bash-xml-engine/evaluate.js +4 -1
- package/dist/safe-bash-xml-engine/index.js +8 -6
- package/dist/safe-bash-xml-engine/io.js +1 -1
- package/dist/safe-bash-xml-engine/limits.d.ts +2 -0
- package/dist/safe-bash-xml-engine/limits.js +1 -1
- package/dist/safe-bash-xml-engine/predicate.d.ts +57 -0
- package/dist/safe-bash-xml-engine/query.d.ts +3 -15
- package/dist/safe-bash-xml-engine/query.js +3 -2
- package/dist/safe-bash-zip-engine/LICENSE +21 -0
- package/dist/safe-bash-zip-engine/index.d.ts +1 -0
- package/dist/safe-bash-zip-engine/index.js +32 -0
- package/dist/safe-bash-zip-engine/unzip/arguments.d.ts +53 -0
- package/dist/safe-bash-zip-engine/unzip/arguments.js +270 -0
- package/dist/safe-bash-zip-engine/zip/aes.d.ts +17 -0
- package/dist/safe-bash-zip-engine/zip/aes.js +15 -0
- package/dist/safe-bash-zip-engine/zip/comments.d.ts +17 -0
- package/dist/safe-bash-zip-engine/zip/comments.js +77 -0
- package/dist/safe-bash-zip-engine/zip/crc.d.ts +1 -0
- package/dist/safe-bash-zip-engine/zip/crc.js +7 -0
- package/dist/safe-bash-zip-engine/zip/crypto.d.ts +19 -0
- package/dist/safe-bash-zip-engine/zip/crypto.js +16 -0
- package/dist/safe-bash-zip-engine/zip/dates.d.ts +4 -0
- package/dist/safe-bash-zip-engine/zip/dates.js +68 -0
- package/dist/safe-bash-zip-engine/zip/environment.d.ts +2 -0
- package/dist/safe-bash-zip-engine/zip/environment.js +60 -0
- package/dist/safe-bash-zip-engine/zip/grow.d.ts +3 -0
- package/dist/safe-bash-zip-engine/zip/grow.js +7 -0
- package/dist/safe-bash-zip-engine/zip/help.d.ts +4 -0
- package/dist/safe-bash-zip-engine/zip/help.js +194 -0
- package/dist/safe-bash-zip-engine/zip/line-endings.d.ts +2 -0
- package/dist/safe-bash-zip-engine/zip/line-endings.js +165 -0
- package/dist/safe-bash-zip-engine/zip/log.d.ts +22 -0
- package/dist/safe-bash-zip-engine/zip/log.js +153 -0
- package/dist/safe-bash-zip-engine/zip/lzma.d.ts +9 -0
- package/dist/safe-bash-zip-engine/zip/lzma.js +7 -0
- package/dist/safe-bash-zip-engine/zip/move.d.ts +11 -0
- package/dist/safe-bash-zip-engine/zip/move.js +57 -0
- package/dist/safe-bash-zip-engine/zip/names.d.ts +2 -0
- package/dist/safe-bash-zip-engine/zip/names.js +37 -0
- package/dist/safe-bash-zip-engine/zip/options.d.ts +13 -0
- package/dist/safe-bash-zip-engine/zip/options.js +23 -0
- package/dist/safe-bash-zip-engine/zip/repair.d.ts +10 -0
- package/dist/safe-bash-zip-engine/zip/repair.js +348 -0
- package/dist/safe-bash-zip-engine/zip/safety.d.ts +54 -0
- package/dist/safe-bash-zip-engine/zip/safety.js +19 -0
- package/dist/safe-bash-zip-engine/zip/sfx.d.ts +4 -0
- package/dist/safe-bash-zip-engine/zip/sfx.js +58 -0
- package/dist/safe-bash-zip-engine/zip/test-command.d.ts +5 -0
- package/dist/safe-bash-zip-engine/zip/test-command.js +98 -0
- package/dist/safe-bash-zip-engine/zip/volumes.d.ts +21 -0
- package/dist/safe-bash-zip-engine/zip/volumes.js +255 -0
- package/dist/safe-bash-zip-engine/zip/zip64.d.ts +30 -0
- package/dist/safe-bash-zip-engine/zip/zip64.js +25 -0
- package/dist/safe-bash-zip-engine/zip-format.d.ts +68 -0
- package/dist/safe-bash-zip-engine/zip-format.js +27 -0
- package/dist/safe-playwright-cloudflare/browser-codegen.generated.d.ts +7 -7
- package/dist/safe-playwright-cloudflare/browser-codegen.generated.js +866 -8069
- package/dist/safe-playwright-cloudflare/browser-run-code-budget.d.ts +0 -1
- package/dist/safe-playwright-cloudflare/browser-run-code-budget.js +0 -2
- package/dist/safe-playwright-cloudflare/browser-trace-archive.d.ts +5 -1
- package/dist/safe-playwright-cloudflare/browser-trace-archive.js +2 -1
- package/dist/safe-playwright-cloudflare/browser-trace-budget.js +2 -2
- package/dist/safe-playwright-cloudflare/shell-browser-resource.d.ts +2 -0
- package/dist/safe-playwright-cloudflare/shell-browser-resource.js +3 -11
- package/dist/safe-playwright-cloudflare/shell-playwright.d.ts +2 -0
- package/dist/safe-playwright-cloudflare/shell-playwright.js +1 -1
- package/dist/spreadsheet-engine/io/publication.d.ts +1 -0
- package/package.json +163 -14
- package/dist/safe-bash/chunks/chunk-AZAJJVFX.js +0 -23017
- package/dist/safe-bash/chunks/chunk-O4ZUCRGN.js +0 -13
- package/dist/safe-bash/chunks/chunk-S264DZO2.js +0 -243
- package/dist/safe-bash/chunks/chunk-WVG5SHHQ.js +0 -12
- package/dist/safe-bash/chunks/chunk-ZW6K2J7P.js +0 -2652
- package/dist/safe-bash/command-chunks/chunk-5MPOQ6V3.js +0 -181
- package/dist/safe-bash/command-chunks/chunk-BIXLZ3OG.js +0 -14342
- package/dist/safe-bash/command-chunks/chunk-DUYJE2HY.js +0 -14
- package/dist/safe-bash/command-chunks/chunk-NETECMOF.js +0 -40
- package/dist/safe-bash/command-chunks/chunk-XS3PGJU2.js +0 -343
- package/dist/safe-bash/command-chunks/chunk-XTZALMLR.js +0 -488
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts +0 -2
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js +0 -3
- package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts +0 -2
- package/dist/safe-bash/commands/archive/zip/aes-primitives.js +0 -3
- package/dist/safe-bash/commands/xml/document.d.ts +0 -2
- package/dist/safe-bash/commands/xml/document.js +0 -2
- package/dist/safe-bash/commands/xml/evaluate.d.ts +0 -2
- package/dist/safe-bash/commands/xml/evaluate.js +0 -2
- package/dist/safe-bash/commands/xml/json.d.ts +0 -2
- package/dist/safe-bash/commands/xml/json.js +0 -2
- package/dist/safe-bash/commands/xml/limits.d.ts +0 -2
- package/dist/safe-bash/commands/xml/limits.js +0 -2
- package/dist/safe-bash/commands/xml/query.d.ts +0 -2
- package/dist/safe-bash/commands/xml/query.js +0 -2
- package/dist/safe-bash/chunks/{chunk-NHOXKQNE.js → chunk-QVSRRNZT.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-FIUFIDAO.js → chunk-2JRBIDAD.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-B5BKA5WH.js → chunk-B5TAOCKD.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-TYVCKQDH.js → chunk-J5SN3PZ3.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-2ENZ6JGA.js → chunk-KEV7C3KH.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-S62HELHU.js → chunk-PL6O4K6W.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-2WRTLCGK.js → chunk-QZF3SINC.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-X7TM3AKW.js → chunk-U6G67N23.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-DDLQ5YDB.js → chunk-YHFXOX6U.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-DQMOM72Z.js → chunk-ZRRBXU3M.js} +4 -4
|
@@ -133,6 +133,7 @@ function hasActiveExtensions(state) {
|
|
|
133
133
|
}
|
|
134
134
|
const memberPatternOperators = ["#", "##", "%", "%%", "/", "//", "/#", "/%", "^", "^^", ",", ",,"];
|
|
135
135
|
const defaultParameterOperators = ["-", "+", "=", "?", ":-", ":+", ":=", ":?"];
|
|
136
|
+
const printfSlowTargets = new Set([...controlNames, "FUNCNAME", "RANDOM", "SECONDS", "PIPESTATUS", "_"]);
|
|
136
137
|
async function signedLong(argument, budget, signal) {
|
|
137
138
|
const checkpoint = async () => {
|
|
138
139
|
budget.cpuCheckpoint();
|
|
@@ -184,6 +185,7 @@ export const defaultLimits = {
|
|
|
184
185
|
maxPipelineStages: Infinity,
|
|
185
186
|
maxLoopIterations: Infinity,
|
|
186
187
|
maxSubstitutionDepth: Infinity,
|
|
188
|
+
maxFunctionDepth: Infinity,
|
|
187
189
|
maxSourceBytes: Infinity,
|
|
188
190
|
maxExpansionFields: Infinity,
|
|
189
191
|
maxExpansionBytes: Infinity,
|
|
@@ -2088,7 +2090,7 @@ async function cloneState(state, signal, scope, inheritLocals = true) {
|
|
|
2088
2090
|
const token = await textToken(savedOwner, name, signal);
|
|
2089
2091
|
const admission = savedOwner.reserve({ slots: 1, metadata: 32, work: 5 });
|
|
2090
2092
|
binding = typed.binding?.retain();
|
|
2091
|
-
typedSavedVariables.set(copied, { owner: savedOwner, binding, tickets, prepared: { name: token, admission }, watch, scalarLegacy: typed.scalarLegacy });
|
|
2093
|
+
typedSavedVariables.set(copied, { owner: savedOwner, binding, tickets, prepared: { ...typed.prepared, name: token, admission }, watch, scalarLegacy: typed.scalarLegacy });
|
|
2092
2094
|
tickets.cleanup = () => {
|
|
2093
2095
|
if (typedSavedVariables.delete(copied) && scope)
|
|
2094
2096
|
releaseBinding = scope.cleanup(async () => { await binding?.release(); });
|
|
@@ -3541,6 +3543,10 @@ function resolveSimpleArithOperand(tok, rawState, monitor, activeArrayStore, syn
|
|
|
3541
3543
|
return Number(elemVal);
|
|
3542
3544
|
}
|
|
3543
3545
|
tok = resolveSyncNameref(rawState, tok);
|
|
3546
|
+
// These values come from execution context or lazy shell bindings, not raw variables.
|
|
3547
|
+
// Decline after resolving namerefs so aliases use the same full evaluator.
|
|
3548
|
+
if (tok === "LINENO" || tok === "_" || tok === "FUNCNAME" || tok === "PIPESTATUS")
|
|
3549
|
+
return undefined;
|
|
3544
3550
|
if (rawState.nounset || activeArrayStore?.bindings.has(tok) || monitor?.hasOverlay(tok) || activeArrayStore?.watches.has(tok))
|
|
3545
3551
|
return undefined;
|
|
3546
3552
|
const raw = rawState.variables[tok];
|
|
@@ -3737,6 +3743,7 @@ export class Runtime {
|
|
|
3737
3743
|
_syncPendingEvalResume;
|
|
3738
3744
|
_syncReadOnlyArithRefs;
|
|
3739
3745
|
_activeSyncLoopAssignedVars;
|
|
3746
|
+
_activeSyncArrayLoopWords;
|
|
3740
3747
|
_activeSyncLoopHasFileMutations = false;
|
|
3741
3748
|
_inSyncLoopPreflight = false;
|
|
3742
3749
|
_activeSyncLoopIO;
|
|
@@ -4543,16 +4550,18 @@ export class Runtime {
|
|
|
4543
4550
|
const rawSub = this._syncArithRawVars[subVar];
|
|
4544
4551
|
if (typeof rawSub !== "string" || rawSub.length === 0)
|
|
4545
4552
|
throw new ArrayFailure("empty var subscript in sync arithmetic");
|
|
4546
|
-
resolvedSub =
|
|
4553
|
+
resolvedSub = this._syncArithRawWriteOnly && this._syncArithTouched?.has(subVar)
|
|
4554
|
+
? rawSub
|
|
4555
|
+
: shellValueText(stateMonitor(st)?.values.get(subVar, rawSub) ?? rawSub);
|
|
4547
4556
|
}
|
|
4548
4557
|
else if (/^[a-zA-Z_][a-zA-Z_0-9]*$/.test(resolvedSub)) {
|
|
4549
4558
|
const st = this._syncArithState;
|
|
4550
4559
|
const binding = arrayStore(st)?.get(variable);
|
|
4551
4560
|
if (!binding || !binding.associative) {
|
|
4552
|
-
|
|
4561
|
+
const index = resolveSimpleArithOperand(resolvedSub, st, stateMonitor(st), arrayStore(st), this._syncArithRawWriteOnly ? this._syncArithTouched : undefined);
|
|
4562
|
+
if (index === undefined)
|
|
4553
4563
|
throw new ArrayFailure("complex indexed ident subscript in sync arithmetic");
|
|
4554
|
-
|
|
4555
|
-
resolvedSub = rawSub === undefined || rawSub === "" ? "0" : shellValueText(stateMonitor(st)?.values.get(resolvedSub, rawSub) ?? rawSub);
|
|
4564
|
+
resolvedSub = String(index);
|
|
4556
4565
|
}
|
|
4557
4566
|
}
|
|
4558
4567
|
else {
|
|
@@ -5062,6 +5071,8 @@ export class Runtime {
|
|
|
5062
5071
|
return binding.get(binding.associative ? binding.keys.get("30")?.index ?? -1 : 0);
|
|
5063
5072
|
if (name === "DIRSTACK")
|
|
5064
5073
|
return state.cwd;
|
|
5074
|
+
if (name === "BASH_SUBSHELL")
|
|
5075
|
+
return state.variables.BASH_SUBSHELL ?? "0";
|
|
5065
5076
|
if (name === "FUNCNAME" && state.variables.FUNCNAME === undefined)
|
|
5066
5077
|
return state.functionNames?.[0];
|
|
5067
5078
|
if (name === "_" && state.variables._ === undefined)
|
|
@@ -5193,7 +5204,7 @@ export class Runtime {
|
|
|
5193
5204
|
if (!watch.valid())
|
|
5194
5205
|
throw new ArrayFailure("stale binding");
|
|
5195
5206
|
binding = scalarLegacy ? undefined : store.get(name)?.retain();
|
|
5196
|
-
typedSavedVariables.set(saved, { owner, binding, tickets, prepared: { name: token, admission }, watch, scalarLegacy });
|
|
5207
|
+
typedSavedVariables.set(saved, { owner, binding, tickets, prepared: { name: token, admission, identity: store.bindings.get(name)?.identity }, watch, scalarLegacy });
|
|
5197
5208
|
tickets.cleanup = () => { typedSavedVariables.delete(saved); };
|
|
5198
5209
|
}
|
|
5199
5210
|
catch (error) {
|
|
@@ -5889,6 +5900,22 @@ export class Runtime {
|
|
|
5889
5900
|
}
|
|
5890
5901
|
return p0.operator !== undefined ? this.applySyncArrayMemberOperator(out, p0, rawState) : out;
|
|
5891
5902
|
}
|
|
5903
|
+
syncArraySubscriptWord(index, state) {
|
|
5904
|
+
if (byteLocale(state.variables) || state.depth >= 24)
|
|
5905
|
+
return undefined;
|
|
5906
|
+
const cached = index;
|
|
5907
|
+
const word = index.word ?? (cached._cachedSyntax === state.extensions?.syntax ? cached._cachedWord : undefined);
|
|
5908
|
+
if (word)
|
|
5909
|
+
return word;
|
|
5910
|
+
try {
|
|
5911
|
+
cached._cachedWord = parseArraySubscript(index.source ?? index.decimal, this.budget.parsing, false, state.depth, false, state.extensions?.syntax);
|
|
5912
|
+
cached._cachedSyntax = state.extensions?.syntax;
|
|
5913
|
+
return cached._cachedWord;
|
|
5914
|
+
}
|
|
5915
|
+
catch {
|
|
5916
|
+
return undefined;
|
|
5917
|
+
}
|
|
5918
|
+
}
|
|
5892
5919
|
tryFastArrayAssignmentSync(assignment, state, io, diagnosticLine, declaration, associative, ignoreYield = false) {
|
|
5893
5920
|
if (!ignoreYield && hasYieldCheckpoint(this.signal))
|
|
5894
5921
|
return false;
|
|
@@ -6198,20 +6225,9 @@ export class Runtime {
|
|
|
6198
6225
|
return false;
|
|
6199
6226
|
}
|
|
6200
6227
|
if (assignment.kind === "element" && current?.associative) {
|
|
6201
|
-
const
|
|
6202
|
-
|
|
6203
|
-
|
|
6204
|
-
if (byteLocale(rawState.variables) || rawState.depth >= 24)
|
|
6205
|
-
return false;
|
|
6206
|
-
try {
|
|
6207
|
-
word = parseArraySubscript(assignment.index.source ?? assignment.index.decimal, this.budget.parsing, false, rawState.depth, false, rawState.extensions?.syntax);
|
|
6208
|
-
cachedIdx._cachedWord = word;
|
|
6209
|
-
cachedIdx._cachedSyntax = rawState.extensions?.syntax;
|
|
6210
|
-
}
|
|
6211
|
-
catch {
|
|
6212
|
-
return false;
|
|
6213
|
-
}
|
|
6214
|
-
}
|
|
6228
|
+
const word = this.syncArraySubscriptWord(assignment.index, rawState);
|
|
6229
|
+
if (!word)
|
|
6230
|
+
return false;
|
|
6215
6231
|
let keyVal;
|
|
6216
6232
|
let val;
|
|
6217
6233
|
try {
|
|
@@ -6977,7 +6993,7 @@ export class Runtime {
|
|
|
6977
6993
|
if (closed)
|
|
6978
6994
|
throw new ArrayFailure("indexed writer is closed");
|
|
6979
6995
|
owner.assertOpen();
|
|
6980
|
-
if (arrayStore(state) !== store || store.owner !== owner || identity !== undefined && store.bindings.get(name) !== identity)
|
|
6996
|
+
if (arrayStore(state) !== store || store.owner !== owner || identity !== undefined && store.bindings.get(name)?.identity !== identity)
|
|
6981
6997
|
throw new ArrayFailure("incremental target identity changed");
|
|
6982
6998
|
if (localIdentity() !== admittedLocal)
|
|
6983
6999
|
throw new ArrayFailure("incremental target local identity changed");
|
|
@@ -7032,8 +7048,8 @@ export class Runtime {
|
|
|
7032
7048
|
await prepared.close();
|
|
7033
7049
|
}
|
|
7034
7050
|
}
|
|
7035
|
-
identity = store.bindings.get(name);
|
|
7036
|
-
if (
|
|
7051
|
+
identity = store.bindings.get(name)?.identity;
|
|
7052
|
+
if (identity === undefined)
|
|
7037
7053
|
throw new ArrayFailure("incremental target is not indexed");
|
|
7038
7054
|
validate();
|
|
7039
7055
|
}
|
|
@@ -9342,7 +9358,7 @@ export class Runtime {
|
|
|
9342
9358
|
targetOk = true;
|
|
9343
9359
|
}
|
|
9344
9360
|
}
|
|
9345
|
-
else if (isShellIdentifier(w2Plain) && !
|
|
9361
|
+
else if (isShellIdentifier(w2Plain) && !printfSlowTargets.has(w2Plain) && !rawState.readonlyVariables?.has(w2Plain) && !rawState.variableAttributes?.get(w2Plain) && !st?.get(w2Plain) && !mon.hasOverlay(w2Plain)) {
|
|
9346
9362
|
targetOk = true;
|
|
9347
9363
|
}
|
|
9348
9364
|
}
|
|
@@ -11260,7 +11276,7 @@ export class Runtime {
|
|
|
11260
11276
|
const isSubTarget = openBr > 0 && targetSpec.endsWith("]") && targetSpec.length > openBr + 2;
|
|
11261
11277
|
const rawTargetVar = isSubTarget ? targetSpec.slice(0, openBr) : targetSpec;
|
|
11262
11278
|
const targetVar = isShellIdentifier(rawTargetVar) ? resolveSyncNameref(rawState, rawTargetVar) : "";
|
|
11263
|
-
if (targetVar && isShellIdentifier(targetVar) && targetVar
|
|
11279
|
+
if (targetVar && isShellIdentifier(targetVar) && !printfSlowTargets.has(targetVar) && !rawState.readonlyVariables?.has(targetVar) && !rawState.variableAttributes?.get(targetVar) && !monitor.hasOverlay(targetVar) && (isSubTarget ? Boolean(store?.get(targetVar)) : !store?.get(targetVar))) {
|
|
11264
11280
|
fastSubScratchArgs.length = 0;
|
|
11265
11281
|
let allStrings = true;
|
|
11266
11282
|
try {
|
|
@@ -12151,6 +12167,7 @@ export class Runtime {
|
|
|
12151
12167
|
let simpleRead = true;
|
|
12152
12168
|
let readDelim = 10;
|
|
12153
12169
|
let arrayTarget;
|
|
12170
|
+
let readLastArgument = command.words[command.words.length - 1].plain;
|
|
12154
12171
|
while (readWordIdx < command.words.length) {
|
|
12155
12172
|
const p = command.words[readWordIdx].plain;
|
|
12156
12173
|
if (p === undefined) {
|
|
@@ -12184,6 +12201,8 @@ export class Runtime {
|
|
|
12184
12201
|
delimStr = undefined;
|
|
12185
12202
|
}
|
|
12186
12203
|
}
|
|
12204
|
+
if (readWordIdx === command.words.length - 1)
|
|
12205
|
+
readLastArgument = delimStr;
|
|
12187
12206
|
}
|
|
12188
12207
|
if (delimStr !== undefined && delimStr.length >= 1 && delimStr.charCodeAt(0) > 0 && delimStr.charCodeAt(0) < 128) {
|
|
12189
12208
|
readDelim = delimStr.charCodeAt(0);
|
|
@@ -12449,7 +12468,7 @@ export class Runtime {
|
|
|
12449
12468
|
rawState.substitutionStatus = 0;
|
|
12450
12469
|
if (rawState.variables._ !== undefined)
|
|
12451
12470
|
delete rawState.variables._;
|
|
12452
|
-
rawState.lastArgument =
|
|
12471
|
+
rawState.lastArgument = readLastArgument;
|
|
12453
12472
|
if (io.assignmentDiagnosticContext)
|
|
12454
12473
|
io.assignmentDiagnosticContext.name = undefined;
|
|
12455
12474
|
if (!existing) {
|
|
@@ -13156,6 +13175,8 @@ export class Runtime {
|
|
|
13156
13175
|
}
|
|
13157
13176
|
}
|
|
13158
13177
|
if (canSyncFn) {
|
|
13178
|
+
if (rawState.functionDepth >= this.budget.limits.maxFunctionDepth)
|
|
13179
|
+
this.budget.fail("maxFunctionDepth");
|
|
13159
13180
|
const prevCommands = this.budget.commands;
|
|
13160
13181
|
this.budget.tick();
|
|
13161
13182
|
rawState.substitutionStatus = 0;
|
|
@@ -13507,12 +13528,12 @@ export class Runtime {
|
|
|
13507
13528
|
return undefined;
|
|
13508
13529
|
}
|
|
13509
13530
|
const def = this.commands.get("printf");
|
|
13510
|
-
const isPlainTargetId = targetSpec !== undefined &&
|
|
13531
|
+
const isPlainTargetId = targetSpec !== undefined && isShellIdentifier(targetSpec) && !printfSlowTargets.has(targetSpec);
|
|
13511
13532
|
const isScalarTarget = isPlainTargetId && !store?.get(targetSpec);
|
|
13512
13533
|
const brkIdx = targetSpec !== undefined && !isPlainTargetId && targetSpec.endsWith("]") ? targetSpec.indexOf("[") : -1;
|
|
13513
13534
|
const arrName = isPlainTargetId && !isScalarTarget ? targetSpec : (brkIdx > 0 ? targetSpec.slice(0, brkIdx) : undefined);
|
|
13514
13535
|
const subExpr = isPlainTargetId && !isScalarTarget ? "0" : (brkIdx > 0 ? targetSpec.slice(brkIdx + 1, -1) : undefined);
|
|
13515
|
-
const isArrayTarget = arrName !== undefined &&
|
|
13536
|
+
const isArrayTarget = arrName !== undefined && isShellIdentifier(arrName) && !printfSlowTargets.has(arrName) && subExpr !== undefined && subExpr.length > 0 && !subExpr.includes("$") && !subExpr.includes("\x60");
|
|
13516
13537
|
if (def?.execute === printfCommand.execute && (isScalarTarget || isArrayTarget) && command.words.length <= this.budget.maxExpansionFieldsSmi) {
|
|
13517
13538
|
fastSubScratchArgs.length = 0;
|
|
13518
13539
|
let allStrings = true;
|
|
@@ -13973,7 +13994,201 @@ export class Runtime {
|
|
|
13973
13994
|
this._syncLoopInvariantSubMap.set(part, { text: res, outBytes, exitStatus: 0, dynamic: usesInduction });
|
|
13974
13995
|
return true;
|
|
13975
13996
|
}
|
|
13997
|
+
admitSyncArrayLoop(command, state) {
|
|
13998
|
+
const monitor = stateMonitor(state);
|
|
13999
|
+
const store = monitor?.store;
|
|
14000
|
+
if (!store || store.watches.size || hasUnpreparedLocals(state) || state.depth >= 24 || byteLocale(state.variables) || state.nounset || hasActiveVariableAttributes(state) || this.budget.limits.maxExpansionBytes !== Infinity || this.budget.limits.maxExpansionFields !== Infinity)
|
|
14001
|
+
return undefined;
|
|
14002
|
+
const initializer = command.expressions[0]?.tree;
|
|
14003
|
+
if (initializer?.kind !== "binary" || initializer.operator !== "=" || initializer.left.kind !== "name")
|
|
14004
|
+
return undefined;
|
|
14005
|
+
const induction = initializer.left.name;
|
|
14006
|
+
const dynamicNames = new Set(["PIPESTATUS", "LINENO", "_", "FUNCNAME", "DIRSTACK", "BASH_SUBSHELL"]);
|
|
14007
|
+
const assignments = [];
|
|
14008
|
+
const appends = new Map();
|
|
14009
|
+
for (const list of command.body.lists) {
|
|
14010
|
+
if (list.terminator || list.pipelines.length !== 1)
|
|
14011
|
+
return undefined;
|
|
14012
|
+
const pipeline = list.pipelines[0];
|
|
14013
|
+
const cmd = pipeline.commands[0];
|
|
14014
|
+
if (pipeline.negate || pipeline.commands.length !== 1 || cmd?.kind !== "simple" || cmd.redirects.length || cmd.words.length !== 1)
|
|
14015
|
+
return undefined;
|
|
14016
|
+
const assignment = getArrayAssignment(cmd.words[0]) ?? this.assignment(cmd.words[0]);
|
|
14017
|
+
if (!assignment || assignment.name === induction || controlNames.has(assignment.name) || dynamicNames.has(assignment.name) || monitor.hasOverlay(assignment.name) || state.readonlyVariables?.has(assignment.name))
|
|
14018
|
+
return undefined;
|
|
14019
|
+
if ("kind" in assignment) {
|
|
14020
|
+
const binding = store.get(assignment.name);
|
|
14021
|
+
if (!binding || binding.references !== 1 || state.exported.has(assignment.name))
|
|
14022
|
+
return undefined;
|
|
14023
|
+
if (assignment.kind === "element") {
|
|
14024
|
+
if (!binding.associative || assignment.append)
|
|
14025
|
+
return undefined;
|
|
14026
|
+
}
|
|
14027
|
+
else {
|
|
14028
|
+
if (binding.associative || !assignment.append || assignment.entries.some(entry => entry.index || entry.append))
|
|
14029
|
+
return undefined;
|
|
14030
|
+
appends.set(assignment.name, (appends.get(assignment.name) ?? 0) + assignment.entries.length);
|
|
14031
|
+
}
|
|
14032
|
+
}
|
|
14033
|
+
else if (assignment.append || store.get(assignment.name) || ["IFS", "LC_ALL", "LC_CTYPE", "LC_COLLATE", "LANG"].includes(assignment.name))
|
|
14034
|
+
return undefined;
|
|
14035
|
+
assignments.push(assignment);
|
|
14036
|
+
}
|
|
14037
|
+
if (assignments.length > 30 || !assignments.some(assignment => "kind" in assignment && assignment.kind === "element"))
|
|
14038
|
+
return undefined;
|
|
14039
|
+
const integer = { min: 1, max: 20, integer: true }; // Signed shell arithmetic is 64 bit.
|
|
14040
|
+
const decimal = (value) => {
|
|
14041
|
+
if (value === "")
|
|
14042
|
+
return true; // Unset/empty arithmetic operands are zero.
|
|
14043
|
+
let i = value[0] === "-" ? 1 : 0;
|
|
14044
|
+
if (i === value.length || value.length > 20 || (value[i] === "0" && i + 1 !== value.length))
|
|
14045
|
+
return false;
|
|
14046
|
+
for (; i < value.length; i++)
|
|
14047
|
+
if (value[i] < "0" || value[i] > "9")
|
|
14048
|
+
return false;
|
|
14049
|
+
return true;
|
|
14050
|
+
};
|
|
14051
|
+
const literalShape = (value) => {
|
|
14052
|
+
if (typeof value !== "string")
|
|
14053
|
+
return undefined;
|
|
14054
|
+
for (let i = 0; i < value.length; i++)
|
|
14055
|
+
if (value.charCodeAt(i) >= 128)
|
|
14056
|
+
return undefined;
|
|
14057
|
+
return { min: value.length, max: value.length, integer: decimal(value) };
|
|
14058
|
+
};
|
|
14059
|
+
const integerArrays = new Set();
|
|
14060
|
+
for (const [name, { binding }] of store.bindings) {
|
|
14061
|
+
if (!binding.associative)
|
|
14062
|
+
continue;
|
|
14063
|
+
if (![...binding.values.values()].every(slot => typeof slot.text.shellValue === "string" && decimal(slot.text.shellValue)))
|
|
14064
|
+
continue;
|
|
14065
|
+
const writesInteger = assignments.every(assignment => {
|
|
14066
|
+
if (assignment.name !== name || !("kind" in assignment) || assignment.kind !== "element")
|
|
14067
|
+
return true;
|
|
14068
|
+
const parts = assignment.value.parts.filter(part => part.kind !== "text" || part.value !== "");
|
|
14069
|
+
return parts.length === 1 && parts[0].kind === "arithmetic" || parts.every(part => part.kind === "text") && decimal(parts.map(part => part.value).join(""));
|
|
14070
|
+
});
|
|
14071
|
+
if (writesInteger)
|
|
14072
|
+
integerArrays.add(name);
|
|
14073
|
+
}
|
|
14074
|
+
const entry = new Map();
|
|
14075
|
+
for (const assignment of assignments) {
|
|
14076
|
+
if ("kind" in assignment)
|
|
14077
|
+
continue;
|
|
14078
|
+
const raw = state.variables[assignment.name];
|
|
14079
|
+
const shape = literalShape(raw === undefined ? "" : monitor.values.get(assignment.name, raw) ?? raw);
|
|
14080
|
+
if (!shape)
|
|
14081
|
+
return undefined;
|
|
14082
|
+
entry.set(assignment.name, shape);
|
|
14083
|
+
}
|
|
14084
|
+
// Find an invariant over successive iterations. Growing strings or unknown
|
|
14085
|
+
// key bounds decline before execution; no speculative writes or replay.
|
|
14086
|
+
for (let pass = 0; pass < 32; pass++) {
|
|
14087
|
+
const values = new Map(entry);
|
|
14088
|
+
values.set(induction, integer);
|
|
14089
|
+
const words = new WeakSet();
|
|
14090
|
+
const integerWords = new WeakSet();
|
|
14091
|
+
const scalar = (name) => {
|
|
14092
|
+
if (!isShellIdentifier(name) || controlNames.has(name) || dynamicNames.has(name) || store.get(name) || monitor.hasOverlay(name) || hasUnpreparedLocal(state, name))
|
|
14093
|
+
return undefined;
|
|
14094
|
+
const known = values.get(name);
|
|
14095
|
+
if (known)
|
|
14096
|
+
return known;
|
|
14097
|
+
const raw = state.variables[name];
|
|
14098
|
+
return literalShape(raw === undefined ? "" : monitor.values.get(name, raw) ?? raw);
|
|
14099
|
+
};
|
|
14100
|
+
const shapeWord = (word, key = false) => {
|
|
14101
|
+
if (!word.parts.length)
|
|
14102
|
+
return undefined;
|
|
14103
|
+
const shapes = [];
|
|
14104
|
+
for (const part of word.parts) {
|
|
14105
|
+
let shape;
|
|
14106
|
+
if (part.kind === "text") {
|
|
14107
|
+
if (part.byteValue || invokedValues.has(part) || !part.quoted && part.value.includes("~"))
|
|
14108
|
+
return undefined;
|
|
14109
|
+
shape = literalShape(part.value);
|
|
14110
|
+
}
|
|
14111
|
+
else if (part.kind === "arithmetic") {
|
|
14112
|
+
const names = new Set();
|
|
14113
|
+
if (!collectPureReadOnlySmiNames(part.expression, names) || [...names].some(name => !scalar(name)?.integer))
|
|
14114
|
+
return undefined;
|
|
14115
|
+
shape = integer;
|
|
14116
|
+
}
|
|
14117
|
+
else if (part.kind === "variable") {
|
|
14118
|
+
if (part.indirect || part.specialParameter || part.prefixNames || part.length || part.substring || part.transform || part.keys || dynamicNames.has(part.name))
|
|
14119
|
+
return undefined;
|
|
14120
|
+
const selector = getArraySelector(part);
|
|
14121
|
+
if (selector) {
|
|
14122
|
+
if (key || selector.kind !== "element" || !store.get(part.name)?.associative || monitor.hasOverlay(part.name) || controlNames.has(part.name))
|
|
14123
|
+
return undefined;
|
|
14124
|
+
const index = this.syncArraySubscriptWord(selector.index, state);
|
|
14125
|
+
if (!index || !shapeWord(index, true))
|
|
14126
|
+
return undefined;
|
|
14127
|
+
shape = { min: 0, max: integerArrays.has(part.name) ? 20 : Infinity, integer: integerArrays.has(part.name) };
|
|
14128
|
+
if (part.operator !== undefined) {
|
|
14129
|
+
if ((part.operator !== "-" && part.operator !== ":-") || !part.alternate || !part.alternate.parts.every(p => p.kind === "text"))
|
|
14130
|
+
return undefined;
|
|
14131
|
+
const alternate = shapeWord(part.alternate);
|
|
14132
|
+
if (!alternate)
|
|
14133
|
+
return undefined;
|
|
14134
|
+
shape = { min: part.operator === ":-" ? Math.min(1, alternate.min) : 0, max: Math.max(shape.max, alternate.max), integer: shape.integer && alternate.integer };
|
|
14135
|
+
}
|
|
14136
|
+
}
|
|
14137
|
+
else {
|
|
14138
|
+
if (part.operator !== undefined)
|
|
14139
|
+
return undefined;
|
|
14140
|
+
shape = scalar(part.name);
|
|
14141
|
+
}
|
|
14142
|
+
}
|
|
14143
|
+
else
|
|
14144
|
+
return undefined;
|
|
14145
|
+
if (!shape)
|
|
14146
|
+
return undefined;
|
|
14147
|
+
shapes.push(shape);
|
|
14148
|
+
}
|
|
14149
|
+
const nonempty = shapes.filter(shape => shape.max !== 0);
|
|
14150
|
+
const result = { min: shapes.reduce((sum, shape) => sum + shape.min, 0), max: shapes.reduce((sum, shape) => sum + shape.max, 0), integer: nonempty.length === 0 || nonempty.length === 1 && nonempty[0].integer };
|
|
14151
|
+
if (key && (result.min === 0 || result.max > 4096))
|
|
14152
|
+
return undefined;
|
|
14153
|
+
words.add(word);
|
|
14154
|
+
if (result.integer)
|
|
14155
|
+
integerWords.add(word);
|
|
14156
|
+
return result;
|
|
14157
|
+
};
|
|
14158
|
+
for (const assignment of assignments) {
|
|
14159
|
+
if ("kind" in assignment && assignment.kind === "compound") {
|
|
14160
|
+
if (assignment.entries.some(entry => !entry.value.parts.every(part => part.quoted) || !shapeWord(entry.value)))
|
|
14161
|
+
return undefined;
|
|
14162
|
+
}
|
|
14163
|
+
else {
|
|
14164
|
+
if ("kind" in assignment) {
|
|
14165
|
+
const index = this.syncArraySubscriptWord(assignment.index, state);
|
|
14166
|
+
if (!index || !shapeWord(index, true))
|
|
14167
|
+
return undefined;
|
|
14168
|
+
}
|
|
14169
|
+
const shape = shapeWord(assignment.value);
|
|
14170
|
+
if (!shape)
|
|
14171
|
+
return undefined;
|
|
14172
|
+
if (!("kind" in assignment))
|
|
14173
|
+
values.set(assignment.name, shape);
|
|
14174
|
+
}
|
|
14175
|
+
}
|
|
14176
|
+
let stable = true;
|
|
14177
|
+
for (const [name, before] of entry) {
|
|
14178
|
+
const after = values.get(name);
|
|
14179
|
+
const merged = { min: Math.min(before.min, after.min), max: Math.max(before.max, after.max), integer: before.integer && after.integer };
|
|
14180
|
+
if (merged.min !== before.min || merged.max !== before.max || merged.integer !== before.integer)
|
|
14181
|
+
stable = false;
|
|
14182
|
+
entry.set(name, merged);
|
|
14183
|
+
}
|
|
14184
|
+
if (stable)
|
|
14185
|
+
return { words, integerWords, appends };
|
|
14186
|
+
}
|
|
14187
|
+
return undefined;
|
|
14188
|
+
}
|
|
13976
14189
|
isPureSyncValueWord(word, rawState, allowAt = false) {
|
|
14190
|
+
if (this._activeSyncArrayLoopWords?.has(word))
|
|
14191
|
+
return true;
|
|
13977
14192
|
if (word.parts.length === 0)
|
|
13978
14193
|
return false;
|
|
13979
14194
|
for (let i = 0; i < word.parts.length; i++) {
|
|
@@ -15080,8 +15295,7 @@ export class Runtime {
|
|
|
15080
15295
|
if (!hasActiveVariableAttributes(rawState) &&
|
|
15081
15296
|
vName !== undefined &&
|
|
15082
15297
|
isShellIdentifier(vName) &&
|
|
15083
|
-
!
|
|
15084
|
-
vName !== "OPTIND" &&
|
|
15298
|
+
!printfSlowTargets.has(vName) &&
|
|
15085
15299
|
!rawState.readonlyVariables?.has(vName) &&
|
|
15086
15300
|
!rawState.variableAttributes?.get(vName) &&
|
|
15087
15301
|
!store?.get(vName) &&
|
|
@@ -15129,14 +15343,19 @@ export class Runtime {
|
|
|
15129
15343
|
if (hasUnpreparedLocals(rawState))
|
|
15130
15344
|
return false;
|
|
15131
15345
|
// Eligibility checks must not create bindings: the loop may never run.
|
|
15132
|
-
// Element subscripts need the normal arithmetic and relative-index evaluator.
|
|
15133
|
-
if (arrAssign.kind === "element")
|
|
15134
|
-
return false;
|
|
15135
15346
|
const curArr = store?.get(arrAssign.name);
|
|
15136
15347
|
const activeArrStore = store ?? stateMonitor(rawState)?.store;
|
|
15137
|
-
if (!curArr || curArr.references !== 1 || activeArrStore?.watches.has(arrAssign.name) || rawState.readonlyVariables?.has(arrAssign.name) || rawState.exported.has(arrAssign.name) || controlNames.has(arrAssign.name)) {
|
|
15348
|
+
if (!curArr || curArr.references !== 1 || activeArrStore?.watches.has(arrAssign.name) || rawState.readonlyVariables?.has(arrAssign.name) || rawState.variableAttributes?.has(arrAssign.name) || rawState.exported.has(arrAssign.name) || controlNames.has(arrAssign.name)) {
|
|
15138
15349
|
return false;
|
|
15139
15350
|
}
|
|
15351
|
+
if (arrAssign.kind === "element") {
|
|
15352
|
+
// Only the whole-loop proof can admit associative keys. Indexed
|
|
15353
|
+
// arithmetic and relative subscripts retain normal evaluation.
|
|
15354
|
+
const index = curArr.associative ? this.syncArraySubscriptWord(arrAssign.index, rawState) : undefined;
|
|
15355
|
+
if (!index || !this._activeSyncArrayLoopWords?.has(index) || !this.isPureSyncValueWord(index, rawState) || !this.isPureSyncValueWord(arrAssign.value, rawState))
|
|
15356
|
+
return false;
|
|
15357
|
+
continue;
|
|
15358
|
+
}
|
|
15140
15359
|
if (arrAssign.kind === "compound" && arrAssign.entries.length <= 16 && arrAssign.entries.every(e => !e.append)) {
|
|
15141
15360
|
let allEntriesOk = true;
|
|
15142
15361
|
for (let ei = 0; ei < arrAssign.entries.length; ei++) {
|
|
@@ -15554,7 +15773,7 @@ export class Runtime {
|
|
|
15554
15773
|
}
|
|
15555
15774
|
return res;
|
|
15556
15775
|
}
|
|
15557
|
-
syncLoopArithmeticReadsRemainInteger(steps, rawState) {
|
|
15776
|
+
syncLoopArithmeticReadsRemainInteger(steps, rawState, integerWords) {
|
|
15558
15777
|
const reads = new Set();
|
|
15559
15778
|
const seen = new WeakSet();
|
|
15560
15779
|
// Inspect words in commands, conditions, substitutions, and inlined functions.
|
|
@@ -15577,7 +15796,7 @@ export class Runtime {
|
|
|
15577
15796
|
const safeWrites = (items) => items.every(step => {
|
|
15578
15797
|
if (step.name && reads.has(step.name)) {
|
|
15579
15798
|
const literal = step.value?.plain;
|
|
15580
|
-
if (step.append || (!this.extractIntLoopStep(step, rawState) && (literal === undefined || !/^-?[0-9]+$/.test(literal))))
|
|
15799
|
+
if (step.append || (!integerWords?.has(step.value) && !this.extractIntLoopStep(step, rawState) && (literal === undefined || !/^-?[0-9]+$/.test(literal))))
|
|
15581
15800
|
return false;
|
|
15582
15801
|
}
|
|
15583
15802
|
if (step.readHereString?.varNames.some(name => reads.has(name)) || (step.readHereString?.arrayTarget && reads.has(step.readHereString.arrayTarget)))
|
|
@@ -15736,6 +15955,9 @@ export class Runtime {
|
|
|
15736
15955
|
const prevAssignedVars = this._activeSyncLoopAssignedVars;
|
|
15737
15956
|
const prevLoopIO = this._activeSyncLoopIO;
|
|
15738
15957
|
const prevInvMap = this._syncLoopInvariantSubMap;
|
|
15958
|
+
const prevArrayWords = this._activeSyncArrayLoopWords;
|
|
15959
|
+
const arrayLoop = command.kind === "arithmetic-for" ? this.admitSyncArrayLoop(command, rawState) : undefined;
|
|
15960
|
+
this._activeSyncArrayLoopWords = arrayLoop?.words;
|
|
15739
15961
|
this._activePrintfInductionName = printfInductionName;
|
|
15740
15962
|
this._activeSyncLoopAssignedVars = this.collectSyncLoopAssignedVars(command, rawState);
|
|
15741
15963
|
this._activeSyncLoopIO = io;
|
|
@@ -15750,6 +15972,7 @@ export class Runtime {
|
|
|
15750
15972
|
this._activeSyncLoopAssignedVars = prevAssignedVars;
|
|
15751
15973
|
this._activeSyncLoopIO = prevLoopIO;
|
|
15752
15974
|
this._syncLoopInvariantSubMap = prevInvMap;
|
|
15975
|
+
this._activeSyncArrayLoopWords = prevArrayWords;
|
|
15753
15976
|
}
|
|
15754
15977
|
if (!bodySyncOk) {
|
|
15755
15978
|
command._skipTrySyncLoop = true;
|
|
@@ -15788,7 +16011,7 @@ export class Runtime {
|
|
|
15788
16011
|
this._syncLoopInvariantSubMap = localInvMap;
|
|
15789
16012
|
try {
|
|
15790
16013
|
const { steps: bodyAssignments, redirectCount } = this.buildSyncLoopBody(command, rawState, io);
|
|
15791
|
-
if (bodyAssignments.length > 30 || !this.syncLoopArithmeticReadsRemainInteger(bodyAssignments, rawState))
|
|
16014
|
+
if (bodyAssignments.length > 30 || !this.syncLoopArithmeticReadsRemainInteger(bodyAssignments, rawState, arrayLoop?.integerWords))
|
|
15792
16015
|
return undefined;
|
|
15793
16016
|
const touched = this._syncArithRawWriteOnly ? new Set() : sharedSyncLoopTouched;
|
|
15794
16017
|
touched.clear();
|
|
@@ -15940,6 +16163,10 @@ export class Runtime {
|
|
|
15940
16163
|
: step.value ? [step.value] : [];
|
|
15941
16164
|
for (let wIdx = 0; wIdx < wordsToScan.length; wIdx++) {
|
|
15942
16165
|
const wVal = wordsToScan[wIdx];
|
|
16166
|
+
// The array-loop proof tracks integer values at each statement,
|
|
16167
|
+
// including scalars loaded from arrays earlier in the same iteration.
|
|
16168
|
+
if (arrayLoop?.words.has(wVal))
|
|
16169
|
+
continue;
|
|
15943
16170
|
for (let i = 0; i < wVal.parts.length; i++) {
|
|
15944
16171
|
const part = wVal.parts[i];
|
|
15945
16172
|
if (part.kind === "text" || part.kind === "variable")
|
|
@@ -16028,6 +16255,14 @@ export class Runtime {
|
|
|
16028
16255
|
return undefined;
|
|
16029
16256
|
}
|
|
16030
16257
|
const { e0, e1, e2, iterations, inductionName, startVal, limitVal, isLe, isSimpleLiteralAsc, arithNamesList, intSteps, allIntStepsReady, hasSubIntStep, hasDeferredSteps, deferredMask, touchedIntNamesList, } = plan;
|
|
16258
|
+
if (arrayLoop?.appends.size) {
|
|
16259
|
+
if (!isSimpleLiteralAsc)
|
|
16260
|
+
return undefined;
|
|
16261
|
+
for (const [name, count] of arrayLoop.appends) {
|
|
16262
|
+
if (store.get(name).maximum + iterations * count > 2147483647)
|
|
16263
|
+
return undefined;
|
|
16264
|
+
}
|
|
16265
|
+
}
|
|
16031
16266
|
if (inductionName === "OPTIND" || controlNames.has(inductionName) || monitor.hasOverlay(inductionName) || hasUnpreparedLocal(rawState, inductionName) || store?.get(inductionName) || rawState.readonlyVariables?.has(inductionName) || rawState.variableAttributes?.get(inductionName))
|
|
16032
16267
|
return undefined;
|
|
16033
16268
|
if (!isSimpleLiteralAsc && (!this.canSyncArithmeticWithoutFault(e0.tree, rawState, diagnosticLine) || !this.canSyncArithmeticWithoutFault(e1.tree, rawState, diagnosticLine) || !this.canSyncArithmeticWithoutFault(e2.tree, rawState, diagnosticLine)))
|
|
@@ -16035,6 +16270,8 @@ export class Runtime {
|
|
|
16035
16270
|
if (arithNamesList.length > 0) {
|
|
16036
16271
|
for (let a = 0; a < arithNamesList.length; a++) {
|
|
16037
16272
|
const refName = arithNamesList[a];
|
|
16273
|
+
if (store?.get(refName))
|
|
16274
|
+
return undefined;
|
|
16038
16275
|
if (refName === inductionName)
|
|
16039
16276
|
continue;
|
|
16040
16277
|
const initial = rawState.variables[refName];
|
|
@@ -18711,6 +18948,7 @@ export class Runtime {
|
|
|
18711
18948
|
signal.throwIfAborted();
|
|
18712
18949
|
child.extensions = forkExtensions(state.extensions, "subshell");
|
|
18713
18950
|
child.isolated = true;
|
|
18951
|
+
child.variables.BASH_SUBSHELL = String(Number(state.variables.BASH_SUBSHELL ?? 0) + 1);
|
|
18714
18952
|
child.depth++;
|
|
18715
18953
|
const allocation = this.budget.values.scope();
|
|
18716
18954
|
scope.register(() => allocation.close());
|
|
@@ -18905,6 +19143,9 @@ export class Runtime {
|
|
|
18905
19143
|
})
|
|
18906
19144
|
: (tryCloneStateSync(state) ?? await cloneState(state, this.signal));
|
|
18907
19145
|
preparedChild = child;
|
|
19146
|
+
if (child._readOnlyStage)
|
|
19147
|
+
child.variables = { ...child.variables };
|
|
19148
|
+
child.variables.BASH_SUBSHELL = String(Number(state.variables.BASH_SUBSHELL ?? 0) + 1);
|
|
18908
19149
|
if (!child._readOnlyStage) {
|
|
18909
19150
|
child.extensions = undefined;
|
|
18910
19151
|
child.extensions = forkExtensions(state.extensions, "pipeline");
|
|
@@ -19841,6 +20082,7 @@ export class Runtime {
|
|
|
19841
20082
|
try {
|
|
19842
20083
|
child.extensions = forkExtensions(state.extensions, "subshell");
|
|
19843
20084
|
child.isolated = true;
|
|
20085
|
+
child.variables.BASH_SUBSHELL = String(Number(state.variables.BASH_SUBSHELL ?? 0) + 1);
|
|
19844
20086
|
child.loopDepth = 0;
|
|
19845
20087
|
if (state.extensions?.checkpoints.length)
|
|
19846
20088
|
await this.extensionCheckpoint("child-job-install", state, io);
|
|
@@ -21188,6 +21430,8 @@ export class Runtime {
|
|
|
21188
21430
|
async dispatchFastFunction(name, body, args, state, io, pendingResume) {
|
|
21189
21431
|
if (!pendingResume && state.depth >= this.budget.limits.maxSubstitutionDepth)
|
|
21190
21432
|
this.budget.fail("maxSubstitutionDepth");
|
|
21433
|
+
if (!pendingResume && state.functionDepth >= this.budget.limits.maxFunctionDepth)
|
|
21434
|
+
this.budget.fail("maxFunctionDepth");
|
|
21191
21435
|
const scope = io[invocationScope].child();
|
|
21192
21436
|
try {
|
|
21193
21437
|
const monitor = stateMonitor(state);
|
|
@@ -21700,6 +21944,8 @@ export class Runtime {
|
|
|
21700
21944
|
ensureRuntimeContext();
|
|
21701
21945
|
if (state.depth >= this.budget.limits.maxSubstitutionDepth)
|
|
21702
21946
|
this.budget.fail("maxSubstitutionDepth");
|
|
21947
|
+
if (state.functionDepth >= this.budget.limits.maxFunctionDepth)
|
|
21948
|
+
this.budget.fail("maxFunctionDepth");
|
|
21703
21949
|
const positional = state.positional;
|
|
21704
21950
|
const savedPositionals = stateMonitor(state).positionals.clone();
|
|
21705
21951
|
const positionalSetVersion = state.positionalSetVersion ?? 0;
|
|
@@ -22267,13 +22513,20 @@ export class Runtime {
|
|
|
22267
22513
|
const option = args.shift();
|
|
22268
22514
|
if (option === "--" || option === "-")
|
|
22269
22515
|
break;
|
|
22516
|
+
if (option === "--version") {
|
|
22517
|
+
await writeDiagnostic(context.stdout, "safe-bash (poe-code)\n");
|
|
22518
|
+
return 0;
|
|
22519
|
+
}
|
|
22520
|
+
if (option === "--login" || option === "--norc" || option === "--noprofile" || option === "--posix") {
|
|
22521
|
+
continue;
|
|
22522
|
+
}
|
|
22270
22523
|
const enabled = option[0] === "-";
|
|
22271
22524
|
if ((option === "-o" || option === "+o") && Object.hasOwn(options, args[0] ?? "")) {
|
|
22272
22525
|
options[args.shift()] = enabled;
|
|
22273
22526
|
continue;
|
|
22274
22527
|
}
|
|
22275
22528
|
const flags = option.slice(1);
|
|
22276
|
-
if (!flags.length || [...flags].some(flag => !Object.hasOwn(flagsByName, flag) && !(enabled && (flag === "c" || flag === "s")))) {
|
|
22529
|
+
if (!flags.length || [...flags].some(flag => !Object.hasOwn(flagsByName, flag) && !(enabled && (flag === "c" || flag === "s" || flag === "l" || flag === "i")))) {
|
|
22277
22530
|
await writeDiagnostic(context.stderr, `${context.command}: ${option}: unsupported option; supported flags are -c, -s, +/-a, +/-e, +/-u, +/-n, +/-B, +/-f, +/-C and +/-o ${Object.keys(options).join(", ")}\n`);
|
|
22278
22531
|
return 2;
|
|
22279
22532
|
}
|
|
@@ -23796,6 +24049,9 @@ export class Runtime {
|
|
|
23796
24049
|
await writeDiagnostic(context.stderr, `printf: ${name}: readonly variable\n`);
|
|
23797
24050
|
return 1;
|
|
23798
24051
|
}
|
|
24052
|
+
// Bash ignores assignments to its function-stack variable.
|
|
24053
|
+
if (name === "FUNCNAME")
|
|
24054
|
+
return status;
|
|
23799
24055
|
if (index || arrayStore(state)?.get(name)) {
|
|
23800
24056
|
const decoder = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
|
|
23801
24057
|
const decode = (bytes) => {
|
|
@@ -24722,7 +24978,8 @@ export class Runtime {
|
|
|
24722
24978
|
let shadow;
|
|
24723
24979
|
try {
|
|
24724
24980
|
const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });
|
|
24725
|
-
|
|
24981
|
+
if (enabled.has("I"))
|
|
24982
|
+
shadow = await store.get(name).copy(this.signal);
|
|
24726
24983
|
this.signal.throwIfAborted();
|
|
24727
24984
|
if (state.readonlyVariables?.has(name))
|
|
24728
24985
|
throw new ArrayFailure("readonly binding");
|
|
@@ -24731,7 +24988,7 @@ export class Runtime {
|
|
|
24731
24988
|
let released;
|
|
24732
24989
|
stateMonitor(state).publish(tickets, name, () => {
|
|
24733
24990
|
locals.set(name, saved);
|
|
24734
|
-
released = store.publish(name, shadow, tickets);
|
|
24991
|
+
released = shadow ? store.publish(name, shadow, tickets) : store.remove(name, tickets);
|
|
24735
24992
|
});
|
|
24736
24993
|
shadow = undefined;
|
|
24737
24994
|
await released;
|
|
@@ -25627,6 +25884,7 @@ export class Runtime {
|
|
|
25627
25884
|
const capture = new Capture();
|
|
25628
25885
|
const child = await cloneState(state, this.signal);
|
|
25629
25886
|
child.isolated = true;
|
|
25887
|
+
child.variables.BASH_SUBSHELL = String(Number(state.variables.BASH_SUBSHELL ?? 0) + 1);
|
|
25630
25888
|
child.extensions = forkExtensions(state.extensions, "substitution");
|
|
25631
25889
|
if (state.profile !== "sh")
|
|
25632
25890
|
child.errexit = false;
|
|
@@ -25680,6 +25938,7 @@ export class Runtime {
|
|
|
25680
25938
|
}
|
|
25681
25939
|
const child = await cloneState(state, this.signal);
|
|
25682
25940
|
child.isolated = true;
|
|
25941
|
+
child.variables.BASH_SUBSHELL = String(Number(state.variables.BASH_SUBSHELL ?? 0) + 1);
|
|
25683
25942
|
child.extensions = forkExtensions(state.extensions, "substitution");
|
|
25684
25943
|
if (state.profile !== "sh")
|
|
25685
25944
|
child.errexit = false;
|
|
@@ -25733,6 +25992,7 @@ export class Runtime {
|
|
|
25733
25992
|
const capture = new Capture();
|
|
25734
25993
|
const child = await cloneState(state, this.signal);
|
|
25735
25994
|
child.isolated = true;
|
|
25995
|
+
child.variables.BASH_SUBSHELL = String(Number(state.variables.BASH_SUBSHELL ?? 0) + 1);
|
|
25736
25996
|
child.extensions = forkExtensions(state.extensions, "substitution");
|
|
25737
25997
|
if (state.profile !== "sh")
|
|
25738
25998
|
child.errexit = false;
|
|
@@ -25835,7 +26095,7 @@ export class Runtime {
|
|
|
25835
26095
|
if (part.length)
|
|
25836
26096
|
return String(binding?.values.size ?? (part.name === "FUNCNAME" && state.variables.FUNCNAME === undefined ? state.functionNames?.length ?? 0 : state.variables[part.name] === undefined ? 0 : 1));
|
|
25837
26097
|
const values = await this.arrayMembers(part.name, state, io, selector.kind === "keys" || part.keys === true, part.substring);
|
|
25838
|
-
const space = (selector.kind === "keys" || part.keys === true) ? Boolean(hereDocument || (selector.separator === "@" ? !part.quoted && !split || state.variables.IFS === "" : !part.quoted && split && state.variables.IFS === "")) : (!split && selector.separator === "@");
|
|
26098
|
+
const space = (selector.kind === "keys" || part.keys === true) ? Boolean(hereDocument || (selector.separator === "@" ? !part.quoted && !split || state.variables.IFS === "" : !part.quoted && split && state.variables.IFS === "")) : (!split && selector.separator === "@" && (!part.substring || !part.quoted || state.variables.IFS === ""));
|
|
25839
26099
|
return this.arrayJoin(store.owner, values, space ? " " : this.ifsSeparator(state, io));
|
|
25840
26100
|
}
|
|
25841
26101
|
if (part.substring && (part.name === "@" || part.name === "*")) {
|
|
@@ -26477,7 +26737,7 @@ export class Runtime {
|
|
|
26477
26737
|
}
|
|
26478
26738
|
if (part.indirect || part.specialParameter)
|
|
26479
26739
|
return undefined;
|
|
26480
|
-
if (part.name === "@" || part.name === "*" || part.name === "PIPESTATUS" || part.name === "LINENO" || part.name === "_" || part.name === "FUNCNAME" || part.name === "DIRSTACK")
|
|
26740
|
+
if (part.name === "@" || part.name === "*" || part.name === "PIPESTATUS" || part.name === "LINENO" || part.name === "BASH_SUBSHELL" || part.name === "_" || part.name === "FUNCNAME" || part.name === "DIRSTACK")
|
|
26481
26741
|
return undefined;
|
|
26482
26742
|
if (!isShellIdentifier(part.name))
|
|
26483
26743
|
return undefined;
|
|
@@ -26558,7 +26818,7 @@ export class Runtime {
|
|
|
26558
26818
|
}
|
|
26559
26819
|
const ifsVal = monitor?.values.get("IFS", rawVars.IFS ?? " ") ?? rawVars.IFS ?? " ";
|
|
26560
26820
|
if (validElemOp && typeof ifsVal === "string" && (ifsVal.length === 0 || ifsVal.charCodeAt(0) < 128)) {
|
|
26561
|
-
const sep = selector.separator === "@" && (ifsVal.length === 0 || !isKeys && part.operator === undefined) ? " " : ifsVal.length > 0 ? ifsVal[0] : "";
|
|
26821
|
+
const sep = selector.separator === "@" && (ifsVal.length === 0 || !isKeys && part.operator === undefined && !part.substring) ? " " : ifsVal.length > 0 ? ifsVal[0] : "";
|
|
26562
26822
|
const parameterLine = part.line ?? overrideDiagnosticLine;
|
|
26563
26823
|
const evalSliceInt = (w) => {
|
|
26564
26824
|
if (w.parts.length === 0)
|
|
@@ -26673,20 +26933,9 @@ export class Runtime {
|
|
|
26673
26933
|
return undefined;
|
|
26674
26934
|
}
|
|
26675
26935
|
if (selector.kind === "element") {
|
|
26676
|
-
const
|
|
26677
|
-
|
|
26678
|
-
|
|
26679
|
-
if (byteLocale(rawVars) || rawState.depth >= 24)
|
|
26680
|
-
return undefined;
|
|
26681
|
-
try {
|
|
26682
|
-
subWord = parseArraySubscript(selector.index.source ?? selector.index.decimal, this.budget.parsing, false, rawState.depth, false, rawState.extensions?.syntax);
|
|
26683
|
-
cachedSub._cachedWord = subWord;
|
|
26684
|
-
cachedSub._cachedSyntax = rawState.extensions?.syntax;
|
|
26685
|
-
}
|
|
26686
|
-
catch {
|
|
26687
|
-
return undefined;
|
|
26688
|
-
}
|
|
26689
|
-
}
|
|
26936
|
+
const subWord = this.syncArraySubscriptWord(selector.index, rawState);
|
|
26937
|
+
if (!subWord)
|
|
26938
|
+
return undefined;
|
|
26690
26939
|
const subVal = this.fastValueWord(subWord, rawState, io, false, false, false, false, undefined, part.line ?? overrideDiagnosticLine);
|
|
26691
26940
|
if (typeof subVal !== "string")
|
|
26692
26941
|
return undefined;
|
|
@@ -26861,6 +27110,14 @@ export class Runtime {
|
|
|
26861
27110
|
if (part.length || part.operator !== undefined || this.budget.limits.maxExpansionBytes !== Infinity || rawState.depth + (io.parameterDepth ?? 0) >= 60 || !part.substring.offset.parts.every(p => p.kind === "text" || p.kind === "arithmetic" || (p.kind === "variable" && !p.operator && !p.substring)) || (part.substring.length && !part.substring.length.parts.every(p => p.kind === "text" || p.kind === "arithmetic" || (p.kind === "variable" && !p.operator && !p.substring))) || ValueScope.prototype.reserve !== defaultValueScopeReserve || String.prototype.codePointAt !== defaultStringCodePointAt || globalThis.Float64Array !== defaultFloat64Array || (!part.substring.offset.parts.length && !part.substring.length)) {
|
|
26862
27111
|
return undefined;
|
|
26863
27112
|
}
|
|
27113
|
+
// Resolve the parameter before expanding either arithmetic operand.
|
|
27114
|
+
const raw = rawVars[part.name];
|
|
27115
|
+
this.requireParameter(raw, part.name, state, io, part.line ?? overrideDiagnosticLine);
|
|
27116
|
+
if (raw === undefined) {
|
|
27117
|
+
if (split && !part.quoted)
|
|
27118
|
+
return undefined;
|
|
27119
|
+
continue;
|
|
27120
|
+
}
|
|
26864
27121
|
const parameterLine = part.line ?? overrideDiagnosticLine;
|
|
26865
27122
|
const evalSubInt = (w) => {
|
|
26866
27123
|
if (w.parts.length === 0)
|
|
@@ -26886,13 +27143,6 @@ export class Runtime {
|
|
|
26886
27143
|
const lenNum = part.substring.length ? evalSubInt(part.substring.length) : undefined;
|
|
26887
27144
|
if (part.substring.length && lenNum === undefined)
|
|
26888
27145
|
return undefined;
|
|
26889
|
-
const raw = rawVars[part.name];
|
|
26890
|
-
this.requireParameter(raw, part.name, state, io, part.line ?? overrideDiagnosticLine);
|
|
26891
|
-
if (raw === undefined) {
|
|
26892
|
-
if (split && !part.quoted)
|
|
26893
|
-
return undefined;
|
|
26894
|
-
continue;
|
|
26895
|
-
}
|
|
26896
27146
|
const val = this._syncArithRawWriteOnly && this._syncArithTouched?.has(part.name) ? raw : (monitor?.values.get(part.name, raw) ?? raw);
|
|
26897
27147
|
if (typeof val !== "string" || val.length > this.budget.limits.maxExpansionBytes)
|
|
26898
27148
|
return undefined;
|
|
@@ -35921,6 +36171,8 @@ export class Runtime {
|
|
|
35921
36171
|
if (p.kind === "text")
|
|
35922
36172
|
continue;
|
|
35923
36173
|
if (p.kind === "variable") {
|
|
36174
|
+
if (p.name === "BASH_SUBSHELL")
|
|
36175
|
+
return false;
|
|
35924
36176
|
if (!p.indirect && !p.prefixNames && !p.length && !p.substring && !p.transform && p.operator === undefined && getArraySelector(p) === undefined && (p.name === "?" || p.name === "#" || (p.name.length === 1 && p.name >= "1" && p.name <= "9"))) {
|
|
35925
36177
|
const activePos = this._fastSubPositional ?? rawState.positional;
|
|
35926
36178
|
if (rawState.nounset && p.name >= "1" && p.name <= "9" && activePos[p.name.charCodeAt(0) - 49] === undefined)
|