@cueframe/kernel 0.2.1 → 0.2.3
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/_members/animate/index.d.ts +8 -2
- package/dist/_members/animate/layout/FlexLayout.d.ts +69 -0
- package/dist/_members/animate/layout/fit.d.ts +44 -0
- package/dist/_members/animate/layout/index.d.ts +3 -0
- package/dist/_members/animate/layout/solveFlex.d.ts +70 -0
- package/dist/_members/animate/media/MediaTileScene.d.ts +65 -0
- package/dist/_members/animate/media/recipes.d.ts +61 -0
- package/dist/_members/animate/scene/FocusPass.d.ts +76 -0
- package/dist/_members/animate/scene/UnlitPlane.d.ts +45 -0
- package/dist/_members/animate/scene/__oracle__/cssProjection.d.ts +24 -0
- package/dist/_members/animate/scene/assets.d.ts +21 -0
- package/dist/_members/animate/scene/backdrop.d.ts +7 -0
- package/dist/_members/animate/scene/coordinates.d.ts +58 -0
- package/dist/_members/animate/scene/deviceOpacity.d.ts +18 -0
- package/dist/_members/animate/scene/errors.d.ts +14 -0
- package/dist/_members/animate/scene/finishing.d.ts +69 -0
- package/dist/_members/animate/scene/finishingMath.d.ts +60 -0
- package/dist/_members/animate/scene/finishingPass.d.ts +35 -0
- package/dist/_members/animate/scene/focusBlur.d.ts +56 -0
- package/dist/_members/animate/scene/focusResources.d.ts +190 -0
- package/dist/_members/animate/scene/focusShaders.d.ts +68 -0
- package/dist/_members/animate/scene/fontReadiness.d.ts +27 -0
- package/dist/_members/animate/scene/grainNoise.d.ts +118 -0
- package/dist/_members/animate/scene/index.d.ts +19 -0
- package/dist/_members/animate/scene/internal.d.ts +29 -0
- package/dist/_members/animate/scene/planeFit.d.ts +46 -0
- package/dist/_members/animate/scene/preparedWorldText.d.ts +25 -0
- package/dist/_members/animate/scene/rasterCache.d.ts +30 -0
- package/dist/_members/animate/scene/rasterReadiness.d.ts +33 -0
- package/dist/_members/animate/scene/readiness.d.ts +69 -0
- package/dist/_members/animate/scene/redraw.d.ts +10 -0
- package/dist/_members/animate/scene/render.d.ts +9 -0
- package/dist/_members/animate/scene/scaling.d.ts +13 -0
- package/dist/_members/animate/scene/text.d.ts +40 -0
- package/dist/_members/animate/scene/textLayout.d.ts +78 -0
- package/dist/_members/animate/scene/textureImageSize.d.ts +4 -0
- package/dist/_members/animate/scene/useSceneImageTexture.d.ts +21 -0
- package/dist/_members/animate/scene/useWorldTextTexture.d.ts +21 -0
- package/dist/_members/animate/scene/v2/MeasuredPlaneGeometry.d.ts +7 -0
- package/dist/_members/animate/scene/v2/PhotographicStudioRig.d.ts +11 -0
- package/dist/_members/animate/scene/v2/PreparedSceneShotV1.d.ts +12 -0
- package/dist/_members/animate/scene/v2/SceneShotV2.d.ts +59 -0
- package/dist/_members/animate/scene/v2/builders.d.ts +170 -0
- package/dist/_members/animate/scene/v2/finishes.d.ts +152 -0
- package/dist/_members/animate/scene/v2/lighting.d.ts +119 -0
- package/dist/_members/animate/scene/v2/observePmremTargets.d.ts +4 -0
- package/dist/_members/animate/scene/v2/preparationFacts.d.ts +32 -0
- package/dist/_members/animate/scene/v2/preparedSurface.d.ts +17 -0
- package/dist/_members/animate/scene/v2/projectedResolution.d.ts +2 -0
- package/dist/_members/animate/scene/v2/renderTargetObserver.d.ts +5 -0
- package/dist/_members/animate/scene/v2/runtimeAllocations.d.ts +55 -0
- package/dist/_members/animate/scene/v2/shadow.d.ts +23 -0
- package/dist/_members/animate/scene/v2/slabGeometry.d.ts +134 -0
- package/dist/_members/animate/scene/v2/slots.d.ts +73 -0
- package/dist/_members/animate/scene/v2/videoBinding.d.ts +39 -0
- package/dist/_members/animate/scene/worldBounds.d.ts +19 -0
- package/dist/_members/animate/scene/worldTextRaster.d.ts +87 -0
- package/dist/_members/animate/scene/worldTextTexture.d.ts +32 -0
- package/dist/_members/animate/stage/PerspectiveStage.d.ts +73 -0
- package/dist/_members/animate/stage/camera.d.ts +143 -0
- package/dist/_members/animate/stage/dof.d.ts +9 -0
- package/dist/_members/animate/stage/index.d.ts +6 -0
- package/dist/_members/animate/stage/presets.d.ts +17 -0
- package/dist/_members/animate/three/DeviceMesh.d.ts +256 -0
- package/dist/_members/animate/three/SceneCameraRig.d.ts +12 -0
- package/dist/_members/animate/three/StageCameraRig.d.ts +7 -0
- package/dist/_members/animate/three/StudioRig.d.ts +228 -0
- package/dist/_members/animate/three/ThreeCanvas.d.ts +22 -0
- package/dist/_members/animate/three/defaultScreen.d.ts +23 -0
- package/dist/_members/animate/three/index.d.ts +7 -1
- package/dist/_members/animate/three/textureLifecycle.d.ts +29 -0
- package/dist/_members/animate/three/toneMapping.d.ts +113 -0
- package/dist/_members/animate/three/useImageTexture.d.ts +17 -0
- package/dist/_members/authoring/index.d.ts +2 -0
- package/dist/_members/authoring/scene/index.d.ts +6 -0
- package/dist/_members/authoring/scene/materialize.d.ts +47 -0
- package/dist/_members/authoring/scene/validate.d.ts +80 -0
- package/dist/_members/authoring/scene/wrapper.d.ts +41 -0
- package/dist/_members/component-runtime/allowedImports.d.ts +3 -0
- package/dist/_members/component-runtime/allowedImports.d.ts.map +1 -0
- package/dist/_members/component-runtime/bake.d.ts +8 -0
- package/dist/_members/component-runtime/bake.d.ts.map +1 -1
- package/dist/_members/component-runtime/browserFirewall.d.ts +7 -1
- package/dist/_members/component-runtime/browserFirewall.d.ts.map +1 -1
- package/dist/_members/component-runtime/browserOptions.d.ts +59 -3
- package/dist/_members/component-runtime/browserOptions.d.ts.map +1 -1
- package/dist/_members/component-runtime/canonicalIdentity.d.ts +14 -0
- package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -1
- package/dist/_members/component-runtime/contracts.d.ts +341 -1
- package/dist/_members/component-runtime/contracts.d.ts.map +1 -1
- package/dist/_members/component-runtime/fixtures/imageTileDriftWall.d.ts +5 -0
- package/dist/_members/component-runtime/fixtures/imageTileDriftWall.d.ts.map +1 -0
- package/dist/_members/component-runtime/fixtures/mediaTileMixed.d.ts +5 -0
- package/dist/_members/component-runtime/fixtures/mediaTileMixed.d.ts.map +1 -0
- package/dist/_members/component-runtime/fixtures/mediaTileVideo.d.ts +8 -0
- package/dist/_members/component-runtime/fixtures/mediaTileVideo.d.ts.map +1 -0
- package/dist/_members/component-runtime/importPolicy.d.ts +3 -2
- package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -1
- package/dist/_members/component-runtime/index.d.ts +3 -0
- package/dist/_members/component-runtime/index.d.ts.map +1 -1
- package/dist/_members/component-runtime/livePreviewProxy.d.ts +7 -0
- package/dist/_members/component-runtime/livePreviewProxy.d.ts.map +1 -0
- package/dist/_members/component-runtime/localRoot.d.ts +37 -0
- package/dist/_members/component-runtime/localRoot.d.ts.map +1 -0
- package/dist/_members/component-runtime/mediaResolution.d.ts +25 -0
- package/dist/_members/component-runtime/mediaResolution.d.ts.map +1 -0
- package/dist/_members/component-runtime/render.d.ts +151 -13
- package/dist/_members/component-runtime/render.d.ts.map +1 -1
- package/dist/_members/component-runtime/renderDiagnostics.d.ts +14 -0
- package/dist/_members/component-runtime/renderDiagnostics.d.ts.map +1 -0
- package/dist/_members/component-runtime/sceneAdmission.d.ts +47 -0
- package/dist/_members/component-runtime/sceneAdmission.d.ts.map +1 -0
- package/dist/_members/component-runtime/sourceWorkspace.d.ts +8 -0
- package/dist/_members/component-runtime/sourceWorkspace.d.ts.map +1 -1
- package/dist/_members/component-runtime/webglProbe.d.ts +191 -0
- package/dist/_members/component-runtime/webglProbe.d.ts.map +1 -0
- package/dist/_members/composition/fonts/bundledFaces.d.ts +150 -0
- package/dist/_members/composition/fonts/captionFaces.d.ts +268 -0
- package/dist/_members/composition/fonts.d.ts +11 -4
- package/dist/_members/composition/graphics-plan/schemas.d.ts +4 -4
- package/dist/_members/composition/ops/types.d.ts +1 -1
- package/dist/_members/composition/primitive-catalog/types.d.ts +1 -0
- package/dist/_members/composition/projection/behind-readiness.d.ts +3 -0
- package/dist/_members/composition/projection/brandKit.d.ts +6 -0
- package/dist/_members/composition/projection/composition-floor.d.ts +2 -1
- package/dist/_members/composition/scene/animation.d.ts +25 -0
- package/dist/_members/composition/scene/budget.d.ts +29 -0
- package/dist/_members/composition/scene/budgetPolicy.d.mts +13 -0
- package/dist/_members/composition/scene/clipRules.d.ts +119 -0
- package/dist/_members/composition/scene/constraints.d.ts +61 -0
- package/dist/_members/composition/scene/device.d.ts +21 -0
- package/dist/_members/composition/scene/examples.d.ts +11 -0
- package/dist/_members/composition/scene/index.d.ts +11 -0
- package/dist/_members/composition/scene/photographicRig.d.ts +242 -0
- package/dist/_members/composition/scene/preparedRender.d.ts +239 -0
- package/dist/_members/composition/scene/resolution.d.ts +178 -0
- package/dist/_members/composition/scene/schema.d.ts +351 -0
- package/dist/_members/composition/scene/videoSchedule.d.ts +43 -0
- package/dist/_members/composition/validators/brandKit.d.ts +1 -0
- package/dist/_members/composition/validators/render.d.ts +2 -0
- package/dist/_members/composition-ops/index.d.ts +45 -0
- package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
- package/dist/_members/core/render/compositionRender.d.ts +41 -9
- package/dist/_members/core/render/index.d.ts +9 -2
- package/dist/_members/core/render/sceneCaptureIdentity.d.ts +14 -0
- package/dist/_members/core/render/sceneShotPlan.d.ts +142 -0
- package/dist/_members/core/render/sceneShotPreparation.d.ts +57 -0
- package/dist/_members/core/render/slabDescriptor.d.ts +21 -0
- package/dist/_members/core/render/trackProjection.d.ts +33 -0
- package/dist/_members/core/render/types.d.ts +142 -0
- package/dist/_members/errors/registry.d.ts +6 -0
- package/dist/_members/mcp/adapter.d.ts +5 -0
- package/dist/_members/mcp/generated/sceneContract.d.ts +155 -0
- package/dist/_members/mcp/sceneShot.d.ts +38 -0
- package/dist/_members/mcp/sceneShotExample.d.ts +22 -0
- package/dist/_members/media-model/api.d.ts +1 -0
- package/dist/_members/media-model/media-kind.d.ts +1 -1
- package/dist/_members/media-model/testing/mediaStoreContract.d.ts +1 -1
- package/dist/_members/primitives/effects/index.d.ts +1 -0
- package/dist/_members/primitives/effects/stage-camera/config.d.ts +50 -0
- package/dist/_members/primitives/effects/stage-camera/index.d.ts +31 -0
- package/dist/_members/primitives/layouts/flex-layout/config.d.ts +73 -0
- package/dist/_members/primitives/layouts/flex-layout/index.d.ts +4 -0
- package/dist/_members/primitives/layouts/index.d.ts +1 -0
- package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +1 -1
- package/dist/_members/primitives/lib/frameScale.d.ts +4 -0
- package/dist/_members/primitives/lib/index.d.ts +1 -0
- package/dist/_members/primitives/lib/palette.d.ts +30 -30
- package/dist/_members/primitives/lib/text/contrast.d.ts +2 -1
- package/dist/_members/primitives/lib/text/spec.d.ts +0 -8
- package/dist/_members/primitives/lib/types.d.ts +2 -0
- package/dist/_members/primitives/scenes/device-showcase/config.d.ts +41 -0
- package/dist/_members/primitives/scenes/device-showcase/index.d.ts +36 -0
- package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +1 -0
- package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +2 -1
- package/dist/_members/primitives/scenes/index.d.ts +1 -0
- package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +1 -1
- package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +1 -0
- package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +2 -1
- package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +1 -1
- package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +1 -1
- package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -1
- package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
- package/dist/_members/render-harness/css-tree-subpaths.d.ts +11 -0
- package/dist/_members/render-harness/extractSegments.d.ts +1 -0
- package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
- package/dist/_members/render-harness/imageHeader.d.ts +14 -0
- package/dist/_members/render-harness/imageHeader.d.ts.map +1 -0
- package/dist/_members/render-harness/index.d.ts +6 -0
- package/dist/_members/render-harness/index.d.ts.map +1 -1
- package/dist/_members/render-harness/materializeSources.d.ts +46 -2
- package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
- package/dist/_members/render-harness/nodeScenePreparation.d.ts +97 -0
- package/dist/_members/render-harness/nodeScenePreparation.d.ts.map +1 -0
- package/dist/_members/render-harness/remotion-runtime.d.ts +16 -2
- package/dist/_members/render-harness/renderInputAssets.d.ts +1 -1
- package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
- package/dist/_members/render-harness/resolveAssets.d.ts +2 -2
- package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
- package/dist/_members/render-harness/sceneShotAssets.d.ts +17 -0
- package/dist/_members/render-harness/sceneShotAssets.d.ts.map +1 -0
- package/dist/animate/preparation-facts.d.ts +1 -0
- package/dist/animate/preparation-facts.js +22 -0
- package/dist/animate.js +336 -1005
- package/dist/authoring/build-tools.js +7 -6
- package/dist/authoring/context.js +5 -4
- package/dist/authoring/prompts.js +1 -1
- package/dist/authoring/scene.d.ts +1 -0
- package/dist/authoring/scene.js +50 -0
- package/dist/authoring/tools.js +6 -5
- package/dist/authoring.js +49 -29
- package/dist/chunk-2L7PYYJK.js +23 -0
- package/dist/{chunk-ZN6P3KOJ.js → chunk-32TH76H3.js} +2 -2
- package/dist/chunk-5DJ3IEJR.js +4424 -0
- package/dist/chunk-6BVVCRRD.js +26488 -0
- package/dist/{chunk-DQKSCHFC.js → chunk-6EWRIAZA.js} +187 -66
- package/dist/{chunk-YQ7FFW3G.js → chunk-6VWICHOZ.js} +26 -5
- package/dist/{chunk-2PGLNTB7.js → chunk-A74FZCPY.js} +45 -5
- package/dist/{chunk-C5SEPOWD.js → chunk-AS5EXBNS.js} +1792 -707
- package/dist/{chunk-BKHGL4MB.js → chunk-B3GSTQLR.js} +341 -274
- package/dist/chunk-BVA3537Z.js +63 -0
- package/dist/{chunk-DHKQ47Q6.js → chunk-DAARYRNT.js} +6 -1
- package/dist/chunk-DQLYWNLC.js +2063 -0
- package/dist/chunk-E6WHXIDF.js +3619 -0
- package/dist/{chunk-NOEBAV2G.js → chunk-E7GIZEPS.js} +1 -1
- package/dist/{chunk-M2TLRXEO.js → chunk-EXY4JJPH.js} +1 -1
- package/dist/{chunk-GEGRJKKO.js → chunk-F2DJL7P7.js} +1 -1
- package/dist/{chunk-AWT3P5ZN.js → chunk-FVDFPJHT.js} +1 -1
- package/dist/{chunk-EMGFZ3PR.js → chunk-FWSJLHSV.js} +5 -1
- package/dist/{chunk-TMIBBD5E.js → chunk-I5QWBM3M.js} +280 -113
- package/dist/{chunk-IBMJ33EL.js → chunk-I5RX2QZT.js} +1 -1
- package/dist/{chunk-4FOOBSEE.js → chunk-J3DIUG24.js} +1 -0
- package/dist/{chunk-AD5HWBCE.js → chunk-JX53CVJV.js} +14 -5
- package/dist/{chunk-LNBVTDFR.js → chunk-L2AHS3AW.js} +1 -1
- package/dist/{chunk-BDMTUEEZ.js → chunk-LT4PWSR2.js} +2 -2
- package/dist/chunk-MH3UPKWR.js +3415 -0
- package/dist/{chunk-RFXR7ATW.js → chunk-NUKDEOK6.js} +13 -1
- package/dist/{chunk-IJ7PVJTK.js → chunk-ODUWCQI3.js} +3 -2
- package/dist/chunk-QAGGJHAF.js +16 -0
- package/dist/chunk-QS36DMFG.js +332 -0
- package/dist/{chunk-G5BFI32U.js → chunk-RAXHCRVV.js} +1 -1
- package/dist/{chunk-BIBYZJL3.js → chunk-RL5SO653.js} +3 -3
- package/dist/{chunk-ZSZABOE5.js → chunk-S5H6GH6M.js} +1 -1
- package/dist/{chunk-EEXCDFY5.js → chunk-SD25VQDE.js} +1 -1
- package/dist/{chunk-Y3QGYASW.js → chunk-SX523NDS.js} +14 -14
- package/dist/chunk-TARKDVP6.js +430 -0
- package/dist/{chunk-IHFREGFA.js → chunk-TCHPRGC5.js} +18 -2
- package/dist/{chunk-ZCAQHNPI.js → chunk-UKGNHZS4.js} +1 -1
- package/dist/{chunk-KU376ELE.js → chunk-UY77TMKD.js} +31 -44
- package/dist/chunk-VKATKWWR.js +1462 -0
- package/dist/{chunk-CX2IIQ4R.js → chunk-W2245F6G.js} +29 -29
- package/dist/{chunk-XHUYWVYK.js → chunk-WBNFSG6T.js} +1 -1
- package/dist/chunk-WIHXXF3X.js +221 -0
- package/dist/{chunk-XVBOSPZI.js → chunk-X74EEFXV.js} +6 -6
- package/dist/{chunk-7KEUL3FI.js → chunk-XF2QMKRG.js} +9 -1
- package/dist/{chunk-HFC3MKXA.js → chunk-Y4HPN4BC.js} +1 -0
- package/dist/{chunk-6XI57FZZ.js → chunk-YFSBFCXO.js} +1022 -46
- package/dist/{chunk-6ID2J64H.js → chunk-YHC3RXS7.js} +162 -25
- package/dist/{chunk-KKEY5MIW.js → chunk-ZS3A3QUM.js} +16 -16
- package/dist/{chunk-LQUWKBST.js → chunk-ZVG446DJ.js} +139 -10
- package/dist/component-runtime/browserOptions.js +14 -3
- package/dist/component-runtime/contracts.js +35 -3
- package/dist/component-runtime/identity/browser.js +1 -1
- package/dist/component-runtime/identity.js +2 -2
- package/dist/component-runtime/importPolicy.js +2 -2
- package/dist/component-runtime/mediaResolution.d.ts +1 -0
- package/dist/component-runtime/mediaResolution.js +11 -0
- package/dist/component-runtime/render.js +38 -5
- package/dist/component-runtime.js +118 -14
- package/dist/compose.js +27 -21
- package/dist/composition/fonts.js +64 -67
- package/dist/composition/graphics-plan.js +3 -2
- package/dist/composition/ops.js +4 -3
- package/dist/composition/primitive-catalog.js +1 -1
- package/dist/composition/projection.js +10 -3
- package/dist/composition/scene/budget-policy.d.ts +1 -0
- package/dist/composition/scene/budget-policy.js +17 -0
- package/dist/composition/scene/schema.json +2757 -0
- package/dist/composition/scene.d.ts +1 -0
- package/dist/composition/scene.js +275 -0
- package/dist/composition/validators.js +3 -2
- package/dist/composition-ops.js +103 -13
- package/dist/composition.js +12 -5
- package/dist/{context-4GSDBFT3.js → context-IUPQ54V4.js} +5 -4
- package/dist/core/render.js +54 -3
- package/dist/core/select.js +2 -2
- package/dist/core.js +6 -3
- package/dist/director/ai-sdk.js +3 -3
- package/dist/director/domain.js +2 -2
- package/dist/director.js +3 -3
- package/dist/errors.js +1 -1
- package/dist/mcp/adapter.js +4 -4
- package/dist/mcp/core.js +1 -1
- package/dist/mcp/curation.js +1 -1
- package/dist/mcp/server.js +4 -4
- package/dist/mcp.js +4 -4
- package/dist/media-model/media-kind.js +2 -0
- package/dist/media-model/testing.js +16 -11
- package/dist/media-model.js +1 -1
- package/dist/nle-export.js +27 -21
- package/dist/primitives/backgrounds.js +2 -2
- package/dist/primitives/captions.js +21 -11
- package/dist/primitives/effects.js +14 -4
- package/dist/primitives/graphics.json +3 -0
- package/dist/primitives/hero-text.js +4 -3
- package/dist/primitives/layouts.js +9 -2
- package/dist/primitives/lib/frameScale.d.ts +1 -0
- package/dist/primitives/lib/frameScale.js +11 -0
- package/dist/primitives/lib/index.js +18 -10
- package/dist/primitives/lib/palette.js +1 -1
- package/dist/primitives/lib/text/contrast.js +2 -1
- package/dist/primitives/lib/text/typeface.js +1 -1
- package/dist/primitives/lib.js +18 -10
- package/dist/primitives/params-required.json +3 -0
- package/dist/primitives/scenes.js +12 -3
- package/dist/primitives/text.js +5 -5
- package/dist/primitives/transitions.js +2 -2
- package/dist/primitives/ui-blocks.js +7 -6
- package/dist/primitives/version-map.json +5 -2
- package/dist/primitives.js +27 -20
- package/dist/render-harness/cardAssetAdmission.js +2 -2
- package/dist/render-harness/renderInputAssets.js +2 -2
- package/dist/render-harness.js +876 -126
- package/package.json +51 -17
- package/dist/_members/animate/three/drei.d.ts +0 -6
- package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +0 -9
- package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +0 -1
- package/dist/chunk-4JRUGT2Y.js +0 -544
- package/dist/chunk-5OTQ7M43.js +0 -718
- package/dist/chunk-CGHTMZNC.js +0 -6
- package/dist/chunk-QBKDEO7J.js +0 -9521
- /package/dist/{chunk-H5LMJKZU.js → chunk-JVDUSOYG.js} +0 -0
package/dist/chunk-5OTQ7M43.js
DELETED
|
@@ -1,718 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
cacheDir,
|
|
3
|
-
componentDir
|
|
4
|
-
} from "./chunk-WB2VFDQZ.js";
|
|
5
|
-
import {
|
|
6
|
-
COMPONENT_CHROMIUM_OPTIONS
|
|
7
|
-
} from "./chunk-CGHTMZNC.js";
|
|
8
|
-
import {
|
|
9
|
-
ComponentRuntimeError,
|
|
10
|
-
ComponentRuntimeErrorCode
|
|
11
|
-
} from "./chunk-LQUWKBST.js";
|
|
12
|
-
|
|
13
|
-
// ../execution/component-runtime/src/browserFirewall.ts
|
|
14
|
-
function isLoopbackHost(hostname) {
|
|
15
|
-
return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "[::1]";
|
|
16
|
-
}
|
|
17
|
-
function decideComponentRequest(url, resourceType, documentOrigin, allowedAssetOrigins) {
|
|
18
|
-
let parsed;
|
|
19
|
-
try {
|
|
20
|
-
parsed = new URL(url);
|
|
21
|
-
} catch {
|
|
22
|
-
return { allow: false, documentOrigin };
|
|
23
|
-
}
|
|
24
|
-
if (parsed.protocol === "data:" || parsed.protocol === "blob:" || parsed.protocol === "about:") {
|
|
25
|
-
return { allow: true, documentOrigin };
|
|
26
|
-
}
|
|
27
|
-
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
28
|
-
return { allow: false, documentOrigin };
|
|
29
|
-
}
|
|
30
|
-
if (documentOrigin === null && resourceType === "Document" && isLoopbackHost(parsed.hostname)) {
|
|
31
|
-
return { allow: true, documentOrigin: parsed.origin };
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
allow: parsed.origin === documentOrigin || allowedAssetOrigins.has(parsed.origin),
|
|
35
|
-
documentOrigin
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
var PAGE_LOCKDOWN = `
|
|
39
|
-
Object.defineProperties(globalThis, {
|
|
40
|
-
open: { value: undefined },
|
|
41
|
-
Worker: { value: undefined },
|
|
42
|
-
SharedWorker: { value: undefined },
|
|
43
|
-
RTCPeerConnection: { value: undefined },
|
|
44
|
-
webkitRTCPeerConnection: { value: undefined },
|
|
45
|
-
WebSocket: { value: undefined },
|
|
46
|
-
EventSource: { value: undefined }
|
|
47
|
-
});
|
|
48
|
-
`;
|
|
49
|
-
var COMPONENT_PAGE_LOCKDOWN = PAGE_LOCKDOWN;
|
|
50
|
-
async function installComponentRequestFirewall(browser, allowedAssetOrigins) {
|
|
51
|
-
let closing = false;
|
|
52
|
-
const denied = [];
|
|
53
|
-
const closeBrowser = browser.close.bind(browser);
|
|
54
|
-
browser.close = async (options) => {
|
|
55
|
-
closing = true;
|
|
56
|
-
return await closeBrowser(options);
|
|
57
|
-
};
|
|
58
|
-
const configureSession = async (client) => {
|
|
59
|
-
let documentOrigin = null;
|
|
60
|
-
client.on("Fetch.requestPaused", (event) => {
|
|
61
|
-
const decision = decideComponentRequest(
|
|
62
|
-
event.request.url,
|
|
63
|
-
event.resourceType,
|
|
64
|
-
documentOrigin,
|
|
65
|
-
allowedAssetOrigins
|
|
66
|
-
);
|
|
67
|
-
documentOrigin = decision.documentOrigin;
|
|
68
|
-
if (!decision.allow) denied.push(event.request.url);
|
|
69
|
-
const action = decision.allow ? client.send("Fetch.continueRequest", { requestId: event.requestId }) : client.send("Fetch.failRequest", { requestId: event.requestId, errorReason: "BlockedByClient" });
|
|
70
|
-
void action.catch(() => {
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
await client.send("Fetch.enable", { patterns: [{ urlPattern: "*" }] });
|
|
74
|
-
await client.send("Page.addScriptToEvaluateOnNewDocument", { source: PAGE_LOCKDOWN });
|
|
75
|
-
await client.send("Runtime.runIfWaitingForDebugger");
|
|
76
|
-
};
|
|
77
|
-
browser.connection.on("sessionattached", (client) => {
|
|
78
|
-
void configureSession(client).catch(() => {
|
|
79
|
-
if (!closing) void browser.close({ silent: true }).catch(() => {
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
await browser.connection.send("Target.setAutoAttach", {
|
|
84
|
-
autoAttach: true,
|
|
85
|
-
waitForDebuggerOnStart: true,
|
|
86
|
-
flatten: true,
|
|
87
|
-
filter: [{ type: "page", exclude: false }, { exclude: true }]
|
|
88
|
-
});
|
|
89
|
-
return { deniedRequests: () => denied };
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// ../execution/component-runtime/src/render.ts
|
|
93
|
-
import { mkdirSync, realpathSync, writeFileSync } from "fs";
|
|
94
|
-
import { dirname, isAbsolute, join, relative, resolve, sep } from "path";
|
|
95
|
-
import { fileURLToPath } from "url";
|
|
96
|
-
|
|
97
|
-
// ../execution/component-runtime/src/determinism.ts
|
|
98
|
-
function createDeterministicRuntimeScope(target) {
|
|
99
|
-
const failure = (name) => {
|
|
100
|
-
throw new Error(`Ambient nondeterministic API is not allowed: ${name}. Use render.frame, render.fps, and render.seed.`);
|
|
101
|
-
};
|
|
102
|
-
const deniedFunction = (name) => function deniedAmbientApi() {
|
|
103
|
-
return failure(name);
|
|
104
|
-
};
|
|
105
|
-
const guardedFacade = (value, label, blockedKeys, denyCall = false) => {
|
|
106
|
-
const blocked = new Set(blockedKeys);
|
|
107
|
-
const deniedByKey = /* @__PURE__ */ new Map();
|
|
108
|
-
const denied = (key) => {
|
|
109
|
-
let fn = deniedByKey.get(key);
|
|
110
|
-
if (!fn) {
|
|
111
|
-
fn = deniedFunction(`${label}.${String(key)}`);
|
|
112
|
-
deniedByKey.set(key, fn);
|
|
113
|
-
}
|
|
114
|
-
return fn;
|
|
115
|
-
};
|
|
116
|
-
return new Proxy(value, {
|
|
117
|
-
get(original, key, receiver) {
|
|
118
|
-
return blocked.has(key) ? denied(key) : Reflect.get(original, key, receiver);
|
|
119
|
-
},
|
|
120
|
-
getOwnPropertyDescriptor(original, key) {
|
|
121
|
-
const descriptor = Reflect.getOwnPropertyDescriptor(original, key);
|
|
122
|
-
if (!blocked.has(key) || descriptor?.configurable === false) return descriptor;
|
|
123
|
-
return {
|
|
124
|
-
configurable: true,
|
|
125
|
-
enumerable: descriptor?.enumerable ?? false,
|
|
126
|
-
writable: false,
|
|
127
|
-
value: denied(key)
|
|
128
|
-
};
|
|
129
|
-
},
|
|
130
|
-
set(original, key, next, receiver) {
|
|
131
|
-
if (blocked.has(key)) return failure(`${label}.${String(key)} mutation`);
|
|
132
|
-
return Reflect.set(original, key, next, receiver);
|
|
133
|
-
},
|
|
134
|
-
defineProperty(original, key, descriptor) {
|
|
135
|
-
if (blocked.has(key)) return failure(`${label}.${String(key)} mutation`);
|
|
136
|
-
return Reflect.defineProperty(original, key, descriptor);
|
|
137
|
-
},
|
|
138
|
-
deleteProperty(original, key) {
|
|
139
|
-
if (blocked.has(key)) return failure(`${label}.${String(key)} mutation`);
|
|
140
|
-
return Reflect.deleteProperty(original, key);
|
|
141
|
-
},
|
|
142
|
-
apply(original, thisArg, args) {
|
|
143
|
-
if (denyCall) return failure(label);
|
|
144
|
-
return Reflect.apply(original, thisArg, args);
|
|
145
|
-
},
|
|
146
|
-
construct(original, args, newTarget) {
|
|
147
|
-
if (denyCall) return failure(label);
|
|
148
|
-
return Reflect.construct(original, args, newTarget);
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
};
|
|
152
|
-
const overrides = /* @__PURE__ */ new Map();
|
|
153
|
-
const math = target.Math;
|
|
154
|
-
if (math && (typeof math === "object" || typeof math === "function")) {
|
|
155
|
-
overrides.set("Math", guardedFacade(math, "Math", ["random"]));
|
|
156
|
-
}
|
|
157
|
-
const date = target.Date;
|
|
158
|
-
if (typeof date === "function") {
|
|
159
|
-
overrides.set("Date", guardedFacade(date, "Date", ["now"], true));
|
|
160
|
-
}
|
|
161
|
-
const performance = target.performance;
|
|
162
|
-
if (performance && (typeof performance === "object" || typeof performance === "function")) {
|
|
163
|
-
overrides.set("performance", guardedFacade(performance, "performance", ["now", "timeOrigin"]));
|
|
164
|
-
}
|
|
165
|
-
const crypto = target.crypto;
|
|
166
|
-
if (crypto && (typeof crypto === "object" || typeof crypto === "function")) {
|
|
167
|
-
overrides.set("crypto", guardedFacade(crypto, "crypto", ["getRandomValues", "randomUUID"]));
|
|
168
|
-
}
|
|
169
|
-
for (const name of ["requestAnimationFrame", "setTimeout", "setInterval", "Worker", "SharedWorker"]) {
|
|
170
|
-
if (name in target) overrides.set(name, deniedFunction(name));
|
|
171
|
-
}
|
|
172
|
-
let scope;
|
|
173
|
-
scope = new Proxy(target, {
|
|
174
|
-
get(original, key) {
|
|
175
|
-
if (key === "globalThis" || key === "window" || key === "self") return scope;
|
|
176
|
-
return overrides.has(key) ? overrides.get(key) : Reflect.get(original, key, original);
|
|
177
|
-
},
|
|
178
|
-
getOwnPropertyDescriptor(original, key) {
|
|
179
|
-
if (key === "globalThis" || key === "window" || key === "self" || overrides.has(key)) {
|
|
180
|
-
const descriptor = Reflect.getOwnPropertyDescriptor(original, key);
|
|
181
|
-
if (descriptor?.configurable === false) return descriptor;
|
|
182
|
-
return {
|
|
183
|
-
configurable: true,
|
|
184
|
-
enumerable: descriptor?.enumerable ?? true,
|
|
185
|
-
writable: false,
|
|
186
|
-
value: key === "globalThis" || key === "window" || key === "self" ? scope : overrides.get(key)
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
return Reflect.getOwnPropertyDescriptor(original, key);
|
|
190
|
-
},
|
|
191
|
-
set(original, key, value, receiver) {
|
|
192
|
-
if (overrides.has(key) || key === "globalThis" || key === "window" || key === "self") {
|
|
193
|
-
return failure(`${String(key)} mutation`);
|
|
194
|
-
}
|
|
195
|
-
return Reflect.set(original, key, value, receiver);
|
|
196
|
-
},
|
|
197
|
-
defineProperty(original, key, descriptor) {
|
|
198
|
-
if (overrides.has(key) || key === "globalThis" || key === "window" || key === "self") {
|
|
199
|
-
return failure(`${String(key)} mutation`);
|
|
200
|
-
}
|
|
201
|
-
return Reflect.defineProperty(original, key, descriptor);
|
|
202
|
-
},
|
|
203
|
-
deleteProperty(original, key) {
|
|
204
|
-
if (overrides.has(key) || key === "globalThis" || key === "window" || key === "self") {
|
|
205
|
-
return failure(`${String(key)} mutation`);
|
|
206
|
-
}
|
|
207
|
-
return Reflect.deleteProperty(original, key);
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
return scope;
|
|
211
|
-
}
|
|
212
|
-
function deterministicRuntimeScopeSource() {
|
|
213
|
-
return createDeterministicRuntimeScope.toString();
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
// ../execution/component-runtime/src/render.ts
|
|
217
|
-
var LOCAL_ROOT_FILENAME = "Root.local.tsx";
|
|
218
|
-
var LOCAL_ENTRY_FILENAME = "entry.local.tsx";
|
|
219
|
-
var LOCAL_COMPOSITION_ID = "CueFrameLocalStill";
|
|
220
|
-
var GRAPHICS_ATTESTATION_PREFIX = "__cueframe_graphics_v2__:";
|
|
221
|
-
var BROWSER_RUNTIME_ERROR_PREFIX = "__cueframe_component_error_v2__:";
|
|
222
|
-
function componentRuntimeError(error, fallbackCode, retryable = false) {
|
|
223
|
-
if (error instanceof ComponentRuntimeError) return error;
|
|
224
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
225
|
-
const marker = message.lastIndexOf(BROWSER_RUNTIME_ERROR_PREFIX);
|
|
226
|
-
if (marker >= 0) {
|
|
227
|
-
const payload = message.slice(marker + BROWSER_RUNTIME_ERROR_PREFIX.length);
|
|
228
|
-
const separator = payload.indexOf(":");
|
|
229
|
-
const code = ComponentRuntimeErrorCode.safeParse(separator >= 0 ? payload.slice(0, separator) : payload);
|
|
230
|
-
if (code.success) {
|
|
231
|
-
return new ComponentRuntimeError(
|
|
232
|
-
code.data,
|
|
233
|
-
separator >= 0 ? payload.slice(separator + 1) : message,
|
|
234
|
-
{ retryable: code.data === "component_device_lost" || code.data === "component_deadline_exceeded", cause: error }
|
|
235
|
-
);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
return new ComponentRuntimeError(fallbackCode, message, { retryable, cause: error });
|
|
239
|
-
}
|
|
240
|
-
function parseGraphicsAttestationLog(text) {
|
|
241
|
-
if (!text.startsWith(GRAPHICS_ATTESTATION_PREFIX)) return null;
|
|
242
|
-
try {
|
|
243
|
-
const parsed = JSON.parse(text.slice(GRAPHICS_ATTESTATION_PREFIX.length));
|
|
244
|
-
if (parsed.api !== "canvas2d" && parsed.api !== "webgpu" || parsed.acceleration !== "hardware" && parsed.acceleration !== "software" || parsed.deviceLost !== false) return null;
|
|
245
|
-
return parsed;
|
|
246
|
-
} catch {
|
|
247
|
-
return null;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
function graphicsCollector(required) {
|
|
251
|
-
let attestation = null;
|
|
252
|
-
return {
|
|
253
|
-
onBrowserLog(log) {
|
|
254
|
-
const parsed = parseGraphicsAttestationLog(log.text);
|
|
255
|
-
if (!parsed) return;
|
|
256
|
-
if (parsed.api !== required.api) {
|
|
257
|
-
throw new ComponentRuntimeError(
|
|
258
|
-
"component_graphics_mismatch",
|
|
259
|
-
`Renderer reported ${parsed.api} for a ${required.api} component.`
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
if (attestation && JSON.stringify(attestation) !== JSON.stringify(parsed)) {
|
|
263
|
-
throw new ComponentRuntimeError(
|
|
264
|
-
"component_graphics_mismatch",
|
|
265
|
-
"Renderer workers reported inconsistent graphics adapters."
|
|
266
|
-
);
|
|
267
|
-
}
|
|
268
|
-
attestation = parsed;
|
|
269
|
-
},
|
|
270
|
-
receipt() {
|
|
271
|
-
if (!attestation) {
|
|
272
|
-
throw new ComponentRuntimeError(
|
|
273
|
-
"component_graphics_unavailable",
|
|
274
|
-
`Renderer produced no trusted ${required.api} attestation.`
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
return attestation;
|
|
278
|
-
}
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
function toImportSpecifier(fromDir, toFile) {
|
|
282
|
-
const rel = relative(fromDir, toFile).split("\\").join("/");
|
|
283
|
-
return rel.startsWith(".") ? rel : `./${rel}`;
|
|
284
|
-
}
|
|
285
|
-
function generateLocalRoot(ws, opts) {
|
|
286
|
-
const dir = cacheDir(ws);
|
|
287
|
-
mkdirSync(dir, { recursive: true });
|
|
288
|
-
const componentFile = join(componentDir(ws, opts.id), "index");
|
|
289
|
-
const componentSpecifier = toImportSpecifier(dir, componentFile);
|
|
290
|
-
const root = `// GENERATED by @cueframe/component-runtime \u2014 DO NOT EDIT.
|
|
291
|
-
import React from 'react';
|
|
292
|
-
import { useEffect, useState } from 'react';
|
|
293
|
-
import { Composition, cancelRender, continueRender, delayRender, getInputProps, useCurrentFrame } from 'remotion';
|
|
294
|
-
|
|
295
|
-
const importAuthoredComponent = async () => {
|
|
296
|
-
return import(${JSON.stringify(componentSpecifier)});
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
const GuardedAuthoredComponent: React.FC<{
|
|
300
|
-
Component: React.ComponentType<any>;
|
|
301
|
-
componentProps: Record<string, unknown>;
|
|
302
|
-
}> = ({Component, componentProps}) => {
|
|
303
|
-
return <Component {...componentProps} />;
|
|
304
|
-
};
|
|
305
|
-
|
|
306
|
-
const Resolved: React.FC = () => {
|
|
307
|
-
const input = getInputProps() as {
|
|
308
|
-
params: Record<string, unknown>;
|
|
309
|
-
assets: Record<string, unknown>;
|
|
310
|
-
seed: string;
|
|
311
|
-
graphics: {
|
|
312
|
-
api: 'canvas2d' | 'webgpu';
|
|
313
|
-
required: true;
|
|
314
|
-
accelerationPreference: 'hardware-preferred' | 'software-allowed';
|
|
315
|
-
};
|
|
316
|
-
};
|
|
317
|
-
const frame = useCurrentFrame();
|
|
318
|
-
const [Component, setComponent] = useState<React.ComponentType<any> | null>(null);
|
|
319
|
-
const [waitHandle] = useState(() => input.graphics.api === 'webgpu'
|
|
320
|
-
? delayRender('CueFrame WebGPU admission')
|
|
321
|
-
: null);
|
|
322
|
-
|
|
323
|
-
useEffect(() => {
|
|
324
|
-
let active = true;
|
|
325
|
-
let admissionTimer: ReturnType<typeof setTimeout> | undefined;
|
|
326
|
-
const canvasPrototype = HTMLCanvasElement.prototype as unknown as {
|
|
327
|
-
getContext: (kind: string, ...args: unknown[]) => unknown;
|
|
328
|
-
};
|
|
329
|
-
const originalGetContext = canvasPrototype.getContext;
|
|
330
|
-
|
|
331
|
-
void (async () => {
|
|
332
|
-
try {
|
|
333
|
-
if (input.graphics.api === 'canvas2d') {
|
|
334
|
-
const loaded = await importAuthoredComponent();
|
|
335
|
-
if (!active) return;
|
|
336
|
-
setComponent(() => loaded.default);
|
|
337
|
-
console.info(${JSON.stringify(GRAPHICS_ATTESTATION_PREFIX)} + JSON.stringify({
|
|
338
|
-
api: 'canvas2d', acceleration: 'software', deviceLost: false,
|
|
339
|
-
}));
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
const gpu = (navigator as unknown as { gpu?: { requestAdapter: (options?: unknown) => Promise<unknown> } }).gpu;
|
|
344
|
-
if (!gpu) throw new Error(${JSON.stringify(BROWSER_RUNTIME_ERROR_PREFIX)} + 'component_graphics_unavailable:The staged browser does not expose WebGPU.');
|
|
345
|
-
let adapterInfo: { description?: string; architecture?: string; device?: string; vendor?: string; isFallbackAdapter?: boolean } = {};
|
|
346
|
-
const gpuPrototype = Object.getPrototypeOf(gpu) as { requestAdapter: (options?: unknown) => Promise<any> };
|
|
347
|
-
const originalRequestAdapter = gpuPrototype.requestAdapter;
|
|
348
|
-
gpuPrototype.requestAdapter = async function (options?: unknown) {
|
|
349
|
-
const adapter = await originalRequestAdapter.call(this, options);
|
|
350
|
-
if (adapter?.info) adapterInfo = adapter.info;
|
|
351
|
-
return adapter;
|
|
352
|
-
};
|
|
353
|
-
canvasPrototype.getContext = function (kind: string, ...args: unknown[]) {
|
|
354
|
-
if (kind !== 'webgpu') {
|
|
355
|
-
throw new Error('A WebGPU-required component may only create a WebGPU canvas context.');
|
|
356
|
-
}
|
|
357
|
-
const context = originalGetContext.call(this, kind, ...args) as null | { configure: (configuration: any) => void };
|
|
358
|
-
if (!context) return context;
|
|
359
|
-
const contextPrototype = Object.getPrototypeOf(context) as { configure: (configuration: any) => void; __cueframePatched?: boolean };
|
|
360
|
-
if (!contextPrototype.__cueframePatched) {
|
|
361
|
-
const originalConfigure = contextPrototype.configure;
|
|
362
|
-
Object.defineProperty(contextPrototype, '__cueframePatched', { value: true });
|
|
363
|
-
contextPrototype.configure = function (configuration: any) {
|
|
364
|
-
const result = originalConfigure.call(this, configuration);
|
|
365
|
-
if (active) {
|
|
366
|
-
const adapterName = [adapterInfo.vendor, adapterInfo.architecture, adapterInfo.device, adapterInfo.description]
|
|
367
|
-
.filter(Boolean)
|
|
368
|
-
.join(' ');
|
|
369
|
-
const softwarePattern = /swiftshader|software|fallback/i;
|
|
370
|
-
const acceleration = adapterInfo.isFallbackAdapter === true || softwarePattern.test(adapterName)
|
|
371
|
-
? 'software'
|
|
372
|
-
: 'hardware';
|
|
373
|
-
console.info(${JSON.stringify(GRAPHICS_ATTESTATION_PREFIX)} + JSON.stringify({
|
|
374
|
-
api: 'webgpu', acceleration, adapterName: adapterName || undefined, deviceLost: false,
|
|
375
|
-
}));
|
|
376
|
-
const device = configuration?.device as { lost?: Promise<unknown> } | undefined;
|
|
377
|
-
void device?.lost?.then(() => {
|
|
378
|
-
if (active) cancelRender(new Error(${JSON.stringify(BROWSER_RUNTIME_ERROR_PREFIX)} + 'component_device_lost:WebGPU device was lost during component rendering.'));
|
|
379
|
-
});
|
|
380
|
-
active = false;
|
|
381
|
-
if (admissionTimer) clearTimeout(admissionTimer);
|
|
382
|
-
continueRender(waitHandle as number);
|
|
383
|
-
}
|
|
384
|
-
return result;
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
return context;
|
|
388
|
-
};
|
|
389
|
-
Object.defineProperty(globalThis, 'OffscreenCanvas', { value: undefined, configurable: true });
|
|
390
|
-
const loaded = await importAuthoredComponent();
|
|
391
|
-
if (!active) return;
|
|
392
|
-
setComponent(() => loaded.default);
|
|
393
|
-
admissionTimer = setTimeout(() => {
|
|
394
|
-
if (active) cancelRender(new Error(${JSON.stringify(BROWSER_RUNTIME_ERROR_PREFIX)} + 'component_graphics_mismatch:The component did not configure a WebGPU canvas surface.'));
|
|
395
|
-
}, 10_000);
|
|
396
|
-
} catch (error) {
|
|
397
|
-
cancelRender(error instanceof Error ? error : new Error(String(error)));
|
|
398
|
-
}
|
|
399
|
-
})();
|
|
400
|
-
return () => {
|
|
401
|
-
active = false;
|
|
402
|
-
if (admissionTimer) clearTimeout(admissionTimer);
|
|
403
|
-
canvasPrototype.getContext = originalGetContext;
|
|
404
|
-
};
|
|
405
|
-
}, []);
|
|
406
|
-
|
|
407
|
-
if (!Component) return null;
|
|
408
|
-
return <GuardedAuthoredComponent
|
|
409
|
-
Component={Component}
|
|
410
|
-
componentProps={{
|
|
411
|
-
durationInFrames: ${opts.durationInFrames},
|
|
412
|
-
params: input.params,
|
|
413
|
-
assets: input.assets,
|
|
414
|
-
render: {
|
|
415
|
-
frame,
|
|
416
|
-
fps: ${opts.fps},
|
|
417
|
-
width: ${opts.width},
|
|
418
|
-
height: ${opts.height},
|
|
419
|
-
seed: input.seed,
|
|
420
|
-
colorSpace: 'srgb',
|
|
421
|
-
},
|
|
422
|
-
}}
|
|
423
|
-
/>;
|
|
424
|
-
};
|
|
425
|
-
|
|
426
|
-
export const RemotionRoot: React.FC = () => (
|
|
427
|
-
<Composition
|
|
428
|
-
id=${JSON.stringify(LOCAL_COMPOSITION_ID)}
|
|
429
|
-
component={Resolved}
|
|
430
|
-
durationInFrames={${opts.durationInFrames}}
|
|
431
|
-
fps={${opts.fps}}
|
|
432
|
-
width={${opts.width}}
|
|
433
|
-
height={${opts.height}}
|
|
434
|
-
defaultProps={{}}
|
|
435
|
-
/>
|
|
436
|
-
);
|
|
437
|
-
`;
|
|
438
|
-
writeFileSync(join(dir, LOCAL_ROOT_FILENAME), root);
|
|
439
|
-
const entry = `// GENERATED by @cueframe/component-runtime \u2014 DO NOT EDIT.
|
|
440
|
-
import { registerRoot } from 'remotion';
|
|
441
|
-
import { RemotionRoot } from './${LOCAL_ROOT_FILENAME}';
|
|
442
|
-
registerRoot(RemotionRoot);
|
|
443
|
-
`;
|
|
444
|
-
const entryPath = join(dir, LOCAL_ENTRY_FILENAME);
|
|
445
|
-
writeFileSync(entryPath, entry);
|
|
446
|
-
return entryPath;
|
|
447
|
-
}
|
|
448
|
-
var DeterministicAuthoredModulePlugin = class {
|
|
449
|
-
#authoredComponentRoot;
|
|
450
|
-
#scopeSource;
|
|
451
|
-
constructor(authoredComponentRoot) {
|
|
452
|
-
this.#authoredComponentRoot = realpathSync(authoredComponentRoot);
|
|
453
|
-
this.#scopeSource = deterministicRuntimeScopeSource();
|
|
454
|
-
}
|
|
455
|
-
apply(compiler) {
|
|
456
|
-
const pluginName = "CueFrameDeterministicAuthoredModulePlugin";
|
|
457
|
-
compiler.hooks.compilation.tap(pluginName, (compilation) => {
|
|
458
|
-
const hooks = compiler.webpack.javascript.JavascriptModulesPlugin.getCompilationHooks(compilation);
|
|
459
|
-
const { ConcatSource } = compiler.webpack.sources;
|
|
460
|
-
hooks.renderModuleContent.tap(
|
|
461
|
-
pluginName,
|
|
462
|
-
(source, module) => {
|
|
463
|
-
if (!module.resource) return source;
|
|
464
|
-
const resource = realpathSync(module.resource.split("?")[0]);
|
|
465
|
-
const relativeResource = relative(this.#authoredComponentRoot, resource);
|
|
466
|
-
const belongsToAuthoredComponent = relativeResource === "" || relativeResource !== ".." && !relativeResource.startsWith(`..${sep}`) && !isAbsolute(relativeResource);
|
|
467
|
-
if (!belongsToAuthoredComponent) return source;
|
|
468
|
-
return new ConcatSource(
|
|
469
|
-
"const __cueframeHostGlobal = globalThis;\n{\nconst {globalThis, window, self, Math, Date, performance, crypto, requestAnimationFrame, setTimeout, setInterval, Worker, SharedWorker} = (",
|
|
470
|
-
this.#scopeSource,
|
|
471
|
-
")(__cueframeHostGlobal);\n{\n",
|
|
472
|
-
source,
|
|
473
|
-
"\n}\n}\n"
|
|
474
|
-
);
|
|
475
|
-
}
|
|
476
|
-
);
|
|
477
|
-
});
|
|
478
|
-
}
|
|
479
|
-
};
|
|
480
|
-
function buildLocalWebpackOverride(renderEntryRoot, authoredComponentRoot) {
|
|
481
|
-
const animateEntry = join(resolve(renderEntryRoot, ".."), "animate", "src", "index.ts");
|
|
482
|
-
return (config) => ({
|
|
483
|
-
...config,
|
|
484
|
-
resolve: {
|
|
485
|
-
...config.resolve,
|
|
486
|
-
modules: [
|
|
487
|
-
...config.resolve?.modules ?? ["node_modules"],
|
|
488
|
-
join(renderEntryRoot, "node_modules"),
|
|
489
|
-
join(resolve(renderEntryRoot, ".."), "animate", "node_modules"),
|
|
490
|
-
join(resolve(renderEntryRoot, "..", ".."), "node_modules"),
|
|
491
|
-
join(resolve(renderEntryRoot, "..", "..", ".."), "node_modules")
|
|
492
|
-
],
|
|
493
|
-
alias: {
|
|
494
|
-
"@cueframe/animate$": animateEntry
|
|
495
|
-
}
|
|
496
|
-
},
|
|
497
|
-
plugins: [
|
|
498
|
-
...config.plugins ?? [],
|
|
499
|
-
new DeterministicAuthoredModulePlugin(authoredComponentRoot)
|
|
500
|
-
]
|
|
501
|
-
});
|
|
502
|
-
}
|
|
503
|
-
async function importFromRenderEntry(renderEntryRoot, spec) {
|
|
504
|
-
const { createRequire } = await import("module");
|
|
505
|
-
const { pathToFileURL } = await import("url");
|
|
506
|
-
const requireFromRenderEntry = createRequire(join(renderEntryRoot, "package.json"));
|
|
507
|
-
return await import(pathToFileURL(requireFromRenderEntry.resolve(spec)).href);
|
|
508
|
-
}
|
|
509
|
-
function resolveRenderEntryRoot(override) {
|
|
510
|
-
if (override) return override;
|
|
511
|
-
if (process.env.RENDER_ENTRY_ROOT) return process.env.RENDER_ENTRY_ROOT;
|
|
512
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
513
|
-
return join(resolve(here, "..", ".."), "render-entry");
|
|
514
|
-
}
|
|
515
|
-
async function prepareLocalBundle(opts) {
|
|
516
|
-
const renderEntryRoot = resolveRenderEntryRoot(opts.renderEntryRoot);
|
|
517
|
-
const browserExecutable = process.env.REMOTION_CHROME_EXECUTABLE || void 0;
|
|
518
|
-
const entryPoint = generateLocalRoot(opts.ws, {
|
|
519
|
-
id: opts.id,
|
|
520
|
-
width: opts.width,
|
|
521
|
-
height: opts.height,
|
|
522
|
-
fps: opts.fps,
|
|
523
|
-
durationInFrames: opts.durationInFrames
|
|
524
|
-
});
|
|
525
|
-
const { bundle } = await importFromRenderEntry(
|
|
526
|
-
renderEntryRoot,
|
|
527
|
-
"@remotion/bundler"
|
|
528
|
-
);
|
|
529
|
-
let serveUrl;
|
|
530
|
-
try {
|
|
531
|
-
serveUrl = await bundle({
|
|
532
|
-
entryPoint,
|
|
533
|
-
webpackOverride: buildLocalWebpackOverride(renderEntryRoot, componentDir(opts.ws, opts.id))
|
|
534
|
-
});
|
|
535
|
-
} catch (error) {
|
|
536
|
-
throw componentRuntimeError(error, "component_does_not_compile");
|
|
537
|
-
}
|
|
538
|
-
return {
|
|
539
|
-
serveUrl,
|
|
540
|
-
browserExecutable,
|
|
541
|
-
inputProps: {
|
|
542
|
-
params: opts.params,
|
|
543
|
-
assets: opts.assets ?? {},
|
|
544
|
-
seed: opts.seed ?? "cueframe",
|
|
545
|
-
graphics: opts.graphics ?? {
|
|
546
|
-
api: "canvas2d",
|
|
547
|
-
required: true,
|
|
548
|
-
accelerationPreference: "software-allowed"
|
|
549
|
-
}
|
|
550
|
-
},
|
|
551
|
-
renderEntryRoot
|
|
552
|
-
};
|
|
553
|
-
}
|
|
554
|
-
async function renderComponentStill(opts) {
|
|
555
|
-
const width = opts.width ?? 1920;
|
|
556
|
-
const height = opts.height ?? 1080;
|
|
557
|
-
const fps = opts.fps ?? 30;
|
|
558
|
-
const durationInFrames = opts.durationInFrames ?? 1;
|
|
559
|
-
const frame = opts.frame ?? 0;
|
|
560
|
-
const { serveUrl, browserExecutable, inputProps, renderEntryRoot } = await prepareLocalBundle({
|
|
561
|
-
ws: opts.ws,
|
|
562
|
-
id: opts.id,
|
|
563
|
-
width,
|
|
564
|
-
height,
|
|
565
|
-
fps,
|
|
566
|
-
durationInFrames,
|
|
567
|
-
params: opts.params,
|
|
568
|
-
assets: opts.assets,
|
|
569
|
-
seed: opts.seed,
|
|
570
|
-
graphics: opts.graphics,
|
|
571
|
-
renderEntryRoot: opts.renderEntryRoot
|
|
572
|
-
});
|
|
573
|
-
const { openBrowser, selectComposition, renderStill } = await importFromRenderEntry(
|
|
574
|
-
renderEntryRoot,
|
|
575
|
-
"@remotion/renderer"
|
|
576
|
-
);
|
|
577
|
-
const requiredGraphics = opts.graphics ?? {
|
|
578
|
-
api: "canvas2d",
|
|
579
|
-
required: true,
|
|
580
|
-
accelerationPreference: "software-allowed"
|
|
581
|
-
};
|
|
582
|
-
const collector = graphicsCollector(requiredGraphics);
|
|
583
|
-
let browser;
|
|
584
|
-
try {
|
|
585
|
-
browser = await openBrowser("chrome", {
|
|
586
|
-
browserExecutable,
|
|
587
|
-
chromiumOptions: COMPONENT_CHROMIUM_OPTIONS
|
|
588
|
-
});
|
|
589
|
-
} catch (error) {
|
|
590
|
-
throw componentRuntimeError(error, "component_resource_exhausted", true);
|
|
591
|
-
}
|
|
592
|
-
const firewall = await installComponentRequestFirewall(browser, opts.allowedAssetOrigins ?? /* @__PURE__ */ new Set());
|
|
593
|
-
try {
|
|
594
|
-
const composition = await selectComposition({
|
|
595
|
-
serveUrl,
|
|
596
|
-
id: LOCAL_COMPOSITION_ID,
|
|
597
|
-
inputProps,
|
|
598
|
-
puppeteerInstance: browser,
|
|
599
|
-
onBrowserLog: collector.onBrowserLog
|
|
600
|
-
});
|
|
601
|
-
const pngPath = join(cacheDir(opts.ws), `still-${opts.id}.png`);
|
|
602
|
-
await renderStill({
|
|
603
|
-
composition,
|
|
604
|
-
serveUrl,
|
|
605
|
-
inputProps,
|
|
606
|
-
output: pngPath,
|
|
607
|
-
frame,
|
|
608
|
-
puppeteerInstance: browser,
|
|
609
|
-
timeoutInMilliseconds: 12e4,
|
|
610
|
-
onBrowserLog: collector.onBrowserLog
|
|
611
|
-
});
|
|
612
|
-
const denied = firewall.deniedRequests();
|
|
613
|
-
if (denied.length > 0) {
|
|
614
|
-
throw new ComponentRuntimeError("component_network_denied", `Component attempted ${denied.length} denied network request(s).`);
|
|
615
|
-
}
|
|
616
|
-
return { pngPath, actualGraphics: collector.receipt() };
|
|
617
|
-
} catch (error) {
|
|
618
|
-
throw componentRuntimeError(error, "component_runtime_error");
|
|
619
|
-
} finally {
|
|
620
|
-
await browser.close({ silent: true });
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
function alphaRenderConfig(codec) {
|
|
624
|
-
return codec === "prores" ? { codec: "prores", proResProfile: "4444", pixelFormat: "yuva444p10le", imageFormat: "png", muted: true } : { codec: "vp9", pixelFormat: "yuva420p", imageFormat: "png", muted: true };
|
|
625
|
-
}
|
|
626
|
-
function alphaExt(codec) {
|
|
627
|
-
return codec === "prores" ? "mov" : "webm";
|
|
628
|
-
}
|
|
629
|
-
async function renderComponentAlpha(opts) {
|
|
630
|
-
const width = opts.width ?? 1920;
|
|
631
|
-
const height = opts.height ?? 1080;
|
|
632
|
-
const fps = opts.fps ?? 30;
|
|
633
|
-
const durationInFrames = opts.durationInFrames ?? fps * 3;
|
|
634
|
-
const codec = opts.codec ?? "prores";
|
|
635
|
-
const { serveUrl, browserExecutable, inputProps, renderEntryRoot } = await prepareLocalBundle({
|
|
636
|
-
ws: opts.ws,
|
|
637
|
-
id: opts.id,
|
|
638
|
-
width,
|
|
639
|
-
height,
|
|
640
|
-
fps,
|
|
641
|
-
durationInFrames,
|
|
642
|
-
params: opts.params,
|
|
643
|
-
assets: opts.assets,
|
|
644
|
-
seed: opts.seed,
|
|
645
|
-
graphics: opts.graphics,
|
|
646
|
-
renderEntryRoot: opts.renderEntryRoot
|
|
647
|
-
});
|
|
648
|
-
const { openBrowser, selectComposition, renderMedia } = await importFromRenderEntry(
|
|
649
|
-
renderEntryRoot,
|
|
650
|
-
"@remotion/renderer"
|
|
651
|
-
);
|
|
652
|
-
const requiredGraphics = opts.graphics ?? {
|
|
653
|
-
api: "canvas2d",
|
|
654
|
-
required: true,
|
|
655
|
-
accelerationPreference: "software-allowed"
|
|
656
|
-
};
|
|
657
|
-
const collector = graphicsCollector(requiredGraphics);
|
|
658
|
-
let browser;
|
|
659
|
-
try {
|
|
660
|
-
browser = await openBrowser("chrome", {
|
|
661
|
-
browserExecutable,
|
|
662
|
-
chromiumOptions: COMPONENT_CHROMIUM_OPTIONS
|
|
663
|
-
});
|
|
664
|
-
} catch (error) {
|
|
665
|
-
throw componentRuntimeError(error, "component_resource_exhausted", true);
|
|
666
|
-
}
|
|
667
|
-
const firewall = await installComponentRequestFirewall(browser, opts.allowedAssetOrigins ?? /* @__PURE__ */ new Set());
|
|
668
|
-
try {
|
|
669
|
-
const composition = await selectComposition({
|
|
670
|
-
serveUrl,
|
|
671
|
-
id: LOCAL_COMPOSITION_ID,
|
|
672
|
-
inputProps,
|
|
673
|
-
puppeteerInstance: browser,
|
|
674
|
-
onBrowserLog: collector.onBrowserLog
|
|
675
|
-
});
|
|
676
|
-
const rangeSuffix = opts.frameRange ? `-${opts.frameRange[0]}-${opts.frameRange[1]}` : "";
|
|
677
|
-
const videoPath = join(cacheDir(opts.ws), `alpha-${opts.id}${rangeSuffix}.${alphaExt(codec)}`);
|
|
678
|
-
await renderMedia({
|
|
679
|
-
composition,
|
|
680
|
-
serveUrl,
|
|
681
|
-
inputProps,
|
|
682
|
-
puppeteerInstance: browser,
|
|
683
|
-
outputLocation: videoPath,
|
|
684
|
-
...alphaRenderConfig(codec),
|
|
685
|
-
onBrowserLog: collector.onBrowserLog,
|
|
686
|
-
concurrency: 1,
|
|
687
|
-
...opts.frameRange ? { frameRange: opts.frameRange } : {}
|
|
688
|
-
});
|
|
689
|
-
const denied = firewall.deniedRequests();
|
|
690
|
-
if (denied.length > 0) {
|
|
691
|
-
throw new ComponentRuntimeError("component_network_denied", `Component attempted ${denied.length} denied network request(s).`);
|
|
692
|
-
}
|
|
693
|
-
return { videoPath, actualGraphics: collector.receipt() };
|
|
694
|
-
} catch (error) {
|
|
695
|
-
throw componentRuntimeError(error, "component_runtime_error");
|
|
696
|
-
} finally {
|
|
697
|
-
await browser.close({ silent: true });
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
export {
|
|
702
|
-
decideComponentRequest,
|
|
703
|
-
COMPONENT_PAGE_LOCKDOWN,
|
|
704
|
-
installComponentRequestFirewall,
|
|
705
|
-
LOCAL_ROOT_FILENAME,
|
|
706
|
-
LOCAL_ENTRY_FILENAME,
|
|
707
|
-
LOCAL_COMPOSITION_ID,
|
|
708
|
-
GRAPHICS_ATTESTATION_PREFIX,
|
|
709
|
-
parseGraphicsAttestationLog,
|
|
710
|
-
generateLocalRoot,
|
|
711
|
-
buildLocalWebpackOverride,
|
|
712
|
-
importFromRenderEntry,
|
|
713
|
-
resolveRenderEntryRoot,
|
|
714
|
-
renderComponentStill,
|
|
715
|
-
alphaRenderConfig,
|
|
716
|
-
alphaExt,
|
|
717
|
-
renderComponentAlpha
|
|
718
|
-
};
|