dirsql 0.3.4 → 0.3.5

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.
@@ -1,12 +1,14 @@
1
1
  #!/usr/bin/env node
2
- // npm `bin` entry for `dirsql`. Runs the launcher when invoked from the
3
- // command line; doesn't do anything when imported (so tests can pull in
4
- // individual modules without side effects).
2
+ // npm `bin` entry for `dirsql`. The package.json `bin` field points at
3
+ // the compiled version of this file; npm symlinks `node_modules/.bin/dirsql`
4
+ // to it. Always runs the launcher -- nothing else should import this
5
+ // file (test the helpers in `main.ts` / `resolveBinary.ts` instead).
6
+ //
7
+ // A prior `process.argv[1] === import.meta.filename` self-detection
8
+ // guard tripped up the npm-bin symlink: argv[1] is the (unresolved)
9
+ // symlink path, while import.meta.filename is the realpath, and the
10
+ // guard silently skipped main() so `dirsql --version` produced no
11
+ // output (caught by the pack-install build-CI smoke test).
5
12
  import { main } from "./main.js";
6
- // `import.meta.filename` (Node 20.11+) avoids the
7
- // `dirname(fileURLToPath(import.meta.url))` boilerplate. When this
8
- // module is the script Node was invoked with, run the launcher.
9
- if (process.argv[1] === import.meta.filename) {
10
- main();
11
- }
13
+ main();
12
14
  //# sourceMappingURL=dirsql.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dirsql.js","sourceRoot":"","sources":["../../ts/bin/dirsql.ts"],"names":[],"mappings":";AACA,wEAAwE;AACxE,wEAAwE;AACxE,4CAA4C;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,kDAAkD;AAClD,mEAAmE;AACnE,gEAAgE;AAChE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC7C,IAAI,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"dirsql.js","sourceRoot":"","sources":["../../ts/bin/dirsql.ts"],"names":[],"mappings":";AACA,uEAAuE;AACvE,6EAA6E;AAC7E,qEAAqE;AACrE,qEAAqE;AACrE,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,oEAAoE;AACpE,kEAAkE;AAClE,2DAA2D;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,IAAI,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dirsql",
3
- "version": "0.3.4",
3
+ "version": "0.3.5",
4
4
  "description": "Ephemeral SQL index over a local directory",
5
5
  "license": "MIT",
6
6
  "repository": "https://github.com/thekevinscott/dirsql",
@@ -39,6 +39,7 @@
39
39
  "test": "wireit",
40
40
  "test:unit": "wireit",
41
41
  "test:integration": "wireit",
42
+ "test:e2e": "wireit",
42
43
  "coverage": "wireit",
43
44
  "lint": "biome check .",
44
45
  "lint:fix": "biome check --write .",
@@ -142,6 +143,21 @@
142
143
  ],
143
144
  "output": []
144
145
  },
146
+ "test:e2e": {
147
+ "command": "vitest run --dir test-e2e --passWithNoTests",
148
+ "dependencies": [
149
+ "build"
150
+ ],
151
+ "files": [
152
+ "ts/**/*.ts",
153
+ "tools/**/*.ts",
154
+ "test-e2e/**/*.ts",
155
+ "vitest.config.ts",
156
+ "../rust/src/**/*.rs",
157
+ "../rust/Cargo.toml"
158
+ ],
159
+ "output": []
160
+ },
145
161
  "coverage": {
146
162
  "command": "vitest run --coverage",
147
163
  "dependencies": [
@@ -175,15 +191,15 @@
175
191
  ]
176
192
  },
