@hyperframes/producer 0.4.4 → 0.4.6

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.
@@ -6,10 +6,20 @@
6
6
  * into index.html on-the-fly, so Puppeteer can load the composition with
7
7
  * all relative URLs (compositions, CSS, JS, assets) resolving correctly.
8
8
  */
9
+ declare const VIRTUAL_TIME_SHIM: string;
10
+ /**
11
+ * Bridge script: maps window.__player (Hyperframe runtime) → window.__hf (engine protocol).
12
+ * Injected after RENDER_MODE_SCRIPT so the engine's frameCapture can find window.__hf.
13
+ */
14
+ declare const HF_BRIDGE_SCRIPT = "(function() {\n var __realSetInterval =\n window.__HF_VIRTUAL_TIME__ && typeof window.__HF_VIRTUAL_TIME__.originalSetInterval === \"function\"\n ? window.__HF_VIRTUAL_TIME__.originalSetInterval\n : window.setInterval.bind(window);\n var __realClearInterval =\n window.__HF_VIRTUAL_TIME__ && typeof window.__HF_VIRTUAL_TIME__.originalClearInterval === \"function\"\n ? window.__HF_VIRTUAL_TIME__.originalClearInterval\n : window.clearInterval.bind(window);\n function getDeclaredDuration() {\n var root = document.querySelector('[data-composition-id]');\n if (!root) return 0;\n var d = Number(root.getAttribute('data-duration'));\n return Number.isFinite(d) && d > 0 ? d : 0;\n }\n function seekSameOriginChildFrames(frameWindow, nextTimeMs) {\n var frames;\n try {\n frames = frameWindow.frames;\n } catch (_error) {\n return;\n }\n if (!frames || typeof frames.length !== \"number\") return;\n for (var i = 0; i < frames.length; i++) {\n var childWindow = null;\n try {\n childWindow = frames[i];\n if (!childWindow || childWindow === frameWindow) continue;\n if (\n childWindow.__HF_VIRTUAL_TIME__ &&\n typeof childWindow.__HF_VIRTUAL_TIME__.seekToTime === \"function\"\n ) {\n childWindow.__HF_VIRTUAL_TIME__.seekToTime(nextTimeMs);\n }\n } catch (_error) {\n continue;\n }\n seekSameOriginChildFrames(childWindow, nextTimeMs);\n }\n }\n function bridge() {\n var p = window.__player;\n if (!p || typeof p.renderSeek !== \"function\" || typeof p.getDuration !== \"function\") {\n return false;\n }\n window.__hf = {\n get duration() {\n var d = p.getDuration();\n return d > 0 ? d : getDeclaredDuration();\n },\n seek: function(t) {\n p.renderSeek(t);\n var nextTimeMs = (Math.max(0, Number(t) || 0)) * 1000;\n if (window.__HF_VIRTUAL_TIME__ && typeof window.__HF_VIRTUAL_TIME__.seekToTime === \"function\") {\n window.__HF_VIRTUAL_TIME__.seekToTime(nextTimeMs);\n }\n seekSameOriginChildFrames(window, nextTimeMs);\n },\n };\n return true;\n }\n if (bridge()) return;\n var iv = __realSetInterval(function() {\n if (bridge()) __realClearInterval(iv);\n }, 50);\n})();";
15
+ export declare function injectScriptsIntoHtml(html: string, headScripts: string[], bodyScripts: string[], stripEmbedded: boolean): string;
16
+ export declare function injectScriptsAtHeadStart(html: string, scripts: string[]): string;
9
17
  export interface FileServerOptions {
10
18
  projectDir: string;
11
19
  compiledDir?: string;
12
20
  port?: number;
21
+ /** Scripts injected into <head> of every served HTML file before authored scripts. */
22
+ preHeadScripts?: string[];
13
23
  /** Scripts injected into <head> of index.html. Default: verified Hyperframe runtime. */
14
24
  headScripts?: string[];
15
25
  /** Scripts injected before </body> of index.html. Default: render mode extension. */
@@ -23,4 +33,5 @@ export interface FileServerHandle {
23
33
  close: () => void;
24
34
  }
25
35
  export declare function createFileServer(options: FileServerOptions): Promise<FileServerHandle>;
36
+ export { HF_BRIDGE_SCRIPT, VIRTUAL_TIME_SHIM };
26
37
  //# sourceMappingURL=fileServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fileServer.d.ts","sourceRoot":"","sources":["../../src/services/fileServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgQH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyEtF"}
1
+ {"version":3,"file":"fileServer.d.ts","sourceRoot":"","sources":["../../src/services/fileServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgCH,QAAA,MAAM,iBAAiB,QA+FjB,CAAC;AAiIP;;;GAGG;AACH,QAAA,MAAM,gBAAgB,mzEAiEhB,CAAC;AAqCP,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,OAAO,GACrB,MAAM,CA4BR;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAUhF;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8EtF;AAED,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -22,7 +22,18 @@ export interface CompiledComposition {
22
22
  width: number;
23
23
  height: number;
24
24
  staticDuration: number;
25
+ renderModeHints: RenderModeHints;
25
26
  }
27
+ export type RenderModeHintCode = "iframe" | "requestAnimationFrame";
28
+ export interface RenderModeHint {
29
+ code: RenderModeHintCode;
30
+ message: string;
31
+ }
32
+ export interface RenderModeHints {
33
+ recommendScreenshot: boolean;
34
+ reasons: RenderModeHint[];
35
+ }
36
+ export declare function detectRenderModeHints(html: string): RenderModeHints;
26
37
  /**
27
38
  * Download external CDN scripts and inline them into the HTML so rendering
28
39
  * works without network access (Docker, CI, restricted environments).
@@ -1 +1 @@
1
- {"version":3,"file":"htmlCompiler.d.ts","sourceRoot":"","sources":["../../src/services/htmlCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAGvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,YAAY,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,sBAAsB,EAAE,iBAAiB,EAAE,CAAC;IAC5C,oHAAoH;IACpH,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAiqBD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDzE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CA2EvD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAgH9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA6CzF;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,iBAAiB,EAAE,GAC9B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiD7B;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,gBAAgB,EAAE,EAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CA+B9B"}
1
+ {"version":3,"file":"htmlCompiler.d.ts","sourceRoot":"","sources":["../../src/services/htmlCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAGvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,YAAY,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,sBAAsB,EAAE,iBAAiB,EAAE,CAAC;IAC5C,oHAAoH;IACpH,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,uBAAuB,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAgBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA+BnE;AAypBD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDzE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CA6EvD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAkH9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA6CzF;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,iBAAiB,EAAE,GAC9B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiD7B;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,gBAAgB,EAAE,EAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAgC9B"}
@@ -13,6 +13,7 @@
13
13
  * full context, and failures produce a diagnostic summary.
14
14
  */
15
15
  import { type EngineConfig, type VideoElement, type AudioElement } from "@hyperframes/engine";
16
+ import { type CompiledComposition } from "./htmlCompiler.js";
16
17
  import { type ProducerLogger } from "../logger.js";
17
18
  export type RenderStatus = "queued" | "preprocessing" | "rendering" | "encoding" | "assembling" | "complete" | "failed" | "cancelled";
18
19
  export interface RenderConfig {
@@ -100,6 +101,11 @@ export interface CompositionMetadata {
100
101
  width: number;
101
102
  height: number;
102
103
  }
104
+ /**
105
+ * Write compiled HTML and sub-compositions to the work directory.
106
+ */
107
+ export declare function writeCompiledArtifacts(compiled: CompiledComposition, workDir: string, includeSummary: boolean): void;
108
+ export declare function applyRenderModeHints(cfg: EngineConfig, compiled: CompiledComposition, log?: ProducerLogger): void;
103
109
  export declare function createRenderJob(config: RenderConfig): RenderJob;
104
110
  /**
105
111
  * Main render pipeline
@@ -1 +1 @@
1
- {"version":3,"file":"renderOrchestrator.d.ts","sourceRoot":"","sources":["../../src/services/renderOrchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderOrchestrator.d.ts","sourceRoot":"","sources":["../../src/services/renderOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,40 @@ export interface RenderPaths {
5
5
  absoluteProjectDir: string;
6
6
  absoluteOutputPath: string;
7
7
  }
8
+ /**
9
+ * Cross-platform containment check.
10
+ *
11
+ * `child.startsWith(parent + "/")` breaks on Windows because the path
12
+ * separator is `\`, not `/`. This helper uses `path.relative()` which
13
+ * normalises separators per-platform and returns `..`-prefixed output
14
+ * for out-of-tree paths — the canonical way to ask "is `child` inside
15
+ * `parent`?" on every supported OS.
16
+ *
17
+ * Both inputs are normalised via `resolve()` so callers don't need to.
18
+ * Equality counts as "inside" (a directory contains itself).
19
+ */
20
+ export declare function isPathInside(childPath: string, parentPath: string): boolean;
21
+ /**
22
+ * Build a safe, cross-platform relative key for an absolute asset path
23
+ * that lives outside the project directory.
24
+ *
25
+ * Windows absolute paths (`D:\coder\assets\segment.wav`) break two
26
+ * downstream assumptions when passed as-is to `path.join(compileDir, key)`:
27
+ * 1. The drive letter makes the path absolute, so `join()` silently
28
+ * discards `compileDir`.
29
+ * 2. The backslashes and colon are invalid inside some OS sandboxes
30
+ * and HTTP URL encodings.
31
+ *
32
+ * We sanitise into `hf-ext/...` form using forward slashes, stripping
33
+ * the colon after drive letters, the Windows extended-length prefix
34
+ * (`\\?\`), and the UNC prefix (`\\server\share\`). The result is a
35
+ * pure relative path that joins cleanly on every platform.
36
+ *
37
+ * Caller contract: `absPath` is expected to be canonical — typically
38
+ * produced by `path.resolve()` upstream. This helper does NOT strip
39
+ * `..` components on its own. `isPathInside` at copy time is the
40
+ * defensive backstop.
41
+ */
42
+ export declare function toExternalAssetKey(absPath: string): string;
8
43
  export declare function resolveRenderPaths(projectDir: string, outputPath: string | null | undefined, rendersDir?: string): RenderPaths;
9
44
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAMD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,UAAU,GAAE,MAA4B,GACvC,WAAW,CAOb"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAS3E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,UAAU,GAAE,MAA4B,GACvC,WAAW,CAOb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/producer",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "HTML-to-video rendering engine using Chrome's BeginFrame API",
5
5
  "repository": {
6
6
  "type": "git",
@@ -44,8 +44,8 @@
44
44
  "postcss": "^8.4.0",
45
45
  "puppeteer": "^24.0.0",
46
46
  "puppeteer-core": "^24.39.1",
47
- "@hyperframes/engine": "^0.4.4",
48
- "@hyperframes/core": "^0.4.4"
47
+ "@hyperframes/core": "^0.4.6",
48
+ "@hyperframes/engine": "^0.4.6"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@fontsource/lato": "^5.2.7",