leangraph 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +198 -118
  2. package/dist/auth.d.ts +1 -4
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +3 -13
  5. package/dist/auth.js.map +1 -1
  6. package/dist/backup.d.ts +1 -3
  7. package/dist/backup.d.ts.map +1 -1
  8. package/dist/backup.js +10 -15
  9. package/dist/backup.js.map +1 -1
  10. package/dist/cli-helpers.d.ts +2 -3
  11. package/dist/cli-helpers.d.ts.map +1 -1
  12. package/dist/cli-helpers.js +11 -30
  13. package/dist/cli-helpers.js.map +1 -1
  14. package/dist/cli.js +82 -129
  15. package/dist/cli.js.map +1 -1
  16. package/dist/db.d.ts +8 -2
  17. package/dist/db.d.ts.map +1 -1
  18. package/dist/db.js +34 -8
  19. package/dist/db.js.map +1 -1
  20. package/dist/executor.d.ts +6 -0
  21. package/dist/executor.d.ts.map +1 -1
  22. package/dist/executor.js +92 -22
  23. package/dist/executor.js.map +1 -1
  24. package/dist/index.d.ts +8 -34
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +20 -37
  27. package/dist/index.js.map +1 -1
  28. package/dist/local.d.ts +3 -3
  29. package/dist/local.d.ts.map +1 -1
  30. package/dist/local.js +13 -15
  31. package/dist/local.js.map +1 -1
  32. package/dist/remote.d.ts +3 -3
  33. package/dist/remote.d.ts.map +1 -1
  34. package/dist/remote.js +8 -10
  35. package/dist/remote.js.map +1 -1
  36. package/dist/routes.d.ts +0 -1
  37. package/dist/routes.d.ts.map +1 -1
  38. package/dist/routes.js +12 -39
  39. package/dist/routes.js.map +1 -1
  40. package/dist/server.js +1 -1
  41. package/dist/server.js.map +1 -1
  42. package/dist/translator.d.ts.map +1 -1
  43. package/dist/translator.js +85 -32
  44. package/dist/translator.js.map +1 -1
  45. package/dist/types.d.ts +24 -26
  46. package/dist/types.d.ts.map +1 -1
  47. package/dist/types.js +2 -2
  48. package/dist/types.js.map +1 -1
  49. package/package.json +16 -3
package/README.md CHANGED
@@ -8,40 +8,40 @@ A lightweight, embeddable graph database with **full Cypher query support**, pow
8
8
 
9
9
  > **100% openCypher TCK Compliance** — LeanGraph passes all 2,684 test scenarios from the openCypher Technology Compatibility Kit (Neo4j 3.5 baseline). Every Cypher feature that Neo4j 3.5 supports, LeanGraph supports.
10
10
 
11
- ## Installation
12
-
13
- ```bash
14
- npm install leangraph
15
- ```
16
-
17
- ### Native Dependencies
11
+ ## Why LeanGraph?
18
12
 
19
- The `better-sqlite3` native module is an **optional dependency**:
13
+ | Feature | LeanGraph | Neo4j |
14
+ |---------|-----------|-------|
15
+ | **Startup time** | Instant | 30+ seconds |
16
+ | **Memory** | ~50MB | 1GB+ minimum |
17
+ | **Deployment** | Single npm package | JVM + complex setup |
18
+ | **Docker required** | No | Typically yes |
19
+ | **Works offline** | Yes | Server required |
20
+ | **Backup** | Copy the SQLite file | Enterprise license |
21
+ | **Cypher support** | Full (Neo4j 3.5 parity) | Full |
22
+ | **Cost** | Free, MIT license | Free tier limited |
20
23
 
21
- - **Production mode** (remote HTTP client): No native dependencies, no compilation required
22
- - **Development mode** (local SQLite): Requires `better-sqlite3`
24
+ LeanGraph is ideal for:
25
+ - Production graph workloads with zero infrastructure
26
+ - Neo4j-level queries without Neo4j-level complexity
27
+ - Self-hosted apps where simplicity is a feature
28
+ - Instant local databases for development and testing
23
29
 
