Files
bunext/dist/functions/bundler/plugins/ssr-ctx-artifact-tracker.js
T
2026-10-02 14:50:13 +01:00

57 lines
2.5 KiB
JavaScript

import {} from "esbuild";
import grabArtifactsFromBundledResults from "../grab-artifacts-from-bundled-result";
import { writeFileSync } from "fs";
import path from "path";
import grabDirNames from "../../../utils/grab-dir-names";
import grabRelativePath from "../../../utils/grab-relative-path";
import { logBuildErrorsOnce, resetBuildErrorLog, } from "../../../utils/build-error-log";
import { log } from "../../../utils/log";
let build_start = 0;
const { BUNX_TMP_DIR } = grabDirNames();
export default function ssrCTXArtifactTracker({ entryToPage }) {
const artifactTracker = {
name: "ssr-artifact-tracker",
setup(build) {
build.onStart(async () => {
build_start = performance.now();
});
build.onEnd(async (result) => {
if (result.errors.length > 0) {
global.BUNEXT_BUILD_FAILED = true;
global.BUNEXT_SSR_BUNDLER_CTX_DISPOSED = true;
logBuildErrorsOnce(result.errors, (line) => log.error(`SSR Build error: ${line}`));
return;
}
const artifacts = grabArtifactsFromBundledResults({
result,
entryToPage,
virtual_match: `ssr-virtual`,
});
if (artifacts?.[0] && artifacts.length > 0) {
for (let i = 0; i < artifacts.length; i++) {
const artifact = artifacts[i];
if (artifact?.local_path &&
global.BUNEXT_SSR_BUNDLER_CTX_MAP) {
const relative_path = grabRelativePath(artifact.local_path);
global.BUNEXT_SSR_BUNDLER_CTX_MAP[relative_path] = {
...artifact,
local_path: relative_path,
};
}
}
}
try {
writeFileSync(path.join(BUNX_TMP_DIR, "ctx-map.json"), JSON.stringify(global.BUNEXT_SSR_BUNDLER_CTX_MAP, null, 4));
}
catch (error) { }
// const elapsed = (performance.now() - build_start).toFixed(0);
// log.success(`SSR [Built] in ${elapsed}ms`);
global.BUNEXT_SSR_BUNDLER_CTX_DISPOSED = false;
global.BUNEXT_BUILD_FAILED = false;
resetBuildErrorLog();
});
},
};
return artifactTracker;
}