mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-10-30 09:16:55 +00:00
* fix(build): ship NodeNext-resolvable declarations from every package tsc copies relative specifiers verbatim, so packages whose sources use bundler-style extensionless imports (core, inspector) published .d.ts files that a module/moduleResolution nodenext consumer cannot resolve. Core already rewrote its emitted JavaScript for this, but not its declarations. Move that rewrite to scripts/rewrite-relative-import-extensions.mjs, make it cover .d.ts too (adding .js or /index.js, and failing the build when a declaration import has no declaration), and run it after every tsc emit: core, engine, sdk, producer, aws-lambda, gcp-cloud-run and inspector. verify:packed-manifests now typechecks the clean packed consumer with skipLibCheck false and type-only imports of every typed subpath, so an unresolvable import inside a published declaration fails the gate and is attributed to its package. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(ci): allow the moved core rewrite-esm-extensions script deletion Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * ci: rebuild the edit-accuracy bench when the import-extension rewriter changes The package builds now run scripts/rewrite-relative-import-extensions.mjs, so main's edit_accuracy paths filter has to include it (check-edit-accuracy-filter test). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* Build script for @hyperframes/producer (public OSS package)
|
|
*
|
|
* Bundles src/server.ts → dist/public-server.js (standalone server).
|
|
*/
|
|
|
|
import { build } from "esbuild";
|
|
import { mkdirSync, rmSync } from "fs";
|
|
import { resolve, dirname } from "path";
|
|
import { fileURLToPath } from "url";
|
|
import { BUNDLES, WORKERS } from "./buildEntries.mjs";
|
|
import { rewriteRelativeImportExtensions } from "../../scripts/rewrite-relative-import-extensions.mjs";
|
|
|
|
rmSync("dist", { recursive: true, force: true });
|
|
mkdirSync("dist", { recursive: true });
|
|
|
|
const scriptDir = dirname(fileURLToPath(import.meta.url));
|
|
|
|
const sharedOpts = {
|
|
bundle: true,
|
|
platform: "node",
|
|
target: "node22",
|
|
format: "esm",
|
|
// Dependencies install from package.json like any other package's, so the
|
|
// tarball carries only producer's own code (as aws-lambda and gcp-cloud-run do).
|
|
packages: "external",
|
|
minify: false,
|
|
};
|
|
|
|
await Promise.all(
|
|
[...BUNDLES, ...WORKERS].map(({ entry, outfile }) =>
|
|
build({ ...sharedOpts, entryPoints: [entry], outfile }),
|
|
),
|
|
);
|
|
|
|
// Copy core runtime artifacts so the producer can find them at dist/
|
|
import { copyFileSync, existsSync, readFileSync } from "fs";
|
|
const coreDistDir = resolve(scriptDir, "../core/dist");
|
|
try {
|
|
const manifestSrc = resolve(coreDistDir, "hyperframe.manifest.json");
|
|
if (existsSync(manifestSrc)) {
|
|
copyFileSync(manifestSrc, "dist/hyperframe.manifest.json");
|
|
const manifest = JSON.parse(readFileSync(manifestSrc, "utf8"));
|
|
const runtimeIife = manifest?.artifacts?.iife || "hyperframe.runtime.iife.js";
|
|
copyFileSync(resolve(coreDistDir, runtimeIife), `dist/${runtimeIife}`);
|
|
console.log(`[Build] Copied runtime: hyperframe.manifest.json, ${runtimeIife}`);
|
|
}
|
|
} catch (e) {
|
|
console.warn("[Build] Warning: Could not copy runtime artifacts:", e.message);
|
|
}
|
|
|
|
// Generate .d.ts declarations (esbuild doesn't emit them)
|
|
import { execSync } from "child_process";
|
|
execSync("tsc --emitDeclarationOnly --declaration --declarationMap false", {
|
|
stdio: "inherit",
|
|
});
|
|
rewriteRelativeImportExtensions("dist");
|
|
|
|
console.log("[Build] Complete: dist/index.js, dist/public-server.js, *.d.ts");
|