24
- If you only connect to a remote GraphDB server, you can skip native compilation entirely:
30
+ ## Installation
25
31
 
26
32
  ```bash
27
- npm install leangraph --ignore-optional
33
+ npm install leangraph
34
+ npm install -D better-sqlite3
28
35
  ```
29
36
 
30
- For local/embedded mode, ensure `better-sqlite3` is installed:
31
-
32
- ```bash
33
- npm install leangraph better-sqlite3
34
- ```
37
+ `better-sqlite3` is only needed for local and test modes. Production deployments using remote mode don't require it, keeping your `node_modules` lean and avoiding native rebuilds.
35
38
 
36
39
  ## Quick Start
37
40
 
38
41
  ```typescript
39
- import { GraphDB } from 'leangraph';
42
+ import { LeanGraph } from 'leangraph';
40
43
 
41
- const db = await GraphDB({
42
- project: 'myapp', // or process.env.GRAPHDB_PROJECT
43
- apiKey: 'lg_xxx', // or process.env.GRAPHDB_API_KEY
44
- });
44
+ const db = await LeanGraph({ project: 'myapp' });
45
45
 
46
46
  // Create nodes and relationships
47
47
  await db.execute(`
@@ -55,89 +55,77 @@ console.log(users); // [{ name: 'Alice' }, { name: 'Bob' }]
55
55
  db.close();
56
56
  ```
57
57
 
58
- ## Development vs Production Mode
58
+ ## Modes
59
59
 
60
- LeanGraph automatically adapts based on the `NODE_ENV` environment variable:
60
+ | Mode | `LEANGRAPH_MODE` | Behavior |
61
+ |------|------------------|----------|
62
+ | **Local** | unset or `local` | Embedded SQLite at `./data/{project}.db` |
63
+ | **Remote** | `remote` | HTTP connection to LeanGraph server |
64
+ | **Test** | `test` | In-memory SQLite (resets on restart) |
61
65
 
62
- | Mode | `NODE_ENV` | Behavior |
63
- |------|-----------|----------|
64
- | **Development** | `development` | Uses local SQLite database. `url` and `apiKey` are ignored. |
65
- | **Production** | `production` (or unset) | Connects to remote server via HTTP. `url` and `apiKey` are required. |
66
+ ### Local Mode (default)
66
67
 
67
- This means you can use the **exact same code** in both environments:
68
+ Uses an embedded SQLite database. No server required.
68
69
 
69
70
  ```typescript
70
- // Works in both development and production!
71
- const db = await GraphDB({ project: 'myapp' });
71
+ const db = await LeanGraph({ project: 'myapp' });
72
+ // Data persists at ./data/myapp.db
72
73
  ```
73
74
 
74
- ### Development Mode
75
+ ### Remote Mode
75
76
 
76
- When `NODE_ENV=development`:
77
- - A local SQLite database is created automatically
78
- - No server setup required
79
- - `url` and `apiKey` parameters are ignored
80
- - Data persists at `./data/{env}/{project}.db` by default
77
+ Your code can stay identical for local development and production. Just configure environment variables:
81
78
 
79
+ **.env**
82
80
  ```bash
83
- # Run your app in development mode
84
- NODE_ENV=development node app.js
81
+ LEANGRAPH_MODE=remote
82
+ LEANGRAPH_API_KEY=lg_xxx
85
83
  ```
86
84
 
87
- ### Production Mode
88
-
89
- When `NODE_ENV=production` (or unset):
90
- - Connects to a remote GraphDB server via HTTP
91
- - `url` and `apiKey` are required
92
-
93
- ```bash
94
- # Run your app in production mode
95
- NODE_ENV=production GRAPHDB_API_KEY=xxx node app.js
85
+ ```typescript
86
+ // Same code works locally (dev) and remotely (production)
87
+ const db = await LeanGraph({ project: 'myapp' });
96
88
  ```
