@poe-platform/safe-bash 0.1.803 → 0.1.804
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 +56 -31
- package/dist/image-ast/ast.d.ts +1 -0
- package/dist/image-ast/browser/ast.d.ts +1 -0
- package/dist/image-ast/browser/codecs/jpeg.d.ts +2 -2
- package/dist/image-ast/codecs/jpeg.d.ts +2 -2
- package/dist/image-ast/index.browser.js +692 -8364
- package/dist/image-ast/index.js +692 -8364
- package/dist/mp4-ast/codecs.d.ts +7 -2
- package/dist/safe-bash/chunks/{chunk-CHYGPFVM.js → chunk-22SX3F2R.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-FBUCWVTE.js → chunk-2IVBJTBD.js} +1 -1
- package/dist/safe-bash/chunks/chunk-2POETUMB.js +190 -0
- package/dist/safe-bash/chunks/{chunk-XVOSKJE2.js → chunk-47D7WBJK.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-VKNVHEX3.js → chunk-4ESI236Y.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-74GHTNJA.js → chunk-4KTMKD5W.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-55YJASTN.js → chunk-4T53AERN.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-DQP3VHSB.js → chunk-5XIFJVOO.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-5OHX7C2V.js → chunk-62BOHHJT.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-HZAMGT5I.js → chunk-67WIFM3N.js} +17 -6
- package/dist/safe-bash/chunks/{chunk-4D4N7IU2.js → chunk-6LNFRPW5.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-6O77NL2S.js → chunk-6SMICPI3.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-4BSJLKNM.js → chunk-7O76UFQD.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-PNBBUWSM.js → chunk-AW5KIT6V.js} +3488 -39
- package/dist/safe-bash/chunks/{chunk-JMMEIDPF.js → chunk-B2Z73HTZ.js} +52 -28
- package/dist/safe-bash/chunks/chunk-B3ZMOJVM.js +319 -0
- package/dist/safe-bash/chunks/{chunk-7ZBU7KYV.js → chunk-CFAWS3O4.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-I5HZ4FGE.js → chunk-CL2FCTTO.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-2LSAMQER.js → chunk-CTXNARJH.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-TFIBK2GI.js → chunk-D5Q7NFWI.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-OQRVVGR6.js → chunk-DSOOVZ6Q.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-VTH3MLDU.js → chunk-DUTAG6ZD.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-XAQMU6OY.js → chunk-EE5YGFIZ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-FZE4HW6G.js → chunk-EJOYT2ME.js} +1 -1
- package/dist/safe-bash/chunks/chunk-FAAIR6EJ.js +887 -0
- package/dist/safe-bash/chunks/{chunk-OV6IHKO6.js → chunk-FOB2FZR4.js} +2 -2
- package/dist/safe-bash/chunks/chunk-G6V4RRSQ.js +14 -0
- package/dist/safe-bash/chunks/{chunk-UTBUUFDM.js → chunk-GGQAGQXQ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-K6VCD7IY.js → chunk-HIIYIJ5G.js} +2 -4
- package/dist/safe-bash/chunks/{chunk-VBTDHOWC.js → chunk-IOHH2GTI.js} +4 -3
- package/dist/safe-bash/chunks/{chunk-CTVWDACF.js → chunk-IQW34XQT.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-HZ7BWKQ3.js → chunk-IS572AAT.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-AUSNDQTJ.js → chunk-JPSUHHOA.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-ZVD5IS4V.js → chunk-KBZ4UB2O.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-AM5ESLPH.js → chunk-KU5CVWKA.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-RYFQ3LZG.js → chunk-LPOVNKNB.js} +173 -153
- package/dist/safe-bash/chunks/{chunk-46Z5E5EV.js → chunk-MBOC3LZ4.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-6PAVEFT3.js → chunk-N4BQFD3P.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-CS4MNM6I.js → chunk-NGKCVNWS.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-7R5BDCG7.js → chunk-OHML2BEU.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-C5OWC2TL.js → chunk-OQ3AGYCZ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-B7TAL7S5.js → chunk-PTAEWLSE.js} +0 -2
- package/dist/safe-bash/chunks/{chunk-LVOBFF4D.js → chunk-Q4FNLOTI.js} +1 -1
- package/dist/safe-bash/chunks/chunk-Q5XO3NAS.js +1036 -0
- package/dist/safe-bash/chunks/{chunk-GEG3BWGE.js → chunk-RHFRJIWQ.js} +1 -1
- package/dist/safe-bash/chunks/chunk-RUR6J33T.js +11 -0
- package/dist/safe-bash/chunks/{chunk-EEEWOYEG.js → chunk-S4RFUUXO.js} +839 -24
- package/dist/safe-bash/chunks/{chunk-RRR7AQ24.js → chunk-SD2ISU5L.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-3NDIFSNM.js → chunk-SUJ3NTMH.js} +3 -3
- package/dist/safe-bash/chunks/{chunk-R3NAKOED.js → chunk-SZRUU5HS.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-PH63PLPZ.js → chunk-TC3F4UFF.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-3R3AANOR.js → chunk-TCKYOLUE.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-D3ANYGMC.js → chunk-UV4X32QU.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-E7OYNDGL.js → chunk-V7QT2RWC.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-B7PIL77G.js → chunk-W2IYOVHK.js} +804 -1195
- package/dist/safe-bash/chunks/{chunk-3HQU4OJO.js → chunk-XNGVOSGI.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-J42RIHHJ.js → chunk-XQWCQSRN.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-A7XEHALN.js → chunk-Y7FW6GLT.js} +6 -6
- package/dist/safe-bash/chunks/{chunk-QGUV42T5.js → chunk-YL3GBUG4.js} +1 -1
- package/dist/safe-bash/chunks/chunk-YOXUCJER.js +389 -0
- package/dist/safe-bash/chunks/{chunk-HBCN24ZA.js → chunk-Z2AAYYJN.js} +2 -2
- package/dist/safe-bash/chunks/chunk-ZKYKJCZZ.js +30 -0
- package/dist/safe-bash/chunks/core-IE3AFIDX.js +85806 -0
- package/dist/safe-bash/chunks/{ffmpeg-WTC3TEFI.js → ffmpeg-YANDK6HU.js} +2 -2
- package/dist/safe-bash/chunks/{gh-6WU6PXL4.js → gh-4MBJ2S5V.js} +2 -2
- package/dist/safe-bash/chunks/{git-EFZIGJW4.js → git-2QONJNRQ.js} +2 -2
- package/dist/safe-bash/chunks/{imagemagick-EIEYGWPF.js → imagemagick-JLEHGYSN.js} +2 -2
- package/dist/safe-bash/chunks/{mmdc-ROQJT5HQ.js → mmdc-6LD7A6ND.js} +2 -2
- package/dist/safe-bash/chunks/{pdfimages-DW7LWXFI.js → pdfimages-RSHL7LOP.js} +2 -2
- package/dist/safe-bash/chunks/{pdfinfo-TIP6XLUQ.js → pdfinfo-L3SGWPNG.js} +2 -2
- package/dist/safe-bash/chunks/{pdftk-DMG22ITZ.js → pdftk-LFBJNU5A.js} +2 -2
- package/dist/safe-bash/chunks/{pdftoppm-WNDYR72T.js → pdftoppm-NXXFUIHG.js} +2 -2
- package/dist/safe-bash/chunks/{pdftotext-5IPZ4NI7.js → pdftotext-4IHNWT6F.js} +2 -2
- package/dist/safe-bash/chunks/{qpdf-TTX2DIUA.js → qpdf-ZEIREV63.js} +2 -2
- package/dist/safe-bash/chunks/read-builtin-A4QKAT45.js +9 -0
- package/dist/safe-bash/chunks/{sips-XYS46JPJ.js → sips-D5YBG2V3.js} +2 -2
- package/dist/safe-bash/chunks/{soffice-TU73E5KL.js → soffice-RAJU3JUT.js} +2 -2
- package/dist/safe-bash/chunks/source-files-3XWRRHFA.js +7 -0
- package/dist/safe-bash/chunks/{wkhtmltopdf-FSZ2CHGE.js → wkhtmltopdf-7UE4FORZ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-7KWZXKY6.js → chunk-26RTBV2I.js} +1 -0
- package/dist/safe-bash/command-chunks/{chunk-AQJ2ROJO.js → chunk-2WYNMZR2.js} +10 -8
- package/dist/safe-bash/command-chunks/{chunk-BDSMROQZ.js → chunk-36GFRF2N.js} +2 -1
- package/dist/safe-bash/command-chunks/{chunk-GC5TJZOF.js → chunk-3VIA2IA7.js} +114 -31
- package/dist/safe-bash/command-chunks/{chunk-NKFYQSES.js → chunk-4CTI3ZTX.js} +1 -0
- package/dist/safe-bash/command-chunks/{chunk-WH627NJL.js → chunk-4MYP2FX4.js} +2 -1
- package/dist/safe-bash/command-chunks/{chunk-ZDN7MJE6.js → chunk-4R5ADJM5.js} +11 -1
- package/dist/safe-bash/command-chunks/{chunk-P2N33UMN.js → chunk-5MIKM54M.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-DB453IE6.js → chunk-6FZQUOSJ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-PICVQ6B5.js → chunk-6GKYHPJG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-7K6JYKPJ.js → chunk-6M2ELGEN.js} +17 -15
- package/dist/safe-bash/command-chunks/{chunk-PXEIT2O4.js → chunk-6UR7V3ET.js} +8 -1
- package/dist/safe-bash/command-chunks/{chunk-6KJ3LPI2.js → chunk-6XBS5B46.js} +26 -3
- package/dist/safe-bash/command-chunks/{chunk-5PWJG2UK.js → chunk-6YXLZX7L.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-EK6YNAXT.js → chunk-753YOR54.js} +31 -5
- package/dist/safe-bash/command-chunks/{chunk-RMWQAAO5.js → chunk-7IR4NRNE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-FZTK4MFI.js → chunk-7NM73SVK.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-NXEQ3ESQ.js → chunk-7QD5YY4F.js} +6 -11
- package/dist/safe-bash/command-chunks/{chunk-EMPU65ZK.js → chunk-A5LBSJGH.js} +1 -0
- package/dist/safe-bash/command-chunks/{chunk-4FEVBOL5.js → chunk-ARZMP2L2.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-NKIELG7Y.js → chunk-BAKFZ477.js} +40 -19
- package/dist/safe-bash/command-chunks/{chunk-QRRYN2KO.js → chunk-BC7BK6R6.js} +0 -2424
- package/dist/safe-bash/command-chunks/{chunk-CQHP3I66.js → chunk-BOEOJS2Q.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-XS72HTMA.js → chunk-BWGGLYEB.js} +5 -22
- package/dist/safe-bash/command-chunks/{chunk-PMBFZXTK.js → chunk-C5ZZKP7V.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-LHIOAFWW.js → chunk-C7SEB6WU.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-XPT2UGBF.js → chunk-CHJKFRT7.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-TIOCQVUQ.js → chunk-CON26Q2O.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-E55UKBIE.js → chunk-DBAT3IK2.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-Z45N42QC.js → chunk-DPAYAVMS.js} +15 -1
- package/dist/safe-bash/command-chunks/chunk-DS3NXVUM.js +368 -0
- package/dist/safe-bash/command-chunks/{chunk-5ZMZ573Q.js → chunk-DSJ3VRL3.js} +16 -4
- package/dist/safe-bash/command-chunks/{chunk-K2GDEMEU.js → chunk-EFRCFWVR.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-DZCY63VJ.js → chunk-EV6HIJ5H.js} +6 -5
- package/dist/safe-bash/command-chunks/{chunk-JDYXY44P.js → chunk-FJURV46Y.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-TZZ4WUKH.js → chunk-FZAWGKSE.js} +6 -4
- package/dist/safe-bash/command-chunks/{chunk-YHFXOX6U.js → chunk-GOCFQ6XV.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-QVOS4YXL.js → chunk-HH5O7DJI.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-3HHCU5YU.js → chunk-HK7F5SDC.js} +13 -0
- package/dist/safe-bash/command-chunks/{chunk-JNZ3CVAE.js → chunk-HQBXIZC7.js} +8 -3
- package/dist/safe-bash/command-chunks/{chunk-V4K2JDYU.js → chunk-I63DBZXZ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-WNE7FPVR.js → chunk-I64TLTIW.js} +24 -16
- package/dist/safe-bash/command-chunks/{chunk-GFC2NTDG.js → chunk-ICANWOXH.js} +5 -29
- package/dist/safe-bash/command-chunks/{chunk-SQRQW3CT.js → chunk-IJ6LGLXM.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-TGSNCQSR.js → chunk-JT4RYCA6.js} +1771 -1663
- package/dist/safe-bash/command-chunks/{chunk-II77KPZN.js → chunk-JWW6FYBN.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-ZYXH3B66.js → chunk-LCJWKTCJ.js} +250 -203
- package/dist/safe-bash/command-chunks/chunk-LU4HBPP2.js +97 -0
- package/dist/safe-bash/command-chunks/{chunk-XJXU3VVH.js → chunk-LWOE65OE.js} +20 -5
- package/dist/safe-bash/command-chunks/{chunk-GMIHJYDG.js → chunk-M32HFSX7.js} +22 -6
- package/dist/safe-bash/command-chunks/{chunk-YG4EPFWC.js → chunk-M3NINRDU.js} +2880 -172
- package/dist/safe-bash/command-chunks/chunk-MQREDAL6.js +164 -0
- package/dist/safe-bash/command-chunks/{chunk-LWS62ISU.js → chunk-N6DIASO2.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-NGL7YK7O.js +188 -0
- package/dist/safe-bash/command-chunks/{chunk-EARHPPPJ.js → chunk-NJYHWKIL.js} +39 -9
- package/dist/safe-bash/command-chunks/{chunk-6JSIFWYT.js → chunk-OJQRSCBP.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-OQU6UT6X.js → chunk-OV3XREFN.js} +11 -0
- package/dist/safe-bash/command-chunks/{chunk-MIXBO6U7.js → chunk-PTZLF456.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-ALDC4XP4.js → chunk-QILLRNES.js} +34 -10
- package/dist/safe-bash/command-chunks/{chunk-L22T3H7L.js → chunk-QR25JLKO.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-NASVPT6F.js → chunk-R7C4MGZ5.js} +17 -224
- package/dist/safe-bash/command-chunks/{chunk-LCF3OB7P.js → chunk-RBME3JEH.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-2KG2QLJE.js → chunk-RFWGYT7G.js} +3 -0
- package/dist/safe-bash/command-chunks/{chunk-5TBUOBDE.js → chunk-RZMVRT26.js} +27 -13
- package/dist/safe-bash/command-chunks/chunk-TFR6B3WB.js +44 -0
- package/dist/safe-bash/command-chunks/chunk-TOH3OF3O.js +179 -0
- package/dist/safe-bash/command-chunks/chunk-TT4DAFBT.js +13621 -0
- package/dist/safe-bash/command-chunks/{chunk-LWSBAWLT.js → chunk-TXI64OAG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-GIRNFXP3.js → chunk-TZRI7BJZ.js} +45 -15
- package/dist/safe-bash/command-chunks/{chunk-QOKBZFFD.js → chunk-U3MMODA5.js} +2 -7
- package/dist/safe-bash/command-chunks/{chunk-ZYHTWNAE.js → chunk-UAW423ZL.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-C5YYCQHW.js → chunk-UXEEUGOV.js} +222 -12
- package/dist/safe-bash/command-chunks/{chunk-GY3BWK7K.js → chunk-VOZPMJRX.js} +87 -80
- package/dist/safe-bash/command-chunks/{chunk-ILX2NOLF.js → chunk-WPANOB4A.js} +20 -20
- package/dist/safe-bash/command-chunks/{chunk-Y2WBSJG6.js → chunk-X4QZQI5Q.js} +65 -64
- package/dist/safe-bash/command-chunks/{chunk-HDCNKOIX.js → chunk-XGI57GCN.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-5UBXNSFZ.js → chunk-XUCU7QQT.js} +1281 -1278
- package/dist/safe-bash/command-chunks/chunk-Y22VXJBD.js +296 -0
- package/dist/safe-bash/command-chunks/{chunk-WVHONVZ4.js → chunk-YMFUUPDX.js} +5 -3
- package/dist/safe-bash/command-chunks/{chunk-IR2BY7EL.js → chunk-YYGIBXFZ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-MSFXC3OC.js → chunk-Z4FO6OHE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-WWIBP2ET.js → chunk-Z5ZZVDUD.js} +143 -22
- package/dist/safe-bash/command-chunks/{chunk-LOICUCHG.js → chunk-ZHN3QDCI.js} +1 -1
- package/dist/safe-bash/commands/alias/index.d.ts +2 -0
- package/dist/safe-bash/commands/alias/index.js +2 -0
- package/dist/safe-bash/commands/apply-patch/index.browser.js +2 -3
- package/dist/safe-bash/commands/apply-patch/index.d.ts +0 -1
- package/dist/safe-bash/commands/apply-patch/index.js +0 -1
- package/dist/safe-bash/commands/archive/index.browser.js +2 -3
- package/dist/safe-bash/commands/archive/index.d.ts +0 -1
- package/dist/safe-bash/commands/archive/index.js +0 -1
- package/dist/safe-bash/commands/bytes/index.js +2 -1
- package/dist/safe-bash/commands/chmod/index.browser.js +1 -1
- package/dist/safe-bash/commands/column/index.browser.js +2 -3
- package/dist/safe-bash/commands/column/index.d.ts +0 -1
- package/dist/safe-bash/commands/column/index.js +0 -1
- package/dist/safe-bash/commands/copy-source.js +1 -0
- package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
- package/dist/safe-bash/commands/csvkit/index.browser.js +72 -0
- package/dist/safe-bash/commands/csvkit/index.d.ts +0 -5
- package/dist/safe-bash/commands/csvkit/index.js +0 -50
- package/dist/safe-bash/commands/docx/index.browser.js +5 -7
- package/dist/safe-bash/commands/du/index.browser.js +2 -3
- package/dist/safe-bash/commands/du/index.d.ts +0 -1
- package/dist/safe-bash/commands/du/index.js +0 -1
- package/dist/safe-bash/commands/expr/index.browser.js +2 -3
- package/dist/safe-bash/commands/expr/index.d.ts +0 -1
- package/dist/safe-bash/commands/expr/index.js +0 -1
- package/dist/safe-bash/commands/factor/index.browser.js +2 -2
- package/dist/safe-bash/commands/file/index.browser.js +2 -3
- package/dist/safe-bash/commands/file/index.d.ts +0 -1
- package/dist/safe-bash/commands/file/index.js +0 -1
- package/dist/safe-bash/commands/filesystem.js +1 -1
- package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
- package/dist/safe-bash/commands/grep-aliases/index.browser.js +3 -3
- package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
- package/dist/safe-bash/commands/html-to-markdown/index.browser.js +2 -3
- package/dist/safe-bash/commands/html-to-markdown/index.d.ts +0 -1
- package/dist/safe-bash/commands/html-to-markdown/index.js +0 -1
- package/dist/safe-bash/commands/htmlq/index.d.ts +1 -5
- package/dist/safe-bash/commands/htmlq/index.js +1 -143
- package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
- package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
- package/dist/safe-bash/commands/llm/index.browser.js +2 -2
- package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
- package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
- package/dist/safe-bash/commands/media/index.browser.js +4 -16314
- package/dist/safe-bash/commands/media/index.d.ts +1 -5
- package/dist/safe-bash/commands/media/index.js +1 -3
- package/dist/safe-bash/commands/media/plugin.d.ts +1 -18
- package/dist/safe-bash/commands/media/plugin.js +1 -90
- package/dist/safe-bash/commands/media/remote.d.ts +1 -63
- package/dist/safe-bash/commands/media/remote.js +1 -405
- package/dist/safe-bash/commands/media/settings.d.ts +1 -4
- package/dist/safe-bash/commands/media/settings.js +1 -26
- package/dist/safe-bash/commands/metadata/index.browser.js +3 -4
- package/dist/safe-bash/commands/metadata/index.d.ts +0 -1
- package/dist/safe-bash/commands/metadata/index.js +2 -2
- package/dist/safe-bash/commands/mktemp/index.browser.js +1 -1
- package/dist/safe-bash/commands/network/curl.js +1 -3
- package/dist/safe-bash/commands/network/index.browser.js +3 -4
- package/dist/safe-bash/commands/network/public.d.ts +0 -1
- package/dist/safe-bash/commands/network/public.js +0 -1
- package/dist/safe-bash/commands/network/transport.js +2 -1
- package/dist/safe-bash/commands/network/wget.js +1 -3
- package/dist/safe-bash/commands/node/browser.d.ts +0 -1
- package/dist/safe-bash/commands/node/browser.js +0 -1
- package/dist/safe-bash/commands/node/default-runtime.d.ts +3 -0
- package/dist/safe-bash/commands/node/default-runtime.js +15 -0
- package/dist/safe-bash/commands/node/index.browser.js +7 -8
- package/dist/safe-bash/commands/node/index.js +3 -3
- package/dist/safe-bash/commands/node/path.js +1 -1
- package/dist/safe-bash/commands/node/preload.d.ts +1 -1
- package/dist/safe-bash/commands/node/preload.js +4 -1
- package/dist/safe-bash/commands/node/quickjs.d.ts +2 -0
- package/dist/safe-bash/commands/node/quickjs.js +2 -0
- package/dist/safe-bash/commands/node/safejs.js +26 -12
- package/dist/safe-bash/commands/op/index.browser.js +2 -3
- package/dist/safe-bash/commands/op/index.d.ts +0 -11
- package/dist/safe-bash/commands/op/index.js +0 -84
- package/dist/safe-bash/commands/pandoc/index.browser.js +44 -0
- package/dist/safe-bash/commands/pandoc/index.d.ts +0 -1
- package/dist/safe-bash/commands/pandoc/index.js +0 -1
- package/dist/safe-bash/commands/pr/index.browser.js +2 -2
- package/dist/safe-bash/commands/python/docker-runner.js +4 -3
- package/dist/safe-bash/commands/python/docker.d.ts +1 -0
- package/dist/safe-bash/commands/python/docker.js +5 -2
- package/dist/safe-bash/commands/python/index.browser.js +17 -13
- package/dist/safe-bash/commands/python/index.d.ts +2 -1
- package/dist/safe-bash/commands/python/index.js +10 -8
- package/dist/safe-bash/commands/python/llm-capability.js +65 -2
- package/dist/safe-bash/commands/python/llm-dependencies.d.ts +27 -0
- package/dist/safe-bash/commands/python/llm-dependencies.js +66 -0
- package/dist/safe-bash/commands/python/llm-module.js +6 -4
- package/dist/safe-bash/commands/python/llm-reference-module.d.ts +3 -0
- package/dist/safe-bash/commands/python/llm-reference-module.js +690 -0
- package/dist/safe-bash/commands/python/worker.browser.js +2 -3
- package/dist/safe-bash/commands/python/worker.d.ts +0 -1
- package/dist/safe-bash/commands/python/worker.js +0 -1
- package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.d.ts +1 -1
- package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.js +3 -3
- package/dist/safe-bash/commands/regex-execution/public.browser.js +7 -7
- package/dist/safe-bash/commands/safejs/options.js +5 -1
- package/dist/safe-bash/commands/safejs/runtime.d.ts +1 -0
- package/dist/safe-bash/commands/safejs/runtime.js +1 -1
- package/dist/safe-bash/commands/split/index.browser.js +2 -3
- package/dist/safe-bash/commands/split/index.d.ts +0 -1
- package/dist/safe-bash/commands/split/index.js +0 -1
- package/dist/safe-bash/commands/ssconvert/index.browser.js +98 -0
- package/dist/safe-bash/commands/stat/index.browser.js +1 -1
- package/dist/safe-bash/commands/stream-format/index.browser.js +3 -4
- package/dist/safe-bash/commands/stream-format/index.d.ts +0 -1
- package/dist/safe-bash/commands/stream-format/index.js +0 -1
- package/dist/safe-bash/commands/stream-inspection/index.browser.js +3 -4
- package/dist/safe-bash/commands/stream-inspection/index.d.ts +0 -1
- package/dist/safe-bash/commands/stream-inspection/index.js +0 -1
- package/dist/safe-bash/commands/streams.js +2 -1
- package/dist/safe-bash/commands/table-text/index.browser.js +3 -4
- package/dist/safe-bash/commands/table-text/index.d.ts +0 -1
- package/dist/safe-bash/commands/table-text/index.js +0 -1
- package/dist/safe-bash/commands/text.js +28 -24
- package/dist/safe-bash/commands/time-env/index.browser.js +3 -4
- package/dist/safe-bash/commands/time-env/index.d.ts +0 -1
- package/dist/safe-bash/commands/time-env/index.js +0 -1
- package/dist/safe-bash/commands/tree/index.browser.js +2 -3
- package/dist/safe-bash/commands/tree/index.d.ts +0 -1
- package/dist/safe-bash/commands/tree/index.js +0 -1
- package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
- package/dist/safe-bash/commands/unalias/index.d.ts +2 -0
- package/dist/safe-bash/commands/unalias/index.js +2 -0
- package/dist/safe-bash/commands/xml/index.browser.js +2 -2
- package/dist/safe-bash/commands/yq/index.browser.js +2 -2
- package/dist/safe-bash/core.browser.js +2 -2
- package/dist/safe-bash/core.d.ts +7 -1
- package/dist/safe-bash/core.js +7 -1
- package/dist/safe-bash/execution-runtime.js +2 -1
- package/dist/safe-bash/fs/s3/http/index.d.ts +2 -2
- package/dist/safe-bash/fs/s3/http/index.js +1 -1
- package/dist/safe-bash/full-core.browser.js +283 -945
- package/dist/safe-bash/internal/op/types.d.ts +1 -0
- package/dist/safe-bash/jobs.browser.js +5 -5
- package/dist/safe-bash/lazy-optional.d.ts +3 -3
- package/dist/safe-bash/lazy-optional.js +1 -1
- package/dist/safe-bash/opt-in/commands/cmp/index.js +7 -6
- package/dist/safe-bash/opt-in/commands/dd/index.js +1 -1
- package/dist/safe-bash/opt-in/commands/dd/io.js +51 -5
- package/dist/safe-bash/opt-in/commands/truncate/index.js +2 -2
- package/dist/safe-bash/opt-in/commands/yq/native-work.js +2 -0
- package/dist/safe-bash/opt-in/optional/commands/shuf/input.js +2 -1
- package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +4 -2
- package/dist/safe-bash/opt-in/optional.d.ts +1 -1
- package/dist/safe-bash/opt-in/optional.js +1 -1
- package/dist/safe-bash/opt-in/shell/extensions/read/index.js +2 -344
- package/dist/safe-bash/optional-host.browser.js +23 -18
- package/dist/safe-bash/optional-host.d.ts +1 -0
- package/dist/safe-bash/optional-host.js +1 -0
- package/dist/safe-bash/playwright/controller.js +41 -3
- package/dist/safe-bash/playwright/native-storage-targets.js +4 -2
- package/dist/safe-bash/plugins/base.d.ts +1 -1
- package/dist/safe-bash/plugins/base.js +3 -3
- package/dist/safe-bash/plugins/composition.d.ts +5 -2
- package/dist/safe-bash/plugins/composition.js +10 -7
- package/dist/safe-bash/plugins/index.browser.js +44 -41
- package/dist/safe-bash/plugins/index.js +3 -2
- package/dist/safe-bash/plugins/portable-commands.d.ts +3 -0
- package/dist/safe-bash/plugins/portable-commands.js +31 -0
- package/dist/safe-bash/registry-entry.browser.js +41 -42
- package/dist/safe-bash/search.browser.js +32 -33
- package/dist/safe-bash/shell/arithmetic.js +19 -6
- package/dist/safe-bash/shell/arrays/state.js +1 -1
- package/dist/safe-bash/shell/arrays/syntax.js +4 -3
- package/dist/safe-bash/shell/index.d.ts +0 -1
- package/dist/safe-bash/shell/index.js +0 -1
- package/dist/safe-bash/shell/parser.d.ts +2 -2
- package/dist/safe-bash/shell/parser.js +268 -64
- package/dist/safe-bash/shell/read-builtin.d.ts +3 -0
- package/dist/safe-bash/shell/read-builtin.js +344 -0
- package/dist/safe-bash/shell/runtime.d.ts +21 -4
- package/dist/safe-bash/shell/runtime.js +373 -412
- package/dist/safe-bash/shell/session-state.js +25 -0
- package/dist/safe-bash/shell/shell.js +76 -154
- package/dist/safe-bash/shell/tilde-expansion.d.ts +1 -1
- package/dist/safe-bash/shell/tilde-expansion.js +2 -2
- package/dist/safe-bash/shell/types.d.ts +5 -0
- package/dist/safe-bash/shell/value-state.js +1 -1
- package/dist/safe-bash/shell-entry.browser.js +32 -33
- package/dist/safe-bash/trap.browser.js +4 -4
- package/dist/safe-bash/yq-browser/index.js +1 -1
- package/dist/safe-bash-calendar-engine/time-env/calendar.d.ts +1 -1
- package/dist/safe-bash-calendar-engine/time-env/calendar.js +1 -1
- package/dist/safe-bash-calendar-engine/time-env/format.js +1 -1
- package/dist/safe-bash-command-alias/index.d.ts +13 -0
- package/dist/safe-bash-command-alias/index.js +88 -0
- package/dist/safe-bash-command-apply-patch/apply.js +3 -3
- package/dist/safe-bash-command-apply-patch/index.js +3 -3
- package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
- package/dist/safe-bash-command-apply-patch/parser.js +1 -1
- package/dist/safe-bash-command-awk/awk-pipes.js +2 -2
- package/dist/safe-bash-command-awk/awk-reader.js +1 -1
- package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
- package/dist/safe-bash-command-awk/awk.js +5 -5
- package/dist/safe-bash-command-awk/index.js +5 -5
- package/dist/safe-bash-command-bc/index.js +206 -60
- package/dist/safe-bash-command-cmp/index.js +7 -6
- 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-csvkit/index.d.ts +1 -0
- package/dist/safe-bash-command-csvkit/index.js +1505 -7
- package/dist/safe-bash-command-csvkit/sync-support.js +2 -7
- package/dist/safe-bash-command-curl/curl.js +1 -1
- package/dist/safe-bash-command-curl/index.js +1 -1
- package/dist/safe-bash-command-date/date.js +1 -1
- package/dist/safe-bash-command-date/index.js +1 -1
- package/dist/safe-bash-command-dd/index.js +1 -1
- package/dist/safe-bash-command-dd/io.js +51 -5
- package/dist/safe-bash-command-diff/diff.js +1 -1
- package/dist/safe-bash-command-diff/index.js +1 -1
- package/dist/safe-bash-command-diff3/index.js +10 -13
- package/dist/safe-bash-command-exiftool/index.js +278 -50
- package/dist/safe-bash-command-exiftool/registry.d.ts +4 -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-fd/arguments.d.ts +2 -0
- package/dist/safe-bash-command-fd/index.js +42 -12
- package/dist/safe-bash-command-ffmpeg/index.js +356 -66
- package/dist/safe-bash-command-find/find-format.d.ts +3 -0
- package/dist/safe-bash-command-find/find-format.js +1 -1
- package/dist/safe-bash-command-find/find.js +2 -2
- package/dist/safe-bash-command-find/index.js +2 -2
- package/dist/safe-bash-command-fmt/index.js +1 -4
- package/dist/safe-bash-command-fold/engine.d.ts +1 -1
- package/dist/safe-bash-command-fold/family.js +2 -2
- package/dist/safe-bash-command-fold/index.js +1 -1
- package/dist/safe-bash-command-hexdump/command.js +2 -2
- package/dist/safe-bash-command-hexdump/index.js +2 -2
- package/dist/safe-bash-command-html-to-markdown/entities.js +1 -1
- package/dist/safe-bash-command-html-to-markdown/index.js +4 -4
- package/dist/safe-bash-command-html-to-markdown/input.js +3 -3
- package/dist/safe-bash-command-html-to-markdown/parser.js +2 -2
- package/dist/safe-bash-command-html-to-markdown/render.js +3 -3
- package/dist/safe-bash-command-htmlq/contracts.d.ts +5 -2
- package/dist/safe-bash-command-htmlq/index.d.ts +2 -1
- package/dist/safe-bash-command-htmlq/index.js +175 -49
- package/dist/safe-bash-command-htmlq/sync.d.ts +1 -0
- package/dist/safe-bash-command-imagemagick/index.js +56 -6
- package/dist/safe-bash-command-install/arguments.d.ts +27 -0
- package/dist/safe-bash-command-install/arguments.js +224 -0
- package/dist/safe-bash-command-install/index.d.ts +7 -0
- package/dist/safe-bash-command-install/index.js +942 -0
- package/dist/safe-bash-command-install/mode.d.ts +6 -0
- package/dist/safe-bash-command-install/mode.js +71 -0
- package/dist/safe-bash-command-install/options.d.ts +40 -0
- package/dist/safe-bash-command-install/options.js +27 -0
- 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-less/index.js +37 -61
- package/dist/safe-bash-command-llm/command.js +1 -1
- package/dist/safe-bash-command-llm/elevenlabs.js +2 -2
- package/dist/safe-bash-command-llm/index.js +4 -4
- package/dist/safe-bash-command-llm/openai.js +2 -2
- package/dist/safe-bash-command-llm/providers/elevenlabs.js +2 -2
- package/dist/safe-bash-command-llm/providers/index.js +3 -3
- package/dist/safe-bash-command-llm/providers/openai.js +2 -2
- package/dist/safe-bash-command-llm/providers/shared.js +1 -1
- package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.browser.d.ts +463 -46
- package/dist/safe-bash-command-mcp/index.browser.js +19308 -0
- package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.d.ts +15 -6
- package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.js +2804 -2771
- package/dist/safe-bash-command-media/LICENSE +21 -0
- package/dist/safe-bash-command-media/index.d.ts +6 -0
- package/dist/safe-bash-command-media/index.js +30 -0
- package/dist/safe-bash-command-media/plugin.d.ts +18 -0
- package/dist/safe-bash-command-media/plugin.js +11 -0
- package/dist/safe-bash-command-media/remote.d.ts +63 -0
- package/dist/safe-bash-command-media/remote.js +11 -0
- package/dist/safe-bash-command-media/settings.d.ts +4 -0
- package/dist/safe-bash-command-media/settings.js +41 -0
- package/dist/safe-bash-command-mktemp/command.js +1 -1
- package/dist/safe-bash-command-mktemp/index.js +1 -1
- package/dist/safe-bash-command-mmdc/arguments.d.ts +1 -0
- package/dist/safe-bash-command-mmdc/command.d.ts +2 -0
- package/dist/safe-bash-command-mmdc/contracts.d.ts +8 -1
- package/dist/safe-bash-command-mmdc/index.js +359 -7
- package/dist/safe-bash-command-nl/index.js +1 -1
- package/dist/safe-bash-command-nl/nl.js +1 -1
- package/dist/safe-bash-command-node/LICENSE +21 -0
- package/dist/safe-bash-command-node/index.d.ts +17 -0
- package/dist/safe-bash-command-node/index.js +328 -0
- package/dist/safe-bash-command-numfmt/index.js +1 -0
- package/dist/safe-bash-command-od/index.js +10 -6
- package/dist/safe-bash-command-op/index.js +39 -32
- package/dist/safe-bash-command-op/types.d.ts +1 -0
- package/dist/safe-bash-command-pandoc/command.js +3 -3
- package/dist/safe-bash-command-pandoc/index.d.ts +1 -0
- package/dist/safe-bash-command-pandoc/index.js +5 -3
- package/dist/safe-bash-command-pandoc/sync.d.ts +1 -0
- package/dist/safe-bash-command-patch/index.js +4 -4
- package/dist/safe-bash-command-patch/patch.js +4 -4
- package/dist/safe-bash-command-pdfimages/index.js +1 -1
- package/dist/safe-bash-command-pdfinfo/index.js +30 -5
- package/dist/safe-bash-command-pdftk/index.js +21 -23
- package/dist/safe-bash-command-pdftoppm/index.js +17 -4
- package/dist/safe-bash-command-pdftotext/index.js +11 -14
- package/dist/safe-bash-command-qpdf/index.d.ts +1 -0
- package/dist/safe-bash-command-qpdf/index.js +9 -6
- package/dist/safe-bash-command-rg/index.js +1 -1
- package/dist/safe-bash-command-rg/rg-command.js +1 -1
- package/dist/safe-bash-command-sed/index.js +1 -1
- package/dist/safe-bash-command-sed/sed.js +1 -1
- package/dist/safe-bash-command-shuf/input.d.ts +2 -2
- package/dist/safe-bash-command-shuf/input.js +2 -1
- package/dist/safe-bash-command-shuf/shuf.js +4 -2
- package/dist/safe-bash-command-sips/index.js +2 -2
- package/dist/safe-bash-command-soffice/index.js +97 -12
- package/dist/safe-bash-command-sponge/index.js +4 -1
- package/dist/safe-bash-command-sqlite3/engine.d.ts +1 -0
- package/dist/safe-bash-command-sqlite3/index.js +510 -70
- package/dist/safe-bash-command-ssconvert/formats/xlsx.js +2 -2
- package/dist/safe-bash-command-ssconvert/index.js +44 -22
- package/dist/safe-bash-command-stat/command.js +1 -1
- package/dist/safe-bash-command-stat/index.js +1 -1
- package/dist/safe-bash-command-tar/create.d.ts +1 -0
- package/dist/safe-bash-command-tar/create.js +2 -2
- package/dist/safe-bash-command-tar/extract.js +2 -2
- package/dist/safe-bash-command-tar/index.js +4 -4
- package/dist/safe-bash-command-tar/modes.js +4 -4
- package/dist/safe-bash-command-tar/options.js +1 -1
- package/dist/safe-bash-command-truncate/index.js +2 -2
- package/dist/safe-bash-command-tsort/command.js +2 -2
- package/dist/safe-bash-command-tsort/index.js +2 -2
- package/dist/safe-bash-command-unalias/index.d.ts +12 -0
- package/dist/safe-bash-command-unalias/index.js +67 -0
- package/dist/safe-bash-command-unrtf/index.js +26 -4
- package/dist/safe-bash-command-xan/argv.d.ts +1 -1
- package/dist/safe-bash-command-xan/argv.js +2 -2
- package/dist/safe-bash-command-xan/budget.d.ts +0 -1
- package/dist/safe-bash-command-xan/budget.js +1 -1
- package/dist/safe-bash-command-xan/commands.js +6 -6
- package/dist/safe-bash-command-xan/csv.js +2 -2
- package/dist/safe-bash-command-xan/index.js +8 -9
- package/dist/safe-bash-command-xan/io.js +4 -4
- package/dist/safe-bash-command-xan/options.js +1 -1
- package/dist/safe-bash-command-xan/selector.js +2 -2
- package/dist/safe-bash-command-xmllint/index.js +45 -23
- package/dist/safe-bash-command-xxd/index.js +41 -10
- package/dist/safe-bash-command-yq/accounting.js +1 -1
- package/dist/safe-bash-command-yq/index.js +3 -2
- package/dist/safe-bash-command-yq/native-work.js +2 -0
- package/dist/safe-bash-command-yq/parser.js +2 -2
- package/dist/safe-bash-command-yq/query.js +5 -5
- package/dist/safe-bash-command-yq/toml.js +2 -2
- package/dist/safe-bash-command-zip/index.js +3 -3
- package/dist/safe-bash-compression-engine/bounded-codec.js +2 -2
- package/dist/safe-bash-compression-engine/codec-loader.js +1 -1
- package/dist/safe-bash-compression-engine/files.js +5 -5
- package/dist/safe-bash-compression-engine/index.js +4 -4
- package/dist/safe-bash-compression-engine/operand.js +5 -5
- package/dist/safe-bash-compression-engine/stream.js +4 -4
- package/dist/safe-bash-compression-engine/zstd-decode.js +3 -3
- package/dist/safe-bash-contracts/command.js +3 -3
- package/dist/safe-bash-contracts/default-executor.js +2 -2
- package/dist/safe-bash-contracts/diagnostics.js +3 -3
- package/dist/safe-bash-contracts/escaping.js +6 -6
- package/dist/safe-bash-contracts/filesystem-descriptor.js +3 -3
- package/dist/safe-bash-contracts/filesystem-output.js +5 -5
- package/dist/safe-bash-contracts/http.d.ts +7 -0
- package/dist/safe-bash-contracts/index.js +8 -8
- package/dist/safe-bash-contracts/io.js +2 -2
- package/dist/safe-bash-contracts/output.js +3 -3
- package/dist/safe-bash-contracts/runtime-control.d.ts +2 -2
- package/dist/safe-bash-contracts/runtime-control.js +4 -2
- package/dist/safe-bash-contracts/signals.d.ts +2 -0
- package/dist/safe-bash-contracts/signals.js +3 -1
- package/dist/safe-bash-contracts/yield.js +1 -1
- package/dist/safe-bash-csv-engine/index.d.ts +2 -1
- package/dist/safe-bash-csv-engine/index.js +21 -15
- package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
- package/dist/safe-bash-io-engine/commands/text-programs/shared.js +6 -6
- package/dist/safe-bash-io-engine/internal.js +1 -1
- package/dist/safe-bash-io-engine/shell/pattern.js +38 -18
- package/dist/safe-bash-line-ending-engine/convert.js +9 -204
- package/dist/safe-bash-line-ending-engine/encoding.js +9 -42
- package/dist/safe-bash-line-ending-engine/index.js +48 -0
- package/dist/safe-bash-line-ending-engine/info.js +9 -90
- package/dist/safe-bash-line-ending-engine/internal.js +15 -160
- package/dist/safe-bash-line-ending-engine/io.js +12 -289
- package/dist/safe-bash-line-ending-engine/stage.js +10 -160
- package/dist/safe-bash-markdown-engine/index.js +3 -3
- package/dist/safe-bash-network-engine/args.d.ts +6 -0
- package/dist/safe-bash-network-engine/args.js +4 -2
- package/dist/safe-bash-network-engine/body.js +1 -1
- package/dist/safe-bash-network-engine/fetch-transport.js +3 -1
- package/dist/safe-bash-network-engine/index.js +3 -1
- package/dist/safe-bash-network-engine/input.js +2 -2
- package/dist/safe-bash-network-engine/platform-portable.js +3 -1
- package/dist/safe-bash-query-engine/dates.d.ts +1 -1
- package/dist/safe-bash-query-engine/dates.js +1 -1
- package/dist/safe-bash-query-engine/index.js +6 -6
- package/dist/safe-bash-query-engine/interpreter.js +4 -4
- package/dist/safe-bash-query-engine/parser.js +1 -1
- package/dist/safe-bash-query-engine/query-core.js +6 -6
- package/dist/safe-bash-regex-engine/execution/bounded-provider.js +10 -0
- package/dist/safe-bash-regex-engine/index.js +1 -1
- package/dist/safe-bash-regex-engine/text/regex.d.ts +1 -1
- package/dist/safe-bash-regex-engine/text/regex.js +1 -1
- package/dist/safe-bash-search-engine/ergonomic-regex.d.ts +1 -0
- package/dist/safe-bash-search-engine/ergonomic-regex.js +1 -1
- package/dist/safe-bash-search-engine/grep.js +16 -9
- package/dist/safe-bash-search-engine/matcher.d.ts +2 -2
- package/dist/safe-bash-search-engine/matcher.js +12 -8
- package/dist/safe-bash-search-engine/shared.js +1 -1
- package/dist/safe-bash-search-engine/walk.js +13 -1
- package/dist/safe-bash-text-stream-engine/stream-format/shared.d.ts +1 -1
- package/dist/safe-bash-text-stream-engine/stream-format/shared.js +2 -1
- package/dist/safe-bash-xml-engine/document.js +3 -3
- package/dist/safe-bash-xml-engine/evaluate.js +2 -2
- package/dist/safe-bash-xml-engine/index.js +4 -4
- package/dist/safe-bash-xml-engine/io.js +7 -2
- package/dist/safe-bash-xml-engine/limits.d.ts +0 -2
- package/dist/safe-bash-xml-engine/limits.js +1 -1
- package/dist/safe-bash-xml-engine/query.js +3 -3
- package/dist/safe-bash-zip-engine/index.js +3 -3
- package/dist/safe-bash-zip-engine/zip/repair.js +3 -3
- package/dist/safe-bash-zip-engine/zip/safety.js +1 -1
- package/dist/safe-bash-zip-engine/zip/sfx.js +3 -3
- package/dist/safe-bash-zip-engine/zip/volumes.js +1 -1
- package/dist/safe-bash-zip-engine/zip-format.js +3 -3
- package/dist/safe-playwright-cloudflare/browser-socket-closure.js +18 -3
- package/dist/safe-playwright-cloudflare/shell-browser-resource.js +1 -1
- package/dist/xlsx-ast/xlsx.js +6 -5
- package/package.json +86 -98
- package/dist/media-cli/bytes.d.ts +0 -8
- package/dist/media-cli/bytes.js +0 -40
- package/dist/media-cli/concat.d.ts +0 -30
- package/dist/media-cli/concat.js +0 -197
- package/dist/media-cli/content.js +0 -66
- package/dist/media-cli/dependency-grammars.d.ts +0 -12
- package/dist/media-cli/dependency-grammars.js +0 -557
- package/dist/media-cli/discover.js +0 -286
- package/dist/media-cli/engine.js +0 -190
- package/dist/media-cli/filename-expression.js +0 -147
- package/dist/media-cli/filesystem.js +0 -35
- package/dist/media-cli/frontend-contract.js +0 -8
- package/dist/media-cli/frontend-issues.d.ts +0 -6
- package/dist/media-cli/frontend-issues.js +0 -9
- package/dist/media-cli/imagemagick-operand.d.ts +0 -42
- package/dist/media-cli/imagemagick-operand.js +0 -229
- package/dist/media-cli/imagemagick-references.d.ts +0 -7
- package/dist/media-cli/imagemagick-references.js +0 -42
- package/dist/media-cli/imagemagick.generated.js +0 -3254
- package/dist/media-cli/imagemagick.js +0 -615
- package/dist/media-cli/index.js +0 -12
- package/dist/media-cli/mvg.d.ts +0 -10
- package/dist/media-cli/mvg.js +0 -102
- package/dist/media-cli/network.js +0 -78
- package/dist/media-cli/options.generated.js +0 -3312
- package/dist/media-cli/preset.d.ts +0 -11
- package/dist/media-cli/preset.js +0 -57
- package/dist/media-cli/resolution-path.d.ts +0 -23
- package/dist/media-cli/resolution-path.js +0 -217
- package/dist/media-cli/resolver.js +0 -494
- package/dist/media-cli/resources.d.ts +0 -16
- package/dist/media-cli/resources.js +0 -187
- package/dist/media-cli/shim.js +0 -52
- package/dist/media-cli/tee.d.ts +0 -6
- package/dist/media-cli/tee.js +0 -38
- package/dist/office-package/zip-sync.js +0 -111
- package/dist/remote-execution/binary.js +0 -178
- package/dist/remote-execution/callback-result.js +0 -26
- package/dist/remote-execution/canonical-capabilities.d.ts +0 -5
- package/dist/remote-execution/canonical-capabilities.js +0 -45
- package/dist/remote-execution/canonical-metadata.d.ts +0 -4
- package/dist/remote-execution/canonical-metadata.js +0 -32
- package/dist/remote-execution/client.js +0 -824
- package/dist/remote-execution/deployment.js +0 -131
- package/dist/remote-execution/descriptors.js +0 -267
- package/dist/remote-execution/effects.js +0 -357
- package/dist/remote-execution/endpoint.js +0 -224
- package/dist/remote-execution/files.js +0 -291
- package/dist/remote-execution/hosting-operation.js +0 -26
- package/dist/remote-execution/hosting-request.d.ts +0 -4
- package/dist/remote-execution/hosting-request.js +0 -12
- package/dist/remote-execution/hosting-stream.d.ts +0 -8
- package/dist/remote-execution/hosting-stream.js +0 -64
- package/dist/remote-execution/index.js +0 -18
- package/dist/remote-execution/invocation-admission.d.ts +0 -3
- package/dist/remote-execution/invocation-admission.js +0 -17
- package/dist/remote-execution/job-binding.js +0 -1269
- package/dist/remote-execution/materializations.js +0 -284
- package/dist/remote-execution/modal-driver.js +0 -90
- package/dist/remote-execution/native-result.d.ts +0 -3
- package/dist/remote-execution/native-result.js +0 -16
- package/dist/remote-execution/output-freshness.d.ts +0 -4
- package/dist/remote-execution/output-freshness.js +0 -19
- package/dist/remote-execution/output-retrieval.js +0 -474
- package/dist/remote-execution/process-http.js +0 -607
- package/dist/remote-execution/process.js +0 -577
- package/dist/remote-execution/protocol.js +0 -208
- package/dist/remote-execution/relay.js +0 -91
- package/dist/remote-execution/rest-driver.js +0 -93
- package/dist/remote-execution/upload-descriptor.js +0 -201
- package/dist/remote-execution/upload-protocol.js +0 -62
- package/dist/remote-execution/uploads.js +0 -324
- package/dist/remote-execution/wire-json.d.ts +0 -4
- package/dist/remote-execution/wire-json.js +0 -44
- package/dist/remote-execution/wire-validation.js +0 -131
- package/dist/remote-execution/wire.generated.js +0 -4224
- package/dist/safe-bash/chunks/chunk-GDYNCWRV.js +0 -161
- package/dist/safe-bash/chunks/chunk-IWDICZVK.js +0 -20
- package/dist/safe-bash/chunks/chunk-MHMMRCYC.js +0 -3464
- package/dist/safe-bash/chunks/chunk-UE5KZDEK.js +0 -77
- package/dist/safe-bash/chunks/csvkit-TACDU7FC.js +0 -1618
- package/dist/safe-bash/chunks/implementation-MLFHUQ5M.js +0 -133
- package/dist/safe-bash/commands/csvkit/sync.js +0 -1639
- package/dist/safe-bash/commands/node/unconfigured.d.ts +0 -3
- package/dist/safe-bash/commands/node/unconfigured.js +0 -10
- package/dist/safe-bash/commands/pandoc/implementation.d.ts +0 -8
- package/dist/safe-bash/commands/pandoc/implementation.js +0 -94
- package/dist/safe-bash-mcp/index.browser.js +0 -9167
- package/dist/safe-bash/command-chunks/{chunk-ZRRBXU3M.js → chunk-GIN5GUDP.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-LAOM65EE.js → chunk-IEO4XVN6.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-BXCXRYVU.js → chunk-JNANXVJV.js} +0 -0
- package/dist/safe-bash/command-chunks/{chunk-364TMWBT.js → chunk-MWREVL44.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-464RVBGB.js → chunk-Q5TDKFHK.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-AJR3AQYA.js → chunk-UKX3LZHR.js} +0 -0
- package/dist/safe-bash/command-chunks/{chunk-XIIBTGC5.js → chunk-XPXEQKRW.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-FDBUV4HJ.js → chunk-Y4HGTG3E.js} +3 -3
- /package/dist/{safe-bash/commands/csvkit → safe-bash-command-csvkit}/sync.d.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../safe-bash/command-chunks/chunk-
|
|
1
|
+
import "../safe-bash/command-chunks/chunk-UKX3LZHR.js";
|
|
2
2
|
import {
|
|
3
3
|
decodeImage,
|
|
4
4
|
encodeImage,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
negateImage,
|
|
11
11
|
resizeImage,
|
|
12
12
|
rotateImage
|
|
13
|
-
} from "../safe-bash/command-chunks/chunk-
|
|
13
|
+
} from "../safe-bash/command-chunks/chunk-M3NINRDU.js";
|
|
14
14
|
import {
|
|
15
15
|
init_buffer
|
|
16
16
|
} from "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
|
|
@@ -1385,7 +1385,7 @@ function buildH264SpsPps(width, height, fps = 30) {
|
|
|
1385
1385
|
pps.set(ppsRbsp, 1);
|
|
1386
1386
|
return { sps, pps };
|
|
1387
1387
|
}
|
|
1388
|
-
function encodeH264IdrFrame(rgba, width, height, frameIndex = 0) {
|
|
1388
|
+
function encodeH264IdrFrame(rgba, width, height, frameIndex = 0, refBuffer) {
|
|
1389
1389
|
const mbWidth = Math.max(1, Math.ceil(width / 16));
|
|
1390
1390
|
const mbHeight = Math.max(1, Math.ceil(height / 16));
|
|
1391
1391
|
const paddedWidth = mbWidth * 16;
|
|
@@ -1408,6 +1408,96 @@ function encodeH264IdrFrame(rgba, width, height, frameIndex = 0) {
|
|
|
1408
1408
|
}
|
|
1409
1409
|
const { y: yPlane, u: uPlane, v: vPlane } = rgbaToYuv420p(paddedRgba, paddedWidth, paddedHeight);
|
|
1410
1410
|
const uvWidth = paddedWidth >>> 1;
|
|
1411
|
+
const gopPos = frameIndex % 24;
|
|
1412
|
+
if (refBuffer && gopPos !== 0 && refBuffer.y?.byteLength === yPlane.byteLength && refBuffer.u?.byteLength === uPlane.byteLength && refBuffer.v?.byteLength === vPlane.byteLength) {
|
|
1413
|
+
const refY = refBuffer.y;
|
|
1414
|
+
const refU = refBuffer.u;
|
|
1415
|
+
const refV = refBuffer.v;
|
|
1416
|
+
const pBits = new BitWriter();
|
|
1417
|
+
pBits.writeUE(0);
|
|
1418
|
+
pBits.writeUE(5);
|
|
1419
|
+
pBits.writeUE(0);
|
|
1420
|
+
pBits.writeBits(gopPos & 15, 4);
|
|
1421
|
+
pBits.writeBits(gopPos * 2 & 15, 4);
|
|
1422
|
+
pBits.writeBit(0);
|
|
1423
|
+
pBits.writeBit(0);
|
|
1424
|
+
pBits.writeBit(0);
|
|
1425
|
+
pBits.writeSE(0);
|
|
1426
|
+
pBits.writeUE(1);
|
|
1427
|
+
let skipRun = 0;
|
|
1428
|
+
for (let mbY = 0; mbY < mbHeight; mbY++) {
|
|
1429
|
+
for (let mbX = 0; mbX < mbWidth; mbX++) {
|
|
1430
|
+
const lumaBaseY = mbY * 16;
|
|
1431
|
+
const lumaBaseX = mbX * 16;
|
|
1432
|
+
const chromaBaseY = mbY * 8;
|
|
1433
|
+
const chromaBaseX = mbX * 8;
|
|
1434
|
+
let unchanged = true;
|
|
1435
|
+
for (let dy = 0; dy < 16 && unchanged; dy++) {
|
|
1436
|
+
const ro = (lumaBaseY + dy) * paddedWidth + lumaBaseX;
|
|
1437
|
+
for (let dx = 0; dx < 16; dx++) {
|
|
1438
|
+
if (yPlane[ro + dx] !== refY[ro + dx]) {
|
|
1439
|
+
unchanged = false;
|
|
1440
|
+
break;
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
}
|
|
1444
|
+
for (let dy = 0; dy < 8 && unchanged; dy++) {
|
|
1445
|
+
const ro = (chromaBaseY + dy) * uvWidth + chromaBaseX;
|
|
1446
|
+
for (let dx = 0; dx < 8; dx++) {
|
|
1447
|
+
if (uPlane[ro + dx] !== refU[ro + dx] || vPlane[ro + dx] !== refV[ro + dx]) {
|
|
1448
|
+
unchanged = false;
|
|
1449
|
+
break;
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
if (unchanged) {
|
|
1454
|
+
skipRun++;
|
|
1455
|
+
} else {
|
|
1456
|
+
pBits.writeUE(skipRun);
|
|
1457
|
+
skipRun = 0;
|
|
1458
|
+
pBits.writeUE(30);
|
|
1459
|
+
pBits.alignWithZeroBits();
|
|
1460
|
+
for (let dy = 0; dy < 16; dy++) {
|
|
1461
|
+
const ro = (lumaBaseY + dy) * paddedWidth + lumaBaseX;
|
|
1462
|
+
for (let dx = 0; dx < 16; dx++) {
|
|
1463
|
+
pBits.writeBits(yPlane[ro + dx], 8);
|
|
1464
|
+
}
|
|
1465
|
+
}
|
|
1466
|
+
for (let dy = 0; dy < 8; dy++) {
|
|
1467
|
+
const ro = (chromaBaseY + dy) * uvWidth + chromaBaseX;
|
|
1468
|
+
for (let dx = 0; dx < 8; dx++) {
|
|
1469
|
+
pBits.writeBits(uPlane[ro + dx], 8);
|
|
1470
|
+
}
|
|
1471
|
+
}
|
|
1472
|
+
for (let dy = 0; dy < 8; dy++) {
|
|
1473
|
+
const ro = (chromaBaseY + dy) * uvWidth + chromaBaseX;
|
|
1474
|
+
for (let dx = 0; dx < 8; dx++) {
|
|
1475
|
+
pBits.writeBits(vPlane[ro + dx], 8);
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
if (skipRun > 0) {
|
|
1482
|
+
pBits.writeUE(skipRun);
|
|
1483
|
+
}
|
|
1484
|
+
pBits.writeRbspTrailingBits();
|
|
1485
|
+
const pEscaped = escapeRbsp(pBits.toUint8Array());
|
|
1486
|
+
const pLen = 1 + pEscaped.byteLength;
|
|
1487
|
+
const pAvcc = new Uint8Array(4 + pLen);
|
|
1488
|
+
new DataView(pAvcc.buffer).setUint32(0, pLen, false);
|
|
1489
|
+
pAvcc[4] = 97;
|
|
1490
|
+
pAvcc.set(pEscaped, 5);
|
|
1491
|
+
refBuffer.y = yPlane;
|
|
1492
|
+
refBuffer.u = uPlane;
|
|
1493
|
+
refBuffer.v = vPlane;
|
|
1494
|
+
return pAvcc;
|
|
1495
|
+
}
|
|
1496
|
+
if (refBuffer) {
|
|
1497
|
+
refBuffer.y = yPlane;
|
|
1498
|
+
refBuffer.u = uPlane;
|
|
1499
|
+
refBuffer.v = vPlane;
|
|
1500
|
+
}
|
|
1411
1501
|
const bits = new BitWriter();
|
|
1412
1502
|
bits.writeUE(0);
|
|
1413
1503
|
bits.writeUE(7);
|
|
@@ -1457,7 +1547,7 @@ function encodeH264IdrFrame(rgba, width, height, frameIndex = 0) {
|
|
|
1457
1547
|
avcc.set(escapedRbsp, 5);
|
|
1458
1548
|
return avcc;
|
|
1459
1549
|
}
|
|
1460
|
-
function decodeH264FrameToRgba(sampleData, width, height, lengthSize = 4) {
|
|
1550
|
+
function decodeH264FrameToRgba(sampleData, width, height, lengthSize = 4, refBuffer) {
|
|
1461
1551
|
const mbWidth = Math.max(1, Math.ceil(width / 16));
|
|
1462
1552
|
const mbHeight = Math.max(1, Math.ceil(height / 16));
|
|
1463
1553
|
const paddedWidth = mbWidth * 16;
|
|
@@ -1487,9 +1577,18 @@ function decodeH264FrameToRgba(sampleData, width, height, lengthSize = 4) {
|
|
|
1487
1577
|
return decodeH264FrameToRgba(converted.avccData, width, height, 4);
|
|
1488
1578
|
}
|
|
1489
1579
|
}
|
|
1490
|
-
const yPlane = new Uint8Array(paddedWidth * paddedHeight)
|
|
1491
|
-
const uPlane = new Uint8Array(uvWidth * uvHeight)
|
|
1492
|
-
const vPlane = new Uint8Array(uvWidth * uvHeight)
|
|
1580
|
+
const yPlane = new Uint8Array(paddedWidth * paddedHeight);
|
|
1581
|
+
const uPlane = new Uint8Array(uvWidth * uvHeight);
|
|
1582
|
+
const vPlane = new Uint8Array(uvWidth * uvHeight);
|
|
1583
|
+
if (refBuffer && refBuffer.y?.byteLength === yPlane.byteLength && refBuffer.u?.byteLength === uPlane.byteLength && refBuffer.v?.byteLength === vPlane.byteLength) {
|
|
1584
|
+
yPlane.set(refBuffer.y);
|
|
1585
|
+
uPlane.set(refBuffer.u);
|
|
1586
|
+
vPlane.set(refBuffer.v);
|
|
1587
|
+
} else {
|
|
1588
|
+
yPlane.fill(16);
|
|
1589
|
+
uPlane.fill(128);
|
|
1590
|
+
vPlane.fill(128);
|
|
1591
|
+
}
|
|
1493
1592
|
if (sliceNalu && sliceNalu.byteLength > 1) {
|
|
1494
1593
|
const nalType = sliceNalu[0] & 31;
|
|
1495
1594
|
const nalRefIdc = sliceNalu[0] >>> 5 & 3;
|
|
@@ -1503,6 +1602,16 @@ function decodeH264FrameToRgba(sampleData, width, height, lengthSize = 4) {
|
|
|
1503
1602
|
bits.readUE();
|
|
1504
1603
|
}
|
|
1505
1604
|
bits.readBits(4);
|
|
1605
|
+
if (sliceType === 0 || sliceType === 5) {
|
|
1606
|
+
const numRefOverride = bits.readBit();
|
|
1607
|
+
if (numRefOverride) bits.readUE();
|
|
1608
|
+
const refPicListMod = bits.readBit();
|
|
1609
|
+
if (refPicListMod) {
|
|
1610
|
+
while (bits.bitsRemaining > 0 && bits.readUE() !== 3) {
|
|
1611
|
+
bits.readUE();
|
|
1612
|
+
}
|
|
1613
|
+
}
|
|
1614
|
+
}
|
|
1506
1615
|
if (nalType === 5) {
|
|
1507
1616
|
bits.readBit();
|
|
1508
1617
|
bits.readBit();
|
|
@@ -1551,6 +1660,52 @@ function decodeH264FrameToRgba(sampleData, width, height, lengthSize = 4) {
|
|
|
1551
1660
|
}
|
|
1552
1661
|
}
|
|
1553
1662
|
}
|
|
1663
|
+
} else if (firstMb === 0 && (sliceType === 0 || sliceType === 5)) {
|
|
1664
|
+
const totalMbs = mbWidth * mbHeight;
|
|
1665
|
+
let mbAddr = 0;
|
|
1666
|
+
while (mbAddr < totalMbs && bits.bitsRemaining > 0) {
|
|
1667
|
+
const skipRun = bits.readUE();
|
|
1668
|
+
mbAddr += skipRun;
|
|
1669
|
+
decodedMbs += skipRun;
|
|
1670
|
+
if (mbAddr >= totalMbs || bits.bitsRemaining < 8) break;
|
|
1671
|
+
const mbType = bits.readUE();
|
|
1672
|
+
if (mbType === 30) {
|
|
1673
|
+
bits.alignToByte();
|
|
1674
|
+
const mbY = Math.floor(mbAddr / mbWidth);
|
|
1675
|
+
const mbX = mbAddr % mbWidth;
|
|
1676
|
+
const lumaBaseY = mbY * 16;
|
|
1677
|
+
const lumaBaseX = mbX * 16;
|
|
1678
|
+
for (let dy = 0; dy < 16; dy++) {
|
|
1679
|
+
const rowOffset = (lumaBaseY + dy) * paddedWidth + lumaBaseX;
|
|
1680
|
+
for (let dx = 0; dx < 16; dx++) {
|
|
1681
|
+
yPlane[rowOffset + dx] = bits.readBits(8);
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
1684
|
+
const chromaBaseY = mbY * 8;
|
|
1685
|
+
const chromaBaseX = mbX * 8;
|
|
1686
|
+
for (let dy = 0; dy < 8; dy++) {
|
|
1687
|
+
const rowOffset = (chromaBaseY + dy) * uvWidth + chromaBaseX;
|
|
1688
|
+
for (let dx = 0; dx < 8; dx++) {
|
|
1689
|
+
uPlane[rowOffset + dx] = bits.readBits(8);
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
for (let dy = 0; dy < 8; dy++) {
|
|
1693
|
+
const rowOffset = (chromaBaseY + dy) * uvWidth + chromaBaseX;
|
|
1694
|
+
for (let dx = 0; dx < 8; dx++) {
|
|
1695
|
+
vPlane[rowOffset + dx] = bits.readBits(8);
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
mbAddr++;
|
|
1699
|
+
decodedMbs++;
|
|
1700
|
+
} else {
|
|
1701
|
+
break;
|
|
1702
|
+
}
|
|
1703
|
+
}
|
|
1704
|
+
}
|
|
1705
|
+
if (refBuffer && decodedMbs > 0) {
|
|
1706
|
+
refBuffer.y = yPlane;
|
|
1707
|
+
refBuffer.u = uPlane;
|
|
1708
|
+
refBuffer.v = vPlane;
|
|
1554
1709
|
}
|
|
1555
1710
|
if (decodedMbs === 0) {
|
|
1556
1711
|
for (let mbY = 0; mbY < mbHeight; mbY++) {
|
|
@@ -2401,9 +2556,10 @@ function parseMp4(bytes, options = {}) {
|
|
|
2401
2556
|
if (options.decodeFrames && type === "video" && width && height) {
|
|
2402
2557
|
const lengthSize = (firstCodec?.avcC?.lengthSizeMinusOne ?? 3) + 1;
|
|
2403
2558
|
decodedVideoFrames = [];
|
|
2559
|
+
const refBuffer = {};
|
|
2404
2560
|
for (const sample of samples) {
|
|
2405
2561
|
budget.recordFrame(width, height);
|
|
2406
|
-
const rgba = decodeH264FrameToRgba(sample.data, width, height, lengthSize);
|
|
2562
|
+
const rgba = decodeH264FrameToRgba(sample.data, width, height, lengthSize, refBuffer);
|
|
2407
2563
|
decodedVideoFrames.push({
|
|
2408
2564
|
width,
|
|
2409
2565
|
height,
|
|
@@ -2676,10 +2832,11 @@ function materializeTrackSamples(track) {
|
|
|
2676
2832
|
const avcC = parseAvcC(avcCBytes);
|
|
2677
2833
|
const samples = [];
|
|
2678
2834
|
let dts = 0;
|
|
2835
|
+
const refBuffer = {};
|
|
2679
2836
|
for (let i = 0; i < track.decodedVideoFrames.length; i++) {
|
|
2680
2837
|
const frame = track.decodedVideoFrames[i];
|
|
2681
2838
|
const duration = Math.max(1, Math.round(frame.durationSeconds * timescale));
|
|
2682
|
-
const encoded = encodeH264IdrFrame(frame.data, width, height, i);
|
|
2839
|
+
const encoded = encodeH264IdrFrame(frame.data, width, height, i, refBuffer);
|
|
2683
2840
|
samples.push({
|
|
2684
2841
|
data: encoded,
|
|
2685
2842
|
dts,
|
|
@@ -2692,36 +2849,42 @@ function materializeTrackSamples(track) {
|
|
|
2692
2849
|
});
|
|
2693
2850
|
dts += duration;
|
|
2694
2851
|
}
|
|
2852
|
+
const codecDescriptions = [
|
|
2853
|
+
{
|
|
2854
|
+
formatFourCC: "avc1",
|
|
2855
|
+
codecName: "h264",
|
|
2856
|
+
profile: "Constrained Baseline",
|
|
2857
|
+
level: 31,
|
|
2858
|
+
width,
|
|
2859
|
+
height,
|
|
2860
|
+
pixFmt: "yuv420p",
|
|
2861
|
+
avcC
|
|
2862
|
+
}
|
|
2863
|
+
];
|
|
2864
|
+
const mutableTrack = track;
|
|
2865
|
+
mutableTrack.samples = samples;
|
|
2866
|
+
mutableTrack.codecDescriptions = codecDescriptions;
|
|
2867
|
+
mutableTrack.dirtyVideoEncode = false;
|
|
2868
|
+
mutableTrack.decodedVideoFrames = void 0;
|
|
2695
2869
|
return {
|
|
2696
2870
|
samples,
|
|
2697
|
-
codecDescriptions
|
|
2698
|
-
{
|
|
2699
|
-
formatFourCC: "avc1",
|
|
2700
|
-
codecName: "h264",
|
|
2701
|
-
profile: "Constrained Baseline",
|
|
2702
|
-
level: 31,
|
|
2703
|
-
width,
|
|
2704
|
-
height,
|
|
2705
|
-
pixFmt: "yuv420p",
|
|
2706
|
-
avcC
|
|
2707
|
-
}
|
|
2708
|
-
]
|
|
2871
|
+
codecDescriptions
|
|
2709
2872
|
};
|
|
2710
2873
|
}
|
|
2711
2874
|
if (track.type === "audio" && track.decodedAudio) {
|
|
2712
2875
|
const sampleRate = track.decodedAudio.sampleRate || 44100;
|
|
2713
2876
|
const channels = track.decodedAudio.channels || 2;
|
|
2714
|
-
const totalSamples = track.decodedAudio.channelData[0]?.length ??
|
|
2715
|
-
const numFrames = Math.
|
|
2877
|
+
const totalSamples = track.decodedAudio.channelData[0]?.length ?? 0;
|
|
2878
|
+
const numFrames = Math.ceil(totalSamples / 1024);
|
|
2716
2879
|
const silentAac = createSilentAacFrame(channels);
|
|
2717
2880
|
const samples = [];
|
|
2718
2881
|
for (let i = 0; i < numFrames; i++) {
|
|
2719
2882
|
samples.push({
|
|
2720
2883
|
data: silentAac,
|
|
2721
|
-
dts: i * 1024,
|
|
2722
|
-
pts: i * 1024,
|
|
2884
|
+
dts: Math.round(i * 1024 * track.timescale / sampleRate),
|
|
2885
|
+
pts: Math.round(i * 1024 * track.timescale / sampleRate),
|
|
2723
2886
|
cts: 0,
|
|
2724
|
-
duration: 1024,
|
|
2887
|
+
duration: Math.round(Math.min(totalSamples, (i + 1) * 1024) * track.timescale / sampleRate) - Math.round(i * 1024 * track.timescale / sampleRate),
|
|
2725
2888
|
size: silentAac.byteLength,
|
|
2726
2889
|
isKeyframe: true,
|
|
2727
2890
|
sampleDescriptionIndex: 1
|
|
@@ -3139,6 +3302,8 @@ function concatMp4(docs, options = {}) {
|
|
|
3139
3302
|
const mergedSamples = trackSlots.map(() => []);
|
|
3140
3303
|
const mergedDecodedFrames = trackSlots.map(() => []);
|
|
3141
3304
|
const runningTicksPerSlot = trackSlots.map(() => 0);
|
|
3305
|
+
const audioSegments = trackSlots.map(() => []);
|
|
3306
|
+
const encodedAudioSlots = /* @__PURE__ */ new Set();
|
|
3142
3307
|
for (let docIdx = 0; docIdx < docs.length; docIdx++) {
|
|
3143
3308
|
budget.checkCpu();
|
|
3144
3309
|
const doc = docs[docIdx];
|
|
@@ -3180,6 +3345,13 @@ function concatMp4(docs, options = {}) {
|
|
|
3180
3345
|
}
|
|
3181
3346
|
}
|
|
3182
3347
|
let currentTick = runningTicksPerSlot[slotIdx];
|
|
3348
|
+
if (trk.type === "audio") {
|
|
3349
|
+
if (trk.decodedAudio) {
|
|
3350
|
+
audioSegments[slotIdx].push({ audio: trk.decodedAudio, offsetSeconds: currentTick / targetTimescale });
|
|
3351
|
+
} else if (materialized.samples.length > 0) {
|
|
3352
|
+
encodedAudioSlots.add(slotIdx);
|
|
3353
|
+
}
|
|
3354
|
+
}
|
|
3183
3355
|
for (const s of materialized.samples) {
|
|
3184
3356
|
const scaledDur = Math.max(1, Math.round(s.duration * scaleRatio));
|
|
3185
3357
|
const scaledCts = Math.round(s.cts * scaleRatio);
|
|
@@ -3230,9 +3402,49 @@ function concatMp4(docs, options = {}) {
|
|
|
3230
3402
|
const timescale = slotTimescales[idx];
|
|
3231
3403
|
const samples = mergedSamples[idx];
|
|
3232
3404
|
const duration = samples.reduce((acc, s) => acc + s.duration, 0);
|
|
3405
|
+
const segments = audioSegments[idx];
|
|
3406
|
+
let decodedAudio;
|
|
3407
|
+
if (segments.length > 0) {
|
|
3408
|
+
if (encodedAudioSlots.has(idx)) {
|
|
3409
|
+
throw new Error("concatMp4 requires all segments in a decoded audio track to be decoded");
|
|
3410
|
+
}
|
|
3411
|
+
const { sampleRate, channels } = segments[0].audio;
|
|
3412
|
+
const length = Math.round(duration / timescale * sampleRate);
|
|
3413
|
+
budget.allocateMemory(length * channels * Float32Array.BYTES_PER_ELEMENT);
|
|
3414
|
+
const channelData = Array.from({ length: channels }, () => new Float32Array(length));
|
|
3415
|
+
for (const { audio, offsetSeconds } of segments) {
|
|
3416
|
+
const offset = Math.round(offsetSeconds * sampleRate);
|
|
3417
|
+
const sourceLength = audio.channelData[0]?.length ?? 0;
|
|
3418
|
+
const count = Math.min(length - offset, Math.round(sourceLength * sampleRate / audio.sampleRate));
|
|
3419
|
+
for (let channel = 0; channel < channels; channel++) {
|
|
3420
|
+
const sources = channels === 1 ? audio.channelData : [audio.channelData[channel % audio.channels]];
|
|
3421
|
+
const output = channelData[channel];
|
|
3422
|
+
if (audio.sampleRate === sampleRate && sources.length === 1) {
|
|
3423
|
+
budget.checkCpu();
|
|
3424
|
+
output.set(sources[0].subarray(0, count), offset);
|
|
3425
|
+
continue;
|
|
3426
|
+
}
|
|
3427
|
+
for (let i = 0; i < count; i++) {
|
|
3428
|
+
if (i % 4096 === 0) budget.checkCpu();
|
|
3429
|
+
const position = i * audio.sampleRate / sampleRate;
|
|
3430
|
+
const left = Math.floor(position);
|
|
3431
|
+
const fraction = position - left;
|
|
3432
|
+
let value = 0;
|
|
3433
|
+
for (const source of sources) {
|
|
3434
|
+
const a = source[left] ?? 0;
|
|
3435
|
+
const b = source[Math.min(left + 1, source.length - 1)] ?? 0;
|
|
3436
|
+
value += a + (b - a) * fraction;
|
|
3437
|
+
}
|
|
3438
|
+
output[offset + i] = value / sources.length;
|
|
3439
|
+
}
|
|
3440
|
+
}
|
|
3441
|
+
}
|
|
3442
|
+
decodedAudio = { sampleRate, channels, channelData };
|
|
3443
|
+
}
|
|
3233
3444
|
return {
|
|
3234
3445
|
...slot.template,
|
|
3235
3446
|
id: idx + 1,
|
|
3447
|
+
decodedAudio,
|
|
3236
3448
|
timescale,
|
|
3237
3449
|
duration,
|
|
3238
3450
|
codecDescriptions: mergedCodecDescriptions[idx],
|
|
@@ -3264,11 +3476,11 @@ function* sliceMp4Steps(doc, options = {}) {
|
|
|
3264
3476
|
let work = 0;
|
|
3265
3477
|
const startSec = Math.max(0, options.startSeconds ?? 0);
|
|
3266
3478
|
const endSec = options.endSeconds !== void 0 ? options.endSeconds : options.durationSeconds !== void 0 ? startSec + options.durationSeconds : doc.durationSeconds;
|
|
3267
|
-
const useEditList = options.useEditList ?? true;
|
|
3268
3479
|
const movieTimescale = doc.timescale || 1e3;
|
|
3269
3480
|
const slicedTracks = [];
|
|
3270
3481
|
for (const track of doc.tracks) {
|
|
3271
3482
|
if (++work % 256 === 0) yield;
|
|
3483
|
+
const useEditList = (options.useEditList ?? true) && !track.decodedAudio;
|
|
3272
3484
|
const materialized = materializeTrackSamples(track);
|
|
3273
3485
|
const ts = track.timescale || 1e3;
|
|
3274
3486
|
const sourceOrigin = Math.max(0, track.editList?.[0]?.mediaTime ?? 0);
|
|
@@ -3295,14 +3507,37 @@ function* sliceMp4Steps(doc, options = {}) {
|
|
|
3295
3507
|
}
|
|
3296
3508
|
const slicedSamples = [];
|
|
3297
3509
|
let runningDts = 0;
|
|
3510
|
+
let promotedFirstSampleData;
|
|
3511
|
+
if (track.type === "video" && actualStartIdx < materialized.samples.length && materialized.samples[actualStartIdx].data.byteLength > 5 && (materialized.samples[actualStartIdx].data[4] & 31) === 1) {
|
|
3512
|
+
let keyIdx = actualStartIdx;
|
|
3513
|
+
while (keyIdx > 0 && (materialized.samples[keyIdx].data[4] & 31) !== 5) {
|
|
3514
|
+
keyIdx--;
|
|
3515
|
+
}
|
|
3516
|
+
const w = track.width ?? materialized.codecDescriptions[0]?.width ?? 64;
|
|
3517
|
+
const h = track.height ?? materialized.codecDescriptions[0]?.height ?? 64;
|
|
3518
|
+
const lengthSize = (materialized.codecDescriptions[0]?.avcC?.lengthSizeMinusOne ?? 3) + 1;
|
|
3519
|
+
const refBuf = {};
|
|
3520
|
+
let rgba;
|
|
3521
|
+
for (let k = keyIdx; k <= actualStartIdx; k++) {
|
|
3522
|
+
rgba = decodeH264FrameToRgba(materialized.samples[k].data, w, h, lengthSize, refBuf);
|
|
3523
|
+
}
|
|
3524
|
+
if (rgba) {
|
|
3525
|
+
promotedFirstSampleData = encodeH264IdrFrame(rgba, w, h, 0);
|
|
3526
|
+
}
|
|
3527
|
+
}
|
|
3298
3528
|
for (let i = actualStartIdx; i < materialized.samples.length; i++) {
|
|
3299
3529
|
if (++work % 256 === 0) yield;
|
|
3300
3530
|
const s = materialized.samples[i];
|
|
3301
3531
|
if (s.dts >= endTick) break;
|
|
3302
3532
|
const sampleStart = useEditList ? s.dts : Math.max(startTick, s.dts);
|
|
3303
3533
|
const clippedDuration = Math.max(0, Math.min(s.dts + s.duration, endTick) - sampleStart);
|
|
3534
|
+
const isPromotedFirst = i === actualStartIdx && promotedFirstSampleData !== void 0;
|
|
3535
|
+
const sampleData = isPromotedFirst ? promotedFirstSampleData : s.data;
|
|
3304
3536
|
slicedSamples.push({
|
|
3305
3537
|
...s,
|
|
3538
|
+
data: sampleData,
|
|
3539
|
+
size: sampleData.byteLength,
|
|
3540
|
+
isKeyframe: isPromotedFirst ? true : s.isKeyframe,
|
|
3306
3541
|
dts: runningDts,
|
|
3307
3542
|
pts: runningDts + s.cts,
|
|
3308
3543
|
duration: clippedDuration
|
|
@@ -3329,8 +3564,18 @@ function* sliceMp4Steps(doc, options = {}) {
|
|
|
3329
3564
|
ptsSeconds: Math.max(0, f.ptsSeconds - startSec)
|
|
3330
3565
|
}));
|
|
3331
3566
|
}
|
|
3567
|
+
const decodedAudio = track.decodedAudio && {
|
|
3568
|
+
...track.decodedAudio,
|
|
3569
|
+
channelData: track.decodedAudio.channelData.map(
|
|
3570
|
+
(channel) => channel.slice(Math.round(startSec * track.decodedAudio.sampleRate), Math.max(0, Math.round(endSec * track.decodedAudio.sampleRate)))
|
|
3571
|
+
)
|
|
3572
|
+
};
|
|
3573
|
+
if (decodedAudio) {
|
|
3574
|
+
runningDts = Math.round((decodedAudio.channelData[0]?.length ?? 0) * ts / decodedAudio.sampleRate);
|
|
3575
|
+
}
|
|
3332
3576
|
slicedTracks.push({
|
|
3333
3577
|
...track,
|
|
3578
|
+
decodedAudio,
|
|
3334
3579
|
duration: editList ? Math.round(editList[0].segmentDuration * ts / movieTimescale) : runningDts,
|
|
3335
3580
|
codecDescriptions: materialized.codecDescriptions,
|
|
3336
3581
|
editList,
|
|
@@ -5922,7 +6167,7 @@ function flvAst() {
|
|
|
5922
6167
|
|
|
5923
6168
|
// packages/mp4-ast/src/containers/adapters.ts
|
|
5924
6169
|
init_buffer();
|
|
5925
|
-
function extractVideoFramesFromDoc(doc) {
|
|
6170
|
+
function extractVideoFramesFromDoc(doc, maxFrames) {
|
|
5926
6171
|
const vTrack = doc.tracks.find((t) => t.type === "video");
|
|
5927
6172
|
if (!vTrack) {
|
|
5928
6173
|
return { frames: [], width: 64, height: 64, fps: 10 };
|
|
@@ -5940,10 +6185,12 @@ function extractVideoFramesFromDoc(doc) {
|
|
|
5940
6185
|
}
|
|
5941
6186
|
const ts = vTrack.timescale || 9e4;
|
|
5942
6187
|
const lengthSize = (vTrack.codecDescriptions[0]?.avcC?.lengthSizeMinusOne ?? 3) + 1;
|
|
5943
|
-
const
|
|
6188
|
+
const refBuffer = {};
|
|
6189
|
+
const targetSamples = maxFrames !== void 0 ? vTrack.samples.slice(0, maxFrames) : vTrack.samples;
|
|
6190
|
+
const frames = targetSamples.map((s) => ({
|
|
5944
6191
|
width,
|
|
5945
6192
|
height,
|
|
5946
|
-
data: decodeH264FrameToRgba(s.data, width, height, lengthSize),
|
|
6193
|
+
data: decodeH264FrameToRgba(s.data, width, height, lengthSize, refBuffer),
|
|
5947
6194
|
ptsSeconds: s.pts / ts,
|
|
5948
6195
|
durationSeconds: s.duration / ts,
|
|
5949
6196
|
keyframe: s.isKeyframe
|
|
@@ -6938,7 +7185,7 @@ function image2Ast() {
|
|
|
6938
7185
|
};
|
|
6939
7186
|
},
|
|
6940
7187
|
serialize(doc, options) {
|
|
6941
|
-
const { frames, width, height } = extractVideoFramesFromDoc(doc);
|
|
7188
|
+
const { frames, width, height } = extractVideoFramesFromDoc(doc, 1);
|
|
6942
7189
|
const first = frames[0]?.data ?? new Uint8Array(width * height * 4);
|
|
6943
7190
|
const fmt = options?.format?.toLowerCase() ?? "png";
|
|
6944
7191
|
const imgFmt = fmt === "jpg" || fmt === "jpeg" || fmt === "mjpeg" ? "jpeg" : fmt === "webp" ? "webp" : fmt === "gif" ? "gif" : fmt === "bmp" ? "bmp" : fmt === "tiff" || fmt === "tif" ? "tiff" : fmt === "ppm" ? "ppm" : "png";
|
|
@@ -7498,10 +7745,37 @@ function createMediaAstRegistry(plugins) {
|
|
|
7498
7745
|
}
|
|
7499
7746
|
|
|
7500
7747
|
// packages/safe-bash-command-ffmpeg/src/index.ts
|
|
7501
|
-
|
|
7748
|
+
function isStdin(path) {
|
|
7749
|
+
return ["-", "pipe:", "pipe:0", "/dev/stdin", "/dev/fd/0"].includes(path);
|
|
7750
|
+
}
|
|
7751
|
+
function isStdout(path) {
|
|
7752
|
+
return ["-", "pipe:", "pipe:1", "/dev/stdout", "/dev/fd/1"].includes(path);
|
|
7753
|
+
}
|
|
7754
|
+
function rethrowRuntimeError(context, error) {
|
|
7755
|
+
context.signal.throwIfAborted();
|
|
7756
|
+
if (error instanceof Error && (error.name === "BudgetExceededError" || error.name === "AbortError")) throw error;
|
|
7757
|
+
if (typeof error === "object" && error !== null && "code" in error && error.code === "EPIPE") throw error;
|
|
7758
|
+
}
|
|
7759
|
+
function createInputReader(context, budget) {
|
|
7760
|
+
let total = 0;
|
|
7761
|
+
const account = (bytes) => {
|
|
7762
|
+
context.signal.throwIfAborted();
|
|
7763
|
+
total += bytes.byteLength;
|
|
7764
|
+
context.inputBudget?.check(total);
|
|
7765
|
+
budget.checkInputBytes(total);
|
|
7766
|
+
};
|
|
7767
|
+
return async (path) => {
|
|
7768
|
+
if (isStdin(path)) return readStdinAll(context, account);
|
|
7769
|
+
const bytes = await context.fs.readFile(resolvePath(context.cwd, path), { signal: context.signal });
|
|
7770
|
+
account(bytes);
|
|
7771
|
+
return bytes;
|
|
7772
|
+
};
|
|
7773
|
+
}
|
|
7774
|
+
async function readStdinAll(context, account) {
|
|
7502
7775
|
const chunks = [];
|
|
7503
7776
|
let total = 0;
|
|
7504
7777
|
for await (const chunk of readBytes(context.stdin, context.signal)) {
|
|
7778
|
+
account(chunk);
|
|
7505
7779
|
chunks.push(chunk);
|
|
7506
7780
|
total += chunk.byteLength;
|
|
7507
7781
|
}
|
|
@@ -7689,9 +7963,11 @@ function* lavfiSteps(spec, budget, durationOverride) {
|
|
|
7689
7963
|
[0, 0, 255]
|
|
7690
7964
|
];
|
|
7691
7965
|
const [r, g, b] = palette[bar % 7];
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
rgba[idx
|
|
7966
|
+
const scanY = i * 16 % Math.max(16, height);
|
|
7967
|
+
const inScanBar = y >= scanY && y < scanY + 16;
|
|
7968
|
+
rgba[idx] = inScanBar ? r ^ 128 : r;
|
|
7969
|
+
rgba[idx + 1] = inScanBar ? g ^ 128 : g;
|
|
7970
|
+
rgba[idx + 2] = inScanBar ? b ^ 128 : b;
|
|
7695
7971
|
rgba[idx + 3] = 255;
|
|
7696
7972
|
} else {
|
|
7697
7973
|
rgba[idx] = color[0];
|
|
@@ -7715,15 +7991,17 @@ function* lavfiSteps(spec, budget, durationOverride) {
|
|
|
7715
7991
|
width,
|
|
7716
7992
|
height,
|
|
7717
7993
|
fps,
|
|
7718
|
-
frameCount,
|
|
7994
|
+
frameCount: 1,
|
|
7719
7995
|
color: [color[0], color[1], color[2]],
|
|
7720
7996
|
includeAudio: false
|
|
7721
7997
|
});
|
|
7722
7998
|
const parsed = parseMp4(mp4Bytes);
|
|
7723
7999
|
return {
|
|
7724
8000
|
...parsed,
|
|
8001
|
+
duration: Math.round(frameCount / fps * parsed.timescale),
|
|
8002
|
+
durationSeconds: frameCount / fps,
|
|
7725
8003
|
tracks: parsed.tracks.map(
|
|
7726
|
-
(t) => t.type === "video" ? { ...t, decodedVideoFrames: frames } : t
|
|
8004
|
+
(t) => t.type === "video" ? { ...t, duration: Math.round(frameCount / fps * t.timescale), samples: [], decodedVideoFrames: frames } : t
|
|
7727
8005
|
)
|
|
7728
8006
|
};
|
|
7729
8007
|
}
|
|
@@ -7735,12 +8013,13 @@ async function ensureDecodedFrames(track, budget, signal) {
|
|
|
7735
8013
|
const height = track.height ?? track.codecDescriptions[0]?.height ?? 64;
|
|
7736
8014
|
const ts = track.timescale || 9e4;
|
|
7737
8015
|
const lengthSize = (track.codecDescriptions[0]?.avcC?.lengthSizeMinusOne ?? 3) + 1;
|
|
8016
|
+
const refBuffer = {};
|
|
7738
8017
|
return await mapWork(track.samples, async (s) => {
|
|
7739
8018
|
budget.recordFrame(width, height);
|
|
7740
8019
|
return {
|
|
7741
8020
|
width,
|
|
7742
8021
|
height,
|
|
7743
|
-
data: decodeH264FrameToRgba(s.data, width, height, lengthSize),
|
|
8022
|
+
data: decodeH264FrameToRgba(s.data, width, height, lengthSize, refBuffer),
|
|
7744
8023
|
ptsSeconds: s.pts / ts,
|
|
7745
8024
|
durationSeconds: s.duration / ts,
|
|
7746
8025
|
keyframe: s.isKeyframe
|
|
@@ -8682,7 +8961,7 @@ function evalSyncFfmpeg(inBytesOrArgs, maybeArgs, readFileSync, writeFileSync) {
|
|
|
8682
8961
|
if (inp.format === "lavfi") {
|
|
8683
8962
|
return void 0;
|
|
8684
8963
|
} else {
|
|
8685
|
-
const rawBytes = inp.path
|
|
8964
|
+
const rawBytes = isStdin(inp.path) ? inBytes : readFileSync?.(inp.path);
|
|
8686
8965
|
if (!rawBytes || rawBytes.byteLength > 262144) return void 0;
|
|
8687
8966
|
budget.checkInputBytes(rawBytes.byteLength);
|
|
8688
8967
|
const plugin = registry.detect(rawBytes, inp.path, inp.format);
|
|
@@ -8756,7 +9035,7 @@ function evalSyncFfmpeg(inBytesOrArgs, maybeArgs, readFileSync, writeFileSync) {
|
|
|
8756
9035
|
if (!outPlugin || !outPlugin.canMux) return void 0;
|
|
8757
9036
|
const outExt = outputTarget.split(".").pop()?.toLowerCase();
|
|
8758
9037
|
const serializedBytes = outPlugin.serialize(workingDoc, { format: outputFormat ?? outExt, faststart, fragmented, metadata: metaTags, budget });
|
|
8759
|
-
if (outputTarget
|
|
9038
|
+
if (isStdout(outputTarget)) return void 0;
|
|
8760
9039
|
if (!writeFileSync(outputTarget, serializedBytes)) return void 0;
|
|
8761
9040
|
return "";
|
|
8762
9041
|
} catch {
|
|
@@ -8829,7 +9108,7 @@ function evalSyncFfprobe(inBytes, args, readFileSync) {
|
|
|
8829
9108
|
if (!inputTarget) return void 0;
|
|
8830
9109
|
try {
|
|
8831
9110
|
let bytes;
|
|
8832
|
-
if (inputTarget
|
|
9111
|
+
if (isStdin(inputTarget)) {
|
|
8833
9112
|
bytes = inBytes;
|
|
8834
9113
|
} else {
|
|
8835
9114
|
bytes = readFileSync?.(inputTarget);
|
|
@@ -8871,6 +9150,7 @@ function createFfprobeCommand(options = {}) {
|
|
|
8871
9150
|
description: "Multimedia stream analyzer powered by pluggable ASTs",
|
|
8872
9151
|
async execute(context) {
|
|
8873
9152
|
const budget = new MediaBudgetTracker(options.limits);
|
|
9153
|
+
const readInput = createInputReader(context, budget);
|
|
8874
9154
|
const argsObj = getCommandArguments(context);
|
|
8875
9155
|
const args = argsObj.args;
|
|
8876
9156
|
if (args.length === 0) {
|
|
@@ -8952,14 +9232,7 @@ function createFfprobeCommand(options = {}) {
|
|
|
8952
9232
|
return { exitCode: 1 };
|
|
8953
9233
|
}
|
|
8954
9234
|
try {
|
|
8955
|
-
|
|
8956
|
-
if (inputTarget === "-" || inputTarget === "pipe:" || inputTarget === "pipe:0") {
|
|
8957
|
-
bytes = await readStdinAll(context);
|
|
8958
|
-
} else {
|
|
8959
|
-
const fullPath = resolvePath(context.cwd, inputTarget);
|
|
8960
|
-
bytes = await context.fs.readFile(fullPath, { signal: context.signal });
|
|
8961
|
-
}
|
|
8962
|
-
budget.checkInputBytes(bytes.byteLength);
|
|
9235
|
+
const bytes = await readInput(inputTarget);
|
|
8963
9236
|
const plugin = registry.detect(bytes, inputTarget, explicitFormat);
|
|
8964
9237
|
if (!plugin || !plugin.canDemux) {
|
|
8965
9238
|
const msg = explicitFormat ? `ffprobe: Unknown input format: '${explicitFormat}' (AST not registered)
|
|
@@ -8992,6 +9265,7 @@ function createFfprobeCommand(options = {}) {
|
|
|
8992
9265
|
options.onMetrics?.(budget.getStats());
|
|
8993
9266
|
return { exitCode: 0 };
|
|
8994
9267
|
} catch (err) {
|
|
9268
|
+
rethrowRuntimeError(context, err);
|
|
8995
9269
|
const msg = err instanceof Error ? err.message : String(err);
|
|
8996
9270
|
await writeBytes(context.stderr, encodeUtf8(`ffprobe: ${msg}
|
|
8997
9271
|
`), context.signal);
|
|
@@ -9010,6 +9284,7 @@ function createFfmpegCommand(options = {}) {
|
|
|
9010
9284
|
description: "Multimedia converter, merger, and stream processor powered by pluggable ASTs",
|
|
9011
9285
|
async execute(context) {
|
|
9012
9286
|
const budget = new MediaBudgetTracker(options.limits);
|
|
9287
|
+
const readInput = createInputReader(context, budget);
|
|
9013
9288
|
const argsObj = getCommandArguments(context);
|
|
9014
9289
|
const args = argsObj.args;
|
|
9015
9290
|
if (args.length === 0) {
|
|
@@ -9229,7 +9504,7 @@ function createFfmpegCommand(options = {}) {
|
|
|
9229
9504
|
return { exitCode: 1 };
|
|
9230
9505
|
}
|
|
9231
9506
|
try {
|
|
9232
|
-
if (noOverwrite && outputTarget
|
|
9507
|
+
if (noOverwrite && !isStdout(outputTarget) && outputFormat !== "null") {
|
|
9233
9508
|
const outFull = resolvePath(context.cwd, outputTarget);
|
|
9234
9509
|
try {
|
|
9235
9510
|
await context.fs.stat(outFull, { signal: context.signal });
|
|
@@ -9240,7 +9515,9 @@ function createFfmpegCommand(options = {}) {
|
|
|
9240
9515
|
context.signal
|
|
9241
9516
|
);
|
|
9242
9517
|
return { exitCode: 1 };
|
|
9243
|
-
} catch {
|
|
9518
|
+
} catch (error) {
|
|
9519
|
+
rethrowRuntimeError(context, error);
|
|
9520
|
+
if (error.code !== "ENOENT") throw error;
|
|
9244
9521
|
}
|
|
9245
9522
|
}
|
|
9246
9523
|
const loadSingleDocument = async (filePath, explicitFormat, fpsHint, input) => {
|
|
@@ -9259,7 +9536,7 @@ function createFfmpegCommand(options = {}) {
|
|
|
9259
9536
|
}
|
|
9260
9537
|
if (/\.m3u8?$/i.test(filePath) || explicitFormat === "hls") {
|
|
9261
9538
|
const m3uResolved = resolvePath(context.cwd, filePath);
|
|
9262
|
-
const m3uBytes = await
|
|
9539
|
+
const m3uBytes = await readInput(filePath);
|
|
9263
9540
|
const m3uText = decodeUtf8(m3uBytes).replace(/\r\n/g, "\n");
|
|
9264
9541
|
const baseDir = m3uResolved.includes("/") ? m3uResolved.slice(0, m3uResolved.lastIndexOf("/")) || "/" : "/";
|
|
9265
9542
|
const segDocs = [];
|
|
@@ -9270,7 +9547,9 @@ function createFfmpegCommand(options = {}) {
|
|
|
9270
9547
|
try {
|
|
9271
9548
|
const segDoc = await loadSingleDocument(segPath);
|
|
9272
9549
|
segDocs.push(segDoc);
|
|
9273
|
-
} catch {
|
|
9550
|
+
} catch (error) {
|
|
9551
|
+
rethrowRuntimeError(context, error);
|
|
9552
|
+
if (error.code !== "ENOENT") throw error;
|
|
9274
9553
|
}
|
|
9275
9554
|
}
|
|
9276
9555
|
if (segDocs.length > 0) {
|
|
@@ -9299,8 +9578,9 @@ function createFfmpegCommand(options = {}) {
|
|
|
9299
9578
|
const resolved = resolvePath(context.cwd, formatted);
|
|
9300
9579
|
let imgBytes;
|
|
9301
9580
|
try {
|
|
9302
|
-
imgBytes = await
|
|
9581
|
+
imgBytes = await readInput(resolved);
|
|
9303
9582
|
} catch (error) {
|
|
9583
|
+
rethrowRuntimeError(context, error);
|
|
9304
9584
|
if (error.code !== "ENOENT") throw error;
|
|
9305
9585
|
if (idx === 0 && input?.startNumber === void 0) continue;
|
|
9306
9586
|
break;
|
|
@@ -9326,25 +9606,18 @@ function createFfmpegCommand(options = {}) {
|
|
|
9326
9606
|
width: first.width,
|
|
9327
9607
|
height: first.height,
|
|
9328
9608
|
fps,
|
|
9329
|
-
frameCount:
|
|
9609
|
+
frameCount: 1,
|
|
9330
9610
|
includeAudio: false
|
|
9331
9611
|
}));
|
|
9332
9612
|
const base = parseMp4(synthBytes);
|
|
9333
9613
|
return {
|
|
9334
9614
|
...base,
|
|
9335
9615
|
tracks: base.tracks.map(
|
|
9336
|
-
(t) => t.type === "video" ? { ...t, decodedVideoFrames: frames } : t
|
|
9616
|
+
(t) => t.type === "video" ? { ...t, samples: [], decodedVideoFrames: frames } : t
|
|
9337
9617
|
)
|
|
9338
9618
|
};
|
|
9339
9619
|
}
|
|
9340
|
-
|
|
9341
|
-
if (filePath === "-" || filePath === "pipe:" || filePath === "pipe:0") {
|
|
9342
|
-
rawBytes = await readStdinAll(context);
|
|
9343
|
-
} else {
|
|
9344
|
-
const fullPath = resolvePath(context.cwd, filePath);
|
|
9345
|
-
rawBytes = await context.fs.readFile(fullPath, { signal: context.signal });
|
|
9346
|
-
}
|
|
9347
|
-
budget.checkInputBytes(rawBytes.byteLength);
|
|
9620
|
+
const rawBytes = await readInput(filePath);
|
|
9348
9621
|
if (explicitFormat === "concat") {
|
|
9349
9622
|
const listText = new TextDecoder().decode(rawBytes);
|
|
9350
9623
|
const listDir = filePath === "-" ? context.cwd : dirnameOf(resolvePath(context.cwd, filePath));
|
|
@@ -9686,6 +9959,22 @@ function createFfmpegCommand(options = {}) {
|
|
|
9686
9959
|
if (outputFps && videoCodec !== "copy") {
|
|
9687
9960
|
vfFilters.push(`fps=${outputFps}`);
|
|
9688
9961
|
}
|
|
9962
|
+
if (maxVideoFrames !== void 0 && !vfFilters.some((f) => /\b(fps|select|reverse|trim|tile|setpts)\b/i.test(f))) {
|
|
9963
|
+
workingDoc = {
|
|
9964
|
+
...workingDoc,
|
|
9965
|
+
tracks: workingDoc.tracks.map((t) => {
|
|
9966
|
+
if (t.type !== "video") return t;
|
|
9967
|
+
if (t.decodedVideoFrames && t.decodedVideoFrames.length > maxVideoFrames) {
|
|
9968
|
+
return { ...t, samples: [], decodedVideoFrames: t.decodedVideoFrames.slice(0, maxVideoFrames) };
|
|
9969
|
+
}
|
|
9970
|
+
if (t.samples.length > maxVideoFrames) {
|
|
9971
|
+
const slicedSamples = t.samples.slice(0, maxVideoFrames);
|
|
9972
|
+
return { ...t, duration: slicedSamples.reduce((acc, s) => acc + s.duration, 0), samples: slicedSamples };
|
|
9973
|
+
}
|
|
9974
|
+
return t;
|
|
9975
|
+
})
|
|
9976
|
+
};
|
|
9977
|
+
}
|
|
9689
9978
|
if (vfFilters.length > 0) {
|
|
9690
9979
|
if (features.videoTranscode === false || features.filterGraph === false) {
|
|
9691
9980
|
throw new Error("Video transcoding / filtergraph is disabled by consumer feature configuration");
|
|
@@ -9695,7 +9984,7 @@ function createFfmpegCommand(options = {}) {
|
|
|
9695
9984
|
const subMatch = /subtitles=(?:filename=)?['"]?([^:'",]+)['"]?/.exec(combinedChain);
|
|
9696
9985
|
if (subMatch?.[1]) {
|
|
9697
9986
|
const subPath = resolvePath(context.cwd, subMatch[1]);
|
|
9698
|
-
const subBytes = await
|
|
9987
|
+
const subBytes = await readInput(subPath);
|
|
9699
9988
|
const subFmt = subPath.toLowerCase().endsWith(".vtt") ? "webvtt" : "srt";
|
|
9700
9989
|
const subDoc = parseSubtitleDocument(subBytes, subFmt);
|
|
9701
9990
|
const st = subDoc.tracks.find((t) => t.type === "subtitle");
|
|
@@ -9962,7 +10251,7 @@ function createFfmpegCommand(options = {}) {
|
|
|
9962
10251
|
budget
|
|
9963
10252
|
});
|
|
9964
10253
|
budget.checkOutputBytes(serializedBytes.byteLength);
|
|
9965
|
-
if (outputTarget
|
|
10254
|
+
if (isStdout(outputTarget)) {
|
|
9966
10255
|
await writeBytes(context.stdout, serializedBytes, context.signal);
|
|
9967
10256
|
} else {
|
|
9968
10257
|
const fullOutPath = resolvePath(context.cwd, outputTarget);
|
|
@@ -9971,6 +10260,7 @@ function createFfmpegCommand(options = {}) {
|
|
|
9971
10260
|
options.onMetrics?.(budget.getStats());
|
|
9972
10261
|
return { exitCode: 0 };
|
|
9973
10262
|
} catch (err) {
|
|
10263
|
+
rethrowRuntimeError(context, err);
|
|
9974
10264
|
const msg = err instanceof Error ? err.message : String(err);
|
|
9975
10265
|
await writeBytes(context.stderr, encodeUtf8(`ffmpeg: ${msg}
|
|
9976
10266
|
`), context.signal);
|