mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-11-04 04:46:59 +00:00
* fix(core): a data script in a sub-composition no longer stops every timeline A sub-composition's <script type="application/json"> was wrapped and run as JavaScript, and because the bundle merges every composition script into one, its parse error stopped every scene's timeline. Data scripts now stay in the DOM as authored, and a script run that does not parse is left unmerged so a bad script fails alone. * fix(core): render and preview keep a broken composition script from stopping the rest The render path's script merge had the same gap as the bundler: one script that does not parse stopped every timeline. Both now share one parse check. A run left unmerged, and every scene-part script, is still escaped, so a string holding "</script>" can no longer end the script early in preview. * refactor(core): carry the bundler's script-merge reasons in names, not comments * fix(core): every composition path runs only the scripts a browser would A script check now matches the browser (esbuild accepted export and top-level await), so such a script can no longer stop every timeline. Inline template compositions keep data scripts and run module and import map scripts as such. A data script beside the composition root is mounted next to it, a nomodule script never runs, and the render path merges scripts on a page with no head. * fix(core): keep inline-template data scripts and run a script with a top-level return alone - parsesAsScript compiles with vm.Script, so a top-level return or new.target no longer passes as mergeable and stops every timeline. - The bundler's inline <template id="X-template"> path asks the shared assembly plan for its root and mounts the inert scripts authored beside it. - nomodule only stops classic scripts; type="module" nomodule runs, as in browsers. * refactor(core): the inline template path reads its root id from the shared assembly plan * fix(core): a broken composition script stays apart under Bun as well as Node parsesAsScript now parses with acorn in script mode instead of vm.Script. Bun 1.3's vm.Script compiles lazily and accepted any text, so the Studio dev server merged a broken script with the rest and every timeline stopped. acorn is already locked for parsers and lint; core now declares it. * test(core): name the parse-check test for what it pins * style(core): wrap the data-block comment under the line limit