97
89
 
98
- ## Configuration Options
90
+ When `LEANGRAPH_MODE=remote` is set, LeanGraph automatically connects via HTTP instead of embedded LeanGraph.
99
91
 
100
- | Option | Type | Required | Default | Description |
101
- |--------|------|----------|---------|-------------|
102
- | `url` | `string` | No | `GRAPHDB_URL` or `https://leangraph.io` | Base URL of the GraphDB server (production only) |
103
- | `project` | `string` | Yes | `GRAPHDB_PROJECT` | Project name |
104
- | `apiKey` | `string` | No | `GRAPHDB_API_KEY` | API key for authentication (production only) |
105
- | `env` | `string` | No | `NODE_ENV` or `production` | Environment (determines database isolation) |
106
- | `dataPath` | `string` | No | `GRAPHDB_DATA_PATH` or `./data` | Path for local data storage (development only). Use `':memory:'` for in-memory database |
92
+ > **Tip:** Remote mode doesn't use `better-sqlite3`, so installing it as a dev dependency speeds up production deploys by skipping native module compilation.
107
93
 
108
- ### Examples
94
+ ### Test Mode
109
95
 
110
- **Production** (default when `NODE_ENV` is unset or `production`):
111
- ```typescript
112
- const db = await GraphDB({
113
- project: 'myapp', // or process.env.GRAPHDB_PROJECT
114
- apiKey: 'lg_xxx', // or process.env.GRAPHDB_API_KEY
115
- url: 'https://my-server', // or process.env.GRAPHDB_URL (default: leangraph.io)
116
- });
117
- ```
96
+ Uses an in-memory SQLite database that resets when the process exits.
118
97
 
119
- **Development** (when `NODE_ENV=development`):
120
98
  ```typescript
121
- const db = await GraphDB({
122
- project: 'myapp', // or process.env.GRAPHDB_PROJECT
123
- dataPath: './local-data', // or process.env.GRAPHDB_DATA_PATH (default: ./data)
124
- });
125
- // url and apiKey are ignored - uses local SQLite
99
+ const db = await LeanGraph({ mode: 'test', project: 'myapp' });
126
100
  ```
127
101
 
128
- **Testing** (when `NODE_ENV=development`):
102
+ ## Configuration
103
+
129
104
  ```typescript
130
- const db = await GraphDB({
131
- project: 'test-project',
132
- dataPath: ':memory:', // in-memory database, resets on each run
133
- });
105
+ interface LeanGraphOptions {
106
+ mode?: "local" | "remote" | "test";
107
+ project?: string;
108
+ url?: string;
109
+ apiKey?: string;
110
+ dataPath?: string;
111
+ }
134
112
  ```
135
113
 
114
+ | Option | Environment Variable | Default | Description |
115
+ |--------|---------------------|---------|-------------|
116
+ | `mode` | `LEANGRAPH_MODE` | `"local"` | `local`, `remote`, or `test` |
117
+ | `project` | `LEANGRAPH_PROJECT` | — | Project name (required) |
118
+ | `url` | `LEANGRAPH_URL` | `"https://leangraph.io"` | Server URL (remote mode) |
119
+ | `apiKey` | `LEANGRAPH_API_KEY` | — | API key (remote mode) |
120
+ | `dataPath` | `LEANGRAPH_DATA_PATH` | `"./data"` | Data directory (local mode) |
121
+
122
+ Options passed to `LeanGraph()` take precedence over environment variables.
123
+
136
124
  ## API Reference
137
125
 
138
- ### `GraphDB(options): Promise<GraphDBClient>`
126
+ ### `LeanGraph(options): Promise<LeanGraphClient>`
139
127
 
