mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 04:38:33 +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
66 lines
1.7 KiB
JSON
66 lines
1.7 KiB
JSON
{
|
|
"name": "@hyperframes/cli",
|
|
"version": "0.6.22",
|
|
"description": "HyperFrames CLI — create, preview, and render HTML video compositions",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/heygen-com/hyperframes",
|
|
"directory": "packages/cli"
|
|
},
|
|
"bin": {
|
|
"hyperframes": "./dist/cli.js"
|
|
},
|
|
"files": [
|
|
"dist"
|
|
],
|
|
"type": "module",
|
|
"scripts": {
|
|
"test": "vitest run",
|
|
"dev": "tsx src/cli.ts",
|
|
"build": "bun run build:fonts && tsup && bun run build:runtime && bun run build:copy",
|
|
"build:fonts": "node scripts/build-fonts.mjs",
|
|
"build:runtime": "tsx scripts/build-runtime.ts",
|
|
"build:copy": "node scripts/build-copy.mjs",
|
|
"typecheck": "tsc --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"@hono/node-server": "^1.8.0",
|
|
"@puppeteer/browsers": "^2.13.0",
|
|
"adm-zip": "^0.5.16",
|
|
"citty": "^0.2.1",
|
|
"compare-versions": "^6.1.1",
|
|
"esbuild": "^0.25.12",
|
|
"giget": "^3.2.0",
|
|
"hono": "^4.0.0",
|
|
"onnxruntime-node": "^1.20.0",
|
|
"open": "^10.0.0",
|
|
"postcss": "^8.5.8",
|
|
"prettier": "^3.8.1",
|
|
"puppeteer-core": "^24.39.1",
|
|
"sharp": "^0.34.0"
|
|
},
|
|
"devDependencies": {
|
|
"@clack/prompts": "^1.1.0",
|
|
"@hyperframes/aws-lambda": "workspace:*",
|
|
"@hyperframes/core": "workspace:*",
|
|
"@hyperframes/engine": "workspace:*",
|
|
"@hyperframes/producer": "workspace:*",
|
|
"@hyperframes/studio": "workspace:*",
|
|
"@types/adm-zip": "^0.5.7",
|
|
"@types/mime-types": "^3.0.1",
|
|
"@types/node": "^25.0.10",
|
|
"linkedom": "^0.18.12",
|
|
"picocolors": "^1.1.1",
|
|
"tsup": "^8.0.0",
|
|
"tsx": "^4.0.0",
|
|
"typescript": "^5.0.0",
|
|
"vitest": "^3.2.4"
|
|
},
|
|
"optionalDependencies": {
|
|
"@google/genai": "^1.50.1"
|
|
},
|
|
"engines": {
|
|
"node": ">=22"
|
|
}
|
|
}
|