leangraph 1.0.1 → 1.1.1

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 (54) hide show
  1. package/README.md +198 -111
  2. package/dist/auth.d.ts +1 -4
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +5 -15
  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 +9 -2
  17. package/dist/db.d.ts.map +1 -1
  18. package/dist/db.js +82 -9
  19. package/dist/db.js.map +1 -1
  20. package/dist/executor.d.ts +114 -0
  21. package/dist/executor.d.ts.map +1 -1
  22. package/dist/executor.js +1248 -341
  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 +12 -38
  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/parser.d.ts +15 -3
  33. package/dist/parser.d.ts.map +1 -1
  34. package/dist/parser.js +231 -42
  35. package/dist/parser.js.map +1 -1
  36. package/dist/remote.d.ts +3 -3
  37. package/dist/remote.d.ts.map +1 -1
  38. package/dist/remote.js +8 -10
  39. package/dist/remote.js.map +1 -1
  40. package/dist/routes.d.ts +0 -1
  41. package/dist/routes.d.ts.map +1 -1
  42. package/dist/routes.js +15 -39
  43. package/dist/routes.js.map +1 -1
  44. package/dist/server.js +1 -1
  45. package/dist/server.js.map +1 -1
  46. package/dist/translator.d.ts +36 -0
  47. package/dist/translator.d.ts.map +1 -1
  48. package/dist/translator.js +634 -136
  49. package/dist/translator.js.map +1 -1
  50. package/dist/types.d.ts +24 -26
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js +2 -2
  53. package/dist/types.js.map +1 -1
  54. package/package.json +8 -2
package/README.md CHANGED
@@ -8,33 +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
11
+ ## Why LeanGraph?
12
12
 
13
- ### Remote Mode (Production)
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 |
14
23
 
15
- For connecting to a remote LeanGraph server, no native dependencies are needed:
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
29
+
30
+ ## Installation
16
31
 
17
32
  ```bash
18
33
  npm install leangraph
34
+ npm install -D better-sqlite3
19
35
  ```
20
36
 
21
- ### Local Mode (Development)
22
-
23
- For local embedded mode with SQLite, also install `better-sqlite3`:
24
-
25
- ```bash
26
- npm install leangraph better-sqlite3
27
- ```
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.
28
38
 
29
39
  ## Quick Start
30
40
 
31
41
  ```typescript
32
- import { GraphDB } from 'leangraph';
42
+ import { LeanGraph } from 'leangraph';
33
43
 
34
- const db = await GraphDB({
35
- project: 'myapp', // or process.env.GRAPHDB_PROJECT
36
- apiKey: 'lg_xxx', // or process.env.GRAPHDB_API_KEY
37
- });
44
+ const db = await LeanGraph({ project: 'myapp' });
38
45
 
39
46
  // Create nodes and relationships
40
47
  await db.execute(`
@@ -48,89 +55,77 @@ console.log(users); // [{ name: 'Alice' }, { name: 'Bob' }]
48
55
  db.close();
49
56
  ```
50
57
 
51
- ## Development vs Production Mode
58
+ ## Modes
52
59
 
53
- 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) |
54
65
 
55
- | Mode | `NODE_ENV` | Behavior |
56
- |------|-----------|----------|
57
- | **Development** | `development` | Uses local SQLite database. `url` and `apiKey` are ignored. |
58
- | **Production** | `production` (or unset) | Connects to remote server via HTTP. `url` and `apiKey` are required. |
66
+ ### Local Mode (default)
59
67
 
60
- This means you can use the **exact same code** in both environments:
68
+ Uses an embedded SQLite database. No server required.
61
69
 
62
70
  ```typescript
