@poe-platform/safe-bash 0.1.629 → 0.1.631
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 +2 -2
- package/dist/office-package/compression.d.ts +19 -0
- package/dist/office-package/compression.js +186 -0
- package/dist/office-package/runtime.d.ts +11 -0
- package/dist/office-package/runtime.js +28 -0
- package/dist/safe-bash/chunks/{bz2-B2RXT4EX.js → bz2-ACU4EOVE.js} +2 -2
- package/dist/safe-bash/chunks/chunk-2E4KBFO6.js +239 -0
- package/dist/safe-bash/chunks/chunk-2E4KBFO6.js.map +7 -0
- package/dist/safe-bash/chunks/chunk-3E5M2WEL.js +33 -0
- package/dist/safe-bash/chunks/chunk-3E5M2WEL.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-WPEMUXV4.js → chunk-3LD67SER.js} +12 -10
- package/dist/safe-bash/chunks/{chunk-WPEMUXV4.js.map → chunk-3LD67SER.js.map} +1 -1
- package/dist/safe-bash/chunks/{chunk-6LSSEOG7.js → chunk-6HNK7Q66.js} +11 -7
- package/dist/safe-bash/chunks/{chunk-6LSSEOG7.js.map → chunk-6HNK7Q66.js.map} +1 -1
- package/dist/safe-bash/chunks/{chunk-AD7UAP5B.js → chunk-7EEWZY5S.js} +10 -8
- package/dist/safe-bash/chunks/{chunk-AD7UAP5B.js.map → chunk-7EEWZY5S.js.map} +1 -1
- package/dist/safe-bash/chunks/{chunk-RNKTWFEM.js → chunk-CDBQXRWL.js} +3 -3
- package/dist/safe-bash/chunks/{chunk-UYX72YHY.js → chunk-CHHAB5SS.js} +10 -74
- package/dist/safe-bash/chunks/{chunk-UYX72YHY.js.map → chunk-CHHAB5SS.js.map} +3 -3
- package/dist/safe-bash/chunks/{chunk-KYNRHYHP.js → chunk-EI4X5ETX.js} +15 -13
- package/dist/safe-bash/chunks/{chunk-KYNRHYHP.js.map → chunk-EI4X5ETX.js.map} +1 -1
- package/dist/safe-bash/chunks/{chunk-KZ7QCYNT.js → chunk-GIBLUW2U.js} +13 -9
- package/dist/safe-bash/chunks/{chunk-KZ7QCYNT.js.map → chunk-GIBLUW2U.js.map} +1 -1
- package/dist/safe-bash/chunks/chunk-GPV7ZFYS.js +1528 -0
- package/dist/safe-bash/chunks/chunk-GPV7ZFYS.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-N5CYTGBN.js → chunk-H3E67KTZ.js} +13 -9
- package/dist/safe-bash/chunks/{chunk-N5CYTGBN.js.map → chunk-H3E67KTZ.js.map} +1 -1
- package/dist/safe-bash/chunks/{chunk-AFH57PPL.js → chunk-IEKESMO4.js} +3 -3
- package/dist/safe-bash/chunks/{chunk-DPJWEGIX.js → chunk-JLBIUYT3.js} +2 -2
- package/dist/safe-bash/chunks/chunk-JZDO5MC3.js +77 -0
- package/dist/safe-bash/chunks/chunk-JZDO5MC3.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-GFZKQIPL.js → chunk-LA6BX562.js} +8 -6
- package/dist/safe-bash/chunks/{chunk-GFZKQIPL.js.map → chunk-LA6BX562.js.map} +1 -1
- package/dist/safe-bash/chunks/{chunk-PVJJFCGA.js → chunk-M3GPCYSP.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-FWDMJTQO.js → chunk-NDCZ3UBP.js} +13 -9
- package/dist/safe-bash/chunks/{chunk-FWDMJTQO.js.map → chunk-NDCZ3UBP.js.map} +1 -1
- package/dist/safe-bash/chunks/{chunk-2KL6W6NB.js → chunk-O2EVBRKF.js} +1 -2
- package/dist/safe-bash/chunks/chunk-OFT77XIB.js +389 -0
- package/dist/safe-bash/chunks/chunk-OFT77XIB.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-PCLOK32J.js → chunk-PC6BEIAF.js} +13 -9
- package/dist/safe-bash/chunks/{chunk-PCLOK32J.js.map → chunk-PC6BEIAF.js.map} +1 -1
- package/dist/safe-bash/chunks/{chunk-3M5F7LD5.js → chunk-QWKP7ZU7.js} +13 -9
- package/dist/safe-bash/chunks/{chunk-3M5F7LD5.js.map → chunk-QWKP7ZU7.js.map} +1 -1
- package/dist/safe-bash/chunks/chunk-THXJ6CLF.js +53 -0
- package/dist/safe-bash/chunks/chunk-THXJ6CLF.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-HHJSJWUD.js → chunk-V73A742N.js} +57 -15
- package/dist/safe-bash/chunks/chunk-V73A742N.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-4BYUV5PA.js → chunk-VN3ZGME3.js} +12 -8
- package/dist/safe-bash/chunks/{chunk-4BYUV5PA.js.map → chunk-VN3ZGME3.js.map} +1 -1
- package/dist/safe-bash/chunks/chunk-WECHUK3Y.js +4285 -0
- package/dist/safe-bash/chunks/chunk-WECHUK3Y.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-X55AMTNM.js → chunk-WIOEUR7D.js} +14 -10
- package/dist/safe-bash/chunks/{chunk-X55AMTNM.js.map → chunk-WIOEUR7D.js.map} +1 -1
- package/dist/safe-bash/chunks/chunk-WPIOO4NX.js +443 -0
- package/dist/safe-bash/chunks/chunk-WPIOO4NX.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-C7QNJ3D4.js → chunk-WYTI64IU.js} +2 -2
- package/dist/safe-bash/chunks/{xz-AVXFDXW4.js → xz-U4QDTPZL.js} +2 -2
- package/dist/safe-bash/chunks/{zstd-R6RPHJYO.js → zstd-OG5RPYXO.js} +2 -2
- package/dist/safe-bash/commands/archive/zip/crc.d.ts +2 -0
- package/dist/safe-bash/commands/archive/zip/crc.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/crc.js +7 -0
- package/dist/safe-bash/commands/archive/zip/crc.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/crypto.d.ts +4 -0
- package/dist/safe-bash/commands/archive/zip/crypto.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/crypto.js +34 -0
- package/dist/safe-bash/commands/archive/zip/crypto.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/help.d.ts +3 -0
- package/dist/safe-bash/commands/archive/zip/help.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/help.js +87 -0
- package/dist/safe-bash/commands/archive/zip/help.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/move.d.ts +12 -0
- package/dist/safe-bash/commands/archive/zip/move.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/move.js +60 -0
- package/dist/safe-bash/commands/archive/zip/move.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/options.js +5 -5
- package/dist/safe-bash/commands/archive/zip/options.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip-format.d.ts +1 -1
- package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip-format.js +14 -17
- package/dist/safe-bash/commands/archive/zip-format.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip.js +45 -15
- package/dist/safe-bash/commands/archive/zip.js.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts +2 -0
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.js +4 -0
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.js.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec.d.ts +4 -24
- package/dist/safe-bash/commands/bytes/compression/codec.d.ts.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec.js +12 -168
- package/dist/safe-bash/commands/bytes/compression/codec.js.map +1 -1
- package/dist/safe-bash/commands/cmp.js +1 -1
- package/dist/safe-bash/commands/cmp.js.map +1 -1
- package/dist/safe-bash/commands/csplit/index.browser.js +10 -7
- package/dist/safe-bash/commands/docx/index.browser.js +54 -0
- package/dist/safe-bash/commands/docx/index.browser.js.map +7 -0
- package/dist/safe-bash/commands/docx/index.d.ts +25 -0
- package/dist/safe-bash/commands/docx/index.d.ts.map +1 -0
- package/dist/safe-bash/commands/docx/index.js +42 -0
- package/dist/safe-bash/commands/docx/index.js.map +1 -0
- package/dist/safe-bash/commands/docx/io.d.ts +15 -0
- package/dist/safe-bash/commands/docx/io.d.ts.map +1 -0
- package/dist/safe-bash/commands/docx/io.js +16 -0
- package/dist/safe-bash/commands/docx/io.js.map +1 -0
- package/dist/safe-bash/commands/factor/index.browser.js +7 -5
- package/dist/safe-bash/commands/filesystem.d.ts.map +1 -1
- package/dist/safe-bash/commands/filesystem.js +9 -1
- package/dist/safe-bash/commands/filesystem.js.map +1 -1
- package/dist/safe-bash/commands/getopt/index.browser.js +7 -5
- package/dist/safe-bash/commands/hexdump/index.browser.js +8 -6
- package/dist/safe-bash/commands/iconv/index.browser.js +8 -6
- package/dist/safe-bash/commands/line-endings/index.browser.js +10 -7
- package/dist/safe-bash/commands/llm/index.browser.js +10 -8
- package/dist/safe-bash/commands/llm/providers/index.browser.js +3 -3
- package/dist/safe-bash/commands/network/index.browser.js +11 -8
- package/dist/safe-bash/commands/node/browser.d.ts +2 -0
- package/dist/safe-bash/commands/node/browser.d.ts.map +1 -0
- package/dist/safe-bash/commands/node/browser.js +2 -0
- package/dist/safe-bash/commands/node/browser.js.map +1 -0
- package/dist/safe-bash/commands/node/index.browser.js +18 -0
- package/dist/safe-bash/commands/node/index.browser.js.map +7 -0
- package/dist/safe-bash/commands/node/safejs.d.ts +6 -0
- package/dist/safe-bash/commands/node/safejs.d.ts.map +1 -1
- package/dist/safe-bash/commands/node/safejs.js +25 -1
- package/dist/safe-bash/commands/node/safejs.js.map +1 -1
- package/dist/safe-bash/commands/op/index.browser.js +3 -3
- package/dist/safe-bash/commands/op/index.js +0 -1
- package/dist/safe-bash/commands/op/index.js.map +2 -2
- package/dist/safe-bash/commands/pptx/index.d.ts +29 -0
- package/dist/safe-bash/commands/pptx/index.d.ts.map +1 -0
- package/dist/safe-bash/commands/pptx/index.js +153 -0
- package/dist/safe-bash/commands/pptx/index.js.map +1 -0
- package/dist/safe-bash/commands/pr/index.browser.js +8 -6
- package/dist/safe-bash/commands/predicates.js +1 -1
- package/dist/safe-bash/commands/python/execution.d.ts +3 -0
- package/dist/safe-bash/commands/python/execution.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/execution.js +193 -0
- package/dist/safe-bash/commands/python/execution.js.map +1 -0
- package/dist/safe-bash/commands/python/index.browser.js +21 -0
- package/dist/safe-bash/commands/python/index.browser.js.map +7 -0
- package/dist/safe-bash/commands/python/index.d.ts +49 -0
- package/dist/safe-bash/commands/python/index.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/index.js +317 -0
- package/dist/safe-bash/commands/python/index.js.map +1 -0
- package/dist/safe-bash/commands/python/installation.d.ts +9 -0
- package/dist/safe-bash/commands/python/installation.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/installation.js +80 -0
- package/dist/safe-bash/commands/python/installation.js.map +1 -0
- package/dist/safe-bash/commands/python/invocation.d.ts +10 -0
- package/dist/safe-bash/commands/python/invocation.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/invocation.js +81 -0
- package/dist/safe-bash/commands/python/invocation.js.map +1 -0
- package/dist/safe-bash/commands/python/node.d.ts +12 -0
- package/dist/safe-bash/commands/python/node.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/node.js +33 -0
- package/dist/safe-bash/commands/python/node.js.map +1 -0
- package/dist/safe-bash/commands/python/provisioning-runtime.d.ts +5 -0
- package/dist/safe-bash/commands/python/provisioning-runtime.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/provisioning-runtime.js +179 -0
- package/dist/safe-bash/commands/python/provisioning-runtime.js.map +1 -0
- package/dist/safe-bash/commands/python/provisioning.d.ts +49 -0
- package/dist/safe-bash/commands/python/provisioning.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/provisioning.js +320 -0
- package/dist/safe-bash/commands/python/provisioning.js.map +1 -0
- package/dist/safe-bash/commands/python/reply.d.ts +3 -0
- package/dist/safe-bash/commands/python/reply.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/reply.js +103 -0
- package/dist/safe-bash/commands/python/reply.js.map +1 -0
- package/dist/safe-bash/commands/python/worker.browser.js +736 -0
- package/dist/safe-bash/commands/python/worker.browser.js.map +7 -0
- package/dist/safe-bash/commands/python/worker.d.ts +47 -0
- package/dist/safe-bash/commands/python/worker.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/worker.js +373 -0
- package/dist/safe-bash/commands/python/worker.js.map +1 -0
- package/dist/safe-bash/commands/safejs/index.d.ts +5 -17
- package/dist/safe-bash/commands/safejs/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/safejs/index.js +3 -202
- package/dist/safe-bash/commands/safejs/index.js.map +1 -1
- package/dist/safe-bash/commands/safejs/runtime.d.ts +15 -0
- package/dist/safe-bash/commands/safejs/runtime.d.ts.map +1 -0
- package/dist/safe-bash/commands/safejs/runtime.js +190 -0
- package/dist/safe-bash/commands/safejs/runtime.js.map +1 -0
- package/dist/safe-bash/commands/tsort/index.browser.js +8 -6
- package/dist/safe-bash/commands/xml/index.browser.js +9 -7
- package/dist/safe-bash/commands/yq/index.browser.js +10 -8
- package/dist/safe-bash/commands/yq/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/yq/index.js +32 -4
- package/dist/safe-bash/commands/yq/index.js.map +1 -1
- package/dist/safe-bash/commands/yq/parser.d.ts.map +1 -1
- package/dist/safe-bash/commands/yq/parser.js +21 -5
- package/dist/safe-bash/commands/yq/parser.js.map +1 -1
- package/dist/safe-bash/contracts/command.d.ts +2 -0
- package/dist/safe-bash/contracts/command.d.ts.map +1 -1
- package/dist/safe-bash/contracts/command.js +6 -2
- package/dist/safe-bash/contracts/command.js.map +1 -1
- package/dist/safe-bash/contracts/filesystem-descriptor.d.ts +13 -0
- package/dist/safe-bash/contracts/filesystem-descriptor.d.ts.map +1 -0
- package/dist/safe-bash/contracts/filesystem-descriptor.js +189 -0
- package/dist/safe-bash/contracts/filesystem-descriptor.js.map +1 -0
- package/dist/safe-bash/contracts/filesystem-output-budget.d.ts +15 -0
- package/dist/safe-bash/contracts/filesystem-output-budget.d.ts.map +1 -0
- package/dist/safe-bash/contracts/filesystem-output-budget.js +69 -0
- package/dist/safe-bash/contracts/filesystem-output-budget.js.map +1 -0
- package/dist/safe-bash/contracts/filesystem-output.d.ts +11 -5
- package/dist/safe-bash/contracts/filesystem-output.d.ts.map +1 -1
- package/dist/safe-bash/contracts/filesystem-output.js +229 -20
- package/dist/safe-bash/contracts/filesystem-output.js.map +1 -1
- package/dist/safe-bash/contracts/io.d.ts +29 -0
- package/dist/safe-bash/contracts/io.d.ts.map +1 -1
- package/dist/safe-bash/contracts/io.js +317 -37
- package/dist/safe-bash/contracts/io.js.map +1 -1
- package/dist/safe-bash/core.browser.js +5963 -6522
- package/dist/safe-bash/core.browser.js.map +4 -4
- package/dist/safe-bash/core.d.ts +2 -0
- package/dist/safe-bash/core.d.ts.map +1 -1
- package/dist/safe-bash/core.js +2 -0
- package/dist/safe-bash/core.js.map +1 -1
- package/dist/safe-bash/index.d.ts +1 -0
- package/dist/safe-bash/index.d.ts.map +1 -1
- package/dist/safe-bash/index.js +1 -0
- package/dist/safe-bash/index.js.map +1 -1
- package/dist/safe-bash/opt-in/commands/cmp/compare.js +95 -0
- package/dist/safe-bash/opt-in/commands/cmp/index.d.ts +6 -0
- package/dist/safe-bash/opt-in/commands/cmp/index.js +99 -0
- package/dist/safe-bash/opt-in/commands/cmp/io.js +218 -0
- package/dist/safe-bash/opt-in/commands/cmp/options.d.ts +24 -0
- package/dist/safe-bash/opt-in/commands/cmp/options.js +195 -0
- package/dist/safe-bash/opt-in/commands/dd/conversions.js +152 -0
- package/dist/safe-bash/opt-in/commands/dd/index.d.ts +18 -0
- package/dist/safe-bash/opt-in/commands/dd/index.js +561 -0
- package/dist/safe-bash/opt-in/commands/dd/io.d.ts +31 -0
- package/dist/safe-bash/opt-in/commands/dd/io.js +244 -0
- package/dist/safe-bash/opt-in/commands/dd/options.js +184 -0
- package/dist/safe-bash/opt-in/commands/dd/report.js +69 -0
- package/dist/safe-bash/opt-in/commands/install/arguments.js +224 -0
- package/dist/safe-bash/opt-in/commands/install/index.d.ts +6 -0
- package/dist/safe-bash/opt-in/commands/install/index.js +678 -0
- package/dist/safe-bash/opt-in/commands/install/mode.js +71 -0
- package/dist/safe-bash/opt-in/commands/install/options.d.ts +36 -0
- package/dist/safe-bash/opt-in/commands/install/options.js +27 -0
- package/dist/safe-bash/opt-in/commands/shuf/args.js +179 -0
- package/dist/safe-bash/opt-in/commands/shuf/index.d.ts +6 -0
- package/dist/safe-bash/opt-in/commands/shuf/index.js +20 -0
- package/dist/safe-bash/opt-in/commands/shuf/input.js +93 -0
- package/dist/safe-bash/opt-in/commands/shuf/options.d.ts +9 -0
- package/dist/safe-bash/opt-in/commands/shuf/options.js +8 -0
- package/dist/safe-bash/opt-in/commands/shuf/random.js +114 -0
- package/dist/safe-bash/opt-in/commands/shuf/shuf.d.ts +3 -0
- package/dist/safe-bash/opt-in/commands/shuf/shuf.js +230 -0
- package/dist/safe-bash/opt-in/commands/shuf/usage.js +24 -0
- package/dist/safe-bash/opt-in/commands/truncate/arguments.js +186 -0
- package/dist/safe-bash/opt-in/commands/truncate/index.d.ts +9 -0
- package/dist/safe-bash/opt-in/commands/truncate/index.js +244 -0
- package/dist/safe-bash/opt-in/commands/yes/index.d.ts +11 -0
- package/dist/safe-bash/opt-in/commands/yes/index.js +167 -0
- package/dist/safe-bash/opt-in/commands/yq/arguments.js +177 -0
- package/dist/safe-bash/opt-in/commands/yq/evaluate.js +564 -0
- package/dist/safe-bash/opt-in/commands/yq/expression.js +183 -0
- package/dist/safe-bash/opt-in/commands/yq/inplace.js +65 -0
- package/dist/safe-bash/opt-in/commands/yq/mike.d.ts +9 -0
- package/dist/safe-bash/opt-in/commands/yq/mike.js +192 -0
- package/dist/safe-bash/opt-in/commands/yq/native-encoder.js +165 -0
- package/dist/safe-bash/opt-in/commands/yq/native-work.d.ts +44 -0
- package/dist/safe-bash/opt-in/commands/yq/native-work.js +188 -0
- package/dist/safe-bash/opt-in/commands/yq/nodes.js +621 -0
- package/dist/safe-bash/opt-in/entrypoints/arrays.d.ts +1 -0
- package/dist/safe-bash/opt-in/entrypoints/arrays.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/cmp.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/cmp.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/dd.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/dd.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/devices.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/devices.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/install.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/install.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/jobs.d.ts +1 -0
- package/dist/safe-bash/opt-in/entrypoints/jobs.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/mapfile.d.ts +1 -0
- package/dist/safe-bash/opt-in/entrypoints/mapfile.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/read.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/read.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/shuf.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/shuf.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/trap.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/trap.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/truncate.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/truncate.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/yes.d.ts +2 -0
- package/dist/safe-bash/opt-in/entrypoints/yes.js +1 -0
- package/dist/safe-bash/opt-in/entrypoints/yq.d.ts +3 -0
- package/dist/safe-bash/opt-in/entrypoints/yq.js +1 -0
- package/dist/safe-bash/opt-in/fs/devices/index.d.ts +8 -0
- package/dist/safe-bash/opt-in/fs/devices/index.js +292 -0
- package/dist/safe-bash/opt-in/optional.d.ts +28 -0
- package/dist/safe-bash/opt-in/optional.js +14 -0
- package/dist/safe-bash/opt-in/shell/extensions/arrays/index.d.ts +2 -0
- package/dist/safe-bash/opt-in/shell/extensions/arrays/index.js +4 -0
- package/dist/safe-bash/opt-in/shell/extensions/jobs/index.d.ts +2 -0
- package/dist/safe-bash/opt-in/shell/extensions/jobs/index.js +291 -0
- package/dist/safe-bash/opt-in/shell/extensions/jobs/state.js +374 -0
- package/dist/safe-bash/opt-in/shell/extensions/mapfile/index.d.ts +24 -0
- package/dist/safe-bash/opt-in/shell/extensions/mapfile/index.js +338 -0
- package/dist/safe-bash/opt-in/shell/extensions/read/index.d.ts +5 -0
- package/dist/safe-bash/opt-in/shell/extensions/read/index.js +351 -0
- package/dist/safe-bash/opt-in/shell/extensions/trap/index.d.ts +9 -0
- package/dist/safe-bash/opt-in/shell/extensions/trap/index.js +210 -0
- package/dist/safe-bash/optional-host.d.ts +5 -0
- package/dist/safe-bash/optional-host.d.ts.map +1 -0
- package/dist/safe-bash/optional-host.js +3 -0
- package/dist/safe-bash/optional-host.js.map +1 -0
- package/dist/safe-bash/shell/arrays/bindings.d.ts +15 -5
- package/dist/safe-bash/shell/arrays/bindings.d.ts.map +1 -1
- package/dist/safe-bash/shell/arrays/bindings.js +131 -23
- package/dist/safe-bash/shell/arrays/bindings.js.map +1 -1
- package/dist/safe-bash/shell/arrays/ledger.d.ts +1 -0
- package/dist/safe-bash/shell/arrays/ledger.d.ts.map +1 -1
- package/dist/safe-bash/shell/arrays/ledger.js +19 -0
- package/dist/safe-bash/shell/arrays/ledger.js.map +1 -1
- package/dist/safe-bash/shell/arrays/state.d.ts.map +1 -1
- package/dist/safe-bash/shell/arrays/state.js +3 -1
- package/dist/safe-bash/shell/arrays/state.js.map +1 -1
- package/dist/safe-bash/shell/arrays/syntax.d.ts +4 -1
- package/dist/safe-bash/shell/arrays/syntax.d.ts.map +1 -1
- package/dist/safe-bash/shell/arrays/syntax.js +3 -3
- package/dist/safe-bash/shell/arrays/syntax.js.map +1 -1
- package/dist/safe-bash/shell/conditional.js +1 -1
- package/dist/safe-bash/shell/descriptors.d.ts +31 -0
- package/dist/safe-bash/shell/descriptors.d.ts.map +1 -0
- package/dist/safe-bash/shell/descriptors.js +234 -0
- package/dist/safe-bash/shell/descriptors.js.map +1 -0
- package/dist/safe-bash/shell/diagnostic-name-ranges.d.ts +2 -0
- package/dist/safe-bash/shell/diagnostic-name-ranges.d.ts.map +1 -0
- package/dist/safe-bash/shell/diagnostic-name-ranges.js +717 -0
- package/dist/safe-bash/shell/diagnostic-name-ranges.js.map +1 -0
- package/dist/safe-bash/shell/diagnostic-name.d.ts +3 -0
- package/dist/safe-bash/shell/diagnostic-name.d.ts.map +1 -0
- package/dist/safe-bash/shell/diagnostic-name.js +89 -0
- package/dist/safe-bash/shell/diagnostic-name.js.map +1 -0
- package/dist/safe-bash/shell/display.js +1 -1
- package/dist/safe-bash/shell/display.js.map +1 -1
- package/dist/safe-bash/shell/extensions.d.ts +188 -0
- package/dist/safe-bash/shell/extensions.d.ts.map +1 -0
- package/dist/safe-bash/shell/extensions.js +141 -0
- package/dist/safe-bash/shell/extensions.js.map +1 -0
- package/dist/safe-bash/shell/input.d.ts +66 -14
- package/dist/safe-bash/shell/input.d.ts.map +1 -1
- package/dist/safe-bash/shell/input.js +947 -173
- package/dist/safe-bash/shell/input.js.map +1 -1
- package/dist/safe-bash/shell/parser.d.ts +38 -6
- package/dist/safe-bash/shell/parser.d.ts.map +1 -1
- package/dist/safe-bash/shell/parser.js +339 -52
- package/dist/safe-bash/shell/parser.js.map +1 -1
- package/dist/safe-bash/shell/runtime.d.ts +92 -20
- package/dist/safe-bash/shell/runtime.d.ts.map +1 -1
- package/dist/safe-bash/shell/runtime.js +2547 -689
- package/dist/safe-bash/shell/runtime.js.map +1 -1
- package/dist/safe-bash/shell/shell.d.ts.map +1 -1
- package/dist/safe-bash/shell/shell.js +52 -21
- package/dist/safe-bash/shell/shell.js.map +1 -1
- package/dist/safe-bash/shell/types.d.ts +4 -0
- package/dist/safe-bash/shell/types.d.ts.map +1 -1
- package/dist/safe-bash/shell/types.js.map +1 -1
- package/package.json +99 -5
- package/dist/safe-bash/chunks/chunk-4DBWBEU7.js +0 -194
- package/dist/safe-bash/chunks/chunk-4DBWBEU7.js.map +0 -7
- package/dist/safe-bash/chunks/chunk-CXMIIXJA.js +0 -178
- package/dist/safe-bash/chunks/chunk-CXMIIXJA.js.map +0 -7
- package/dist/safe-bash/chunks/chunk-HHJSJWUD.js.map +0 -7
- /package/dist/safe-bash/chunks/{bz2-B2RXT4EX.js.map → bz2-ACU4EOVE.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-RNKTWFEM.js.map → chunk-CDBQXRWL.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-AFH57PPL.js.map → chunk-IEKESMO4.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-DPJWEGIX.js.map → chunk-JLBIUYT3.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-PVJJFCGA.js.map → chunk-M3GPCYSP.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-2KL6W6NB.js.map → chunk-O2EVBRKF.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-C7QNJ3D4.js.map → chunk-WYTI64IU.js.map} +0 -0
- /package/dist/safe-bash/chunks/{xz-AVXFDXW4.js.map → xz-U4QDTPZL.js.map} +0 -0
- /package/dist/safe-bash/chunks/{zstd-R6RPHJYO.js.map → zstd-OG5RPYXO.js.map} +0 -0
|
@@ -1,203 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { makeSafeJsFsModule } from "../../integrations/safejs/index.js";
|
|
5
|
-
import { record, withSignal } from "../../integrations/safejs/values.js";
|
|
6
|
-
import { pathOf, UsageError } from "../internal.js";
|
|
7
|
-
import { GuestInput, GuestOutput } from "./io.js";
|
|
8
|
-
import { commandLimits, defaultSafeJsLimits, invocation } from "./options.js";
|
|
9
|
-
import { SafeJsCommandLimitError } from "./types.js";
|
|
10
|
-
export { defaultSafeJsLimits, SafeJsCommandLimitError };
|
|
11
|
-
const help = "Usage: safejs [-p|--print] [-e SOURCE [--] ARG... | FILE ARG... | - ARG...]\nNo source operand reads SafeJS source from stdin. Inline/file source leaves stdin for guest data.\n-p prints the returned string or JSON value followed by LF; this is not Node.js.\nGuest modules: fs, stdio, command. A host-injected SafeJS runtime is required.\n";
|
|
12
|
-
class GuestDiagnostic extends PublicDiagnostic {
|
|
13
|
-
info;
|
|
14
|
-
constructor(info) {
|
|
15
|
-
super(info.message);
|
|
16
|
-
this.info = info;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function errorInfo(error) {
|
|
20
|
-
if (typeof error === "string")
|
|
21
|
-
return { name: "Error", code: "", message: error };
|
|
22
|
-
if (typeof error !== "object" || error === null)
|
|
23
|
-
return { name: "Error", code: "", message: "SafeJS execution failed" };
|
|
24
|
-
const field = (name) => {
|
|
25
|
-
const descriptor = Object.getOwnPropertyDescriptor(error, name);
|
|
26
|
-
return descriptor && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : "";
|
|
27
|
-
};
|
|
28
|
-
return { name: field("name"), code: field("code"), message: field("message") || "SafeJS execution failed" };
|
|
29
|
-
}
|
|
30
|
-
function statusField(error, name) {
|
|
31
|
-
if (typeof error !== "object" || error === null)
|
|
32
|
-
return "";
|
|
33
|
-
const descriptor = Object.getOwnPropertyDescriptor(error, name);
|
|
34
|
-
return descriptor && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : "";
|
|
35
|
-
}
|
|
36
|
-
function validateRuntime(runtime) {
|
|
37
|
-
if (runtime === undefined)
|
|
38
|
-
return;
|
|
39
|
-
for (const key of ["run", "createBudget", "makeFsModule", "declareHostOperation"]) {
|
|
40
|
-
if (typeof runtime[key] !== "function")
|
|
41
|
-
throw new TypeError(`SafeJS runtime.${key} must be injected`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
export function createSafeJsCommands(options = {}, dialect = {
|
|
45
|
-
name: "safejs", description: "Execute an injected SafeJS interpreter against the virtual filesystem", help, invocation,
|
|
46
|
-
}) {
|
|
47
|
-
const limits = commandLimits(options.limits);
|
|
48
|
-
const runtime = options.runtime;
|
|
49
|
-
validateRuntime(runtime);
|
|
50
|
-
return [{ name: dialect.name, description: dialect.description, async execute(context) {
|
|
51
|
-
const deadline = Date.now() + limits.timeoutMs;
|
|
52
|
-
const diagnose = async (message) => {
|
|
53
|
-
const diagnostic = new AbortController();
|
|
54
|
-
const timer = setTimeout(() => diagnostic.abort(), Math.max(1, Math.min(limits.timeoutMs, deadline - Date.now())));
|
|
55
|
-
try {
|
|
56
|
-
await writeDiagnostic(context.stderr, `${dialect.name}: ${message.slice(0, 4096)}\n`, AbortSignal.any([context.signal, diagnostic.signal]));
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
context.signal.throwIfAborted();
|
|
60
|
-
if (!diagnostic.signal.aborted)
|
|
61
|
-
throw error;
|
|
62
|
-
}
|
|
63
|
-
finally {
|
|
64
|
-
clearTimeout(timer);
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
let parsed;
|
|
68
|
-
try {
|
|
69
|
-
parsed = dialect.invocation(context.args);
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
await diagnose(publicDiagnosticMessage(error, context.onInternalError));
|
|
73
|
-
return { exitCode: 2 };
|
|
74
|
-
}
|
|
75
|
-
context.signal.throwIfAborted();
|
|
76
|
-
if (parsed.help) {
|
|
77
|
-
await writeBytes(context.stdout, Buffer.from(dialect.help), context.signal);
|
|
78
|
-
return { exitCode: 0 };
|
|
79
|
-
}
|
|
80
|
-
if (!runtime) {
|
|
81
|
-
await diagnose("runtime not installed; inject run, createBudget, makeFsModule and declareHostOperation");
|
|
82
|
-
return { exitCode: 127 };
|
|
83
|
-
}
|
|
84
|
-
const controller = new AbortController();
|
|
85
|
-
const signal = AbortSignal.any([context.signal, controller.signal]);
|
|
86
|
-
let failure;
|
|
87
|
-
let hasFailure = false;
|
|
88
|
-
const fail = (error) => {
|
|
89
|
-
if (!hasFailure && !controller.signal.aborted) {
|
|
90
|
-
hasFailure = true;
|
|
91
|
-
failure = error;
|
|
92
|
-
queueMicrotask(() => controller.abort(error));
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
const timeout = setTimeout(() => fail(new SafeJsCommandLimitError("timeoutMs")), limits.timeoutMs);
|
|
96
|
-
let input;
|
|
97
|
-
const output = new GuestOutput(context.stdout, context.stderr, limits.maxOutputBytes, signal, fail);
|
|
98
|
-
let exitCode = 0;
|
|
99
|
-
let thrown;
|
|
100
|
-
let failed = false;
|
|
101
|
-
try {
|
|
102
|
-
const fromStdin = parsed.source === undefined && parsed.file === "-";
|
|
103
|
-
let source = parsed.source;
|
|
104
|
-
let filename = parsed.file;
|
|
105
|
-
if (source === undefined) {
|
|
106
|
-
if (!fromStdin)
|
|
107
|
-
filename = pathOf(context, parsed.file);
|
|
108
|
-
const capabilities = fromStdin ? undefined : await withSignal(signal, async () => await context.fs.capabilitiesFor?.(filename, { signal }) ?? context.fs.capabilities);
|
|
109
|
-
const bytes = fromStdin ? context.stdin : context.fs.readStream && capabilities?.streamingRead !== false
|
|
110
|
-
? context.fs.readStream(filename, { signal, chunkSize: 65536 })
|
|
111
|
-
: toByteSource(await withSignal(signal, () => context.fs.readFile(filename, { signal, maxBytes: limits.maxSourceBytes })));
|
|
112
|
-
const reader = new GuestInput(bytes, limits.maxSourceBytes, signal, fail, "maxSourceBytes");
|
|
113
|
-
try {
|
|
114
|
-
source = await reader.readText();
|
|
115
|
-
}
|
|
116
|
-
finally {
|
|
117
|
-
await reader.close();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else if (Buffer.byteLength(source) > limits.maxSourceBytes)
|
|
121
|
-
throw new SafeJsCommandLimitError("maxSourceBytes");
|
|
122
|
-
if (source.startsWith("\uFEFF"))
|
|
123
|
-
source = source.slice(1);
|
|
124
|
-
input = new GuestInput(fromStdin ? toByteSource("") : context.stdin, limits.maxInputBytes, signal, fail);
|
|
125
|
-
const guestInput = input;
|
|
126
|
-
const declare = runtime.declareHostOperation;
|
|
127
|
-
const stdio = {
|
|
128
|
-
readBytes: declare(async (size) => guestInput.readBytes(size), "read-side-effect"),
|
|
129
|
-
readText: declare(async () => guestInput.readText(), "read-side-effect"),
|
|
130
|
-
write: declare(async (text) => output.text(text), "read-side-effect"),
|
|
131
|
-
writeBytes: declare(async (bytes) => output.bytes(bytes), "read-side-effect"),
|
|
132
|
-
error: declare(async (text) => output.text(text, true), "read-side-effect"),
|
|
133
|
-
errorBytes: declare(async (bytes) => output.bytes(bytes, true), "read-side-effect"),
|
|
134
|
-
};
|
|
135
|
-
const env = Object.create(null);
|
|
136
|
-
for (const [key, value] of Object.entries(context.env))
|
|
137
|
-
env[key] = value;
|
|
138
|
-
const command = {
|
|
139
|
-
args: [...parsed.args], cwd: context.cwd, env,
|
|
140
|
-
setExitCode: declare((value) => {
|
|
141
|
-
signal.throwIfAborted();
|
|
142
|
-
if (typeof value !== "number" || !Number.isInteger(value) || value < 0 || value > 255)
|
|
143
|
-
throw new TypeError("exit code must be an integer from 0 through 255");
|
|
144
|
-
exitCode = value;
|
|
145
|
-
}, "read-side-effect"),
|
|
146
|
-
};
|
|
147
|
-
const budget = runtime.createBudget({ maxSteps: limits.maxSteps, deadline,
|
|
148
|
-
maxCallDepth: limits.maxCallDepth, stringLength: limits.stringLength, arrayLength: limits.arrayLength, dataSize: limits.dataSize });
|
|
149
|
-
const modules = { fs: makeSafeJsFsModule(runtime.makeFsModule, context.fs, { cwd: context.cwd, signal }), stdio, command };
|
|
150
|
-
const prepared = dialect.prepare?.(source, { ...parsed, file: filename }, modules);
|
|
151
|
-
const result = record(await withSignal(signal, () => runtime.run(prepared?.source ?? source, {
|
|
152
|
-
budget, filename, modules, signal, ...(prepared ? { bindings: prepared.bindings } : {}),
|
|
153
|
-
sink: { log: (...args) => output.console(args, false), error: (...args) => output.console(args, true) },
|
|
154
|
-
})), "SafeJS run result");
|
|
155
|
-
signal.throwIfAborted();
|
|
156
|
-
if (result.ok !== true && result.ok !== false)
|
|
157
|
-
throw new TypeError("Invalid SafeJS run result.ok");
|
|
158
|
-
if (!result.ok) {
|
|
159
|
-
const info = errorInfo(result.error);
|
|
160
|
-
throw new GuestDiagnostic(info);
|
|
161
|
-
}
|
|
162
|
-
if (parsed.print && result.returnValue !== undefined)
|
|
163
|
-
await output.result(result.returnValue);
|
|
164
|
-
await output.drain();
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
thrown = hasFailure ? failure : error;
|
|
168
|
-
failed = true;
|
|
169
|
-
}
|
|
170
|
-
finally {
|
|
171
|
-
try {
|
|
172
|
-
await output.drain();
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
thrown = hasFailure ? failure : error;
|
|
176
|
-
failed = true;
|
|
177
|
-
}
|
|
178
|
-
controller.abort();
|
|
179
|
-
clearTimeout(timeout);
|
|
180
|
-
await input?.close().catch(() => { });
|
|
181
|
-
}
|
|
182
|
-
context.signal.throwIfAborted();
|
|
183
|
-
if (failed) {
|
|
184
|
-
const info = thrown instanceof GuestDiagnostic ? thrown.info : { name: statusField(thrown, "name"), code: statusField(thrown, "code") };
|
|
185
|
-
const detail = thrown instanceof SafeJsCommandLimitError ? thrown.message : publicDiagnosticMessage(thrown, context.onInternalError);
|
|
186
|
-
if (!output.stderrFailed)
|
|
187
|
-
await diagnose(detail);
|
|
188
|
-
return { exitCode: thrown instanceof SafeJsCommandLimitError || info.code === "budgetExceeded" ? 124
|
|
189
|
-
: thrown instanceof UsageError || info.name === "ParseError" ? 2 : 1 };
|
|
190
|
-
}
|
|
191
|
-
return { exitCode };
|
|
192
|
-
} }];
|
|
193
|
-
}
|
|
194
|
-
export function safeJsCommands(options = {}) {
|
|
195
|
-
const definitions = createSafeJsCommands(options);
|
|
196
|
-
return { name: "safejs-commands", setup(host) {
|
|
197
|
-
if (!options.replace && host.commands.has("safejs"))
|
|
198
|
-
throw new Error("Command already registered: safejs");
|
|
199
|
-
for (const definition of definitions)
|
|
200
|
-
host.commands.register(definition, { replace: options.replace ?? false });
|
|
201
|
-
} };
|
|
202
|
-
}
|
|
1
|
+
export { createNodeCommands as createSafeJsCommands, nodeCommands as safeJsCommands } from "../node/browser.js";
|
|
2
|
+
export { defaultSafeJsLimits } from "./options.js";
|
|
3
|
+
export { SafeJsCommandLimitError } from "./types.js";
|
|
203
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/safejs/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/safejs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,oBAAoB,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEhH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type CommandDefinition } from "../../contracts/index.js";
|
|
2
|
+
import { type Invocation } from "./options.js";
|
|
3
|
+
import { type SafeJsCommandsOptions, type SafeJsModule } from "./types.js";
|
|
4
|
+
export interface SafeJsCommandDialect {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly description: string;
|
|
7
|
+
readonly help: string;
|
|
8
|
+
readonly invocation: (args: readonly string[]) => Invocation;
|
|
9
|
+
readonly prepare?: (source: string, selected: Invocation, modules: Record<string, SafeJsModule>) => {
|
|
10
|
+
readonly source: string;
|
|
11
|
+
readonly bindings: SafeJsModule;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function createSafeJsCommands<Budget = unknown>(options: SafeJsCommandsOptions<Budget>, dialect: SafeJsCommandDialect): readonly CommandDefinition[];
|
|
15
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/commands/safejs/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAM5F,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAA2B,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAsB,MAAM,YAAY,CAAC;AAExH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,UAAU,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK;QAClG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KACjC,CAAC;CACH;AA6BD,wBAAgB,oBAAoB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,oBAAoB,GAAG,SAAS,iBAAiB,EAAE,CAyG1J"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { PublicDiagnostic, publicDiagnosticMessage } from "../../diagnostics.js";
|
|
2
|
+
import { toByteSource, writeBytes } from "../../contracts/index.js";
|
|
3
|
+
import { writeDiagnostic } from "../../escaping.js";
|
|
4
|
+
import { makeSafeJsFsModule } from "../../integrations/safejs/index.js";
|
|
5
|
+
import { record, withSignal } from "../../integrations/safejs/values.js";
|
|
6
|
+
import { pathOf, UsageError } from "../internal.js";
|
|
7
|
+
import { GuestInput, GuestOutput } from "./io.js";
|
|
8
|
+
import { commandLimits } from "./options.js";
|
|
9
|
+
import { SafeJsCommandLimitError } from "./types.js";
|
|
10
|
+
class GuestDiagnostic extends PublicDiagnostic {
|
|
11
|
+
info;
|
|
12
|
+
constructor(info) {
|
|
13
|
+
super(info.message);
|
|
14
|
+
this.info = info;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function errorInfo(error) {
|
|
18
|
+
if (typeof error === "string")
|
|
19
|
+
return { name: "Error", code: "", message: error };
|
|
20
|
+
if (typeof error !== "object" || error === null)
|
|
21
|
+
return { name: "Error", code: "", message: "SafeJS execution failed" };
|
|
22
|
+
const field = (name) => {
|
|
23
|
+
const descriptor = Object.getOwnPropertyDescriptor(error, name);
|
|
24
|
+
return descriptor && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : "";
|
|
25
|
+
};
|
|
26
|
+
return { name: field("name"), code: field("code"), message: field("message") || "SafeJS execution failed" };
|
|
27
|
+
}
|
|
28
|
+
function statusField(error, name) {
|
|
29
|
+
if (typeof error !== "object" || error === null)
|
|
30
|
+
return "";
|
|
31
|
+
const descriptor = Object.getOwnPropertyDescriptor(error, name);
|
|
32
|
+
return descriptor && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : "";
|
|
33
|
+
}
|
|
34
|
+
function validateRuntime(runtime) {
|
|
35
|
+
if (runtime === undefined)
|
|
36
|
+
return;
|
|
37
|
+
for (const key of ["run", "createBudget", "makeFsModule", "declareHostOperation"]) {
|
|
38
|
+
if (typeof runtime[key] !== "function")
|
|
39
|
+
throw new TypeError(`SafeJS runtime.${key} must be injected`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function createSafeJsCommands(options, dialect) {
|
|
43
|
+
const limits = commandLimits(options.limits);
|
|
44
|
+
const runtime = options.runtime;
|
|
45
|
+
validateRuntime(runtime);
|
|
46
|
+
return [{ name: dialect.name, description: dialect.description, async execute(context) {
|
|
47
|
+
const deadline = Date.now() + limits.timeoutMs;
|
|
48
|
+
const diagnose = async (message) => {
|
|
49
|
+
const diagnostic = new AbortController();
|
|
50
|
+
const timer = setTimeout(() => diagnostic.abort(), Math.max(1, Math.min(limits.timeoutMs, deadline - Date.now())));
|
|
51
|
+
try {
|
|
52
|
+
await writeDiagnostic(context.stderr, `${dialect.name}: ${message.slice(0, 4096)}\n`, AbortSignal.any([context.signal, diagnostic.signal]));
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
context.signal.throwIfAborted();
|
|
56
|
+
if (!diagnostic.signal.aborted)
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
clearTimeout(timer);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
let parsed;
|
|
64
|
+
try {
|
|
65
|
+
parsed = dialect.invocation(context.args);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
await diagnose(publicDiagnosticMessage(error, context.onInternalError));
|
|
69
|
+
return { exitCode: 2 };
|
|
70
|
+
}
|
|
71
|
+
context.signal.throwIfAborted();
|
|
72
|
+
if (parsed.help) {
|
|
73
|
+
await writeBytes(context.stdout, Buffer.from(dialect.help), context.signal);
|
|
74
|
+
return { exitCode: 0 };
|
|
75
|
+
}
|
|
76
|
+
if (!runtime) {
|
|
77
|
+
await diagnose("runtime not installed; inject run, createBudget, makeFsModule and declareHostOperation");
|
|
78
|
+
return { exitCode: 127 };
|
|
79
|
+
}
|
|
80
|
+
const controller = new AbortController();
|
|
81
|
+
const signal = AbortSignal.any([context.signal, controller.signal]);
|
|
82
|
+
let failure;
|
|
83
|
+
let hasFailure = false;
|
|
84
|
+
const fail = (error) => {
|
|
85
|
+
if (!hasFailure && !controller.signal.aborted) {
|
|
86
|
+
hasFailure = true;
|
|
87
|
+
failure = error;
|
|
88
|
+
queueMicrotask(() => controller.abort(error));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const timeout = setTimeout(() => fail(new SafeJsCommandLimitError("timeoutMs")), limits.timeoutMs);
|
|
92
|
+
let input;
|
|
93
|
+
const output = new GuestOutput(context.stdout, context.stderr, limits.maxOutputBytes, signal, fail);
|
|
94
|
+
let exitCode = 0;
|
|
95
|
+
let thrown;
|
|
96
|
+
let failed = false;
|
|
97
|
+
try {
|
|
98
|
+
const fromStdin = parsed.source === undefined && parsed.file === "-";
|
|
99
|
+
let source = parsed.source;
|
|
100
|
+
let filename = parsed.file;
|
|
101
|
+
if (source === undefined) {
|
|
102
|
+
if (!fromStdin)
|
|
103
|
+
filename = pathOf(context, parsed.file);
|
|
104
|
+
const capabilities = fromStdin ? undefined : await withSignal(signal, async () => await context.fs.capabilitiesFor?.(filename, { signal }) ?? context.fs.capabilities);
|
|
105
|
+
const bytes = fromStdin ? context.stdin : context.fs.readStream && capabilities?.streamingRead !== false
|
|
106
|
+
? context.fs.readStream(filename, { signal, chunkSize: 65536 })
|
|
107
|
+
: toByteSource(await withSignal(signal, () => context.fs.readFile(filename, { signal, maxBytes: limits.maxSourceBytes })));
|
|
108
|
+
const reader = new GuestInput(bytes, limits.maxSourceBytes, signal, fail, "maxSourceBytes");
|
|
109
|
+
try {
|
|
110
|
+
source = await reader.readText();
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
await reader.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else if (Buffer.byteLength(source) > limits.maxSourceBytes)
|
|
117
|
+
throw new SafeJsCommandLimitError("maxSourceBytes");
|
|
118
|
+
if (source.startsWith("\uFEFF"))
|
|
119
|
+
source = source.slice(1);
|
|
120
|
+
input = new GuestInput(fromStdin ? toByteSource("") : context.stdin, limits.maxInputBytes, signal, fail);
|
|
121
|
+
const guestInput = input;
|
|
122
|
+
const declare = runtime.declareHostOperation;
|
|
123
|
+
const stdio = {
|
|
124
|
+
readBytes: declare(async (size) => guestInput.readBytes(size), "read-side-effect"),
|
|
125
|
+
readText: declare(async () => guestInput.readText(), "read-side-effect"),
|
|
126
|
+
write: declare(async (text) => output.text(text), "read-side-effect"),
|
|
127
|
+
writeBytes: declare(async (bytes) => output.bytes(bytes), "read-side-effect"),
|
|
128
|
+
error: declare(async (text) => output.text(text, true), "read-side-effect"),
|
|
129
|
+
errorBytes: declare(async (bytes) => output.bytes(bytes, true), "read-side-effect"),
|
|
130
|
+
};
|
|
131
|
+
const env = Object.create(null);
|
|
132
|
+
for (const [key, value] of Object.entries(context.env))
|
|
133
|
+
env[key] = value;
|
|
134
|
+
const command = {
|
|
135
|
+
args: [...parsed.args], cwd: context.cwd, env,
|
|
136
|
+
setExitCode: declare((value) => {
|
|
137
|
+
signal.throwIfAborted();
|
|
138
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value < 0 || value > 255)
|
|
139
|
+
throw new TypeError("exit code must be an integer from 0 through 255");
|
|
140
|
+
exitCode = value;
|
|
141
|
+
}, "read-side-effect"),
|
|
142
|
+
};
|
|
143
|
+
const budget = runtime.createBudget({ maxSteps: limits.maxSteps, deadline,
|
|
144
|
+
maxCallDepth: limits.maxCallDepth, stringLength: limits.stringLength, arrayLength: limits.arrayLength, dataSize: limits.dataSize });
|
|
145
|
+
const modules = { fs: makeSafeJsFsModule(runtime.makeFsModule, context.fs, { cwd: context.cwd, signal }), stdio, command };
|
|
146
|
+
const prepared = dialect.prepare?.(source, { ...parsed, file: filename }, modules);
|
|
147
|
+
const result = record(await withSignal(signal, () => runtime.run(prepared?.source ?? source, {
|
|
148
|
+
budget, filename, modules, signal, ...(prepared ? { bindings: prepared.bindings } : {}),
|
|
149
|
+
sink: { log: (...args) => output.console(args, false), error: (...args) => output.console(args, true) },
|
|
150
|
+
})), "SafeJS run result");
|
|
151
|
+
signal.throwIfAborted();
|
|
152
|
+
if (result.ok !== true && result.ok !== false)
|
|
153
|
+
throw new TypeError("Invalid SafeJS run result.ok");
|
|
154
|
+
if (!result.ok) {
|
|
155
|
+
const info = errorInfo(result.error);
|
|
156
|
+
throw new GuestDiagnostic(info);
|
|
157
|
+
}
|
|
158
|
+
if (parsed.print && result.returnValue !== undefined)
|
|
159
|
+
await output.result(result.returnValue);
|
|
160
|
+
await output.drain();
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
thrown = hasFailure ? failure : error;
|
|
164
|
+
failed = true;
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
try {
|
|
168
|
+
await output.drain();
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
thrown = hasFailure ? failure : error;
|
|
172
|
+
failed = true;
|
|
173
|
+
}
|
|
174
|
+
controller.abort();
|
|
175
|
+
clearTimeout(timeout);
|
|
176
|
+
await input?.close().catch(() => { });
|
|
177
|
+
}
|
|
178
|
+
context.signal.throwIfAborted();
|
|
179
|
+
if (failed) {
|
|
180
|
+
const info = thrown instanceof GuestDiagnostic ? thrown.info : { name: statusField(thrown, "name"), code: statusField(thrown, "code") };
|
|
181
|
+
const detail = thrown instanceof SafeJsCommandLimitError ? thrown.message : publicDiagnosticMessage(thrown, context.onInternalError);
|
|
182
|
+
if (!output.stderrFailed)
|
|
183
|
+
await diagnose(detail);
|
|
184
|
+
return { exitCode: thrown instanceof SafeJsCommandLimitError || info.code === "budgetExceeded" ? 124
|
|
185
|
+
: thrown instanceof UsageError || info.name === "ParseError" ? 2 : 1 };
|
|
186
|
+
}
|
|
187
|
+
return { exitCode };
|
|
188
|
+
} }];
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/commands/safejs/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,14 @@ import {
|
|
|
2
2
|
createTsortCommand,
|
|
3
3
|
createTsortCommands,
|
|
4
4
|
tsortCommands
|
|
5
|
-
} from "../../chunks/chunk-
|
|
6
|
-
import "../../chunks/chunk-
|
|
7
|
-
import "../../chunks/chunk-
|
|
8
|
-
import "../../chunks/chunk-
|
|
9
|
-
import "../../chunks/chunk-
|
|
10
|
-
import "../../chunks/chunk-
|
|
5
|
+
} from "../../chunks/chunk-NDCZ3UBP.js";
|
|
6
|
+
import "../../chunks/chunk-CDBQXRWL.js";
|
|
7
|
+
import "../../chunks/chunk-3E5M2WEL.js";
|
|
8
|
+
import "../../chunks/chunk-THXJ6CLF.js";
|
|
9
|
+
import "../../chunks/chunk-CHHAB5SS.js";
|
|
10
|
+
import "../../chunks/chunk-JLBIUYT3.js";
|
|
11
|
+
import "../../chunks/chunk-WPIOO4NX.js";
|
|
12
|
+
import "../../chunks/chunk-O2EVBRKF.js";
|
|
11
13
|
export {
|
|
12
14
|
createTsortCommand,
|
|
13
15
|
createTsortCommands,
|
|
@@ -2,13 +2,15 @@ import {
|
|
|
2
2
|
createXmlCommands,
|
|
3
3
|
defaultXmlQueryLimits,
|
|
4
4
|
xmlCommands
|
|
5
|
-
} from "../../chunks/chunk-
|
|
6
|
-
import "../../chunks/chunk-
|
|
7
|
-
import "../../chunks/chunk-
|
|
8
|
-
import "../../chunks/chunk-
|
|
9
|
-
import "../../chunks/chunk-
|
|
10
|
-
import "../../chunks/chunk-
|
|
11
|
-
import "../../chunks/chunk-
|
|
5
|
+
} from "../../chunks/chunk-7EEWZY5S.js";
|
|
6
|
+
import "../../chunks/chunk-IEKESMO4.js";
|
|
7
|
+
import "../../chunks/chunk-LA6BX562.js";
|
|
8
|
+
import "../../chunks/chunk-3E5M2WEL.js";
|
|
9
|
+
import "../../chunks/chunk-THXJ6CLF.js";
|
|
10
|
+
import "../../chunks/chunk-CHHAB5SS.js";
|
|
11
|
+
import "../../chunks/chunk-JLBIUYT3.js";
|
|
12
|
+
import "../../chunks/chunk-WPIOO4NX.js";
|
|
13
|
+
import "../../chunks/chunk-O2EVBRKF.js";
|
|
12
14
|
export {
|
|
13
15
|
createXmlCommands,
|
|
14
16
|
defaultXmlQueryLimits,
|
|
@@ -2,14 +2,16 @@ import {
|
|
|
2
2
|
createYqCommand,
|
|
3
3
|
createYqCommands,
|
|
4
4
|
yqCommands
|
|
5
|
-
} from "../../chunks/chunk-
|
|
6
|
-
import "../../chunks/chunk-
|
|
7
|
-
import "../../chunks/chunk-
|
|
8
|
-
import "../../chunks/chunk-
|
|
9
|
-
import "../../chunks/chunk-
|
|
10
|
-
import "../../chunks/chunk-
|
|
11
|
-
import "../../chunks/chunk-
|
|
12
|
-
import "../../chunks/chunk-
|
|
5
|
+
} from "../../chunks/chunk-V73A742N.js";
|
|
6
|
+
import "../../chunks/chunk-CDBQXRWL.js";
|
|
7
|
+
import "../../chunks/chunk-IEKESMO4.js";
|
|
8
|
+
import "../../chunks/chunk-LA6BX562.js";
|
|
9
|
+
import "../../chunks/chunk-3E5M2WEL.js";
|
|
10
|
+
import "../../chunks/chunk-THXJ6CLF.js";
|
|
11
|
+
import "../../chunks/chunk-CHHAB5SS.js";
|
|
12
|
+
import "../../chunks/chunk-JLBIUYT3.js";
|
|
13
|
+
import "../../chunks/chunk-WPIOO4NX.js";
|
|
14
|
+
import "../../chunks/chunk-O2EVBRKF.js";
|
|
13
15
|
export {
|
|
14
16
|
createYqCommand,
|
|
15
17
|
createYqCommands,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/yq/index.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/yq/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,iBAAiB,EAItB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AA6nBlC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;AAWD,wBAAgB,eAAe,CAAC,OAAO,GAAE,iBAAsB,GAAG,iBAAiB,CAQlF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,SAAS,iBAAiB,EAAE,CAE9F;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,kBAAkB,CAc9E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { escapeText } from "../../escaping.js";
|
|
2
2
|
import { pathOf } from "../internal.js";
|
|
3
|
-
import { createOutputOperation, FsError, getCommandArguments, readBytes, } from "../../contracts/index.js";
|
|
3
|
+
import { commandRuntimeIdentity, createOutputOperation, FsError, getCommandArguments, readBytes, } from "../../contracts/index.js";
|
|
4
4
|
import { shellValueByteLength } from "../../contracts/value.js";
|
|
5
5
|
import { createYqQuerySession, YqValueFailure } from "../structured/query-core.js";
|
|
6
6
|
import { interruptible, JqError, JqLimitError, wellFormed } from "../structured/limits.js";
|
|
@@ -328,6 +328,18 @@ function withSource(error, source) {
|
|
|
328
328
|
return new YqError(error.category, error.code, error.status, source, error.line, error.column);
|
|
329
329
|
}
|
|
330
330
|
async function collectSource(context, owner, session, sourceName, source, vfs, inputFormat) {
|
|
331
|
+
let producer;
|
|
332
|
+
let finished = false;
|
|
333
|
+
let producerReturn;
|
|
334
|
+
const closeProducer = () => {
|
|
335
|
+
if (producerReturn)
|
|
336
|
+
return producerReturn;
|
|
337
|
+
if (!producer || finished || !producer.return)
|
|
338
|
+
return Promise.resolve({ done: true, value: undefined });
|
|
339
|
+
producerReturn = Promise.resolve().then(() => producer.return());
|
|
340
|
+
return producerReturn;
|
|
341
|
+
};
|
|
342
|
+
owner.register(async () => { await closeProducer(); });
|
|
331
343
|
let iterator;
|
|
332
344
|
let returned;
|
|
333
345
|
owner.register(async () => {
|
|
@@ -336,7 +348,20 @@ async function collectSource(context, owner, session, sourceName, source, vfs, i
|
|
|
336
348
|
await returned;
|
|
337
349
|
}
|
|
338
350
|
});
|
|
339
|
-
iterator = readBytes(
|
|
351
|
+
iterator = readBytes({ [Symbol.asyncIterator]() {
|
|
352
|
+
owner.assertOpen(context.signal);
|
|
353
|
+
producer = source[Symbol.asyncIterator]();
|
|
354
|
+
return {
|
|
355
|
+
async next() {
|
|
356
|
+
owner.assertOpen(context.signal);
|
|
357
|
+
const next = await producer.next();
|
|
358
|
+
if (next.done)
|
|
359
|
+
finished = true;
|
|
360
|
+
return next;
|
|
361
|
+
},
|
|
362
|
+
return: closeProducer,
|
|
363
|
+
};
|
|
364
|
+
} }, context.signal)[Symbol.asyncIterator]();
|
|
340
365
|
const chunks = [];
|
|
341
366
|
const framer = inputFormat === "yaml" ? new RawDocumentFramer() : undefined;
|
|
342
367
|
let size = 0;
|
|
@@ -356,8 +381,10 @@ async function collectSource(context, owner, session, sourceName, source, vfs, i
|
|
|
356
381
|
if (next.done)
|
|
357
382
|
break;
|
|
358
383
|
const chunk = next.value;
|
|
359
|
-
|
|
360
|
-
|
|
384
|
+
await session.ownedWork.charge(1);
|
|
385
|
+
owner.assertOpen(context.signal);
|
|
386
|
+
if (chunk.byteLength === 0)
|
|
387
|
+
continue;
|
|
361
388
|
session.ownedWork.admitInputBytes(chunk.byteLength);
|
|
362
389
|
if (chunk.byteLength > yqCaps.maxInputBytes - size)
|
|
363
390
|
throw fromJqLimit(new JqLimitError("maxInputBytes"));
|
|
@@ -691,6 +718,7 @@ export function createYqCommand(options = {}) {
|
|
|
691
718
|
const { inputFormat } = admittedOptions(options);
|
|
692
719
|
return Object.freeze({
|
|
693
720
|
name: "yq",
|
|
721
|
+
runtimeIdentity: commandRuntimeIdentity,
|
|
694
722
|
description: "Bounded restricted YAML/TOML query and formatter",
|
|
695
723
|
execute: (context) => execute(context, inputFormat),
|
|
696
724
|
});
|