dirsql 0.2.3 → 0.2.8

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/README.md CHANGED
@@ -12,26 +12,31 @@ Also available as [`dirsql` on crates.io](https://crates.io/crates/dirsql) and [
12
12
  pnpm add dirsql
13
13
  ```
14
14
 
15
- Requires a native build step (Rust toolchain). The native module is compiled during `pnpm build`.
15
+ Prebuilt binaries ship for linux-x64, linux-arm64, darwin-x64, darwin-arm64, and win32-x64. npm / pnpm pick up the right one via `optionalDependencies` — no Rust toolchain required.
16
16
 
17
17
  ## Usage
18
18
 
19
19
  ```typescript
20
20
  import { DirSQL } from "dirsql";
21
21
 
22
- const db = new DirSQL("/path/to/directory", [
23
- {
24
- ddl: "CREATE TABLE users (name TEXT, age INTEGER)",
25
- glob: "data/*.json",
26
- extract: (filePath, content) => JSON.parse(content),
27
- },
28
- ]);
29
-
30
- const rows = db.query("SELECT * FROM users WHERE age > 25");
22
+ const db = new DirSQL({
23
+ root: "/path/to/directory",
24
+ tables: [
25
+ {
26
+ ddl: "CREATE TABLE users (name TEXT, age INTEGER)",
27
+ glob: "data/*.json",
28
+ extract: (_filePath, content) => JSON.parse(content),
29
+ },
30
+ ],
31
+ });
32
+
33
+ const rows = await db.query("SELECT * FROM users WHERE age > 25");
31
34
  console.log(rows);
32
35
  ```
33
36
 
34
- ## Building
37
+ ## Building (from source)
38
+
39
+ Building from source requires a Rust toolchain.
35
40
 
36
41
  ```bash
37
42
  pnpm install
@@ -1 +1 @@
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;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;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,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACvD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CACpD;AAED,UAAU,uBAAuB;IAC/B,SAAS,CACP,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EACzB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B;AAID,UAAU,UAAU;IAClB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AA0BD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,MAAM;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAG9B,OAAO,CAAC,MAAM,CAAgB;IAE9B,wDAAwD;gBAC5C,UAAU,EAAE,MAAM;IAC9B,yCAAyC;gBAC7B,OAAO,EAAE,aAAa;IAgBlC;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAK5D;;;;;;;OAOG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;;;;;;OAOG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKxD;;;;;;;;;;OAUG;IACI,KAAK,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;CAaxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAcA,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;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;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,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACvD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CACpD;AAED,UAAU,uBAAuB;IAC/B,SAAS,CACP,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EACzB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B;AAID,UAAU,UAAU;IAClB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAaD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,MAAM;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAG9B,OAAO,CAAC,MAAM,CAAgB;IAE9B,wDAAwD;gBAC5C,UAAU,EAAE,MAAM;IAC9B,yCAAyC;gBAC7B,OAAO,EAAE,aAAa;IAgBlC;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAK5D;;;;;;;OAOG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;;;;;;OAOG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKxD;;;;;;;;;;OAUG;IACI,KAAK,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;CAaxD"}
package/dist/index.js CHANGED
@@ -1,36 +1,21 @@
1
1
  // dirsql TypeScript SDK.
2
2
  //
3
- // The public surface is implemented in Rust via napi-rs. `pnpm build` runs
4
- // `napi build` which produces `dirsql.node` at the package root, then
5
- // `tsc` compiles this file to `dist/index.js` + `dist/index.d.ts`, which
6
- // is what consumers import via the package's `main` / `types` / `exports`
7
- // fields.
3
+ // The public surface is implemented in Rust via napi-rs. In development
4
+ // `pnpm build` runs `napi build` which drops `dirsql.node` at the
5
+ // package root; the loader in `loadNativeCore.ts` falls back to that
6
+ // file so running from source works.
8
7
  //
9
- // The native binary lives at the package root (not in `dist/`) because
10
- // that is where napi-rs writes it and where `napi prepublish` expects it.
11
- // We resolve it relative to this file's location at runtime so the
12
- // loader works whether the package is consumed via `node_modules/dirsql`
13
- // or via a pnpm workspace self-reference from `test/`.
14
- import { createRequire } from "node:module";
15
- import { join } from "node:path";
16
- // Lazy-loaded reference to the core module. Populated on first access
17
- // by `loadNativeCore()`, or by `__setCoreForTesting()` for tests.
8
+ // In a published install the napi binary ships inside a per-platform
9
+ // `@dirsql/lib-<slug>` sub-package (wired via `optionalDependencies`),
10
+ // and the loader resolves the one matching the host's OS/arch. No Rust
11
+ // toolchain is required at install time on any supported platform.
12
+ import { loadNativeCore as defaultLoadNativeCore } from "./loadNativeCore.js";
13
+ // Lazy-loaded reference to the core module. Populated on first access by
14
+ // `defaultLoadNativeCore()`, or by `__setCoreForTesting()` for tests.
18
15
  let core = null;
19
- /**
20
- * Load the native napi-rs binary. Resolved relative to this compiled
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.
25
- */
26
- function loadNativeCore() {
27
- const bindingPath = join(import.meta.dirname, "..", "dirsql.node");
28
- const requireFromHere = createRequire(import.meta.url);
29
- return requireFromHere(bindingPath);
30
- }
31
16
  function getCore() {
32
17
  if (core === null) {
33
- core = loadNativeCore();
18
+ core = defaultLoadNativeCore();
34
19
  }
35
20
  return core;
36
21
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,EAAE;AACF,wEAAwE;AACxE,kEAAkE;AAClE,qEAAqE;AACrE,qCAAqC;AACrC,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,uEAAuE;AACvE,mEAAmE;AAEnE,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AA2E9E,yEAAyE;AACzE,sEAAsE;AACtE,IAAI,IAAI,GAAsB,IAAI,CAAC;AAEnC,SAAS,OAAO;IACd,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,IAAI,GAAG,qBAAqB,EAAgB,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,IAAI,GAAG,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,MAAM;IACjB;;;;;;OAMG;IACM,KAAK,CAAgB;IAE9B,gEAAgE;IACxD,MAAM,CAAgB;IAM9B,YAAY,GAA2B;QACrC,MAAM,OAAO,GACX,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,OAAO,CAAC,IAAI,IAAI,IAAI,EACpB,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,OAAO,CAAC,MAAM,IAAI,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,GAAW;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACjC,OAAO,IAAI,EAAE,CAAC;YACZ,qEAAqE;YACrE,gEAAgE;YAChE,sEAAsE;YACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ export interface CoreModule {
2
+ DirSQL: unknown;
3
+ }
4
+ /** `createRequire`-shaped loader. Injectable for tests. */
5
+ export type Requirer = (specifier: string) => unknown;
6
+ /**
7
+ * Return path of this module's directory. Split out so tests can pin the
8
+ * dev-fallback location without mocking `import.meta`.
9
+ */
10
+ export type DirnameFn = () => string;
11
+ export declare function loadNativeCore(key?: string, requirer?: Requirer, dirnameFn?: DirnameFn): CoreModule;
12
+ //# sourceMappingURL=loadNativeCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadNativeCore.d.ts","sourceRoot":"","sources":["../ts/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"}
@@ -0,0 +1,26 @@
1
+ // Loads the napi-rs native addon. Consumers installing `dirsql` from npm
2
+ // pick up a single `@dirsql/lib-<slug>` sub-package via the main package's
3
+ // `optionalDependencies`; this loader resolves that package at runtime.
4
+ //
5
+ // During development (this monorepo, or any local `napi build`) the sub-
6
+ // package isn't published yet and `dirsql.node` sits at the package root.
7
+ // We fall back to that path so `pnpm test` works from source.
8
+ import { createRequire } from "node:module";
9
+ import { join } from "node:path";
10
+ import { libTriples } from "./platforms.js";
11
+ export function loadNativeCore(key = `${process.platform}-${process.arch}`, requirer = createRequire(import.meta.url), dirnameFn = () => import.meta.dirname) {
12
+ const libs = libTriples();
13
+ const pkg = libs[key];
14
+ if (pkg) {
15
+ try {
16
+ return requirer(pkg);
17
+ }
18
+ catch {
19
+ // Sub-package not installed (dev checkout, or `npm install
20
+ // --no-optional`). Fall through to the dev path.
21
+ }
22
+ }
23
+ const bindingPath = join(dirnameFn(), "..", "dirsql.node");
24
+ return requirer(bindingPath);
25
+ }
26
+ //# sourceMappingURL=loadNativeCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadNativeCore.js","sourceRoot":"","sources":["../ts/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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loadNativeCore.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadNativeCore.test.d.ts","sourceRoot":"","sources":["../ts/loadNativeCore.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
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
+ throw new Error(`unexpected require(${spec})`);
11
+ });
12
+ const core = loadNativeCore("linux-x64", requirer, () => "/fake");
13
+ expect(core).toBe(fakeCore);
14
+ expect(requirer).toHaveBeenCalledExactlyOnceWith("@dirsql/lib-linux-x64-gnu");
15
+ });
16
+ });
17
+ describe("when the platform sub-package is missing", () => {
18
+ it("falls back to `<pkgRoot>/dirsql.node`", () => {
19
+ const fakeCore = { DirSQL: vi.fn() };
20
+ const requirer = vi.fn((spec) => {
21
+ if (spec === "@dirsql/lib-darwin-arm64") {
22
+ throw new Error("Cannot find module '@dirsql/lib-darwin-arm64'");
23
+ }
24
+ if (spec.endsWith("dirsql.node"))
25
+ return fakeCore;
26
+ throw new Error(`unexpected require(${spec})`);
27
+ });
28
+ const core = loadNativeCore("darwin-arm64", requirer, () => "/pkg/ts");
29
+ expect(core).toBe(fakeCore);
30
+ expect(requirer).toHaveBeenCalledTimes(2);
31
+ expect(requirer).toHaveBeenLastCalledWith("/pkg/dirsql.node");
32
+ });
33
+ });
34
+ describe("on a platform with no corresponding sub-package", () => {
35
+ it("goes straight to the dev fallback without attempting a sub-package load", () => {
36
+ const fakeCore = { DirSQL: vi.fn() };
37
+ const requirer = vi.fn((spec) => {
38
+ if (spec.endsWith("dirsql.node"))
39
+ return fakeCore;
40
+ throw new Error(`unexpected require(${spec})`);
41
+ });
42
+ const core = loadNativeCore("freebsd-x64", requirer, () => "/pkg/ts");
43
+ expect(core).toBe(fakeCore);
44
+ expect(requirer).toHaveBeenCalledExactlyOnceWith("/pkg/dirsql.node");
45
+ });
46
+ });
47
+ });
48
+ //# sourceMappingURL=loadNativeCore.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadNativeCore.test.js","sourceRoot":"","sources":["../ts/loadNativeCore.test.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,10 @@ export interface Platform {
5
5
  nodePlatform: NodeJS.Platform;
