@simplysm/sd-cli 14.1.10 → 14.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capacitor/capacitor-icon.js +2 -2
- package/dist/capacitor/capacitor-icon.js.map +1 -1
- package/dist/capacitor/capacitor-npm-config.d.ts +1 -1
- package/dist/capacitor/capacitor-npm-config.d.ts.map +1 -1
- package/dist/capacitor/capacitor-npm-config.js +11 -6
- package/dist/capacitor/capacitor-npm-config.js.map +1 -1
- package/dist/capacitor/capacitor.d.ts +1 -1
- package/dist/capacitor/capacitor.js +2 -2
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/device.js +2 -2
- package/dist/commands/device.js.map +1 -1
- package/dist/commands/init/generators/root.d.ts.map +1 -1
- package/dist/commands/init/generators/root.js +1 -0
- package/dist/commands/init/generators/root.js.map +1 -1
- package/dist/commands/init/init-client.js +1 -1
- package/dist/commands/init/init-client.js.map +1 -1
- package/dist/commands/init/init.js +2 -2
- package/dist/commands/init/init.js.map +1 -1
- package/dist/commands/publish/npm-publisher.js +3 -3
- package/dist/commands/publish/npm-publisher.js.map +1 -1
- package/dist/commands/publish/publish-command.js +1 -1
- package/dist/commands/publish/publish-command.js.map +1 -1
- package/dist/deps/replace-deps/collect-deps.js +1 -1
- package/dist/deps/replace-deps/replace-deps-resolve.d.ts +2 -2
- package/dist/deps/replace-deps/replace-deps-resolve.js +2 -2
- package/dist/deps/replace-deps/replace-deps.d.ts +2 -2
- package/dist/deps/replace-deps/replace-deps.js +2 -2
- package/dist/deps/server-externals/server-production-files.d.ts +3 -3
- package/dist/deps/server-externals/server-production-files.d.ts.map +1 -1
- package/dist/deps/server-externals/server-production-files.js +17 -24
- package/dist/deps/server-externals/server-production-files.js.map +1 -1
- package/dist/electron/electron.d.ts.map +1 -1
- package/dist/electron/electron.js +11 -6
- package/dist/electron/electron.js.map +1 -1
- package/dist/utils/package-utils.d.ts +1 -1
- package/dist/utils/package-utils.js +1 -1
- package/dist/utils/workspace-utils.d.ts +2 -2
- package/dist/utils/workspace-utils.d.ts.map +1 -1
- package/dist/utils/workspace-utils.js +7 -6
- package/dist/utils/workspace-utils.js.map +1 -1
- package/package.json +9 -9
- package/src/capacitor/capacitor-icon.ts +2 -2
- package/src/capacitor/capacitor-npm-config.ts +12 -6
- package/src/capacitor/capacitor.ts +2 -2
- package/src/commands/device.ts +2 -2
- package/src/commands/init/generators/root.ts +1 -0
- package/src/commands/init/init-client.ts +1 -1
- package/src/commands/init/init.ts +2 -2
- package/src/commands/init/templates/workspace-root/mise.toml.hbs +1 -1
- package/src/commands/init/templates/workspace-root/package.json.hbs +0 -1
- package/src/commands/init/templates/workspace-root/pnpm-workspace.yaml +3 -0
- package/src/commands/publish/npm-publisher.ts +3 -3
- package/src/commands/publish/publish-command.ts +1 -1
- package/src/deps/replace-deps/collect-deps.ts +1 -1
- package/src/deps/replace-deps/replace-deps-resolve.ts +2 -2
- package/src/deps/replace-deps/replace-deps.ts +2 -2
- package/src/deps/server-externals/server-production-files.ts +18 -31
- package/src/electron/electron.ts +13 -7
- package/src/utils/package-utils.ts +1 -1
- package/src/utils/workspace-utils.ts +7 -10
- package/tests/capacitor/capacitor-npm-config.acc.spec.ts +114 -114
- package/tests/deps/server-externals/server-production-files.spec.ts +26 -28
- package/tests/electron/electron.spec.ts +13 -13
- package/tests/utils/workspace-utils.spec.ts +6 -9
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-browser.tsbuildinfo +0 -1
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-node.tsbuildinfo +0 -1
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck.tsbuildinfo +0 -1
package/src/electron/electron.ts
CHANGED
|
@@ -68,14 +68,20 @@ export class Electron {
|
|
|
68
68
|
await this._setupNpmConf();
|
|
69
69
|
Electron._logger.debug("package.json 설정 완료");
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
// pnpm-workspace.yaml 생성 (상위 workspace 탐색 차단)
|
|
72
|
+
const workspaceYamlPath = pathx.posixResolve(this._srcPath, "pnpm-workspace.yaml");
|
|
73
|
+
if (!(await fsx.exists(workspaceYamlPath))) {
|
|
74
|
+
await fsx.write(workspaceYamlPath, "");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
Electron._logger.debug("pnpm install 시작");
|
|
78
|
+
await this._exec("pnpm", ["install", "--config.dangerously-allow-all-builds=true"], this._srcPath);
|
|
79
|
+
Electron._logger.debug("pnpm install 완료");
|
|
74
80
|
|
|
75
81
|
const reinstallDeps = this._config.reinstallDependencies ?? [];
|
|
76
82
|
if (reinstallDeps.length > 0) {
|
|
77
83
|
Electron._logger.debug(`electron-rebuild 시작 (${reinstallDeps.join(", ")})`);
|
|
78
|
-
await this._exec("
|
|
84
|
+
await this._exec("pnpm", ["exec", "electron-rebuild"], this._srcPath);
|
|
79
85
|
Electron._logger.debug("electron-rebuild 완료");
|
|
80
86
|
}
|
|
81
87
|
Electron._logger.success("initialize 완료");
|
|
@@ -96,7 +102,7 @@ export class Electron {
|
|
|
96
102
|
|
|
97
103
|
const spawnElectron = () => {
|
|
98
104
|
Electron._logger.debug("Electron 프로세스 시작");
|
|
99
|
-
currentElectron = shellSpawn("
|
|
105
|
+
currentElectron = shellSpawn("pnpm", ["exec", "electron", "."], {
|
|
100
106
|
cwd: this._srcPath,
|
|
101
107
|
stdio: "inherit",
|
|
102
108
|
reject: false,
|
|
@@ -379,8 +385,8 @@ export class Electron {
|
|
|
379
385
|
|
|
380
386
|
Electron._logger.debug(`electron-builder 설정: ${configFilePath}`);
|
|
381
387
|
await this._exec(
|
|
382
|
-
"
|
|
383
|
-
["
|
|
388
|
+
"pnpm",
|
|
389
|
+
["exec", "electron-builder", "--win", "--config", configFilePath],
|
|
384
390
|
this._srcPath,
|
|
385
391
|
);
|
|
386
392
|
}
|
|
@@ -20,7 +20,7 @@ export function findPackageRoot(startDir: string): string {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* pnpm-workspace.yaml의 모든 워크스페이스 패키지를 탐색한다.
|
|
24
24
|
* 디렉토리명 → 상대 경로의 맵을 반환한다 (예: "orm" → "tests/orm", "sd" → "plugins/sd").
|
|
25
25
|
* packages/·tests/·plugins/ 등 종류를 가리지 않고 포함하며, 배포/검사 대상 구분은 소비자가 relPath로 판단한다.
|
|
26
26
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { globSync } from "glob";
|
|
4
|
+
import YAML from "yaml";
|
|
4
5
|
import { pathx } from "@simplysm/core-node";
|
|
5
6
|
|
|
6
7
|
export interface WorkspacePackageDir {
|
|
@@ -10,16 +11,12 @@ export interface WorkspacePackageDir {
|
|
|
10
11
|
absPath: string;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
interface WorkspaceRootPackageJson {
|
|
14
|
-
workspaces?: unknown;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
14
|
interface WorkspacePackageJson {
|
|
18
15
|
name?: unknown;
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
/**
|
|
22
|
-
*
|
|
19
|
+
* 워크스페이스 정의 값(배열 또는 { packages: [...] })을 패턴 배열로 정규화한다.
|
|
23
20
|
*/
|
|
24
21
|
export function parsePackageJsonWorkspaces(workspaces: unknown): string[] {
|
|
25
22
|
const rawPatterns = Array.isArray(workspaces)
|
|
@@ -35,11 +32,11 @@ export function parsePackageJsonWorkspaces(workspaces: unknown): string[] {
|
|
|
35
32
|
}
|
|
36
33
|
|
|
37
34
|
export function readWorkspacePatterns(workspaceRoot: string): string[] {
|
|
38
|
-
const
|
|
39
|
-
if (!fs.existsSync(
|
|
35
|
+
const workspaceYamlPath = path.join(workspaceRoot, "pnpm-workspace.yaml");
|
|
36
|
+
if (!fs.existsSync(workspaceYamlPath)) return [];
|
|
40
37
|
|
|
41
|
-
const
|
|
42
|
-
return parsePackageJsonWorkspaces(
|
|
38
|
+
const parsed = YAML.parse(fs.readFileSync(workspaceYamlPath, "utf-8")) as unknown;
|
|
39
|
+
return parsePackageJsonWorkspaces(parsed);
|
|
43
40
|
}
|
|
44
41
|
|
|
45
42
|
export function findWorkspaceRoot(startDir: string): string | undefined {
|
|
@@ -76,7 +73,7 @@ function splitWorkspacePatterns(patterns: string[]): { include: string[]; exclud
|
|
|
76
73
|
}
|
|
77
74
|
|
|
78
75
|
/**
|
|
79
|
-
*
|
|
76
|
+
* 워크스페이스 root의 pnpm-workspace.yaml(packages) 기준으로 실제 패키지 디렉터리를 수집한다.
|
|
80
77
|
*/
|
|
81
78
|
export function collectWorkspacePackages(workspaceRoot: string): WorkspacePackageDir[] {
|
|
82
79
|
const root = pathx.posix(path.resolve(workspaceRoot));
|
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeAll, afterAll, beforeEach } from "vitest";
|
|
2
|
-
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { fsx, cpx } from "@simplysm/core-node";
|
|
6
|
-
|
|
7
|
-
const mockFsxExists = vi.spyOn(fsx, "exists");
|
|
8
|
-
vi.spyOn(fsx, "read");
|
|
9
|
-
vi.spyOn(fsx, "write").mockResolvedValue(undefined);
|
|
10
|
-
const mockFsxReadJson = vi.spyOn(fsx, "readJson");
|
|
11
|
-
vi.spyOn(fsx, "writeJson").mockResolvedValue(undefined);
|
|
12
|
-
vi.spyOn(fsx, "mkdir").mockResolvedValue(undefined);
|
|
13
|
-
|
|
14
|
-
const execaCalls: { command: string; args: string[]; options: unknown }[] = [];
|
|
15
|
-
vi.spyOn(cpx, "spawn").mockImplementation(((cmd: string, args: string[], options: unknown) => {
|
|
16
|
-
execaCalls.push({
|
|
17
|
-
command: cmd,
|
|
18
|
-
args,
|
|
19
|
-
options,
|
|
20
|
-
});
|
|
21
|
-
return { stdout: "", stderr: "", exitCode: 0 };
|
|
22
|
-
}) as never);
|
|
23
|
-
|
|
24
|
-
//#endregion
|
|
25
|
-
|
|
26
|
-
let tmpRoot: string;
|
|
27
|
-
let CAP_PATH: string;
|
|
28
|
-
let PKG_PATH: string;
|
|
29
|
-
|
|
30
|
-
beforeAll(() => {
|
|
31
|
-
tmpRoot = mkdtempSync(path.join(tmpdir(), "cap-npm-config-acc-"));
|
|
32
|
-
writeFileSync(path.join(tmpRoot, "
|
|
33
|
-
PKG_PATH = path.join(tmpRoot, "pkg");
|
|
34
|
-
CAP_PATH = path.join(PKG_PATH, ".capacitor");
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
afterAll(() => {
|
|
38
|
-
rmSync(tmpRoot, { recursive: true, force: true });
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
function setupDefaultMocks() {
|
|
42
|
-
mockFsxExists.mockImplementation(((p: string) => {
|
|
43
|
-
const n = p.replace(/\\/g, "/");
|
|
44
|
-
if (n.includes(".capacitor.lock")) return false;
|
|
45
|
-
return true;
|
|
46
|
-
}) as never);
|
|
47
|
-
|
|
48
|
-
mockFsxReadJson.mockImplementation(((p: string) => {
|
|
49
|
-
const normalized = p.replace(/\\/g, "/");
|
|
50
|
-
if (normalized.includes(".capacitor/package.json")) {
|
|
51
|
-
return {
|
|
52
|
-
name: "com.test.app",
|
|
53
|
-
version: "1.0.0",
|
|
54
|
-
dependencies: {
|
|
55
|
-
"@capacitor/core": "^7",
|
|
56
|
-
"@capacitor/app": "^7",
|
|
57
|
-
"@capacitor/android": "^7",
|
|
58
|
-
},
|
|
59
|
-
devDependencies: {
|
|
60
|
-
"@capacitor/cli": "^7",
|
|
61
|
-
"@capacitor/assets": "^3",
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
return { name: "test-pkg", version: "1.0.0" };
|
|
66
|
-
}) as never);
|
|
67
|
-
|
|
68
|
-
execaCalls.length = 0;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
describe("initCapNpmProject", () => {
|
|
72
|
-
beforeEach(() => {
|
|
73
|
-
vi.clearAllMocks();
|
|
74
|
-
setupDefaultMocks();
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it("의존성 미변경 + node_modules 존재 시 false를 반환하고
|
|
78
|
-
const { initCapNpmProject } = await import(
|
|
79
|
-
"../../src/capacitor/capacitor-npm-config.js"
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
const changed = await initCapNpmProject(CAP_PATH, PKG_PATH, {
|
|
83
|
-
appId: "com.test.app",
|
|
84
|
-
appName: "Test App",
|
|
85
|
-
platform: { android: {} },
|
|
86
|
-
}, { name: "test-pkg", version: "1.0.0" }, ["android"], []);
|
|
87
|
-
|
|
88
|
-
expect(changed).toBe(false);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it("node_modules가 없으면 true를 반환하고
|
|
92
|
-
mockFsxExists.mockImplementation(((p: string) => {
|
|
93
|
-
const n = p.replace(/\\/g, "/");
|
|
94
|
-
if (n.includes(".capacitor.lock")) return false;
|
|
95
|
-
if (n.includes("node_modules")) return false;
|
|
96
|
-
return true;
|
|
97
|
-
}) as never);
|
|
98
|
-
|
|
99
|
-
const { initCapNpmProject } = await import(
|
|
100
|
-
"../../src/capacitor/capacitor-npm-config.js"
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
const changed = await initCapNpmProject(CAP_PATH, PKG_PATH, {
|
|
104
|
-
appId: "com.test.app",
|
|
105
|
-
appName: "Test App",
|
|
106
|
-
platform: { android: {} },
|
|
107
|
-
}, {
|
|
108
|
-
name: "test-pkg",
|
|
109
|
-
version: "1.0.0",
|
|
110
|
-
}, ["android"], []);
|
|
111
|
-
|
|
112
|
-
expect(changed).toBe(true);
|
|
113
|
-
});
|
|
114
|
-
});
|
|
1
|
+
import { describe, it, expect, vi, beforeAll, afterAll, beforeEach } from "vitest";
|
|
2
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { fsx, cpx } from "@simplysm/core-node";
|
|
6
|
+
|
|
7
|
+
const mockFsxExists = vi.spyOn(fsx, "exists");
|
|
8
|
+
vi.spyOn(fsx, "read");
|
|
9
|
+
vi.spyOn(fsx, "write").mockResolvedValue(undefined);
|
|
10
|
+
const mockFsxReadJson = vi.spyOn(fsx, "readJson");
|
|
11
|
+
vi.spyOn(fsx, "writeJson").mockResolvedValue(undefined);
|
|
12
|
+
vi.spyOn(fsx, "mkdir").mockResolvedValue(undefined);
|
|
13
|
+
|
|
14
|
+
const execaCalls: { command: string; args: string[]; options: unknown }[] = [];
|
|
15
|
+
vi.spyOn(cpx, "spawn").mockImplementation(((cmd: string, args: string[], options: unknown) => {
|
|
16
|
+
execaCalls.push({
|
|
17
|
+
command: cmd,
|
|
18
|
+
args,
|
|
19
|
+
options,
|
|
20
|
+
});
|
|
21
|
+
return { stdout: "", stderr: "", exitCode: 0 };
|
|
22
|
+
}) as never);
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
|
|
26
|
+
let tmpRoot: string;
|
|
27
|
+
let CAP_PATH: string;
|
|
28
|
+
let PKG_PATH: string;
|
|
29
|
+
|
|
30
|
+
beforeAll(() => {
|
|
31
|
+
tmpRoot = mkdtempSync(path.join(tmpdir(), "cap-npm-config-acc-"));
|
|
32
|
+
writeFileSync(path.join(tmpRoot, "pnpm-workspace.yaml"), "packages:\n - pkg\n");
|
|
33
|
+
PKG_PATH = path.join(tmpRoot, "pkg");
|
|
34
|
+
CAP_PATH = path.join(PKG_PATH, ".capacitor");
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
afterAll(() => {
|
|
38
|
+
rmSync(tmpRoot, { recursive: true, force: true });
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
function setupDefaultMocks() {
|
|
42
|
+
mockFsxExists.mockImplementation(((p: string) => {
|
|
43
|
+
const n = p.replace(/\\/g, "/");
|
|
44
|
+
if (n.includes(".capacitor.lock")) return false;
|
|
45
|
+
return true;
|
|
46
|
+
}) as never);
|
|
47
|
+
|
|
48
|
+
mockFsxReadJson.mockImplementation(((p: string) => {
|
|
49
|
+
const normalized = p.replace(/\\/g, "/");
|
|
50
|
+
if (normalized.includes(".capacitor/package.json")) {
|
|
51
|
+
return {
|
|
52
|
+
name: "com.test.app",
|
|
53
|
+
version: "1.0.0",
|
|
54
|
+
dependencies: {
|
|
55
|
+
"@capacitor/core": "^7",
|
|
56
|
+
"@capacitor/app": "^7",
|
|
57
|
+
"@capacitor/android": "^7",
|
|
58
|
+
},
|
|
59
|
+
devDependencies: {
|
|
60
|
+
"@capacitor/cli": "^7",
|
|
61
|
+
"@capacitor/assets": "^3",
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return { name: "test-pkg", version: "1.0.0" };
|
|
66
|
+
}) as never);
|
|
67
|
+
|
|
68
|
+
execaCalls.length = 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
describe("initCapNpmProject", () => {
|
|
72
|
+
beforeEach(() => {
|
|
73
|
+
vi.clearAllMocks();
|
|
74
|
+
setupDefaultMocks();
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("의존성 미변경 + node_modules 존재 시 false를 반환하고 pnpm install을 실행하지 않는다", async () => {
|
|
78
|
+
const { initCapNpmProject } = await import(
|
|
79
|
+
"../../src/capacitor/capacitor-npm-config.js"
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const changed = await initCapNpmProject(CAP_PATH, PKG_PATH, {
|
|
83
|
+
appId: "com.test.app",
|
|
84
|
+
appName: "Test App",
|
|
85
|
+
platform: { android: {} },
|
|
86
|
+
}, { name: "test-pkg", version: "1.0.0" }, ["android"], []);
|
|
87
|
+
|
|
88
|
+
expect(changed).toBe(false);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it("node_modules가 없으면 true를 반환하고 pnpm install을 실행한다", async () => {
|
|
92
|
+
mockFsxExists.mockImplementation(((p: string) => {
|
|
93
|
+
const n = p.replace(/\\/g, "/");
|
|
94
|
+
if (n.includes(".capacitor.lock")) return false;
|
|
95
|
+
if (n.includes("node_modules")) return false;
|
|
96
|
+
return true;
|
|
97
|
+
}) as never);
|
|
98
|
+
|
|
99
|
+
const { initCapNpmProject } = await import(
|
|
100
|
+
"../../src/capacitor/capacitor-npm-config.js"
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const changed = await initCapNpmProject(CAP_PATH, PKG_PATH, {
|
|
104
|
+
appId: "com.test.app",
|
|
105
|
+
appName: "Test App",
|
|
106
|
+
platform: { android: {} },
|
|
107
|
+
}, {
|
|
108
|
+
name: "test-pkg",
|
|
109
|
+
version: "1.0.0",
|
|
110
|
+
}, ["android"], []);
|
|
111
|
+
|
|
112
|
+
expect(changed).toBe(true);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
const tmpDirs: string[] = [];
|
|
11
11
|
|
|
12
12
|
function createLock(content: string): string {
|
|
13
|
-
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "sd-
|
|
13
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "sd-pnpm-lock-"));
|
|
14
14
|
tmpDirs.push(dir);
|
|
15
|
-
fs.writeFileSync(path.join(dir, "
|
|
15
|
+
fs.writeFileSync(path.join(dir, "pnpm-lock.yaml"), content);
|
|
16
16
|
return dir;
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -23,46 +23,44 @@ afterEach(() => {
|
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
describe("parseLockfileVersions", () => {
|
|
26
|
-
it("reads unscoped
|
|
27
|
-
const cwd = createLock(`
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
it("reads unscoped and scoped entries from pnpm-lock.yaml", () => {
|
|
27
|
+
const cwd = createLock(`lockfileVersion: '9.0'
|
|
28
|
+
packages:
|
|
29
|
+
is-number@7.0.0:
|
|
30
|
+
resolution: {integrity: sha512-a}
|
|
31
|
+
'@types/node@24.13.2':
|
|
32
|
+
resolution: {integrity: sha512-b}
|
|
33
|
+
fsevents@2.3.3:
|
|
34
|
+
resolution: {integrity: sha512-d}
|
|
35
|
+
os: [darwin]
|
|
36
|
+
`);
|
|
36
37
|
|
|
37
38
|
const map = parseLockfileVersions(cwd);
|
|
38
39
|
|
|
39
40
|
expect(map.get("is-number")).toBe("7.0.0");
|
|
40
41
|
expect(map.get("@types/node")).toBe("24.13.2");
|
|
41
|
-
expect(map.get("alias-pkg")).toBe("6.0.0");
|
|
42
42
|
expect(map.get("fsevents")).toBe("2.3.3");
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
it("strips peer suffix from package
|
|
46
|
-
const cwd = createLock(`
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}`);
|
|
45
|
+
it("strips peer suffix from package keys", () => {
|
|
46
|
+
const cwd = createLock(`lockfileVersion: '9.0'
|
|
47
|
+
packages:
|
|
48
|
+
'react-dom@19.2.7(react@19.2.7)':
|
|
49
|
+
resolution: {integrity: sha512-a}
|
|
50
|
+
`);
|
|
52
51
|
|
|
53
52
|
expect(parseLockfileVersions(cwd).get("react-dom")).toBe("19.2.7");
|
|
54
53
|
});
|
|
55
54
|
});
|
|
56
55
|
|
|
57
56
|
describe("resolveLockedVersions", () => {
|
|
58
|
-
it("throws when an external dependency is missing from
|
|
59
|
-
const cwd = createLock(`
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}`);
|
|
57
|
+
it("throws when an external dependency is missing from pnpm-lock.yaml", () => {
|
|
58
|
+
const cwd = createLock(`lockfileVersion: '9.0'
|
|
59
|
+
packages:
|
|
60
|
+
is-number@7.0.0:
|
|
61
|
+
resolution: {integrity: sha512-a}
|
|
62
|
+
`);
|
|
65
63
|
|
|
66
|
-
expect(() => resolveLockedVersions(cwd, ["missing"])).toThrow("
|
|
64
|
+
expect(() => resolveLockedVersions(cwd, ["missing"])).toThrow("pnpm-lock.yaml");
|
|
67
65
|
});
|
|
68
66
|
});
|
|
@@ -145,7 +145,7 @@ describe("Electron", () => {
|
|
|
145
145
|
//#region Rule: Electron 프로젝트를 초기화한다
|
|
146
146
|
|
|
147
147
|
describe("인수 테스트: 초기화", () => {
|
|
148
|
-
it("package.json 생성 +
|
|
148
|
+
it("package.json 생성 + pnpm install + electron-rebuild를 실행한다", async () => {
|
|
149
149
|
const { Electron } = await import("../../src/electron/electron.js");
|
|
150
150
|
|
|
151
151
|
const electron = await Electron.create(PKG_PATH, {
|
|
@@ -159,13 +159,13 @@ describe("Electron", () => {
|
|
|
159
159
|
|
|
160
160
|
const spawnCalls = mockCpxSpawn.mock.calls;
|
|
161
161
|
const installCall = spawnCalls.find(
|
|
162
|
-
(c) => c[0] === "
|
|
162
|
+
(c) => c[0] === "pnpm" && c[1].includes("install"),
|
|
163
163
|
);
|
|
164
164
|
expect(installCall).toBeDefined();
|
|
165
165
|
expect(installCall?.[2]).toEqual(expect.objectContaining({ shell: true }));
|
|
166
166
|
expect(
|
|
167
167
|
spawnCalls.find(
|
|
168
|
-
(c) => c[0] === "
|
|
168
|
+
(c) => c[0] === "pnpm" && c[1].includes("electron-rebuild"),
|
|
169
169
|
),
|
|
170
170
|
).toBeDefined();
|
|
171
171
|
});
|
|
@@ -177,7 +177,7 @@ describe("Electron", () => {
|
|
|
177
177
|
await electron.initialize();
|
|
178
178
|
|
|
179
179
|
const rebuildCall = mockCpxSpawn.mock.calls.find(
|
|
180
|
-
(c) => c[0] === "
|
|
180
|
+
(c) => c[0] === "pnpm" && c[1].includes("electron-rebuild"),
|
|
181
181
|
);
|
|
182
182
|
expect(rebuildCall).toBeUndefined();
|
|
183
183
|
});
|
|
@@ -455,8 +455,8 @@ describe("Electron", () => {
|
|
|
455
455
|
let resolveElectron: () => void = () => {};
|
|
456
456
|
|
|
457
457
|
mockCpxSpawn.mockImplementation((cmd: string, args: string[]) => {
|
|
458
|
-
//
|
|
459
|
-
if (cmd === "
|
|
458
|
+
// pnpm exec electron . → Electron 프로세스
|
|
459
|
+
if (cmd === "pnpm" && args[0] === "exec" && args[1] === "electron" && args[2] === ".") {
|
|
460
460
|
const p = new Promise<void>((resolve) => {
|
|
461
461
|
resolveElectron = resolve;
|
|
462
462
|
}) as any;
|
|
@@ -499,7 +499,7 @@ describe("Electron", () => {
|
|
|
499
499
|
expect(callArgs.bundle).toBe(true);
|
|
500
500
|
expect(callArgs.external).toContain("electron");
|
|
501
501
|
const electronCall = mockCpxSpawn.mock.calls.find(
|
|
502
|
-
(c) => c[0] === "
|
|
502
|
+
(c) => c[0] === "pnpm" && c[1].includes("electron"),
|
|
503
503
|
);
|
|
504
504
|
expect(electronCall?.[2]).toEqual(expect.objectContaining({ shell: true, reject: false }));
|
|
505
505
|
|
|
@@ -545,7 +545,7 @@ describe("Electron", () => {
|
|
|
545
545
|
it("passes custom env and ELECTRON_DEV_URL via esbuild banner", async () => {
|
|
546
546
|
let resolveElectron: () => void = () => {};
|
|
547
547
|
mockCpxSpawn.mockImplementation((cmd: string, args: string[]) => {
|
|
548
|
-
if (cmd === "
|
|
548
|
+
if (cmd === "pnpm" && args[0] === "exec" && args[1] === "electron" && args[2] === ".") {
|
|
549
549
|
const p = new Promise<void>((resolve) => {
|
|
550
550
|
resolveElectron = resolve;
|
|
551
551
|
}) as any;
|
|
@@ -578,7 +578,7 @@ describe("Electron", () => {
|
|
|
578
578
|
it("calls initialize() before starting esbuild context", async () => {
|
|
579
579
|
let resolveElectron: () => void = () => {};
|
|
580
580
|
mockCpxSpawn.mockImplementation((cmd: string, args: string[]) => {
|
|
581
|
-
if (cmd === "
|
|
581
|
+
if (cmd === "pnpm" && args[0] === "exec" && args[1] === "electron" && args[2] === ".") {
|
|
582
582
|
const p = new Promise<void>((resolve) => {
|
|
583
583
|
resolveElectron = resolve;
|
|
584
584
|
}) as any;
|
|
@@ -596,11 +596,11 @@ describe("Electron", () => {
|
|
|
596
596
|
resolveElectron();
|
|
597
597
|
await runPromise;
|
|
598
598
|
|
|
599
|
-
// initialize calls
|
|
600
|
-
const
|
|
601
|
-
(c: any[]) => c[0] === "
|
|
599
|
+
// initialize calls pnpm install
|
|
600
|
+
const pnpmInstallCall = mockCpxSpawn.mock.calls.find(
|
|
601
|
+
(c: any[]) => c[0] === "pnpm" && (c[1] as string[]).includes("install"),
|
|
602
602
|
);
|
|
603
|
-
expect(
|
|
603
|
+
expect(pnpmInstallCall).toBeDefined();
|
|
604
604
|
}, 10_000);
|
|
605
605
|
});
|
|
606
606
|
|
|
@@ -46,10 +46,10 @@ describe("parsePackageJsonWorkspaces", () => {
|
|
|
46
46
|
describe("collectWorkspacePackages", () => {
|
|
47
47
|
it("collects package directories and ignores negative patterns", () => {
|
|
48
48
|
const root = createTmpRoot();
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
fs.writeFileSync(
|
|
50
|
+
path.join(root, "pnpm-workspace.yaml"),
|
|
51
|
+
"packages:\n - packages/*\n - tests/*\n - '!packages/skip'\n",
|
|
52
|
+
);
|
|
53
53
|
writeJson(path.join(root, "packages", "core", "package.json"), {
|
|
54
54
|
name: "@scope/core",
|
|
55
55
|
});
|
|
@@ -73,12 +73,9 @@ describe("collectWorkspacePackages", () => {
|
|
|
73
73
|
});
|
|
74
74
|
|
|
75
75
|
describe("findWorkspaceRoot", () => {
|
|
76
|
-
it("finds nearest
|
|
76
|
+
it("finds nearest pnpm-workspace.yaml", () => {
|
|
77
77
|
const root = createTmpRoot();
|
|
78
|
-
|
|
79
|
-
private: true,
|
|
80
|
-
workspaces: ["packages/*"],
|
|
81
|
-
});
|
|
78
|
+
fs.writeFileSync(path.join(root, "pnpm-workspace.yaml"), "packages:\n - packages/*\n");
|
|
82
79
|
const nested = path.join(root, "packages", "app", "src");
|
|
83
80
|
fs.mkdirSync(nested, { recursive: true });
|
|
84
81
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/index.ts","../src/util.ts"],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},"ad723b33e495a90b0d656522f61d30bbdd41893d01582d8a2b72fcaf6745bf69","9a30ac96b5d5c1b67eca69e1e2cf0798817d9578c8d7d904a81a67b983b35cba"],"root":[59,60],"options":{"declaration":false,"declarationMap":false,"emitDeclarationOnly":false,"module":7,"outDir":"../dist","skipLibCheck":true,"sourceMap":false,"strict":true,"target":9,"tsBuildInfoFile":"./typecheck-browser.tsbuildinfo"},"semanticDiagnosticsPerFile":[1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],"affectedFilesPendingEmit":[59,60],"version":"6.0.3"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../../../../node_modules/.bun/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/index.ts","../src/util.ts"],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},"ad723b33e495a90b0d656522f61d30bbdd41893d01582d8a2b72fcaf6745bf69","9a30ac96b5d5c1b67eca69e1e2cf0798817d9578c8d7d904a81a67b983b35cba"],"root":[58,59],"options":{"declaration":false,"declarationMap":false,"emitDeclarationOnly":false,"module":7,"outDir":"../dist","skipLibCheck":true,"sourceMap":false,"strict":true,"target":9,"tsBuildInfoFile":"./typecheck-node.tsbuildinfo"},"semanticDiagnosticsPerFile":[1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"affectedFilesPendingEmit":[58,59],"version":"6.0.3"}
|