dirsql 0.3.103 → 0.3.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/core.d.ts CHANGED
@@ -6,7 +6,7 @@ export interface NativeDirSQL {
6
6
  pollEvents(timeoutMs: number): Promise<RowEvent[]>;
7
7
  }
8
8
  export interface NativeDirSQLConstructor {
9
- openAsync(root: string | null, tables: TableDef[] | null, ignore: string[] | null, config: string | null, persist: boolean | null, persistPath: string | null, extensions: ExtensionSpec[] | null, suppressConfigExtensions: boolean | null): Promise<NativeDirSQL>;
9
+ openAsync(root: string | null, tables: TableDef[] | null, ignore: string[] | null, config: string[] | null, persist: boolean | null, persistPath: string | null, extensions: ExtensionSpec[] | null, suppressConfigExtensions: boolean | null): Promise<NativeDirSQL>;
10
10
  }
11
11
  export interface CoreModule {
12
12
  DirSQL: NativeDirSQLConstructor;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,WAAW,YAAY;IAC3B,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,MAAM,WAAW,uBAAuB;IACtC,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,EACrB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI,EAGlC,wBAAwB,EAAE,OAAO,GAAG,IAAI,GACvC,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B;AAID,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,uBAAuB,CAAC;IAChC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5C;AAMD,wBAAgB,OAAO,IAAI,UAAU,CAKpC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,WAAW,YAAY;IAC3B,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,MAAM,WAAW,uBAAuB;IACtC,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,EAAE,GAAG,IAAI,EACvB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI,EAGlC,wBAAwB,EAAE,OAAO,GAAG,IAAI,GACvC,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B;AAID,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,uBAAuB,CAAC;IAChC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5C;AAMD,wBAAgB,OAAO,IAAI,UAAU,CAKpC"}
package/dist/dirsql.d.ts CHANGED
@@ -32,13 +32,14 @@ export interface DirSQLOptions {
32
32
  /** Glob patterns (relative to `root`) to ignore. */
33
33
  ignore?: string[];
34
34
  /**
35
- * Path to a `.dirsql.toml` config file. Its `[[table]]` entries are
36
- * appended to any programmatic `tables`; its `[dirsql].ignore` patterns
37
- * are appended to any explicit `ignore`. The config file's location does
38
- * not affect the index root — that is the explicit `root` when given,
39
- * otherwise the process working directory.
35
+ * Path to a `.dirsql.toml` config file, or an array of paths that merge in
36
+ * order. Each config's `[[table]]` entries are appended to any programmatic
37
+ * `tables`; its `[dirsql].ignore` patterns are appended to any explicit
38
+ * `ignore`; a duplicate table name across configs errors. The config file's
39
+ * location does not affect the index root — that is the explicit `root` when
40
+ * given, otherwise the process working directory.
40
41
  */
41
- config?: string;
42
+ config?: string | string[];
42
43
  /**
43
44
  * Enable persistent on-disk SQLite cache. When `true`, the database is
44
45
  * written to `<root>/.dirsql/cache.db` (override via `persistPath`) so
@@ -1 +1 @@
1
- {"version":3,"file":"dirsql.d.ts","sourceRoot":"","sources":["../src/dirsql.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAC9B;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;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,MAAM;IAIjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAEvC;;;;;;OAMG;IACH,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzB;IAGD,OAAO,CAAC,MAAM,CAAgB;IAE9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IAEjC,wDAAwD;gBAC5C,UAAU,EAAE,MAAM;IAC9B,yCAAyC;gBAC7B,OAAO,EAAE,aAAa;IA6ClC;;;;;;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;CAYxD"}
1
+ {"version":3,"file":"dirsql.d.ts","sourceRoot":"","sources":["../src/dirsql.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAC9B;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;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,MAAM;IAIjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAEvC;;;;;;OAMG;IACH,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzB;IAGD,OAAO,CAAC,MAAM,CAAgB;IAE9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IAEjC,wDAAwD;gBAC5C,UAAU,EAAE,MAAM;IAC9B,yCAAyC;gBAC7B,OAAO,EAAE,aAAa;IAqDlC;;;;;;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;CAYxD"}
package/dist/dirsql.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { getCore } from "./core.js";
2
- import { resolveConfigExtensionSpecs } from "./resolve-config-extensions.js";
2
+ import { resolveConfigsExtensionSpecs } from "./resolve-config-extensions.js";
3
3
  import { resolveExtensionPath } from "./resolve-extension.js";
4
4
  /**
5
5
  * Ephemeral SQL index over a local directory.
@@ -52,6 +52,13 @@ export class DirSQL {
52
52
  constructor(arg) {
53
53
  const options = typeof arg === "string" ? { config: arg } : arg;
54
54
  this._options = options;
55
+ // A single path or an array; the array merges in order (each config's
56
+ // [[table]] / ignore / [[dirsql.extension]] accumulate).
57
+ const configPaths = options.config == null
58
+ ? []
59
+ : typeof options.config === "string"
60
+ ? [options.config]
61
+ : options.config;
55
62
  const Ctor = getCore().DirSQL;
56
63
  // Extension paths (possibly bare package names) are resolved inside the
57
64
  // promise chain so a resolution error rejects `ready` rather than
@@ -66,13 +73,13 @@ export class DirSQL {
66
73
  // (bare package names need require.resolve, which the core lacks) and
67
74
  // suppresses the core's own config-extension loading so they are not
68
75
  // loaded twice.
69
- const configExtensions = options.config != null
70
- ? resolveConfigExtensionSpecs(options.config)
76
+ const configExtensions = configPaths.length > 0
77
+ ? resolveConfigsExtensionSpecs(configPaths)
71
78
  : null;
72
79
  const merged = configExtensions !== null
73
80
  ? [...(extensions ?? []), ...configExtensions]
74
81
  : extensions;
75
- return Ctor.openAsync(options.root ?? null, options.tables ?? null, options.ignore ?? null, options.config ?? null, options.persist ?? null, options.persistPath ?? null, merged, configExtensions !== null);
82
+ return Ctor.openAsync(options.root ?? null, options.tables ?? null, options.ignore ?? null, configPaths.length > 0 ? configPaths : null, options.persist ?? null, options.persistPath ?? null, merged, configExtensions !== null);
76
83
  })
77
84
  .then((inner) => {
78
85
  this._inner = inner;
@@ -1 +1 @@
1
- {"version":3,"file":"dirsql.js","sourceRoot":"","sources":["../src/dirsql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dirsql.js","sourceRoot":"","sources":["../src/dirsql.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAkF9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,MAAM;IACjB,wEAAwE;IACxE,2EAA2E;IAC3E,6EAA6E;IAC5D,MAAM,CAAgB;IAEvC;;;;;;OAMG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,gEAAgE;IACxD,MAAM,CAAgB;IAC9B,4DAA4D;IACnD,QAAQ,CAAgB;IAMjC,YAAY,GAA2B;QACrC,MAAM,OAAO,GACX,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,sEAAsE;QACtE,yDAAyD;QACzD,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,IAAI,IAAI;YACpB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;gBAClC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;gBAClB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC;QAC9B,wEAAwE;QACxE,kEAAkE;QAClE,mEAAmE;QACnE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE;aAC5B,IAAI,CAAC,GAAG,EAAE;YACT,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC;gBACxD,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC,CAAC,IAAI,IAAI,CAAC;YACd,oEAAoE;YACpE,sEAAsE;YACtE,qEAAqE;YACrE,gBAAgB;YAChB,MAAM,gBAAgB,GACpB,WAAW,CAAC,MAAM,GAAG,CAAC;gBACpB,CAAC,CAAC,4BAA4B,CAAC,WAAW,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC;YACX,MAAM,MAAM,GACV,gBAAgB,KAAK,IAAI;gBACvB,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,gBAAgB,CAAC;gBAC9C,CAAC,CAAC,UAAU,CAAC;YACjB,OAAO,IAAI,CAAC,SAAS,CACnB,OAAO,CAAC,IAAI,IAAI,IAAI,EACpB,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAC3C,OAAO,CAAC,OAAO,IAAI,IAAI,EACvB,OAAO,CAAC,WAAW,IAAI,IAAI,EAC3B,MAAM,EACN,gBAAgB,KAAK,IAAI,CAC1B,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,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,mCAAmC;YACnC,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"}
@@ -1,14 +1,15 @@
1
1
  import type { ExtensionSpec } from "./dirsql.js";
2
+ export declare function resolveConfigExtensionSpecs(configPath: string): ExtensionSpec[] | null;
2
3
  /**
3
- * Resolve a TOML config's `[[dirsql.extension]]` entries to literal paths.
4
+ * Resolve the `[[dirsql.extension]]` entries of several configs, in order.
4
5
  *
5
- * Returns the resolved specs — every entry resolved via
6
- * `resolveExtensionPath` against the config file's parent directory — when at
7
- * least one entry's `path` is a bare package name. Returns `null` when the
8
- * caller should not intervene: the config is missing, malformed, declares no
9
- * extensions, or uses only literal paths — leaving the core's own loading
10
- * (and error reporting) untouched. Throws if a package name cannot be
11
- * resolved.
6
+ * The SDK intervenes for the whole set only when **some** config names an
7
+ * extension by bare package name (the core can resolve neither package names
8
+ * nor — once globally suppressed — the literal entries of the other configs).
9
+ * When it intervenes it resolves **every** config's entries, each against that
10
+ * config's own parent directory, concatenated in `configPaths` order. Returns
11
+ * `null` when no config uses a package name, leaving every config's loading to
12
+ * the core.
12
13
  */
13
- export declare function resolveConfigExtensionSpecs(configPath: string): ExtensionSpec[] | null;
14
+ export declare function resolveConfigsExtensionSpecs(configPaths: string[]): ExtensionSpec[] | null;
14
15
  //# sourceMappingURL=resolve-config-extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-config-extensions.d.ts","sourceRoot":"","sources":["../src/resolve-config-extensions.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,GACjB,aAAa,EAAE,GAAG,IAAI,CA4BxB"}
1
+ {"version":3,"file":"resolve-config-extensions.d.ts","sourceRoot":"","sources":["../src/resolve-config-extensions.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqDjD,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,GACjB,aAAa,EAAE,GAAG,IAAI,CAMxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,EAAE,GACpB,aAAa,EAAE,GAAG,IAAI,CAYxB"}
@@ -22,7 +22,12 @@ import { isBareName, resolveExtensionPath } from "./resolve-extension.js";
22
22
  * (and error reporting) untouched. Throws if a package name cannot be
23
23
  * resolved.
24
24
  */
25
- export function resolveConfigExtensionSpecs(configPath) {
25
+ /** Load a config's `[[dirsql.extension]]` entries with its base directory.
26
+ *
27
+ * `null` when the config is missing, unreadable/malformed, or declares no
28
+ * extension array — the caller leaves such configs to the core.
29
+ */
30
+ function loadExtensionEntries(configPath) {
26
31
  if (!existsSync(configPath)) {
27
32
  return null;
28
33
  }
@@ -38,15 +43,46 @@ export function resolveConfigExtensionSpecs(configPath) {
38
43
  if (!Array.isArray(dirsql.extension)) {
39
44
  return null;
40
45
  }
41
- const entries = dirsql.extension;
42
- const hasPackageName = entries.some((e) => typeof e.path === "string" && isBareName(e.path));
43
- if (!hasPackageName) {
44
- return null;
45
- }
46
- const base = dirname(resolvePath(configPath));
46
+ return { entries: dirsql.extension, base: dirname(resolvePath(configPath)) };
47
+ }
48
+ function hasBareName(entries) {
49
+ return entries.some((e) => typeof e.path === "string" && isBareName(e.path));
50
+ }
51
+ function resolveEntries(entries, base) {
47
52
  return entries.map((e) => ({
48
53
  path: resolveExtensionPath(e.path, base, true),
49
54
  entrypoint: typeof e.entrypoint === "string" ? e.entrypoint : undefined,
50
55
  }));
51
56
  }
57
+ export function resolveConfigExtensionSpecs(configPath) {
58
+ const loaded = loadExtensionEntries(configPath);
59
+ if (loaded === null || !hasBareName(loaded.entries)) {
60
+ return null;
61
+ }
62
+ return resolveEntries(loaded.entries, loaded.base);
63
+ }
64
+ /**
65
+ * Resolve the `[[dirsql.extension]]` entries of several configs, in order.
66
+ *
67
+ * The SDK intervenes for the whole set only when **some** config names an
68
+ * extension by bare package name (the core can resolve neither package names
69
+ * nor — once globally suppressed — the literal entries of the other configs).
70
+ * When it intervenes it resolves **every** config's entries, each against that
71
+ * config's own parent directory, concatenated in `configPaths` order. Returns
72
+ * `null` when no config uses a package name, leaving every config's loading to
73
+ * the core.
74
+ */
75
+ export function resolveConfigsExtensionSpecs(configPaths) {
76
+ const loaded = configPaths.map(loadExtensionEntries);
77
+ if (!loaded.some((item) => item !== null && hasBareName(item.entries))) {
78
+ return null;
79
+ }
80
+ const specs = [];
81
+ for (const item of loaded) {
82
+ if (item !== null) {
83
+ specs.push(...resolveEntries(item.entries, item.base));
84
+ }
85
+ }
86
+ return specs;
87
+ }
52
88
  //# sourceMappingURL=resolve-config-extensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-config-extensions.js","sourceRoot":"","sources":["../src/resolve-config-extensions.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,8DAA8D;AAC9D,0EAA0E;AAC1E,0EAA0E;AAC1E,6EAA6E;AAC7E,oEAAoE;AACpE,EAAE;AACF,6EAA6E;AAE7E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK1E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B,CACzC,UAAkB;IAElB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAS,CAAC;IACd,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAS,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAS,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAW,MAAM,CAAC,SAAS,CAAC;IACzC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CACxD,CAAC;IACF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAc,EAAE,IAAI,EAAE,IAAI,CAAC;QACxD,UAAU,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KACxE,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"resolve-config-extensions.js","sourceRoot":"","sources":["../src/resolve-config-extensions.ts"],"names":[],"mappings":"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"}
@@ -54,7 +54,7 @@ DirSQL(
54
54
  *,
55
55
  tables: list[Table] | None = None,
56
56
  ignore: list[str] | None = None,
57
- config: str | None = None,
57
+ config: str | list[str] | None = None,
58
58
  persist: bool = False,
59
59
  persist_path: str | None = None,
60
60
  extensions: list[dict] | None = None, # [{ "path": str, "entrypoint"?: str }]
@@ -68,7 +68,7 @@ new DirSQL({
68
68
  root?: string,
69
69
  tables?: TableDef[],
70
70
  ignore?: string[],
71
- config?: string,
71
+ config?: string | string[],
72
72
  persist?: boolean,
73
73
  persistPath?: string,
74
74
  extensions?: ExtensionSpec[], // [{ path: string, entrypoint?: string }]
@@ -108,12 +108,13 @@ never sets the root.
108
108
  entries are appended after any programmatic `tables`; its `ignore`
109
109
  patterns and `[[dirsql.extension]]` entries are appended likewise. The
110
110
  config file does **not** set the index root: with no explicit `root`, the
111
- index roots at the process cwd. In **Rust**, the builder's `.config()` is
112
- **repeatable** — call it once per file and the configs merge in call order
113
- (`[[table]]` / `ignore` / `[[dirsql.extension]]` accumulate; a duplicate
114
- table name across configs errors), mirroring the CLI's repeatable
115
- [`-c/--config`](./cli.md#flags). Python and TypeScript currently accept a
116
- single `config` path.
111
+ index roots at the process cwd. **Multiple configs merge in order** on
112
+ every SDK — **Python** `config` accepts a `str` or a `list[str]`, the
113
+ **Rust** builder's `.config()` is repeatable (call it once per file), and
114
+ **TypeScript** `config` accepts a `string` or a `string[]`; the configs
115
+ merge in call order (`[[table]]` / `ignore` / `[[dirsql.extension]]`
116
+ accumulate; a duplicate table name across configs errors), mirroring the
117
+ CLI's repeatable [`-c/--config`](./cli.md#flags).
117
118
  - `persist` — Keep the SQLite index on disk between runs (default off:
118
119
  ephemeral, rebuilt every startup). The cache lives at
119
120
  `<root>/.dirsql/cache.db` by default; on restart, only files whose stat
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dirsql",
3
- "version": "0.3.103",
3
+ "version": "0.3.105",
4
4
  "description": "Ephemeral SQL index over a local directory",
5
5
  "license": "MIT",
6
6
  "repository": "https://github.com/thekevinscott/dirsql",
@@ -212,15 +212,15 @@
212
212
  ]
213
213
  },
214
214
  "optionalDependencies": {
215
- "@dirsql/lib-linux-x64-gnu": "0.3.103",
216
- "@dirsql/lib-linux-arm64-gnu": "0.3.103",
217
- "@dirsql/lib-darwin-x64": "0.3.103",
218
- "@dirsql/lib-darwin-arm64": "0.3.103",
219
- "@dirsql/lib-win32-x64-msvc": "0.3.103",
220
- "@dirsql/cli-linux-x64-gnu": "0.3.103",
221
- "@dirsql/cli-linux-arm64-gnu": "0.3.103",
222
- "@dirsql/cli-darwin-x64": "0.3.103",
223
- "@dirsql/cli-darwin-arm64": "0.3.103",
224
- "@dirsql/cli-win32-x64-msvc": "0.3.103"
215
+ "@dirsql/lib-linux-x64-gnu": "0.3.105",
216
+ "@dirsql/lib-linux-arm64-gnu": "0.3.105",
217
+ "@dirsql/lib-darwin-x64": "0.3.105",
218
+ "@dirsql/lib-darwin-arm64": "0.3.105",
219
+ "@dirsql/lib-win32-x64-msvc": "0.3.105",
220
+ "@dirsql/cli-linux-x64-gnu": "0.3.105",
221
+ "@dirsql/cli-linux-arm64-gnu": "0.3.105",
222
+ "@dirsql/cli-darwin-x64": "0.3.105",
223
+ "@dirsql/cli-darwin-arm64": "0.3.105",
224
+ "@dirsql/cli-win32-x64-msvc": "0.3.105"
225
225
  }
226
226
  }