framefields 2.10.0-canary.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/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-YpBRdI7r.mjs → audio-DHLoNcxD.mjs} +31 -5
- package/dist/audio-DHLoNcxD.mjs.map +1 -0
- package/dist/audio-afTBdB3U.d.mts +62 -0
- package/dist/audio-afTBdB3U.d.mts.map +1 -0
- package/dist/cli/check-worker.mjs +43 -43
- 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 +8 -8
- package/dist/components/index.mjs +42 -42
- package/dist/{dist-C4Vxgm0Q.mjs → dist-B-OPY7Cs.mjs} +373 -13
- package/dist/dist-B-OPY7Cs.mjs.map +1 -0
- package/dist/{dist-Cu1fZ9Uy.mjs → dist-BSqeChht.mjs} +2 -2
- package/dist/{dist-Cu1fZ9Uy.mjs.map → dist-BSqeChht.mjs.map} +1 -1
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +34 -34
- package/dist/{effects-DiWYouOK.mjs → effects-C8CL9cOq.mjs} +2 -2
- package/dist/{effects-DiWYouOK.mjs.map → effects-C8CL9cOq.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-BnV-GB1o.mjs → fonts-BQrDjnpV.mjs} +2 -2
- package/dist/{fonts-BnV-GB1o.mjs.map → fonts-BQrDjnpV.mjs.map} +1 -1
- package/dist/{gpu-Bw35AMwY.mjs → gpu-DHa-3Dou.mjs} +2 -2
- package/dist/{gpu-Bw35AMwY.mjs.map → gpu-DHa-3Dou.mjs.map} +1 -1
- package/dist/{index-Dyt4yS-x.d.mts → index-BNClElng.d.mts} +467 -465
- package/dist/index-BNClElng.d.mts.map +1 -0
- package/dist/{index-Bbv0VtxJ.d.mts → index-CAuNuvIg.d.mts} +3 -3
- package/dist/{index-Bbv0VtxJ.d.mts.map → index-CAuNuvIg.d.mts.map} +1 -1
- package/dist/index-COYNQ_mf.d.mts.map +1 -1
- package/dist/{index-CDQrdZ0J.d.mts → index-CTv9ZieD.d.mts} +2 -2
- package/dist/{index-CDQrdZ0J.d.mts.map → index-CTv9ZieD.d.mts.map} +1 -1
- package/dist/{index-h7m8QgcL.d.mts → index-Drk6HC2k.d.mts} +2 -2
- package/dist/{index-h7m8QgcL.d.mts.map → index-Drk6HC2k.d.mts.map} +1 -1
- package/dist/{index-B7WqFBZA.d.mts → index-Fliv2Z-w.d.mts} +22 -2
- package/dist/index-Fliv2Z-w.d.mts.map +1 -0
- package/dist/index.d.mts +9 -9
- package/dist/index.mjs +49 -49
- package/dist/preview/index.d.mts +1 -1
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-BW7ilNWk.mjs → preview-BUtt481A.mjs} +2 -2
- package/dist/{preview-BW7ilNWk.mjs.map → preview-BUtt481A.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-OD4CSXZL.mjs → chunk-35XSD4QM.mjs} +1 -1
- package/dist/preview-engine/{chunk-V5HU6NIW.mjs → chunk-3DOIE4DV.mjs} +1 -1
- package/dist/preview-engine/{chunk-L2NTIWW5.mjs → chunk-3IT7LHWR.mjs} +1 -1
- package/dist/preview-engine/{chunk-6LBFSGCI.mjs → chunk-3MLGWUSK.mjs} +1 -1
- package/dist/preview-engine/{chunk-57WXGYEV.mjs → chunk-3QJ5GRBH.mjs} +1 -1
- package/dist/preview-engine/{chunk-6O55UROD.mjs → chunk-3QTHW2CD.mjs} +1 -1
- package/dist/preview-engine/{chunk-HO7FXISJ.mjs → chunk-4JNIEQS2.mjs} +1 -1
- package/dist/preview-engine/{chunk-JFBSNFN6.mjs → chunk-6B3NOY5W.mjs} +1 -1
- package/dist/preview-engine/{chunk-HPQDCC4S.mjs → chunk-6O7UDVNL.mjs} +1 -1
- package/dist/preview-engine/{chunk-T6L3DO3H.mjs → chunk-74J4DJQA.mjs} +1 -1
- package/dist/preview-engine/{chunk-JSKEVYKD.mjs → chunk-AKVRG7UU.mjs} +1 -1
- package/dist/preview-engine/{chunk-4BWBX2HM.mjs → chunk-CRBOK3JT.mjs} +1 -1
- package/dist/preview-engine/{chunk-JIPMF42Z.mjs → chunk-D6LM7DTJ.mjs} +2 -2
- package/dist/preview-engine/{chunk-HGWT3RVQ.mjs → chunk-E7BKWHOT.mjs} +1 -1
- package/dist/preview-engine/{chunk-4FACCLLE.mjs → chunk-EWDJMJO5.mjs} +1 -1
- package/dist/preview-engine/{chunk-6BE3IL7L.mjs → chunk-EYE3GNL5.mjs} +1 -1
- package/dist/preview-engine/{chunk-7A3BNAWY.mjs → chunk-EYKN2VET.mjs} +1 -1
- package/dist/preview-engine/chunk-FJTURGJV.mjs +107 -0
- package/dist/preview-engine/{chunk-5Y7SO37Q.mjs → chunk-G4ZTSLZU.mjs} +1 -1
- package/dist/preview-engine/{chunk-C2GX5L5S.mjs → chunk-GAMAKN5L.mjs} +1 -1
- package/dist/preview-engine/{chunk-VVY4PG5E.mjs → chunk-GXFYRMJZ.mjs} +25 -25
- package/dist/preview-engine/{chunk-RAW2I27S.mjs → chunk-HTAHYSCW.mjs} +1 -1
- package/dist/preview-engine/{chunk-NTTEGJD6.mjs → chunk-ICWD36H6.mjs} +1 -1
- package/dist/preview-engine/{chunk-K3TJJXVC.mjs → chunk-JAUMCOOJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-4DSOZ5QG.mjs → chunk-KBCZKIIQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-WVIDORLK.mjs → chunk-KDCM7S3S.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZGEKF34E.mjs → chunk-KIPXBOYG.mjs} +10 -10
- package/dist/preview-engine/{chunk-HKYENGC5.mjs → chunk-M4QVCQ3O.mjs} +1 -1
- package/dist/preview-engine/{chunk-4N25ZU43.mjs → chunk-NJO2BIJX.mjs} +1 -1
- package/dist/preview-engine/{chunk-6SLCECHG.mjs → chunk-NTSALWFF.mjs} +1 -1
- package/dist/preview-engine/{chunk-7HW7GA76.mjs → chunk-O75BFM4S.mjs} +1 -1
- package/dist/preview-engine/{chunk-YXCTOCQ2.mjs → chunk-ONHY4KNY.mjs} +1 -1
- package/dist/preview-engine/{chunk-XCQ7KN4S.mjs → chunk-QPT2Y2GZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZA5LWHRM.mjs → chunk-QXLFTCLC.mjs} +1 -1
- package/dist/preview-engine/{chunk-FW2UDDUT.mjs → chunk-RGKS6YIA.mjs} +1 -1
- package/dist/preview-engine/{chunk-VRJBOFFY.mjs → chunk-RN7J5TRU.mjs} +1 -1
- package/dist/preview-engine/{chunk-LBP7E7SJ.mjs → chunk-RVCLMO5Q.mjs} +1 -1
- package/dist/preview-engine/{chunk-K3C6GUQD.mjs → chunk-SE2C623Z.mjs} +1 -1
- package/dist/preview-engine/{chunk-LTR5FXGU.mjs → chunk-SFHWP65D.mjs} +1 -1
- package/dist/preview-engine/{chunk-ML7WO27M.mjs → chunk-TKXOSEIJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-4TPXZNVR.mjs → chunk-UKZVUYB6.mjs} +1 -1
- package/dist/preview-engine/{chunk-IVAA5X5H.mjs → chunk-UVEDFIPN.mjs} +1 -1
- package/dist/preview-engine/{chunk-FH72KTSM.mjs → chunk-VUO4K52B.mjs} +1 -1
- package/dist/preview-engine/{chunk-OOUDE4XL.mjs → chunk-W4XR6F5G.mjs} +1 -1
- package/dist/preview-engine/{chunk-RMHL4XZ3.mjs → chunk-WPYWCWWL.mjs} +1 -1
- package/dist/preview-engine/{chunk-CHXR5XZK.mjs → chunk-YAPGJZPI.mjs} +1 -1
- package/dist/preview-engine/{chunk-4RLKHFV6.mjs → chunk-YJ4DSRDY.mjs} +1 -1
- package/dist/preview-engine/{chunk-Y2SWIWIU.mjs → chunk-YOJKIMU5.mjs} +1 -1
- package/dist/preview-engine/{chunk-YS3ROS25.mjs → chunk-ZHNEZZ6A.mjs} +1 -1
- package/dist/preview-engine/{chunk-EKEKYGXE.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/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/{renderers-36P2TKPC.mjs → renderers-3FZVDYRQ.mjs} +1 -1
- package/dist/preview-engine/renderers-3KEBYOOF.mjs +1 -0
- package/dist/preview-engine/{renderers-JZYHX4XI.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-CMBI4JOC.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-6RRWA33X.mjs → renderers-AIZRIW2R.mjs} +1 -1
- package/dist/preview-engine/{renderers-UBIFSF37.mjs → renderers-BDI2BDBA.mjs} +1 -1
- package/dist/preview-engine/renderers-BDXCO6NR.mjs +1 -0
- package/dist/preview-engine/{renderers-OPRXVIGT.mjs → renderers-BUZ67FNZ.mjs} +1 -1
- package/dist/preview-engine/renderers-DMTGKURQ.mjs +1 -0
- package/dist/preview-engine/{renderers-AUYCQNSS.mjs → renderers-ECXMT5BD.mjs} +1 -1
- package/dist/preview-engine/{renderers-4WFRXGMR.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-CQIPHCIW.mjs → renderers-FQISHQEN.mjs} +1 -1
- package/dist/preview-engine/{renderers-YJ4PJEPG.mjs → renderers-FXAVFNUN.mjs} +1 -1
- package/dist/preview-engine/{renderers-4SNAK77B.mjs → renderers-GITAVRYZ.mjs} +1 -1
- package/dist/preview-engine/renderers-GTKRV225.mjs +1 -0
- package/dist/preview-engine/{renderers-RQ3JZE3L.mjs → renderers-HG6JZIZO.mjs} +1 -1
- package/dist/preview-engine/{renderers-OZKPOUMW.mjs → renderers-HHWMIDN3.mjs} +1 -1
- package/dist/preview-engine/renderers-HI3SRJVD.mjs +1 -0
- package/dist/preview-engine/renderers-HXEDI4BD.mjs +1 -0
- package/dist/preview-engine/{renderers-LF6U4MR5.mjs → renderers-I2ZOUFRU.mjs} +1 -1
- package/dist/preview-engine/renderers-JHFD4LHZ.mjs +1 -0
- package/dist/preview-engine/renderers-KGVZUFHD.mjs +1 -0
- package/dist/preview-engine/{renderers-G2FL3IFD.mjs → renderers-KKULMOV4.mjs} +1 -1
- package/dist/preview-engine/{renderers-JALV3B3A.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-37Y5LR2S.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-6RYIPQ7W.mjs → renderers-MPFU74I3.mjs} +1 -1
- package/dist/preview-engine/{renderers-TKHQRERE.mjs → renderers-MW53LTMB.mjs} +1 -1
- package/dist/preview-engine/{renderers-Q5YCUPYE.mjs → renderers-PC2GOZDT.mjs} +1 -1
- package/dist/preview-engine/renderers-PREFONJG.mjs +1 -0
- package/dist/preview-engine/{renderers-WG756VF3.mjs → renderers-PSBTV2DO.mjs} +1 -1
- package/dist/preview-engine/{renderers-XZ3XDQIN.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-U4S577ON.mjs → renderers-RIPXT4AL.mjs} +1 -1
- package/dist/preview-engine/{renderers-ZQVKE5AO.mjs → renderers-SFVFAS3C.mjs} +1 -1
- package/dist/preview-engine/{renderers-5K3BSBI6.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-PGZDFDSC.mjs → renderers-U4IXWMD6.mjs} +1 -1
- package/dist/preview-engine/renderers-V5HM6PZ2.mjs +1 -0
- package/dist/preview-engine/{renderers-4MW4NW6O.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/{program-BUjUTdxq.mjs → program-Cvv_nb9T.mjs} +2 -2
- package/dist/{program-BUjUTdxq.mjs.map → program-Cvv_nb9T.mjs.map} +1 -1
- 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-B84T5I98.mjs → renderer-4uZGSmUD.mjs} +3 -3
- package/dist/{renderer-B84T5I98.mjs.map → renderer-4uZGSmUD.mjs.map} +1 -1
- package/dist/{renderer-Bo5GwErU.mjs → renderer-5fGj_tqN.mjs} +3 -3
- package/dist/{renderer-Bo5GwErU.mjs.map → renderer-5fGj_tqN.mjs.map} +1 -1
- package/dist/{renderer-D7DlNOVi.mjs → renderer-6g1ri445.mjs} +3 -3
- package/dist/{renderer-D7DlNOVi.mjs.map → renderer-6g1ri445.mjs.map} +1 -1
- package/dist/{renderer-H4CZt3Z5.mjs → renderer-B09I95bo.mjs} +2 -2
- package/dist/{renderer-tcypOFaB.d.mts → renderer-B1U6YRRV.d.mts} +2 -2
- package/dist/{renderer-tcypOFaB.d.mts.map → renderer-B1U6YRRV.d.mts.map} +1 -1
- package/dist/renderer-B4NFnaty.mjs +5 -0
- package/dist/renderer-B6g4ts0e.mjs +5 -0
- package/dist/{renderer-DBfx6QX1.mjs → renderer-BBjkX0Vt.mjs} +2 -2
- package/dist/{renderer-BdRwbLLV.mjs → renderer-BC_Nse6h.mjs} +3 -3
- package/dist/{renderer-BdRwbLLV.mjs.map → renderer-BC_Nse6h.mjs.map} +1 -1
- package/dist/renderer-BGoAr-tl.mjs +5 -0
- package/dist/{renderer-CWmlfdLb.mjs → renderer-BJEexai1.mjs} +3 -3
- package/dist/{renderer-CWmlfdLb.mjs.map → renderer-BJEexai1.mjs.map} +1 -1
- package/dist/renderer-BSOdBgdE.mjs +5 -0
- package/dist/{renderer-muB4slsV.mjs → renderer-BSsKlcHk.mjs} +3 -3
- package/dist/{renderer-muB4slsV.mjs.map → renderer-BSsKlcHk.mjs.map} +1 -1
- package/dist/{renderer-DlbSqOJR.mjs → renderer-BTd6tFcS.mjs} +3 -3
- package/dist/{renderer-DlbSqOJR.mjs.map → renderer-BTd6tFcS.mjs.map} +1 -1
- package/dist/renderer-BU6O0fpM.mjs +5 -0
- package/dist/{renderer-DtCmG-tT.mjs → renderer-BXGuCnCJ.mjs} +3 -3
- package/dist/{renderer-DtCmG-tT.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-jBKpX3Xg.mjs → renderer-Bf7Z7WT5.mjs} +2 -2
- package/dist/{renderer-jBKpX3Xg.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-kFx1_MmK.mjs → renderer-BvRM3OZ6.mjs} +2 -2
- package/dist/{renderer-kFx1_MmK.mjs.map → renderer-BvRM3OZ6.mjs.map} +1 -1
- package/dist/{renderer-DAfCcnCz.mjs → renderer-BwJ0nXXu.mjs} +3 -3
- package/dist/{renderer-DAfCcnCz.mjs.map → renderer-BwJ0nXXu.mjs.map} +1 -1
- package/dist/{renderer-CO1PwItH.mjs → renderer-BwV-o_1b.mjs} +2 -2
- package/dist/{renderer-CO1PwItH.mjs.map → renderer-BwV-o_1b.mjs.map} +1 -1
- package/dist/{renderer-Bm91Xv6l.mjs → renderer-Bxiiar50.mjs} +3 -3
- package/dist/{renderer-Bm91Xv6l.mjs.map → renderer-Bxiiar50.mjs.map} +1 -1
- package/dist/{renderer-CanNjQuL.mjs → renderer-ByFPmHBC.mjs} +2 -2
- package/dist/{renderer-CanNjQuL.mjs.map → renderer-ByFPmHBC.mjs.map} +1 -1
- package/dist/{renderer-JASAZUyY.mjs → renderer-BzTj_CeK.mjs} +3 -3
- package/dist/{renderer-JASAZUyY.mjs.map → renderer-BzTj_CeK.mjs.map} +1 -1
- package/dist/renderer-C225eCAo.mjs +5 -0
- package/dist/{renderer-7w9PZmWJ.mjs → renderer-C2kFIZ4r.mjs} +2 -2
- package/dist/{renderer-7w9PZmWJ.mjs.map → renderer-C2kFIZ4r.mjs.map} +1 -1
- package/dist/{renderer-vpsU_4XW.mjs → renderer-C3CGYjrC.mjs} +3 -3
- package/dist/{renderer-vpsU_4XW.mjs.map → renderer-C3CGYjrC.mjs.map} +1 -1
- package/dist/{renderer-BFmVDdVs.mjs → renderer-CGpi8CDT.mjs} +3 -3
- package/dist/{renderer-BFmVDdVs.mjs.map → renderer-CGpi8CDT.mjs.map} +1 -1
- package/dist/{renderer-FFLnACY-.mjs → renderer-CInMMs5x.mjs} +3 -3
- package/dist/{renderer-FFLnACY-.mjs.map → renderer-CInMMs5x.mjs.map} +1 -1
- package/dist/{renderer-CTSvHf6g.mjs → renderer-CLTRTtQ8.mjs} +3 -3
- package/dist/{renderer-CTSvHf6g.mjs.map → renderer-CLTRTtQ8.mjs.map} +1 -1
- package/dist/renderer-CLXdR4vz.mjs +5 -0
- package/dist/{renderer-7c0ecb-L.mjs → renderer-CMCmljb0.mjs} +2 -2
- package/dist/{renderer-7c0ecb-L.mjs.map → renderer-CMCmljb0.mjs.map} +1 -1
- package/dist/{renderer-BnN3JH9u.mjs → renderer-CN-mCIoI.mjs} +3 -3
- package/dist/{renderer-BnN3JH9u.mjs.map → renderer-CN-mCIoI.mjs.map} +1 -1
- package/dist/{renderer-Bif8bwCq.mjs → renderer-CNpq7rL-.mjs} +2 -2
- package/dist/{renderer-Bif8bwCq.mjs.map → renderer-CNpq7rL-.mjs.map} +1 -1
- package/dist/{renderer-Chfo4G9t.mjs → renderer-CZClDMgF.mjs} +3 -3
- package/dist/{renderer-Chfo4G9t.mjs.map → renderer-CZClDMgF.mjs.map} +1 -1
- package/dist/{renderer-BvRaVByi.mjs → renderer-C_gR2H3R.mjs} +2 -2
- package/dist/{renderer-BvRaVByi.mjs.map → renderer-C_gR2H3R.mjs.map} +1 -1
- package/dist/{renderer-DJuVX3c5.d.mts → renderer-CcmxR6Fy.d.mts} +2 -2
- package/dist/{renderer-DJuVX3c5.d.mts.map → renderer-CcmxR6Fy.d.mts.map} +1 -1
- package/dist/{renderer-BT4im6c0.mjs → renderer-CiHVnhUk.mjs} +3 -3
- package/dist/{renderer-BT4im6c0.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-BIToh0CA.mjs → renderer-CtpEzVBn.mjs} +2 -2
- package/dist/{renderer-BIToh0CA.mjs.map → renderer-CtpEzVBn.mjs.map} +1 -1
- package/dist/renderer-CxQdSp8I.mjs +5 -0
- package/dist/{renderer-BG_cnGbF.mjs → renderer-D3QPNBEj.mjs} +3 -3
- package/dist/{renderer-BG_cnGbF.mjs.map → renderer-D3QPNBEj.mjs.map} +1 -1
- package/dist/{renderer-CybBR8AL.mjs → renderer-D3YbHjRG.mjs} +69 -69
- package/dist/{renderer-CybBR8AL.mjs.map → renderer-D3YbHjRG.mjs.map} +1 -1
- package/dist/renderer-D4GMRtDd.mjs +6 -0
- package/dist/{renderer-w7mlMSC-.mjs → renderer-DEoerd-j.mjs} +3 -3
- package/dist/{renderer-w7mlMSC-.mjs.map → renderer-DEoerd-j.mjs.map} +1 -1
- package/dist/renderer-DEsGIvTZ.mjs +5 -0
- package/dist/{renderer-fWW0bsVl.mjs → renderer-DGXqspB9.mjs} +2 -2
- package/dist/renderer-DIaUQ0EP.mjs +5 -0
- package/dist/{renderer-Dd2XrdqA.mjs → renderer-DKFaVaRJ.mjs} +2 -2
- package/dist/{renderer-Dd2XrdqA.mjs.map → renderer-DKFaVaRJ.mjs.map} +1 -1
- package/dist/{renderer-DKptrHeL.mjs → renderer-DL3o_lG1.mjs} +3 -3
- package/dist/{renderer-DKptrHeL.mjs.map → renderer-DL3o_lG1.mjs.map} +1 -1
- package/dist/{renderer-DxkvDAA6.mjs → renderer-DLaUT6JZ.mjs} +2 -2
- package/dist/{renderer-DxkvDAA6.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-BeJoW-nG.mjs → renderer-DO1SZ5xY.mjs} +3 -3
- package/dist/{renderer-BeJoW-nG.mjs.map → renderer-DO1SZ5xY.mjs.map} +1 -1
- package/dist/{renderer-B3WHDQeB.mjs → renderer-DO_zXwMJ.mjs} +2 -2
- package/dist/{renderer-B3WHDQeB.mjs.map → renderer-DO_zXwMJ.mjs.map} +1 -1
- package/dist/renderer-DOgi2aF2.mjs +5 -0
- package/dist/{renderer-CtulmkqT.mjs → renderer-DP9ScNM6.mjs} +2 -2
- package/dist/{renderer-CtulmkqT.mjs.map → renderer-DP9ScNM6.mjs.map} +1 -1
- package/dist/{renderer-CLRrcT_3.mjs → renderer-DQJHjU0L.mjs} +3 -3
- package/dist/{renderer-CLRrcT_3.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-D7lApyWZ.mjs → renderer-DX60Kr20.mjs} +2 -2
- package/dist/{renderer-D7lApyWZ.mjs.map → renderer-DX60Kr20.mjs.map} +1 -1
- package/dist/{renderer-R2kLaNuR.mjs → renderer-DZIxduEt.mjs} +2 -2
- package/dist/{renderer-R2kLaNuR.mjs.map → renderer-DZIxduEt.mjs.map} +1 -1
- package/dist/{renderer-DMtzPqYo.mjs → renderer-DaLy1dFA.mjs} +5 -5
- package/dist/{renderer-DMtzPqYo.mjs.map → renderer-DaLy1dFA.mjs.map} +1 -1
- package/dist/{renderer-1KgHl_ls.mjs → renderer-DaY04IyU.mjs} +3 -3
- package/dist/{renderer-1KgHl_ls.mjs.map → renderer-DaY04IyU.mjs.map} +1 -1
- package/dist/renderer-Dhrj2bJz.mjs +5 -0
- package/dist/{renderer-Dih1rtT6.mjs → renderer-Dj54y3h3.mjs} +2 -2
- package/dist/{renderer-Dih1rtT6.mjs.map → renderer-Dj54y3h3.mjs.map} +1 -1
- package/dist/renderer-DoFUu1R4.mjs +5 -0
- package/dist/{renderer-DkAFIpzB.mjs → renderer-Dp9FQKVP.mjs} +3 -3
- package/dist/{renderer-DkAFIpzB.mjs.map → renderer-Dp9FQKVP.mjs.map} +1 -1
- package/dist/{renderer--f8JHHyT.mjs → renderer-DrK6pyfz.mjs} +3 -3
- package/dist/{renderer--f8JHHyT.mjs.map → renderer-DrK6pyfz.mjs.map} +1 -1
- package/dist/{renderer-Ch1qZ2PT.mjs → renderer-DrL3J9ci.mjs} +2 -2
- package/dist/{renderer-Ch1qZ2PT.mjs.map → renderer-DrL3J9ci.mjs.map} +1 -1
- package/dist/renderer-DsydX3cx.mjs +5 -0
- package/dist/{renderer-oiDoNzhv.mjs → renderer-DwH5e3hx.mjs} +2 -2
- package/dist/renderer-DxVSoeYi.mjs +5 -0
- package/dist/{renderer-Br_aJ_b7.mjs → renderer-Dy1xQOTu.mjs} +2 -2
- package/dist/{renderer-Br_aJ_b7.mjs.map → renderer-Dy1xQOTu.mjs.map} +1 -1
- package/dist/{renderer-CDfCaqV4.mjs → renderer-FvvywNvv.mjs} +2 -2
- package/dist/{renderer-CDfCaqV4.mjs.map → renderer-FvvywNvv.mjs.map} +1 -1
- package/dist/{renderer-DjiebKHO.mjs → renderer-HXw4cJZx.mjs} +2 -2
- package/dist/{renderer-DjiebKHO.mjs.map → renderer-HXw4cJZx.mjs.map} +1 -1
- package/dist/{renderer-D_rEtJAH.mjs → renderer-HhJPFidU.mjs} +3 -3
- package/dist/{renderer-D_rEtJAH.mjs.map → renderer-HhJPFidU.mjs.map} +1 -1
- package/dist/{renderer-Dswrn-yi.mjs → renderer-IAffbHXx.mjs} +2 -2
- package/dist/{renderer-Dswrn-yi.mjs.map → renderer-IAffbHXx.mjs.map} +1 -1
- package/dist/{renderer-D1tDMuD0.mjs → renderer-LrAldCWN.mjs} +3 -3
- package/dist/{renderer-D1tDMuD0.mjs.map → renderer-LrAldCWN.mjs.map} +1 -1
- package/dist/renderer-Nc9bHb0n.mjs +5 -0
- package/dist/{renderer-DAug14gu.mjs → renderer-O4y02xkD.mjs} +2 -2
- package/dist/{renderer-DAug14gu.mjs.map → renderer-O4y02xkD.mjs.map} +1 -1
- package/dist/{renderer-Ck-NLzz0.mjs → renderer-PnnkUWm-.mjs} +2 -2
- package/dist/{renderer-Ck-NLzz0.mjs.map → renderer-PnnkUWm-.mjs.map} +1 -1
- package/dist/renderer-TFaSD2Db.mjs +5 -0
- package/dist/{renderer-CKlNHDKI.mjs → renderer-TiaHrU5z.mjs} +3 -3
- package/dist/{renderer-CKlNHDKI.mjs.map → renderer-TiaHrU5z.mjs.map} +1 -1
- package/dist/renderer-Z61ctppe.mjs +5 -0
- package/dist/{renderer-BTLZBD63.mjs → renderer-_KIBvES8.mjs} +3 -3
- package/dist/{renderer-BTLZBD63.mjs.map → renderer-_KIBvES8.mjs.map} +1 -1
- package/dist/renderer-awXf3sNS.mjs +5 -0
- package/dist/{renderer-CsRuEpR2.mjs → renderer-b0H3oDae.mjs} +2 -2
- package/dist/{renderer-CsRuEpR2.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-CxabOSkk.mjs → renderer-oBgCEqaM.mjs} +2 -2
- package/dist/{renderer-CxabOSkk.mjs.map → renderer-oBgCEqaM.mjs.map} +1 -1
- package/dist/{renderer-BhNZn2DU.mjs → renderer-qVJdxbXB.mjs} +3 -3
- package/dist/{renderer-BhNZn2DU.mjs.map → renderer-qVJdxbXB.mjs.map} +1 -1
- package/dist/renderer-qVv0OzVc.mjs +5 -0
- package/dist/{renderer-B8i4d1Rc.mjs → renderer-rKw5_EjG.mjs} +2 -2
- package/dist/{renderer-B8i4d1Rc.mjs.map → renderer-rKw5_EjG.mjs.map} +1 -1
- package/dist/{renderer-CeNAgCE2.mjs → renderer-sMFJtt_H.mjs} +2 -2
- package/dist/{renderer-CeNAgCE2.mjs.map → renderer-sMFJtt_H.mjs.map} +1 -1
- package/dist/{renderer-DrExCXnp.mjs → renderer-smP1F57W.mjs} +2 -2
- package/dist/{renderer-DrExCXnp.mjs.map → renderer-smP1F57W.mjs.map} +1 -1
- package/dist/{renderer-DxiF4O6X.mjs → renderer-snjhPaP-.mjs} +3 -3
- package/dist/{renderer-DxiF4O6X.mjs.map → renderer-snjhPaP-.mjs.map} +1 -1
- package/dist/{renderer-CwAuWLWm.mjs → renderer-t1sXDiqm.mjs} +3 -3
- package/dist/{renderer-CwAuWLWm.mjs.map → renderer-t1sXDiqm.mjs.map} +1 -1
- package/dist/{renderer-Bb_HHUQ0.mjs → renderer-tRi3KNoG.mjs} +3 -3
- package/dist/{renderer-Bb_HHUQ0.mjs.map → renderer-tRi3KNoG.mjs.map} +1 -1
- package/dist/{renderer-BSW4CGZF.mjs → renderer-uA0UCxjA.mjs} +2 -2
- package/dist/{renderer-BSW4CGZF.mjs.map → renderer-uA0UCxjA.mjs.map} +1 -1
- package/dist/{renderer-vPxMXiv8.mjs → renderer-xNOKSN3V.mjs} +3 -3
- package/dist/{renderer-vPxMXiv8.mjs.map → renderer-xNOKSN3V.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-OgyUiyrr.mjs → renderers-CP8CFWDs-DWRjjeUg.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-OgyUiyrr.mjs.map → renderers-CP8CFWDs-DWRjjeUg.mjs.map} +1 -1
- package/dist/signals/index.d.mts +6 -6
- package/dist/signals/index.mjs +4 -4
- package/dist/{src-C3f3zXYg.mjs → src-D7M8VTzv.mjs} +7 -7
- package/dist/{src-C3f3zXYg.mjs.map → src-D7M8VTzv.mjs.map} +1 -1
- package/package.json +59 -59
- package/dist/audio-1X5qNNmk.d.mts +0 -38
- package/dist/audio-1X5qNNmk.d.mts.map +0 -1
- package/dist/audio-YpBRdI7r.mjs.map +0 -1
- package/dist/cloud-xcfV4J03.mjs.map +0 -1
- package/dist/dist-C4Vxgm0Q.mjs.map +0 -1
- package/dist/index-B7WqFBZA.d.mts.map +0 -1
- package/dist/index-Dyt4yS-x.d.mts.map +0 -1
- package/dist/preview-engine/chunk-GTMZOMAN.mjs +0 -1
- package/dist/preview-engine/renderers-33PIDDZC.mjs +0 -1
- package/dist/preview-engine/renderers-3AZ3HY53.mjs +0 -1
- package/dist/preview-engine/renderers-3FGKW52B.mjs +0 -1
- package/dist/preview-engine/renderers-4A2FBS3Y.mjs +0 -1
- package/dist/preview-engine/renderers-65DU2F5W.mjs +0 -1
- package/dist/preview-engine/renderers-6CTPYQR6.mjs +0 -1
- package/dist/preview-engine/renderers-AWODRI3B.mjs +0 -1
- package/dist/preview-engine/renderers-BO6HHGMZ.mjs +0 -1
- package/dist/preview-engine/renderers-BSXYDEV7.mjs +0 -1
- package/dist/preview-engine/renderers-ECW2CGNU.mjs +0 -1
- package/dist/preview-engine/renderers-EEX22FUO.mjs +0 -1
- package/dist/preview-engine/renderers-GCQKGJ7W.mjs +0 -1
- package/dist/preview-engine/renderers-HZBXLDKG.mjs +0 -1
- package/dist/preview-engine/renderers-IOXNQPQK.mjs +0 -1
- package/dist/preview-engine/renderers-IR44E4ZZ.mjs +0 -1
- package/dist/preview-engine/renderers-JZZ3ODOZ.mjs +0 -1
- package/dist/preview-engine/renderers-K37YL3Z7.mjs +0 -1
- package/dist/preview-engine/renderers-KUJQV3K6.mjs +0 -1
- package/dist/preview-engine/renderers-KXVKLSSX.mjs +0 -1
- package/dist/preview-engine/renderers-N4RVFX3G.mjs +0 -1
- package/dist/preview-engine/renderers-NZWWEAYA.mjs +0 -1
- package/dist/preview-engine/renderers-P4JJEDZB.mjs +0 -1
- package/dist/preview-engine/renderers-Q4572F5C.mjs +0 -1
- package/dist/preview-engine/renderers-QAX2QWWQ.mjs +0 -1
- package/dist/preview-engine/renderers-SRFIEVWL.mjs +0 -1
- package/dist/preview-engine/renderers-SYC6WFTM.mjs +0 -1
- package/dist/preview-engine/renderers-UH4WN3QN.mjs +0 -1
- package/dist/preview-engine/renderers-V4FFCAS7.mjs +0 -1
- package/dist/preview-engine/renderers-VGDEOZUU.mjs +0 -1
- package/dist/preview-engine/renderers-VJJKBX5K.mjs +0 -1
- package/dist/preview-engine/renderers-VJOKVDYW.mjs +0 -1
- package/dist/preview-engine/renderers-VUUWZUOH.mjs +0 -1
- package/dist/preview-engine/renderers-WOP5GOZP.mjs +0 -1
- package/dist/preview-engine/renderers-Y4MGN2FR.mjs +0 -1
- package/dist/preview-engine/renderers-YAMYH7IK.mjs +0 -1
- package/dist/preview-engine/renderers-ZNLSAWW3.mjs +0 -1
- package/dist/renderer-6sNr6ZRJ.mjs +0 -6
- package/dist/renderer-BDHGxD6p.mjs +0 -5
- package/dist/renderer-BT9dvpk2.mjs +0 -5
- package/dist/renderer-BfaRh0qy.mjs +0 -5
- package/dist/renderer-BlwXKV7Y.mjs +0 -5
- package/dist/renderer-C40yZK3x.mjs +0 -5
- package/dist/renderer-C5MjQ7L8.mjs +0 -5
- package/dist/renderer-C8LjKYnS.mjs +0 -5
- package/dist/renderer-C9q9H_qa.mjs +0 -5
- package/dist/renderer-CF9ta9Rm.mjs +0 -5
- package/dist/renderer-CO205Gr9.mjs +0 -5
- package/dist/renderer-CSm8UXLP.mjs +0 -5
- package/dist/renderer-CSy8HRtF.mjs +0 -5
- package/dist/renderer-CdNRWDsA.mjs +0 -5
- package/dist/renderer-CkAjiGRB.mjs +0 -5
- package/dist/renderer-CmryuPBm.mjs +0 -5
- package/dist/renderer-CnEwne4L.mjs +0 -5
- package/dist/renderer-D4QDoqOG.mjs +0 -5
- package/dist/renderer-D7cS2a8z.mjs +0 -5
- package/dist/renderer-D85CNC-b.mjs +0 -5
- package/dist/renderer-DC9IoJNz.mjs +0 -5
- package/dist/renderer-DIDh0gFm.mjs +0 -5
- package/dist/renderer-DLmJ9GWE.mjs +0 -5
- package/dist/renderer-DM7PUWP9.mjs +0 -5
- package/dist/renderer-DPWFDxIO.mjs +0 -5
- package/dist/renderer-DUCByhAk.mjs +0 -5
- package/dist/renderer-DVOtnCKH.mjs +0 -5
- package/dist/renderer-DVrN2bW8.mjs +0 -5
- package/dist/renderer-DdOVwfG4.mjs +0 -5
- package/dist/renderer-DtCe9ouu.mjs +0 -5
- package/dist/renderer-Mg0kr9Fm.mjs +0 -5
- package/dist/renderer-T35PsSw5.mjs +0 -5
- package/dist/renderer-iSZ5NT-J.mjs +0 -5
- package/dist/renderer-nEmMjQ1a.mjs +0 -5
- package/dist/renderer-pG1nyfjE.mjs +0 -5
- package/dist/renderer-vbb9e3E3.mjs +0 -5
package/dist/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as renderCloud, t as CloudRenderError } from "./cloud-
|
|
2
|
+
import { c as CONFIG_FILE, d as writeConfig, i as renderCloud, l as findRender, t as CloudRenderError, u as readConfig } from "./cloud-COid1Ipa.mjs";
|
|
3
3
|
import { t as failedCheck } from "./check-result-Culfu7Nx.mjs";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
@@ -9,34 +9,6 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
9
9
|
import { spawn } from "node:child_process";
|
|
10
10
|
import { parseArgs } from "node:util";
|
|
11
11
|
|
|
12
|
-
//#region src/cli/config.ts
|
|
13
|
-
/**
|
|
14
|
-
* `framefields.json` at the project root: where installed components live,
|
|
15
|
-
* and which fonts `framefields add` / `framefields fonts add` installed.
|
|
16
|
-
*/
|
|
17
|
-
const CONFIG_FILE = "framefields.json";
|
|
18
|
-
/** The project's config, or the default it would get: `src/components` when there is a `src`. */
|
|
19
|
-
function readConfig(cwd) {
|
|
20
|
-
const file = join(cwd, CONFIG_FILE);
|
|
21
|
-
if (existsSync(file)) {
|
|
22
|
-
const config = JSON.parse(readFileSync(file, "utf8"));
|
|
23
|
-
if (typeof config.components !== "string") throw new Error(`${CONFIG_FILE}: "components" must be a directory path`);
|
|
24
|
-
if (config.fonts !== void 0 && (typeof config.fonts !== "object" || Object.values(config.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" }`);
|
|
25
|
-
return {
|
|
26
|
-
config,
|
|
27
|
-
saved: true
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
return {
|
|
31
|
-
config: { components: existsSync(join(cwd, "src")) ? "src/components" : "components" },
|
|
32
|
-
saved: false
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
function writeConfig(cwd, config) {
|
|
36
|
-
writeFileSync(join(cwd, CONFIG_FILE), `${JSON.stringify(config, null, " ")}\n`);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
//#endregion
|
|
40
12
|
//#region src/cli/fonts.ts
|
|
41
13
|
/**
|
|
42
14
|
* Fonts the CLI installs into a project: a catalog of pinned files (URL,
|
|
@@ -308,7 +280,10 @@ async function add(names, options) {
|
|
|
308
280
|
report.written.push(shown);
|
|
309
281
|
}
|
|
310
282
|
if (!saved) {
|
|
311
|
-
writeConfig(cwd, {
|
|
283
|
+
writeConfig(cwd, {
|
|
284
|
+
...config,
|
|
285
|
+
components: relative(cwd, dir) || "."
|
|
286
|
+
});
|
|
312
287
|
report.configWritten = true;
|
|
313
288
|
}
|
|
314
289
|
const needs = /* @__PURE__ */ new Map();
|
|
@@ -344,11 +319,6 @@ async function add(names, options) {
|
|
|
344
319
|
//#endregion
|
|
345
320
|
//#region src/cli/templates.ts
|
|
346
321
|
/**
|
|
347
|
-
* The files `framefields init` writes: the project layout the framefields
|
|
348
|
-
* setup skill describes. `film.ts` only builds; `render.ts` renders frames,
|
|
349
|
-
* a grid, the live preview or the video; `theme.ts` holds the numbers.
|
|
350
|
-
*/
|
|
351
|
-
/**
|
|
352
322
|
* Packages with install scripts. framefields needs exactly one (skia-canvas
|
|
353
323
|
* downloads its native binary); the others work without theirs.
|
|
354
324
|
*/
|
|
@@ -369,14 +339,24 @@ const DEV_DEPENDENCIES = {
|
|
|
369
339
|
};
|
|
370
340
|
const SCRIPTS = {
|
|
371
341
|
typecheck: "tsc --noEmit -p .",
|
|
372
|
-
check: "tsc --noEmit -p . && framefields check
|
|
373
|
-
"check:render": "tsc --noEmit -p . && framefields check
|
|
342
|
+
check: "tsc --noEmit -p . && framefields check film --json",
|
|
343
|
+
"check:render": "tsc --noEmit -p . && framefields check film --render --json",
|
|
374
344
|
frames: "tsx src/render.ts frames",
|
|
375
345
|
grid: "tsx src/render.ts grid",
|
|
376
346
|
preview: "tsx src/render.ts preview",
|
|
377
347
|
render: "tsx src/render.ts",
|
|
378
|
-
"render:cloud": "framefields render
|
|
348
|
+
"render:cloud": "framefields render film --cloud"
|
|
379
349
|
};
|
|
350
|
+
/** The named render `init` records in framefields.json. */
|
|
351
|
+
function defaultRenders(name) {
|
|
352
|
+
return { film: {
|
|
353
|
+
title: name,
|
|
354
|
+
entry: "src/film.ts",
|
|
355
|
+
export: "buildFilm",
|
|
356
|
+
workers: "auto",
|
|
357
|
+
output: "output/film.mp4"
|
|
358
|
+
} };
|
|
359
|
+
}
|
|
380
360
|
/**
|
|
381
361
|
* The `package.json` fields a framefields project needs. npm reads
|
|
382
362
|
* `allowScripts`, pnpm its `pnpm` block, bun `trustedDependencies`.
|
|
@@ -575,6 +555,9 @@ ${run("render")} # output/output.mp4
|
|
|
575
555
|
${run("render:cloud")} # on cloud GPUs, from the pushed commit
|
|
576
556
|
\`\`\`
|
|
577
557
|
|
|
558
|
+
- \`framefields.json\` names the renders: \`film\` is \`buildFilm\` in \`src/film.ts\`. Add an
|
|
559
|
+
entry under \`renders\` for each cut (a teaser, a vertical edit) and render or check it by
|
|
560
|
+
name: \`npx framefields render teaser --cloud\`, \`npx framefields check teaser\`.
|
|
578
561
|
- \`src/film.ts\` builds the composition, \`src/theme.ts\` holds sizes, colors and fonts,
|
|
579
562
|
\`src/render.ts\` renders it.
|
|
580
563
|
- \`npx framefields list\` shows ready-made components; \`npx framefields add <name>\` copies
|
|
@@ -687,10 +670,14 @@ async function init(options) {
|
|
|
687
670
|
}
|
|
688
671
|
}
|
|
689
672
|
for (const [path$1, lines] of [[".gitignore", GITIGNORE], [".gitattributes", GITATTRIBUTES]]) record(report, path$1, appendLines(join(root, path$1), lines));
|
|
673
|
+
const configExisted = existsSync(join(root, CONFIG_FILE));
|
|
690
674
|
const { config, saved } = readConfig(root);
|
|
691
|
-
if (!saved) {
|
|
692
|
-
writeConfig(root,
|
|
693
|
-
|
|
675
|
+
if (!saved || !config.renders) {
|
|
676
|
+
writeConfig(root, {
|
|
677
|
+
...config,
|
|
678
|
+
renders: config.renders ?? defaultRenders(basename(root))
|
|
679
|
+
});
|
|
680
|
+
record(report, CONFIG_FILE, configExisted || "written");
|
|
694
681
|
}
|
|
695
682
|
const installFonts = options.fonts !== false;
|
|
696
683
|
const installEmoji = options.emoji ?? installFonts;
|
|
@@ -872,14 +859,17 @@ function isCheckReport(value) {
|
|
|
872
859
|
//#endregion
|
|
873
860
|
//#region src/cli/cloud.ts
|
|
874
861
|
/**
|
|
875
|
-
* `framefields render <entry> --cloud`: renders the project on
|
|
876
|
-
* api.framefields.dev and downloads the video.
|
|
877
|
-
*
|
|
862
|
+
* `framefields render <name|entry> --cloud`: renders the project on
|
|
863
|
+
* api.framefields.dev and downloads the video. `name` is a render in
|
|
864
|
+
* framefields.json; a module path renders without one. Prints one plain
|
|
865
|
+
* line per phase, and a progress line at most every 10 seconds while
|
|
866
|
+
* frames render.
|
|
878
867
|
*/
|
|
879
868
|
const PROGRESS_EVERY_MS = 1e4;
|
|
880
869
|
async function runCloudRender(o, log, render = renderCloud) {
|
|
870
|
+
const cwd = o.cwd ?? process.cwd();
|
|
881
871
|
const workers = parseWorkers(o.workers);
|
|
882
|
-
if (workers ===
|
|
872
|
+
if (workers === null) {
|
|
883
873
|
log(`--workers must be "auto" or a positive whole number, not "${o.workers}".`);
|
|
884
874
|
return 2;
|
|
885
875
|
}
|
|
@@ -887,8 +877,15 @@ async function runCloudRender(o, log, render = renderCloud) {
|
|
|
887
877
|
log(`--codec must be h264 or vp9, not "${o.codec}".`);
|
|
888
878
|
return 2;
|
|
889
879
|
}
|
|
890
|
-
const
|
|
891
|
-
|
|
880
|
+
const target = pickRender(o.entry, cwd);
|
|
881
|
+
if ("error" in target) {
|
|
882
|
+
log(target.error);
|
|
883
|
+
return 2;
|
|
884
|
+
}
|
|
885
|
+
const spec = target.name ? findRender(cwd, target.name) : void 0;
|
|
886
|
+
const codec = o.codec ?? spec?.codec ?? "h264";
|
|
887
|
+
const outputPath = o.output ?? spec?.output ?? path.join("output", `${target.name ?? path.basename(target.entry ?? "").replace(/\.[^.]+$/, "")}.${codec === "vp9" ? "webm" : "mp4"}`);
|
|
888
|
+
const planWorkers = o.plan && (workers ?? spec?.workers ?? 1) === 1 ? "auto" : workers;
|
|
892
889
|
const controller = new AbortController();
|
|
893
890
|
const onSigint = () => {
|
|
894
891
|
log("Cancelling the cloud render…");
|
|
@@ -899,12 +896,14 @@ async function runCloudRender(o, log, render = renderCloud) {
|
|
|
899
896
|
const narrate = narrator(o.json ? () => {} : log, Date.now);
|
|
900
897
|
try {
|
|
901
898
|
const result = await render({
|
|
902
|
-
|
|
899
|
+
cwd,
|
|
900
|
+
render: target.name,
|
|
901
|
+
entry: target.entry,
|
|
903
902
|
export: o.export,
|
|
904
903
|
select: o.select,
|
|
905
|
-
workers:
|
|
904
|
+
workers: planWorkers,
|
|
906
905
|
maxWorkers: o.maxWorkers ? Number(o.maxWorkers) : void 0,
|
|
907
|
-
codec,
|
|
906
|
+
codec: o.codec,
|
|
908
907
|
quality: o.quality,
|
|
909
908
|
dryRun: o.plan,
|
|
910
909
|
outputPath: o.plan ? void 0 : outputPath,
|
|
@@ -917,7 +916,12 @@ async function runCloudRender(o, log, render = renderCloud) {
|
|
|
917
916
|
return 0;
|
|
918
917
|
}
|
|
919
918
|
if (result.status === "planned") {
|
|
920
|
-
|
|
919
|
+
const planned = planWorkers === "auto" && spec?.workers !== "auto";
|
|
920
|
+
log(`Render it: ${renderCommand({
|
|
921
|
+
...o,
|
|
922
|
+
entry: target.name ?? target.entry,
|
|
923
|
+
workers: o.workers ?? (planned ? "auto" : void 0)
|
|
924
|
+
})}`);
|
|
921
925
|
return 0;
|
|
922
926
|
}
|
|
923
927
|
const bytes = result.output?.bytes;
|
|
@@ -935,11 +939,40 @@ async function runCloudRender(o, log, render = renderCloud) {
|
|
|
935
939
|
process.removeListener("SIGINT", onSigint);
|
|
936
940
|
}
|
|
937
941
|
}
|
|
942
|
+
/** The command that renders what `--plan` just planned: the same options, without `--plan`. */
|
|
943
|
+
function renderCommand(o) {
|
|
944
|
+
const flags = [
|
|
945
|
+
["--export", o.export],
|
|
946
|
+
["--select", o.select],
|
|
947
|
+
["--workers", o.workers],
|
|
948
|
+
["--max-workers", o.maxWorkers],
|
|
949
|
+
["--codec", o.codec],
|
|
950
|
+
["--quality", o.quality],
|
|
951
|
+
["--output", o.output]
|
|
952
|
+
];
|
|
953
|
+
return [`framefields render ${o.entry ?? ""} --cloud`.replace(" ", " "), ...flags.filter(([, v]) => v !== void 0).map(([f, v]) => `${f} ${v}`)].join(" ");
|
|
954
|
+
}
|
|
955
|
+
/**
|
|
956
|
+
* What `framefields render [arg]` renders: a render named in framefields.json,
|
|
957
|
+
* or a module path; with no argument, the project's only named render.
|
|
958
|
+
*/
|
|
959
|
+
function pickRender(arg, cwd) {
|
|
960
|
+
const renders = readConfig(cwd).config.renders ?? {};
|
|
961
|
+
const names = Object.keys(renders);
|
|
962
|
+
if (arg === void 0) {
|
|
963
|
+
if (names.length === 1) return { name: names[0] };
|
|
964
|
+
return { error: names.length ? `Name the render: ${names.join(", ")}. \`framefields renders\` lists them.` : `Name a module, e.g. \`framefields render src/film.ts --cloud\`, or add "renders" to ${CONFIG_FILE}.` };
|
|
965
|
+
}
|
|
966
|
+
if (renders[arg]) return { name: arg };
|
|
967
|
+
if (existsSync(path.resolve(cwd, arg))) return { entry: arg };
|
|
968
|
+
return { error: names.length ? `"${arg}" is neither a render in ${CONFIG_FILE} (${names.join(", ")}) nor a file.` : `"${arg}" is not a file, and ${CONFIG_FILE} names no renders.` };
|
|
969
|
+
}
|
|
970
|
+
/** --workers: undefined when not given, null when invalid. */
|
|
938
971
|
function parseWorkers(value) {
|
|
939
|
-
if (value === void 0) return
|
|
972
|
+
if (value === void 0) return void 0;
|
|
940
973
|
if (value === "auto") return "auto";
|
|
941
974
|
const n = Number(value);
|
|
942
|
-
return Number.isInteger(n) && n >= 1 ? n :
|
|
975
|
+
return Number.isInteger(n) && n >= 1 ? n : null;
|
|
943
976
|
}
|
|
944
977
|
/** Turns status polls into log lines: one per phase, throttled frame progress. */
|
|
945
978
|
function narrator(log, now) {
|
|
@@ -1044,14 +1077,18 @@ function openRegistry(source, cwd = process.cwd()) {
|
|
|
1044
1077
|
* npx framefields list the components you can add
|
|
1045
1078
|
* npx framefields fonts add <role...> install fonts (emoji)
|
|
1046
1079
|
* npx framefields fonts list the fonts you can install
|
|
1047
|
-
* npx framefields
|
|
1080
|
+
* npx framefields renders the renders named in framefields.json
|
|
1081
|
+
* npx framefields render <name> --cloud render on api.framefields.dev
|
|
1048
1082
|
*/
|
|
1049
1083
|
const HELP = `Usage: framefields <command> [options]
|
|
1050
1084
|
|
|
1051
1085
|
Commands:
|
|
1052
1086
|
api JSON reference generated from timing, grid and check types.
|
|
1053
|
-
check
|
|
1054
|
-
|
|
1087
|
+
check [name|entry]
|
|
1088
|
+
Build, validate and lint a composition; --render also writes a
|
|
1089
|
+
representative frame and grid. A render named in
|
|
1090
|
+
framefields.json, or a module (--export defaults to
|
|
1091
|
+
buildFilm); with neither, every named render.
|
|
1055
1092
|
init [dir] Start a framefields project in dir (default: here), or add
|
|
1056
1093
|
framefields to the project there: package.json, tsconfig,
|
|
1057
1094
|
src/theme.ts, film.ts, render.ts, assets/, .gitignore,
|
|
@@ -1064,10 +1101,14 @@ Commands:
|
|
|
1064
1101
|
Install fonts (pinned, hash-checked, with their license)
|
|
1065
1102
|
and register them in the generated <components>/fonts.ts.
|
|
1066
1103
|
fonts list List the fonts you can install.
|
|
1067
|
-
|
|
1104
|
+
renders List the renders named in framefields.json.
|
|
1105
|
+
render [name|entry] --cloud
|
|
1068
1106
|
Render on api.framefields.dev from the pushed commit of
|
|
1069
1107
|
this git repo, and download the video. Needs
|
|
1070
|
-
FRAMEFIELDS_API_KEY.
|
|
1108
|
+
FRAMEFIELDS_API_KEY. A render named in framefields.json
|
|
1109
|
+
(its fields are the defaults; flags override them), or a
|
|
1110
|
+
module (--export defaults to buildFilm). Without either,
|
|
1111
|
+
the project's only named render.
|
|
1071
1112
|
|
|
1072
1113
|
Options for check:
|
|
1073
1114
|
--export <name> Composition or builder export (default buildFilm).
|
|
@@ -1084,7 +1125,7 @@ Options for render --cloud:
|
|
|
1084
1125
|
--max-workers <n> Upper bound for auto.
|
|
1085
1126
|
--plan Measure and plan only: prints workers, time and the
|
|
1086
1127
|
estimated cost, renders nothing.
|
|
1087
|
-
--output <file> Where the video goes (default output/<
|
|
1128
|
+
--output <file> Where the video goes (default output/<name>.mp4).
|
|
1088
1129
|
--codec <codec> h264 (default) or vp9.
|
|
1089
1130
|
--quality <q> very_low, low, high or very_high (default).
|
|
1090
1131
|
--select <name> When the export returns several compositions.
|
|
@@ -1118,7 +1159,7 @@ Examples:
|
|
|
1118
1159
|
npx framefields init my-film --install
|
|
1119
1160
|
npx framefields add mouse-pointer focus-zoom
|
|
1120
1161
|
npx framefields fonts add emoji
|
|
1121
|
-
npx framefields render
|
|
1162
|
+
npx framefields render film --cloud --plan
|
|
1122
1163
|
`;
|
|
1123
1164
|
async function main(argv) {
|
|
1124
1165
|
const { values, positionals } = parseArgs({
|
|
@@ -1171,30 +1212,11 @@ async function main(argv) {
|
|
|
1171
1212
|
}));
|
|
1172
1213
|
return 0;
|
|
1173
1214
|
}
|
|
1174
|
-
if (command === "check")
|
|
1175
|
-
|
|
1176
|
-
process.stderr.write("Usage: framefields check <entry> [--export buildFilm] [--render] [--json]\n");
|
|
1177
|
-
return 2;
|
|
1178
|
-
}
|
|
1179
|
-
const report$1 = await runCheck({
|
|
1180
|
-
entry: names[0],
|
|
1181
|
-
exportName: values.export,
|
|
1182
|
-
render: values.render,
|
|
1183
|
-
outputDir: values.output,
|
|
1184
|
-
timeoutMs: values.timeout === void 0 ? void 0 : Number(values.timeout),
|
|
1185
|
-
warningsAsErrors: values["warnings-as-errors"]
|
|
1186
|
-
});
|
|
1187
|
-
if (values.json) log(JSON.stringify(report$1));
|
|
1188
|
-
else {
|
|
1189
|
-
log(`Check ${report$1.status}: ${report$1.entry} (${report$1.exportName})`);
|
|
1190
|
-
for (const d of report$1.diagnostics) log(`${d.severity} ${d.code}${d.path ? ` at ${d.path}` : ""}: ${d.message}`);
|
|
1191
|
-
for (const file of report$1.artifacts) log(`Wrote ${file}`);
|
|
1192
|
-
}
|
|
1193
|
-
return report$1.status === "passed" ? 0 : 1;
|
|
1194
|
-
}
|
|
1215
|
+
if (command === "check") return check(names, cwd, values, log);
|
|
1216
|
+
if (command === "renders") return listRenders(cwd, values.json, log);
|
|
1195
1217
|
if (command === "render") {
|
|
1196
|
-
if (names.length
|
|
1197
|
-
process.stderr.write("Usage: framefields render
|
|
1218
|
+
if (names.length > 1 || !values.cloud) {
|
|
1219
|
+
process.stderr.write("Usage: framefields render [name|entry] --cloud [--workers auto] [--plan]\nLocal renders run your project's render script (`npm run render`).\n");
|
|
1198
1220
|
return 2;
|
|
1199
1221
|
}
|
|
1200
1222
|
return runCloudRender({
|
|
@@ -1284,6 +1306,75 @@ async function main(argv) {
|
|
|
1284
1306
|
}
|
|
1285
1307
|
const onDownload = (spec) => process.stdout.write(` fetching ${spec.file} (${(spec.font.bytes / 1e6).toFixed(1)} MB, ${spec.license.id})\n`);
|
|
1286
1308
|
/** What `add` did about fonts, and how to use them. */
|
|
1309
|
+
/** `check [name|entry]`: a named render, a module, or every named render. */
|
|
1310
|
+
async function check(names, cwd, values, log) {
|
|
1311
|
+
const renders = readConfig(cwd).config.renders ?? {};
|
|
1312
|
+
const usage = () => {
|
|
1313
|
+
process.stderr.write("Usage: framefields check [name|entry] [--export buildFilm] [--render] [--json]\n");
|
|
1314
|
+
return 2;
|
|
1315
|
+
};
|
|
1316
|
+
if (names.length > 1) return usage();
|
|
1317
|
+
const targets = names.length === 0 ? Object.entries(renders).map(([name, spec]) => ({
|
|
1318
|
+
name,
|
|
1319
|
+
entry: spec.entry,
|
|
1320
|
+
exportName: spec.export
|
|
1321
|
+
})) : renders[names[0]] ? [{
|
|
1322
|
+
name: names[0],
|
|
1323
|
+
entry: renders[names[0]].entry,
|
|
1324
|
+
exportName: values.export ?? renders[names[0]].export
|
|
1325
|
+
}] : [{
|
|
1326
|
+
entry: names[0],
|
|
1327
|
+
exportName: values.export
|
|
1328
|
+
}];
|
|
1329
|
+
if (targets.length === 0) return usage();
|
|
1330
|
+
const reports = [];
|
|
1331
|
+
for (const t of targets) {
|
|
1332
|
+
const report = await runCheck({
|
|
1333
|
+
entry: t.entry,
|
|
1334
|
+
exportName: t.exportName,
|
|
1335
|
+
render: values.render,
|
|
1336
|
+
outputDir: values.output ?? (targets.length > 1 ? join("output", "check", t.name ?? "") : void 0),
|
|
1337
|
+
timeoutMs: values.timeout === void 0 ? void 0 : Number(values.timeout),
|
|
1338
|
+
warningsAsErrors: values["warnings-as-errors"]
|
|
1339
|
+
});
|
|
1340
|
+
reports.push({
|
|
1341
|
+
...t.name && { name: t.name },
|
|
1342
|
+
...report
|
|
1343
|
+
});
|
|
1344
|
+
if (values.json) continue;
|
|
1345
|
+
log(`Check ${report.status}: ${t.name ? `${t.name} (${t.entry}, ${report.exportName})` : `${report.entry} (${report.exportName})`}`);
|
|
1346
|
+
for (const d of report.diagnostics) log(`${d.severity} ${d.code}${d.path ? ` at ${d.path}` : ""}: ${d.message}`);
|
|
1347
|
+
for (const file of report.artifacts) log(`Wrote ${file}`);
|
|
1348
|
+
}
|
|
1349
|
+
const passed = reports.every((r) => r.status === "passed");
|
|
1350
|
+
if (values.json) log(JSON.stringify(names.length === 0 ? {
|
|
1351
|
+
status: passed ? "passed" : "failed",
|
|
1352
|
+
checks: reports
|
|
1353
|
+
} : reports[0]));
|
|
1354
|
+
return passed ? 0 : 1;
|
|
1355
|
+
}
|
|
1356
|
+
/** `renders`: what framefields.json names, as the dashboard shows it. */
|
|
1357
|
+
function listRenders(cwd, json, log) {
|
|
1358
|
+
const renders = readConfig(cwd).config.renders ?? {};
|
|
1359
|
+
if (json) {
|
|
1360
|
+
log(JSON.stringify({
|
|
1361
|
+
schemaVersion: 1,
|
|
1362
|
+
renders
|
|
1363
|
+
}));
|
|
1364
|
+
return 0;
|
|
1365
|
+
}
|
|
1366
|
+
const entries = Object.entries(renders);
|
|
1367
|
+
if (entries.length === 0) {
|
|
1368
|
+
log("framefields.json names no renders. Add one: \"renders\": { \"film\": { \"entry\": \"src/film.ts\", \"export\": \"buildFilm\" } }");
|
|
1369
|
+
return 0;
|
|
1370
|
+
}
|
|
1371
|
+
for (const [name, spec] of entries) {
|
|
1372
|
+
const title = spec.title && spec.title !== name ? ` ${spec.title}` : "";
|
|
1373
|
+
const opts = [spec.workers !== void 0 && `workers ${spec.workers}`, spec.codec].filter(Boolean);
|
|
1374
|
+
log(`${name}${title}\n ${spec.entry} · ${spec.export ?? "buildFilm"}${spec.select ? ` · ${spec.select}` : ""}${opts.length ? ` · ${opts.join(", ")}` : ""}${spec.description ? `\n ${spec.description}` : ""}`);
|
|
1375
|
+
}
|
|
1376
|
+
return 0;
|
|
1377
|
+
}
|
|
1287
1378
|
function logFonts(report, cwd, log) {
|
|
1288
1379
|
for (const f of report.fonts) log(` ${f.status === "installed" ? "font " : "font ok "} ${f.path} (${f.role}, for ${f.by}: ${f.why})`);
|
|
1289
1380
|
for (const f of report.fontsSkipped) log(` no font ${f.role} for ${f.by} (--no-fonts): ${f.why} Install later with \`framefields fonts add ${f.role}\`.`);
|