177
193
  "optionalDependencies": {
178
- "@dirsql/lib-linux-x64-gnu": "0.3.4",
179
- "@dirsql/lib-linux-arm64-gnu": "0.3.4",
180
- "@dirsql/lib-darwin-x64": "0.3.4",
181
- "@dirsql/lib-darwin-arm64": "0.3.4",
182
- "@dirsql/lib-win32-x64-msvc": "0.3.4",
183
- "@dirsql/cli-linux-x64-gnu": "0.3.4",
184
- "@dirsql/cli-linux-arm64-gnu": "0.3.4",
185
- "@dirsql/cli-darwin-x64": "0.3.4",
186
- "@dirsql/cli-darwin-arm64": "0.3.4",
187
- "@dirsql/cli-win32-x64-msvc": "0.3.4"
194
+ "@dirsql/lib-linux-x64-gnu": "0.3.5",
195
+ "@dirsql/lib-linux-arm64-gnu": "0.3.5",
196
+ "@dirsql/lib-darwin-x64": "0.3.5",
197
+ "@dirsql/lib-darwin-arm64": "0.3.5",
198
+ "@dirsql/lib-win32-x64-msvc": "0.3.5",
199
+ "@dirsql/cli-linux-x64-gnu": "0.3.5",
200
+ "@dirsql/cli-linux-arm64-gnu": "0.3.5",
201
+ "@dirsql/cli-darwin-x64": "0.3.5",
202
+ "@dirsql/cli-darwin-arm64": "0.3.5",
203
+ "@dirsql/cli-win32-x64-msvc": "0.3.5"
188
204
  }
