dirsql 0.3.36 → 0.3.38

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.
Files changed (116) hide show
  1. package/dist/cli/dirsql.js +1 -1
  2. package/dist/cli/dirsql.js.map +1 -1
  3. package/dist/cli/interpret/{buildTables.d.ts → build-tables.d.ts} +1 -1
  4. package/dist/cli/interpret/build-tables.d.ts.map +1 -0
  5. package/dist/cli/interpret/{buildTables.js → build-tables.js} +1 -1
  6. package/dist/cli/interpret/build-tables.js.map +1 -0
  7. package/dist/cli/interpret/{dispatchExtract.d.ts → dispatch-extract.d.ts} +1 -1
  8. package/dist/cli/interpret/dispatch-extract.d.ts.map +1 -0
  9. package/dist/cli/interpret/{dispatchExtract.js → dispatch-extract.js} +2 -2
  10. package/dist/cli/interpret/dispatch-extract.js.map +1 -0
  11. package/dist/cli/interpret/{errMessage.d.ts → err-message.d.ts} +1 -1
  12. package/dist/cli/interpret/err-message.d.ts.map +1 -0
  13. package/dist/cli/interpret/{errMessage.js → err-message.js} +1 -1
  14. package/dist/cli/interpret/err-message.js.map +1 -0
  15. package/dist/cli/interpret/interpret.js +5 -5
  16. package/dist/cli/interpret/interpret.js.map +1 -1
  17. package/dist/cli/interpret/{loadApp.d.ts → load-app.d.ts} +1 -1
  18. package/dist/cli/interpret/load-app.d.ts.map +1 -0
  19. package/dist/cli/interpret/{loadApp.js → load-app.js} +1 -1
  20. package/dist/cli/interpret/load-app.js.map +1 -0
  21. package/dist/cli/interpret/{writeMessage.d.ts → write-message.d.ts} +1 -1
  22. package/dist/cli/interpret/write-message.d.ts.map +1 -0
  23. package/dist/cli/interpret/{writeMessage.js → write-message.js} +1 -1
  24. package/dist/cli/interpret/write-message.js.map +1 -0
  25. package/dist/cli/main.js +1 -1
  26. package/dist/cli/main.js.map +1 -1
  27. package/dist/cli/{platformKey.d.ts → platform-key.d.ts} +1 -1
  28. package/dist/cli/platform-key.d.ts.map +1 -0
  29. package/dist/cli/{platformKey.js → platform-key.js} +1 -1
  30. package/dist/cli/platform-key.js.map +1 -0
  31. package/dist/cli/{resolveBinary.d.ts → resolve-binary.d.ts} +1 -1
  32. package/dist/cli/resolve-binary.d.ts.map +1 -0
  33. package/dist/cli/{resolveBinary.js → resolve-binary.js} +2 -2
  34. package/dist/cli/resolve-binary.js.map +1 -0
  35. package/dist/index.js +3 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/{loadNativeCore.d.ts → load-native-core.d.ts} +1 -1
  38. package/dist/load-native-core.d.ts.map +1 -0
  39. package/dist/{loadNativeCore.js → load-native-core.js} +1 -1
  40. package/dist/load-native-core.js.map +1 -0
  41. package/dist/{resolveConfig.d.ts → resolve-config.d.ts} +1 -1
  42. package/dist/resolve-config.d.ts.map +1 -0
  43. package/dist/{resolveConfig.js → resolve-config.js} +1 -1
  44. package/dist/resolve-config.js.map +1 -0
  45. package/docs/api/index.md +5 -2
  46. package/package.json +21 -35
  47. package/dist/cli/die.test.d.ts +0 -2
  48. package/dist/cli/die.test.d.ts.map +0 -1
  49. package/dist/cli/die.test.js +0 -29
  50. package/dist/cli/die.test.js.map +0 -1
  51. package/dist/cli/interpret/buildTables.d.ts.map +0 -1
  52. package/dist/cli/interpret/buildTables.js.map +0 -1
  53. package/dist/cli/interpret/buildTables.test.d.ts +0 -2
  54. package/dist/cli/interpret/buildTables.test.d.ts.map +0 -1
  55. package/dist/cli/interpret/buildTables.test.js +0 -60
  56. package/dist/cli/interpret/buildTables.test.js.map +0 -1
  57. package/dist/cli/interpret/dispatchExtract.d.ts.map +0 -1
  58. package/dist/cli/interpret/dispatchExtract.js.map +0 -1
  59. package/dist/cli/interpret/dispatchExtract.test.d.ts +0 -2
  60. package/dist/cli/interpret/dispatchExtract.test.d.ts.map +0 -1
  61. package/dist/cli/interpret/dispatchExtract.test.js +0 -75
  62. package/dist/cli/interpret/dispatchExtract.test.js.map +0 -1
  63. package/dist/cli/interpret/errMessage.d.ts.map +0 -1
  64. package/dist/cli/interpret/errMessage.js.map +0 -1
  65. package/dist/cli/interpret/errMessage.test.d.ts +0 -2
  66. package/dist/cli/interpret/errMessage.test.d.ts.map +0 -1
  67. package/dist/cli/interpret/errMessage.test.js +0 -23
  68. package/dist/cli/interpret/errMessage.test.js.map +0 -1
  69. package/dist/cli/interpret/interpret.test.d.ts +0 -2
  70. package/dist/cli/interpret/interpret.test.d.ts.map +0 -1
  71. package/dist/cli/interpret/interpret.test.js +0 -152
  72. package/dist/cli/interpret/interpret.test.js.map +0 -1
  73. package/dist/cli/interpret/loadApp.d.ts.map +0 -1
  74. package/dist/cli/interpret/loadApp.js.map +0 -1
  75. package/dist/cli/interpret/loadApp.test.d.ts +0 -2
  76. package/dist/cli/interpret/loadApp.test.d.ts.map +0 -1
  77. package/dist/cli/interpret/loadApp.test.js +0 -33
  78. package/dist/cli/interpret/loadApp.test.js.map +0 -1
  79. package/dist/cli/interpret/writeMessage.d.ts.map +0 -1
  80. package/dist/cli/interpret/writeMessage.js.map +0 -1
  81. package/dist/cli/interpret/writeMessage.test.d.ts +0 -2
  82. package/dist/cli/interpret/writeMessage.test.d.ts.map +0 -1
  83. package/dist/cli/interpret/writeMessage.test.js +0 -25
  84. package/dist/cli/interpret/writeMessage.test.js.map +0 -1
  85. package/dist/cli/main.test.d.ts +0 -2
  86. package/dist/cli/main.test.d.ts.map +0 -1
  87. package/dist/cli/main.test.js +0 -109
  88. package/dist/cli/main.test.js.map +0 -1
  89. package/dist/cli/platformKey.d.ts.map +0 -1
  90. package/dist/cli/platformKey.js.map +0 -1
  91. package/dist/cli/platformKey.test.d.ts +0 -2
  92. package/dist/cli/platformKey.test.d.ts.map +0 -1
  93. package/dist/cli/platformKey.test.js +0 -36
  94. package/dist/cli/platformKey.test.js.map +0 -1
  95. package/dist/cli/resolveBinary.d.ts.map +0 -1
  96. package/dist/cli/resolveBinary.js.map +0 -1
  97. package/dist/cli/resolveBinary.test.d.ts +0 -2
  98. package/dist/cli/resolveBinary.test.d.ts.map +0 -1
  99. package/dist/cli/resolveBinary.test.js +0 -54
  100. package/dist/cli/resolveBinary.test.js.map +0 -1
  101. package/dist/loadNativeCore.d.ts.map +0 -1
  102. package/dist/loadNativeCore.js.map +0 -1
  103. package/dist/loadNativeCore.test.d.ts +0 -2
  104. package/dist/loadNativeCore.test.d.ts.map +0 -1
  105. package/dist/loadNativeCore.test.js +0 -51
  106. package/dist/loadNativeCore.test.js.map +0 -1
  107. package/dist/platforms.test.d.ts +0 -2
  108. package/dist/platforms.test.d.ts.map +0 -1
  109. package/dist/platforms.test.js +0 -84
  110. package/dist/platforms.test.js.map +0 -1
  111. package/dist/resolveConfig.d.ts.map +0 -1
  112. package/dist/resolveConfig.js.map +0 -1
  113. package/dist/resolveConfig.test.d.ts +0 -2
  114. package/dist/resolveConfig.test.d.ts.map +0 -1
  115. package/dist/resolveConfig.test.js +0 -206
  116. package/dist/resolveConfig.test.js.map +0 -1
