framefields 2.9.3 → 2.11.0
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 +9 -2
- package/dist/audio/index.d.mts +5 -5
- package/dist/audio/index.mjs +13 -13
- package/dist/{audio-B6RmYOPe.mjs → audio-BuCVk1IQ.mjs} +32 -6
- package/dist/audio-BuCVk1IQ.mjs.map +1 -0
- package/dist/audio-CYZkDwae.d.mts +62 -0
- package/dist/audio-CYZkDwae.d.mts.map +1 -0
- package/dist/{audio-BlDbnteH.mjs → audio-KHBadECb.mjs} +1 -1
- package/dist/{audio-BlDbnteH.mjs.map → audio-KHBadECb.mjs.map} +1 -1
- package/dist/{check-result-Bj7g62ka.mjs → check-result-Culfu7Nx.mjs} +1 -1
- package/dist/{check-result-Bj7g62ka.mjs.map → check-result-Culfu7Nx.mjs.map} +1 -1
- package/dist/cli/check-worker.mjs +50 -50
- package/dist/cli.mjs +179 -3
- package/dist/cli.mjs.map +1 -1
- package/dist/cloud/index.d.mts +118 -0
- package/dist/cloud/index.d.mts.map +1 -0
- package/dist/cloud/index.mjs +3 -0
- package/dist/cloud-xcfV4J03.mjs +233 -0
- package/dist/cloud-xcfV4J03.mjs.map +1 -0
- package/dist/components/index.d.mts +14 -14
- package/dist/components/index.mjs +47 -47
- package/dist/{dist-Cn8bDsQF.mjs → dist-BIE8fvlv.mjs} +1 -1
- package/dist/{dist-Cn8bDsQF.mjs.map → dist-BIE8fvlv.mjs.map} +1 -1
- package/dist/{dist-ByxHoMQI.mjs → dist-Bf2_efYP.mjs} +1 -1
- package/dist/{dist-ByxHoMQI.mjs.map → dist-Bf2_efYP.mjs.map} +1 -1
- package/dist/{dist-BlulwErl.mjs → dist-CNGv-JTX.mjs} +1 -1
- package/dist/{dist-D12-a3-x.mjs → dist-CWLLnigL.mjs} +375 -15
- package/dist/dist-CWLLnigL.mjs.map +1 -0
- package/dist/{dist-DL1GwJvs.mjs → dist-CySGkG54.mjs} +2 -2
- package/dist/{dist-DL1GwJvs.mjs.map → dist-CySGkG54.mjs.map} +1 -1
- package/dist/{dist-Dq5TkNDI.mjs → dist-Dg9LMWoX.mjs} +2 -2
- package/dist/{dist-Dq5TkNDI.mjs.map → dist-Dg9LMWoX.mjs.map} +1 -1
- package/dist/{dist-DEUU6sNe.mjs → dist-EQX3TUUl.mjs} +4 -4
- package/dist/{dist-DEUU6sNe.mjs.map → dist-EQX3TUUl.mjs.map} +1 -1
- package/dist/effects/index.d.mts +6 -6
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-CViUoQSV.mjs → effects-DKLbLXF7.mjs} +3 -3
- package/dist/{effects-CViUoQSV.mjs.map → effects-DKLbLXF7.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -3
- package/dist/{fonts-B0U2KO5I.mjs → fonts-gPbGbShD.mjs} +2 -2
- package/dist/{fonts-B0U2KO5I.mjs.map → fonts-gPbGbShD.mjs.map} +1 -1
- package/dist/{gpu-zFNrvhV9.mjs → gpu-CpkJJLQP.mjs} +2 -2
- package/dist/{gpu-zFNrvhV9.mjs.map → gpu-CpkJJLQP.mjs.map} +1 -1
- package/dist/{index-BuYtrhzL.d.mts → index-BW0Q1ygn.d.mts} +1 -1
- package/dist/{index-BuYtrhzL.d.mts.map → index-BW0Q1ygn.d.mts.map} +1 -1
- package/dist/{index-f4IF1vRH.d.mts → index-Bly-7YM1.d.mts} +3 -3
- package/dist/{index-f4IF1vRH.d.mts.map → index-Bly-7YM1.d.mts.map} +1 -1
- package/dist/{index-Bzo1uj8h.d.mts → index-BuiZzc6i.d.mts} +23 -3
- package/dist/index-BuiZzc6i.d.mts.map +1 -0
- package/dist/{index-DBhswLMO.d.mts → index-C8YwZ6k1.d.mts} +2 -2
- package/dist/{index-DBhswLMO.d.mts.map → index-C8YwZ6k1.d.mts.map} +1 -1
- package/dist/{index-svAgwTY_.d.mts → index-CEU_Zsb9.d.mts} +2 -2
- package/dist/{index-svAgwTY_.d.mts.map → index-CEU_Zsb9.d.mts.map} +1 -1
- package/dist/{index-9_4X2ro1.d.mts → index-COYNQ_mf.d.mts} +1 -1
- package/dist/{index-9_4X2ro1.d.mts.map → index-COYNQ_mf.d.mts.map} +1 -1
- package/dist/{index-CgGM31I9.d.mts → index-CdCrae-I.d.mts} +2 -2
- package/dist/{index-CgGM31I9.d.mts.map → index-CdCrae-I.d.mts.map} +1 -1
- package/dist/{index-B9Lm1x8i.d.mts → index-Cro-818i.d.mts} +297 -283
- package/dist/index-Cro-818i.d.mts.map +1 -0
- package/dist/{index-w28KUM9A.d.mts → index-D2i9J9Zq.d.mts} +3 -3
- package/dist/{index-w28KUM9A.d.mts.map → index-D2i9J9Zq.d.mts.map} +1 -1
- package/dist/{index-V0ZQ4JN6.d.mts → index-gOVtTm-P.d.mts} +125 -3
- package/dist/index-gOVtTm-P.d.mts.map +1 -0
- package/dist/{index-C6GcuYVA.d.mts → index-jSDEM-uE.d.mts} +5 -5
- package/dist/{index-C6GcuYVA.d.mts.map → index-jSDEM-uE.d.mts.map} +1 -1
- package/dist/index.d.mts +16 -16
- package/dist/index.mjs +59 -59
- package/dist/preview/index.d.mts +4 -4
- package/dist/preview/index.mjs +12 -12
- package/dist/{preview-ZKJ_zTmd.mjs → preview-BToKUTtZ.mjs} +3 -3
- package/dist/{preview-ZKJ_zTmd.mjs.map → preview-BToKUTtZ.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-VN36PRVD.mjs → chunk-26XWIHW3.mjs} +1 -1
- package/dist/preview-engine/{chunk-BVDWS3D2.mjs → chunk-4AGQN53P.mjs} +1 -1
- package/dist/preview-engine/{chunk-IB6GZJOL.mjs → chunk-54Q5CKSV.mjs} +1 -1
- package/dist/preview-engine/{chunk-Y5K5LVOR.mjs → chunk-5KSBS3AL.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZJ5SWTCW.mjs → chunk-65NANVQL.mjs} +1 -1
- package/dist/preview-engine/{chunk-34RJ7GAS.mjs → chunk-6LTINEA4.mjs} +1 -1
- package/dist/preview-engine/{chunk-SPJPM43P.mjs → chunk-7GMHSTRP.mjs} +1 -1
- package/dist/preview-engine/{chunk-BEYA25UZ.mjs → chunk-ACBBBOUM.mjs} +1 -1
- package/dist/preview-engine/{chunk-7U34VKNO.mjs → chunk-BRV7TQDV.mjs} +1 -1
- package/dist/preview-engine/{chunk-KHJZMTOS.mjs → chunk-CCORQLMR.mjs} +1 -1
- package/dist/preview-engine/{chunk-5AWAOMBR.mjs → chunk-CIVEZJYF.mjs} +1 -1
- package/dist/preview-engine/{chunk-FKG27DVO.mjs → chunk-CIVJXFWH.mjs} +1 -1
- package/dist/preview-engine/{chunk-JIPMF42Z.mjs → chunk-D6LM7DTJ.mjs} +2 -2
- package/dist/preview-engine/{chunk-GA4HNR44.mjs → chunk-DNNGWS2C.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZY47XIRK.mjs → chunk-EAWJXW4J.mjs} +1 -1
- package/dist/preview-engine/{chunk-6R3UJBL5.mjs → chunk-EPRINA4V.mjs} +1 -1
- package/dist/preview-engine/{chunk-GRJJVSOV.mjs → chunk-EXEO245X.mjs} +1 -1
- package/dist/preview-engine/{chunk-DVZITDQS.mjs → chunk-FQL4IJZN.mjs} +1 -1
- package/dist/preview-engine/{chunk-QCSVT73T.mjs → chunk-GHTG5XV6.mjs} +1 -1
- package/dist/preview-engine/{chunk-VVY4PG5E.mjs → chunk-GXFYRMJZ.mjs} +25 -25
- package/dist/preview-engine/{chunk-AHQCDTD6.mjs → chunk-IBPYV6HF.mjs} +1 -1
- package/dist/preview-engine/{chunk-PM2W4VLT.mjs → chunk-IKVJ4MW5.mjs} +1 -1
- package/dist/preview-engine/{chunk-GZWA5QJS.mjs → chunk-JDB7PMRI.mjs} +1 -1
- package/dist/preview-engine/{chunk-CC4NNNIY.mjs → chunk-KVOFO273.mjs} +1 -1
- package/dist/preview-engine/{chunk-RJIAES3X.mjs → chunk-LFNCWMKS.mjs} +1 -1
- package/dist/preview-engine/{chunk-FTCEG3SF.mjs → chunk-LMXMBX4J.mjs} +1 -1
- package/dist/preview-engine/{chunk-MIEH74UH.mjs → chunk-M4QANUJI.mjs} +1 -1
- package/dist/preview-engine/{chunk-VVE2QHVG.mjs → chunk-NOKPBMIP.mjs} +1 -1
- package/dist/preview-engine/{chunk-P5FKRQFU.mjs → chunk-O63FLYWC.mjs} +1 -1
- package/dist/preview-engine/chunk-OELPPLML.mjs +107 -0
- package/dist/preview-engine/{chunk-GIICZZQI.mjs → chunk-OLB4TQLQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-CN2VLYLB.mjs → chunk-PKNUTHPI.mjs} +1 -1
- package/dist/preview-engine/{chunk-2B722GXM.mjs → chunk-QF4JWVO3.mjs} +1 -1
- package/dist/preview-engine/{chunk-EJJITH6U.mjs → chunk-RDWLLITE.mjs} +1 -1
- package/dist/preview-engine/{chunk-K3C6GUQD.mjs → chunk-SE2C623Z.mjs} +1 -1
- package/dist/preview-engine/{chunk-34DL53D5.mjs → chunk-TEWRQKX3.mjs} +1 -1
- package/dist/preview-engine/{chunk-H7BSN7V7.mjs → chunk-UGB6JKVS.mjs} +1 -1
- package/dist/preview-engine/{chunk-BJV2LBII.mjs → chunk-UI3VH33L.mjs} +1 -1
- package/dist/preview-engine/{chunk-UXYM2G6J.mjs → chunk-UMJ3VGKN.mjs} +1 -1
- package/dist/preview-engine/{chunk-2DWY7UBV.mjs → chunk-VFQH5KVS.mjs} +1 -1
- package/dist/preview-engine/{chunk-73CNXGAK.mjs → chunk-VQA4DYZU.mjs} +1 -1
- package/dist/preview-engine/{chunk-LVYVXVZO.mjs → chunk-VZLIRYAL.mjs} +1 -1
- package/dist/preview-engine/{chunk-4WYM72ZN.mjs → chunk-WFMUDL55.mjs} +1 -1
- package/dist/preview-engine/{chunk-Q62GPWGD.mjs → chunk-XF6DYP6B.mjs} +11 -11
- package/dist/preview-engine/{chunk-35HMRW4I.mjs → chunk-YHMBGJP6.mjs} +1 -1
- package/dist/preview-engine/{chunk-DMSZXG56.mjs → chunk-YKM7JDQY.mjs} +1 -1
- package/dist/preview-engine/{chunk-SF37HXAH.mjs → chunk-YVZTRH4Y.mjs} +1 -1
- package/dist/preview-engine/{chunk-TNJEZKXM.mjs → chunk-Z24UEN4P.mjs} +1 -1
- package/dist/preview-engine/{chunk-2PYTDN2C.mjs → chunk-ZF2MEFKO.mjs} +1 -1
- package/dist/preview-engine/{chunk-OH5W5EL6.mjs → chunk-ZIXPWP2B.mjs} +1 -1
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/renderers-2NGIILMI.mjs +1 -0
- package/dist/preview-engine/{renderers-5TO2SXFR.mjs → renderers-33FCFHDR.mjs} +1 -1
- package/dist/preview-engine/renderers-466Z77BH.mjs +1 -0
- package/dist/preview-engine/{renderers-PIIEUKFE.mjs → renderers-4IBFDW2S.mjs} +1 -1
- package/dist/preview-engine/renderers-4KRENGZA.mjs +1 -0
- package/dist/preview-engine/renderers-4W52BQEU.mjs +1 -0
- package/dist/preview-engine/{renderers-ZACSHGNZ.mjs → renderers-53EI26GL.mjs} +1 -1
- package/dist/preview-engine/renderers-55PRAS7G.mjs +1 -0
- package/dist/preview-engine/renderers-5LLYINHW.mjs +1 -0
- package/dist/preview-engine/{renderers-A24KZK2Q.mjs → renderers-5XLGCEOA.mjs} +1 -1
- package/dist/preview-engine/renderers-63N3Y2XO.mjs +1 -0
- package/dist/preview-engine/{renderers-V3AQO7AR.mjs → renderers-6LNDAO4B.mjs} +1 -1
- package/dist/preview-engine/renderers-6ROVFDIN.mjs +1 -0
- package/dist/preview-engine/{renderers-CUMVIVHI.mjs → renderers-6YVZUQOH.mjs} +1 -1
- package/dist/preview-engine/renderers-7CAHX35U.mjs +1 -0
- package/dist/preview-engine/renderers-A4RVLPMG.mjs +1 -0
- package/dist/preview-engine/renderers-A53P4J6O.mjs +1 -0
- package/dist/preview-engine/{renderers-WEYAHOBK.mjs → renderers-ACUJMDEK.mjs} +1 -1
- package/dist/preview-engine/renderers-AFJ3373L.mjs +1 -0
- package/dist/preview-engine/renderers-ATFWTA3U.mjs +1 -0
- package/dist/preview-engine/{renderers-TSBV4KPE.mjs → renderers-BOBVXYAA.mjs} +1 -1
- package/dist/preview-engine/renderers-BPYJXHBU.mjs +1 -0
- package/dist/preview-engine/{renderers-NCGH2WWJ.mjs → renderers-C7SI3NIE.mjs} +1 -1
- package/dist/preview-engine/{renderers-FSI5KNGZ.mjs → renderers-CCRZNGVK.mjs} +1 -1
- package/dist/preview-engine/{renderers-NUAI4TO5.mjs → renderers-CYJAVWHT.mjs} +1 -1
- package/dist/preview-engine/renderers-D3ZF7FXT.mjs +1 -0
- package/dist/preview-engine/renderers-D7YN6B4B.mjs +1 -0
- package/dist/preview-engine/renderers-DBLASKF5.mjs +1 -0
- package/dist/preview-engine/renderers-DC5ZYYHM.mjs +1 -0
- package/dist/preview-engine/{renderers-5UZ3YFBD.mjs → renderers-EN7LXJLG.mjs} +1 -1
- package/dist/preview-engine/{renderers-L6YDX6GS.mjs → renderers-FY2HOQCS.mjs} +1 -1
- package/dist/preview-engine/{renderers-6Z7DWAPH.mjs → renderers-GQM3KMV3.mjs} +1 -1
- package/dist/preview-engine/{renderers-QA2HKUJJ.mjs → renderers-H6PBHEYU.mjs} +1 -1
- package/dist/preview-engine/{renderers-MD3PRFZL.mjs → renderers-HKLCB4U6.mjs} +1 -1
- package/dist/preview-engine/{renderers-TGJSOKDY.mjs → renderers-HSFQIILN.mjs} +1 -1
- package/dist/preview-engine/{renderers-7C5RA3R5.mjs → renderers-I6QKZ7CH.mjs} +1 -1
- package/dist/preview-engine/renderers-J6ZEXW5L.mjs +1 -0
- package/dist/preview-engine/renderers-JV4MF46Q.mjs +1 -0
- package/dist/preview-engine/{renderers-SEIAUKJF.mjs → renderers-KCGK33Y2.mjs} +1 -1
- package/dist/preview-engine/renderers-KQKH4ZIX.mjs +1 -0
- package/dist/preview-engine/renderers-MEITHN4N.mjs +1 -0
- package/dist/preview-engine/renderers-MN3HSBTJ.mjs +1 -0
- package/dist/preview-engine/renderers-NTG3QGNH.mjs +1 -0
- package/dist/preview-engine/{renderers-KC6ZSKCW.mjs → renderers-OGOW3NA4.mjs} +1 -1
- package/dist/preview-engine/renderers-OU4SFMB2.mjs +1 -0
- package/dist/preview-engine/{renderers-ENMY4DKF.mjs → renderers-P2HORBZ6.mjs} +1 -1
- package/dist/preview-engine/renderers-P6TIBJIG.mjs +1 -0
- package/dist/preview-engine/renderers-POJWQ7L3.mjs +1 -0
- package/dist/preview-engine/renderers-RJ7S6VHD.mjs +1 -0
- package/dist/preview-engine/renderers-RJJAJZYN.mjs +1 -0
- package/dist/preview-engine/renderers-UEQ733VK.mjs +1 -0
- package/dist/preview-engine/{renderers-T74CQCEN.mjs → renderers-UG2C3C7T.mjs} +1 -1
- package/dist/preview-engine/renderers-ULO2AW2U.mjs +1 -0
- package/dist/preview-engine/renderers-UPVHGHCK.mjs +1 -0
- package/dist/preview-engine/renderers-UZHSNNIM.mjs +1 -0
- package/dist/preview-engine/renderers-V5KWZL2C.mjs +1 -0
- package/dist/preview-engine/{renderers-5KANN7XF.mjs → renderers-VIGZYJYX.mjs} +1 -1
- package/dist/preview-engine/{renderers-4F7WLQD5.mjs → renderers-VVP5WQOY.mjs} +1 -1
- package/dist/preview-engine/{renderers-7XHO6M3B.mjs → renderers-WL372W36.mjs} +1 -1
- package/dist/preview-engine/{renderers-U4M7ZCV4.mjs → renderers-WSABL3QO.mjs} +1 -1
- package/dist/preview-engine/{renderers-Y22VSOXF.mjs → renderers-X6CORAES.mjs} +1 -1
- package/dist/preview-engine/renderers-YMXKYOHQ.mjs +1 -0
- package/dist/preview-engine/renderers-YWDAZ2NZ.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-xjIwjKb6.mjs → program-Bc860ko5.mjs} +4 -4
- package/dist/{program-xjIwjKb6.mjs.map → program-Bc860ko5.mjs.map} +1 -1
- package/dist/registry/focus-zoom.json +9 -2
- package/dist/renderer/index.d.mts +4 -4
- package/dist/renderer/index.mjs +4 -4
- package/dist/renderer--Ymc_4XJ.mjs +5 -0
- package/dist/{renderer-Dee8ksIV.mjs → renderer-1uoKiILq.mjs} +3 -3
- package/dist/{renderer-Dee8ksIV.mjs.map → renderer-1uoKiILq.mjs.map} +1 -1
- package/dist/{renderer-CIB5L_C4.mjs → renderer-4ZUv3X1I.mjs} +5 -5
- package/dist/{renderer-CIB5L_C4.mjs.map → renderer-4ZUv3X1I.mjs.map} +1 -1
- package/dist/{renderer-BPYIqtNg.mjs → renderer-50JEMaVo.mjs} +5 -5
- package/dist/{renderer-BPYIqtNg.mjs.map → renderer-50JEMaVo.mjs.map} +1 -1
- package/dist/{renderer-BdbI_u9w.mjs → renderer-7ow5Acsg.mjs} +3 -3
- package/dist/{renderer-BdbI_u9w.mjs.map → renderer-7ow5Acsg.mjs.map} +1 -1
- package/dist/{renderer-B-inTgyb.d.mts → renderer-88C3QpKL.d.mts} +2 -2
- package/dist/{renderer-B-inTgyb.d.mts.map → renderer-88C3QpKL.d.mts.map} +1 -1
- package/dist/{renderer-DH7l5WFr.mjs → renderer-B-CMRUag.mjs} +4 -4
- package/dist/{renderer-DH7l5WFr.mjs.map → renderer-B-CMRUag.mjs.map} +1 -1
- package/dist/renderer-B-OdV-eq.mjs +5 -0
- package/dist/{renderer-NTCk1Srf.mjs → renderer-B1LD29TV.mjs} +3 -3
- package/dist/{renderer-NTCk1Srf.mjs.map → renderer-B1LD29TV.mjs.map} +1 -1
- package/dist/{renderer-ESkPj6pk.mjs → renderer-B1esRxGy.mjs} +4 -4
- package/dist/{renderer-ESkPj6pk.mjs.map → renderer-B1esRxGy.mjs.map} +1 -1
- package/dist/{renderer-g7fF2AYk.mjs → renderer-B3Dme2es.mjs} +5 -5
- package/dist/{renderer-g7fF2AYk.mjs.map → renderer-B3Dme2es.mjs.map} +1 -1
- package/dist/renderer-B65fwoA2.mjs +5 -0
- package/dist/{renderer-CDVb4OfJ.mjs → renderer-B6Oeahe_.mjs} +5 -5
- package/dist/{renderer-CDVb4OfJ.mjs.map → renderer-B6Oeahe_.mjs.map} +1 -1
- package/dist/renderer-B92Ahkcv.mjs +5 -0
- package/dist/renderer-B9z2AK31.mjs +5 -0
- package/dist/{renderer-BZmmekE8.mjs → renderer-BDZC3o3N.mjs} +4 -4
- package/dist/{renderer-BZmmekE8.mjs.map → renderer-BDZC3o3N.mjs.map} +1 -1
- package/dist/renderer-BIF3Dg3Z.mjs +5 -0
- package/dist/{renderer-C06U4c9k.mjs → renderer-BJ-7WRgO.mjs} +3 -3
- package/dist/{renderer-C06U4c9k.mjs.map → renderer-BJ-7WRgO.mjs.map} +1 -1
- package/dist/renderer-BJUVaIAT.mjs +5 -0
- package/dist/renderer-BKRDMbI-.mjs +5 -0
- package/dist/{renderer-HnSiwSW8.mjs → renderer-BNHcwxw9.mjs} +4 -4
- package/dist/{renderer-HnSiwSW8.mjs.map → renderer-BNHcwxw9.mjs.map} +1 -1
- package/dist/{renderer-B78W9uad.mjs → renderer-BNJ6Jk7-.mjs} +4 -4
- package/dist/{renderer-B78W9uad.mjs.map → renderer-BNJ6Jk7-.mjs.map} +1 -1
- package/dist/{renderer-BVql26Ay.mjs → renderer-BOrMBwQS.mjs} +2 -2
- package/dist/{renderer-BVql26Ay.mjs.map → renderer-BOrMBwQS.mjs.map} +1 -1
- package/dist/{renderer-Cl8r1LJe.mjs → renderer-BQetXCcZ.mjs} +4 -4
- package/dist/{renderer-Cl8r1LJe.mjs.map → renderer-BQetXCcZ.mjs.map} +1 -1
- package/dist/{renderer-C4yKI8MT.mjs → renderer-BSELd5vU.mjs} +3 -3
- package/dist/{renderer-C4yKI8MT.mjs.map → renderer-BSELd5vU.mjs.map} +1 -1
- package/dist/renderer-BSwhyVWa.mjs +5 -0
- package/dist/{renderer-CcJyD9Q5.mjs → renderer-BURhYcpA.mjs} +4 -4
- package/dist/{renderer-CcJyD9Q5.mjs.map → renderer-BURhYcpA.mjs.map} +1 -1
- package/dist/renderer-BUqSZn2X.mjs +5 -0
- package/dist/{renderer-DoPEPlbG.d.mts → renderer-BVKOQarx.d.mts} +3 -3
- package/dist/{renderer-DoPEPlbG.d.mts.map → renderer-BVKOQarx.d.mts.map} +1 -1
- package/dist/{renderer-CwVbHki6.mjs → renderer-BaIJIfJ6.mjs} +5 -5
- package/dist/{renderer-CwVbHki6.mjs.map → renderer-BaIJIfJ6.mjs.map} +1 -1
- package/dist/renderer-BbmvjqK9.mjs +3 -0
- package/dist/{renderer-Be5hfwSd.mjs → renderer-Bbxh4N8Y.mjs} +425 -115
- package/dist/renderer-Bbxh4N8Y.mjs.map +1 -0
- package/dist/{renderer-BG6bkKtY.mjs → renderer-Bf4-N7k7.mjs} +5 -5
- package/dist/{renderer-BG6bkKtY.mjs.map → renderer-Bf4-N7k7.mjs.map} +1 -1
- package/dist/{renderer-CpedZNEG.mjs → renderer-BhsrlGKp.mjs} +3 -3
- package/dist/{renderer-CpedZNEG.mjs.map → renderer-BhsrlGKp.mjs.map} +1 -1
- package/dist/{renderer-AUK_ZS3p.mjs → renderer-Bo7shNdU.mjs} +4 -4
- package/dist/{renderer-AUK_ZS3p.mjs.map → renderer-Bo7shNdU.mjs.map} +1 -1
- package/dist/renderer-Bpe4k_x6.mjs +5 -0
- package/dist/{renderer-BfbSvElt.mjs → renderer-BwrfKKqw.mjs} +4 -4
- package/dist/{renderer-BfbSvElt.mjs.map → renderer-BwrfKKqw.mjs.map} +1 -1
- package/dist/{renderer-CWLF6cAz.mjs → renderer-Bx14Wnxl.mjs} +3 -3
- package/dist/{renderer-CWLF6cAz.mjs.map → renderer-Bx14Wnxl.mjs.map} +1 -1
- package/dist/{renderer-CCFHnafT.mjs → renderer-Bxjb0HYU.mjs} +4 -4
- package/dist/{renderer-CCFHnafT.mjs.map → renderer-Bxjb0HYU.mjs.map} +1 -1
- package/dist/{renderer-5qJPGvVL.mjs → renderer-ByjaseAo.mjs} +5 -5
- package/dist/{renderer-5qJPGvVL.mjs.map → renderer-ByjaseAo.mjs.map} +1 -1
- package/dist/renderer-C1NjG0CJ.mjs +5 -0
- package/dist/renderer-C7Puyst9.mjs +5 -0
- package/dist/{renderer-CYX9vKZ-.mjs → renderer-C9BSXyrq.mjs} +4 -4
- package/dist/{renderer-CYX9vKZ-.mjs.map → renderer-C9BSXyrq.mjs.map} +1 -1
- package/dist/{renderer-CUBDxuxh.mjs → renderer-CAWnCsQc.mjs} +5 -5
- package/dist/{renderer-CUBDxuxh.mjs.map → renderer-CAWnCsQc.mjs.map} +1 -1
- package/dist/renderer-CGA_7320.mjs +5 -0
- package/dist/{renderer-CEfVvcw-.mjs → renderer-CLAvn9c6.mjs} +4 -4
- package/dist/{renderer-CEfVvcw-.mjs.map → renderer-CLAvn9c6.mjs.map} +1 -1
- package/dist/renderer-CLnFkXO7.mjs +5 -0
- package/dist/renderer-CMQIT1Kh.mjs +5 -0
- package/dist/{renderer-BYqrtBvd.mjs → renderer-COcKhouz.mjs} +5 -5
- package/dist/{renderer-BYqrtBvd.mjs.map → renderer-COcKhouz.mjs.map} +1 -1
- package/dist/renderer-CQ1rwjIh.mjs +5 -0
- package/dist/{renderer-US4GsamT.mjs → renderer-CR0mDPYY.mjs} +3 -3
- package/dist/renderer-CT8h0boY.mjs +5 -0
- package/dist/{renderer-VhkubIx_.mjs → renderer-CU8v-LxD.mjs} +5 -5
- package/dist/{renderer-VhkubIx_.mjs.map → renderer-CU8v-LxD.mjs.map} +1 -1
- package/dist/renderer-Cb0lszt3.mjs +5 -0
- package/dist/renderer-Ci7oLye9.mjs +5 -0
- package/dist/renderer-CjqXB3CZ.mjs +5 -0
- package/dist/{renderer-DIEmK57T.mjs → renderer-Co6UFbZB.mjs} +5 -5
- package/dist/{renderer-DIEmK57T.mjs.map → renderer-Co6UFbZB.mjs.map} +1 -1
- package/dist/renderer-CqTV04zQ.mjs +5 -0
- package/dist/{renderer-xDV2cCkX.mjs → renderer-CrR8Mpxq.mjs} +5 -5
- package/dist/{renderer-xDV2cCkX.mjs.map → renderer-CrR8Mpxq.mjs.map} +1 -1
- package/dist/renderer-CtWeRtHK.mjs +5 -0
- package/dist/{renderer-BRWjLiHX.mjs → renderer-CxGx1Lhi.mjs} +3 -3
- package/dist/{renderer-BRWjLiHX.mjs.map → renderer-CxGx1Lhi.mjs.map} +1 -1
- package/dist/{renderer-BQOeeXTr.mjs → renderer-Cz-n883J.mjs} +5 -5
- package/dist/{renderer-BQOeeXTr.mjs.map → renderer-Cz-n883J.mjs.map} +1 -1
- package/dist/renderer-CzolnwCo.mjs +5 -0
- package/dist/{renderer-sPI7aY6c.mjs → renderer-D-QVGphn.mjs} +4 -4
- package/dist/{renderer-sPI7aY6c.mjs.map → renderer-D-QVGphn.mjs.map} +1 -1
- package/dist/{renderer-C3tVrzyT.mjs → renderer-D06HxSXO.mjs} +3 -3
- package/dist/{renderer-CXLugAe8.mjs → renderer-D0aAZHC7.mjs} +4 -4
- package/dist/{renderer-CXLugAe8.mjs.map → renderer-D0aAZHC7.mjs.map} +1 -1
- package/dist/{renderer-mLlgfM7X.mjs → renderer-D4f8f66C.mjs} +4 -4
- package/dist/{renderer-mLlgfM7X.mjs.map → renderer-D4f8f66C.mjs.map} +1 -1
- package/dist/renderer-D6qhcx_C.mjs +5 -0
- package/dist/{renderer-C7MAqpIS.mjs → renderer-DAn9xiQT.mjs} +4 -4
- package/dist/{renderer-C7MAqpIS.mjs.map → renderer-DAn9xiQT.mjs.map} +1 -1
- package/dist/renderer-DDfEf0jt.mjs +5 -0
- package/dist/renderer-DDpa8ztp.mjs +5 -0
- package/dist/{renderer-DW7hbluw.mjs → renderer-DE9Jik9K.mjs} +3 -3
- package/dist/{renderer-DW7hbluw.mjs.map → renderer-DE9Jik9K.mjs.map} +1 -1
- package/dist/{renderer-C6st34I6.mjs → renderer-DFJWPqOJ.mjs} +3 -3
- package/dist/{renderer-C6st34I6.mjs.map → renderer-DFJWPqOJ.mjs.map} +1 -1
- package/dist/{renderer-D2TTDcgh.mjs → renderer-DLPhfwbR.mjs} +3 -3
- package/dist/{renderer-D2TTDcgh.mjs.map → renderer-DLPhfwbR.mjs.map} +1 -1
- package/dist/{renderer-D1VsqFf4.mjs → renderer-DOkbn1ot.mjs} +5 -5
- package/dist/{renderer-D1VsqFf4.mjs.map → renderer-DOkbn1ot.mjs.map} +1 -1
- package/dist/{renderer-BWMzjSgf.mjs → renderer-DaXQgGg3.mjs} +5 -5
- package/dist/{renderer-BWMzjSgf.mjs.map → renderer-DaXQgGg3.mjs.map} +1 -1
- package/dist/renderer-DbQBqzmx.mjs +5 -0
- package/dist/{renderer-DrWeb39d.mjs → renderer-DcvjSolU.mjs} +1 -1
- package/dist/{renderer-DrWeb39d.mjs.map → renderer-DcvjSolU.mjs.map} +1 -1
- package/dist/renderer-DfUcwMKa.mjs +5 -0
- package/dist/renderer-DgIjNANM.mjs +6 -0
- package/dist/{renderer-DOKHd37M.mjs → renderer-DgPn_SOC.mjs} +4 -4
- package/dist/{renderer-DOKHd37M.mjs.map → renderer-DgPn_SOC.mjs.map} +1 -1
- package/dist/{renderer-BgDLCCuq.mjs → renderer-DkqZmfm8.mjs} +5 -5
- package/dist/{renderer-BgDLCCuq.mjs.map → renderer-DkqZmfm8.mjs.map} +1 -1
- package/dist/{renderer-q4zMFfnY.mjs → renderer-Dpl6poqD.mjs} +2 -2
- package/dist/{renderer-q4zMFfnY.mjs.map → renderer-Dpl6poqD.mjs.map} +1 -1
- package/dist/renderer-Dsh6Tgu0.mjs +3 -0
- package/dist/renderer-DuIwR9GT.mjs +5 -0
- package/dist/renderer-Dv4u2c14.mjs +5 -0
- package/dist/{renderer-BJKzZwyn.mjs → renderer-DwK9jsER.mjs} +4 -4
- package/dist/{renderer-BJKzZwyn.mjs.map → renderer-DwK9jsER.mjs.map} +1 -1
- package/dist/{renderer-mQt-y49D.mjs → renderer-HDj9Zb-O.mjs} +5 -5
- package/dist/{renderer-mQt-y49D.mjs.map → renderer-HDj9Zb-O.mjs.map} +1 -1
- package/dist/renderer-IE1yu3lZ.mjs +5 -0
- package/dist/{renderer-B7kOF_Az.mjs → renderer-JHByuUNb.mjs} +3 -3
- package/dist/{renderer-B7kOF_Az.mjs.map → renderer-JHByuUNb.mjs.map} +1 -1
- package/dist/{renderer-B3IRvukr.mjs → renderer-KKk7myX1.mjs} +5 -5
- package/dist/{renderer-B3IRvukr.mjs.map → renderer-KKk7myX1.mjs.map} +1 -1
- package/dist/renderer-PY_wnEN0.mjs +5 -0
- package/dist/{renderer-BcO7LUla.mjs → renderer-Ros7XQg2.mjs} +3 -3
- package/dist/{renderer-BcO7LUla.mjs.map → renderer-Ros7XQg2.mjs.map} +1 -1
- package/dist/{renderer-bbaMOD4I.mjs → renderer-RvI3qRUI.mjs} +5 -5
- package/dist/{renderer-bbaMOD4I.mjs.map → renderer-RvI3qRUI.mjs.map} +1 -1
- package/dist/{renderer-CPTXJs0n.mjs → renderer-Rw87u1Cr.mjs} +6 -6
- package/dist/{renderer-CPTXJs0n.mjs.map → renderer-Rw87u1Cr.mjs.map} +1 -1
- package/dist/{renderer-Du-GnKLb.mjs → renderer-TKZCA0B9.mjs} +9 -9
- package/dist/{renderer-Du-GnKLb.mjs.map → renderer-TKZCA0B9.mjs.map} +1 -1
- package/dist/{renderer-C_2UDMEG.mjs → renderer-V4dhrf_h.mjs} +6 -6
- package/dist/{renderer-C_2UDMEG.mjs.map → renderer-V4dhrf_h.mjs.map} +1 -1
- package/dist/{renderer-eT7Gp7FS.mjs → renderer-_9gbYS-3.mjs} +5 -5
- package/dist/{renderer-eT7Gp7FS.mjs.map → renderer-_9gbYS-3.mjs.map} +1 -1
- package/dist/{renderer-IQ97z2rw.mjs → renderer-celhuAL7.mjs} +3 -3
- package/dist/{renderer-IQ97z2rw.mjs.map → renderer-celhuAL7.mjs.map} +1 -1
- package/dist/{renderer-DIqkhsLI.mjs → renderer-eMCTAa9e.mjs} +4 -4
- package/dist/{renderer-DIqkhsLI.mjs.map → renderer-eMCTAa9e.mjs.map} +1 -1
- package/dist/{renderer-B6TjJi1g.mjs → renderer-fs8f1QeE.mjs} +5 -5
- package/dist/{renderer-B6TjJi1g.mjs.map → renderer-fs8f1QeE.mjs.map} +1 -1
- package/dist/{renderer-BJQt0RiZ.mjs → renderer-fwKnV9zs.mjs} +5 -5
- package/dist/{renderer-BJQt0RiZ.mjs.map → renderer-fwKnV9zs.mjs.map} +1 -1
- package/dist/{renderer-F1D9ZJ8I.mjs → renderer-g_1t2je9.mjs} +3 -3
- package/dist/renderer-gv24VyzO.mjs +5 -0
- package/dist/{renderer-C3Iev6zu.mjs → renderer-h62QaJYz.mjs} +4 -4
- package/dist/{renderer-C3Iev6zu.mjs.map → renderer-h62QaJYz.mjs.map} +1 -1
- package/dist/{renderer-BNbMi9CI.mjs → renderer-jnAIhWn_.mjs} +5 -5
- package/dist/{renderer-BNbMi9CI.mjs.map → renderer-jnAIhWn_.mjs.map} +1 -1
- package/dist/{renderer-CyCtm0UV.mjs → renderer-lHNTgiOM.mjs} +3 -3
- package/dist/{renderer-CyCtm0UV.mjs.map → renderer-lHNTgiOM.mjs.map} +1 -1
- package/dist/renderer-nN6lPZf9.mjs +5 -0
- package/dist/{renderer-Dat8opUZ.mjs → renderer-o68mVeyk.mjs} +4 -4
- package/dist/{renderer-Dat8opUZ.mjs.map → renderer-o68mVeyk.mjs.map} +1 -1
- package/dist/{renderer-Dss7T71q.mjs → renderer-pNmI-A9o.mjs} +5 -5
- package/dist/{renderer-Dss7T71q.mjs.map → renderer-pNmI-A9o.mjs.map} +1 -1
- package/dist/{renderer-CbhnJi_8.mjs → renderer-q7q6k_cD.mjs} +4 -4
- package/dist/{renderer-CbhnJi_8.mjs.map → renderer-q7q6k_cD.mjs.map} +1 -1
- package/dist/{renderer-OsQRvOle.mjs → renderer-riIFosX6.mjs} +5 -5
- package/dist/{renderer-OsQRvOle.mjs.map → renderer-riIFosX6.mjs.map} +1 -1
- package/dist/{renderer-BMP_lYMk.mjs → renderer-sfqZK6L5.mjs} +4 -4
- package/dist/{renderer-BMP_lYMk.mjs.map → renderer-sfqZK6L5.mjs.map} +1 -1
- package/dist/{renderer-DEQeONTd.mjs → renderer-ynFRJh7G.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-BH1gUTYa.mjs → renderers-CP8CFWDs-DRoslK4F.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-BH1gUTYa.mjs.map → renderers-CP8CFWDs-DRoslK4F.mjs.map} +1 -1
- package/dist/sam/index.d.mts +3 -3
- package/dist/sam/index.mjs +1 -1
- package/dist/signals/index.d.mts +8 -8
- package/dist/signals/index.mjs +8 -8
- package/dist/{signals-gOd0Ui9B.mjs → signals-BfJ1aqpT.mjs} +4 -4
- package/dist/{signals-gOd0Ui9B.mjs.map → signals-BfJ1aqpT.mjs.map} +1 -1
- package/dist/{src-BU1VOWSk.mjs → src-BYp6r-cS.mjs} +11 -11
- package/dist/{src-BU1VOWSk.mjs.map → src-BYp6r-cS.mjs.map} +1 -1
- package/dist/{src-Bnr8DUC--DzkRGA62.mjs → src-Bnr8DUC--BRDqRF6I.mjs} +3 -3
- package/dist/{src-Bnr8DUC--DzkRGA62.mjs.map → src-Bnr8DUC--BRDqRF6I.mjs.map} +1 -1
- package/package.json +65 -59
- package/dist/audio-B6RmYOPe.mjs.map +0 -1
- package/dist/audio-D6tBMbHh.d.mts +0 -38
- package/dist/audio-D6tBMbHh.d.mts.map +0 -1
- package/dist/dist-D12-a3-x.mjs.map +0 -1
- package/dist/index-B9Lm1x8i.d.mts.map +0 -1
- package/dist/index-Bzo1uj8h.d.mts.map +0 -1
- package/dist/index-V0ZQ4JN6.d.mts.map +0 -1
- package/dist/preview-engine/chunk-S2ABWY5G.mjs +0 -1
- package/dist/preview-engine/renderers-3BOQOUEU.mjs +0 -1
- package/dist/preview-engine/renderers-3M2FESR2.mjs +0 -1
- package/dist/preview-engine/renderers-5XRKZHVT.mjs +0 -1
- package/dist/preview-engine/renderers-6LHIWKMZ.mjs +0 -1
- package/dist/preview-engine/renderers-A43VCJ7X.mjs +0 -1
- package/dist/preview-engine/renderers-AKY464RY.mjs +0 -1
- package/dist/preview-engine/renderers-C5UO6PL5.mjs +0 -1
- package/dist/preview-engine/renderers-C64QSZO4.mjs +0 -1
- package/dist/preview-engine/renderers-CIRCR6NG.mjs +0 -1
- package/dist/preview-engine/renderers-CIWOPETY.mjs +0 -1
- package/dist/preview-engine/renderers-CZEZCELP.mjs +0 -1
- package/dist/preview-engine/renderers-FSQMWHQM.mjs +0 -1
- package/dist/preview-engine/renderers-FZEW5C23.mjs +0 -1
- package/dist/preview-engine/renderers-HCET2IML.mjs +0 -1
- package/dist/preview-engine/renderers-IUOOC6K7.mjs +0 -1
- package/dist/preview-engine/renderers-KYYJLVIJ.mjs +0 -1
- package/dist/preview-engine/renderers-L4GE7WV3.mjs +0 -1
- package/dist/preview-engine/renderers-LRAFWKCO.mjs +0 -1
- package/dist/preview-engine/renderers-LU3XZWEB.mjs +0 -1
- package/dist/preview-engine/renderers-ND2WV4K3.mjs +0 -1
- package/dist/preview-engine/renderers-NJ5CWVVH.mjs +0 -1
- package/dist/preview-engine/renderers-NKXYPR3V.mjs +0 -1
- package/dist/preview-engine/renderers-NWR66CGK.mjs +0 -1
- package/dist/preview-engine/renderers-O22WTBRM.mjs +0 -1
- package/dist/preview-engine/renderers-PBBA7LQB.mjs +0 -1
- package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +0 -1
- package/dist/preview-engine/renderers-RMEACSRL.mjs +0 -1
- package/dist/preview-engine/renderers-SP42LCSI.mjs +0 -1
- package/dist/preview-engine/renderers-T7SZA3BX.mjs +0 -1
- package/dist/preview-engine/renderers-VADTDAHD.mjs +0 -1
- package/dist/preview-engine/renderers-VNNWI5C3.mjs +0 -1
- package/dist/preview-engine/renderers-WZ75MLP3.mjs +0 -1
- package/dist/preview-engine/renderers-XB5R4UQA.mjs +0 -1
- package/dist/preview-engine/renderers-YBIUZDGQ.mjs +0 -1
- package/dist/preview-engine/renderers-YESJR4O7.mjs +0 -1
- package/dist/preview-engine/renderers-YKSRZRRT.mjs +0 -1
- package/dist/renderer-129U3pc9.mjs +0 -5
- package/dist/renderer-2phFTFxQ.mjs +0 -5
- package/dist/renderer-9muKpDeE.mjs +0 -5
- package/dist/renderer-B5Dhv6j9.mjs +0 -5
- package/dist/renderer-BBUgCS3C.mjs +0 -5
- package/dist/renderer-BKXM28Mx.mjs +0 -5
- package/dist/renderer-BKqm6xdf.mjs +0 -5
- package/dist/renderer-BMfMMf0R.mjs +0 -5
- package/dist/renderer-BPsjEnnl.mjs +0 -5
- package/dist/renderer-Be5hfwSd.mjs.map +0 -1
- package/dist/renderer-Bofr6f88.mjs +0 -6
- package/dist/renderer-BqoGcujR.mjs +0 -5
- package/dist/renderer-BvuBt2aH.mjs +0 -5
- package/dist/renderer-BxTgXHu1.mjs +0 -5
- package/dist/renderer-Bz2Rrz60.mjs +0 -5
- package/dist/renderer-CBjG8rjE.mjs +0 -5
- package/dist/renderer-CS2zyPyZ.mjs +0 -5
- package/dist/renderer-CXnbl_jR.mjs +0 -5
- package/dist/renderer-CaF9vod_.mjs +0 -5
- package/dist/renderer-CbSBH3lp.mjs +0 -5
- package/dist/renderer-CdjuGRbO.mjs +0 -5
- package/dist/renderer-CoLbxC13.mjs +0 -5
- package/dist/renderer-Cr9G0dXB.mjs +0 -5
- package/dist/renderer-D63l6_UC.mjs +0 -5
- package/dist/renderer-DCJqnzER.mjs +0 -5
- package/dist/renderer-DFBOR5J3.mjs +0 -5
- package/dist/renderer-DGAZSzw6.mjs +0 -5
- package/dist/renderer-DPLGk1Qk.mjs +0 -5
- package/dist/renderer-DTCUzByS.mjs +0 -5
- package/dist/renderer-DdGahYi1.mjs +0 -5
- package/dist/renderer-DhL4nNPk.mjs +0 -5
- package/dist/renderer-DkyTbiVz.mjs +0 -3
- package/dist/renderer-DnAZweRX.mjs +0 -5
- package/dist/renderer-DpisVnT2.mjs +0 -5
- package/dist/renderer-Ds7pAKnE.mjs +0 -3
- package/dist/renderer-DxZD5B54.mjs +0 -5
- package/dist/renderer-PMHOnbnA.mjs +0 -5
- package/dist/renderer-STufNpMx.mjs +0 -5
- package/dist/renderer-SdrgfCxH.mjs +0 -5
- /package/dist/{chunk-D8S17ehY.mjs → chunk-W71TSjRM.mjs} +0 -0
- /package/dist/{renderer-Cputd36d.mjs → renderer-B6rZUBwE.mjs} +0 -0
package/dist/cli.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as
|
|
2
|
+
import { i as renderCloud, t as CloudRenderError } from "./cloud-xcfV4J03.mjs";
|
|
3
|
+
import { t as failedCheck } from "./check-result-Culfu7Nx.mjs";
|
|
3
4
|
import { createRequire } from "node:module";
|
|
4
5
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
5
|
-
import { basename, dirname, join, posix, relative, resolve, sep } from "node:path";
|
|
6
|
+
import path, { basename, dirname, join, posix, relative, resolve, sep } from "node:path";
|
|
6
7
|
import { createHash } from "node:crypto";
|
|
7
8
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
8
9
|
import { spawn } from "node:child_process";
|
|
@@ -373,7 +374,8 @@ const SCRIPTS = {
|
|
|
373
374
|
frames: "tsx src/render.ts frames",
|
|
374
375
|
grid: "tsx src/render.ts grid",
|
|
375
376
|
preview: "tsx src/render.ts preview",
|
|
376
|
-
render: "tsx src/render.ts"
|
|
377
|
+
render: "tsx src/render.ts",
|
|
378
|
+
"render:cloud": "framefields render src/film.ts --cloud --workers auto"
|
|
377
379
|
};
|
|
378
380
|
/**
|
|
379
381
|
* The `package.json` fields a framefields project needs. npm reads
|
|
@@ -570,6 +572,7 @@ ${run("frames")} -- 0 30 60 # PNGs in output/
|
|
|
570
572
|
${run("grid")} # a contact sheet of the motion
|
|
571
573
|
${run("preview")} # play it in the browser
|
|
572
574
|
${run("render")} # output/output.mp4
|
|
575
|
+
${run("render:cloud")} # on cloud GPUs, from the pushed commit
|
|
573
576
|
\`\`\`
|
|
574
577
|
|
|
575
578
|
- \`src/film.ts\` builds the composition, \`src/theme.ts\` holds sizes, colors and fonts,
|
|
@@ -578,6 +581,9 @@ ${run("render")} # output/output.mp4
|
|
|
578
581
|
one into \`src/components/\`.
|
|
579
582
|
- Optional: the AI gateway generates images, video, music, voice and 3D from code. Copy
|
|
580
583
|
\`.env.example\` to \`.env\` and set \`FRAMEFIELDS_API_KEY\` (keys at ${AI_DASHBOARD}).
|
|
584
|
+
- \`render:cloud\` renders on framefields' GPUs with the same key, and splits a long film
|
|
585
|
+
across several (\`-- --plan\` shows workers, time and cost first). It renders the
|
|
586
|
+
commit you pushed, not uncommitted changes.
|
|
581
587
|
- Footage, audio and fonts live in \`assets/\` and are tracked with Git LFS
|
|
582
588
|
(\`git lfs install\` once per machine, \`git lfs pull\` after cloning).
|
|
583
589
|
`;
|
|
@@ -863,6 +869,131 @@ function isCheckReport(value) {
|
|
|
863
869
|
return typeof value === "object" && value !== null && "schemaVersion" in value && value.schemaVersion === 1 && "diagnostics" in value && Array.isArray(value.diagnostics);
|
|
864
870
|
}
|
|
865
871
|
|
|
872
|
+
//#endregion
|
|
873
|
+
//#region src/cli/cloud.ts
|
|
874
|
+
/**
|
|
875
|
+
* `framefields render <entry> --cloud`: renders the project on
|
|
876
|
+
* api.framefields.dev and downloads the video. Prints one plain line per
|
|
877
|
+
* phase, and a progress line at most every 10 seconds while frames render.
|
|
878
|
+
*/
|
|
879
|
+
const PROGRESS_EVERY_MS = 1e4;
|
|
880
|
+
async function runCloudRender(o, log, render = renderCloud) {
|
|
881
|
+
const workers = parseWorkers(o.workers);
|
|
882
|
+
if (workers === void 0) {
|
|
883
|
+
log(`--workers must be "auto" or a positive whole number, not "${o.workers}".`);
|
|
884
|
+
return 2;
|
|
885
|
+
}
|
|
886
|
+
if (o.codec && o.codec !== "h264" && o.codec !== "vp9") {
|
|
887
|
+
log(`--codec must be h264 or vp9, not "${o.codec}".`);
|
|
888
|
+
return 2;
|
|
889
|
+
}
|
|
890
|
+
const codec = o.codec ?? "h264";
|
|
891
|
+
const outputPath = o.output ?? path.join("output", `${path.basename(o.entry).replace(/\.[^.]+$/, "")}.${codec === "vp9" ? "webm" : "mp4"}`);
|
|
892
|
+
const controller = new AbortController();
|
|
893
|
+
const onSigint = () => {
|
|
894
|
+
log("Cancelling the cloud render…");
|
|
895
|
+
controller.abort(/* @__PURE__ */ new Error("cancelled"));
|
|
896
|
+
};
|
|
897
|
+
process.once("SIGINT", onSigint);
|
|
898
|
+
const started = Date.now();
|
|
899
|
+
const narrate = narrator(o.json ? () => {} : log, Date.now);
|
|
900
|
+
try {
|
|
901
|
+
const result = await render({
|
|
902
|
+
entry: o.entry,
|
|
903
|
+
export: o.export,
|
|
904
|
+
select: o.select,
|
|
905
|
+
workers: o.plan && workers === 1 ? "auto" : workers,
|
|
906
|
+
maxWorkers: o.maxWorkers ? Number(o.maxWorkers) : void 0,
|
|
907
|
+
codec,
|
|
908
|
+
quality: o.quality,
|
|
909
|
+
dryRun: o.plan,
|
|
910
|
+
outputPath: o.plan ? void 0 : outputPath,
|
|
911
|
+
signal: controller.signal,
|
|
912
|
+
onProgress: narrate,
|
|
913
|
+
onWarning: (m) => log(`warning: ${m}`)
|
|
914
|
+
});
|
|
915
|
+
if (o.json) {
|
|
916
|
+
log(JSON.stringify(result));
|
|
917
|
+
return 0;
|
|
918
|
+
}
|
|
919
|
+
if (result.status === "planned") {
|
|
920
|
+
log(`Render it: framefields render ${o.entry} --cloud --workers ${o.workers ?? "auto"}`);
|
|
921
|
+
return 0;
|
|
922
|
+
}
|
|
923
|
+
const bytes = result.output?.bytes;
|
|
924
|
+
log(`Done in ${duration((Date.now() - started) / 1e3)}: ${outputPath}${bytes ? ` (${(bytes / 1e6).toFixed(1)} MB)` : ""}, ${Math.round(result.gpuSeconds)} GPU seconds, ${usd(result.costUsd)}.`);
|
|
925
|
+
return 0;
|
|
926
|
+
} catch (err) {
|
|
927
|
+
if (err instanceof CloudRenderError) {
|
|
928
|
+
log(err.message);
|
|
929
|
+
if (err.status && err.status.costUsd > 0) log(`Charged ${usd(err.status.costUsd)} for the GPU time used.`);
|
|
930
|
+
if (err.code === "insufficient_credits") log("Top up at https://framefields.dev/dashboard/billing");
|
|
931
|
+
return 1;
|
|
932
|
+
}
|
|
933
|
+
throw err;
|
|
934
|
+
} finally {
|
|
935
|
+
process.removeListener("SIGINT", onSigint);
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
function parseWorkers(value) {
|
|
939
|
+
if (value === void 0) return 1;
|
|
940
|
+
if (value === "auto") return "auto";
|
|
941
|
+
const n = Number(value);
|
|
942
|
+
return Number.isInteger(n) && n >= 1 ? n : void 0;
|
|
943
|
+
}
|
|
944
|
+
/** Turns status polls into log lines: one per phase, throttled frame progress. */
|
|
945
|
+
function narrator(log, now) {
|
|
946
|
+
let phase;
|
|
947
|
+
let planned = false;
|
|
948
|
+
let lastProgress = 0;
|
|
949
|
+
return (s) => {
|
|
950
|
+
if (!phase) log(`Cloud render ${s.id} started.`);
|
|
951
|
+
if (s.plan && !planned) {
|
|
952
|
+
planned = true;
|
|
953
|
+
log(describePlan(s));
|
|
954
|
+
}
|
|
955
|
+
if (s.status !== phase) {
|
|
956
|
+
phase = s.status;
|
|
957
|
+
const line = phaseLine(s);
|
|
958
|
+
if (line) log(line);
|
|
959
|
+
lastProgress = now();
|
|
960
|
+
return;
|
|
961
|
+
}
|
|
962
|
+
if (s.status === "rendering" && now() - lastProgress >= PROGRESS_EVERY_MS) {
|
|
963
|
+
lastProgress = now();
|
|
964
|
+
log(progressLine(s));
|
|
965
|
+
}
|
|
966
|
+
};
|
|
967
|
+
}
|
|
968
|
+
function describePlan(s) {
|
|
969
|
+
const plan = s.plan;
|
|
970
|
+
if (!plan) return "";
|
|
971
|
+
const est = s.estimateUsd !== void 0 ? `, estimated ${usd(s.estimateUsd)}` : "";
|
|
972
|
+
return `Plan: ${plan.workers} ${plan.workers === 1 ? "worker" : "workers"}, ${duration(plan.workSec)} of render work, ready in about ${duration(plan.etaSec)}${est}.`;
|
|
973
|
+
}
|
|
974
|
+
function phaseLine(s) {
|
|
975
|
+
switch (s.status) {
|
|
976
|
+
case "probing": return "Measuring frame costs on one worker to plan the split…";
|
|
977
|
+
case "rendering": return s.workers > 1 ? `Rendering ${s.workers} chunks and the audio in parallel…` : "Rendering on one worker…";
|
|
978
|
+
case "stitching": return `Joining ${s.workers} chunks…`;
|
|
979
|
+
default: return;
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
function progressLine(s) {
|
|
983
|
+
const { frames, totalFrames, etaSec } = s.progress;
|
|
984
|
+
return `Rendering ${totalFrames ? `${Math.floor(frames / totalFrames * 100)}% (${frames}/${totalFrames} frames)` : `${frames} frames`}${etaSec ? `, about ${duration(etaSec)} left` : ""}, ${usd(s.costUsd)} so far.`;
|
|
985
|
+
}
|
|
986
|
+
function duration(sec) {
|
|
987
|
+
const s = Math.max(0, Math.round(sec));
|
|
988
|
+
if (s < 90) return `${s} s`;
|
|
989
|
+
const m = Math.round(s / 60);
|
|
990
|
+
if (m < 90) return `${m} min`;
|
|
991
|
+
return `${Math.floor(m / 60)} h ${m % 60} min`;
|
|
992
|
+
}
|
|
993
|
+
function usd(value) {
|
|
994
|
+
return value > 0 && value < .01 ? "<$0.01" : `$${value.toFixed(2)}`;
|
|
995
|
+
}
|
|
996
|
+
|
|
866
997
|
//#endregion
|
|
867
998
|
//#region src/cli/registry.ts
|
|
868
999
|
/**
|
|
@@ -913,6 +1044,7 @@ function openRegistry(source, cwd = process.cwd()) {
|
|
|
913
1044
|
* npx framefields list the components you can add
|
|
914
1045
|
* npx framefields fonts add <role...> install fonts (emoji)
|
|
915
1046
|
* npx framefields fonts list the fonts you can install
|
|
1047
|
+
* npx framefields render <entry> --cloud render on api.framefields.dev
|
|
916
1048
|
*/
|
|
917
1049
|
const HELP = `Usage: framefields <command> [options]
|
|
918
1050
|
|
|
@@ -932,6 +1064,10 @@ Commands:
|
|
|
932
1064
|
Install fonts (pinned, hash-checked, with their license)
|
|
933
1065
|
and register them in the generated <components>/fonts.ts.
|
|
934
1066
|
fonts list List the fonts you can install.
|
|
1067
|
+
render <entry> --cloud
|
|
1068
|
+
Render on api.framefields.dev from the pushed commit of
|
|
1069
|
+
this git repo, and download the video. Needs
|
|
1070
|
+
FRAMEFIELDS_API_KEY. --export defaults to buildFilm.
|
|
935
1071
|
|
|
936
1072
|
Options for check:
|
|
937
1073
|
--export <name> Composition or builder export (default buildFilm).
|
|
@@ -941,6 +1077,20 @@ Options for check:
|
|
|
941
1077
|
--warnings-as-errors Fail on lint warnings.
|
|
942
1078
|
--json Machine-readable check, component list, or font list result.
|
|
943
1079
|
|
|
1080
|
+
Options for render --cloud:
|
|
1081
|
+
--workers <n|auto> 1 (default) renders on one GPU. auto measures the film
|
|
1082
|
+
first and splits it across as many GPUs as stay
|
|
1083
|
+
efficient; a number splits it into that many.
|
|
1084
|
+
--max-workers <n> Upper bound for auto.
|
|
1085
|
+
--plan Measure and plan only: prints workers, time and the
|
|
1086
|
+
estimated cost, renders nothing.
|
|
1087
|
+
--output <file> Where the video goes (default output/<entry>.mp4).
|
|
1088
|
+
--codec <codec> h264 (default) or vp9.
|
|
1089
|
+
--quality <q> very_low, low, high or very_high (default).
|
|
1090
|
+
--select <name> When the export returns several compositions.
|
|
1091
|
+
--json Print the final status as JSON.
|
|
1092
|
+
Ctrl-C cancels the render; GPU time already used is charged.
|
|
1093
|
+
|
|
944
1094
|
Options for init:
|
|
945
1095
|
--name <name> Package name (default: the folder's name).
|
|
946
1096
|
--pm <manager> npm, pnpm, yarn or bun (default: the one running this).
|
|
@@ -968,6 +1118,7 @@ Examples:
|
|
|
968
1118
|
npx framefields init my-film --install
|
|
969
1119
|
npx framefields add mouse-pointer focus-zoom
|
|
970
1120
|
npx framefields fonts add emoji
|
|
1121
|
+
npx framefields render src/film.ts --cloud --workers auto --plan
|
|
971
1122
|
`;
|
|
972
1123
|
async function main(argv) {
|
|
973
1124
|
const { values, positionals } = parseArgs({
|
|
@@ -992,6 +1143,13 @@ async function main(argv) {
|
|
|
992
1143
|
output: { type: "string" },
|
|
993
1144
|
timeout: { type: "string" },
|
|
994
1145
|
"warnings-as-errors": { type: "boolean" },
|
|
1146
|
+
cloud: { type: "boolean" },
|
|
1147
|
+
workers: { type: "string" },
|
|
1148
|
+
"max-workers": { type: "string" },
|
|
1149
|
+
plan: { type: "boolean" },
|
|
1150
|
+
codec: { type: "string" },
|
|
1151
|
+
quality: { type: "string" },
|
|
1152
|
+
select: { type: "string" },
|
|
995
1153
|
help: {
|
|
996
1154
|
type: "boolean",
|
|
997
1155
|
short: "h"
|
|
@@ -1034,6 +1192,24 @@ async function main(argv) {
|
|
|
1034
1192
|
}
|
|
1035
1193
|
return report$1.status === "passed" ? 0 : 1;
|
|
1036
1194
|
}
|
|
1195
|
+
if (command === "render") {
|
|
1196
|
+
if (names.length !== 1 || !values.cloud) {
|
|
1197
|
+
process.stderr.write("Usage: framefields render <entry> --cloud [--workers auto] [--plan]\nLocal renders run your project's render script (`npm run render`).\n");
|
|
1198
|
+
return 2;
|
|
1199
|
+
}
|
|
1200
|
+
return runCloudRender({
|
|
1201
|
+
entry: names[0],
|
|
1202
|
+
export: values.export,
|
|
1203
|
+
select: values.select,
|
|
1204
|
+
workers: values.workers,
|
|
1205
|
+
maxWorkers: values["max-workers"],
|
|
1206
|
+
codec: values.codec,
|
|
1207
|
+
quality: values.quality,
|
|
1208
|
+
output: values.output,
|
|
1209
|
+
plan: values.plan,
|
|
1210
|
+
json: values.json
|
|
1211
|
+
}, log);
|
|
1212
|
+
}
|
|
1037
1213
|
if (command === "fonts") return fonts(names, cwd, values, log);
|
|
1038
1214
|
if (command === "init") {
|
|
1039
1215
|
if (names.length > 1) {
|