140
- Create a new GraphDB client. Returns a promise that resolves to a client instance.
128
+ Create a new LeanGraph client. Returns a promise that resolves to a client instance.
141
129
 
142
130
  ### `db.query<T>(cypher, params?): Promise<T[]>`
143
131
 
@@ -173,66 +161,173 @@ console.log(response.meta.time_ms); // Query execution time in ms
173
161
  console.log(response.data); // Array of results
174
162
  ```
175
163
 
176
- ### `db.createNode(label, properties?): Promise<string>`
164
+ ### Convenience Methods
177
165
 
178
- Create a node and return its ID.
166
+ Thin wrappers around common Cypher operations:
179
167
 
180
168
  ```typescript
181
- const userId = await db.createNode('User', { name: 'Alice', email: 'alice@example.com' });
169
+ db.createNode(label, properties?): Promise<string>
170
+ db.getNode(label, filter): Promise<Record<string, unknown> | null>
171
+ db.updateNode(id, properties): Promise<void>
172
+ db.deleteNode(id): Promise<void>
173
+ db.createEdge(sourceId, type, targetId, properties?): Promise<void>
182
174
  ```
183
175
 
184
- ### `db.getNode(label, filter): Promise<Record<string, unknown> | null>`
176
+ ### `db.health(): Promise<{ status: string; timestamp: string }>`
177
+
178
+ Check server health. In development mode, always returns `{ status: 'ok', ... }`.
179
+
180
+ ### `db.close(): void`
185
181
 
186
- Find a node by label and properties.
182
+ Close the client and release resources. **Always call this when done.**
187
183
 
188
184
  ```typescript
