
























@@ -0,0 +1,107 @@
1+import fs from "node:fs";
2+import os from "node:os";
3+import path from "node:path";
4+import { afterEach, describe, expect, it } from "vitest";
5+import {
6+clearBundledRuntimeDependencyJitiAliases,
7+registerBundledRuntimeDependencyJitiAliases,
8+resolveBundledRuntimeDependencyJitiAliasMap,
9+} from "./bundled-runtime-deps-jiti-aliases.js";
10+11+const tempDirs: string[] = [];
12+13+function makeTempRoot(): string {
14+const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-runtime-aliases-"));
15+tempDirs.push(tempDir);
16+return tempDir;
17+}
18+19+function writeJson(filePath: string, value: unknown): void {
20+fs.mkdirSync(path.dirname(filePath), { recursive: true });
21+fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
22+}
23+24+function writeFile(filePath: string): void {
25+fs.mkdirSync(path.dirname(filePath), { recursive: true });
26+fs.writeFileSync(filePath, "export default null;\n", "utf8");
27+}
28+29+function packageRoot(rootDir: string, packageName: string): string {
30+return path.join(rootDir, "node_modules", ...packageName.split("/"));
31+}
32+33+afterEach(() => {
34+clearBundledRuntimeDependencyJitiAliases();
35+for (const tempDir of tempDirs.splice(0)) {
36+fs.rmSync(tempDir, { recursive: true, force: true });
37+}
38+});
39+40+describe("bundled runtime dependency Jiti aliases", () => {
41+it("registers root, subpath, wildcard, and scoped package aliases", () => {
42+const rootDir = makeTempRoot();
43+writeJson(path.join(rootDir, "package.json"), {
44+dependencies: {
45+plain: "1.0.0",
46+wild: "1.0.0",
47+"@scope/pkg": "1.0.0",
48+},
49+});
50+51+const plainRoot = packageRoot(rootDir, "plain");
52+writeJson(path.join(plainRoot, "package.json"), {
53+exports: {
54+".": { import: "./esm/index.js", default: "./cjs/index.js" },
55+"./feature": "./features/feature.js",
56+},
57+});
58+writeFile(path.join(plainRoot, "esm/index.js"));
59+writeFile(path.join(plainRoot, "features/feature.js"));
60+61+const wildRoot = packageRoot(rootDir, "wild");
62+writeJson(path.join(wildRoot, "package.json"), {
63+exports: {
64+"./sub/*": "./dist/*.js",
65+},
66+});
67+writeFile(path.join(wildRoot, "dist/a.js"));
68+writeFile(path.join(wildRoot, "dist/nested/b.js"));
69+70+const scopedRoot = packageRoot(rootDir, "@scope/pkg");
71+writeJson(path.join(scopedRoot, "package.json"), {
72+module: "./index.mjs",
73+});
74+writeFile(path.join(scopedRoot, "index.mjs"));
75+76+registerBundledRuntimeDependencyJitiAliases(rootDir);
77+78+expect(resolveBundledRuntimeDependencyJitiAliasMap()).toEqual({
79+"wild/sub/nested/b": path.join(wildRoot, "dist/nested/b.js"),
80+"plain/feature": path.join(plainRoot, "features/feature.js"),
81+"@scope/pkg": path.join(scopedRoot, "index.mjs"),
82+"wild/sub/a": path.join(wildRoot, "dist/a.js"),
83+plain: path.join(plainRoot, "esm/index.js"),
84+});
85+});
86+87+it("ignores missing, private, and escaping export targets", () => {
88+const rootDir = makeTempRoot();
89+writeJson(path.join(rootDir, "package.json"), {
90+dependencies: {
91+unsafe: "1.0.0",
92+},
93+});
94+const unsafeRoot = packageRoot(rootDir, "unsafe");
95+writeJson(path.join(unsafeRoot, "package.json"), {
96+exports: {
97+".": "../outside.js",
98+"./private": "#internal",
99+"./missing": "./missing.js",
100+},
101+});
102+103+registerBundledRuntimeDependencyJitiAliases(rootDir);
104+105+expect(resolveBundledRuntimeDependencyJitiAliasMap()).toBeUndefined();
106+});
107+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。