framefields 2.11.0 → 2.12.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/NOTICE.md +4 -0
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-BuCVk1IQ.mjs → audio-DHLoNcxD.mjs} +3 -3
- package/dist/{audio-BuCVk1IQ.mjs.map → audio-DHLoNcxD.mjs.map} +1 -1
- package/dist/{audio-CYZkDwae.d.mts → audio-afTBdB3U.d.mts} +3 -3
- package/dist/{audio-CYZkDwae.d.mts.map → audio-afTBdB3U.d.mts.map} +1 -1
- package/dist/cli/check-worker.mjs +45 -45
- package/dist/cli.mjs +174 -83
- package/dist/cli.mjs.map +1 -1
- package/dist/cloud/index.d.mts +14 -3
- package/dist/cloud/index.d.mts.map +1 -1
- package/dist/cloud/index.mjs +2 -2
- package/dist/{cloud-xcfV4J03.mjs → cloud-COid1Ipa.mjs} +169 -16
- package/dist/cloud-COid1Ipa.mjs.map +1 -0
- package/dist/components/index.d.mts +10 -10
- package/dist/components/index.mjs +44 -44
- package/dist/{dist-Dg9LMWoX.mjs → dist-2_lT3Dwc.mjs} +2 -2
- package/dist/{dist-Dg9LMWoX.mjs.map → dist-2_lT3Dwc.mjs.map} +1 -1
- package/dist/{dist-CWLLnigL.mjs → dist-B-OPY7Cs.mjs} +273 -76
- package/dist/dist-B-OPY7Cs.mjs.map +1 -0
- package/dist/{dist-EQX3TUUl.mjs → dist-BSqeChht.mjs} +3 -3
- package/dist/{dist-EQX3TUUl.mjs.map → dist-BSqeChht.mjs.map} +1 -1
- package/dist/{dist-CNGv-JTX.mjs → dist-BwtxciN4.mjs} +1 -1
- package/dist/dist-CySGkG54.mjs.map +1 -1
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +35 -35
- package/dist/{effects-DKLbLXF7.mjs → effects-C8CL9cOq.mjs} +2 -2
- package/dist/{effects-DKLbLXF7.mjs.map → effects-C8CL9cOq.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-gPbGbShD.mjs → fonts-BQrDjnpV.mjs} +2 -2
- package/dist/{fonts-gPbGbShD.mjs.map → fonts-BQrDjnpV.mjs.map} +1 -1
- package/dist/{gpu-CpkJJLQP.mjs → gpu-DHa-3Dou.mjs} +11 -3
- package/dist/gpu-DHa-3Dou.mjs.map +1 -0
- package/dist/{index-Cro-818i.d.mts → index-BNClElng.d.mts} +592 -516
- package/dist/index-BNClElng.d.mts.map +1 -0
- package/dist/{index-jSDEM-uE.d.mts → index-CAuNuvIg.d.mts} +5 -5
- package/dist/{index-jSDEM-uE.d.mts.map → index-CAuNuvIg.d.mts.map} +1 -1
- package/dist/index-COYNQ_mf.d.mts.map +1 -1
- package/dist/{index-D2i9J9Zq.d.mts → index-CTv9ZieD.d.mts} +2 -2
- package/dist/{index-D2i9J9Zq.d.mts.map → index-CTv9ZieD.d.mts.map} +1 -1
- package/dist/{index-C8YwZ6k1.d.mts → index-DQa7mhzq.d.mts} +2 -2
- package/dist/{index-C8YwZ6k1.d.mts.map → index-DQa7mhzq.d.mts.map} +1 -1
- package/dist/{index-Bly-7YM1.d.mts → index-Drk6HC2k.d.mts} +2 -2
- package/dist/{index-Bly-7YM1.d.mts.map → index-Drk6HC2k.d.mts.map} +1 -1
- package/dist/{index-BuiZzc6i.d.mts → index-Fliv2Z-w.d.mts} +32 -1
- package/dist/index-Fliv2Z-w.d.mts.map +1 -0
- package/dist/{index-CEU_Zsb9.d.mts → index-WwuuX8ZJ.d.mts} +24 -22
- package/dist/index-WwuuX8ZJ.d.mts.map +1 -0
- package/dist/index.d.mts +10 -10
- package/dist/index.mjs +52 -52
- package/dist/preview/index.d.mts +1 -1
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-BToKUTtZ.mjs → preview-BUtt481A.mjs} +2 -2
- package/dist/{preview-BToKUTtZ.mjs.map → preview-BUtt481A.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-QF4JWVO3.mjs → chunk-35XSD4QM.mjs} +15 -15
- package/dist/preview-engine/{chunk-ZF2MEFKO.mjs → chunk-3DOIE4DV.mjs} +1 -1
- package/dist/preview-engine/{chunk-JDB7PMRI.mjs → chunk-3IT7LHWR.mjs} +1 -1
- package/dist/preview-engine/{chunk-DNNGWS2C.mjs → chunk-3MLGWUSK.mjs} +1 -1
- package/dist/preview-engine/{chunk-KVOFO273.mjs → chunk-3QJ5GRBH.mjs} +1 -1
- package/dist/preview-engine/{chunk-54Q5CKSV.mjs → chunk-3QTHW2CD.mjs} +1 -1
- package/dist/preview-engine/chunk-44V4V5LD.mjs +1 -0
- package/dist/preview-engine/{chunk-BRV7TQDV.mjs → chunk-4JNIEQS2.mjs} +1 -1
- package/dist/preview-engine/chunk-4YT5YJIF.mjs +1 -0
- package/dist/preview-engine/{chunk-C4M3B2Q2.mjs → chunk-5SLBE2FX.mjs} +1 -1
- package/dist/preview-engine/{chunk-BJXNKMSY.mjs → chunk-64L4GUOF.mjs} +20 -6
- package/dist/preview-engine/{chunk-UMJ3VGKN.mjs → chunk-6B3NOY5W.mjs} +1 -1
- package/dist/preview-engine/{chunk-VQA4DYZU.mjs → chunk-6O7UDVNL.mjs} +1 -1
- package/dist/preview-engine/chunk-74J4DJQA.mjs +1 -0
- package/dist/preview-engine/chunk-77MT33VR.mjs +1 -0
- package/dist/preview-engine/chunk-A6OAPDIA.mjs +1 -0
- package/dist/preview-engine/chunk-ADLIF544.mjs +39 -0
- package/dist/preview-engine/{chunk-OLB4TQLQ.mjs → chunk-AKVRG7UU.mjs} +1 -1
- package/dist/preview-engine/{chunk-CIVEZJYF.mjs → chunk-CRBOK3JT.mjs} +1 -1
- package/dist/preview-engine/chunk-CSLSWUUT.mjs +1 -0
- package/dist/preview-engine/{chunk-JSYG6OWZ.mjs → chunk-D7OMXGIZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-EPRINA4V.mjs → chunk-E7BKWHOT.mjs} +10 -10
- package/dist/preview-engine/{chunk-NOKPBMIP.mjs → chunk-EWDJMJO5.mjs} +1 -1
- package/dist/preview-engine/{chunk-5KSBS3AL.mjs → chunk-EYE3GNL5.mjs} +1 -1
- package/dist/preview-engine/{chunk-GHTG5XV6.mjs → chunk-EYKN2VET.mjs} +84 -25
- package/dist/preview-engine/{chunk-OELPPLML.mjs → chunk-FJTURGJV.mjs} +1 -1
- package/dist/preview-engine/{chunk-IKVJ4MW5.mjs → chunk-G4ZTSLZU.mjs} +1 -1
- package/dist/preview-engine/{chunk-VZLIRYAL.mjs → chunk-GAMAKN5L.mjs} +1 -1
- package/dist/preview-engine/{chunk-65NANVQL.mjs → chunk-HTAHYSCW.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZIXPWP2B.mjs → chunk-ICWD36H6.mjs} +1 -1
- package/dist/preview-engine/chunk-JAAFSVAG.mjs +1 -0
- package/dist/preview-engine/{chunk-RDWLLITE.mjs → chunk-JAUMCOOJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-ACBBBOUM.mjs → chunk-KBCZKIIQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-YVZTRH4Y.mjs → chunk-KDCM7S3S.mjs} +1 -1
- package/dist/preview-engine/chunk-KIPXBOYG.mjs +1974 -0
- package/dist/preview-engine/{chunk-6LTINEA4.mjs → chunk-M4QVCQ3O.mjs} +1 -1
- package/dist/preview-engine/{chunk-GN3NDRLI.mjs → chunk-NCQHOGZK.mjs} +1 -1
- package/dist/preview-engine/{chunk-YKM7JDQY.mjs → chunk-NJO2BIJX.mjs} +1 -1
- package/dist/preview-engine/{chunk-7GMHSTRP.mjs → chunk-NTSALWFF.mjs} +1 -1
- package/dist/preview-engine/{chunk-PKNUTHPI.mjs → chunk-O75BFM4S.mjs} +1 -1
- package/dist/preview-engine/{chunk-VFQH5KVS.mjs → chunk-ONHY4KNY.mjs} +1 -1
- package/dist/preview-engine/chunk-PH3UUX6A.mjs +138 -0
- package/dist/preview-engine/chunk-PIHG6HJO.mjs +1 -0
- package/dist/preview-engine/{chunk-YHMBGJP6.mjs → chunk-QPT2Y2GZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-4AGQN53P.mjs → chunk-QXLFTCLC.mjs} +1 -1
- package/dist/preview-engine/{chunk-O63FLYWC.mjs → chunk-RGKS6YIA.mjs} +1 -1
- package/dist/preview-engine/{chunk-FQL4IJZN.mjs → chunk-RN7J5TRU.mjs} +1 -1
- package/dist/preview-engine/{chunk-26XWIHW3.mjs → chunk-RVCLMO5Q.mjs} +1 -1
- package/dist/preview-engine/{chunk-TEWRQKX3.mjs → chunk-SFHWP65D.mjs} +1 -1
- package/dist/preview-engine/{chunk-EXEO245X.mjs → chunk-TKXOSEIJ.mjs} +1 -1
- package/dist/preview-engine/chunk-UKZVUYB6.mjs +483 -0
- package/dist/preview-engine/{chunk-EAWJXW4J.mjs → chunk-UVEDFIPN.mjs} +1 -1
- package/dist/preview-engine/{chunk-Z24UEN4P.mjs → chunk-VUO4K52B.mjs} +1 -1
- package/dist/preview-engine/{chunk-IBPYV6HF.mjs → chunk-W4XR6F5G.mjs} +1 -1
- package/dist/preview-engine/{chunk-UI3VH33L.mjs → chunk-WPYWCWWL.mjs} +1 -1
- package/dist/preview-engine/{chunk-WFMUDL55.mjs → chunk-YAPGJZPI.mjs} +1 -1
- package/dist/preview-engine/{chunk-LMXMBX4J.mjs → chunk-YJ4DSRDY.mjs} +1 -1
- package/dist/preview-engine/{chunk-CCORQLMR.mjs → chunk-YOJKIMU5.mjs} +1 -1
- package/dist/preview-engine/{chunk-UGB6JKVS.mjs → chunk-ZHNEZZ6A.mjs} +1 -1
- package/dist/preview-engine/{chunk-LFNCWMKS.mjs → chunk-ZZMI3WOT.mjs} +1 -1
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/{renderers-53EI26GL.mjs → renderers-3FZVDYRQ.mjs} +1 -1
- package/dist/preview-engine/renderers-3KEBYOOF.mjs +1 -0
- package/dist/preview-engine/{renderers-6YVZUQOH.mjs → renderers-4RPQSUUZ.mjs} +1 -1
- package/dist/preview-engine/renderers-5EGFXFPF.mjs +1 -0
- package/dist/preview-engine/renderers-5SJHYUTM.mjs +1 -0
- package/dist/preview-engine/renderers-66MWDUN6.mjs +1 -0
- package/dist/preview-engine/{renderers-CCRZNGVK.mjs → renderers-6FENMFSC.mjs} +1 -1
- package/dist/preview-engine/renderers-77OXJ2GY.mjs +1 -0
- package/dist/preview-engine/renderers-7LI4QKHO.mjs +1 -0
- package/dist/preview-engine/{renderers-CYJAVWHT.mjs → renderers-AIZRIW2R.mjs} +1 -1
- package/dist/preview-engine/{renderers-OGOW3NA4.mjs → renderers-BDI2BDBA.mjs} +1 -1
- package/dist/preview-engine/renderers-BDXCO6NR.mjs +1 -0
- package/dist/preview-engine/{renderers-EN7LXJLG.mjs → renderers-BUZ67FNZ.mjs} +1 -1
- package/dist/preview-engine/renderers-DMTGKURQ.mjs +1 -0
- package/dist/preview-engine/renderers-DU7KPFVV.mjs +1 -0
- package/dist/preview-engine/{renderers-WSABL3QO.mjs → renderers-ECXMT5BD.mjs} +1 -1
- package/dist/preview-engine/{renderers-MOEC2XZZ.mjs → renderers-EILFSWSJ.mjs} +1 -1
- package/dist/preview-engine/{renderers-X6CORAES.mjs → renderers-EVEWFJ7U.mjs} +1 -1
- package/dist/preview-engine/renderers-F6PT2LON.mjs +1 -0
- package/dist/preview-engine/renderers-F7WPJXKT.mjs +1 -0
- package/dist/preview-engine/renderers-FIFF267S.mjs +1 -0
- package/dist/preview-engine/{renderers-GQM3KMV3.mjs → renderers-FQISHQEN.mjs} +1 -1
- package/dist/preview-engine/{renderers-HKLCB4U6.mjs → renderers-FXAVFNUN.mjs} +1 -1
- package/dist/preview-engine/{renderers-P2HORBZ6.mjs → renderers-GITAVRYZ.mjs} +1 -1
- package/dist/preview-engine/renderers-GTKRV225.mjs +1 -0
- package/dist/preview-engine/{renderers-KCGK33Y2.mjs → renderers-HG6JZIZO.mjs} +1 -1
- package/dist/preview-engine/{renderers-I6QKZ7CH.mjs → renderers-HHWMIDN3.mjs} +1 -1
- package/dist/preview-engine/renderers-HI3SRJVD.mjs +1 -0
- package/dist/preview-engine/{renderers-7CAHX35U.mjs → renderers-HXEDI4BD.mjs} +1 -1
- package/dist/preview-engine/{renderers-77PDUMYI.mjs → renderers-HXNSDJBY.mjs} +1 -1
- package/dist/preview-engine/{renderers-ACUJMDEK.mjs → renderers-I2ZOUFRU.mjs} +1 -1
- package/dist/preview-engine/renderers-JHFD4LHZ.mjs +1 -0
- package/dist/preview-engine/{renderers-IHGAWLUF.mjs → renderers-JMSAW7VY.mjs} +1 -1
- package/dist/preview-engine/renderers-KGVZUFHD.mjs +1 -0
- package/dist/preview-engine/{renderers-RN2MHIFK.mjs → renderers-KICDB5Y6.mjs} +1 -1
- package/dist/preview-engine/{renderers-C7SI3NIE.mjs → renderers-KKULMOV4.mjs} +1 -1
- package/dist/preview-engine/{renderers-HSFQIILN.mjs → renderers-KMVMPYY7.mjs} +1 -1
- package/dist/preview-engine/renderers-L6GFGHS6.mjs +1 -0
- package/dist/preview-engine/renderers-LN7WPG6I.mjs +1 -0
- package/dist/preview-engine/{renderers-BOBVXYAA.mjs → renderers-LWW4RF6D.mjs} +1 -1
- package/dist/preview-engine/renderers-LY57CZZB.mjs +1 -0
- package/dist/preview-engine/renderers-MBMJWZEW.mjs +1 -0
- package/dist/preview-engine/{renderers-VVP5WQOY.mjs → renderers-MPFU74I3.mjs} +1 -1
- package/dist/preview-engine/{renderers-H6PBHEYU.mjs → renderers-MW53LTMB.mjs} +1 -1
- package/dist/preview-engine/{renderers-PPZK6VEW.mjs → renderers-NQC4DPX4.mjs} +1 -1
- package/dist/preview-engine/{renderers-4IBFDW2S.mjs → renderers-PC2GOZDT.mjs} +1 -1
- package/dist/preview-engine/renderers-PREFONJG.mjs +1 -0
- package/dist/preview-engine/renderers-PSBTV2DO.mjs +228 -0
- package/dist/preview-engine/{renderers-UG2C3C7T.mjs → renderers-Q77UPEYE.mjs} +1 -1
- package/dist/preview-engine/renderers-QHXCFDHI.mjs +1 -0
- package/dist/preview-engine/renderers-R22CDFO4.mjs +1 -0
- package/dist/preview-engine/renderers-RDYJRNAR.mjs +1 -0
- package/dist/preview-engine/renderers-RENLKAA7.mjs +1 -0
- package/dist/preview-engine/{renderers-5XLGCEOA.mjs → renderers-RIPXT4AL.mjs} +1 -1
- package/dist/preview-engine/{renderers-FY2HOQCS.mjs → renderers-SFVFAS3C.mjs} +1 -1
- package/dist/preview-engine/{renderers-VIGZYJYX.mjs → renderers-SWQVCJHB.mjs} +1 -1
- package/dist/preview-engine/renderers-SZVDZDY7.mjs +1 -0
- package/dist/preview-engine/renderers-TEKHQHCL.mjs +1 -0
- package/dist/preview-engine/renderers-TS32FDV7.mjs +1 -0
- package/dist/preview-engine/renderers-TYSLUZ53.mjs +1 -0
- package/dist/preview-engine/renderers-U3RLYFCN.mjs +1 -0
- package/dist/preview-engine/{renderers-6LNDAO4B.mjs → renderers-U4IXWMD6.mjs} +1 -1
- package/dist/preview-engine/renderers-V5HM6PZ2.mjs +1 -0
- package/dist/preview-engine/{renderers-33FCFHDR.mjs → renderers-VUQAZ56P.mjs} +1 -1
- package/dist/preview-engine/renderers-W5YFMLSB.mjs +1 -0
- package/dist/preview-engine/renderers-XKDWUK56.mjs +1 -0
- package/dist/preview-engine/renderers-XKSBNCLZ.mjs +1 -0
- package/dist/preview-engine/renderers-XLQXVD37.mjs +1 -0
- package/dist/preview-engine/renderers-ZGX3A3QZ.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/preview-engine/{src-4IUYUKIZ.mjs → src-GPF7RIBU.mjs} +1 -1
- package/dist/{program-Bc860ko5.mjs → program-Cvv_nb9T.mjs} +42 -15
- package/dist/program-Cvv_nb9T.mjs.map +1 -0
- package/dist/renderer/index.d.mts +1 -1
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer--RJepuOy.mjs +5 -0
- package/dist/{renderer-Bf4-N7k7.mjs → renderer-4uZGSmUD.mjs} +4 -4
- package/dist/{renderer-Bf4-N7k7.mjs.map → renderer-4uZGSmUD.mjs.map} +1 -1
- package/dist/{renderer-V4dhrf_h.mjs → renderer-5fGj_tqN.mjs} +4 -4
- package/dist/{renderer-V4dhrf_h.mjs.map → renderer-5fGj_tqN.mjs.map} +1 -1
- package/dist/{renderer-ByjaseAo.mjs → renderer-6g1ri445.mjs} +4 -4
- package/dist/{renderer-ByjaseAo.mjs.map → renderer-6g1ri445.mjs.map} +1 -1
- package/dist/{renderer-CR0mDPYY.mjs → renderer-B09I95bo.mjs} +2 -2
- package/dist/{renderer-BVKOQarx.d.mts → renderer-B1U6YRRV.d.mts} +22 -4
- package/dist/renderer-B1U6YRRV.d.mts.map +1 -0
- package/dist/renderer-B4NFnaty.mjs +5 -0
- package/dist/renderer-B6g4ts0e.mjs +5 -0
- package/dist/{renderer-g_1t2je9.mjs → renderer-BBjkX0Vt.mjs} +2 -2
- package/dist/{renderer-DAn9xiQT.mjs → renderer-BC_Nse6h.mjs} +4 -4
- package/dist/{renderer-DAn9xiQT.mjs.map → renderer-BC_Nse6h.mjs.map} +1 -1
- package/dist/renderer-BGoAr-tl.mjs +5 -0
- package/dist/{renderer-_9gbYS-3.mjs → renderer-BJEexai1.mjs} +4 -4
- package/dist/{renderer-_9gbYS-3.mjs.map → renderer-BJEexai1.mjs.map} +1 -1
- package/dist/{renderer-DcvjSolU.mjs → renderer-BOg8i8eF.mjs} +11 -2
- package/dist/{renderer-DcvjSolU.mjs.map → renderer-BOg8i8eF.mjs.map} +1 -1
- package/dist/renderer-BSOdBgdE.mjs +5 -0
- package/dist/{renderer-4ZUv3X1I.mjs → renderer-BSsKlcHk.mjs} +4 -4
- package/dist/{renderer-4ZUv3X1I.mjs.map → renderer-BSsKlcHk.mjs.map} +1 -1
- package/dist/{renderer-Cz-n883J.mjs → renderer-BTd6tFcS.mjs} +4 -4
- package/dist/{renderer-Cz-n883J.mjs.map → renderer-BTd6tFcS.mjs.map} +1 -1
- package/dist/renderer-BU6O0fpM.mjs +5 -0
- package/dist/{renderer-D-QVGphn.mjs → renderer-BXGuCnCJ.mjs} +4 -4
- package/dist/{renderer-D-QVGphn.mjs.map → renderer-BXGuCnCJ.mjs.map} +1 -1
- package/dist/renderer-BZ97iidG.mjs +5 -0
- package/dist/renderer-B_Klh1VT.mjs +5 -0
- package/dist/renderer-BaWQM1y-.mjs +5 -0
- package/dist/renderer-Bc0jvAj0.mjs +5 -0
- package/dist/renderer-Bd-NuU3M.mjs +3 -0
- package/dist/{renderer-B-CMRUag.mjs → renderer-Bf7Z7WT5.mjs} +3 -3
- package/dist/{renderer-B-CMRUag.mjs.map → renderer-Bf7Z7WT5.mjs.map} +1 -1
- package/dist/renderer-Bm077kZ6.mjs +5 -0
- package/dist/renderer-BtzE_e_Y.mjs +5 -0
- package/dist/{renderer-DFJWPqOJ.mjs → renderer-BvRM3OZ6.mjs} +3 -3
- package/dist/{renderer-DFJWPqOJ.mjs.map → renderer-BvRM3OZ6.mjs.map} +1 -1
- package/dist/{renderer-fwKnV9zs.mjs → renderer-BwJ0nXXu.mjs} +4 -4
- package/dist/{renderer-fwKnV9zs.mjs.map → renderer-BwJ0nXXu.mjs.map} +1 -1
- package/dist/{renderer-CLAvn9c6.mjs → renderer-BwV-o_1b.mjs} +3 -3
- package/dist/{renderer-CLAvn9c6.mjs.map → renderer-BwV-o_1b.mjs.map} +1 -1
- package/dist/{renderer-BDZC3o3N.mjs → renderer-Bxiiar50.mjs} +4 -4
- package/dist/{renderer-BDZC3o3N.mjs.map → renderer-Bxiiar50.mjs.map} +1 -1
- package/dist/{renderer-o68mVeyk.mjs → renderer-ByFPmHBC.mjs} +3 -3
- package/dist/{renderer-o68mVeyk.mjs.map → renderer-ByFPmHBC.mjs.map} +1 -1
- package/dist/{renderer-D4f8f66C.mjs → renderer-BzTj_CeK.mjs} +4 -4
- package/dist/{renderer-D4f8f66C.mjs.map → renderer-BzTj_CeK.mjs.map} +1 -1
- package/dist/renderer-C225eCAo.mjs +5 -0
- package/dist/{renderer-BNJ6Jk7-.mjs → renderer-C2kFIZ4r.mjs} +3 -3
- package/dist/{renderer-BNJ6Jk7-.mjs.map → renderer-C2kFIZ4r.mjs.map} +1 -1
- package/dist/{renderer-riIFosX6.mjs → renderer-C3CGYjrC.mjs} +4 -4
- package/dist/{renderer-riIFosX6.mjs.map → renderer-C3CGYjrC.mjs.map} +1 -1
- package/dist/renderer-CC4fhNup.mjs +3 -0
- package/dist/{renderer-B1esRxGy.mjs → renderer-CGpi8CDT.mjs} +4 -4
- package/dist/{renderer-B1esRxGy.mjs.map → renderer-CGpi8CDT.mjs.map} +1 -1
- package/dist/{renderer-Rw87u1Cr.mjs → renderer-CInMMs5x.mjs} +4 -4
- package/dist/{renderer-Rw87u1Cr.mjs.map → renderer-CInMMs5x.mjs.map} +1 -1
- package/dist/{renderer-COcKhouz.mjs → renderer-CLTRTtQ8.mjs} +4 -4
- package/dist/{renderer-COcKhouz.mjs.map → renderer-CLTRTtQ8.mjs.map} +1 -1
- package/dist/renderer-CLXdR4vz.mjs +5 -0
- package/dist/{renderer-BhsrlGKp.mjs → renderer-CMCmljb0.mjs} +74 -21
- package/dist/renderer-CMCmljb0.mjs.map +1 -0
- package/dist/{renderer-HDj9Zb-O.mjs → renderer-CN-mCIoI.mjs} +19 -6
- package/dist/renderer-CN-mCIoI.mjs.map +1 -0
- package/dist/{renderer-Ros7XQg2.mjs → renderer-CNpq7rL-.mjs} +3 -3
- package/dist/{renderer-Ros7XQg2.mjs.map → renderer-CNpq7rL-.mjs.map} +1 -1
- package/dist/{renderer-B3Dme2es.mjs → renderer-CZClDMgF.mjs} +4 -4
- package/dist/{renderer-B3Dme2es.mjs.map → renderer-CZClDMgF.mjs.map} +1 -1
- package/dist/{renderer-1uoKiILq.mjs → renderer-C_gR2H3R.mjs} +3 -3
- package/dist/{renderer-1uoKiILq.mjs.map → renderer-C_gR2H3R.mjs.map} +1 -1
- package/dist/{renderer-88C3QpKL.d.mts → renderer-CcmxR6Fy.d.mts} +2 -2
- package/dist/{renderer-88C3QpKL.d.mts.map → renderer-CcmxR6Fy.d.mts.map} +1 -1
- package/dist/{renderer-50JEMaVo.mjs → renderer-CiHVnhUk.mjs} +4 -4
- package/dist/{renderer-50JEMaVo.mjs.map → renderer-CiHVnhUk.mjs.map} +1 -1
- package/dist/renderer-CszM8B3C.mjs +5 -0
- package/dist/renderer-Ctp8ZYfk.mjs +5 -0
- package/dist/{renderer-JHByuUNb.mjs → renderer-CtpEzVBn.mjs} +3 -3
- package/dist/{renderer-JHByuUNb.mjs.map → renderer-CtpEzVBn.mjs.map} +1 -1
- package/dist/renderer-CxQdSp8I.mjs +5 -0
- package/dist/{renderer-BaIJIfJ6.mjs → renderer-D3QPNBEj.mjs} +4 -4
- package/dist/{renderer-BaIJIfJ6.mjs.map → renderer-D3QPNBEj.mjs.map} +1 -1
- package/dist/{renderer-Bbxh4N8Y.mjs → renderer-D3YbHjRG.mjs} +73 -73
- package/dist/{renderer-Bbxh4N8Y.mjs.map → renderer-D3YbHjRG.mjs.map} +1 -1
- package/dist/renderer-D4GMRtDd.mjs +6 -0
- package/dist/{renderer-Bx14Wnxl.mjs → renderer-DCMoBppL.mjs} +58 -4
- package/dist/renderer-DCMoBppL.mjs.map +1 -0
- package/dist/{renderer-sfqZK6L5.mjs → renderer-DEoerd-j.mjs} +4 -4
- package/dist/{renderer-sfqZK6L5.mjs.map → renderer-DEoerd-j.mjs.map} +1 -1
- package/dist/renderer-DEsGIvTZ.mjs +5 -0
- package/dist/{renderer-ynFRJh7G.mjs → renderer-DGXqspB9.mjs} +2 -2
- package/dist/renderer-DIaUQ0EP.mjs +5 -0
- package/dist/{renderer-DgPn_SOC.mjs → renderer-DKFaVaRJ.mjs} +3 -3
- package/dist/{renderer-DgPn_SOC.mjs.map → renderer-DKFaVaRJ.mjs.map} +1 -1
- package/dist/{renderer-CrR8Mpxq.mjs → renderer-DL3o_lG1.mjs} +4 -4
- package/dist/{renderer-CrR8Mpxq.mjs.map → renderer-DL3o_lG1.mjs.map} +1 -1
- package/dist/{renderer-Bxjb0HYU.mjs → renderer-DLaUT6JZ.mjs} +3 -3
- package/dist/{renderer-Bxjb0HYU.mjs.map → renderer-DLaUT6JZ.mjs.map} +1 -1
- package/dist/renderer-DLjqcNzQ.mjs +5 -0
- package/dist/renderer-DMuQZa51.mjs +5 -0
- package/dist/{renderer-Co6UFbZB.mjs → renderer-DO1SZ5xY.mjs} +4 -4
- package/dist/{renderer-Co6UFbZB.mjs.map → renderer-DO1SZ5xY.mjs.map} +1 -1
- package/dist/{renderer-B6Oeahe_.mjs → renderer-DO_zXwMJ.mjs} +3 -3
- package/dist/{renderer-B6Oeahe_.mjs.map → renderer-DO_zXwMJ.mjs.map} +1 -1
- package/dist/renderer-DOgi2aF2.mjs +5 -0
- package/dist/{renderer-BSELd5vU.mjs → renderer-DP9ScNM6.mjs} +3 -3
- package/dist/{renderer-BSELd5vU.mjs.map → renderer-DP9ScNM6.mjs.map} +1 -1
- package/dist/{renderer-DOkbn1ot.mjs → renderer-DQJHjU0L.mjs} +4 -4
- package/dist/{renderer-DOkbn1ot.mjs.map → renderer-DQJHjU0L.mjs.map} +1 -1
- package/dist/renderer-DSh7cvi4.mjs +5 -0
- package/dist/renderer-DV1LVBBP.mjs +5 -0
- package/dist/{renderer-BJ-7WRgO.mjs → renderer-DX60Kr20.mjs} +3 -3
- package/dist/{renderer-BJ-7WRgO.mjs.map → renderer-DX60Kr20.mjs.map} +1 -1
- package/dist/{renderer-DLPhfwbR.mjs → renderer-DZIxduEt.mjs} +3 -3
- package/dist/{renderer-DLPhfwbR.mjs.map → renderer-DZIxduEt.mjs.map} +1 -1
- package/dist/{renderer-TKZCA0B9.mjs → renderer-DaLy1dFA.mjs} +208 -69
- package/dist/renderer-DaLy1dFA.mjs.map +1 -0
- package/dist/{renderer-DaXQgGg3.mjs → renderer-DaY04IyU.mjs} +4 -4
- package/dist/{renderer-DaXQgGg3.mjs.map → renderer-DaY04IyU.mjs.map} +1 -1
- package/dist/{renderer-Dpl6poqD.mjs → renderer-Dak_wVh9.mjs} +2 -2
- package/dist/{renderer-Dpl6poqD.mjs.map → renderer-Dak_wVh9.mjs.map} +1 -1
- package/dist/renderer-Dhrj2bJz.mjs +5 -0
- package/dist/{renderer-celhuAL7.mjs → renderer-Dj54y3h3.mjs} +3 -3
- package/dist/{renderer-celhuAL7.mjs.map → renderer-Dj54y3h3.mjs.map} +1 -1
- package/dist/renderer-DoFUu1R4.mjs +5 -0
- package/dist/{renderer-RvI3qRUI.mjs → renderer-Dp9FQKVP.mjs} +4 -4
- package/dist/{renderer-RvI3qRUI.mjs.map → renderer-Dp9FQKVP.mjs.map} +1 -1
- package/dist/{renderer-KKk7myX1.mjs → renderer-DrK6pyfz.mjs} +4 -4
- package/dist/{renderer-KKk7myX1.mjs.map → renderer-DrK6pyfz.mjs.map} +1 -1
- package/dist/{renderer-BURhYcpA.mjs → renderer-DrL3J9ci.mjs} +3 -3
- package/dist/{renderer-BURhYcpA.mjs.map → renderer-DrL3J9ci.mjs.map} +1 -1
- package/dist/{renderer-BOrMBwQS.mjs → renderer-DsPLMzy1.mjs} +2 -2
- package/dist/{renderer-BOrMBwQS.mjs.map → renderer-DsPLMzy1.mjs.map} +1 -1
- package/dist/renderer-DsydX3cx.mjs +5 -0
- package/dist/{renderer-D06HxSXO.mjs → renderer-DwH5e3hx.mjs} +2 -2
- package/dist/renderer-DxVSoeYi.mjs +5 -0
- package/dist/{renderer-BQetXCcZ.mjs → renderer-Dy1xQOTu.mjs} +3 -3
- package/dist/{renderer-BQetXCcZ.mjs.map → renderer-Dy1xQOTu.mjs.map} +1 -1
- package/dist/{renderer-CxGx1Lhi.mjs → renderer-FvvywNvv.mjs} +3 -3
- package/dist/{renderer-CxGx1Lhi.mjs.map → renderer-FvvywNvv.mjs.map} +1 -1
- package/dist/{renderer-DE9Jik9K.mjs → renderer-HXw4cJZx.mjs} +3 -3
- package/dist/{renderer-DE9Jik9K.mjs.map → renderer-HXw4cJZx.mjs.map} +1 -1
- package/dist/{renderer-CU8v-LxD.mjs → renderer-HhJPFidU.mjs} +4 -4
- package/dist/{renderer-CU8v-LxD.mjs.map → renderer-HhJPFidU.mjs.map} +1 -1
- package/dist/{renderer-BwrfKKqw.mjs → renderer-IAffbHXx.mjs} +3 -3
- package/dist/{renderer-BwrfKKqw.mjs.map → renderer-IAffbHXx.mjs.map} +1 -1
- package/dist/{renderer-fs8f1QeE.mjs → renderer-LrAldCWN.mjs} +4 -4
- package/dist/{renderer-fs8f1QeE.mjs.map → renderer-LrAldCWN.mjs.map} +1 -1
- package/dist/renderer-Nc9bHb0n.mjs +5 -0
- package/dist/{renderer-h62QaJYz.mjs → renderer-O4y02xkD.mjs} +3 -3
- package/dist/{renderer-h62QaJYz.mjs.map → renderer-O4y02xkD.mjs.map} +1 -1
- package/dist/{renderer-eMCTAa9e.mjs → renderer-PnnkUWm-.mjs} +3 -3
- package/dist/{renderer-eMCTAa9e.mjs.map → renderer-PnnkUWm-.mjs.map} +1 -1
- package/dist/renderer-TFaSD2Db.mjs +5 -0
- package/dist/{renderer-jnAIhWn_.mjs → renderer-TiaHrU5z.mjs} +4 -4
- package/dist/{renderer-jnAIhWn_.mjs.map → renderer-TiaHrU5z.mjs.map} +1 -1
- package/dist/renderer-Z61ctppe.mjs +5 -0
- package/dist/{renderer-DkqZmfm8.mjs → renderer-_KIBvES8.mjs} +4 -4
- package/dist/{renderer-DkqZmfm8.mjs.map → renderer-_KIBvES8.mjs.map} +1 -1
- package/dist/renderer-awXf3sNS.mjs +5 -0
- package/dist/{renderer-7ow5Acsg.mjs → renderer-b0H3oDae.mjs} +3 -3
- package/dist/{renderer-7ow5Acsg.mjs.map → renderer-b0H3oDae.mjs.map} +1 -1
- package/dist/renderer-cHT28oYI.mjs +5 -0
- package/dist/renderer-g7Y3bFot.mjs +5 -0
- package/dist/{renderer-q7q6k_cD.mjs → renderer-oBgCEqaM.mjs} +3 -3
- package/dist/{renderer-q7q6k_cD.mjs.map → renderer-oBgCEqaM.mjs.map} +1 -1
- package/dist/{renderer-Bo7shNdU.mjs → renderer-qVJdxbXB.mjs} +4 -4
- package/dist/{renderer-Bo7shNdU.mjs.map → renderer-qVJdxbXB.mjs.map} +1 -1
- package/dist/renderer-qVv0OzVc.mjs +5 -0
- package/dist/{renderer-D0aAZHC7.mjs → renderer-rKw5_EjG.mjs} +3 -3
- package/dist/{renderer-D0aAZHC7.mjs.map → renderer-rKw5_EjG.mjs.map} +1 -1
- package/dist/{renderer-B1LD29TV.mjs → renderer-sMFJtt_H.mjs} +3 -3
- package/dist/{renderer-B1LD29TV.mjs.map → renderer-sMFJtt_H.mjs.map} +1 -1
- package/dist/{renderer-C9BSXyrq.mjs → renderer-smP1F57W.mjs} +3 -3
- package/dist/{renderer-C9BSXyrq.mjs.map → renderer-smP1F57W.mjs.map} +1 -1
- package/dist/{renderer-DwK9jsER.mjs → renderer-snjhPaP-.mjs} +4 -4
- package/dist/{renderer-DwK9jsER.mjs.map → renderer-snjhPaP-.mjs.map} +1 -1
- package/dist/{renderer-lHNTgiOM.mjs → renderer-t1sXDiqm.mjs} +3 -3
- package/dist/{renderer-lHNTgiOM.mjs.map → renderer-t1sXDiqm.mjs.map} +1 -1
- package/dist/{renderer-CAWnCsQc.mjs → renderer-tRi3KNoG.mjs} +4 -4
- package/dist/{renderer-CAWnCsQc.mjs.map → renderer-tRi3KNoG.mjs.map} +1 -1
- package/dist/{renderer-BNHcwxw9.mjs → renderer-uA0UCxjA.mjs} +3 -3
- package/dist/{renderer-BNHcwxw9.mjs.map → renderer-uA0UCxjA.mjs.map} +1 -1
- package/dist/{renderer-pNmI-A9o.mjs → renderer-xNOKSN3V.mjs} +4 -4
- package/dist/{renderer-pNmI-A9o.mjs.map → renderer-xNOKSN3V.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-DRoslK4F.mjs → renderers-CP8CFWDs-DWRjjeUg.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-DRoslK4F.mjs.map → renderers-CP8CFWDs-DWRjjeUg.mjs.map} +1 -1
- package/dist/sam/index.d.mts +2 -2
- package/dist/sam/index.mjs +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +5 -5
- package/dist/{src-Bnr8DUC--BRDqRF6I.mjs → src-BU6vm9sP-DFJ3phW0.mjs} +74 -9
- package/dist/src-BU6vm9sP-DFJ3phW0.mjs.map +1 -0
- package/dist/{src-BYp6r-cS.mjs → src-D7M8VTzv.mjs} +248 -28
- package/dist/src-D7M8VTzv.mjs.map +1 -0
- package/package.json +59 -59
- package/dist/cloud-xcfV4J03.mjs.map +0 -1
- package/dist/dist-CWLLnigL.mjs.map +0 -1
- package/dist/gpu-CpkJJLQP.mjs.map +0 -1
- package/dist/index-BuiZzc6i.d.mts.map +0 -1
- package/dist/index-CEU_Zsb9.d.mts.map +0 -1
- package/dist/index-Cro-818i.d.mts.map +0 -1
- package/dist/preview-engine/chunk-4FY4TNST.mjs +0 -1
- package/dist/preview-engine/chunk-7LDSMOO3.mjs +0 -1
- package/dist/preview-engine/chunk-AGAZJZWI.mjs +0 -1
- package/dist/preview-engine/chunk-BXPM5SJ3.mjs +0 -1
- package/dist/preview-engine/chunk-CIVJXFWH.mjs +0 -4
- package/dist/preview-engine/chunk-D73ZKPFN.mjs +0 -138
- package/dist/preview-engine/chunk-KOVN277Z.mjs +0 -1
- package/dist/preview-engine/chunk-M4QANUJI.mjs +0 -480
- package/dist/preview-engine/chunk-XF6DYP6B.mjs +0 -1974
- package/dist/preview-engine/chunk-XYGDTPO7.mjs +0 -39
- package/dist/preview-engine/chunk-YGKO4NIU.mjs +0 -1
- package/dist/preview-engine/renderers-2NGIILMI.mjs +0 -1
- package/dist/preview-engine/renderers-466Z77BH.mjs +0 -1
- package/dist/preview-engine/renderers-4KRENGZA.mjs +0 -1
- package/dist/preview-engine/renderers-4W52BQEU.mjs +0 -1
- package/dist/preview-engine/renderers-55PRAS7G.mjs +0 -1
- package/dist/preview-engine/renderers-5LLYINHW.mjs +0 -1
- package/dist/preview-engine/renderers-63N3Y2XO.mjs +0 -1
- package/dist/preview-engine/renderers-6ROVFDIN.mjs +0 -1
- package/dist/preview-engine/renderers-A4RVLPMG.mjs +0 -1
- package/dist/preview-engine/renderers-A53P4J6O.mjs +0 -1
- package/dist/preview-engine/renderers-AFJ3373L.mjs +0 -1
- package/dist/preview-engine/renderers-ATFWTA3U.mjs +0 -1
- package/dist/preview-engine/renderers-BPYJXHBU.mjs +0 -1
- package/dist/preview-engine/renderers-D3ZF7FXT.mjs +0 -1
- package/dist/preview-engine/renderers-D7YN6B4B.mjs +0 -1
- package/dist/preview-engine/renderers-DBLASKF5.mjs +0 -1
- package/dist/preview-engine/renderers-DC5ZYYHM.mjs +0 -1
- package/dist/preview-engine/renderers-J6ZEXW5L.mjs +0 -1
- package/dist/preview-engine/renderers-JV4MF46Q.mjs +0 -1
- package/dist/preview-engine/renderers-KQKH4ZIX.mjs +0 -1
- package/dist/preview-engine/renderers-MDHPQY6D.mjs +0 -1
- package/dist/preview-engine/renderers-MEITHN4N.mjs +0 -1
- package/dist/preview-engine/renderers-MN3HSBTJ.mjs +0 -1
- package/dist/preview-engine/renderers-NTG3QGNH.mjs +0 -1
- package/dist/preview-engine/renderers-OU4SFMB2.mjs +0 -1
- package/dist/preview-engine/renderers-P6TIBJIG.mjs +0 -1
- package/dist/preview-engine/renderers-POJWQ7L3.mjs +0 -1
- package/dist/preview-engine/renderers-RJ7S6VHD.mjs +0 -1
- package/dist/preview-engine/renderers-RJJAJZYN.mjs +0 -1
- package/dist/preview-engine/renderers-UEQ733VK.mjs +0 -1
- package/dist/preview-engine/renderers-ULO2AW2U.mjs +0 -1
- package/dist/preview-engine/renderers-UPVHGHCK.mjs +0 -1
- package/dist/preview-engine/renderers-UZHSNNIM.mjs +0 -1
- package/dist/preview-engine/renderers-V5KWZL2C.mjs +0 -1
- package/dist/preview-engine/renderers-WL372W36.mjs +0 -228
- package/dist/preview-engine/renderers-YMXKYOHQ.mjs +0 -1
- package/dist/preview-engine/renderers-YWDAZ2NZ.mjs +0 -1
- package/dist/program-Bc860ko5.mjs.map +0 -1
- package/dist/renderer--Ymc_4XJ.mjs +0 -5
- package/dist/renderer-B-OdV-eq.mjs +0 -5
- package/dist/renderer-B65fwoA2.mjs +0 -5
- package/dist/renderer-B92Ahkcv.mjs +0 -5
- package/dist/renderer-B9z2AK31.mjs +0 -5
- package/dist/renderer-BIF3Dg3Z.mjs +0 -5
- package/dist/renderer-BJUVaIAT.mjs +0 -5
- package/dist/renderer-BKRDMbI-.mjs +0 -5
- package/dist/renderer-BSwhyVWa.mjs +0 -5
- package/dist/renderer-BUqSZn2X.mjs +0 -5
- package/dist/renderer-BVKOQarx.d.mts.map +0 -1
- package/dist/renderer-BbmvjqK9.mjs +0 -3
- package/dist/renderer-BhsrlGKp.mjs.map +0 -1
- package/dist/renderer-Bpe4k_x6.mjs +0 -5
- package/dist/renderer-Bx14Wnxl.mjs.map +0 -1
- package/dist/renderer-C1NjG0CJ.mjs +0 -5
- package/dist/renderer-C7Puyst9.mjs +0 -5
- package/dist/renderer-CGA_7320.mjs +0 -5
- package/dist/renderer-CLnFkXO7.mjs +0 -5
- package/dist/renderer-CMQIT1Kh.mjs +0 -5
- package/dist/renderer-CQ1rwjIh.mjs +0 -5
- package/dist/renderer-CT8h0boY.mjs +0 -5
- package/dist/renderer-Cb0lszt3.mjs +0 -5
- package/dist/renderer-Ci7oLye9.mjs +0 -5
- package/dist/renderer-CjqXB3CZ.mjs +0 -5
- package/dist/renderer-CqTV04zQ.mjs +0 -5
- package/dist/renderer-CtWeRtHK.mjs +0 -5
- package/dist/renderer-CzolnwCo.mjs +0 -5
- package/dist/renderer-D6qhcx_C.mjs +0 -5
- package/dist/renderer-DDfEf0jt.mjs +0 -5
- package/dist/renderer-DDpa8ztp.mjs +0 -5
- package/dist/renderer-DbQBqzmx.mjs +0 -5
- package/dist/renderer-DfUcwMKa.mjs +0 -5
- package/dist/renderer-DgIjNANM.mjs +0 -6
- package/dist/renderer-Dsh6Tgu0.mjs +0 -3
- package/dist/renderer-DuIwR9GT.mjs +0 -5
- package/dist/renderer-Dv4u2c14.mjs +0 -5
- package/dist/renderer-HDj9Zb-O.mjs.map +0 -1
- package/dist/renderer-IE1yu3lZ.mjs +0 -5
- package/dist/renderer-PY_wnEN0.mjs +0 -5
- package/dist/renderer-TKZCA0B9.mjs.map +0 -1
- package/dist/renderer-gv24VyzO.mjs +0 -5
- package/dist/renderer-nN6lPZf9.mjs +0 -5
- package/dist/src-BYp6r-cS.mjs.map +0 -1
- package/dist/src-Bnr8DUC--BRDqRF6I.mjs.map +0 -1
|
@@ -1,10 +1,125 @@
|
|
|
1
|
-
import { createWriteStream, realpathSync } from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
1
|
+
import { createWriteStream, existsSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
|
|
2
|
+
import path, { join } from "node:path";
|
|
3
3
|
import fs$1 from "node:fs/promises";
|
|
4
4
|
import { execFileSync } from "node:child_process";
|
|
5
5
|
import { Readable } from "node:stream";
|
|
6
6
|
import { pipeline } from "node:stream/promises";
|
|
7
7
|
|
|
8
|
+
//#region src/cli/config.ts
|
|
9
|
+
/**
|
|
10
|
+
* `framefields.json` at the project root: where installed components live,
|
|
11
|
+
* which fonts `framefields add` / `framefields fonts add` installed, and the
|
|
12
|
+
* project's named renders.
|
|
13
|
+
*
|
|
14
|
+
* ```json
|
|
15
|
+
* {
|
|
16
|
+
* "components": "src/components",
|
|
17
|
+
* "renders": {
|
|
18
|
+
* "film": {
|
|
19
|
+
* "title": "Launch film",
|
|
20
|
+
* "entry": "src/film.ts",
|
|
21
|
+
* "export": "buildFilm",
|
|
22
|
+
* "workers": "auto"
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* A named render is what `framefields render film --cloud`, `framefields
|
|
29
|
+
* check film`, `renderCloud({ render: "film" })` and the dashboard's New
|
|
30
|
+
* render dialog pick, so nobody chooses files and exports by hand.
|
|
31
|
+
*/
|
|
32
|
+
const CONFIG_FILE = "framefields.json";
|
|
33
|
+
const RENDER_NAME = /^[A-Za-z0-9][\w.-]{0,63}$/;
|
|
34
|
+
const IDENTIFIER = /^[A-Za-z_$][\w$]*$/;
|
|
35
|
+
const QUALITIES = [
|
|
36
|
+
"very_low",
|
|
37
|
+
"low",
|
|
38
|
+
"high",
|
|
39
|
+
"very_high"
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* The project's config, or the default it would get: `src/components` when
|
|
43
|
+
* there is a `src`. `saved` is whether the file records a components folder.
|
|
44
|
+
*/
|
|
45
|
+
function readConfig(cwd) {
|
|
46
|
+
const file = join(cwd, CONFIG_FILE);
|
|
47
|
+
const fallback = existsSync(join(cwd, "src")) ? "src/components" : "components";
|
|
48
|
+
if (!existsSync(file)) return {
|
|
49
|
+
config: { components: fallback },
|
|
50
|
+
saved: false
|
|
51
|
+
};
|
|
52
|
+
let raw;
|
|
53
|
+
try {
|
|
54
|
+
raw = JSON.parse(readFileSync(file, "utf8"));
|
|
55
|
+
} catch (err) {
|
|
56
|
+
throw new Error(`${CONFIG_FILE} is not valid JSON: ${err.message}`);
|
|
57
|
+
}
|
|
58
|
+
if (!isRecord(raw)) throw new Error(`${CONFIG_FILE} must be a JSON object`);
|
|
59
|
+
const { components, fonts, renders } = raw;
|
|
60
|
+
if (components !== void 0 && typeof components !== "string") throw new Error(`${CONFIG_FILE}: "components" must be a directory path`);
|
|
61
|
+
if (fonts !== void 0 && (!isRecord(fonts) || Object.values(fonts).some((v) => typeof v !== "string"))) throw new Error(`${CONFIG_FILE}: "fonts" must map roles to font file paths, e.g. { "emoji": "assets/fonts/NotoColorEmoji.ttf" }`);
|
|
62
|
+
return {
|
|
63
|
+
config: {
|
|
64
|
+
...raw,
|
|
65
|
+
components: components ?? fallback,
|
|
66
|
+
...renders !== void 0 && { renders: parseRenders(renders) }
|
|
67
|
+
},
|
|
68
|
+
saved: components !== void 0
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function writeConfig(cwd, config) {
|
|
72
|
+
writeFileSync(join(cwd, CONFIG_FILE), `${JSON.stringify(config, null, " ")}\n`);
|
|
73
|
+
}
|
|
74
|
+
/** Validates the `renders` map; errors name the render and field at fault. */
|
|
75
|
+
function parseRenders(value) {
|
|
76
|
+
if (!isRecord(value)) throw new Error(`${CONFIG_FILE}: "renders" must map names to renders, e.g. { "film": { "entry": "src/film.ts" } }`);
|
|
77
|
+
const out = {};
|
|
78
|
+
for (const [name, spec] of Object.entries(value)) {
|
|
79
|
+
const fail = (message) => {
|
|
80
|
+
throw new Error(`${CONFIG_FILE}: renders.${name} ${message}`);
|
|
81
|
+
};
|
|
82
|
+
if (!RENDER_NAME.test(name)) fail("has an invalid name: use letters, digits, -, _ and . (at most 64)");
|
|
83
|
+
if (!isRecord(spec)) fail("must be an object with an entry");
|
|
84
|
+
const s = spec;
|
|
85
|
+
if (!isRelativePath(s.entry)) fail("needs \"entry\": the module path inside the project, e.g. \"src/film.ts\"");
|
|
86
|
+
if (s.export !== void 0 && !(typeof s.export === "string" && IDENTIFIER.test(s.export))) fail("\"export\" must be a JavaScript identifier");
|
|
87
|
+
for (const key of [
|
|
88
|
+
"title",
|
|
89
|
+
"description",
|
|
90
|
+
"select"
|
|
91
|
+
]) if (s[key] !== void 0 && typeof s[key] !== "string") fail(`"${key}" must be a string`);
|
|
92
|
+
if (s.workers !== void 0 && s.workers !== "auto" && !isCount(s.workers)) fail("\"workers\" must be \"auto\" or a positive whole number");
|
|
93
|
+
if (s.maxWorkers !== void 0 && !isCount(s.maxWorkers)) fail("\"maxWorkers\" must be a positive whole number");
|
|
94
|
+
if (s.codec !== void 0 && s.codec !== "h264" && s.codec !== "vp9") fail("\"codec\" must be \"h264\" or \"vp9\"");
|
|
95
|
+
if (s.quality !== void 0 && !QUALITIES.includes(s.quality)) fail(`"quality" must be one of ${QUALITIES.join(", ")}`);
|
|
96
|
+
if (s.output !== void 0 && typeof s.output !== "string") fail("\"output\" must be a file path");
|
|
97
|
+
out[name] = s;
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The named render `name` of the project at `cwd`, or undefined when there
|
|
103
|
+
* is no render by that name (an entry path, say).
|
|
104
|
+
*/
|
|
105
|
+
function findRender(cwd, name) {
|
|
106
|
+
const spec = readConfig(cwd).config.renders?.[name];
|
|
107
|
+
return spec && {
|
|
108
|
+
...spec,
|
|
109
|
+
name
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function isRecord(value) {
|
|
113
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
114
|
+
}
|
|
115
|
+
function isCount(value) {
|
|
116
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 1;
|
|
117
|
+
}
|
|
118
|
+
function isRelativePath(value) {
|
|
119
|
+
return typeof value === "string" && value.length > 0 && !value.startsWith("/") && !value.split(/[/\\]/).includes("..");
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
//#endregion
|
|
8
123
|
//#region src/cloud/git-source.ts
|
|
9
124
|
/**
|
|
10
125
|
* Where a cloud render gets the project from: the git repo the working
|
|
@@ -86,13 +201,16 @@ function toHttps(url) {
|
|
|
86
201
|
* import { renderCloud } from "framefields/cloud";
|
|
87
202
|
*
|
|
88
203
|
* const result = await renderCloud({
|
|
89
|
-
*
|
|
90
|
-
* workers: "auto", // split a long film across GPUs; 1 (default) renders on one
|
|
204
|
+
* render: "film", // a render named in framefields.json
|
|
91
205
|
* outputPath: "output/film.mp4",
|
|
92
206
|
* onProgress: (s) => console.log(s.status, s.progress.frames),
|
|
93
207
|
* });
|
|
94
208
|
* ```
|
|
95
209
|
*
|
|
210
|
+
* Without a framefields.json, name the module instead: `entry: "src/film.ts"`
|
|
211
|
+
* (and `export`, `workers`, …). Options passed here override the named
|
|
212
|
+
* render's.
|
|
213
|
+
*
|
|
96
214
|
* `workers: "auto"` probes the film on one worker first, then splits it into
|
|
97
215
|
* as many chunks as stay efficient: short films stay on one worker, long ones
|
|
98
216
|
* spread out up to `maxWorkers`. `dryRun: true` returns that plan with the
|
|
@@ -119,28 +237,31 @@ const DONE = new Set([
|
|
|
119
237
|
async function renderCloud(options) {
|
|
120
238
|
const api = cloudClient(options);
|
|
121
239
|
const cwd = options.cwd ?? process.cwd();
|
|
240
|
+
const o = withNamedRender(cwd, options);
|
|
122
241
|
const resolved = options.source ? {
|
|
123
242
|
source: options.source,
|
|
124
|
-
entry:
|
|
243
|
+
entry: o.entry,
|
|
125
244
|
warnings: []
|
|
126
|
-
} : resolveGitSource(cwd,
|
|
245
|
+
} : resolveGitSource(cwd, o.entry);
|
|
127
246
|
const warn = options.onWarning ?? ((m) => process.stderr.write(`framefields: ${m}\n`));
|
|
128
247
|
for (const w of resolved.warnings) warn(w);
|
|
129
248
|
let status = await api.start({
|
|
130
249
|
source: resolved.source,
|
|
131
250
|
target: {
|
|
132
251
|
entry: resolved.entry,
|
|
133
|
-
export:
|
|
134
|
-
...
|
|
135
|
-
...
|
|
252
|
+
export: o.export ?? "buildFilm",
|
|
253
|
+
...o.args !== void 0 && { args: o.args },
|
|
254
|
+
...o.select && { select: [o.select] }
|
|
136
255
|
},
|
|
137
256
|
render: {
|
|
138
|
-
codec:
|
|
139
|
-
...
|
|
257
|
+
codec: o.codec ?? "h264",
|
|
258
|
+
...o.quality && { quality: o.quality }
|
|
140
259
|
},
|
|
141
|
-
workers:
|
|
142
|
-
...
|
|
143
|
-
dry_run: options.dryRun ?? false
|
|
260
|
+
workers: o.workers ?? 1,
|
|
261
|
+
...o.maxWorkers && { max_workers: o.maxWorkers },
|
|
262
|
+
dry_run: options.dryRun ?? false,
|
|
263
|
+
...o.name && { name: o.name },
|
|
264
|
+
...o.title && { title: o.title }
|
|
144
265
|
});
|
|
145
266
|
options.onProgress?.(status);
|
|
146
267
|
try {
|
|
@@ -163,6 +284,38 @@ async function renderCloud(options) {
|
|
|
163
284
|
}
|
|
164
285
|
return status;
|
|
165
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* The options with a named render's fields filled in where the caller left
|
|
289
|
+
* them out, plus the name and title the dashboard shows.
|
|
290
|
+
*/
|
|
291
|
+
function withNamedRender(cwd, options) {
|
|
292
|
+
if (!options.render) {
|
|
293
|
+
if (!options.entry) throw new CloudRenderError("Name a render from framefields.json (render) or a module (entry).", "invalid_request");
|
|
294
|
+
return {
|
|
295
|
+
...options,
|
|
296
|
+
entry: options.entry
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
const spec = findRender(cwd, options.render);
|
|
300
|
+
if (!spec) {
|
|
301
|
+
const names = Object.keys(readConfig(cwd).config.renders ?? {});
|
|
302
|
+
throw new CloudRenderError(names.length ? `No render named "${options.render}" in ${CONFIG_FILE}. Renders: ${names.join(", ")}.` : `No render named "${options.render}": ${CONFIG_FILE} has no "renders".`, "render_not_found");
|
|
303
|
+
}
|
|
304
|
+
const defined = Object.fromEntries(Object.entries(options).filter(([, v]) => v !== void 0));
|
|
305
|
+
return {
|
|
306
|
+
entry: spec.entry,
|
|
307
|
+
export: spec.export,
|
|
308
|
+
args: spec.args,
|
|
309
|
+
select: spec.select,
|
|
310
|
+
workers: spec.workers,
|
|
311
|
+
maxWorkers: spec.maxWorkers,
|
|
312
|
+
codec: spec.codec,
|
|
313
|
+
quality: spec.quality,
|
|
314
|
+
...defined,
|
|
315
|
+
name: spec.name,
|
|
316
|
+
title: spec.title ?? spec.name
|
|
317
|
+
};
|
|
318
|
+
}
|
|
166
319
|
/** The API calls behind `renderCloud`, for callers who track renders themselves. */
|
|
167
320
|
function cloudClient(options) {
|
|
168
321
|
const key = options.apiKey ?? process.env.FRAMEFIELDS_API_KEY;
|
|
@@ -229,5 +382,5 @@ function sleep(ms, signal) {
|
|
|
229
382
|
}
|
|
230
383
|
|
|
231
384
|
//#endregion
|
|
232
|
-
export {
|
|
233
|
-
//# sourceMappingURL=cloud-
|
|
385
|
+
export { withNamedRender as a, CONFIG_FILE as c, writeConfig as d, renderCloud as i, findRender as l, FRAMEFIELDS_API_URL as n, resolveGitSource as o, cloudClient as r, toHttps as s, CloudRenderError as t, readConfig as u };
|
|
386
|
+
//# sourceMappingURL=cloud-COid1Ipa.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-COid1Ipa.mjs","names":["fs","resolve"],"sources":["../src/cli/config.ts","../src/cloud/git-source.ts","../src/cloud/index.ts"],"sourcesContent":["/**\n * `framefields.json` at the project root: where installed components live,\n * which fonts `framefields add` / `framefields fonts add` installed, and the\n * project's named renders.\n *\n * ```json\n * {\n * \"components\": \"src/components\",\n * \"renders\": {\n * \"film\": {\n * \"title\": \"Launch film\",\n * \"entry\": \"src/film.ts\",\n * \"export\": \"buildFilm\",\n * \"workers\": \"auto\"\n * }\n * }\n * }\n * ```\n *\n * A named render is what `framefields render film --cloud`, `framefields\n * check film`, `renderCloud({ render: \"film\" })` and the dashboard's New\n * render dialog pick, so nobody chooses files and exports by hand.\n */\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport const CONFIG_FILE = \"framefields.json\";\n\n/** One renderable piece of the project: an export of a module, with its defaults. */\nexport interface RenderSpec {\n\t/** The module that builds the composition, relative to the project root. */\n\tentry: string;\n\t/** A Composition, or a function returning one. Default `buildFilm`. */\n\texport?: string;\n\t/** Shown in the dashboard and `framefields renders`. Default: the name. */\n\ttitle?: string;\n\tdescription?: string;\n\t/** Passed to the export when it is a function. */\n\targs?: unknown;\n\t/** When the export returns several compositions, the one to render. */\n\tselect?: string;\n\t/** Cloud workers: 1, a number, or \"auto\" to split long films. Default 1. */\n\tworkers?: number | \"auto\";\n\tmaxWorkers?: number;\n\tcodec?: \"h264\" | \"vp9\";\n\tquality?: \"very_low\" | \"low\" | \"high\" | \"very_high\";\n\t/** Where `framefields render <name> --cloud` writes the video. */\n\toutput?: string;\n}\n\nexport interface ProjectConfig {\n\t/** Components directory, relative to the project root. */\n\tcomponents: string;\n\t/**\n\t * Font files by role (`emoji`), relative to the project root. A role\n\t * set here counts as installed: point it at your own font to use that.\n\t */\n\tfonts?: Partial<Record<string, string>>;\n\t/** Named renders, by name (letters, digits, `-`, `_`, `.`). */\n\trenders?: Record<string, RenderSpec>;\n}\n\nexport const RENDER_NAME = /^[A-Za-z0-9][\\w.-]{0,63}$/;\nconst IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\nconst QUALITIES = [\"very_low\", \"low\", \"high\", \"very_high\"];\n\n/**\n * The project's config, or the default it would get: `src/components` when\n * there is a `src`. `saved` is whether the file records a components folder.\n */\nexport function readConfig(cwd: string): {\n\tconfig: ProjectConfig;\n\tsaved: boolean;\n} {\n\tconst file = join(cwd, CONFIG_FILE);\n\tconst fallback = existsSync(join(cwd, \"src\"))\n\t\t? \"src/components\"\n\t\t: \"components\";\n\tif (!existsSync(file))\n\t\treturn { config: { components: fallback }, saved: false };\n\tlet raw: unknown;\n\ttry {\n\t\traw = JSON.parse(readFileSync(file, \"utf8\"));\n\t} catch (err) {\n\t\tthrow new Error(\n\t\t\t`${CONFIG_FILE} is not valid JSON: ${(err as Error).message}`,\n\t\t);\n\t}\n\tif (!isRecord(raw)) throw new Error(`${CONFIG_FILE} must be a JSON object`);\n\tconst { components, fonts, renders } = raw;\n\tif (components !== undefined && typeof components !== \"string\")\n\t\tthrow new Error(`${CONFIG_FILE}: \"components\" must be a directory path`);\n\tif (\n\t\tfonts !== undefined &&\n\t\t(!isRecord(fonts) ||\n\t\t\tObject.values(fonts).some((v) => typeof v !== \"string\"))\n\t)\n\t\tthrow new Error(\n\t\t\t`${CONFIG_FILE}: \"fonts\" must map roles to font file paths, e.g. { \"emoji\": \"assets/fonts/NotoColorEmoji.ttf\" }`,\n\t\t);\n\t// Other keys (a `$schema`, say) survive a rewrite.\n\tconst config = {\n\t\t...raw,\n\t\tcomponents: components ?? fallback,\n\t\t...(renders !== undefined && { renders: parseRenders(renders) }),\n\t} as ProjectConfig;\n\treturn { config, saved: components !== undefined };\n}\n\nexport function writeConfig(cwd: string, config: ProjectConfig): void {\n\twriteFileSync(\n\t\tjoin(cwd, CONFIG_FILE),\n\t\t`${JSON.stringify(config, null, \"\\t\")}\\n`,\n\t);\n}\n\n/** Validates the `renders` map; errors name the render and field at fault. */\nexport function parseRenders(value: unknown): Record<string, RenderSpec> {\n\tif (!isRecord(value))\n\t\tthrow new Error(\n\t\t\t`${CONFIG_FILE}: \"renders\" must map names to renders, e.g. { \"film\": { \"entry\": \"src/film.ts\" } }`,\n\t\t);\n\tconst out: Record<string, RenderSpec> = {};\n\tfor (const [name, spec] of Object.entries(value)) {\n\t\tconst fail = (message: string) => {\n\t\t\tthrow new Error(`${CONFIG_FILE}: renders.${name} ${message}`);\n\t\t};\n\t\tif (!RENDER_NAME.test(name))\n\t\t\tfail(\"has an invalid name: use letters, digits, -, _ and . (at most 64)\");\n\t\tif (!isRecord(spec)) fail(\"must be an object with an entry\");\n\t\tconst s = spec as Record<string, unknown>;\n\t\tif (!isRelativePath(s.entry))\n\t\t\tfail(\n\t\t\t\t'needs \"entry\": the module path inside the project, e.g. \"src/film.ts\"',\n\t\t\t);\n\t\tif (\n\t\t\ts.export !== undefined &&\n\t\t\t!(typeof s.export === \"string\" && IDENTIFIER.test(s.export))\n\t\t)\n\t\t\tfail('\"export\" must be a JavaScript identifier');\n\t\tfor (const key of [\"title\", \"description\", \"select\"] as const)\n\t\t\tif (s[key] !== undefined && typeof s[key] !== \"string\")\n\t\t\t\tfail(`\"${key}\" must be a string`);\n\t\tif (s.workers !== undefined && s.workers !== \"auto\" && !isCount(s.workers))\n\t\t\tfail('\"workers\" must be \"auto\" or a positive whole number');\n\t\tif (s.maxWorkers !== undefined && !isCount(s.maxWorkers))\n\t\t\tfail('\"maxWorkers\" must be a positive whole number');\n\t\tif (s.codec !== undefined && s.codec !== \"h264\" && s.codec !== \"vp9\")\n\t\t\tfail('\"codec\" must be \"h264\" or \"vp9\"');\n\t\tif (s.quality !== undefined && !QUALITIES.includes(s.quality as string))\n\t\t\tfail(`\"quality\" must be one of ${QUALITIES.join(\", \")}`);\n\t\tif (s.output !== undefined && typeof s.output !== \"string\")\n\t\t\tfail('\"output\" must be a file path');\n\t\tout[name] = s as unknown as RenderSpec;\n\t}\n\treturn out;\n}\n\n/**\n * The named render `name` of the project at `cwd`, or undefined when there\n * is no render by that name (an entry path, say).\n */\nexport function findRender(\n\tcwd: string,\n\tname: string,\n): (RenderSpec & { name: string }) | undefined {\n\tconst spec = readConfig(cwd).config.renders?.[name];\n\treturn spec && { ...spec, name };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isCount(value: unknown): boolean {\n\treturn typeof value === \"number\" && Number.isInteger(value) && value >= 1;\n}\n\nfunction isRelativePath(value: unknown): boolean {\n\treturn (\n\t\ttypeof value === \"string\" &&\n\t\tvalue.length > 0 &&\n\t\t!value.startsWith(\"/\") &&\n\t\t!value.split(/[/\\\\]/).includes(\"..\")\n\t);\n}\n","/**\n * Where a cloud render gets the project from: the git repo the working\n * directory is in, at the commit checked out now. Cloud workers fetch from\n * the remote, so that commit has to be pushed; uncommitted changes are not\n * rendered.\n */\nimport { execFileSync } from \"node:child_process\";\nimport { realpathSync } from \"node:fs\";\nimport path from \"node:path\";\n\nexport interface CloudSource {\n\trepo: string;\n\tref?: string;\n\tcommit?: string;\n\t/** The project's folder inside the repo (monorepos), `.` at the root. */\n\tworkdir?: string;\n}\n\nexport interface ResolvedSource {\n\tsource: CloudSource;\n\t/** The entry relative to `source.workdir`, as the worker loads it. */\n\tentry: string;\n\t/** Things that render differently than the user may expect (uncommitted changes). */\n\twarnings: string[];\n}\n\n/** Reads repo, branch, commit and folder from git, and checks the commit is pushed. */\nexport function resolveGitSource(cwd: string, entry: string): ResolvedSource {\n\tconst git = (...args: string[]) =>\n\t\texecFileSync(\"git\", args, {\n\t\t\tcwd,\n\t\t\tencoding: \"utf8\",\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t}).trim();\n\tlet root: string;\n\ttry {\n\t\troot = git(\"rev-parse\", \"--show-toplevel\");\n\t} catch {\n\t\tthrow new Error(\n\t\t\t`${cwd} is not in a git repository. Cloud renders fetch the project from git: commit it and push it to a remote first.`,\n\t\t);\n\t}\n\t// git reports the root with symlinks resolved (macOS /var → /private/var).\n\tconst workdir =\n\t\tpath\n\t\t\t.relative(realpathSync(root), realpathSync(cwd))\n\t\t\t.split(path.sep)\n\t\t\t.join(\"/\") || \".\";\n\tconst relEntry = path\n\t\t.relative(cwd, path.resolve(cwd, entry))\n\t\t.split(path.sep)\n\t\t.join(\"/\");\n\tif (relEntry.startsWith(\"../\") || path.isAbsolute(relEntry))\n\t\tthrow new Error(\n\t\t\t`${entry} is outside ${cwd}; run from the project folder that contains it.`,\n\t\t);\n\n\tconst branch = git(\"rev-parse\", \"--abbrev-ref\", \"HEAD\");\n\tconst commit = git(\"rev-parse\", \"HEAD\");\n\tconst remoteName = upstreamRemote(git, branch) ?? \"origin\";\n\tlet remoteUrl: string;\n\ttry {\n\t\tremoteUrl = git(\"remote\", \"get-url\", remoteName);\n\t} catch {\n\t\tthrow new Error(\n\t\t\t`The repository has no \"${remoteName}\" remote. Push the project to a git host first.`,\n\t\t);\n\t}\n\tconst pushed = git(\"branch\", \"-r\", \"--contains\", commit);\n\tif (!pushed)\n\t\tthrow new Error(\n\t\t\t`Commit ${commit.slice(0, 7)} is not on ${remoteName}. Push it first (\\`git push\\`): cloud workers fetch the project from the remote.`,\n\t\t);\n\tconst dirty = git(\"status\", \"--porcelain\", \"--untracked-files=no\", \"--\", \".\");\n\treturn {\n\t\tsource: {\n\t\t\trepo: toHttps(remoteUrl),\n\t\t\t...(branch !== \"HEAD\" && { ref: branch }),\n\t\t\tcommit,\n\t\t\tworkdir,\n\t\t},\n\t\tentry: relEntry,\n\t\twarnings: dirty\n\t\t\t? [\n\t\t\t\t\t`Uncommitted changes are not rendered: the cloud renders commit ${commit.slice(0, 7)}.`,\n\t\t\t\t]\n\t\t\t: [],\n\t};\n}\n\nfunction upstreamRemote(\n\tgit: (...args: string[]) => string,\n\tbranch: string,\n): string | undefined {\n\tif (branch === \"HEAD\") return undefined;\n\ttry {\n\t\treturn git(\"config\", `branch.${branch}.remote`) || undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/** `git@github.com:acme/films.git` → `https://github.com/acme/films.git`; credentials dropped. */\nexport function toHttps(url: string): string {\n\tconst scp = /^[\\w.-]+@([^:/]+):(.+)$/.exec(url);\n\tif (scp) return `https://${scp[1]}/${scp[2]}`;\n\tconst parsed = URL.canParse(url) ? new URL(url) : undefined;\n\tif (parsed && (parsed.protocol === \"ssh:\" || parsed.protocol === \"git:\"))\n\t\treturn `https://${parsed.hostname}${parsed.pathname}`;\n\tif (parsed?.protocol === \"https:\" || parsed?.protocol === \"http:\") {\n\t\tparsed.username = \"\";\n\t\tparsed.password = \"\";\n\t\treturn parsed.toString();\n\t}\n\treturn url;\n}\n","/**\n * Cloud renders on api.framefields.dev: the project renders from git on\n * framefields' GPU workers, billed to the account that owns the API key.\n *\n * ```ts\n * import { renderCloud } from \"framefields/cloud\";\n *\n * const result = await renderCloud({\n * render: \"film\", // a render named in framefields.json\n * outputPath: \"output/film.mp4\",\n * onProgress: (s) => console.log(s.status, s.progress.frames),\n * });\n * ```\n *\n * Without a framefields.json, name the module instead: `entry: \"src/film.ts\"`\n * (and `export`, `workers`, …). Options passed here override the named\n * render's.\n *\n * `workers: \"auto\"` probes the film on one worker first, then splits it into\n * as many chunks as stay efficient: short films stay on one worker, long ones\n * spread out up to `maxWorkers`. `dryRun: true` returns that plan with the\n * estimated cost and renders nothing. Aborting `signal` cancels the render;\n * GPU time already used is charged.\n */\nimport { createWriteStream } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport type { ReadableStream as WebReadableStream } from \"node:stream/web\";\nimport { CONFIG_FILE, findRender, readConfig } from \"../cli/config.js\";\nimport { type CloudSource, resolveGitSource } from \"./git-source.js\";\n\nexport { type CloudSource, resolveGitSource, toHttps } from \"./git-source.js\";\n\nexport const FRAMEFIELDS_API_URL = \"https://api.framefields.dev\";\n\nexport interface CloudRenderOptions {\n\t/** A render named in `cwd`'s framefields.json; its fields are the defaults here. */\n\trender?: string;\n\t/** The module that builds the composition, relative to `cwd`. Required without `render`. */\n\tentry?: string;\n\t/** Its export: a Composition, or a function returning one. Default `buildFilm`. */\n\texport?: string;\n\t/** Passed to the export when it is a function. */\n\targs?: unknown;\n\t/** When the export returns several compositions, the one to render. */\n\tselect?: string;\n\t/** 1 (default) renders on one worker; a number or \"auto\" splits the film. */\n\tworkers?: number | \"auto\";\n\t/** Upper bound for \"auto\" (the API caps it too). */\n\tmaxWorkers?: number;\n\tcodec?: \"h264\" | \"vp9\";\n\tquality?: string;\n\t/** Probe and plan only: returns the plan and estimated cost, renders nothing. */\n\tdryRun?: boolean;\n\t/** Download the finished video here. */\n\toutputPath?: string;\n\t/** Project folder. Default `process.cwd()`. */\n\tcwd?: string;\n\t/** Instead of reading repo, branch and commit from git. */\n\tsource?: CloudSource;\n\t/** Default `process.env.FRAMEFIELDS_API_KEY`. */\n\tapiKey?: string;\n\t/** Default `process.env.FRAMEFIELDS_API_URL`, else https://api.framefields.dev. */\n\tapiUrl?: string;\n\t/** Called with every status poll. */\n\tonProgress?: (status: CloudRenderStatus) => void;\n\t/** Called for each warning (uncommitted changes). Default: stderr. */\n\tonWarning?: (message: string) => void;\n\t/** Aborting cancels the cloud render. */\n\tsignal?: AbortSignal;\n\t/** Status poll interval, ms. Default 3000. */\n\tpollMs?: number;\n}\n\nexport type CloudRenderPhase =\n\t| \"probing\"\n\t| \"holding\"\n\t| \"rendering\"\n\t| \"stitching\"\n\t| \"planned\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\nexport interface CloudRenderPlan {\n\tworkers: number;\n\t/** Render time of the whole film on one GPU, seconds. */\n\tworkSec: number;\n\t/** Expected wall time with this plan, seconds. */\n\tetaSec: number;\n\tchunks: { start: number; end: number; workSec: number }[];\n}\n\nexport interface CloudRenderStatus {\n\tid: string;\n\tstatus: CloudRenderPhase;\n\tworkers: number;\n\tplan?: CloudRenderPlan;\n\tprogress: {\n\t\tframes: number;\n\t\ttotalFrames: number | null;\n\t\tetaSec: number | null;\n\t};\n\t/** Charged so far (final once the render ended), USD. */\n\tcostUsd: number;\n\tgpuSeconds: number;\n\t/** The planned render's estimated charge, USD. */\n\testimateUsd?: number;\n\t/** The commit rendered. */\n\tsha?: string;\n\toutput?: { url: string; bytes?: number };\n\terror?: { code: string; message: string };\n}\n\nexport interface CloudRenderResult extends CloudRenderStatus {\n\t/** Where the video was downloaded (`outputPath`). */\n\tfilePath?: string;\n}\n\n/** A cloud render that failed, was cancelled, or was refused by the API. */\nexport class CloudRenderError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly code: string,\n\t\treadonly status?: CloudRenderStatus,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"CloudRenderError\";\n\t}\n}\n\nconst DONE = new Set<CloudRenderPhase>([\n\t\"planned\",\n\t\"completed\",\n\t\"failed\",\n\t\"cancelled\",\n]);\n\n/** Starts a cloud render and waits for it; resolves when it completed (or was planned). */\nexport async function renderCloud(\n\toptions: CloudRenderOptions,\n): Promise<CloudRenderResult> {\n\tconst api = cloudClient(options);\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst o = withNamedRender(cwd, options);\n\tconst resolved = options.source\n\t\t? { source: options.source, entry: o.entry, warnings: [] }\n\t\t: resolveGitSource(cwd, o.entry);\n\tconst warn =\n\t\toptions.onWarning ??\n\t\t((m: string) => process.stderr.write(`framefields: ${m}\\n`));\n\tfor (const w of resolved.warnings) warn(w);\n\n\tlet status = await api.start({\n\t\tsource: resolved.source,\n\t\ttarget: {\n\t\t\tentry: resolved.entry,\n\t\t\texport: o.export ?? \"buildFilm\",\n\t\t\t...(o.args !== undefined && { args: o.args }),\n\t\t\t...(o.select && { select: [o.select] }),\n\t\t},\n\t\trender: {\n\t\t\tcodec: o.codec ?? \"h264\",\n\t\t\t...(o.quality && { quality: o.quality }),\n\t\t},\n\t\tworkers: o.workers ?? 1,\n\t\t...(o.maxWorkers && { max_workers: o.maxWorkers }),\n\t\tdry_run: options.dryRun ?? false,\n\t\t...(o.name && { name: o.name }),\n\t\t...(o.title && { title: o.title }),\n\t});\n\toptions.onProgress?.(status);\n\n\ttry {\n\t\twhile (!DONE.has(status.status)) {\n\t\t\tawait sleep(options.pollMs ?? 3000, options.signal);\n\t\t\tstatus = await api.status(status.id);\n\t\t\toptions.onProgress?.(status);\n\t\t}\n\t} catch (err) {\n\t\tif (options.signal?.aborted) {\n\t\t\tconst final = await api.cancel(status.id).catch(() => status);\n\t\t\tthrow new CloudRenderError(\n\t\t\t\t\"The cloud render was cancelled.\",\n\t\t\t\t\"cancelled\",\n\t\t\t\tfinal,\n\t\t\t);\n\t\t}\n\t\tthrow err;\n\t}\n\n\tif (status.status === \"failed\" || status.status === \"cancelled\")\n\t\tthrow new CloudRenderError(\n\t\t\tstatus.error\n\t\t\t\t? `Cloud render ${status.status}: ${status.error.message} (${status.error.code})`\n\t\t\t\t: `Cloud render ${status.status}.`,\n\t\t\tstatus.error?.code ?? status.status,\n\t\t\tstatus,\n\t\t);\n\tif (status.status === \"completed\" && options.outputPath && status.output) {\n\t\tawait download(status.output.url, options.outputPath, options.signal);\n\t\treturn { ...status, filePath: options.outputPath };\n\t}\n\treturn status;\n}\n\n/**\n * The options with a named render's fields filled in where the caller left\n * them out, plus the name and title the dashboard shows.\n */\nexport function withNamedRender(\n\tcwd: string,\n\toptions: CloudRenderOptions,\n): CloudRenderOptions & { entry: string; name?: string; title?: string } {\n\tif (!options.render) {\n\t\tif (!options.entry)\n\t\t\tthrow new CloudRenderError(\n\t\t\t\t\"Name a render from framefields.json (render) or a module (entry).\",\n\t\t\t\t\"invalid_request\",\n\t\t\t);\n\t\treturn { ...options, entry: options.entry };\n\t}\n\tconst spec = findRender(cwd, options.render);\n\tif (!spec) {\n\t\tconst names = Object.keys(readConfig(cwd).config.renders ?? {});\n\t\tthrow new CloudRenderError(\n\t\t\tnames.length\n\t\t\t\t? `No render named \"${options.render}\" in ${CONFIG_FILE}. Renders: ${names.join(\", \")}.`\n\t\t\t\t: `No render named \"${options.render}\": ${CONFIG_FILE} has no \"renders\".`,\n\t\t\t\"render_not_found\",\n\t\t);\n\t}\n\tconst defined = Object.fromEntries(\n\t\tObject.entries(options).filter(([, v]) => v !== undefined),\n\t) as CloudRenderOptions;\n\treturn {\n\t\tentry: spec.entry,\n\t\texport: spec.export,\n\t\targs: spec.args,\n\t\tselect: spec.select,\n\t\tworkers: spec.workers,\n\t\tmaxWorkers: spec.maxWorkers,\n\t\tcodec: spec.codec,\n\t\tquality: spec.quality,\n\t\t...defined,\n\t\tname: spec.name,\n\t\ttitle: spec.title ?? spec.name,\n\t} as CloudRenderOptions & { entry: string; name: string; title: string };\n}\n\n/** The API calls behind `renderCloud`, for callers who track renders themselves. */\nexport function cloudClient(\n\toptions: Pick<CloudRenderOptions, \"apiKey\" | \"apiUrl\">,\n) {\n\tconst key = options.apiKey ?? process.env.FRAMEFIELDS_API_KEY;\n\tif (!key)\n\t\tthrow new CloudRenderError(\n\t\t\t\"No API key. Set FRAMEFIELDS_API_KEY (keys at https://framefields.dev/dashboard/keys) or pass apiKey.\",\n\t\t\t\"invalid_api_key\",\n\t\t);\n\tconst base = (\n\t\toptions.apiUrl ??\n\t\tprocess.env.FRAMEFIELDS_API_URL ??\n\t\tFRAMEFIELDS_API_URL\n\t).replace(/\\/+$/, \"\");\n\tconst call = async (method: string, route: string, body?: unknown) => {\n\t\tconst res = await fetch(`${base}/v1/render${route}`, {\n\t\t\tmethod,\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${key}`,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t},\n\t\t\t...(body !== undefined && { body: JSON.stringify(body) }),\n\t\t});\n\t\tconst json = (await res.json().catch(() => ({}))) as ApiStatus & {\n\t\t\terror?: { type?: string; message?: string };\n\t\t};\n\t\tif (!res.ok)\n\t\t\tthrow new CloudRenderError(\n\t\t\t\tjson.error?.message ??\n\t\t\t\t\t`api.framefields.dev answered HTTP ${res.status}`,\n\t\t\t\tjson.error?.type ?? `http_${res.status}`,\n\t\t\t);\n\t\treturn fromApi(json);\n\t};\n\treturn {\n\t\tstart: (body: unknown) => call(\"POST\", \"\", body),\n\t\tstatus: (id: string) => call(\"GET\", `/${encodeURIComponent(id)}`),\n\t\tcancel: (id: string) => call(\"DELETE\", `/${encodeURIComponent(id)}`),\n\t};\n}\n\n/** The API's snake_case status. */\ninterface ApiStatus {\n\tid: string;\n\tstatus: CloudRenderPhase;\n\tworkers?: number;\n\tplan?: {\n\t\tworkers: number;\n\t\twork_sec: number;\n\t\teta_sec: number;\n\t\tchunks: CloudRenderPlan[\"chunks\"];\n\t};\n\tprogress?: {\n\t\tframes?: number;\n\t\ttotal_frames?: number | null;\n\t\teta_sec?: number | null;\n\t};\n\tcost_usd?: number;\n\tgpu_seconds?: number;\n\testimate_usd?: number;\n\tsha?: string;\n\toutput?: { url: string; bytes?: number };\n\terror?: { code: string; message: string };\n}\n\nfunction fromApi(s: ApiStatus): CloudRenderStatus {\n\treturn {\n\t\tid: s.id,\n\t\tstatus: s.status,\n\t\tworkers: s.workers ?? 1,\n\t\t...(s.plan && {\n\t\t\tplan: {\n\t\t\t\tworkers: s.plan.workers,\n\t\t\t\tworkSec: s.plan.work_sec,\n\t\t\t\tetaSec: s.plan.eta_sec,\n\t\t\t\tchunks: s.plan.chunks,\n\t\t\t},\n\t\t}),\n\t\tprogress: {\n\t\t\tframes: s.progress?.frames ?? 0,\n\t\t\ttotalFrames: s.progress?.total_frames ?? null,\n\t\t\tetaSec: s.progress?.eta_sec ?? null,\n\t\t},\n\t\tcostUsd: s.cost_usd ?? 0,\n\t\tgpuSeconds: s.gpu_seconds ?? 0,\n\t\t...(s.estimate_usd !== undefined && { estimateUsd: s.estimate_usd }),\n\t\t...(s.sha && { sha: s.sha }),\n\t\t...(s.output && { output: s.output }),\n\t\t...(s.error && { error: s.error }),\n\t};\n}\n\nasync function download(url: string, file: string, signal?: AbortSignal) {\n\tconst res = await fetch(url, { signal });\n\tif (!res.ok || !res.body)\n\t\tthrow new CloudRenderError(\n\t\t\t`Downloading the render failed: HTTP ${res.status}`,\n\t\t\t\"download_failed\",\n\t\t);\n\tawait fs.mkdir(path.dirname(path.resolve(file)), { recursive: true });\n\tawait pipeline(\n\t\tReadable.fromWeb(res.body as WebReadableStream),\n\t\tcreateWriteStream(file),\n\t);\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal?.aborted) return reject(signal.reason);\n\t\tconst timer = setTimeout(resolve, ms);\n\t\tsignal?.addEventListener(\n\t\t\t\"abort\",\n\t\t\t() => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\treject(signal.reason);\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t});\n}\n"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../chunk-W71TSjRM.mjs";
|
|
2
2
|
import "../index-COYNQ_mf.mjs";
|
|
3
|
-
import "../index-
|
|
4
|
-
import "../index-
|
|
5
|
-
import "../renderer-
|
|
6
|
-
import "../renderer-
|
|
7
|
-
import { $a as withDefaults, $i as
|
|
8
|
-
import "../index-
|
|
9
|
-
import "../audio-
|
|
10
|
-
import "../index-
|
|
11
|
-
import "../index-
|
|
12
|
-
import "../index-
|
|
3
|
+
import "../index-CTv9ZieD.mjs";
|
|
4
|
+
import "../index-Fliv2Z-w.mjs";
|
|
5
|
+
import "../renderer-B1U6YRRV.mjs";
|
|
6
|
+
import "../renderer-CcmxR6Fy.mjs";
|
|
7
|
+
import { $a as withDefaults, $i as evaluateGlyphExpression, $n as Anchor, $r as ResolvedMotion, Aa as springAt, Ai as bandEdges, Ar as GlyphBox, Ba as targetPoint, Bi as contrastRatio, Br as MeasureOptions, Ca as resolveTarget, Ci as anchorPoint, Cr as ExtrudedTextOptions, Da as scaleFrames, Di as audioLevelsSchema, Dr as FrameValue, Ea as safeArea, Ei as ascending, Er as FrameContextLike, Fa as staggerOffsets, Fi as boundsOf, Fr as Host, Ga as toPathData, Gi as dist, Gr as MotionPresetName, Ha as themeFrames, Hi as defineComponent, Hr as Metrics, Ia as staggerRanks, Ii as boxPath, Ir as KeyBook, Ja as transparent, Ji as elevate, Jr as Placement, Ka as toSeconds, Ki as drawOnKeys, Kr as MotionSize, La as stepExpression, Li as catmullRom, Lr as LayerStyleConfig, Ma as springSettleFrames, Mi as beats, Mr as GlyphUnit, Na as springTrack, Ni as bind, Nr as GrainOptions, Oa as scheduleExpression, Oi as bakeFunction, Or as FrameWindow, Pa as squigglePath, Pi as boilKeys, Pr as HandOptions, Qa as withAlpha, Qi as evaluateEase, Qn as AnalyzeOptions, Qr as Rect, Ra as supersede, Ri as chain, Rr as MOTION_PRESETS, Sa as resolveMotion, Si as analyzeChannels, Sr as ElevationLevel, Ta as round, Ti as arrowPaths, Tr as FontRole, Ua as themes, Ui as defineMeta, Ur as MotionOptions, Va as textLayout, Vi as cover, Vr as MediaOptions, Wa as toFrames, Wi as defineTheme, Wr as MotionPreset, Xa as valueAt, Xi as ellipsePath, Xr as PropsOf, Ya as typingFrames, Yi as elevationStyle, Yr as ProjectDefaults, Za as windowExpression, Zi as enterAnimation, Zn as targetSchema, Zr as PulseOptions, _a as pulseKeys, _i as UNIT_INDEX, _r as Cues, aa as hashString, ai as Spring, ar as AudioLevels, ba as rendererChars, bi as WordRange, br as EaseFn, ca as isLight, ci as Target, cr as BaseProps, da as linePath, di as TextLayout, dr as CanvasSize, ea as exitAnimation, ei as ResolvedTarget, eo as within, er as Animatable, fa as lineShift, fi as Theme, fr as ComponentDefaults, ga as parseColor, gi as TrackedObjectLike, gr as Cue, ha as offsetCues, hi as Track, hr as ComponentMeta, i as analyzeAudio, ia as hashRng, ii as SafeInsets, ir as ArrowGeometry, ja as springKeys, ji as basePropsSchema, jr as GlyphProps, ka as smoothRelease, ki as bakeSamples, kr as GlyphAnimator, la as last, li as TargetContext, lr as BuildContext, ma as mix, mi as ThemeName, mr as ComponentExtras, n as bindComponent, na as frameSpan, ni as Rng, no as wordRanges, nr as ArcPath, oa as holdFirstKeys, oi as StaggerOrder, or as BakeOptions, pa as luminance, pi as ThemeInput, pr as ComponentDefinition, qa as transformPathData, qi as ease$1, qr as ParticleOptions, r as z, ra as glyphAnimator, ri as SAFE_INSETS, rr as ArrowCurve, sa as inkOn, si as SyntaxKind, sr as BakedKey, t as ComponentNode, ta as findRange, ti as Rgba, to as wobblePoints, tr as AnimatableMethods, ua as lerp2, ui as TargetNode, ur as BuildResult, va as quantize, vi as UnitSchedule, vr as CuesOf, wa as rng, wi as arcPath, wr as FontNeed, xa as resampleBands, xi as after, xr as Elevation, ya as rangeRects, yi as Vec2, yr as CutoutOptions, za as surfaceFill, zi as constantExpression, zr as MeasureFn } from "../index-BNClElng.mjs";
|
|
8
|
+
import "../index-Drk6HC2k.mjs";
|
|
9
|
+
import "../audio-afTBdB3U.mjs";
|
|
10
|
+
import "../index-WwuuX8ZJ.mjs";
|
|
11
|
+
import "../index-DQa7mhzq.mjs";
|
|
12
|
+
import "../index-CAuNuvIg.mjs";
|
|
13
13
|
import "../index-gOVtTm-P.mjs";
|
|
14
14
|
import "../index-CdCrae-I.mjs";
|
|
15
15
|
export { AnalyzeOptions, Anchor, Animatable, AnimatableMethods, ArcPath, ArrowCurve, ArrowGeometry, AudioLevels, BakeOptions, BakedKey, BaseProps, BuildContext, BuildResult, CanvasSize, ComponentDefaults, ComponentDefinition, ComponentExtras, ComponentMeta, ComponentNode, Cue, Cues, CuesOf, CutoutOptions, EaseFn, Elevation, ElevationLevel, ExtrudedTextOptions, FontNeed, FontRole, FrameContextLike, FrameValue, FrameWindow, GlyphAnimator, GlyphBox, GlyphProps, GlyphUnit, GrainOptions, HandOptions, Host, KeyBook, LayerStyleConfig, MOTION_PRESETS, MeasureFn, MeasureOptions, MediaOptions, Metrics, MotionOptions, MotionPreset, MotionPresetName, MotionSize, ParticleOptions, Placement, ProjectDefaults, PropsOf, PulseOptions, Rect, ResolvedMotion, ResolvedTarget, Rgba, Rng, SAFE_INSETS, SafeInsets, Spring, StaggerOrder, SyntaxKind, Target, TargetContext, TargetNode, TextLayout, Theme, ThemeInput, ThemeName, Track, TrackedObjectLike, UNIT_INDEX, UnitSchedule, Vec2, WordRange, after, analyzeAudio, analyzeChannels, anchorPoint, arcPath, arrowPaths, ascending, audioLevelsSchema, bakeFunction, bakeSamples, bandEdges, basePropsSchema, beats, bind, bindComponent, boilKeys, boundsOf, boxPath, catmullRom, chain, constantExpression, contrastRatio, cover, defineComponent, defineMeta, defineTheme, dist, drawOnKeys, ease$1 as ease, elevate, elevationStyle, ellipsePath, enterAnimation, evaluateEase, evaluateGlyphExpression, exitAnimation, findRange, frameSpan, glyphAnimator, hashRng, hashString, holdFirstKeys, inkOn, isLight, last, lerp2, linePath, lineShift, luminance, mix, offsetCues, parseColor, pulseKeys, quantize, rangeRects, rendererChars, resampleBands, resolveMotion, resolveTarget, rng, round, safeArea, scaleFrames, scheduleExpression, smoothRelease, springAt, springKeys, springSettleFrames, springTrack, squigglePath, staggerOffsets, staggerRanks, stepExpression, supersede, surfaceFill, targetPoint, targetSchema, textLayout, themeFrames, themes, toFrames, toPathData, toSeconds, transformPathData, transparent, typingFrames, valueAt, windowExpression, withAlpha, withDefaults, within, wobblePoints, wordRanges, z };
|
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
import "../chunk-W71TSjRM.mjs";
|
|
2
|
-
import { $ as glyphAnimator, $t as wordRanges, A as boilKeys, At as squigglePath, B as defineTheme, Bt as themes, C as audioLevelsSchema, Ct as scaleFrames, D as basePropsSchema, Dt as springKeys, E as bandEdges, Et as springAt, F as constantExpression, Ft as surfaceFill, G as elevationStyle, Gt as transparent, H as drawOnKeys, Ht as toPathData, I as contrastRatio, It as targetPoint, J as evaluateEase, Jt as windowExpression, K as ellipsePath, Kt as typingFrames, L as cover, Lt as targetSchema, M as boxPath, Mt as staggerRanks, N as catmullRom, Nt as stepExpression, O as beats, Ot as springSettleFrames, P as chain, Pt as supersede, Q as frameSpan, Qt as wobblePoints, R as defineComponent, Rt as textLayout, S as ascending, St as safeArea, T as bakeSamples, Tt as smoothRelease, U as ease, Ut as toSeconds, V as dist, Vt as toFrames, W as elevate, Wt as transformPathData, X as exitAnimation, Xt as withDefaults, Y as evaluateGlyphExpression, Yt as withAlpha, Z as findRange, Zt as within, _ as after, _t as resampleBands, at as last, b as arcPath, bt as rng, ct as lineShift, d as analyzeAudio, dt as offsetCues, et as hashRng, f as KeyBook, ft as parseColor, g as UNIT_INDEX, gt as rendererChars, h as Track, ht as rangeRects, it as isLight, j as boundsOf, jt as staggerOffsets, k as bind, kt as springTrack, l as bindComponent, lt as luminance, m as SAFE_INSETS, mt as quantize, nt as holdFirstKeys, ot as lerp2, p as MOTION_PRESETS, pt as pulseKeys, q as enterAnimation, qt as valueAt, rt as inkOn, st as linePath, tt as hashString, u as z, ut as mix, v as analyzeChannels, vt as resolveMotion, w as bakeFunction, wt as scheduleExpression, x as arrowPaths, xt as round, y as anchorPoint, yt as resolveTarget, z as defineMeta, zt as themeFrames } from "../src-
|
|
3
|
-
import "../dist-
|
|
4
|
-
import "../renderers-CP8CFWDs-
|
|
2
|
+
import { $ as glyphAnimator, $t as wordRanges, A as boilKeys, At as squigglePath, B as defineTheme, Bt as themes, C as audioLevelsSchema, Ct as scaleFrames, D as basePropsSchema, Dt as springKeys, E as bandEdges, Et as springAt, F as constantExpression, Ft as surfaceFill, G as elevationStyle, Gt as transparent, H as drawOnKeys, Ht as toPathData, I as contrastRatio, It as targetPoint, J as evaluateEase, Jt as windowExpression, K as ellipsePath, Kt as typingFrames, L as cover, Lt as targetSchema, M as boxPath, Mt as staggerRanks, N as catmullRom, Nt as stepExpression, O as beats, Ot as springSettleFrames, P as chain, Pt as supersede, Q as frameSpan, Qt as wobblePoints, R as defineComponent, Rt as textLayout, S as ascending, St as safeArea, T as bakeSamples, Tt as smoothRelease, U as ease, Ut as toSeconds, V as dist, Vt as toFrames, W as elevate, Wt as transformPathData, X as exitAnimation, Xt as withDefaults, Y as evaluateGlyphExpression, Yt as withAlpha, Z as findRange, Zt as within, _ as after, _t as resampleBands, at as last, b as arcPath, bt as rng, ct as lineShift, d as analyzeAudio, dt as offsetCues, et as hashRng, f as KeyBook, ft as parseColor, g as UNIT_INDEX, gt as rendererChars, h as Track, ht as rangeRects, it as isLight, j as boundsOf, jt as staggerOffsets, k as bind, kt as springTrack, l as bindComponent, lt as luminance, m as SAFE_INSETS, mt as quantize, nt as holdFirstKeys, ot as lerp2, p as MOTION_PRESETS, pt as pulseKeys, q as enterAnimation, qt as valueAt, rt as inkOn, st as linePath, tt as hashString, u as z, ut as mix, v as analyzeChannels, vt as resolveMotion, w as bakeFunction, wt as scheduleExpression, x as arrowPaths, xt as round, y as anchorPoint, yt as resolveTarget, z as defineMeta, zt as themeFrames } from "../src-D7M8VTzv.mjs";
|
|
3
|
+
import "../dist-B-OPY7Cs.mjs";
|
|
4
|
+
import "../renderers-CP8CFWDs-DWRjjeUg.mjs";
|
|
5
5
|
import "../signals-BfJ1aqpT.mjs";
|
|
6
|
-
import "../renderer-
|
|
7
|
-
import "../renderer-
|
|
8
|
-
import "../renderer-
|
|
9
|
-
import "../renderer-
|
|
10
|
-
import "../renderer-
|
|
11
|
-
import "../renderer-
|
|
12
|
-
import "../renderer-
|
|
13
|
-
import "../renderer-
|
|
6
|
+
import "../renderer-BC_Nse6h.mjs";
|
|
7
|
+
import "../renderer-Dak_wVh9.mjs";
|
|
8
|
+
import "../renderer-oBgCEqaM.mjs";
|
|
9
|
+
import "../renderer-BwV-o_1b.mjs";
|
|
10
|
+
import "../renderer-IAffbHXx.mjs";
|
|
11
|
+
import "../renderer-ByFPmHBC.mjs";
|
|
12
|
+
import "../renderer-smP1F57W.mjs";
|
|
13
|
+
import "../renderer-DLaUT6JZ.mjs";
|
|
14
14
|
import "../renderer-B6rZUBwE.mjs";
|
|
15
|
-
import "../renderer-
|
|
16
|
-
import "../renderer-
|
|
17
|
-
import "../renderer-
|
|
18
|
-
import "../renderer-
|
|
19
|
-
import "../renderer-
|
|
20
|
-
import "../renderer-
|
|
21
|
-
import "../renderer-
|
|
22
|
-
import "../renderer-
|
|
23
|
-
import "../renderer-
|
|
24
|
-
import "../renderer-
|
|
25
|
-
import "../renderer-
|
|
26
|
-
import "../renderer-
|
|
27
|
-
import "../renderer-
|
|
28
|
-
import "../renderer-
|
|
29
|
-
import "../renderer-
|
|
30
|
-
import "../renderer-
|
|
31
|
-
import "../renderer-
|
|
32
|
-
import "../renderer-
|
|
33
|
-
import "../renderer-
|
|
34
|
-
import "../renderer-
|
|
35
|
-
import "../renderer-
|
|
36
|
-
import "../renderer-
|
|
37
|
-
import "../renderer-
|
|
38
|
-
import "../renderer-
|
|
39
|
-
import "../renderer-
|
|
40
|
-
import "../renderer-
|
|
41
|
-
import "../renderer-
|
|
42
|
-
import "../renderer-
|
|
43
|
-
import "../renderer-
|
|
44
|
-
import "../renderer-
|
|
45
|
-
import "../renderer-
|
|
46
|
-
import "../renderer-
|
|
47
|
-
import "../renderer-
|
|
15
|
+
import "../renderer-Bf7Z7WT5.mjs";
|
|
16
|
+
import "../renderer-CN-mCIoI.mjs";
|
|
17
|
+
import "../renderer-b0H3oDae.mjs";
|
|
18
|
+
import "../renderer-DEoerd-j.mjs";
|
|
19
|
+
import "../renderer-DP9ScNM6.mjs";
|
|
20
|
+
import "../renderer-CNpq7rL-.mjs";
|
|
21
|
+
import "../renderer-FvvywNvv.mjs";
|
|
22
|
+
import "../renderer-O4y02xkD.mjs";
|
|
23
|
+
import "../renderer-snjhPaP-.mjs";
|
|
24
|
+
import "../renderer-BXGuCnCJ.mjs";
|
|
25
|
+
import "../renderer-BvRM3OZ6.mjs";
|
|
26
|
+
import "../renderer-t1sXDiqm.mjs";
|
|
27
|
+
import "../renderer-Bxiiar50.mjs";
|
|
28
|
+
import "../renderer-rKw5_EjG.mjs";
|
|
29
|
+
import "../renderer-Dj54y3h3.mjs";
|
|
30
|
+
import "../renderer-CMCmljb0.mjs";
|
|
31
|
+
import "../renderer-LrAldCWN.mjs";
|
|
32
|
+
import "../renderer-C_gR2H3R.mjs";
|
|
33
|
+
import "../renderer-CGpi8CDT.mjs";
|
|
34
|
+
import "../renderer-DKFaVaRJ.mjs";
|
|
35
|
+
import "../renderer-CtpEzVBn.mjs";
|
|
36
|
+
import "../renderer-sMFJtt_H.mjs";
|
|
37
|
+
import "../renderer-uA0UCxjA.mjs";
|
|
38
|
+
import "../renderer-C2kFIZ4r.mjs";
|
|
39
|
+
import "../renderer-BzTj_CeK.mjs";
|
|
40
|
+
import "../renderer-DL3o_lG1.mjs";
|
|
41
|
+
import "../renderer-qVJdxbXB.mjs";
|
|
42
|
+
import "../renderer-DX60Kr20.mjs";
|
|
43
|
+
import "../renderer-Dy1xQOTu.mjs";
|
|
44
|
+
import "../renderer-HXw4cJZx.mjs";
|
|
45
|
+
import "../renderer-PnnkUWm-.mjs";
|
|
46
|
+
import "../renderer-DZIxduEt.mjs";
|
|
47
|
+
import "../renderer-DCMoBppL.mjs";
|
|
48
48
|
|
|
49
49
|
export { KeyBook, MOTION_PRESETS, SAFE_INSETS, Track, UNIT_INDEX, after, analyzeAudio, analyzeChannels, anchorPoint, arcPath, arrowPaths, ascending, audioLevelsSchema, bakeFunction, bakeSamples, bandEdges, basePropsSchema, beats, bind, bindComponent, boilKeys, boundsOf, boxPath, catmullRom, chain, constantExpression, contrastRatio, cover, defineComponent, defineMeta, defineTheme, dist, drawOnKeys, ease, elevate, elevationStyle, ellipsePath, enterAnimation, evaluateEase, evaluateGlyphExpression, exitAnimation, findRange, frameSpan, glyphAnimator, hashRng, hashString, holdFirstKeys, inkOn, isLight, last, lerp2, linePath, lineShift, luminance, mix, offsetCues, parseColor, pulseKeys, quantize, rangeRects, rendererChars, resampleBands, resolveMotion, resolveTarget, rng, round, safeArea, scaleFrames, scheduleExpression, smoothRelease, springAt, springKeys, springSettleFrames, springTrack, squigglePath, staggerOffsets, staggerRanks, stepExpression, supersede, surfaceFill, targetPoint, targetSchema, textLayout, themeFrames, themes, toFrames, toPathData, toSeconds, transformPathData, transparent, typingFrames, valueAt, windowExpression, withAlpha, withDefaults, within, wobblePoints, wordRanges, z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as registerVisionModel, M as varint, O as readVarint, P as VISION_MODELS, _ as fields, b as lengthDelimited, g as encoder, h as createDefaultSessionProvider, j as strings, k as sessionCompute, m as concat, u as VisionModelStore, v as firstString, y as imageToTensor } from "./src-
|
|
1
|
+
import { F as registerVisionModel, M as varint, O as readVarint, P as VISION_MODELS, _ as fields, b as lengthDelimited, g as encoder, h as createDefaultSessionProvider, j as strings, k as sessionCompute, m as concat, u as VisionModelStore, v as firstString, y as imageToTensor } from "./src-BU6vm9sP-DFJ3phW0.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { Tokenizer } from "@huggingface/tokenizers";
|
|
4
4
|
|
|
@@ -1431,4 +1431,4 @@ function seedLogits(logits) {
|
|
|
1431
1431
|
|
|
1432
1432
|
//#endregion
|
|
1433
1433
|
export { sam3Run as C, validateSam3Prompts as E, sam3Revision as S, validateSam2Prompts as T, sam3EncoderFiles as _, SAM_MODELS as a, sam3Position as b, Sam3MemoryBank as c, assertSamLicenseAccepted as d, decodeSam2Mask as f, sam3DenseDecoder as g, sam2Tokens as h, SAM_LICENSE_TERMS_URL as i, Sam3TextSelector as l, sam2Revision as m, SAM3_ENCODER as n, Sam2MemoryBank as o, ensureSamModelsRegistered as p, SAM_LICENSE as r, Sam2Tracker as s, SAM2_EXPORTS as t, Sam3Tracker as u, sam3Floats as v, sam3SupportGraphs as w, sam3Precision as x, sam3Mask as y };
|
|
1434
|
-
//# sourceMappingURL=dist-
|
|
1434
|
+
//# sourceMappingURL=dist-2_lT3Dwc.mjs.map
|