189
205
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=die.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"die.test.d.ts","sourceRoot":"","sources":["../../ts/bin/die.test.ts"],"names":[],"mappings":""}
@@ -1,34 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { die } from "./die.js";
3
- afterEach(() => vi.restoreAllMocks());
4
- describe("die", () => {
5
- describe("by default", () => {
6
- it("writes a `dirsql: ` prefixed message to stderr", () => {
7
- const write = vi.spyOn(process.stderr, "write").mockReturnValue(true);
8
- vi.spyOn(process, "exit").mockImplementation(((code) => {
9
- throw new Error(`exit:${code}`);
10
- }));
11
- expect(() => die("boom")).toThrow("exit:1");
12
- expect(write).toHaveBeenCalledWith("dirsql: boom\n");
13
- });
14
- it("exits with code 1", () => {
15
- vi.spyOn(process.stderr, "write").mockReturnValue(true);
16
- const exit = vi.spyOn(process, "exit").mockImplementation(((code) => {
17
- throw new Error(`exit:${code}`);
18
- }));
19
- expect(() => die("boom")).toThrow();
20
- expect(exit).toHaveBeenCalledWith(1);
21
- });
22
- });
23
- describe("with an explicit exit code", () => {
24
- it("passes the code to process.exit", () => {
25
- vi.spyOn(process.stderr, "write").mockReturnValue(true);
26
- const exit = vi.spyOn(process, "exit").mockImplementation(((code) => {
27
- throw new Error(`exit:${code}`);
28
- }));
29
- expect(() => die("nope", 7)).toThrow();
30
- expect(exit).toHaveBeenCalledWith(7);
31
- });
32
- });
33
- });
34
- //# sourceMappingURL=die.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"die.test.js","sourceRoot":"","sources":["../../ts/bin/die.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEtC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAC5C,IAA6B,EAC7B,EAAE;gBACF,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC,CAAwB,CAAC,CAAC;YAE3B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CACzD,IAA6B,EAC7B,EAAE;gBACF,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC,CAAwB,CAAC,CAAC;YAE3B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CACzD,IAA6B,EAC7B,EAAE;gBACF,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC,CAAwB,CAAC,CAAC;YAE3B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=main.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.test.d.ts","sourceRoot":"","sources":["../../ts/bin/main.test.ts"],"names":[],"mappings":""}
@@ -1,121 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- vi.mock("./resolveBinary", () => ({ resolveBinary: vi.fn() }));
3
- vi.mock("node:child_process", () => ({ spawnSync: vi.fn() }));
4
- import { spawnSync } from "node:child_process";
5
- import { main } from "./main.js";
6
- import { resolveBinary } from "./resolveBinary.js";
7
- const spawnSyncMock = vi.mocked(spawnSync);
8
- const resolveBinaryMock = vi.mocked(resolveBinary);
9
- afterEach(() => vi.restoreAllMocks());
10
- function stubExit() {
11
- return vi.spyOn(process, "exit").mockImplementation(((code) => {
12
- throw new Error(`exit:${code}`);
13
- }));
14
- }
15
- function stubStderr() {
16
- vi.spyOn(process.stderr, "write").mockReturnValue(true);
17
- }
18
- function stubKill() {
19
- return vi.spyOn(process, "kill").mockImplementation(() => true);
20
- }
21
- describe("main", () => {
22
- describe("on success", () => {
23
- it("resolves the binary, spawns it with argv, and exits with the child's status", () => {
24
- resolveBinaryMock.mockReturnValue("/real/dirsql");
25
- spawnSyncMock.mockReturnValue({
26
- status: 0,
27
- signal: null,
28
- pid: 123,
29
- output: [],
30
- stdout: Buffer.from(""),
31
- stderr: Buffer.from(""),
32
- });
33
- const exit = stubExit();
34
- expect(() => main(["--help"])).toThrow("exit:0");
35
- expect(resolveBinaryMock).toHaveBeenCalledTimes(1);
36
- expect(spawnSyncMock).toHaveBeenCalledWith("/real/dirsql", ["--help"], {
37
- stdio: "inherit",
38
- });
39
- expect(exit).toHaveBeenCalledWith(0);
40
- });
41
- });
42
- describe("when the child exits non-zero", () => {
43
- it("forwards the exit code", () => {
44
- resolveBinaryMock.mockReturnValue("/real/dirsql");
45
- spawnSyncMock.mockReturnValue({
46
- status: 42,
47
- signal: null,
48
- pid: 1,
49
- output: [],
50
- stdout: Buffer.from(""),
51
- stderr: Buffer.from(""),
52
- });
53
- const exit = stubExit();
54
- expect(() => main([])).toThrow("exit:42");
55
- expect(exit).toHaveBeenCalledWith(42);
56
- });
57
- });
58
- describe("when spawn fails to launch the child", () => {
59
- it("dies with the spawn error message and exits 1", () => {
60
- resolveBinaryMock.mockReturnValue("/real/dirsql");
61
- spawnSyncMock.mockReturnValue({
62
- status: null,
63
- signal: null,
64
- pid: 0,
65
- output: [],
66
- stdout: Buffer.from(""),
67
- stderr: Buffer.from(""),
68
- error: new Error("ENOENT"),
69
- });
70
- stubStderr();
71
- const exit = stubExit();
72
- expect(() => main([])).toThrow();
73
- expect(exit).toHaveBeenCalledWith(1);
74
- expect(process.stderr.write).toHaveBeenCalledWith(expect.stringContaining("ENOENT"));
75
- });
76
- });
77
- describe("when the child dies from a signal", () => {
78
- it("re-raises the same signal against itself", () => {
79
- resolveBinaryMock.mockReturnValue("/real/dirsql");
80
- spawnSyncMock.mockReturnValue({
81
- status: null,
82
- signal: "SIGINT",
83
- pid: 1,
84
- output: [],
85
- stdout: Buffer.from(""),
86
- stderr: Buffer.from(""),
87
- });
88
- const kill = stubKill();
89
- const exit = stubExit();
90
- expect(() => main([])).toThrow();
91
- expect(kill).toHaveBeenCalledWith(process.pid, "SIGINT");
92
- expect(exit).toHaveBeenCalledWith(1);
93
- });
94
- });
95
- describe("when argv is omitted", () => {
96
- it("defaults to process.argv.slice(2)", () => {
97
- resolveBinaryMock.mockReturnValue("/real/dirsql");
98
- spawnSyncMock.mockReturnValue({
99
- status: 0,
100
- signal: null,
101
- pid: 1,
102
- output: [],
103
- stdout: Buffer.from(""),
104
- stderr: Buffer.from(""),
105
- });
106
- vi.stubGlobal("process", {
107
- ...process,
108
- argv: ["node", "bin", "a", "b"],
109
- });
110
- stubExit();
111
- try {
112
- main();
113
- }
114
- catch {
115
- // process.exit is stubbed to throw
116
- }
117
- expect(spawnSyncMock).toHaveBeenCalledWith("/real/dirsql", ["a", "b"], expect.any(Object));
118
- });
119
- });
120
- });
121
- //# sourceMappingURL=main.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.test.js","sourceRoot":"","sources":["../../ts/bin/main.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE7D,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3C,MAAM,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEnD,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEtC,SAAS,QAAQ;IACf,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CACnD,IAA6B,EAC7B,EAAE;QACF,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAwB,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU;IACjB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;YACrF,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAClD,aAAa,CAAC,eAAe,CAAC;gBAC5B,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,GAAG;gBACR,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACf,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YAExB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,CAAC,iBAAiB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE;gBACrE,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAClD,aAAa,CAAC,eAAe,CAAC;gBAC5B,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,CAAC;gBACN,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACf,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YAExB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAClD,aAAa,CAAC,eAAe,CAAC;gBAC5B,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,CAAC;gBACN,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC;aAClB,CAAC,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YAExB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAClC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAClD,aAAa,CAAC,eAAe,CAAC;gBAC5B,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,CAAC;gBACN,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACf,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YAExB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAClD,aAAa,CAAC,eAAe,CAAC;gBAC5B,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,CAAC;gBACN,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACf,CAAC,CAAC;YACZ,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvB,GAAG,OAAO;gBACV,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;aAChC,CAAC,CAAC;YACH,QAAQ,EAAE,CAAC;YAEX,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;YACD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACxC,cAAc,EACd,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=resolveBinary.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveBinary.test.d.ts","sourceRoot":"","sources":["../../ts/bin/resolveBinary.test.ts"],"names":[],"mappings":""}
@@ -1,60 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { defaultResolver, resolveBinary, } from "./resolveBinary.js";
3
- afterEach(() => {
4
- vi.restoreAllMocks();
5
- });
6
- function exitThrower() {
7
- return vi.spyOn(process, "exit").mockImplementation(((code) => {
8
- throw new Error(`exit:${code}`);
9
- }));
10
- }
11
- describe("defaultResolver", () => {
12
- it("returns a function that resolves node built-ins", () => {
13
- const resolve = defaultResolver();
14
- expect(typeof resolve).toBe("function");
15
- // `node:fs` is always resolvable from any Node-reachable module.
16
- expect(resolve("node:fs")).toBe("node:fs");
17
- });
18
- });
19
- describe("resolveBinary", () => {
20
- describe("with a supported platform key", () => {
21
- it("returns the resolver's result for the matching package", () => {
22
- const resolver = vi.fn().mockReturnValue("/real/linux/dirsql");
23
- const path = resolveBinary("linux-x64", resolver);
24
- expect(path).toBe("/real/linux/dirsql");
25
- expect(resolver).toHaveBeenCalledWith(expect.stringContaining("@dirsql/cli-linux-x64-gnu"));
26
- });
27
- });
28
- describe("with an unsupported platform key", () => {
29
- it("dies with a `cargo install` hint", () => {
30
- vi.spyOn(process.stderr, "write").mockReturnValue(true);
31
- const exit = exitThrower();
32
- expect(() => resolveBinary("sunos-sparc", () => "")).toThrow();
33
- expect(exit).toHaveBeenCalledWith(1);
34
- expect(process.stderr.write).toHaveBeenCalledWith(expect.stringContaining("no prebuilt binary for sunos-sparc"));
35
- });
36
- });
37
- describe("on Windows", () => {
38
- it("appends .exe to the resolved binary name", () => {
39
- vi.stubGlobal("process", { ...process, platform: "win32" });
40
- const resolver = vi
41
- .fn()
42
- .mockReturnValue("C:\\fake\\dirsql.exe");
43
- resolveBinary("win32-x64", resolver);
44
- expect(resolver).toHaveBeenCalledWith(expect.stringMatching(/dirsql\.exe$/));
45
- });
46
- });
47
- describe("when the optional dep is not installed", () => {
48
- it("dies with an `--no-optional` hint", () => {
49
- vi.spyOn(process.stderr, "write").mockReturnValue(true);
50
- const exit = exitThrower();
51
- const resolver = () => {
52
- throw new Error("Cannot find module");
53
- };
54
- expect(() => resolveBinary("linux-x64", resolver)).toThrow();
55
- expect(exit).toHaveBeenCalledWith(1);
56
- expect(process.stderr.write).toHaveBeenCalledWith(expect.stringContaining("is not installed"));
57
- });
58
- });
59
- });
60
- //# sourceMappingURL=resolveBinary.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveBinary.test.js","sourceRoot":"","sources":["../../ts/bin/resolveBinary.test.ts"],"names":[],"mappings":"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"}