6
6
  /** Node `process.arch` value for this target. */
7
7
  nodeArch: NodeJS.Architecture;
8
- /** Published npm sub-package name (`@dirsql/cli-<slug>`). */
8
+ /** CLI sub-package name (`@dirsql/cli-<slug>`). */
9
9
  name: string;
10
+ /** napi library sub-package name (`@dirsql/lib-<slug>`). */
11
+ libName: string;
10
12
  /** Wheel-style `os` constraint for the sub-package's package.json. */
11
13
  os: string[];
12
14
  /** Wheel-style `cpu` constraint for the sub-package's package.json. */
@@ -21,4 +23,13 @@ export interface Platform {
21
23
  export declare const PLATFORMS: readonly Platform[];
22
24
  /** Node `${platform}-${arch}` → `@dirsql/cli-*` sub-package name. */
23
25
  export declare function nodeTriples(): Record<string, string>;
26
+ /** Node `${platform}-${arch}` → `@dirsql/lib-*` napi sub-package name. */
27
+ export declare function libTriples(): Record<string, string>;
28
+ /**
29
+ * Suffix used in the napi `.node` filename for a given triple. Follows the
30
+ * `@napi-rs/cli` convention: `dirsql.<platform>-<arch>[-<abi>].node`, e.g.
31
+ * `dirsql.linux-x64-gnu.node`. Derived from the sub-package name so the
32
+ * on-disk artifact name and the npm package name can't drift.
33
+ */
34
+ export declare function librarySlug(p: Platform): string;
24
35
  //# sourceMappingURL=platforms.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"platforms.d.ts","sourceRoot":"","sources":["../ts/platforms.ts"],"names":[],"mappings":"AAiBA,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,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,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,EAsDxC,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMpD;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMnD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAM/C"}
package/dist/platforms.js CHANGED
@@ -1,21 +1,26 @@
1
1
  // Single source of truth for the target platforms `dirsql` publishes.
2
2
  //
3
- // Indexed two ways:
3
+ // Every target triple generates two npm sub-packages:
4
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`.
5
+ // 1. `@dirsql/cli-<slug>`holds the standalone `dirsql` CLI binary
6
+ // (from cargo-dist). Consumed at runtime by `ts/bin/resolveBinary.ts`
7
+ // when a user runs the `dirsql` CLI.
8
+ // 2. `@dirsql/lib-<slug>` — holds the napi-rs `.node` addon used by the
9
+ // TypeScript SDK. Consumed at runtime by `loadNativeCore()` in
10
+ // `ts/index.ts` when a user `import`s from `dirsql`.
11
+ //
12
+ // Both sub-package sets use `optionalDependencies` on the main `dirsql`
13
+ // package so npm/pnpm install only the one matching the host's OS/arch.
14
+ //
15
+ // `nodeTriples()` / `libTriples()` return `${process.platform}-${process.arch}`
16
+ // → sub-package-name maps for the respective layer.
13
17
  export const PLATFORMS = [
14
18
  {
15
19
  triple: "x86_64-unknown-linux-gnu",
16
20
  nodePlatform: "linux",
17
21
  nodeArch: "x64",
18
22
  name: "@dirsql/cli-linux-x64-gnu",
23
+ libName: "@dirsql/lib-linux-x64-gnu",
19
24
  os: ["linux"],
20
25
  cpu: ["x64"],
21
26
  libc: ["glibc"],
@@ -26,6 +31,7 @@ export const PLATFORMS = [
26
31
  nodePlatform: "linux",
27
32
  nodeArch: "arm64",
28
33
  name: "@dirsql/cli-linux-arm64-gnu",
34
+ libName: "@dirsql/lib-linux-arm64-gnu",
29
35
  os: ["linux"],
30
36
  cpu: ["arm64"],
31
37
  libc: ["glibc"],
@@ -36,6 +42,7 @@ export const PLATFORMS = [
36
42
  nodePlatform: "darwin",
37
43
  nodeArch: "x64",
38
44
  name: "@dirsql/cli-darwin-x64",
45
+ libName: "@dirsql/lib-darwin-x64",
39
46
  os: ["darwin"],
40
47
  cpu: ["x64"],
41
48
  ext: "tar.xz",
@@ -45,6 +52,7 @@ export const PLATFORMS = [
45
52
  nodePlatform: "darwin",
46
53
  nodeArch: "arm64",
47
54
  name: "@dirsql/cli-darwin-arm64",
55
+ libName: "@dirsql/lib-darwin-arm64",
48
56
  os: ["darwin"],
49
57
  cpu: ["arm64"],
50
58
  ext: "tar.xz",
@@ -54,6 +62,7 @@ export const PLATFORMS = [
54
62
  nodePlatform: "win32",
55
63
  nodeArch: "x64",
56
64
  name: "@dirsql/cli-win32-x64-msvc",
65
+ libName: "@dirsql/lib-win32-x64-msvc",
57
66
  os: ["win32"],
58
67
  cpu: ["x64"],
59
68
  ext: "zip",
@@ -68,4 +77,25 @@ export function nodeTriples() {
68
77
  }
69
78
  return out;
70
79
  }
80
+ /** Node `${platform}-${arch}` → `@dirsql/lib-*` napi sub-package name. */
81
+ export function libTriples() {
82
+ const out = {};
83
+ for (const p of PLATFORMS) {
84
+ out[`${p.nodePlatform}-${p.nodeArch}`] = p.libName;
85
+ }
86
+ return out;
87
+ }
88
+ /**
89
+ * Suffix used in the napi `.node` filename for a given triple. Follows the
90
+ * `@napi-rs/cli` convention: `dirsql.<platform>-<arch>[-<abi>].node`, e.g.
91
+ * `dirsql.linux-x64-gnu.node`. Derived from the sub-package name so the
92
+ * on-disk artifact name and the npm package name can't drift.
93
+ */
94
+ export function librarySlug(p) {
95
+ const prefix = "@dirsql/lib-";
96
+ if (!p.libName.startsWith(prefix)) {
97
+ throw new Error(`libName ${p.libName} missing ${prefix} prefix`);
98
+ }
99
+ return p.libName.slice(prefix.length);
100
+ }
71
101
  //# sourceMappingURL=platforms.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"platforms.js","sourceRoot":"","sources":["../ts/platforms.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,sDAAsD;AACtD,EAAE;AACF,qEAAqE;AACrE,yEAAyE;AACzE,wCAAwC;AACxC,wEAAwE;AACxE,kEAAkE;AAClE,wDAAwD;AACxD,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,EAAE;AACF,gFAAgF;AAChF,oDAAoD;AAyBpD,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C;QACE,MAAM,EAAE,0BAA0B;QAClC,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,2BAA2B;QACpC,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,OAAO,EAAE,6BAA6B;QACtC,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,OAAO,EAAE,wBAAwB;QACjC,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,OAAO,EAAE,0BAA0B;QACnC,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,OAAO,EAAE,4BAA4B;QACrC,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;AAED,0EAA0E;AAC1E,MAAM,UAAU,UAAU;IACxB,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,OAAO,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,CAAW;IACrC,MAAM,MAAM,GAAG,cAAc,CAAC;IAC9B,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,YAAY,MAAM,SAAS,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { PLATFORMS } from "./platforms.js";
2
+ import { PLATFORMS, libTriples, nodeTriples } from "./platforms.js";
3
3
  describe("PLATFORMS", () => {
4
4
  describe("shape invariants", () => {
5
5
  it("lists all five target triples", () => {
@@ -17,6 +17,15 @@ describe("PLATFORMS", () => {
17
17
  expect(p.name).toMatch(/^@dirsql\/cli-/);
18
18
  }
19
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
+ });
20
29
  it("pairs tar.xz with unix targets and zip with windows", () => {
21
30
  for (const p of PLATFORMS) {
22
31
  if (p.os.includes("win32")) {
@@ -44,5 +53,23 @@ describe("PLATFORMS", () => {
44
53
  expect(new Set(names).size).toBe(names.length);
45
54
  });
46
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
+ });
47
74
  });
48
75
  //# sourceMappingURL=platforms.test.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"platforms.test.js","sourceRoot":"","sources":["../ts/platforms.test.ts"],"names":[],"mappings":"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"}