63
- // Works in both development and production!
64
- const db = await GraphDB({ project: 'myapp' });
71
+ const db = await LeanGraph({ project: 'myapp' });
72
+ // Data persists at ./data/myapp.db
65
73
  ```
66
74
 
67
- ### Development Mode
75
+ ### Remote Mode
68
76
 
69
- When `NODE_ENV=development`:
70
- - A local SQLite database is created automatically
71
- - No server setup required
72
- - `url` and `apiKey` parameters are ignored
73
- - Data persists at `./data/{env}/{project}.db` by default
77
+ Your code can stay identical for local development and production. Just configure environment variables:
74
78
 
79
+ **.env**
75
80
  ```bash
76
- # Run your app in development mode
77
- NODE_ENV=development node app.js
81
+ LEANGRAPH_MODE=remote
82
+ LEANGRAPH_API_KEY=lg_xxx
78
83
  ```
79
84
 
80
- ### Production Mode
81
-
82
- When `NODE_ENV=production` (or unset):
83
- - Connects to a remote GraphDB server via HTTP
84
- - `url` and `apiKey` are required
85
-
86
- ```bash
87
- # Run your app in production mode
88
- 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' });
89
88
  ```
90
89
 
91
- ## Configuration Options
90
+ When `LEANGRAPH_MODE=remote` is set, LeanGraph automatically connects via HTTP instead of embedded LeanGraph.
92
91
 
93
- | Option | Type | Required | Default | Description |
94
- |--------|------|----------|---------|-------------|
95
- | `url` | `string` | No | `GRAPHDB_URL` or `https://leangraph.io` | Base URL of the GraphDB server (production only) |
96
- | `project` | `string` | Yes | `GRAPHDB_PROJECT` | Project name |
97
- | `apiKey` | `string` | No | `GRAPHDB_API_KEY` | API key for authentication (production only) |
98
- | `env` | `string` | No | `NODE_ENV` or `production` | Environment (determines database isolation) |
99
- | `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.
100
93
 
101
- ### Examples
94
+ ### Test Mode
102
95
 
103
- **Production** (default when `NODE_ENV` is unset or `production`):
104
- ```typescript
105
- const db = await GraphDB({
106
- project: 'myapp', // or process.env.GRAPHDB_PROJECT
107
- apiKey: 'lg_xxx', // or process.env.GRAPHDB_API_KEY
108
- url: 'https://my-server', // or process.env.GRAPHDB_URL (default: leangraph.io)
109
- });
110
- ```
96
+ Uses an in-memory SQLite database that resets when the process exits.
111
97
 
112
- **Development** (when `NODE_ENV=development`):
113
98
  ```typescript
114
- const db = await GraphDB({
115
- project: 'myapp', // or process.env.GRAPHDB_PROJECT
116
- dataPath: './local-data', // or process.env.GRAPHDB_DATA_PATH (default: ./data)
117
- });
118
- // url and apiKey are ignored - uses local SQLite
99
+ const db = await LeanGraph({ mode: 'test', project: 'myapp' });
119
100
  ```
120
101
 
121
- **Testing** (when `NODE_ENV=development`):
102
+ ## Configuration
103
+
122
104
  ```typescript
123
- const db = await GraphDB({
124
- project: 'test-project',
125
- dataPath: ':memory:', // in-memory database, resets on each run
126
- });
105
+ interface LeanGraphOptions {
106
+ mode?: "local" | "remote" | "test";
107
+ project?: string;
108
+ url?: string;
109
+ apiKey?: string;
110
+ dataPath?: string;
111
+ }
127
112
  ```
128
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
+
129
124
  ## API Reference
130
125
 
131
- ### `GraphDB(options): Promise<GraphDBClient>`
126
+ ### `LeanGraph(options): Promise<LeanGraphClient>`
132
127
 
133
- 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.
134
129
 
135
130
  ### `db.query<T>(cypher, params?): Promise<T[]>`
136
131
 
@@ -166,66 +161,173 @@ console.log(response.meta.time_ms); // Query execution time in ms
166
161
  console.log(response.data); // Array of results
167
162
  ```
168
163
 
169
- ### `db.createNode(label, properties?): Promise<string>`
164
+ ### Convenience Methods
170
165
 
171
- Create a node and return its ID.
166
+ Thin wrappers around common Cypher operations:
172
167
 
