dirsql 0.1.10 → 0.2.0
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/dirsql.node +0 -0
- package/dist/bin/die.d.ts +2 -0
- package/dist/bin/die.d.ts.map +1 -0
- package/dist/bin/die.js +7 -0
- package/dist/bin/die.js.map +1 -0
- package/dist/bin/die.test.d.ts +2 -0
- package/dist/bin/die.test.d.ts.map +1 -0
- package/dist/bin/die.test.js +34 -0
- package/dist/bin/die.test.js.map +1 -0
- package/dist/bin/dirsql.d.ts +3 -0
- package/dist/bin/dirsql.d.ts.map +1 -0
- package/dist/bin/dirsql.js +12 -0
- package/dist/bin/dirsql.js.map +1 -0
- package/dist/bin/main.d.ts +2 -0
- package/dist/bin/main.d.ts.map +1 -0
- package/dist/bin/main.js +15 -0
- package/dist/bin/main.js.map +1 -0
- package/dist/bin/main.test.d.ts +2 -0
- package/dist/bin/main.test.d.ts.map +1 -0
- package/dist/bin/main.test.js +121 -0
- package/dist/bin/main.test.js.map +1 -0
- package/dist/bin/platformKey.d.ts +2 -0
- package/dist/bin/platformKey.d.ts.map +1 -0
- package/dist/bin/platformKey.js +6 -0
- package/dist/bin/platformKey.js.map +1 -0
- package/dist/bin/platformKey.test.d.ts +2 -0
- package/dist/bin/platformKey.test.d.ts.map +1 -0
- package/dist/bin/platformKey.test.js +36 -0
- package/dist/bin/platformKey.test.js.map +1 -0
- package/dist/bin/resolveBinary.d.ts +6 -0
- package/dist/bin/resolveBinary.d.ts.map +1 -0
- package/dist/bin/resolveBinary.js +27 -0
- package/dist/bin/resolveBinary.js.map +1 -0
- package/dist/bin/resolveBinary.test.d.ts +2 -0
- package/dist/bin/resolveBinary.test.d.ts.map +1 -0
- package/dist/bin/resolveBinary.test.js +60 -0
- package/dist/bin/resolveBinary.test.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -13
- package/dist/index.js.map +1 -1
- package/dist/platforms.d.ts +24 -0
- package/dist/platforms.d.ts.map +1 -0
- package/dist/platforms.js +71 -0
- package/dist/platforms.js.map +1 -0
- package/dist/platforms.test.d.ts +2 -0
- package/dist/platforms.test.d.ts.map +1 -0
- package/dist/platforms.test.js +48 -0
- package/dist/platforms.test.js.map +1 -0
- package/package.json +115 -9
package/dirsql.node
CHANGED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"die.d.ts","sourceRoot":"","sources":["../../ts/bin/die.ts"],"names":[],"mappings":"AAGA,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,KAAK,CAGhD"}
|
package/dist/bin/die.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Exit with a `dirsql: ` prefixed error message. The `never` return type
|
|
2
|
+
// signals to callers that control doesn't return.
|
|
3
|
+
export function die(msg, code = 1) {
|
|
4
|
+
process.stderr.write(`dirsql: ${msg}\n`);
|
|
5
|
+
process.exit(code);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=die.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"die.js","sourceRoot":"","sources":["../../ts/bin/die.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,kDAAkD;AAElD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAI,GAAG,CAAC;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"die.test.d.ts","sourceRoot":"","sources":["../../ts/bin/die.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirsql.d.ts","sourceRoot":"","sources":["../../ts/bin/dirsql.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
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).
|
|
5
|
+
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
|
+
}
|
|
12
|
+
//# sourceMappingURL=dirsql.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../ts/bin/main.ts"],"names":[],"mappings":"AAOA,wBAAgB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,KAAK,CAMlE"}
|
package/dist/bin/main.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Launcher entry: spawn the resolved `dirsql` binary and forward argv,
|
|
2
|
+
// exit code, and signals.
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
import { die } from "./die.js";
|
|
5
|
+
import { resolveBinary } from "./resolveBinary.js";
|
|
6
|
+
export function main(argv = process.argv.slice(2)) {
|
|
7
|
+
const binary = resolveBinary();
|
|
8
|
+
const result = spawnSync(binary, argv, { stdio: "inherit" });
|
|
9
|
+
if (result.error)
|
|
10
|
+
die(result.error.message, 1);
|
|
11
|
+
if (result.signal)
|
|
12
|
+
process.kill(process.pid, result.signal);
|
|
13
|
+
process.exit(result.status ?? 1);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../ts/bin/main.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,0BAA0B;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,KAAK;QAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.test.d.ts","sourceRoot":"","sources":["../../ts/bin/main.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,121 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.test.js","sourceRoot":"","sources":["../../ts/bin/main.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformKey.d.ts","sourceRoot":"","sources":["../../ts/bin/platformKey.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformKey.js","sourceRoot":"","sources":["../../ts/bin/platformKey.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,kEAAkE;AAElE,MAAM,UAAU,WAAW;IACzB,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformKey.test.d.ts","sourceRoot":"","sources":["../../ts/bin/platformKey.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { platformKey } from "./platformKey.js";
|
|
3
|
+
afterEach(() => vi.restoreAllMocks());
|
|
4
|
+
describe("platformKey", () => {
|
|
5
|
+
describe("on linux x64", () => {
|
|
6
|
+
it("returns 'linux-x64'", () => {
|
|
7
|
+
vi.stubGlobal("process", {
|
|
8
|
+
...process,
|
|
9
|
+
platform: "linux",
|
|
10
|
+
arch: "x64",
|
|
11
|
+
});
|
|
12
|
+
expect(platformKey()).toBe("linux-x64");
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe("on darwin arm64", () => {
|
|
16
|
+
it("returns 'darwin-arm64'", () => {
|
|
17
|
+
vi.stubGlobal("process", {
|
|
18
|
+
...process,
|
|
19
|
+
platform: "darwin",
|
|
20
|
+
arch: "arm64",
|
|
21
|
+
});
|
|
22
|
+
expect(platformKey()).toBe("darwin-arm64");
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe("on win32 x64", () => {
|
|
26
|
+
it("returns 'win32-x64'", () => {
|
|
27
|
+
vi.stubGlobal("process", {
|
|
28
|
+
...process,
|
|
29
|
+
platform: "win32",
|
|
30
|
+
arch: "x64",
|
|
31
|
+
});
|
|
32
|
+
expect(platformKey()).toBe("win32-x64");
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=platformKey.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformKey.test.js","sourceRoot":"","sources":["../../ts/bin/platformKey.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEtC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvB,GAAG,OAAO;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvB,GAAG,OAAO;gBACV,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvB,GAAG,OAAO;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** A minimal `require.resolve`-shaped function. Injectable for tests. */
|
|
2
|
+
export type Resolver = (specifier: string) => string;
|
|
3
|
+
/** Default resolver: a CJS-style `require.resolve` rooted at this ESM module. */
|
|
4
|
+
export declare function defaultResolver(): Resolver;
|
|
5
|
+
export declare function resolveBinary(key?: string, resolver?: Resolver): string;
|
|
6
|
+
//# sourceMappingURL=resolveBinary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveBinary.d.ts","sourceRoot":"","sources":["../../ts/bin/resolveBinary.ts"],"names":[],"mappings":"AAUA,yEAAyE;AACzE,MAAM,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;AAErD,iFAAiF;AACjF,wBAAgB,eAAe,IAAI,QAAQ,CAE1C;AAED,wBAAgB,aAAa,CAC3B,GAAG,SAAgB,EACnB,QAAQ,GAAE,QAA4B,GACrC,MAAM,CAgBR"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Resolve the absolute path of the prebuilt `dirsql` binary shipped by
|
|
2
|
+
// whichever `@dirsql/cli-<triple>` optional-dependency package matched
|
|
3
|
+
// the host at `npm install` time. Never returns if unresolved — die()
|
|
4
|
+
// takes over.
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import { nodeTriples } from "../platforms.js";
|
|
7
|
+
import { die } from "./die.js";
|
|
8
|
+
import { platformKey } from "./platformKey.js";
|
|
9
|
+
/** Default resolver: a CJS-style `require.resolve` rooted at this ESM module. */
|
|
10
|
+
export function defaultResolver() {
|
|
11
|
+
return createRequire(import.meta.url).resolve;
|
|
12
|
+
}
|
|
13
|
+
export function resolveBinary(key = platformKey(), resolver = defaultResolver()) {
|
|
14
|
+
const triples = nodeTriples();
|
|
15
|
+
const pkg = triples[key];
|
|
16
|
+
if (!pkg) {
|
|
17
|
+
die(`no prebuilt binary for ${key}. Build from source with \`cargo install dirsql --features cli\`.`);
|
|
18
|
+
}
|
|
19
|
+
const bin = process.platform === "win32" ? "dirsql.exe" : "dirsql";
|
|
20
|
+
try {
|
|
21
|
+
return resolver(`${pkg}/${bin}`);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
die(`${pkg} is not installed. If you ran \`npm install --no-optional\` or \`--ignore-optional\`, re-install without that flag.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=resolveBinary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveBinary.js","sourceRoot":"","sources":["../../ts/bin/resolveBinary.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,cAAc;AAEd,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,iFAAiF;AACjF,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAG,GAAG,WAAW,EAAE,EACnB,WAAqB,eAAe,EAAE;IAEtC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,CACD,0BAA0B,GAAG,mEAAmE,CACjG,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnE,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CACD,GAAG,GAAG,qHAAqH,CAC5H,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveBinary.test.d.ts","sourceRoot":"","sources":["../../ts/bin/resolveBinary.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveBinary.test.js","sourceRoot":"","sources":["../../ts/bin/resolveBinary.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAiBA,iEAAiE;AACjE,MAAM,WAAW,QAAQ;IACvB,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1E,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAGD,UAAU,YAAY;IACpB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC9C,YAAY,IAAI,IAAI,CAAC;IACrB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;CAC3C;AAED,UAAU,uBAAuB;IAC/B,KAAK,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IACxE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC;CAC9C;AAID,UAAU,UAAU;IAClB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AA0BD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,MAAM;IACjB;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAe;gBAEjB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE;IAS/D;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAW7C,yEAAyE;IACzE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAI7C;;;OAGG;IACH,YAAY,IAAI,IAAI;IAIpB;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE;IAIzC;;;;;;;;;;OAUG;IACI,KAAK,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;CAiBxD"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// dirsql TypeScript SDK.
|
|
3
2
|
//
|
|
4
3
|
// The public surface is implemented in Rust via napi-rs. `pnpm build` runs
|
|
@@ -12,22 +11,22 @@
|
|
|
12
11
|
// We resolve it relative to this file's location at runtime so the
|
|
13
12
|
// loader works whether the package is consumed via `node_modules/dirsql`
|
|
14
13
|
// or via a pnpm workspace self-reference from `test/`.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
exports.__setCoreForTesting = __setCoreForTesting;
|
|
18
|
-
const node_path_1 = require("node:path");
|
|
14
|
+
import { createRequire } from "node:module";
|
|
15
|
+
import { join } from "node:path";
|
|
19
16
|
// Lazy-loaded reference to the core module. Populated on first access
|
|
20
17
|
// by `loadNativeCore()`, or by `__setCoreForTesting()` for tests.
|
|
21
18
|
let core = null;
|
|
22
19
|
/**
|
|
23
20
|
* Load the native napi-rs binary. Resolved relative to this compiled
|
|
24
|
-
* module: after `tsc` emits to `dist/`,
|
|
25
|
-
* `..` reaches the package root where napi-rs writes
|
|
21
|
+
* module: after `tsc` emits to `dist/`, the module's directory is
|
|
22
|
+
* `<pkg>/dist`, so `..` reaches the package root where napi-rs writes
|
|
23
|
+
* `dirsql.node`. The binary itself is a CommonJS addon, so we use
|
|
24
|
+
* `createRequire` to load it from inside an ESM module.
|
|
26
25
|
*/
|
|
27
26
|
function loadNativeCore() {
|
|
28
|
-
const bindingPath = (
|
|
29
|
-
|
|
30
|
-
return
|
|
27
|
+
const bindingPath = join(import.meta.dirname, "..", "dirsql.node");
|
|
28
|
+
const requireFromHere = createRequire(import.meta.url);
|
|
29
|
+
return requireFromHere(bindingPath);
|
|
31
30
|
}
|
|
32
31
|
function getCore() {
|
|
33
32
|
if (core === null) {
|
|
@@ -43,7 +42,7 @@ function getCore() {
|
|
|
43
42
|
* `null` resets to the default (lazy native load on next access). Not
|
|
44
43
|
* part of the public API; do not use in application code.
|
|
45
44
|
*/
|
|
46
|
-
function __setCoreForTesting(fake) {
|
|
45
|
+
export function __setCoreForTesting(fake) {
|
|
47
46
|
core = fake;
|
|
48
47
|
}
|
|
49
48
|
/**
|
|
@@ -63,7 +62,17 @@ function __setCoreForTesting(fake) {
|
|
|
63
62
|
* for await (const event of db.watch()) { ... }
|
|
64
63
|
* ```
|
|
65
64
|
*/
|
|
66
|
-
class DirSQL {
|
|
65
|
+
export class DirSQL {
|
|
66
|
+
/**
|
|
67
|
+
* Resolves once the initial directory scan has completed. Scanning
|
|
68
|
+
* runs synchronously inside the constructor, so this Promise is
|
|
69
|
+
* already resolved by the time the constructor returns; construction
|
|
70
|
+
* failures throw synchronously rather than surfacing here. Exposed
|
|
71
|
+
* as a Promise purely so consumers can write async-style code
|
|
72
|
+
* uniformly across SDKs.
|
|
73
|
+
*/
|
|
74
|
+
ready;
|
|
75
|
+
_inner;
|
|
67
76
|
constructor(root, tables, ignore) {
|
|
68
77
|
const Ctor = getCore().DirSQL;
|
|
69
78
|
this._inner =
|
|
@@ -133,5 +142,4 @@ class DirSQL {
|
|
|
133
142
|
}
|
|
134
143
|
}
|
|
135
144
|
}
|
|
136
|
-
exports.DirSQL = DirSQL;
|
|
137
145
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,yEAAyE;AACzE,0EAA0E;AAC1E,UAAU;AACV,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,mEAAmE;AACnE,yEAAyE;AACzE,uDAAuD;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA+CjC,sEAAsE;AACtE,kEAAkE;AAClE,IAAI,IAAI,GAAsB,IAAI,CAAC;AAEnC;;;;;;GAMG;AACH,SAAS,cAAc;IACrB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,eAAe,CAAC,WAAW,CAAe,CAAC;AACpD,CAAC;AAED,SAAS,OAAO;IACd,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,IAAI,GAAG,cAAc,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,IAAI,GAAG,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,MAAM;IACjB;;;;;;;OAOG;IACM,KAAK,CAAgB;IAEtB,MAAM,CAAe;IAE7B,YAAY,IAAY,EAAE,MAAkB,EAAE,MAAiB;QAC7D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM;YACT,MAAM,KAAK,SAAS;gBAClB,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;gBACxB,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,UAAkB;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAW,CAAC;QAC3D,MAAM,QAAQ,GAAG,QAGhB,CAAC;QACF,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,GAAW;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,CAAC,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,IAAI,EAAE,CAAC;YACZ,oEAAoE;YACpE,gEAAgE;YAChE,gEAAgE;YAChE,mEAAmE;YACnE,iEAAiE;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface Platform {
|
|
2
|
+
/** Rust target triple — the name cargo-dist uses for archives. */
|
|
3
|
+
triple: string;
|
|
4
|
+
/** Node `process.platform` value for this target. */
|
|
5
|
+
nodePlatform: NodeJS.Platform;
|
|
6
|
+
/** Node `process.arch` value for this target. */
|
|
7
|
+
nodeArch: NodeJS.Architecture;
|
|
8
|
+
/** Published npm sub-package name (`@dirsql/cli-<slug>`). */
|
|
9
|
+
name: string;
|
|
10
|
+
/** Wheel-style `os` constraint for the sub-package's package.json. */
|
|
11
|
+
os: string[];
|
|
12
|
+
/** Wheel-style `cpu` constraint for the sub-package's package.json. */
|
|
13
|
+
cpu: string[];
|
|
14
|
+
/** libc constraint (Linux only). */
|
|
15
|
+
libc?: string[];
|
|
16
|
+
/** Archive extension cargo-dist emits for this target. */
|
|
17
|
+
ext: "tar.xz" | "zip";
|
|
18
|
+
/** Whether the binary has a `.exe` suffix on this platform. */
|
|
19
|
+
exe?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const PLATFORMS: readonly Platform[];
|
|
22
|
+
/** Node `${platform}-${arch}` → `@dirsql/cli-*` sub-package name. */
|
|
23
|
+
export declare function nodeTriples(): Record<string, string>;
|
|
24
|
+
//# sourceMappingURL=platforms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platforms.d.ts","sourceRoot":"","sources":["../ts/platforms.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,QAAQ;IACvB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC9B,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC;IAC9B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,uEAAuE;IACvE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0DAA0D;IAC1D,GAAG,EAAE,QAAQ,GAAG,KAAK,CAAC;IACtB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAiDxC,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMpD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Single source of truth for the target platforms `dirsql` publishes.
|
|
2
|
+
//
|
|
3
|
+
// Indexed two ways:
|
|
4
|
+
//
|
|
5
|
+
// 1. `PLATFORMS` — the canonical list, keyed by Rust target triple. The
|
|
6
|
+
// release pipeline iterates this list: `dist` builds an archive per
|
|
7
|
+
// triple, and `tools/buildPlatforms.ts` synthesizes one
|
|
8
|
+
// `@dirsql/cli-<name>` sub-package from each archive.
|
|
9
|
+
// 2. `nodeTriples()` — a lookup from `${process.platform}-${process.arch}`
|
|
10
|
+
// (the identifiers Node.js exposes at runtime) to the sub-package
|
|
11
|
+
// name. The bin launcher consumes this to find the matching binary
|
|
12
|
+
// via `require.resolve`.
|
|
13
|
+
export const PLATFORMS = [
|
|
14
|
+
{
|
|
15
|
+
triple: "x86_64-unknown-linux-gnu",
|
|
16
|
+
nodePlatform: "linux",
|
|
17
|
+
nodeArch: "x64",
|
|
18
|
+
name: "@dirsql/cli-linux-x64-gnu",
|
|
19
|
+
os: ["linux"],
|
|
20
|
+
cpu: ["x64"],
|
|
21
|
+
libc: ["glibc"],
|
|
22
|
+
ext: "tar.xz",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
triple: "aarch64-unknown-linux-gnu",
|
|
26
|
+
nodePlatform: "linux",
|
|
27
|
+
nodeArch: "arm64",
|
|
28
|
+
name: "@dirsql/cli-linux-arm64-gnu",
|
|
29
|
+
os: ["linux"],
|
|
30
|
+
cpu: ["arm64"],
|
|
31
|
+
libc: ["glibc"],
|
|
32
|
+
ext: "tar.xz",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
triple: "x86_64-apple-darwin",
|
|
36
|
+
nodePlatform: "darwin",
|
|
37
|
+
nodeArch: "x64",
|
|
38
|
+
name: "@dirsql/cli-darwin-x64",
|
|
39
|
+
os: ["darwin"],
|
|
40
|
+
cpu: ["x64"],
|
|
41
|
+
ext: "tar.xz",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
triple: "aarch64-apple-darwin",
|
|
45
|
+
nodePlatform: "darwin",
|
|
46
|
+
nodeArch: "arm64",
|
|
47
|
+
name: "@dirsql/cli-darwin-arm64",
|
|
48
|
+
os: ["darwin"],
|
|
49
|
+
cpu: ["arm64"],
|
|
50
|
+
ext: "tar.xz",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
triple: "x86_64-pc-windows-msvc",
|
|
54
|
+
nodePlatform: "win32",
|
|
55
|
+
nodeArch: "x64",
|
|
56
|
+
name: "@dirsql/cli-win32-x64-msvc",
|
|
57
|
+
os: ["win32"],
|
|
58
|
+
cpu: ["x64"],
|
|
59
|
+
ext: "zip",
|
|
60
|
+
exe: true,
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
/** Node `${platform}-${arch}` → `@dirsql/cli-*` sub-package name. */
|
|
64
|
+
export function nodeTriples() {
|
|
65
|
+
const out = {};
|
|
66
|
+
for (const p of PLATFORMS) {
|
|
67
|
+
out[`${p.nodePlatform}-${p.nodeArch}`] = p.name;
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=platforms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platforms.js","sourceRoot":"","sources":["../ts/platforms.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,oBAAoB;AACpB,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,2DAA2D;AAC3D,yDAAyD;AACzD,2EAA2E;AAC3E,qEAAqE;AACrE,sEAAsE;AACtE,4BAA4B;AAuB5B,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C;QACE,MAAM,EAAE,0BAA0B;QAClC,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,2BAA2B;QACjC,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,GAAG,EAAE,CAAC,KAAK,CAAC;QACZ,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,GAAG,EAAE,QAAQ;KACd;IACD;QACE,MAAM,EAAE,2BAA2B;QACnC,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,6BAA6B;QACnC,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,GAAG,EAAE,CAAC,OAAO,CAAC;QACd,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,GAAG,EAAE,QAAQ;KACd;IACD;QACE,MAAM,EAAE,qBAAqB;QAC7B,YAAY,EAAE,QAAQ;QACtB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,wBAAwB;QAC9B,EAAE,EAAE,CAAC,QAAQ,CAAC;QACd,GAAG,EAAE,CAAC,KAAK,CAAC;QACZ,GAAG,EAAE,QAAQ;KACd;IACD;QACE,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,QAAQ;QACtB,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,0BAA0B;QAChC,EAAE,EAAE,CAAC,QAAQ,CAAC;QACd,GAAG,EAAE,CAAC,OAAO,CAAC;QACd,GAAG,EAAE,QAAQ;KACd;IACD;QACE,MAAM,EAAE,wBAAwB;QAChC,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,4BAA4B;QAClC,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,GAAG,EAAE,CAAC,KAAK,CAAC;QACZ,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,IAAI;KACV;CACF,CAAC;AAEF,qEAAqE;AACrE,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platforms.test.d.ts","sourceRoot":"","sources":["../ts/platforms.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { PLATFORMS } from "./platforms.js";
|
|
3
|
+
describe("PLATFORMS", () => {
|
|
4
|
+
describe("shape invariants", () => {
|
|
5
|
+
it("lists all five target triples", () => {
|
|
6
|
+
const triples = PLATFORMS.map((p) => p.triple).sort();
|
|
7
|
+
expect(triples).toEqual([
|
|
8
|
+
"aarch64-apple-darwin",
|
|
9
|
+
"aarch64-unknown-linux-gnu",
|
|
10
|
+
"x86_64-apple-darwin",
|
|
11
|
+
"x86_64-pc-windows-msvc",
|
|
12
|
+
"x86_64-unknown-linux-gnu",
|
|
13
|
+
]);
|
|
14
|
+
});
|
|
15
|
+
it("uses the `@dirsql/cli-` npm scope for every sub-package name", () => {
|
|
16
|
+
for (const p of PLATFORMS) {
|
|
17
|
+
expect(p.name).toMatch(/^@dirsql\/cli-/);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
it("pairs tar.xz with unix targets and zip with windows", () => {
|
|
21
|
+
for (const p of PLATFORMS) {
|
|
22
|
+
if (p.os.includes("win32")) {
|
|
23
|
+
expect(p.ext).toBe("zip");
|
|
24
|
+
expect(p.exe).toBe(true);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
expect(p.ext).toBe("tar.xz");
|
|
28
|
+
expect(p.exe).toBeUndefined();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
it("declares `libc` only on Linux targets", () => {
|
|
33
|
+
for (const p of PLATFORMS) {
|
|
34
|
+
if (p.os.includes("linux")) {
|
|
35
|
+
expect(p.libc).toEqual(["glibc"]);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
expect(p.libc).toBeUndefined();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
it("has distinct names", () => {
|
|
43
|
+
const names = PLATFORMS.map((p) => p.name);
|
|
44
|
+
expect(new Set(names).size).toBe(names.length);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=platforms.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platforms.test.js","sourceRoot":"","sources":["../ts/platforms.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;gBACtB,sBAAsB;gBACtB,2BAA2B;gBAC3B,qBAAqB;gBACrB,wBAAwB;gBACxB,0BAA0B;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dirsql",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Ephemeral SQL index over a local directory",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "https://github.com/thekevinscott/dirsql",
|
|
7
|
+
"type": "module",
|
|
7
8
|
"main": "dist/index.js",
|
|
8
9
|
"types": "dist/index.d.ts",
|
|
9
10
|
"exports": {
|
|
@@ -12,35 +13,140 @@
|
|
|
12
13
|
"default": "./dist/index.js"
|
|
13
14
|
}
|
|
14
15
|
},
|
|
16
|
+
"bin": {
|
|
17
|
+
"dirsql": "dist/bin/dirsql.js"
|
|
18
|
+
},
|
|
15
19
|
"files": [
|
|
16
20
|
"dist/",
|
|
17
|
-
"dirsql.node"
|
|
21
|
+
"dirsql.node",
|
|
22
|
+
"README.md",
|
|
23
|
+
"LICENSE"
|
|
18
24
|
],
|
|
19
25
|
"napi": {
|
|
20
26
|
"binaryName": "dirsql",
|
|
21
27
|
"triples": {}
|
|
22
28
|
},
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=22"
|
|
31
|
+
},
|
|
23
32
|
"scripts": {
|
|
24
33
|
"artifacts": "napi artifacts",
|
|
25
|
-
"build": "
|
|
26
|
-
"build:debug": "
|
|
34
|
+
"build": "wireit",
|
|
35
|
+
"build:debug": "wireit",
|
|
36
|
+
"build:platforms": "tsx tools/buildPlatforms.ts",
|
|
27
37
|
"prepublishOnly": "napi prepublish -t npm",
|
|
28
|
-
"test": "
|
|
29
|
-
"test:unit": "
|
|
30
|
-
"test:integration": "
|
|
31
|
-
"coverage": "
|
|
38
|
+
"test": "wireit",
|
|
39
|
+
"test:unit": "wireit",
|
|
40
|
+
"test:integration": "wireit",
|
|
41
|
+
"coverage": "wireit",
|
|
32
42
|
"lint": "biome check .",
|
|
33
43
|
"lint:fix": "biome check --write .",
|
|
34
44
|
"format": "biome format --write .",
|
|
35
45
|
"format:check": "biome format ."
|
|
36
46
|
},
|
|
47
|
+
"wireit": {
|
|
48
|
+
"napi:build": {
|
|
49
|
+
"command": "napi build --release",
|
|
50
|
+
"output": [
|
|
51
|
+
"dirsql.node",
|
|
52
|
+
"ts/index.d.ts"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"tsc": {
|
|
56
|
+
"command": "tsc",
|
|
57
|
+
"files": [
|
|
58
|
+
"ts/**/*.ts",
|
|
59
|
+
"tsconfig.json"
|
|
60
|
+
],
|
|
61
|
+
"output": [
|
|
62
|
+
"dist/**"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"build": {
|
|
66
|
+
"dependencies": [
|
|
67
|
+
"napi:build",
|
|
68
|
+
"tsc"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"build:debug": {
|
|
72
|
+
"command": "napi build && tsc",
|
|
73
|
+
"files": [
|
|
74
|
+
"src/**/*.rs",
|
|
75
|
+
"build.rs",
|
|
76
|
+
"Cargo.toml",
|
|
77
|
+
"../../packages/rust/src/**/*.rs",
|
|
78
|
+
"ts/**/*.ts",
|
|
79
|
+
"tsconfig.json"
|
|
80
|
+
],
|
|
81
|
+
"output": [
|
|
82
|
+
"dirsql.node",
|
|
83
|
+
"dist/**",
|
|
84
|
+
"ts/index.d.ts"
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"test": {
|
|
88
|
+
"command": "vitest run",
|
|
89
|
+
"dependencies": [
|
|
90
|
+
"napi:build"
|
|
91
|
+
],
|
|
92
|
+
"files": [
|
|
93
|
+
"ts/**/*.ts",
|
|
94
|
+
"tools/**/*.ts",
|
|
95
|
+
"test/**/*.ts",
|
|
96
|
+
"vitest.config.ts"
|
|
97
|
+
],
|
|
98
|
+
"output": []
|
|
99
|
+
},
|
|
100
|
+
"test:unit": {
|
|
101
|
+
"command": "vitest run --dir src --passWithNoTests",
|
|
102
|
+
"dependencies": [
|
|
103
|
+
"napi:build"
|
|
104
|
+
],
|
|
105
|
+
"files": [
|
|
106
|
+
"ts/**/*.ts",
|
|
107
|
+
"src/**/*.ts",
|
|
108
|
+
"vitest.config.ts"
|
|
109
|
+
],
|
|
110
|
+
"output": []
|
|
111
|
+
},
|
|
112
|
+
"test:integration": {
|
|
113
|
+
"command": "vitest run --dir test --passWithNoTests",
|
|
114
|
+
"dependencies": [
|
|
115
|
+
"napi:build"
|
|
116
|
+
],
|
|
117
|
+
"files": [
|
|
118
|
+
"ts/**/*.ts",
|
|
119
|
+
"tools/**/*.ts",
|
|
120
|
+
"test/**/*.ts",
|
|
121
|
+
"vitest.config.ts"
|
|
122
|
+
],
|
|
123
|
+
"output": []
|
|
124
|
+
},
|
|
125
|
+
"coverage": {
|
|
126
|
+
"command": "vitest run --coverage",
|
|
127
|
+
"dependencies": [
|
|
128
|
+
"napi:build"
|
|
129
|
+
],
|
|
130
|
+
"files": [
|
|
131
|
+
"ts/**/*.ts",
|
|
132
|
+
"tools/**/*.ts",
|
|
133
|
+
"test/**/*.ts",
|
|
134
|
+
"vitest.config.ts"
|
|
135
|
+
],
|
|
136
|
+
"output": [
|
|
137
|
+
"coverage/**"
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
},
|
|
37
141
|
"devDependencies": {
|
|
38
142
|
"@biomejs/biome": "^1.9.0",
|
|
39
143
|
"@napi-rs/cli": "^3.0.0",
|
|
40
144
|
"@types/node": "^22.0.0",
|
|
145
|
+
"tsx": "^4.19.0",
|
|
41
146
|
"typescript": "^5.8.0",
|
|
42
147
|
"vitest": "^3.1.1",
|
|
43
|
-
"@vitest/coverage-v8": "^3.1.1"
|
|
148
|
+
"@vitest/coverage-v8": "^3.1.1",
|
|
149
|
+
"wireit": "^0.14.12"
|
|
44
150
|
},
|
|
45
151
|
"pnpm": {
|
|
46
152
|
"onlyBuiltDependencies": [
|