mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-11-15 13:58:20 +00:00
Merge pull request #938 from heygen-com/chore/fallow-config-and-cleanup
chore: add fallow config and fix high-signal findings
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/fallow-rs/fallow/main/config-schema.json",
|
||||
"entry": [
|
||||
"packages/producer/src/**/*.test.ts",
|
||||
"packages/aws-lambda/src/**/*.test.ts",
|
||||
"packages/producer/src/regression-harness.ts",
|
||||
"packages/producer/src/regression-harness-distributed.test.ts",
|
||||
"packages/producer/src/regression-harness-lambda-local.ts",
|
||||
"packages/producer/src/transparency-test.ts",
|
||||
"packages/producer/src/parity-harness.ts",
|
||||
"packages/producer/src/parity-fixtures.ts",
|
||||
"packages/producer/src/perf-gate.ts",
|
||||
"packages/producer/src/runtime-conformance.ts",
|
||||
"packages/producer/src/benchmark.ts",
|
||||
"packages/producer/scripts/generate-font-data.ts",
|
||||
"packages/cli/scripts/generate-font-data.ts",
|
||||
"packages/engine/scripts/test-fitTextFontSize-browser.ts",
|
||||
"packages/aws-lambda/scripts/*.ts",
|
||||
// Built as standalone IIFE for the browser-side sandbox runtime;
|
||||
// referenced by file path (not import) in build-hyperframes-runtime-artifact.ts.
|
||||
"packages/core/src/runtime/entry.ts",
|
||||
// Worker entry points loaded dynamically by their *Pool.ts companions.
|
||||
"packages/producer/src/services/pngDecodeBlitWorker.ts",
|
||||
"packages/producer/src/services/shaderTransitionWorker.ts",
|
||||
"scripts/*.{ts,mjs,js}",
|
||||
"scripts/*/run.mjs",
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"docs/**",
|
||||
"packages/producer/tests/**",
|
||||
"packages/player/tests/**",
|
||||
"packages/engine/tests/**",
|
||||
"skills/**/test-corpus/**",
|
||||
"skills/**/scripts/**",
|
||||
"registry/**",
|
||||
"examples/**",
|
||||
".github/workflows/fixtures/**",
|
||||
],
|
||||
"ignoreExports": [
|
||||
// CLI command files: every command exports a const `examples` per the
|
||||
// convention documented in CLAUDE.md. This is a namespace barrel, not a
|
||||
// collision.
|
||||
{ "file": "packages/cli/src/commands/*.ts", "exports": ["examples"] },
|
||||
// Independent ML model managers each declare their own DEFAULT_MODEL /
|
||||
// MODELS_DIR / ensureModel for their model namespace.
|
||||
{
|
||||
"file": "packages/cli/src/{background-removal,tts,whisper}/manager.ts",
|
||||
"exports": ["DEFAULT_MODEL", "MODELS_DIR", "ensureModel"],
|
||||
},
|
||||
// `isPathInside` is documented as exported-for-tests only in fileServer.ts;
|
||||
// it has different semantics (symlink resolution) from utils/paths.ts.
|
||||
{
|
||||
"file": "packages/producer/src/services/fileServer.ts",
|
||||
"exports": ["isPathInside"],
|
||||
},
|
||||
],
|
||||
"ignoreDependencies": [
|
||||
// Runtime/dynamic deps not visible to static analysis: tsup `external`,
|
||||
// dynamic require() resolution, peer/static-file consumption in tests,
|
||||
// and bun-hoisted workspace devDeps (e.g. happy-dom in root package.json
|
||||
// resolves for every workspace, so workspaces don't redeclare it).
|
||||
"puppeteer",
|
||||
"puppeteer-core",
|
||||
"esbuild",
|
||||
"giget",
|
||||
"gsap",
|
||||
"happy-dom",
|
||||
"ffmpeg-static",
|
||||
"ffprobe-static",
|
||||
"@hyperframes/core",
|
||||
"@hyperframes/studio",
|
||||
"@hyperframes/producer",
|
||||
"@fontsource/archivo-black",
|
||||
"@fontsource/eb-garamond",
|
||||
"@fontsource/ibm-plex-mono",
|
||||
"@fontsource/inter",
|
||||
"@fontsource/jetbrains-mono",
|
||||
"@fontsource/league-gothic",
|
||||
"@fontsource/montserrat",
|
||||
"@fontsource/nunito",
|
||||
"@fontsource/oswald",
|
||||
"@fontsource/outfit",
|
||||
"@fontsource/space-mono",
|
||||
"@fontsource/lato",
|
||||
"@fontsource/noto-sans-jp",
|
||||
"@fontsource/open-sans",
|
||||
"@fontsource/playfair-display",
|
||||
"@fontsource/poppins",
|
||||
"@fontsource/roboto",
|
||||
"@fontsource/source-code-pro",
|
||||
],
|
||||
}
|
||||
@@ -21,7 +21,7 @@
|
||||
},
|
||||
"packages/aws-lambda": {
|
||||
"name": "@hyperframes/aws-lambda",
|
||||
"version": "0.0.1",
|
||||
"version": "0.6.22",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.700.0",
|
||||
"@aws-sdk/client-sfn": "^3.700.0",
|
||||
@@ -53,7 +53,7 @@
|
||||
},
|
||||
"packages/cli": {
|
||||
"name": "@hyperframes/cli",
|
||||
"version": "0.6.15",
|
||||
"version": "0.6.22",
|
||||
"bin": {
|
||||
"hyperframes": "./dist/cli.js",
|
||||
},
|
||||
@@ -66,7 +66,6 @@
|
||||
"esbuild": "^0.25.12",
|
||||
"giget": "^3.2.0",
|
||||
"hono": "^4.0.0",
|
||||
"mime-types": "^3.0.2",
|
||||
"onnxruntime-node": "^1.20.0",
|
||||
"open": "^10.0.0",
|
||||
"postcss": "^8.5.8",
|
||||
@@ -97,7 +96,7 @@
|
||||
},
|
||||
"packages/core": {
|
||||
"name": "@hyperframes/core",
|
||||
"version": "0.6.15",
|
||||
"version": "0.6.22",
|
||||
"dependencies": {
|
||||
"@chenglou/pretext": "^0.0.5",
|
||||
"postcss": "^8.5.8",
|
||||
@@ -124,7 +123,7 @@
|
||||
},
|
||||
"packages/engine": {
|
||||
"name": "@hyperframes/engine",
|
||||
"version": "0.6.15",
|
||||
"version": "0.6.22",
|
||||
"dependencies": {
|
||||
"@hono/node-server": "^1.13.0",
|
||||
"@hyperframes/core": "workspace:^",
|
||||
@@ -142,7 +141,7 @@
|
||||
},
|
||||
"packages/player": {
|
||||
"name": "@hyperframes/player",
|
||||
"version": "0.6.15",
|
||||
"version": "0.6.22",
|
||||
"devDependencies": {
|
||||
"@types/bun": "^1.1.0",
|
||||
"gsap": "^3.12.5",
|
||||
@@ -154,7 +153,7 @@
|
||||
},
|
||||
"packages/producer": {
|
||||
"name": "@hyperframes/producer",
|
||||
"version": "0.6.15",
|
||||
"version": "0.6.22",
|
||||
"dependencies": {
|
||||
"@fontsource/archivo-black": "^5.2.8",
|
||||
"@fontsource/eb-garamond": "^5.2.7",
|
||||
@@ -194,7 +193,7 @@
|
||||
},
|
||||
"packages/shader-transitions": {
|
||||
"name": "@hyperframes/shader-transitions",
|
||||
"version": "0.6.15",
|
||||
"version": "0.6.22",
|
||||
"dependencies": {
|
||||
"html2canvas": "^1.4.1",
|
||||
},
|
||||
@@ -206,7 +205,7 @@
|
||||
},
|
||||
"packages/studio": {
|
||||
"name": "@hyperframes/studio",
|
||||
"version": "0.6.15",
|
||||
"version": "0.6.22",
|
||||
"dependencies": {
|
||||
"@codemirror/autocomplete": "^6.20.1",
|
||||
"@codemirror/commands": "^6.10.3",
|
||||
@@ -221,8 +220,6 @@
|
||||
"@hyperframes/core": "workspace:*",
|
||||
"@hyperframes/player": "workspace:*",
|
||||
"@phosphor-icons/react": "^2.1.10",
|
||||
"codemirror": "^6.0.1",
|
||||
"motion": "^12.38.0",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@hyperframes/producer": "workspace:*",
|
||||
@@ -1106,8 +1103,6 @@
|
||||
|
||||
"cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
|
||||
|
||||
"codemirror": ["codemirror@6.0.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/lint": "^6.0.0", "@codemirror/search": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0" } }, "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw=="],
|
||||
|
||||
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
||||
|
||||
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
||||
@@ -1292,8 +1287,6 @@
|
||||
|
||||
"fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="],
|
||||
|
||||
"framer-motion": ["framer-motion@12.38.0", "", { "dependencies": { "motion-dom": "^12.38.0", "motion-utils": "^12.36.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g=="],
|
||||
|
||||
"fs-extra": ["fs-extra@11.3.5", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg=="],
|
||||
|
||||
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
||||
@@ -1498,9 +1491,9 @@
|
||||
|
||||
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
|
||||
|
||||
"mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
|
||||
"mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
|
||||
|
||||
"mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="],
|
||||
"mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
|
||||
|
||||
"minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
|
||||
|
||||
@@ -1514,12 +1507,6 @@
|
||||
|
||||
"mlly": ["mlly@1.8.2", "", { "dependencies": { "acorn": "^8.16.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.3" } }, "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA=="],
|
||||
|
||||
"motion": ["motion@12.38.0", "", { "dependencies": { "framer-motion": "^12.38.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w=="],
|
||||
|
||||
"motion-dom": ["motion-dom@12.38.0", "", { "dependencies": { "motion-utils": "^12.36.0" } }, "sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA=="],
|
||||
|
||||
"motion-utils": ["motion-utils@12.36.0", "", {}, "sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg=="],
|
||||
|
||||
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
||||
|
||||
"mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="],
|
||||
@@ -1904,8 +1891,6 @@
|
||||
|
||||
"anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
|
||||
|
||||
"aws-cdk-lib/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
|
||||
|
||||
"aws-cdk-lib/yaml": ["yaml@1.10.3", "", {}, "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA=="],
|
||||
|
||||
"chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
|
||||
@@ -1990,8 +1975,6 @@
|
||||
|
||||
"@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
|
||||
|
||||
"aws-cdk-lib/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
|
||||
|
||||
"gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
|
||||
|
||||
"glob/minimatch/brace-expansion": ["brace-expansion@2.1.0", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w=="],
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
"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 -e \"const fs=require('fs');if(!fs.existsSync('../producer/src/services/fontData.generated.ts')){const {execSync}=require('child_process');execSync('cd ../producer && tsx scripts/generate-font-data.ts',{stdio:'inherit'})}else{console.log('[build:fonts] skipped — fontData.generated.ts already exists')}\"",
|
||||
"build:fonts": "node scripts/build-fonts.mjs",
|
||||
"build:runtime": "tsx scripts/build-runtime.ts",
|
||||
"build:copy": "node scripts/build-copy.mjs",
|
||||
"typecheck": "tsc --noEmit"
|
||||
@@ -32,7 +32,6 @@
|
||||
"esbuild": "^0.25.12",
|
||||
"giget": "^3.2.0",
|
||||
"hono": "^4.0.0",
|
||||
"mime-types": "^3.0.2",
|
||||
"onnxruntime-node": "^1.20.0",
|
||||
"open": "^10.0.0",
|
||||
"postcss": "^8.5.8",
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env node
|
||||
import { existsSync } from "node:fs";
|
||||
import { execSync } from "node:child_process";
|
||||
|
||||
const target = "../producer/src/services/fontData.generated.ts";
|
||||
|
||||
if (existsSync(target)) {
|
||||
console.log("[build:fonts] skipped — fontData.generated.ts already exists");
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
execSync("cd ../producer && tsx scripts/generate-font-data.ts", {
|
||||
stdio: "inherit",
|
||||
});
|
||||
@@ -1,22 +0,0 @@
|
||||
export const MIME_TYPES: Record<string, string> = {
|
||||
".html": "text/html",
|
||||
".css": "text/css",
|
||||
".js": "application/javascript",
|
||||
".json": "application/json",
|
||||
".svg": "image/svg+xml",
|
||||
".png": "image/png",
|
||||
".jpg": "image/jpeg",
|
||||
".jpeg": "image/jpeg",
|
||||
".gif": "image/gif",
|
||||
".webp": "image/webp",
|
||||
".mp4": "video/mp4",
|
||||
".mov": "video/quicktime",
|
||||
".webm": "video/webm",
|
||||
".mp3": "audio/mpeg",
|
||||
".wav": "audio/wav",
|
||||
".ogg": "audio/ogg",
|
||||
".woff2": "font/woff2",
|
||||
".woff": "font/woff",
|
||||
".ttf": "font/ttf",
|
||||
".ico": "image/x-icon",
|
||||
};
|
||||
@@ -47,7 +47,6 @@ var __dirname = __hf_dirname(__filename);`,
|
||||
"hono",
|
||||
"hono/*",
|
||||
"@hono/node-server",
|
||||
"mime-types",
|
||||
"adm-zip",
|
||||
"esbuild",
|
||||
"giget",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { Keyframe, KeyframeProperties } from "../core.types";
|
||||
import type { Keyframe, KeyframeProperties, ValidationResult } from "../core.types";
|
||||
|
||||
export type GsapMethod = "set" | "to" | "from" | "fromTo";
|
||||
|
||||
@@ -344,12 +344,6 @@ export function getAnimationsForElement(
|
||||
return animations.filter((a) => a.targetSelector === selector);
|
||||
}
|
||||
|
||||
export interface ValidationResult {
|
||||
valid: boolean;
|
||||
errors: string[];
|
||||
warnings: string[];
|
||||
}
|
||||
|
||||
const FORBIDDEN_GSAP_PATTERNS: Array<{ pattern: RegExp; message: string }> = [
|
||||
{ pattern: /\.call\s*\(/, message: "call() method not allowed" },
|
||||
{
|
||||
|
||||
@@ -17,7 +17,7 @@ import {
|
||||
gsapAnimationsToKeyframes,
|
||||
getAnimationsForElement,
|
||||
} from "./gsapParser";
|
||||
import type { ValidationResult } from "./gsapParser";
|
||||
import type { ValidationResult } from "../core.types";
|
||||
|
||||
const MEDIA_TYPES = new Set<string>(["video", "image", "audio"]);
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
},
|
||||
"scripts": {
|
||||
"build": "bun run build:fonts && bun run --cwd ../.. build:hyperframes-runtime:modular && node build.mjs",
|
||||
"build:fonts": "node -e \"const fs=require('fs');if(!fs.existsSync('src/services/fontData.generated.ts')){const {execSync}=require('child_process');execSync('node --experimental-strip-types scripts/generate-font-data.ts',{stdio:'inherit'})}else{console.log('[build:fonts] skipped — fontData.generated.ts already exists')}\"",
|
||||
"build:fonts": "node scripts/build-fonts.mjs",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"parity:check": "tsx src/parity-harness.ts",
|
||||
"parity:fixtures": "tsx src/parity-fixtures.ts",
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env node
|
||||
import { existsSync } from "node:fs";
|
||||
import { execSync } from "node:child_process";
|
||||
|
||||
const target = "src/services/fontData.generated.ts";
|
||||
|
||||
if (existsSync(target)) {
|
||||
console.log("[build:fonts] skipped — fontData.generated.ts already exists");
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
execSync("node --experimental-strip-types scripts/generate-font-data.ts", {
|
||||
stdio: "inherit",
|
||||
});
|
||||
@@ -38,9 +38,7 @@
|
||||
"@codemirror/view": "6.40.0",
|
||||
"@hyperframes/core": "workspace:*",
|
||||
"@hyperframes/player": "workspace:*",
|
||||
"@phosphor-icons/react": "^2.1.10",
|
||||
"codemirror": "^6.0.1",
|
||||
"motion": "^12.38.0"
|
||||
"@phosphor-icons/react": "^2.1.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@hyperframes/producer": "workspace:*",
|
||||
|
||||
@@ -26,9 +26,6 @@ export {
|
||||
applyStudioBoxSizeDraft,
|
||||
applyStudioRotation,
|
||||
applyStudioRotationDraft,
|
||||
clearStudioPathOffset,
|
||||
clearStudioRotation,
|
||||
clearStudioBoxSize,
|
||||
reapplyPositionEditsAfterSeek,
|
||||
buildMotionPatches,
|
||||
buildClearMotionPatches,
|
||||
@@ -41,6 +38,9 @@ export {
|
||||
restoreStudioBoxSize,
|
||||
restoreStudioRotation,
|
||||
restoreStudioPathOffset,
|
||||
clearStudioPathOffset,
|
||||
clearStudioRotation,
|
||||
clearStudioBoxSize,
|
||||
} from "./manualEditsSnapshot";
|
||||
|
||||
import type { StudioManualEditSeekWindow } from "./manualEditsTypes";
|
||||
|
||||
@@ -464,13 +464,6 @@ export function applyStudioRotationDraft(element: HTMLElement, rotation: { angle
|
||||
);
|
||||
}
|
||||
|
||||
// Clear functions live in manualEditsSnapshot.ts (they depend on restoreInline* helpers).
|
||||
export {
|
||||
clearStudioPathOffset,
|
||||
clearStudioRotation,
|
||||
clearStudioBoxSize,
|
||||
} from "./manualEditsSnapshot";
|
||||
|
||||
/* ── HTML patch builders ──────────────────────────────────────────── */
|
||||
import type { PatchOperation } from "../../utils/sourcePatcher";
|
||||
|
||||
|
||||
@@ -86,8 +86,6 @@ export const Eye = makeIcon(PhEye);
|
||||
export const EyeOff = makeIcon(EyeClosed);
|
||||
export const File = makeIcon(PhFile);
|
||||
export const FileCode = makeIcon(PhFileCode);
|
||||
// FileIcon alias (lucide exports both `File` and `FileIcon`)
|
||||
export const FileIcon = makeIcon(PhFile);
|
||||
export const FileText = makeIcon(PhFileText);
|
||||
export const Film = makeIcon(FilmStrip);
|
||||
export const Heart = makeIcon(PhHeart);
|
||||
|
||||
Reference in New Issue
Block a user