@hyperframes/producer 0.1.0 → 0.1.1
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/LICENSE +21 -0
- package/dist/benchmark.d.ts +15 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/logger.d.ts +26 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/parity-harness.d.ts +2 -0
- package/dist/parity-harness.d.ts.map +1 -0
- package/dist/perf-gate.d.ts +2 -0
- package/dist/perf-gate.d.ts.map +1 -0
- package/dist/public-server.js +0 -0
- package/dist/regression-harness.d.ts +2 -0
- package/dist/regression-harness.d.ts.map +1 -0
- package/dist/runtime-conformance.d.ts +2 -0
- package/dist/runtime-conformance.d.ts.map +1 -0
- package/dist/server.d.ts +53 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/services/audioExtractor.d.ts +39 -0
- package/dist/services/audioExtractor.d.ts.map +1 -0
- package/dist/services/audioMixer.d.ts +6 -0
- package/dist/services/audioMixer.d.ts.map +1 -0
- package/dist/services/browserManager.d.ts +6 -0
- package/dist/services/browserManager.d.ts.map +1 -0
- package/dist/services/chunkEncoder.d.ts +6 -0
- package/dist/services/chunkEncoder.d.ts.map +1 -0
- package/dist/services/compilationRunner.d.ts +32 -0
- package/dist/services/compilationRunner.d.ts.map +1 -0
- package/dist/services/compilationTester.d.ts +35 -0
- package/dist/services/compilationTester.d.ts.map +1 -0
- package/dist/services/deterministicFonts.d.ts +2 -0
- package/dist/services/deterministicFonts.d.ts.map +1 -0
- package/dist/services/fileServer.d.ts +26 -0
- package/dist/services/fileServer.d.ts.map +1 -0
- package/dist/services/frameCapture.d.ts +6 -0
- package/dist/services/frameCapture.d.ts.map +1 -0
- package/dist/services/htmlCompiler.d.ts +59 -0
- package/dist/services/htmlCompiler.d.ts.map +1 -0
- package/dist/services/hyperframeLint.d.ts +13 -0
- package/dist/services/hyperframeLint.d.ts.map +1 -0
- package/dist/services/hyperframeRuntimeLoader.d.ts +11 -0
- package/dist/services/hyperframeRuntimeLoader.d.ts.map +1 -0
- package/dist/services/parallelCoordinator.d.ts +6 -0
- package/dist/services/parallelCoordinator.d.ts.map +1 -0
- package/dist/services/renderOrchestrator.d.ts +91 -0
- package/dist/services/renderOrchestrator.d.ts.map +1 -0
- package/dist/services/screenshotService.d.ts +6 -0
- package/dist/services/screenshotService.d.ts.map +1 -0
- package/dist/services/streamingEncoder.d.ts +6 -0
- package/dist/services/streamingEncoder.d.ts.map +1 -0
- package/dist/services/timingCompiler.d.ts +44 -0
- package/dist/services/timingCompiler.d.ts.map +1 -0
- package/dist/services/videoFrameExtractor.d.ts +6 -0
- package/dist/services/videoFrameExtractor.d.ts.map +1 -0
- package/dist/services/videoFrameInjector.d.ts +6 -0
- package/dist/services/videoFrameInjector.d.ts.map +1 -0
- package/dist/utils/ffprobe.d.ts +6 -0
- package/dist/utils/ffprobe.d.ts.map +1 -0
- package/dist/utils/parityContract.d.ts +6 -0
- package/dist/utils/parityContract.d.ts.map +1 -0
- package/dist/utils/paths.d.ts +9 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/urlDownloader.d.ts +6 -0
- package/dist/utils/urlDownloader.d.ts.map +1 -0
- package/package.json +18 -19
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 HeyGen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Render Benchmark
|
|
4
|
+
*
|
|
5
|
+
* Runs each test fixture multiple times and records per-stage timing.
|
|
6
|
+
* Results are saved to producer/tests/perf/benchmark-results.json.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* pnpm benchmark # 3 runs per fixture (default)
|
|
10
|
+
* pnpm benchmark -- --runs 5 # 5 runs per fixture
|
|
11
|
+
* pnpm benchmark -- --only chat # single fixture
|
|
12
|
+
* pnpm benchmark -- --exclude-tags slow
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=benchmark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine with ProducerConfig alias.
|
|
3
|
+
* @see engine/src/config.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { type EngineConfig, type EngineConfig as ProducerConfig, DEFAULT_CONFIG, resolveConfig, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,IAAI,cAAc,EACnC,cAAc,EACd,aAAa,GACd,MAAM,qBAAqB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hyperframes/producer
|
|
3
|
+
*
|
|
4
|
+
* Generic HTML-to-video rendering engine using Chrome's BeginFrame API.
|
|
5
|
+
* Framework-agnostic: works with GSAP, Lottie, Three.js, CSS animations,
|
|
6
|
+
* or any web content via configurable page contracts and hooks.
|
|
7
|
+
*/
|
|
8
|
+
export { createRenderJob, executeRenderJob, RenderCancelledError, type RenderConfig, type RenderJob, type RenderStatus, type RenderPerfSummary, type ProgressCallback, } from "./services/renderOrchestrator.js";
|
|
9
|
+
export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, getCompositionDuration, getCapturePerfSummary, prepareCaptureSessionForReuse, type CaptureOptions, type CaptureSession, type CaptureResult, type CapturePerfSummary, type BeforeCaptureHook, } from "./services/frameCapture.js";
|
|
10
|
+
export { createFileServer, type FileServerOptions, type FileServerHandle, } from "./services/fileServer.js";
|
|
11
|
+
export { createVideoFrameInjector } from "./services/videoFrameInjector.js";
|
|
12
|
+
export { resolveConfig, DEFAULT_CONFIG, type ProducerConfig, } from "./config.js";
|
|
13
|
+
export { type ProducerLogger, type LogLevel, createConsoleLogger, defaultLogger, } from "./logger.js";
|
|
14
|
+
export { createRenderHandlers, createProducerApp, startServer, type HandlerOptions, type ServerOptions, type RenderHandlers, } from "./server.js";
|
|
15
|
+
export { quantizeTimeToFrame } from "./utils/parityContract.js";
|
|
16
|
+
export { resolveRenderPaths, type RenderPaths, } from "./utils/paths.js";
|
|
17
|
+
export { prepareHyperframeLintBody, runHyperframeLint, type PreparedHyperframeLintInput, } from "./services/hyperframeLint.js";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,mBAAmB,EACnB,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,KAAK,2BAA2B,GACjC,MAAM,8BAA8B,CAAC"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable Producer Logger
|
|
3
|
+
*
|
|
4
|
+
* Lightweight pluggable logger with zero dependencies.
|
|
5
|
+
* Default implementation writes to console with level filtering.
|
|
6
|
+
*
|
|
7
|
+
* Users can provide their own logger (e.g. Winston, Pino) by
|
|
8
|
+
* implementing the ProducerLogger interface.
|
|
9
|
+
*/
|
|
10
|
+
export type LogLevel = "error" | "warn" | "info" | "debug";
|
|
11
|
+
export interface ProducerLogger {
|
|
12
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
13
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
14
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
15
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a console-based logger with level filtering.
|
|
19
|
+
*
|
|
20
|
+
* Messages at or below the configured level are printed;
|
|
21
|
+
* everything else is silently dropped.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createConsoleLogger(level?: LogLevel): ProducerLogger;
|
|
24
|
+
/** Default logger singleton (level: "info"). */
|
|
25
|
+
export declare const defaultLogger: ProducerLogger;
|
|
26
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AASD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,QAAiB,GAAG,cAAc,CA+B5E;AAED,gDAAgD;AAChD,eAAO,MAAM,aAAa,EAAE,cAA4C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parity-harness.d.ts","sourceRoot":"","sources":["../src/parity-harness.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf-gate.d.ts","sourceRoot":"","sources":["../src/perf-gate.ts"],"names":[],"mappings":""}
|
package/dist/public-server.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regression-harness.d.ts","sourceRoot":"","sources":["../src/regression-harness.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-conformance.d.ts","sourceRoot":"","sources":["../src/runtime-conformance.ts"],"names":[],"mappings":""}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @hyperframes/producer — Public Server
|
|
4
|
+
*
|
|
5
|
+
* Clean HTTP API for rendering HTML compositions to video.
|
|
6
|
+
*
|
|
7
|
+
* Routes:
|
|
8
|
+
* POST /render — blocking render, returns JSON
|
|
9
|
+
* POST /render/stream — SSE streaming render with progress
|
|
10
|
+
* POST /lint — blocking Hyperframe lint
|
|
11
|
+
* GET /health — health check
|
|
12
|
+
* GET /outputs/:token — download rendered MP4
|
|
13
|
+
*/
|
|
14
|
+
import { Hono, type Context } from "hono";
|
|
15
|
+
import { type ProducerLogger } from "./logger.js";
|
|
16
|
+
export interface HandlerOptions {
|
|
17
|
+
/** Custom logger. Defaults to console-based defaultLogger. */
|
|
18
|
+
logger?: ProducerLogger;
|
|
19
|
+
/** Extract or generate a request ID. Defaults to x-request-id header or random UUID. */
|
|
20
|
+
getRequestId?: (c: Context) => string;
|
|
21
|
+
/** Directory for rendered output files. Defaults to PRODUCER_RENDERS_DIR or /tmp. */
|
|
22
|
+
rendersDir?: string;
|
|
23
|
+
/** Prefix for output URLs in responses. Default: "/outputs". */
|
|
24
|
+
outputUrlPrefix?: string;
|
|
25
|
+
/** TTL for output artifact download tokens (ms). Default: 15 minutes. */
|
|
26
|
+
artifactTtlMs?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface ServerOptions extends HandlerOptions {
|
|
29
|
+
/** Port to listen on. Default: 9847. */
|
|
30
|
+
port?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface RenderHandlers {
|
|
33
|
+
render: (c: Context) => Promise<Response>;
|
|
34
|
+
renderStream: (c: Context) => Response | Promise<Response>;
|
|
35
|
+
lint: (c: Context) => Promise<Response>;
|
|
36
|
+
health: (c: Context) => Response;
|
|
37
|
+
outputs: (c: Context) => Response;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create route handler functions for the producer server.
|
|
41
|
+
*
|
|
42
|
+
* These can be mounted on any Hono app at any path prefix.
|
|
43
|
+
*/
|
|
44
|
+
export declare function createRenderHandlers(options?: HandlerOptions): RenderHandlers;
|
|
45
|
+
/**
|
|
46
|
+
* Create a Hono app with clean public routes for OSS use.
|
|
47
|
+
*/
|
|
48
|
+
export declare function createProducerApp(options?: HandlerOptions): Hono;
|
|
49
|
+
/**
|
|
50
|
+
* Start the producer HTTP server with graceful shutdown.
|
|
51
|
+
*/
|
|
52
|
+
export declare function startServer(options?: ServerOptions): import("@hono/node-server").ServerType;
|
|
53
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAU1C,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAKjE,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,wFAAwF;IACxF,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IACtC,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAmJD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,cAAmB,GAAG,cAAc,CA2MjF;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI,CAWpE;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,aAAkB,0CA8BtD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audio Extractor Service
|
|
3
|
+
*
|
|
4
|
+
* Extracts audio from media elements in the composition HTML,
|
|
5
|
+
* applies timeline positioning, and mixes into a single audio track.
|
|
6
|
+
*/
|
|
7
|
+
export interface AudioElement {
|
|
8
|
+
id: string;
|
|
9
|
+
src: string;
|
|
10
|
+
start: number;
|
|
11
|
+
duration: number;
|
|
12
|
+
mediaStart: number;
|
|
13
|
+
volume: number;
|
|
14
|
+
tagName: "audio" | "video";
|
|
15
|
+
}
|
|
16
|
+
export interface AudioTrack {
|
|
17
|
+
id: string;
|
|
18
|
+
srcPath: string;
|
|
19
|
+
start: number;
|
|
20
|
+
duration: number;
|
|
21
|
+
mediaStart: number;
|
|
22
|
+
volume: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parse audio/video elements from HTML to find media with audio.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseAudioElements(html: string): AudioElement[];
|
|
28
|
+
/**
|
|
29
|
+
* Process all audio for a composition.
|
|
30
|
+
*
|
|
31
|
+
* @param htmlPath - Path to the composition HTML (for parsing media elements)
|
|
32
|
+
* @param projectDir - Base directory for resolving relative media paths
|
|
33
|
+
* @param workDir - Temporary working directory for intermediate files
|
|
34
|
+
* @param outputPath - Final mixed audio output path
|
|
35
|
+
* @param totalDuration - Total composition duration in seconds
|
|
36
|
+
* @returns true if audio was produced, false if no audio elements found
|
|
37
|
+
*/
|
|
38
|
+
export declare function processAudio(htmlPath: string, projectDir: string, workDir: string, outputPath: string, totalDuration: number): Promise<boolean>;
|
|
39
|
+
//# sourceMappingURL=audioExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioExtractor.d.ts","sourceRoot":"","sources":["../../src/services/audioExtractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CA+C/D;AAkKD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAiElB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/services/audioMixer.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { parseAudioElements, processCompositionAudio, type AudioElement, type AudioTrack, type MixResult, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=audioMixer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioMixer.d.ts","sourceRoot":"","sources":["../../src/services/audioMixer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/services/browserManager.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { acquireBrowser, releaseBrowser, resolveHeadlessShellPath, buildChromeArgs, ENABLE_BROWSER_POOL, type BuildChromeArgsOptions, type CaptureMode, type AcquiredBrowser, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=browserManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserManager.d.ts","sourceRoot":"","sources":["../../src/services/browserManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/services/chunkEncoder.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { encodeFramesFromDir, encodeFramesChunkedConcat, muxVideoWithAudio, applyFaststart, detectGpuEncoder, ENCODER_PRESETS, type EncoderOptions, type EncodeResult, type MuxResult, type GpuEncoder, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=chunkEncoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunkEncoder.d.ts","sourceRoot":"","sources":["../../src/services/chunkEncoder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compilation Test Runner
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates compilation tests: compiles input HTML, compares to golden files.
|
|
5
|
+
*/
|
|
6
|
+
import { type CompilationValidationResult } from "./compilationTester.js";
|
|
7
|
+
export interface CompilationTestResult {
|
|
8
|
+
testId: string;
|
|
9
|
+
passed: boolean;
|
|
10
|
+
validation: CompilationValidationResult;
|
|
11
|
+
compilationTimeMs: number;
|
|
12
|
+
compiledHtmlPath?: string;
|
|
13
|
+
}
|
|
14
|
+
interface TestSuite {
|
|
15
|
+
id: string;
|
|
16
|
+
dir: string;
|
|
17
|
+
srcDir: string;
|
|
18
|
+
goldenMp4: string;
|
|
19
|
+
meta: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Run compilation test for a test suite.
|
|
23
|
+
* Compiles src/index.html and compares against compiled.html golden file.
|
|
24
|
+
*/
|
|
25
|
+
export declare function runCompilationTest(suite: TestSuite, keepTemp: boolean): Promise<CompilationTestResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Generate or update compiled.html golden file for a test suite.
|
|
28
|
+
* Compiles src/index.html and writes to compiled.html.
|
|
29
|
+
*/
|
|
30
|
+
export declare function updateCompiledGolden(suite: TestSuite): Promise<void>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=compilationRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compilationRunner.d.ts","sourceRoot":"","sources":["../../src/services/compilationRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,2BAA2B,CAAC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAuEhC;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compilation Testing Service
|
|
3
|
+
*
|
|
4
|
+
* Validates that HTML compilation produces correct timing attributes.
|
|
5
|
+
* Compares compiled HTML against golden files using semantic attribute matching.
|
|
6
|
+
*/
|
|
7
|
+
export interface CompiledElement {
|
|
8
|
+
id: string;
|
|
9
|
+
tagName: "video" | "audio" | "div";
|
|
10
|
+
src?: string;
|
|
11
|
+
dataStart: number;
|
|
12
|
+
dataEnd: number | null;
|
|
13
|
+
dataDuration: number | null;
|
|
14
|
+
dataHasAudio?: boolean;
|
|
15
|
+
dataMediaStart?: number;
|
|
16
|
+
compositionSrc?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface CompilationValidationResult {
|
|
19
|
+
passed: boolean;
|
|
20
|
+
actualElements: CompiledElement[];
|
|
21
|
+
goldenElements: CompiledElement[];
|
|
22
|
+
errors: string[];
|
|
23
|
+
warnings: string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse HTML and extract all elements with timing attributes.
|
|
27
|
+
* Includes <video>, <audio>, and <div data-composition-src>.
|
|
28
|
+
*/
|
|
29
|
+
export declare function extractTimedElements(html: string): CompiledElement[];
|
|
30
|
+
/**
|
|
31
|
+
* Validate compiled HTML against golden HTML.
|
|
32
|
+
* Returns detailed validation result with errors and warnings.
|
|
33
|
+
*/
|
|
34
|
+
export declare function validateCompilation(actualHtml: string, goldenHtml: string): CompilationValidationResult;
|
|
35
|
+
//# sourceMappingURL=compilationTester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compilationTester.d.ts","sourceRoot":"","sources":["../../src/services/compilationTester.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,eAAe,EAAE,CAAC;IAClC,cAAc,EAAE,eAAe,EAAE,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAUD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CA8EpE;AA8HD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,2BAA2B,CAsG7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deterministicFonts.d.ts","sourceRoot":"","sources":["../../src/services/deterministicFonts.ts"],"names":[],"mappings":"AA4QA,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwCjE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Server for Render Mode
|
|
3
|
+
*
|
|
4
|
+
* Lightweight HTTP server that serves the project directory inside Docker.
|
|
5
|
+
* Key responsibility: inject the verified Hyperframe runtime + render mode extension
|
|
6
|
+
* into index.html on-the-fly, so Puppeteer can load the composition with
|
|
7
|
+
* all relative URLs (compositions, CSS, JS, assets) resolving correctly.
|
|
8
|
+
*/
|
|
9
|
+
export interface FileServerOptions {
|
|
10
|
+
projectDir: string;
|
|
11
|
+
compiledDir?: string;
|
|
12
|
+
port?: number;
|
|
13
|
+
/** Scripts injected into <head> of index.html. Default: verified Hyperframe runtime. */
|
|
14
|
+
headScripts?: string[];
|
|
15
|
+
/** Scripts injected before </body> of index.html. Default: render mode extension. */
|
|
16
|
+
bodyScripts?: string[];
|
|
17
|
+
/** Strip embedded runtime scripts from HTML before injection. Default: true. */
|
|
18
|
+
stripEmbeddedRuntime?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface FileServerHandle {
|
|
21
|
+
url: string;
|
|
22
|
+
port: number;
|
|
23
|
+
close: () => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function createFileServer(options: FileServerOptions): Promise<FileServerHandle>;
|
|
26
|
+
//# sourceMappingURL=fileServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileServer.d.ts","sourceRoot":"","sources":["../../src/services/fileServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmPH,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,CAyDtF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/services/frameCapture.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, getCompositionDuration, getCapturePerfSummary, prepareCaptureSessionForReuse, type CaptureOptions, type CaptureResult, type CaptureBufferResult, type CapturePerfSummary, type CaptureSession, type BeforeCaptureHook, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=frameCapture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameCapture.d.ts","sourceRoot":"","sources":["../../src/services/frameCapture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML Compiler for Producer
|
|
3
|
+
*
|
|
4
|
+
* Two-phase compilation that guarantees every media element has data-end:
|
|
5
|
+
* 1. Static pass via core's compileTimingAttrs() (data-start + data-duration → data-end)
|
|
6
|
+
* 2. ffprobe resolution for elements without data-duration
|
|
7
|
+
*
|
|
8
|
+
* Also handles sub-compositions referenced via data-composition-src,
|
|
9
|
+
* recursively extracting nested media from sub-sub-compositions.
|
|
10
|
+
*/
|
|
11
|
+
import { type ResolvedDuration, type UnresolvedElement } from "@hyperframes/core";
|
|
12
|
+
import { type VideoElement, type AudioElement } from "@hyperframes/engine";
|
|
13
|
+
import type { Page } from "puppeteer-core";
|
|
14
|
+
export interface CompiledComposition {
|
|
15
|
+
html: string;
|
|
16
|
+
subCompositions: Map<string, string>;
|
|
17
|
+
videos: VideoElement[];
|
|
18
|
+
audios: AudioElement[];
|
|
19
|
+
unresolvedCompositions: UnresolvedElement[];
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
staticDuration: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Full compilation pipeline for the producer.
|
|
26
|
+
*
|
|
27
|
+
* Returns everything the orchestrator needs: compiled HTML, all media elements,
|
|
28
|
+
* dimensions, and static duration.
|
|
29
|
+
*/
|
|
30
|
+
export declare function compileForRender(projectDir: string, htmlPath: string, downloadDir: string): Promise<CompiledComposition>;
|
|
31
|
+
/**
|
|
32
|
+
* Discover media elements from the browser DOM after JavaScript has run.
|
|
33
|
+
* This catches videos/audios whose `src` is set dynamically via JS
|
|
34
|
+
* (e.g. `document.getElementById("pip-video").src = URL`), which the
|
|
35
|
+
* static regex parsers miss because the HTML has `src=""`.
|
|
36
|
+
*/
|
|
37
|
+
export interface BrowserMediaElement {
|
|
38
|
+
id: string;
|
|
39
|
+
tagName: "video" | "audio";
|
|
40
|
+
src: string;
|
|
41
|
+
start: number;
|
|
42
|
+
end: number;
|
|
43
|
+
duration: number;
|
|
44
|
+
mediaStart: number;
|
|
45
|
+
hasAudio: boolean;
|
|
46
|
+
volume: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function discoverMediaFromBrowser(page: Page): Promise<BrowserMediaElement[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Resolve composition durations via Puppeteer by querying window.__timelines.
|
|
51
|
+
* The page must already have the interceptor loaded and timelines registered.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveCompositionDurations(page: Page, unresolved: UnresolvedElement[]): Promise<ResolvedDuration[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Re-compile after composition durations are resolved.
|
|
56
|
+
* Injects durations into the HTML and re-parses sub-composition media with proper bounds.
|
|
57
|
+
*/
|
|
58
|
+
export declare function recompileWithResolutions(compiled: CompiledComposition, resolutions: ResolvedDuration[], projectDir: string, downloadDir: string): Promise<CompiledComposition>;
|
|
59
|
+
//# sourceMappingURL=htmlCompiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htmlCompiler.d.ts","sourceRoot":"","sources":["../../src/services/htmlCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAsB,KAAK,YAAY,EAAsB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnH,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,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAgiBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CA+C9B;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,CAC5C,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA8ChC;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,CA6B9B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type HyperframeLintResult } from "@hyperframes/core/lint";
|
|
2
|
+
export interface PreparedHyperframeLintInput {
|
|
3
|
+
entryFile: string;
|
|
4
|
+
html: string;
|
|
5
|
+
source: "projectDir" | "files" | "html";
|
|
6
|
+
}
|
|
7
|
+
export declare function prepareHyperframeLintBody(body: Record<string, unknown>): {
|
|
8
|
+
prepared: PreparedHyperframeLintInput;
|
|
9
|
+
} | {
|
|
10
|
+
error: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function runHyperframeLint(prepared: PreparedHyperframeLintInput): HyperframeLintResult;
|
|
13
|
+
//# sourceMappingURL=hyperframeLint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperframeLint.d.ts","sourceRoot":"","sources":["../../src/services/hyperframeLint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;CACzC;AA2DD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B;IAAE,QAAQ,EAAE,2BAA2B,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAqC/D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,oBAAoB,CAE7F"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ResolvedHyperframeRuntime = {
|
|
2
|
+
manifestPath: string;
|
|
3
|
+
runtimePath: string;
|
|
4
|
+
expectedSha256: string;
|
|
5
|
+
actualSha256: string;
|
|
6
|
+
runtimeSource: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function resolveHyperframeManifestPath(): string;
|
|
9
|
+
export declare function getVerifiedHyperframeRuntimeSource(): string;
|
|
10
|
+
export declare function resolveVerifiedHyperframeRuntime(): ResolvedHyperframeRuntime;
|
|
11
|
+
//# sourceMappingURL=hyperframeRuntimeLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperframeRuntimeLoader.d.ts","sourceRoot":"","sources":["../../src/services/hyperframeRuntimeLoader.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,6BAA6B,IAAI,MAAM,CAWtD;AAED,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D;AAED,wBAAgB,gCAAgC,IAAI,yBAAyB,CAoC5E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/services/parallelCoordinator.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { calculateOptimalWorkers, distributeFrames, executeParallelCapture, mergeWorkerFrames, getSystemResources, type WorkerTask, type WorkerResult, type ParallelProgress, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=parallelCoordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallelCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/parallelCoordinator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render Orchestrator Service
|
|
3
|
+
*
|
|
4
|
+
* Coordinates the entire video rendering pipeline:
|
|
5
|
+
* 1. Parse composition metadata
|
|
6
|
+
* 2. Pre-extract video frames
|
|
7
|
+
* 3. Pre-process audio tracks
|
|
8
|
+
* 4. Parallel frame capture
|
|
9
|
+
* 5. Video encoding
|
|
10
|
+
* 6. Final assembly (audio mux + faststart)
|
|
11
|
+
*
|
|
12
|
+
* Heavy observability: every stage logs timing, errors include
|
|
13
|
+
* full context, and failures produce a diagnostic summary.
|
|
14
|
+
*/
|
|
15
|
+
import { type EngineConfig as ProducerConfig, type VideoElement, type AudioElement } from "@hyperframes/engine";
|
|
16
|
+
import { type ProducerLogger } from "../logger.js";
|
|
17
|
+
export type RenderStatus = "queued" | "preprocessing" | "rendering" | "encoding" | "assembling" | "complete" | "failed" | "cancelled";
|
|
18
|
+
export interface RenderConfig {
|
|
19
|
+
fps: 24 | 30 | 60;
|
|
20
|
+
quality: "draft" | "standard" | "high";
|
|
21
|
+
workers?: number;
|
|
22
|
+
useGpu?: boolean;
|
|
23
|
+
debug?: boolean;
|
|
24
|
+
/** Full producer config. When provided, env vars are not read. */
|
|
25
|
+
producerConfig?: ProducerConfig;
|
|
26
|
+
/** Custom logger. Defaults to console-based defaultLogger. */
|
|
27
|
+
logger?: ProducerLogger;
|
|
28
|
+
}
|
|
29
|
+
export interface RenderPerfSummary {
|
|
30
|
+
renderId: string;
|
|
31
|
+
totalElapsedMs: number;
|
|
32
|
+
fps: number;
|
|
33
|
+
quality: string;
|
|
34
|
+
workers: number;
|
|
35
|
+
chunkedEncode: boolean;
|
|
36
|
+
chunkSizeFrames: number | null;
|
|
37
|
+
compositionDurationSeconds: number;
|
|
38
|
+
totalFrames: number;
|
|
39
|
+
resolution: {
|
|
40
|
+
width: number;
|
|
41
|
+
height: number;
|
|
42
|
+
};
|
|
43
|
+
videoCount: number;
|
|
44
|
+
audioCount: number;
|
|
45
|
+
stages: Record<string, number>;
|
|
46
|
+
captureAvgMs?: number;
|
|
47
|
+
capturePeakMs?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface RenderJob {
|
|
50
|
+
id: string;
|
|
51
|
+
config: RenderConfig;
|
|
52
|
+
status: RenderStatus;
|
|
53
|
+
progress: number;
|
|
54
|
+
currentStage: string;
|
|
55
|
+
createdAt: Date;
|
|
56
|
+
startedAt?: Date;
|
|
57
|
+
completedAt?: Date;
|
|
58
|
+
error?: string;
|
|
59
|
+
outputPath?: string;
|
|
60
|
+
duration?: number;
|
|
61
|
+
totalFrames?: number;
|
|
62
|
+
framesRendered?: number;
|
|
63
|
+
perfSummary?: RenderPerfSummary;
|
|
64
|
+
failedStage?: string;
|
|
65
|
+
errorDetails?: {
|
|
66
|
+
message: string;
|
|
67
|
+
stack?: string;
|
|
68
|
+
elapsedMs: number;
|
|
69
|
+
freeMemoryMB: number;
|
|
70
|
+
browserConsoleTail?: string[];
|
|
71
|
+
perfStages?: Record<string, number>;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export type ProgressCallback = (job: RenderJob, message: string) => void;
|
|
75
|
+
export declare class RenderCancelledError extends Error {
|
|
76
|
+
reason: "user_cancelled" | "timeout" | "aborted";
|
|
77
|
+
constructor(message?: string, reason?: "user_cancelled" | "timeout" | "aborted");
|
|
78
|
+
}
|
|
79
|
+
export interface CompositionMetadata {
|
|
80
|
+
duration: number;
|
|
81
|
+
videos: VideoElement[];
|
|
82
|
+
audios: AudioElement[];
|
|
83
|
+
width: number;
|
|
84
|
+
height: number;
|
|
85
|
+
}
|
|
86
|
+
export declare function createRenderJob(config: RenderConfig): RenderJob;
|
|
87
|
+
/**
|
|
88
|
+
* Main render pipeline
|
|
89
|
+
*/
|
|
90
|
+
export declare function executeRenderJob(job: RenderJob, projectDir: string, outputPath: string, onProgress?: ProgressCallback, abortSignal?: AbortSignal): Promise<void>;
|
|
91
|
+
//# sourceMappingURL=renderOrchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderOrchestrator.d.ts","sourceRoot":"","sources":["../../src/services/renderOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/services/screenshotService.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { beginFrameCapture, pageScreenshotCapture, getCdpSession, injectVideoFramesBatch, syncVideoFrameVisibility, cdpSessionCache, type BeginFrameResult, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=screenshotService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshotService.d.ts","sourceRoot":"","sources":["../../src/services/screenshotService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,EACf,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/services/streamingEncoder.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { spawnStreamingEncoder, createFrameReorderBuffer, type StreamingEncoder, type StreamingEncoderOptions, type StreamingEncoderResult, type FrameReorderBuffer, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=streamingEncoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamingEncoder.d.ts","sourceRoot":"","sources":["../../src/services/streamingEncoder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Producer-local timing compiler helpers.
|
|
3
|
+
* Keep this aligned with core timing compiler behavior.
|
|
4
|
+
*/
|
|
5
|
+
export interface UnresolvedElement {
|
|
6
|
+
id: string;
|
|
7
|
+
tagName: string;
|
|
8
|
+
src?: string;
|
|
9
|
+
start: number;
|
|
10
|
+
end?: number;
|
|
11
|
+
duration?: number;
|
|
12
|
+
mediaStart: number;
|
|
13
|
+
compositionSrc?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ResolvedDuration {
|
|
16
|
+
id: string;
|
|
17
|
+
duration: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ResolvedMediaElement {
|
|
20
|
+
id: string;
|
|
21
|
+
tagName: string;
|
|
22
|
+
src?: string;
|
|
23
|
+
start: number;
|
|
24
|
+
duration: number;
|
|
25
|
+
mediaStart: number;
|
|
26
|
+
}
|
|
27
|
+
export interface CompilationResult {
|
|
28
|
+
html: string;
|
|
29
|
+
unresolved: UnresolvedElement[];
|
|
30
|
+
}
|
|
31
|
+
export declare function compileTimingAttrs(html: string): CompilationResult;
|
|
32
|
+
export declare function injectDurations(html: string, resolutions: ResolvedDuration[]): string;
|
|
33
|
+
/**
|
|
34
|
+
* Extract video/audio elements that already have data-duration set.
|
|
35
|
+
* Used by callers to validate declared durations against actual source durations.
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractResolvedMedia(html: string): ResolvedMediaElement[];
|
|
38
|
+
/**
|
|
39
|
+
* Clamp existing data-duration and data-end on media elements.
|
|
40
|
+
* For each resolution, replaces the declared duration with the clamped value
|
|
41
|
+
* and recomputes data-end accordingly.
|
|
42
|
+
*/
|
|
43
|
+
export declare function clampDurations(html: string, clamps: ResolvedDuration[]): string;
|
|
44
|
+
//# sourceMappingURL=timingCompiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timingCompiler.d.ts","sourceRoot":"","sources":["../../src/services/timingCompiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AA8CD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA0ClE;AAMD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAiBrF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,EAAE,CA6BzE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAwB/E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/services/videoFrameExtractor.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { parseVideoElements, extractVideoFramesRange, extractAllVideoFrames, getFrameAtTime, createFrameLookupTable, FrameLookupTable, type VideoElement, type ExtractedFrames, type ExtractionOptions, type ExtractionResult, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=videoFrameExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoFrameExtractor.d.ts","sourceRoot":"","sources":["../../src/services/videoFrameExtractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoFrameInjector.d.ts","sourceRoot":"","sources":["../../src/services/videoFrameInjector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exported from @hyperframes/engine.
|
|
3
|
+
* @see engine/src/utils/ffprobe.ts for implementation.
|
|
4
|
+
*/
|
|
5
|
+
export { extractVideoMetadata, extractAudioMetadata, type VideoMetadata, type AudioMetadata, } from "@hyperframes/engine";
|
|
6
|
+
//# sourceMappingURL=ffprobe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ffprobe.d.ts","sourceRoot":"","sources":["../../src/utils/ffprobe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parityContract.d.ts","sourceRoot":"","sources":["../../src/utils/parityContract.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path resolution utilities for the render pipeline.
|
|
3
|
+
*/
|
|
4
|
+
export interface RenderPaths {
|
|
5
|
+
absoluteProjectDir: string;
|
|
6
|
+
absoluteOutputPath: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveRenderPaths(projectDir: string, outputPath: string | null | undefined, rendersDir?: string): RenderPaths;
|
|
9
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +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;AAKD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,UAAU,GAAE,MAA4B,GACvC,WAAW,CAQb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlDownloader.d.ts","sourceRoot":"","sources":["../../src/utils/urlDownloader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,cAAc,EACd,SAAS,GACV,MAAM,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/producer",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "HTML-to-video rendering engine using Chrome's BeginFrame API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,23 +24,7 @@
|
|
|
24
24
|
"engines": {
|
|
25
25
|
"node": ">=22"
|
|
26
26
|
},
|
|
27
|
-
"scripts": {
|
|
28
|
-
"build": "pnpm -w build:hyperframes-runtime:modular && node build.mjs",
|
|
29
|
-
"typecheck": "tsc --noEmit",
|
|
30
|
-
"parity:check": "tsx src/parity-harness.ts",
|
|
31
|
-
"parity:fixtures": "tsx src/parity-fixtures.ts",
|
|
32
|
-
"parity:fixtures:ci": "tsx src/parity-fixtures.ts",
|
|
33
|
-
"parity:check:ci": "tsx src/parity-harness.ts --preview-url \"http://127.0.0.1:4173/minimal-wysiwyg.html\" --producer-url \"http://127.0.0.1:4173/minimal-wysiwyg.html?mode=producer\" --checkpoints \"0,0.5,1,1.5\" --allow-mismatch-ratio 0 --emulate-producer-swap true --artifacts-dir \".debug/parity-harness-ci\"",
|
|
34
|
-
"perf:gate": "tsx src/perf-gate.ts",
|
|
35
|
-
"check:runtime-conformance": "tsx src/runtime-conformance.ts",
|
|
36
|
-
"benchmark": "tsx src/benchmark.ts",
|
|
37
|
-
"test": "tsx src/regression-harness.ts",
|
|
38
|
-
"test:update": "tsx src/regression-harness.ts --update",
|
|
39
|
-
"prepublishOnly": "pnpm build"
|
|
40
|
-
},
|
|
41
27
|
"dependencies": {
|
|
42
|
-
"@hyperframes/core": "workspace:*",
|
|
43
|
-
"@hyperframes/engine": "workspace:*",
|
|
44
28
|
"@fontsource/archivo-black": "^5.2.8",
|
|
45
29
|
"@fontsource/eb-garamond": "^5.2.7",
|
|
46
30
|
"@fontsource/ibm-plex-mono": "^5.2.7",
|
|
@@ -56,12 +40,27 @@
|
|
|
56
40
|
"hono": "^4.6.0",
|
|
57
41
|
"linkedom": "^0.18.12",
|
|
58
42
|
"puppeteer": "^24.0.0",
|
|
59
|
-
"puppeteer-core": "^24.39.1"
|
|
43
|
+
"puppeteer-core": "^24.39.1",
|
|
44
|
+
"@hyperframes/core": "^0.1.1",
|
|
45
|
+
"@hyperframes/engine": "^0.1.1"
|
|
60
46
|
},
|
|
61
47
|
"devDependencies": {
|
|
62
48
|
"@types/node": "^22.10.1",
|
|
63
49
|
"esbuild": "^0.27.2",
|
|
64
50
|
"tsx": "^4.7.0",
|
|
65
51
|
"typescript": "^5.7.2"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"build": "pnpm -w build:hyperframes-runtime:modular && node build.mjs",
|
|
55
|
+
"typecheck": "tsc --noEmit",
|
|
56
|
+
"parity:check": "tsx src/parity-harness.ts",
|
|
57
|
+
"parity:fixtures": "tsx src/parity-fixtures.ts",
|
|
58
|
+
"parity:fixtures:ci": "tsx src/parity-fixtures.ts",
|
|
59
|
+
"parity:check:ci": "tsx src/parity-harness.ts --preview-url \"http://127.0.0.1:4173/minimal-wysiwyg.html\" --producer-url \"http://127.0.0.1:4173/minimal-wysiwyg.html?mode=producer\" --checkpoints \"0,0.5,1,1.5\" --allow-mismatch-ratio 0 --emulate-producer-swap true --artifacts-dir \".debug/parity-harness-ci\"",
|
|
60
|
+
"perf:gate": "tsx src/perf-gate.ts",
|
|
61
|
+
"check:runtime-conformance": "tsx src/runtime-conformance.ts",
|
|
62
|
+
"benchmark": "tsx src/benchmark.ts",
|
|
63
|
+
"test": "tsx src/regression-harness.ts",
|
|
64
|
+
"test:update": "tsx src/regression-harness.ts --update"
|
|
66
65
|
}
|
|
67
|
-
}
|
|
66
|
+
}
|