Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { Buffer } from "node:buffer";
import crypto from "node:crypto";
import { build, type Plugin } from "esbuild";
import { describe, expect, it } from "vitest";
describe("tmp-openclaw-dir browser-safe import", () => {
it("loads when a browser fs shim omits constants", async () => {
const resultKey = `__openclawTmpDirBrowserImport_${crypto.randomUUID().replaceAll("-", "_")}`;
const nodeShimPlugin: Plugin = {
name: "node-browser-shims",
setup(pluginBuild) {
pluginBuild.onResolve({ filter: /^node:(fs|os|path)$/ }, (args) => ({
path: args.path,
namespace: "node-browser-shim",
}));
pluginBuild.onLoad({ filter: /^node:fs$/, namespace: "node-browser-shim" }, () => ({
contents: "export default { constants: undefined };",
loader: "js",
}));
pluginBuild.onLoad({ filter: /^node:os$/, namespace: "node-browser-shim" }, () => ({
contents: 'export const tmpdir = () => "/tmp";',
loader: "js",
}));
pluginBuild.onLoad({ filter: /^node:path$/, namespace: "node-browser-shim" }, () => ({
contents: "export default { join: (...parts) => parts.join('/') };",
loader: "js",
}));
},
};
const bundled = await build({
bundle: true,
format: "esm",
platform: "browser",
plugins: [nodeShimPlugin],
stdin: {
contents: `
import { POSIX_OPENCLAW_TMP_DIR, resolvePreferredOpenClawTmpDir } from "./src/infra/tmp-openclaw-dir.ts";
globalThis.${resultKey} = {
posixTmpDir: POSIX_OPENCLAW_TMP_DIR,
resolverType: typeof resolvePreferredOpenClawTmpDir,
};
`,
loader: "ts",
resolveDir: process.cwd(),
sourcefile: "tmp-openclaw-dir-browser-entry.ts",
},
write: false,
});
const bundledSource = bundled.outputFiles[0]?.text;
expect(bundledSource).toBeTruthy();
await import(
`data:text/javascript;base64,${Buffer.from(bundledSource ?? "").toString("base64")}`
);
try {
expect((globalThis as Record<string, unknown>)[resultKey]).toEqual({
posixTmpDir: "/tmp/openclaw",
resolverType: "function",
});
} finally {
delete (globalThis as Record<string, unknown>)[resultKey];
}
});
});
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland