mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 12:54:29 +00:00
Configure fallow via .fallowrc.jsonc so its analysis reflects this repo's
real entry surface, then fix the genuine issues it found.
Fallow noise reduction (601 → 276 dead-code findings):
- Ignore docs/, test fixtures, skill test-corpora, registry/, examples/
- Declare worker entry points loaded dynamically by file path
(pngDecodeBlitWorker.ts, shaderTransitionWorker.ts)
- Declare runtime IIFE entry (core/src/runtime/entry.ts) built outside the
import graph by build-hyperframes-runtime-artifact.ts
- Declare bun:test files in producer + aws-lambda as test entries
- Ignore dynamically-resolved deps: tsup external (puppeteer-core, esbuild,
giget), peer/static-file (gsap in player perf tests), workspace deps
hoisted by bun (happy-dom, @hyperframes/*), and @fontsource/* packages
read via readFileSync in generate-font-data.ts
Extract inline build:fonts scripts:
- packages/{cli,producer}/package.json had multi-line `node -e ...` blobs
containing braces that fallow mis-parsed as glob alternate groups. Moved
to dedicated build-fonts.mjs scripts.
Fix duplicate exports:
- Remove dead FileIcon alias in studio/SystemIcons.tsx (FileTreeIcons.tsx
has the real, used one)
- Consolidate ValidationResult: drop the identical duplicate in
gsapParser.ts; both parsers now import from core.types
- Suppress intentional namespace patterns (per-namespace ML manager
exports; CLI per-command 'examples' convention; fileServer.ts test-only
isPathInside which has different symlink semantics from utils/paths.ts)
Break circular dep (studio/components/editor):
- manualEditsDom.ts re-exported clearStudioPathOffset / clearStudioRotation
/ clearStudioBoxSize from manualEditsSnapshot.ts, which imports four
helpers from manualEditsDom.ts — back-edge cycle
- Re-export moved to manualEdits.ts (the package-public barrel) where the
rest of the snapshot re-exports already live; underlying files now form
a clean DAG
Remove genuinely unused deps:
- studio: motion (no imports anywhere), codemirror (umbrella package; the
@codemirror/* sub-packages are used directly)
- cli: mime-types (plus its only consumer src/utils/mime.ts, which was a
hardcoded mime table that didn't use the package), and its now-stale
tsup external entry
Verified: typecheck across core/cli/producer/studio is clean, oxlint
+ oxfmt pass, manualEdits.test.ts (18 tests) and core parser tests (69
tests) still pass.
Deferred follow-ups (real findings, separate PRs):
- 8 circular deps in producer/services/render/stages/ — renderOrchestrator
↔ captureHdr* / captureStage / extractVideosStage form a hub cycle
- ~14 unused files in producer/src/services/ that look like dead
re-export shims to @hyperframes/engine, but aren't in the public
exports map — need to confirm no deep-import consumers before deletion
- waveform.ts complexity hotspot
97 lines
4.1 KiB
JSON
97 lines
4.1 KiB
JSON
{
|
|
"name": "@hyperframes/producer",
|
|
"version": "0.6.22",
|
|
"description": "HTML-to-video rendering engine using Chrome's BeginFrame API",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/heygen-com/hyperframes",
|
|
"directory": "packages/producer"
|
|
},
|
|
"files": [
|
|
"dist/"
|
|
],
|
|
"type": "module",
|
|
"main": "dist/index.js",
|
|
"types": "dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"import": "./dist/index.js",
|
|
"types": "./dist/index.d.ts"
|
|
},
|
|
"./server": {
|
|
"import": "./dist/public-server.js"
|
|
},
|
|
"./distributed": {
|
|
"import": "./dist/distributed.js",
|
|
"types": "./dist/distributed.d.ts"
|
|
}
|
|
},
|
|
"publishConfig": {
|
|
"access": "public",
|
|
"registry": "https://registry.npmjs.org/"
|
|
},
|
|
"scripts": {
|
|
"build": "bun run build:fonts && bun run --cwd ../.. build:hyperframes-runtime:modular && node build.mjs",
|
|
"build:fonts": "node scripts/build-fonts.mjs",
|
|
"typecheck": "tsc --noEmit",
|
|
"parity:check": "tsx src/parity-harness.ts",
|
|
"parity:fixtures": "tsx src/parity-fixtures.ts",
|
|
"parity:fixtures:ci": "tsx src/parity-fixtures.ts",
|
|
"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\"",
|
|
"perf:gate": "tsx src/perf-gate.ts",
|
|
"check:runtime-conformance": "tsx src/runtime-conformance.ts",
|
|
"benchmark": "tsx src/benchmark.ts",
|
|
"bench:hdr": "tsx src/benchmark.ts --tags hdr",
|
|
"test": "tsx src/regression-harness.ts --exclude-tags transparency",
|
|
"test:update": "tsx src/regression-harness.ts --update --exclude-tags transparency",
|
|
"test:distributed": "tsx src/regression-harness.ts --exclude-tags transparency --mode=distributed-simulated",
|
|
"test:transparency": "tsx src/transparency-test.ts",
|
|
"docker:build:test": "docker build -f ../../Dockerfile.test -t hyperframes-producer:test ../..",
|
|
"docker:test": "docker run --rm --security-opt seccomp=unconfined --shm-size=2g -v ./tests:/app/packages/producer/tests hyperframes-producer:test",
|
|
"docker:test:update": "docker run --rm --security-opt seccomp=unconfined --shm-size=2g -v ./tests:/app/packages/producer/tests hyperframes-producer:test --update",
|
|
"docker:test:distributed": "docker run --rm --security-opt seccomp=unconfined --shm-size=2g -v ./tests:/app/packages/producer/tests hyperframes-producer:test --mode=distributed-simulated",
|
|
"test:lambda-local": "tsx src/regression-harness.ts --exclude-tags transparency --mode=lambda-local",
|
|
"docker:test:lambda-local": "docker run --rm --security-opt seccomp=unconfined --shm-size=2g -v ./tests:/app/packages/producer/tests hyperframes-producer:test --mode=lambda-local",
|
|
"prepublishOnly": "echo skip"
|
|
},
|
|
"dependencies": {
|
|
"@fontsource/archivo-black": "^5.2.8",
|
|
"@fontsource/eb-garamond": "^5.2.7",
|
|
"@fontsource/ibm-plex-mono": "^5.2.7",
|
|
"@fontsource/inter": "^5.2.8",
|
|
"@fontsource/jetbrains-mono": "^5.2.8",
|
|
"@fontsource/league-gothic": "^5.2.8",
|
|
"@fontsource/montserrat": "^5.2.8",
|
|
"@fontsource/nunito": "^5.2.7",
|
|
"@fontsource/oswald": "^5.2.8",
|
|
"@fontsource/outfit": "^5.2.8",
|
|
"@fontsource/space-mono": "^5.2.9",
|
|
"@hono/node-server": "^1.13.0",
|
|
"@hyperframes/core": "workspace:^",
|
|
"@hyperframes/engine": "workspace:^",
|
|
"hono": "^4.6.0",
|
|
"linkedom": "^0.18.12",
|
|
"postcss": "^8.4.0",
|
|
"puppeteer": "^24.0.0",
|
|
"puppeteer-core": "^24.39.1"
|
|
},
|
|
"devDependencies": {
|
|
"@fontsource/lato": "^5.2.7",
|
|
"@fontsource/noto-sans-jp": "^5.2.9",
|
|
"@fontsource/open-sans": "^5.2.7",
|
|
"@fontsource/playfair-display": "^5.2.8",
|
|
"@fontsource/poppins": "^5.2.7",
|
|
"@fontsource/roboto": "^5.2.10",
|
|
"@fontsource/source-code-pro": "^5.2.7",
|
|
"@hyperframes/aws-lambda": "workspace:*",
|
|
"@types/node": "^25.0.10",
|
|
"@webgpu/types": "^0.1.69",
|
|
"esbuild": "^0.25.12",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^5.7.2"
|
|
},
|
|
"engines": {
|
|
"node": ">=22"
|
|
}
|
|
}
|