@@ -1,54 +0,0 @@
1
- // Unit tests for `resolveBinary` and `defaultResolver`.
2
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
- import { die } from "./die.js";
4
- import { defaultResolver, resolveBinary } from "./resolveBinary.js";
5
- vi.mock("./die.js");
6
- describe("resolveBinary", () => {
7
- beforeEach(() => {
8
- vi.mocked(die).mockImplementation(((msg) => {
9
- throw new Error(`DIE: ${msg}`);
10
- }));
11
- });
12
- afterEach(() => {
13
- vi.unstubAllGlobals();
14
- vi.resetAllMocks();
15
- });
16
- describe("when the host triple is unknown", () => {
17
- it("calls die with a 'no prebuilt binary' message", () => {
18
- expect(() => resolveBinary("unknown-triple", () => "ignored")).toThrow(/^DIE: no prebuilt binary for unknown-triple\./);
19
- });
20
- });
21
- describe("when the host triple is known", () => {
22
- beforeEach(() => {
23
- vi.stubGlobal("process", {
24
- ...process,
25
- platform: "linux",
26
- arch: "x64",
27
- });
28
- });
29
- it("resolves the binary via the injected resolver", () => {
30
- const resolver = vi.fn().mockReturnValue("/abs/path/to/dirsql");
31
- const result = resolveBinary(undefined, resolver);
32
- expect(result).toBe("/abs/path/to/dirsql");
33
- expect(resolver).toHaveBeenCalledWith("@dirsql/cli-linux-x64-gnu/dirsql");
34
- });
35
- it("uses `dirsql.exe` on win32", () => {
36
- vi.stubGlobal("process", { ...process, platform: "win32", arch: "x64" });
37
- const resolver = vi.fn().mockReturnValue("C:/dirsql.exe");
38
- resolveBinary(undefined, resolver);
39
- expect(resolver).toHaveBeenCalledWith("@dirsql/cli-win32-x64-msvc/dirsql.exe");
40
- });
41
- it("calls die with a 'not installed' message when the resolver throws", () => {
42
- const resolver = () => {
43
- throw new Error("MODULE_NOT_FOUND");
44
- };
45
- expect(() => resolveBinary(undefined, resolver)).toThrow(/^DIE: @dirsql\/cli-linux-x64-gnu is not installed\./);
46
- });
47
- });
48
- });
49
- describe("defaultResolver", () => {
50
- it("returns a require.resolve-shaped function", () => {
51
- expect(typeof defaultResolver()).toBe("function");
52
- });
53
- });
54
- //# sourceMappingURL=resolveBinary.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveBinary.test.js","sourceRoot":"","sources":["../../src/cli/resolveBinary.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadNativeCore.d.ts","sourceRoot":"","sources":["../src/loadNativeCore.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,2DAA2D;AAC3D,MAAM,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC;AAErC,wBAAgB,cAAc,CAC5B,GAAG,SAAwC,EAC3C,QAAQ,GAAE,QAAyC,EACnD,SAAS,GAAE,SAAqC,GAC/C,UAAU,CAeZ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadNativeCore.js","sourceRoot":"","sources":["../src/loadNativeCore.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,wEAAwE;AACxE,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,8DAA8D;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAe5C,MAAM,UAAU,cAAc,CAC5B,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,EAC3C,WAAqB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACnD,YAAuB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;IAEhD,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtB,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,GAAG,CAAe,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;YAC3D,iDAAiD;QACnD,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC,WAAW,CAAe,CAAC;AAC7C,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=loadNativeCore.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadNativeCore.test.d.ts","sourceRoot":"","sources":["../src/loadNativeCore.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { loadNativeCore } from "./loadNativeCore.js";
3
- describe("loadNativeCore", () => {
4
- describe("when the platform sub-package is installed", () => {
5
- it("loads via the `@dirsql/lib-<slug>` require and never hits the dev fallback", () => {
6
- const fakeCore = { DirSQL: vi.fn() };
7
- const requirer = vi.fn((spec) => {
8
- if (spec === "@dirsql/lib-linux-x64-gnu") {
9
- return fakeCore;
10
- }
11
- throw new Error(`unexpected require(${spec})`);
12
- });
13
- const core = loadNativeCore("linux-x64", requirer, () => "/fake");
14
- expect(core).toBe(fakeCore);
15
- expect(requirer).toHaveBeenCalledExactlyOnceWith("@dirsql/lib-linux-x64-gnu");
16
- });
17
- });
18
- describe("when the platform sub-package is missing", () => {
19
- it("falls back to `<pkgRoot>/dirsql.node`", () => {
20
- const fakeCore = { DirSQL: vi.fn() };
21
- const requirer = vi.fn((spec) => {
22
- if (spec === "@dirsql/lib-darwin-arm64") {
23
- throw new Error("Cannot find module '@dirsql/lib-darwin-arm64'");
24
- }
25
- if (spec.endsWith("dirsql.node")) {
26
- return fakeCore;
27
- }
28
- throw new Error(`unexpected require(${spec})`);
29
- });
30
- const core = loadNativeCore("darwin-arm64", requirer, () => "/pkg/ts");
31
- expect(core).toBe(fakeCore);
32
- expect(requirer).toHaveBeenCalledTimes(2);
33
- expect(requirer).toHaveBeenLastCalledWith("/pkg/dirsql.node");
34
- });
35
- });
36
- describe("on a platform with no corresponding sub-package", () => {
37
- it("goes straight to the dev fallback without attempting a sub-package load", () => {
38
- const fakeCore = { DirSQL: vi.fn() };
39
- const requirer = vi.fn((spec) => {
40
- if (spec.endsWith("dirsql.node")) {
41
- return fakeCore;
42
- }
43
- throw new Error(`unexpected require(${spec})`);
44
- });
45
- const core = loadNativeCore("freebsd-x64", requirer, () => "/pkg/ts");
46
- expect(core).toBe(fakeCore);
47
- expect(requirer).toHaveBeenCalledExactlyOnceWith("/pkg/dirsql.node");
48
- });
49
- });
50
- });
51
- //# sourceMappingURL=loadNativeCore.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadNativeCore.test.js","sourceRoot":"","sources":["../src/loadNativeCore.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=platforms.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platforms.test.d.ts","sourceRoot":"","sources":["../src/platforms.test.ts"],"names":[],"mappings":""}
@@ -1,84 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { PLATFORMS, libTriples, librarySlug, nodeTriples, } 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("uses the `@dirsql/lib-` npm scope for every napi sub-package", () => {
21
- for (const p of PLATFORMS) {
22
- expect(p.libName).toMatch(/^@dirsql\/lib-/);
23
- }
24
- });
25
- it("gives each platform a distinct libName", () => {
26
- const libs = PLATFORMS.map((p) => p.libName);
27
- expect(new Set(libs).size).toBe(libs.length);
28
- });
29
- it("pairs tar.xz with unix targets and zip with windows", () => {
30
- for (const p of PLATFORMS) {
31
- if (p.os.includes("win32")) {
32
- expect(p.ext).toBe("zip");
33
- expect(p.exe).toBe(true);
34
- }
35
- else {
36
- expect(p.ext).toBe("tar.xz");
37
- expect(p.exe).toBeUndefined();
38
- }
39
- }
40
- });
41
- it("declares `libc` only on Linux targets", () => {
42
- for (const p of PLATFORMS) {
43
- if (p.os.includes("linux")) {
44
- expect(p.libc).toEqual(["glibc"]);
45
- }
46
- else {
47
- expect(p.libc).toBeUndefined();
48
- }
49
- }
50
- });
51
- it("has distinct names", () => {
52
- const names = PLATFORMS.map((p) => p.name);
53
- expect(new Set(names).size).toBe(names.length);
54
- });
55
- });
56
- describe("nodeTriples()", () => {
57
- it("maps every `${platform}-${arch}` key to its cli-* sub-package", () => {
58
- const map = nodeTriples();
59
- expect(Object.keys(map).length).toBe(PLATFORMS.length);
60
- for (const p of PLATFORMS) {
61
- expect(map[`${p.nodePlatform}-${p.nodeArch}`]).toBe(p.name);
62
- }
63
- });
64
- });
65
- describe("libTriples()", () => {
66
- it("maps every `${platform}-${arch}` key to its lib-* sub-package", () => {
67
- const map = libTriples();
68
- expect(Object.keys(map).length).toBe(PLATFORMS.length);
69
- for (const p of PLATFORMS) {
70
- expect(map[`${p.nodePlatform}-${p.nodeArch}`]).toBe(p.libName);
71
- }
72
- });
73
- });
74
- describe("librarySlug()", () => {
75
- it("throws when libName does not start with the `@dirsql/lib-` prefix", () => {
76
- const bad = {
77
- ...PLATFORMS[0],
78
- libName: "@dirsql/cli-linux-x64-gnu",
79
- };
80
- expect(() => librarySlug(bad)).toThrow("libName @dirsql/cli-linux-x64-gnu missing @dirsql/lib- prefix");
81
- });
82
- });
83
- });
84
- //# sourceMappingURL=platforms.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platforms.test.js","sourceRoot":"","sources":["../src/platforms.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveConfig.d.ts","sourceRoot":"","sources":["../src/resolveConfig.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK9D,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAoClE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveConfig.js","sourceRoot":"","sources":["../src/resolveConfig.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAM/C,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,uEAAuE;IACvE,oEAAoE;IACpE,4EAA4E;IAC5E,IAAI,GAAG,GAAQ,EAAE,CAAC;IAClB,IAAI,SAAS,GAAU,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAQ,CAAC;QACnE,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAQ,CAAC;QAChC,SAAS,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAU,CAAC;QACjE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,IAAI,EACF,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,EAAE;YACN,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpC,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI;aAC1B,CAAC,CAAC;YACH,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,GAAG,EAAE,CAAC,CAAC,GAAa;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAc;gBACtB,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI;aAC1B,CAAC,CAAC;SACJ;QACD,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAc,CAAC;QACxE,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;QAC3D,WAAW,EACT,OAAO,CAAC,WAAW;YACnB,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KACxE,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=resolveConfig.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveConfig.test.d.ts","sourceRoot":"","sources":["../src/resolveConfig.test.ts"],"names":[],"mappings":""}
@@ -1,206 +0,0 @@
1
- // Unit tests for `resolveConfig`.
2
- import { readFileSync } from "node:fs";
3
- import { describe, expect, it, vi } from "vitest";
4
- import { resolveConfig } from "./resolveConfig.js";
5
- // `resolveConfig`'s only effectful collaborator is `readFileSync`; `node:path`
6
- // and `smol-toml` are pure. Mock fs so the test never touches a real file --
7
- // each "with a config file" case stubs the TOML body it wants to parse.
8
- vi.mock("node:fs", async () => ({
9
- ...(await vi.importActual("node:fs")),
10
- readFileSync: vi.fn(),
11
- }));
12
- const noopExtract = () => [];
13
- // Fixed posix config path. CI is linux, so `dirname(resolve(cfgPath))` is
14
- // deterministically `/cfg` -- relative config paths resolve against it.
15
- const cfgPath = "/cfg/.dirsql.toml";
16
- const cfgDir = "/cfg";
17
- describe("resolveConfig", () => {
18
- const writeCfg = (body) => {
19
- vi.mocked(readFileSync).mockReturnValue(body);
20
- };
21
- describe("without a config file", () => {
22
- it("forwards the root kwarg, defaults everything else", () => {
23
- expect(resolveConfig({ root: "/abs/data" })).toEqual({
24
- root: "/abs/data",
25
- tables: [],
26
- ignore: [],
27
- persist: false,
28
- persistPath: null,
29
- });
30
- });
31
- it("normalizes programmatic strict: undefined to false", () => {
32
- const out = resolveConfig({
33
- root: "/r",
34
- tables: [{ ddl: "x", glob: "*", extract: noopExtract }],
35
- });
36
- expect(out.tables).toEqual([{ ddl: "x", glob: "*", strict: false }]);
37
- });
38
- it("normalizes programmatic strict: true to true", () => {
39
- const out = resolveConfig({
40
- root: "/r",
41
- tables: [{ ddl: "x", glob: "*", extract: noopExtract, strict: true }],
42
- });
43
- expect(out.tables).toEqual([{ ddl: "x", glob: "*", strict: true }]);
44
- });
45
- it("normalizes programmatic strict: false to false", () => {
46
- const out = resolveConfig({
47
- root: "/r",
48
- tables: [{ ddl: "x", glob: "*", extract: noopExtract, strict: false }],
49
- });
50
- expect(out.tables).toEqual([{ ddl: "x", glob: "*", strict: false }]);
51
- });
52
- it("forwards the ignore kwarg", () => {
53
- const out = resolveConfig({ root: "/r", ignore: ["**/skip/**"] });
54
- expect(out.ignore).toEqual(["**/skip/**"]);
55
- });
56
- it("forwards persist + persistPath kwargs", () => {
57
- const out = resolveConfig({
58
- root: "/r",
59
- persist: true,
60
- persistPath: "/abs/cache.db",
61
- });
62
- expect(out.persist).toBe(true);
63
- expect(out.persistPath).toBe("/abs/cache.db");
64
- });
65
- });
66
- describe("with a config file", () => {
67
- it("resolves a relative [dirsql].root against the config file's parent", () => {
68
- writeCfg('[dirsql]\nroot = "data"\n');
69
- const out = resolveConfig({ config: cfgPath });
70
- expect(out.root).toBe("/cfg/data");
71
- });
72
- it("preserves an absolute [dirsql].root verbatim", () => {
73
- writeCfg('[dirsql]\nroot = "/other/abs/path"\n');
74
- const out = resolveConfig({ config: cfgPath });
75
- expect(out.root).toBe("/other/abs/path");
76
- });
77
- it("defaults the root to the config file's parent when [dirsql].root is absent", () => {
78
- writeCfg('[dirsql]\nignore = ["x"]\n');
79
- const out = resolveConfig({ config: cfgPath });
80
- expect(out.root).toBe(cfgDir);
81
- });
82
- it("defaults the root to the config file's parent when [dirsql] is absent entirely", () => {
83
- writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
84
- const out = resolveConfig({ config: cfgPath });
85
- expect(out.root).toBe(cfgDir);
86
- });
87
- it("handles a non-string [dirsql].root by falling back to the config dir", () => {
88
- writeCfg("[dirsql]\nroot = 42\n");
89
- const out = resolveConfig({ config: cfgPath });
90
- expect(out.root).toBe(cfgDir);
91
- });
92
- it("reads [[table]] entries with strict defaulting to false", () => {
93
- writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
94
- const out = resolveConfig({ config: cfgPath });
95
- expect(out.tables).toEqual([
96
- { ddl: "CREATE TABLE t (x TEXT)", glob: "*.json", strict: false },
97
- ]);
98
- });
99
- it("respects strict = true on a [[table]] entry", () => {
100
- writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\nstrict = true\n');
101
- const out = resolveConfig({ config: cfgPath });
102
- expect(out.tables).toEqual([
103
- { ddl: "CREATE TABLE t (x TEXT)", glob: "*.json", strict: true },
104
- ]);
105
- });
106
- it("returns an empty tables list when no [[table]] entries are declared", () => {
107
- writeCfg("[dirsql]\nignore = []\n");
108
- const out = resolveConfig({ config: cfgPath });
109
- expect(out.tables).toEqual([]);
110
- });
111
- it("returns an empty tables list when `table` exists but isn't an array", () => {
112
- // TOML's `[table]` (singular table header) yields a non-array value
113
- // for the same key name. resolveConfig must defensively coerce.
114
- writeCfg('[table]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
115
- const out = resolveConfig({ config: cfgPath });
116
- expect(out.tables).toEqual([]);
117
- });
118
- it("forwards [dirsql].ignore", () => {
119
- writeCfg('[dirsql]\nignore = ["node_modules/**"]\n');
120
- const out = resolveConfig({ config: cfgPath });
121
- expect(out.ignore).toEqual(["node_modules/**"]);
122
- });
123
- it("flips persist on when [dirsql].persist = true", () => {
124
- writeCfg("[dirsql]\npersist = true\n");
125
- const out = resolveConfig({ config: cfgPath });
126
- expect(out.persist).toBe(true);
127
- });
128
- it("leaves persist off when [dirsql].persist is absent", () => {
129
- writeCfg('[dirsql]\nignore = ["x"]\n');
130
- const out = resolveConfig({ config: cfgPath });
131
- expect(out.persist).toBe(false);
132
- });
133
- it("resolves a relative [dirsql].persist_path against the config dir", () => {
134
- writeCfg('[dirsql]\npersist = true\npersist_path = "cache/dirsql.db"\n');
135
- const out = resolveConfig({ config: cfgPath });
136
- expect(out.persistPath).toBe("/cfg/cache/dirsql.db");
137
- });
138
- it("preserves an absolute [dirsql].persist_path verbatim", () => {
139
- writeCfg('[dirsql]\npersist_path = "/var/cache/dirsql.db"\n');
140
- const out = resolveConfig({ config: cfgPath });
141
- expect(out.persistPath).toBe("/var/cache/dirsql.db");
142
- });
143
- it("leaves persistPath null when [dirsql].persist_path is absent", () => {
144
- writeCfg('[dirsql]\nignore = ["x"]\n');
145
- const out = resolveConfig({ config: cfgPath });
146
- expect(out.persistPath).toBeNull();
147
- });
148
- it("ignores a non-string [dirsql].persist_path", () => {
149
- writeCfg("[dirsql]\npersist_path = 42\n");
150
- const out = resolveConfig({ config: cfgPath });
151
- expect(out.persistPath).toBeNull();
152
- });
153
- });
154
- describe("merging kwargs with a config file", () => {
155
- it("kwarg root wins over [dirsql].root", () => {
156
- writeCfg('[dirsql]\nroot = "from-config"\n');
157
- const out = resolveConfig({ root: "/from-kwarg", config: cfgPath });
158
- expect(out.root).toBe("/from-kwarg");
159
- });
160
- it("concatenates programmatic tables then config tables, in order", () => {
161
- writeCfg('[[table]]\nddl = "CREATE TABLE c (x TEXT)"\nglob = "c/*"\n');
162
- const out = resolveConfig({
163
- root: "/r",
164
- tables: [{ ddl: "p-ddl", glob: "p/*", extract: noopExtract }],
165
- config: cfgPath,
166
- });
167
- expect(out.tables.map((t) => t.ddl)).toEqual([
168
- "p-ddl",
169
- "CREATE TABLE c (x TEXT)",
170
- ]);
171
- });
172
- it("concatenates ignore kwargs first, then config ignore", () => {
173
- writeCfg('[dirsql]\nignore = ["from-config/**"]\n');
174
- const out = resolveConfig({
175
- root: "/r",
176
- ignore: ["from-kwarg/**"],
177
- config: cfgPath,
178
- });
179
- expect(out.ignore).toEqual(["from-kwarg/**", "from-config/**"]);
180
- });
181
- it("OR-s persist across kwarg and config (kwarg true, config absent)", () => {
182
- writeCfg('[dirsql]\nignore = ["x"]\n');
183
- const out = resolveConfig({
184
- root: "/r",
185
- persist: true,
186
- config: cfgPath,
187
- });
188
- expect(out.persist).toBe(true);
189
- });
190
- it("OR-s persist across kwarg and config (kwarg absent, config true)", () => {
191
- writeCfg("[dirsql]\npersist = true\n");
192
- const out = resolveConfig({ root: "/r", config: cfgPath });
193
- expect(out.persist).toBe(true);
194
- });
195
- it("kwarg persistPath wins over config persist_path", () => {
196
- writeCfg('[dirsql]\npersist_path = "from-config.db"\n');
197
- const out = resolveConfig({
198
- root: "/r",
199
- persistPath: "/from-kwarg.db",
200
- config: cfgPath,
201
- });
202
- expect(out.persistPath).toBe("/from-kwarg.db");
203
- });
204
- });
205
- });
206
- //# sourceMappingURL=resolveConfig.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveConfig.test.js","sourceRoot":"","sources":["../src/resolveConfig.test.ts"],"names":[],"mappings":"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"}