189
- const user = await db.getNode('User', { email: 'alice@example.com' });
190
- if (user) {
191
- console.log(user.name); // 'Alice'
185
+ const db = await LeanGraph({ ... });
186
+ try {
187
+ // ... use db
188
+ } finally {
189
+ db.close();
192
190
  }
193
191
  ```
194
192
 
195
- ### `db.updateNode(id, properties): Promise<void>`
193
+ ## Common Patterns
196
194
 
197
- Update properties on a node.
195
+ ### CRUD Operations
198
196
 
199
197
  ```typescript
200
- await db.updateNode(userId, { name: 'Alice Smith', verified: true });
198
+ // Create
199
+ await db.execute(
200
+ 'CREATE (u:User {name: $name, email: $email})',
201
+ { name: 'Alice', email: 'alice@example.com' }
202
+ );
203
+
204
+ // Read
205
+ const [user] = await db.query<{ name: string; email: string }>(
206
+ 'MATCH (u:User {email: $email}) RETURN u.name AS name, u.email AS email',
207
+ { email: 'alice@example.com' }
208
+ );
209
+
210
+ // Update
211
+ await db.execute(
212
+ 'MATCH (u:User {email: $email}) SET u.verified = true',
213
+ { email: 'alice@example.com' }
214
+ );
215
+
216
+ // Delete
217
+ await db.execute(
218
+ 'MATCH (u:User {email: $email}) DETACH DELETE u',
219
+ { email: 'alice@example.com' }
220
+ );
201
221
  ```
202
222
 
203
- ### `db.deleteNode(id): Promise<void>`
223
+ ### Parameterized Queries
204
224
 
205
- Delete a node and all its relationships (DETACH DELETE).
225
+ Always use parameters for user input:
206
226
 
207
227
  ```typescript
208
- await db.deleteNode(userId);
228
+ // Good - parameterized
229
+ const users = await db.query(
230
+ 'MATCH (u:User) WHERE u.email = $email RETURN u',
231
+ { email: userInput }
232
+ );
233
+
234
+ // Bad - string interpolation (injection risk)
235
+ const users = await db.query(`MATCH (u:User) WHERE u.email = '${userInput}' RETURN u`);
209
236
  ```
210
237
 
211
- ### `db.createEdge(sourceId, type, targetId, properties?): Promise<void>`
238
+ ### Typed Results
239
+
240
+ ```typescript
241
+ interface User {
242
+ name: string;
243
+ email: string;
244
+ }
245
+
246
+ const users = await db.query<User>(
247
+ 'MATCH (u:User) RETURN u.name AS name, u.email AS email'
248
+ );
249
+
250
+ users[0].name; // TypeScript knows this is string
251
+ ```
212
252
 
213
- Create a relationship between two nodes.
253
+ ### Relationships
214
254
 
215
255
  ```typescript
216
- await db.createEdge(aliceId, 'FOLLOWS', bobId, { since: '2024-01-01' });
256
+ // Create a relationship
257
+ await db.execute(`
258
+ MATCH (a:User {name: $from}), (b:User {name: $to})
259
+ CREATE (a)-[:FOLLOWS {since: $since}]->(b)
260
+ `, { from: 'Alice', to: 'Bob', since: '2024-01-01' });
261
+
262
+ // Query relationships
263
+ const following = await db.query<{ name: string }>(`
264
+ MATCH (:User {name: $name})-[:FOLLOWS]->(friend:User)
265
+ RETURN friend.name AS name
266
+ `, { name: 'Alice' });
267
+
268
+ // Variable-length paths (1-3 hops)
269
+ const connections = await db.query<{ name: string }>(`
270
+ MATCH (:User {name: $name})-[:FOLLOWS*1..3]->(connection:User)
271
+ RETURN DISTINCT connection.name AS name
272
+ `, { name: 'Alice' });
217
273
  ```
218
274
 
219
- ### `db.health(): Promise<{ status: string; timestamp: string }>`
275
+ ### Upsert with MERGE
220
276
 
221
- Check server health. In development mode, always returns `{ status: 'ok', ... }`.
277
+ ```typescript
278
+ await db.execute(`
279
+ MERGE (u:User {email: $email})
280
+ ON CREATE SET u.name = $name, u.createdAt = datetime()
281
+ ON MATCH SET u.lastSeen = datetime()
282
+ `, { email: 'alice@example.com', name: 'Alice' });
283
+ ```
222
284
 
223
- ### `db.close(): void`
285
+ ### Batch Insert with UNWIND
224
286
 
225
- Close the client and release resources. **Always call this when done.**
287
+ ```typescript
288
+ const users = [
289
+ { name: 'Alice', email: 'alice@example.com' },
290
+ { name: 'Bob', email: 'bob@example.com' },
291
+ ];
292
+
293
+ await db.execute(`
294
+ UNWIND $users AS data
295
+ CREATE (u:User {name: data.name, email: data.email})
296
+ `, { users });
297
+ ```
298
+
299
+ ### Error Handling
226
300
 
227
301
  ```typescript
228
- const db = await GraphDB({ ... });
302
+ import { LeanGraph, LeanGraphError } from 'leangraph';
303
+
229
304
  try {
230
- // ... use db
231
- } finally {
232
- db.close();
305
+ await db.query('MATCH (n:User RETURN n'); // syntax error
306
+ } catch (err) {
307
+ if (err instanceof LeanGraphError) {
308
+ console.error(`Query failed: ${err.message}`);
309
+ console.error(`Position: line ${err.line}, column ${err.column}`);
310
+ }
233
311
  }
234
312
  ```
235
313
 
314
+ ### Testing
315
+
316
+ Use test mode for fast, isolated tests:
317
+
318
+ ```typescript
319
+ import { LeanGraph } from 'leangraph';
320
+
321
+ const db = await LeanGraph({ mode: 'test', project: 'test' });
322
+
323
+ // Tests run against in-memory database
324
+ await db.execute('CREATE (u:User {name: $name})', { name: 'Test' });
325
+ const [user] = await db.query('MATCH (u:User) RETURN u.name AS name');
326
+ assert(user.name === 'Test');
327
+
328
+ db.close(); // In-memory DB is discarded
329
+ ```
330
+
236
331
  ## Cypher Quick Reference
237
332
 
238
333
  ### Supported Clauses
@@ -363,22 +458,7 @@ leangraph apikey list
363
458
  leangraph apikey remove <prefix>
364
459
  ```
365
460
 
366
- ## Why LeanGraph?
367
461
 
368
- | Feature | LeanGraph | Neo4j |
369
- |---------|-----------------|-------|
370
- | **Deployment** | Single package, zero config | Complex setup, JVM required |
371
- | **Development** | Local SQLite, no server needed | Server required |
372
- | **Backup** | Just copy the SQLite file | Enterprise license required |
373
- | **Resource usage** | ~50MB RAM | 1GB+ RAM minimum |
374
- | **Cypher support** | Full (Neo4j 3.5 parity) | Full |
375
- | **Cost** | Free, MIT license | Free tier limited |
376
-
377
- LeanGraph is ideal for:
378
- - Applications needing graph queries without ops burden
379
- - Projects that outgrow JSON but don't need a full graph database
380
- - Self-hosted deployments where simplicity matters
381
- - Development and testing with instant local databases
382
462
 
383
463
  ## Advanced Usage
384
464
 
package/dist/auth.d.ts CHANGED
@@ -1,19 +1,16 @@
1
1
  import { Context, Next } from "hono";
2
2
  export interface ApiKeyConfig {
3
3
  project?: string;
4
- env?: string;
5
4
  admin?: boolean;
6
5
  }
7
6
  export interface ValidationResult {
8
7
  valid: boolean;
9
8
  project?: string;
10
- env?: string;
11
9
  admin?: boolean;
12
10
  }
13
11
  export interface KeyInfo {
14
12
  prefix: string;
15
13
  project?: string;
16
- env?: string;
17
14
  admin?: boolean;
18
15
  }
19
16
  export declare class ApiKeyStore {
@@ -48,7 +45,7 @@ export declare class ApiKeyStore {
48
45
  *
49
46
  * - Skips authentication for /health endpoint
50
47
  * - Requires Bearer token in Authorization header
51
- * - Checks project/env restrictions for /query endpoints
48
+ * - Checks project restrictions for /query endpoints
52
49
  * - Requires admin flag for /admin endpoints
53
50
  */
54
51
  export declare function authMiddleware(store: ApiKeyStore): (c: Context, next: Next) => Promise<void | (Response & import("hono").TypedResponse<{
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAMrC,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAwC;IAEpD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAI/C;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB;IAevC;;OAEG;IACH,QAAQ,IAAI,OAAO,EAAE;IAerB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI;CAKnD;AAMD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,IACjC,GAAG,OAAO,EAAE,MAAM,IAAI;;;;;;;;;;kBA0FrC;AAMD,wBAAgB,cAAc,IAAI,MAAM,CASvC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAMrC,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAwC;IAEpD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAI/C;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB;IAcvC;;OAEG;IACH,QAAQ,IAAI,OAAO,EAAE;IAcrB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI;CAKnD;AAMD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,IACjC,GAAG,OAAO,EAAE,MAAM,IAAI;;;;;;;;;;kBA8ErC;AAMD,wBAAgB,cAAc,IAAI,MAAM,CASvC"}
package/dist/auth.js CHANGED
@@ -27,7 +27,6 @@ export class ApiKeyStore {
27
27
  return {
28
28
  valid: true,
29
29
  project: config.project,
30
- env: config.env,
31
30
  admin: config.admin,
32
31
  };
33
32
  }
@@ -40,7 +39,6 @@ export class ApiKeyStore {
40
39
  result.push({
41
40
  prefix: key.slice(0, 4) + "...",
42
41
  project: config.project,
43
- env: config.env,
44
42
  admin: config.admin,
45
43
  });
46
44
  }
@@ -69,7 +67,7 @@ export class ApiKeyStore {
69
67
  *
70
68
  * - Skips authentication for /health endpoint
71
69
  * - Requires Bearer token in Authorization header
72
- * - Checks project/env restrictions for /query endpoints
70
+ * - Checks project restrictions for /query endpoints
73
71
  * - Requires admin flag for /admin endpoints
74
72
  */
75
73
  export function authMiddleware(store) {
@@ -109,11 +107,10 @@ export function authMiddleware(store) {
109
107
  error: { message: "Admin access required for this endpoint" },
110
108
  }, 403);
111
109
  }
112
- // Check project/env restrictions for query endpoints
110
+ // Check project restrictions for query endpoints
113
111
  if (path.startsWith("/query/")) {
114
112
  const parts = path.split("/");
115
- const env = parts[2];
116
- const project = parts[3];
113
+ const project = parts[2];
117
114
  // Check project restriction
118
115
  if (validation.project && validation.project !== project) {
119
116
  return c.json({
@@ -121,13 +118,6 @@ export function authMiddleware(store) {
121
118
  error: { message: `Access denied for project: ${project}` },
122
119
  }, 403);
123
120
  }
124
- // Check environment restriction
125
- if (validation.env && validation.env !== env) {
126
- return c.json({
127
- success: false,
128
- error: { message: `Access denied for environment: ${env}` },
129
- }, 403);
130
- }
131
121
  }
132
122
  // Store validation result in context for later use
133
123
  c.set("auth", validation);
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/backup.d.ts CHANGED
@@ -15,7 +15,6 @@ export interface BackupStatus {
15
15
  newestBackup?: string;
16
16
  }
17
17
  export interface BackupAllOptions {
18
- includeTest?: boolean;
19
18
  }
20
19
  export declare class BackupManager {
21
20
  private backupDir;
@@ -27,9 +26,8 @@ export declare class BackupManager {
27
26
  backupDatabase(sourcePath: string, project: string): Promise<BackupResult>;
28
27
  /**
29
28
  * Backup all databases in a data directory.
30
- * By default, only backs up production databases.
31
29
  */
32
- backupAll(dataDir: string, options?: BackupAllOptions): Promise<BackupResult[]>;
30
+ backupAll(dataDir: string, _options?: BackupAllOptions): Promise<BackupResult[]>;
33
31
  /**
34
32
  * List all backups for a specific project, sorted by date (newest first).
35
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAMD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM;IAI7B;;;OAGG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsDhF;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwBzF;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAYtC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAuB3D;;OAEG;IACH,eAAe,IAAI,YAAY;IA4C/B;;OAEG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;CAqCxE"}
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;CAEhC;AAMD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM;IAI7B;;;OAGG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsDhF;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,gBAAqB,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;IAmB1B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAYtC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAuB3D;;OAEG;IACH,eAAe,IAAI,YAAY;IA4C/B;;OAEG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;CAqCxE"}
package/dist/backup.js CHANGED
@@ -64,23 +64,18 @@ export class BackupManager {
64
64
  }
65
65
  /**
66
66
  * Backup all databases in a data directory.
67
- * By default, only backs up production databases.
68
67
  */
69
- async backupAll(dataDir, options = {}) {
68
+ async backupAll(dataDir, _options = {}) {
70
69
  const results = [];
71
- const envs = options.includeTest ? ["production", "test"] : ["production"];
72
- for (const env of envs) {
73
- const envPath = path.join(dataDir, env);
74
- if (!fs.existsSync(envPath)) {
75
- continue;
76
- }
77
- const files = fs.readdirSync(envPath).filter(f => f.endsWith(".db"));
78
- for (const file of files) {
79
- const project = file.replace(".db", "");
80
- const sourcePath = path.join(envPath, file);
81
- const result = await this.backupDatabase(sourcePath, project);
82
- results.push(result);
83
- }
70
+ if (!fs.existsSync(dataDir)) {
71
+ return results;
72
+ }
73
+ const files = fs.readdirSync(dataDir).filter((f) => f.endsWith(".db"));
74
+ for (const file of files) {
75
+ const project = file.replace(".db", "");
76
+ const sourcePath = path.join(dataDir, file);
77
+ const result = await this.backupDatabase(sourcePath, project);
78
+ results.push(result);
84
79
  }
85
80
  return results;
86
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,oDAAoD;AAEpD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AA4B7B,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,OAAO,aAAa;IAChB,SAAS,CAAS;IAE1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,OAAe;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,sBAAsB;QACtB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO;gBACP,UAAU;gBACV,KAAK,EAAE,8BAA8B,UAAU,EAAE;aAClD,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,kFAAkF;QAClF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,MAAM,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,GAAG,OAAO,IAAI,SAAS,IAAI,EAAE,KAAK,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9D,uDAAuD;YACvD,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAClC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEjB,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,UAAU;gBACV,UAAU;gBACV,UAAU;gBACV,SAAS,EAAE,KAAK,CAAC,IAAI;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO;gBACP,UAAU;gBACV,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,UAA4B,EAAE;QAC7D,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAE3E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAExC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC7D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC;QAEzE,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,OAAe,EAAE,SAAiB;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,OAAO;gBACL,YAAY,EAAE,CAAC;gBACf,cAAc,EAAE,CAAC;gBACjB,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,YAAgC,CAAC;QACrC,IAAI,YAAgC,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,oEAAoE;YACpE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACrD,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC;YAE7B,0BAA0B;YAC1B,IAAI,CAAC,YAAY,IAAI,IAAI,GAAG,YAAY,EAAE,CAAC;gBACzC,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,YAAY,IAAI,IAAI,GAAG,YAAY,EAAE,CAAC;gBACzC,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,cAAc;YACd,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;YACrC,YAAY;YACZ,YAAY;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,cAAsB,EAAE,UAAkB;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,qBAAqB,cAAc,EAAE;aAC7C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,wBAAwB;YACxB,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAExC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,UAAU;gBACtB,UAAU,EAAE,UAAU;aACvB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  export interface ApiKeyConfig {
2
2
  project?: string;
3
- env?: string;
4
3
  admin?: boolean;
5
4
  }
6
5
  export declare function formatBytes(bytes: number): string;
@@ -11,7 +10,7 @@ export declare function saveApiKeys(dataPath: string, keys: Record<string, ApiKe
11
10
  export declare function ensureDataDir(dataPath: string): void;
12
11
  export declare function formatTableRow(columns: string[], row: Record<string, unknown>, widths: Record<string, number>): string;
13
12
  export declare function calculateColumnWidths(columns: string[], rows: Record<string, unknown>[], maxWidth?: number): Record<string, number>;
14
- export declare function listProjects(dataPath: string): Map<string, string[]>;
15
- export declare function projectExists(dataPath: string, project: string, env?: string): boolean;
13
+ export declare function listProjects(dataPath: string): string[];
14
+ export declare function projectExists(dataPath: string, project: string): boolean;
16
15
  export declare function getProjectKeyCount(keys: Record<string, ApiKeyConfig>, project: string): number;
17
16
  //# sourceMappingURL=cli-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-helpers.d.ts","sourceRoot":"","sources":["../src/cli-helpers.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKhD;AAMD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAU1E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAGtF;AAMD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAWpD;AAMD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAOR;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,QAAQ,GAAE,MAAW,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBxB;AAMD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAkBpE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAWtF;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,MAAM,CAER"}
1
+ {"version":3,"file":"cli-helpers.d.ts","sourceRoot":"","sources":["../src/cli-helpers.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKhD;AAMD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAU1E;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACjC,IAAI,CAGN;AAMD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIpD;AAMD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAOR;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,QAAQ,GAAE,MAAW,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBxB;AAMD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CASvD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGxE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,MAAM,CAGR"}