dirsql 0.3.15 → 0.3.17
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/cli/die.d.ts.map +1 -0
- package/dist/{bin → cli}/die.js.map +1 -1
- package/dist/{bin → cli}/dirsql.d.ts.map +1 -1
- package/dist/{bin → cli}/dirsql.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/{bin → cli}/main.js.map +1 -1
- package/dist/cli/platformKey.d.ts.map +1 -0
- package/dist/{bin → cli}/platformKey.js.map +1 -1
- package/dist/cli/platformKey.test.d.ts.map +1 -0
- package/dist/{bin → cli}/platformKey.test.js.map +1 -1
- package/dist/{bin → cli}/resolveBinary.d.ts.map +1 -1
- package/dist/{bin → cli}/resolveBinary.js.map +1 -1
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/platforms.js +1 -1
- package/dist/resolveConfig.d.ts +3 -0
- package/dist/resolveConfig.d.ts.map +1 -0
- package/dist/resolveConfig.js +43 -0
- package/dist/resolveConfig.js.map +1 -0
- package/dist/resolveConfig.test.d.ts +2 -0
- package/dist/resolveConfig.test.d.ts.map +1 -0
- package/dist/resolveConfig.test.js +207 -0
- package/dist/resolveConfig.test.js.map +1 -0
- package/docs/api/index.md +20 -0
- package/package.json +16 -13
- package/dist/bin/die.d.ts.map +0 -1
- package/dist/bin/main.d.ts.map +0 -1
- package/dist/bin/platformKey.d.ts.map +0 -1
- package/dist/bin/platformKey.test.d.ts.map +0 -1
- /package/dist/{bin → cli}/die.d.ts +0 -0
- /package/dist/{bin → cli}/die.js +0 -0
- /package/dist/{bin → cli}/dirsql.d.ts +0 -0
- /package/dist/{bin → cli}/dirsql.js +0 -0
- /package/dist/{bin → cli}/main.d.ts +0 -0
- /package/dist/{bin → cli}/main.js +0 -0
- /package/dist/{bin → cli}/platformKey.d.ts +0 -0
- /package/dist/{bin → cli}/platformKey.js +0 -0
- /package/dist/{bin → cli}/platformKey.test.d.ts +0 -0
- /package/dist/{bin → cli}/platformKey.test.js +0 -0
- /package/dist/{bin → cli}/resolveBinary.d.ts +0 -0
- /package/dist/{bin → cli}/resolveBinary.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"die.d.ts","sourceRoot":"","sources":["../../src/cli/die.ts"],"names":[],"mappings":"AAGA,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,KAAK,CAGhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"die.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"die.js","sourceRoot":"","sources":["../../src/cli/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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dirsql.d.ts","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"dirsql.d.ts","sourceRoot":"","sources":["../../src/cli/dirsql.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dirsql.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"dirsql.js","sourceRoot":"","sources":["../../src/cli/dirsql.ts"],"names":[],"mappings":";AACA,uEAAuE;AACvE,6EAA6E;AAC7E,qEAAqE;AACrE,qEAAqE;AACrE,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,oEAAoE;AACpE,kEAAkE;AAClE,2DAA2D;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAOA,wBAAgB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,KAAK,CAMlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/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":"platformKey.d.ts","sourceRoot":"","sources":["../../src/cli/platformKey.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformKey.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"platformKey.js","sourceRoot":"","sources":["../../src/cli/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":["../../src/cli/platformKey.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformKey.test.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"platformKey.test.js","sourceRoot":"","sources":["../../src/cli/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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBinary.d.ts","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"resolveBinary.d.ts","sourceRoot":"","sources":["../../src/cli/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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBinary.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"resolveBinary.js","sourceRoot":"","sources":["../../src/cli/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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -62,6 +62,35 @@ export interface RowEvent {
|
|
|
62
62
|
error?: string | null;
|
|
63
63
|
filePath?: string | null;
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Serializable per-table portion of {@link DirSQLConfig}. Excludes the
|
|
67
|
+
* `extract` callback (closures aren't serializable) and the table's SQL
|
|
68
|
+
* `name` (derivable from `ddl`).
|
|
69
|
+
*/
|
|
70
|
+
export interface TableConfig {
|
|
71
|
+
ddl: string;
|
|
72
|
+
glob: string;
|
|
73
|
+
strict: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Serializable snapshot of a {@link DirSQL} instance's resolved runtime
|
|
77
|
+
* state, as produced by {@link DirSQL.toJSON} / `JSON.stringify(db)`.
|
|
78
|
+
*
|
|
79
|
+
* The shape is identical across the Python, Rust, and TypeScript SDKs
|
|
80
|
+
* (modulo `persist_path` ↔ `persistPath` case): the same payload can flow
|
|
81
|
+
* through the `interpret` handshake regardless of which SDK produced it.
|
|
82
|
+
*
|
|
83
|
+
* Construction artifacts that are no longer meaningful after the instance
|
|
84
|
+
* exists are intentionally excluded — `config` (already merged into `root`
|
|
85
|
+
* / `tables` / `ignore`), per-table `extract`, and per-table `name`.
|
|
86
|
+
*/
|
|
87
|
+
export interface DirSQLConfig {
|
|
88
|
+
root: string;
|
|
89
|
+
tables: TableConfig[];
|
|
90
|
+
ignore: string[];
|
|
91
|
+
persist: boolean;
|
|
92
|
+
persistPath: string | null;
|
|
93
|
+
}
|
|
65
94
|
interface NativeDirSQL {
|
|
66
95
|
query(sql: string): Promise<Record<string, unknown>[]>;
|
|
67
96
|
startWatcher(): Promise<void>;
|
|
@@ -121,6 +150,7 @@ export declare class DirSQL {
|
|
|
121
150
|
*/
|
|
122
151
|
readonly ready: Promise<void>;
|
|
123
152
|
private _inner;
|
|
153
|
+
private readonly _options;
|
|
124
154
|
/** Construct from a `.dirsql.toml` config-file path. */
|
|
125
155
|
constructor(configPath: string);
|
|
126
156
|
/** Construct from structured options. */
|
|
@@ -151,6 +181,11 @@ export declare class DirSQL {
|
|
|
151
181
|
* duration of the poll timeout.
|
|
152
182
|
*/
|
|
153
183
|
pollEvents(timeoutMs: number): Promise<RowEvent[]>;
|
|
184
|
+
/**
|
|
185
|
+
* Resolved construction state. Recomputed on each call; reads the
|
|
186
|
+
* `.dirsql.toml` if `config` was supplied. Works before `ready`.
|
|
187
|
+
*/
|
|
188
|
+
toJSON(): DirSQLConfig;
|
|
154
189
|
/**
|
|
155
190
|
* Watch for file change events as an async iterable.
|
|
156
191
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
// and the loader resolves the one matching the host's OS/arch. No Rust
|
|
11
11
|
// toolchain is required at install time on any supported platform.
|
|
12
12
|
import { loadNativeCore as defaultLoadNativeCore } from "./loadNativeCore.js";
|
|
13
|
+
import { resolveConfig } from "./resolveConfig.js";
|
|
13
14
|
// Lazy-loaded reference to the core module. Populated on first access by
|
|
14
15
|
// `defaultLoadNativeCore()`, or by `__setCoreForTesting()` for tests.
|
|
15
16
|
let core = null;
|
|
@@ -70,8 +71,12 @@ export class DirSQL {
|
|
|
70
71
|
ready;
|
|
71
72
|
// Initialized by `ready`. Do NOT touch before awaiting `ready`.
|
|
72
73
|
_inner;
|
|
74
|
+
// Constructor options preserved verbatim so `toJSON()` can resolve the
|
|
75
|
+
// serialized state synchronously without waiting for `ready`.
|
|
76
|
+
_options;
|
|
73
77
|
constructor(arg) {
|
|
74
78
|
const options = typeof arg === "string" ? { config: arg } : arg;
|
|
79
|
+
this._options = options;
|
|
75
80
|
const Ctor = getCore().DirSQL;
|
|
76
81
|
const openPromise = Ctor.openAsync(options.root ?? null, options.tables ?? null, options.ignore ?? null, options.config ?? null, options.persist ?? null, options.persistPath ?? null);
|
|
77
82
|
this.ready = openPromise.then((inner) => {
|
|
@@ -113,6 +118,13 @@ export class DirSQL {
|
|
|
113
118
|
await this.ready;
|
|
114
119
|
return this._inner.pollEvents(timeoutMs);
|
|
115
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Resolved construction state. Recomputed on each call; reads the
|
|
123
|
+
* `.dirsql.toml` if `config` was supplied. Works before `ready`.
|
|
124
|
+
*/
|
|
125
|
+
toJSON() {
|
|
126
|
+
return resolveConfig(this._options);
|
|
127
|
+
}
|
|
116
128
|
/**
|
|
117
129
|
* Watch for file change events as an async iterable.
|
|
118
130
|
*
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/platforms.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Every target triple generates two npm sub-packages:
|
|
4
4
|
//
|
|
5
5
|
// 1. `@dirsql/cli-<slug>` — holds the standalone `dirsql` CLI binary
|
|
6
|
-
// (from cargo-dist). Consumed at runtime by `src/
|
|
6
|
+
// (from cargo-dist). Consumed at runtime by `src/cli/resolveBinary.ts`
|
|
7
7
|
// when a user runs the `dirsql` CLI.
|
|
8
8
|
// 2. `@dirsql/lib-<slug>` — holds the napi-rs `.node` addon used by the
|
|
9
9
|
// TypeScript SDK. Consumed at runtime by `loadNativeCore()` in
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Synchronous config resolver for `DirSQL.toJSON()`.
|
|
2
|
+
//
|
|
3
|
+
// Mirrors `DirSQLBuilder::resolve` in the Rust core: explicit options win
|
|
4
|
+
// for scalars; tables and ignore lists are concatenated; persist is OR-ed;
|
|
5
|
+
// path-valued config fields resolve relative to the config file's parent.
|
|
6
|
+
import { readFileSync } from "node:fs";
|
|
7
|
+
import { dirname, isAbsolute, resolve as resolvePath } from "node:path";
|
|
8
|
+
import { parse as parseToml } from "smol-toml";
|
|
9
|
+
export function resolveConfig(options) {
|
|
10
|
+
// When no config file is supplied, `cfg` is empty so `cfgDir` is never
|
|
11
|
+
// read (the path-resolution helper is only reached via `cfg.root` /
|
|
12
|
+
// `cfg.persist_path` lookups, both of which short-circuit on an empty cfg).
|
|
13
|
+
let cfg = {};
|
|
14
|
+
let cfgTables = [];
|
|
15
|
+
let cfgDir = "";
|
|
16
|
+
if (options.config !== undefined) {
|
|
17
|
+
const doc = parseToml(readFileSync(options.config, "utf8"));
|
|
18
|
+
cfg = (doc.dirsql ?? {});
|
|
19
|
+
cfgTables = (Array.isArray(doc.table) ? doc.table : []);
|
|
20
|
+
cfgDir = dirname(resolvePath(options.config));
|
|
21
|
+
}
|
|
22
|
+
const abs = (p) => (isAbsolute(p) ? p : resolvePath(cfgDir, p));
|
|
23
|
+
return {
|
|
24
|
+
root: options.root ?? (typeof cfg.root === "string" ? abs(cfg.root) : cfgDir),
|
|
25
|
+
tables: [
|
|
26
|
+
...(options.tables ?? []).map((t) => ({
|
|
27
|
+
ddl: t.ddl,
|
|
28
|
+
glob: t.glob,
|
|
29
|
+
strict: t.strict === true,
|
|
30
|
+
})),
|
|
31
|
+
...cfgTables.map((e) => ({
|
|
32
|
+
ddl: e.ddl,
|
|
33
|
+
glob: e.glob,
|
|
34
|
+
strict: e.strict === true,
|
|
35
|
+
})),
|
|
36
|
+
],
|
|
37
|
+
ignore: [...(options.ignore ?? []), ...(cfg.ignore ?? [])],
|
|
38
|
+
persist: (options.persist ?? false) || cfg.persist === true,
|
|
39
|
+
persistPath: options.persistPath ??
|
|
40
|
+
(typeof cfg.persist_path === "string" ? abs(cfg.persist_path) : null),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=resolveConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveConfig.test.d.ts","sourceRoot":"","sources":["../src/resolveConfig.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
// Unit tests for `resolveConfig`.
|
|
2
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { isAbsolute, join } from "node:path";
|
|
5
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
6
|
+
import { resolveConfig } from "./resolveConfig.js";
|
|
7
|
+
const noopExtract = () => [];
|
|
8
|
+
describe("resolveConfig", () => {
|
|
9
|
+
let dir;
|
|
10
|
+
let cfgPath;
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
dir = mkdtempSync(join(tmpdir(), "dirsql-resolveConfig-"));
|
|
13
|
+
cfgPath = join(dir, ".dirsql.toml");
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
rmSync(dir, { recursive: true, force: true });
|
|
17
|
+
});
|
|
18
|
+
const writeCfg = (body) => {
|
|
19
|
+
writeFileSync(cfgPath, 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(join(dir, "data"));
|
|
71
|
+
expect(isAbsolute(out.root)).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
it("preserves an absolute [dirsql].root verbatim", () => {
|
|
74
|
+
writeCfg('[dirsql]\nroot = "/other/abs/path"\n');
|
|
75
|
+
const out = resolveConfig({ config: cfgPath });
|
|
76
|
+
expect(out.root).toBe("/other/abs/path");
|
|
77
|
+
});
|
|
78
|
+
it("defaults the root to the config file's parent when [dirsql].root is absent", () => {
|
|
79
|
+
writeCfg('[dirsql]\nignore = ["x"]\n');
|
|
80
|
+
const out = resolveConfig({ config: cfgPath });
|
|
81
|
+
expect(out.root).toBe(dir);
|
|
82
|
+
});
|
|
83
|
+
it("defaults the root to the config file's parent when [dirsql] is absent entirely", () => {
|
|
84
|
+
writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
|
|
85
|
+
const out = resolveConfig({ config: cfgPath });
|
|
86
|
+
expect(out.root).toBe(dir);
|
|
87
|
+
});
|
|
88
|
+
it("handles a non-string [dirsql].root by falling back to the config dir", () => {
|
|
89
|
+
writeCfg("[dirsql]\nroot = 42\n");
|
|
90
|
+
const out = resolveConfig({ config: cfgPath });
|
|
91
|
+
expect(out.root).toBe(dir);
|
|
92
|
+
});
|
|
93
|
+
it("reads [[table]] entries with strict defaulting to false", () => {
|
|
94
|
+
writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
|
|
95
|
+
const out = resolveConfig({ config: cfgPath });
|
|
96
|
+
expect(out.tables).toEqual([
|
|
97
|
+
{ ddl: "CREATE TABLE t (x TEXT)", glob: "*.json", strict: false },
|
|
98
|
+
]);
|
|
99
|
+
});
|
|
100
|
+
it("respects strict = true on a [[table]] entry", () => {
|
|
101
|
+
writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\nstrict = true\n');
|
|
102
|
+
const out = resolveConfig({ config: cfgPath });
|
|
103
|
+
expect(out.tables).toEqual([
|
|
104
|
+
{ ddl: "CREATE TABLE t (x TEXT)", glob: "*.json", strict: true },
|
|
105
|
+
]);
|
|
106
|
+
});
|
|
107
|
+
it("returns an empty tables list when no [[table]] entries are declared", () => {
|
|
108
|
+
writeCfg("[dirsql]\nignore = []\n");
|
|
109
|
+
const out = resolveConfig({ config: cfgPath });
|
|
110
|
+
expect(out.tables).toEqual([]);
|
|
111
|
+
});
|
|
112
|
+
it("returns an empty tables list when `table` exists but isn't an array", () => {
|
|
113
|
+
// TOML's `[table]` (singular table header) yields a non-array value
|
|
114
|
+
// for the same key name. resolveConfig must defensively coerce.
|
|
115
|
+
writeCfg('[table]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
|
|
116
|
+
const out = resolveConfig({ config: cfgPath });
|
|
117
|
+
expect(out.tables).toEqual([]);
|
|
118
|
+
});
|
|
119
|
+
it("forwards [dirsql].ignore", () => {
|
|
120
|
+
writeCfg('[dirsql]\nignore = ["node_modules/**"]\n');
|
|
121
|
+
const out = resolveConfig({ config: cfgPath });
|
|
122
|
+
expect(out.ignore).toEqual(["node_modules/**"]);
|
|
123
|
+
});
|
|
124
|
+
it("flips persist on when [dirsql].persist = true", () => {
|
|
125
|
+
writeCfg("[dirsql]\npersist = true\n");
|
|
126
|
+
const out = resolveConfig({ config: cfgPath });
|
|
127
|
+
expect(out.persist).toBe(true);
|
|
128
|
+
});
|
|
129
|
+
it("leaves persist off when [dirsql].persist is absent", () => {
|
|
130
|
+
writeCfg('[dirsql]\nignore = ["x"]\n');
|
|
131
|
+
const out = resolveConfig({ config: cfgPath });
|
|
132
|
+
expect(out.persist).toBe(false);
|
|
133
|
+
});
|
|
134
|
+
it("resolves a relative [dirsql].persist_path against the config dir", () => {
|
|
135
|
+
writeCfg('[dirsql]\npersist = true\npersist_path = "cache/dirsql.db"\n');
|
|
136
|
+
const out = resolveConfig({ config: cfgPath });
|
|
137
|
+
expect(out.persistPath).toBe(join(dir, "cache/dirsql.db"));
|
|
138
|
+
});
|
|
139
|
+
it("preserves an absolute [dirsql].persist_path verbatim", () => {
|
|
140
|
+
writeCfg('[dirsql]\npersist_path = "/var/cache/dirsql.db"\n');
|
|
141
|
+
const out = resolveConfig({ config: cfgPath });
|
|
142
|
+
expect(out.persistPath).toBe("/var/cache/dirsql.db");
|
|
143
|
+
});
|
|
144
|
+
it("leaves persistPath null when [dirsql].persist_path is absent", () => {
|
|
145
|
+
writeCfg('[dirsql]\nignore = ["x"]\n');
|
|
146
|
+
const out = resolveConfig({ config: cfgPath });
|
|
147
|
+
expect(out.persistPath).toBeNull();
|
|
148
|
+
});
|
|
149
|
+
it("ignores a non-string [dirsql].persist_path", () => {
|
|
150
|
+
writeCfg("[dirsql]\npersist_path = 42\n");
|
|
151
|
+
const out = resolveConfig({ config: cfgPath });
|
|
152
|
+
expect(out.persistPath).toBeNull();
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
describe("merging kwargs with a config file", () => {
|
|
156
|
+
it("kwarg root wins over [dirsql].root", () => {
|
|
157
|
+
writeCfg('[dirsql]\nroot = "from-config"\n');
|
|
158
|
+
const out = resolveConfig({ root: "/from-kwarg", config: cfgPath });
|
|
159
|
+
expect(out.root).toBe("/from-kwarg");
|
|
160
|
+
});
|
|
161
|
+
it("concatenates programmatic tables then config tables, in order", () => {
|
|
162
|
+
writeCfg('[[table]]\nddl = "CREATE TABLE c (x TEXT)"\nglob = "c/*"\n');
|
|
163
|
+
const out = resolveConfig({
|
|
164
|
+
root: "/r",
|
|
165
|
+
tables: [{ ddl: "p-ddl", glob: "p/*", extract: noopExtract }],
|
|
166
|
+
config: cfgPath,
|
|
167
|
+
});
|
|
168
|
+
expect(out.tables.map((t) => t.ddl)).toEqual([
|
|
169
|
+
"p-ddl",
|
|
170
|
+
"CREATE TABLE c (x TEXT)",
|
|
171
|
+
]);
|
|
172
|
+
});
|
|
173
|
+
it("concatenates ignore kwargs first, then config ignore", () => {
|
|
174
|
+
writeCfg('[dirsql]\nignore = ["from-config/**"]\n');
|
|
175
|
+
const out = resolveConfig({
|
|
176
|
+
root: "/r",
|
|
177
|
+
ignore: ["from-kwarg/**"],
|
|
178
|
+
config: cfgPath,
|
|
179
|
+
});
|
|
180
|
+
expect(out.ignore).toEqual(["from-kwarg/**", "from-config/**"]);
|
|
181
|
+
});
|
|
182
|
+
it("OR-s persist across kwarg and config (kwarg true, config absent)", () => {
|
|
183
|
+
writeCfg('[dirsql]\nignore = ["x"]\n');
|
|
184
|
+
const out = resolveConfig({
|
|
185
|
+
root: "/r",
|
|
186
|
+
persist: true,
|
|
187
|
+
config: cfgPath,
|
|
188
|
+
});
|
|
189
|
+
expect(out.persist).toBe(true);
|
|
190
|
+
});
|
|
191
|
+
it("OR-s persist across kwarg and config (kwarg absent, config true)", () => {
|
|
192
|
+
writeCfg("[dirsql]\npersist = true\n");
|
|
193
|
+
const out = resolveConfig({ root: "/r", config: cfgPath });
|
|
194
|
+
expect(out.persist).toBe(true);
|
|
195
|
+
});
|
|
196
|
+
it("kwarg persistPath wins over config persist_path", () => {
|
|
197
|
+
writeCfg('[dirsql]\npersist_path = "from-config.db"\n');
|
|
198
|
+
const out = resolveConfig({
|
|
199
|
+
root: "/r",
|
|
200
|
+
persistPath: "/from-kwarg.db",
|
|
201
|
+
config: cfgPath,
|
|
202
|
+
});
|
|
203
|
+
expect(out.persistPath).toBe("/from-kwarg.db");
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
//# sourceMappingURL=resolveConfig.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveConfig.test.js","sourceRoot":"","sources":["../src/resolveConfig.test.ts"],"names":[],"mappings":"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"}
|
package/docs/api/index.md
CHANGED
|
@@ -141,6 +141,26 @@ for await (const event of db.watch()) { // AsyncIterable<RowEvent>
|
|
|
141
141
|
|
|
142
142
|
Returns an async iterable of `RowEvent` objects. The file watcher starts automatically on first iteration. The iterator never terminates on its own.
|
|
143
143
|
|
|
144
|
+
#### `serialization`
|
|
145
|
+
|
|
146
|
+
::: code-group
|
|
147
|
+
|
|
148
|
+
```python [Python]
|
|
149
|
+
vars(db) -> dict
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
```rust [Rust]
|
|
153
|
+
db.config() -> DirSQLConfig
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
```typescript [TypeScript]
|
|
157
|
+
JSON.stringify(db) // via db.toJSON()
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
:::
|
|
161
|
+
|
|
162
|
+
Returns the resolved construction state as a JSON-compatible value with fields `root`, `tables`, `ignore`, `persist`, `persist_path` (camelCase `persistPath` in TypeScript). Each table is `{ ddl, glob, strict }`. Excludes the original `config` path (already merged into `root` / `tables` / `ignore`), per-table `extract`, and per-table `name`. Available immediately after construction in Python and TypeScript; Rust's sync `build()` returns a ready instance.
|
|
163
|
+
|
|
144
164
|
---
|
|
145
165
|
|
|
146
166
|
## Table
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dirsql",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.17",
|
|
4
4
|
"description": "Ephemeral SQL index over a local directory",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "https://github.com/thekevinscott/dirsql",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"bin": {
|
|
17
|
-
"dirsql": "dist/
|
|
17
|
+
"dirsql": "dist/cli/dirsql.js"
|
|
18
18
|
},
|
|
19
19
|
"files": [
|
|
20
20
|
"dist/",
|
|
@@ -177,10 +177,10 @@
|
|
|
177
177
|
"@biomejs/biome": "^1.9.0",
|
|
178
178
|
"@napi-rs/cli": "^3.0.0",
|
|
179
179
|
"@types/node": "^22.0.0",
|
|
180
|
+
"@vitest/coverage-v8": "^3.1.1",
|
|
180
181
|
"tsx": "^4.19.0",
|
|
181
182
|
"typescript": "^5.8.0",
|
|
182
183
|
"vitest": "^3.1.1",
|
|
183
|
-
"@vitest/coverage-v8": "^3.1.1",
|
|
184
184
|
"wireit": "^0.14.12"
|
|
185
185
|
},
|
|
186
186
|
"pnpm": {
|
|
@@ -189,16 +189,19 @@
|
|
|
189
189
|
"esbuild"
|
|
190
190
|
]
|
|
191
191
|
},
|
|
192
|
+
"dependencies": {
|
|
193
|
+
"smol-toml": "^1.6.1"
|
|
194
|
+
},
|
|
192
195
|
"optionalDependencies": {
|
|
193
|
-
"@dirsql/lib-linux-x64-gnu": "0.3.
|
|
194
|
-
"@dirsql/lib-linux-arm64-gnu": "0.3.
|
|
195
|
-
"@dirsql/lib-darwin-x64": "0.3.
|
|
196
|
-
"@dirsql/lib-darwin-arm64": "0.3.
|
|
197
|
-
"@dirsql/lib-win32-x64-msvc": "0.3.
|
|
198
|
-
"@dirsql/cli-linux-x64-gnu": "0.3.
|
|
199
|
-
"@dirsql/cli-linux-arm64-gnu": "0.3.
|
|
200
|
-
"@dirsql/cli-darwin-x64": "0.3.
|
|
201
|
-
"@dirsql/cli-darwin-arm64": "0.3.
|
|
202
|
-
"@dirsql/cli-win32-x64-msvc": "0.3.
|
|
196
|
+
"@dirsql/lib-linux-x64-gnu": "0.3.17",
|
|
197
|
+
"@dirsql/lib-linux-arm64-gnu": "0.3.17",
|
|
198
|
+
"@dirsql/lib-darwin-x64": "0.3.17",
|
|
199
|
+
"@dirsql/lib-darwin-arm64": "0.3.17",
|
|
200
|
+
"@dirsql/lib-win32-x64-msvc": "0.3.17",
|
|
201
|
+
"@dirsql/cli-linux-x64-gnu": "0.3.17",
|
|
202
|
+
"@dirsql/cli-linux-arm64-gnu": "0.3.17",
|
|
203
|
+
"@dirsql/cli-darwin-x64": "0.3.17",
|
|
204
|
+
"@dirsql/cli-darwin-arm64": "0.3.17",
|
|
205
|
+
"@dirsql/cli-win32-x64-msvc": "0.3.17"
|
|
203
206
|
}
|
|
204
207
|
}
|
package/dist/bin/die.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"die.d.ts","sourceRoot":"","sources":["../../src/bin/die.ts"],"names":[],"mappings":"AAGA,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,KAAK,CAGhD"}
|
package/dist/bin/main.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/bin/main.ts"],"names":[],"mappings":"AAOA,wBAAgB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,KAAK,CAMlE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platformKey.d.ts","sourceRoot":"","sources":["../../src/bin/platformKey.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platformKey.test.d.ts","sourceRoot":"","sources":["../../src/bin/platformKey.test.ts"],"names":[],"mappings":""}
|
|
File without changes
|
/package/dist/{bin → cli}/die.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|