173
168
  ```typescript
174
- 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>
175
174
  ```
176
175
 
177
- ### `db.getNode(label, filter): Promise<Record<string, unknown> | null>`
176
+ ### `db.health(): Promise<{ status: string; timestamp: string }>`
178
177
 
179
- Find a node by label and properties.
178
+ Check server health. In development mode, always returns `{ status: 'ok', ... }`.
179
+
180
+ ### `db.close(): void`
181
+
182
+ Close the client and release resources. **Always call this when done.**
180
183
 
181
184
  ```typescript
182
- const user = await db.getNode('User', { email: 'alice@example.com' });
183
- if (user) {
184
- console.log(user.name); // 'Alice'
185
+ const db = await LeanGraph({ ... });
186
+ try {
187
+ // ... use db
188
+ } finally {
189
+ db.close();
185
190
  }
186
191
  ```
187
192
 
188
- ### `db.updateNode(id, properties): Promise<void>`
193
+ ## Common Patterns
189
194
 
190
- Update properties on a node.
195
+ ### CRUD Operations
191
196
 
192
197
  ```typescript
193
- 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
+ );
194
221
  ```
195
222
 
196
- ### `db.deleteNode(id): Promise<void>`
223
+ ### Parameterized Queries
197
224
 
198
- Delete a node and all its relationships (DETACH DELETE).
225
+ Always use parameters for user input:
199
226
 
200
227
  ```typescript
201
- 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`);
202
236
  ```
203
237
 
204
- ### `db.createEdge(sourceId, type, targetId, properties?): Promise<void>`
238
+ ### Typed Results
205
239
 
206
- Create a relationship between two nodes.
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
+ ```
252
+
253
+ ### Relationships
207
254
 
208
255
  ```typescript
209
- 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' });
210
273
  ```
211
274
 
212
- ### `db.health(): Promise<{ status: string; timestamp: string }>`
275
+ ### Upsert with MERGE
213
276
 
214
- 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
+ ```
215
284
 
216
- ### `db.close(): void`
285
+ ### Batch Insert with UNWIND
217
286
 
218
- 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
219
300
 
220
301
  ```typescript
221
- const db = await GraphDB({ ... });
302
+ import { LeanGraph, LeanGraphError } from 'leangraph';
303
+
222
304
  try {
223
- // ... use db
224
- } finally {
225
- 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
+ }
226
311
  }
227
312
  ```
228
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
+
229
331
  ## Cypher Quick Reference
230
332
 
231
333
  ### Supported Clauses
@@ -356,22 +458,7 @@ leangraph apikey list
356
458
  leangraph apikey remove <prefix>
357
459
  ```
358
460
 
359
- ## Why LeanGraph?
360
-
361
- | Feature | LeanGraph | Neo4j |
362
- |---------|-----------------|-------|
363
- | **Deployment** | Single package, zero config | Complex setup, JVM required |
364
- | **Development** | Local SQLite, no server needed | Server required |
365
- | **Backup** | Just copy the SQLite file | Enterprise license required |
366
- | **Resource usage** | ~50MB RAM | 1GB+ RAM minimum |
367
- | **Cypher support** | Full (Neo4j 3.5 parity) | Full |
368
- | **Cost** | Free, MIT license | Free tier limited |
369
461
 
370
- LeanGraph is ideal for:
371
- - Applications needing graph queries without ops burden
372
- - Projects that outgrow JSON but don't need a full graph database
373
- - Self-hosted deployments where simplicity matters
374
- - Development and testing with instant local databases
375
462
 
376
463
  ## Advanced Usage
377
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,14 +67,14 @@ 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) {
76
74
  return async (c, next) => {
77
75
  const path = c.req.path;
78
- // Skip auth for health endpoint
79
- if (path === "/health") {
76
+ // Skip auth for health endpoints
77
+ if (path === "/health" || path === "/api/health") {
80
78
  return next();
81
79
  }
82
80
  // Get authorization header
@@ -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":"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"}
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"}