mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-01 19:42:03 +00:00
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
/** Build the injectable position-edits render artifact from the canonical runtime. */
|
|
|
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
import { dirname, resolve } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { buildSync } from "esbuild";
|
|
import { execFileSync } from "node:child_process";
|
|
|
|
const thisDir = dirname(fileURLToPath(import.meta.url));
|
|
const repoRoot = resolve(thisDir, "..");
|
|
const entry = resolve(repoRoot, "stubs/position-edits-render-entry.ts");
|
|
const generatedDir = resolve(repoRoot, "src/generated");
|
|
const outPath = resolve(generatedDir, "position-edits-render-inline.ts");
|
|
|
|
const result = buildSync({
|
|
entryPoints: [entry],
|
|
bundle: true,
|
|
write: false,
|
|
platform: "browser",
|
|
format: "iife",
|
|
target: ["es2020"],
|
|
minify: true,
|
|
legalComments: "none",
|
|
});
|
|
const iife = result.outputFiles[0]?.text ?? "";
|
|
if (!iife) throw new Error("esbuild produced no output for position-edits-render-entry.ts");
|
|
|
|
mkdirSync(generatedDir, { recursive: true });
|
|
writeFileSync(
|
|
outPath,
|
|
[
|
|
"// AUTO-GENERATED by scripts/build-position-edits-render.ts - do not edit",
|
|
`const POSITION_EDITS_RENDER_IIFE: string = ${JSON.stringify(iife)};`,
|
|
"",
|
|
"/** Returns the pre-built position-edits render IIFE as a string constant. */",
|
|
"export function getPositionEditsRenderScript(): string {",
|
|
" return POSITION_EDITS_RENDER_IIFE;",
|
|
"}",
|
|
"",
|
|
].join("\n"),
|
|
"utf8",
|
|
);
|
|
|
|
try {
|
|
execFileSync("bun", ["x", "oxfmt", outPath], { stdio: "ignore" });
|
|
} catch {
|
|
// Formatting is best effort when the generator runs in a minimal environment.
|
|
}
|
|
|
|
console.log(
|
|
JSON.stringify({ event: "position_edits_render_generated", outPath, bytes: iife.length }),
|
|
);
|