longcelot-sheet-db 0.1.11 → 0.1.13
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/API.md +222 -38
- package/CHANGELOG.md +55 -0
- package/dist/adapter/crud.d.ts +3 -3
- package/dist/adapter/crud.d.ts.map +1 -1
- package/dist/adapter/crud.js +6 -4
- package/dist/adapter/crud.js.map +1 -1
- package/dist/adapter/sheetAdapter.d.ts +4 -1
- package/dist/adapter/sheetAdapter.d.ts.map +1 -1
- package/dist/adapter/sheetAdapter.js +36 -8
- package/dist/adapter/sheetAdapter.js.map +1 -1
- package/dist/adapter/sheetClient.d.ts +4 -4
- package/dist/adapter/sheetClient.d.ts.map +1 -1
- package/dist/adapter/sheetClient.js.map +1 -1
- package/dist/auth/oauth.d.ts +3 -3
- package/dist/auth/oauth.d.ts.map +1 -1
- package/dist/cli/commands/export.d.ts +3 -0
- package/dist/cli/commands/export.d.ts.map +1 -1
- package/dist/cli/commands/export.js +2 -0
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +8 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +153 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/mock-users.d.ts.map +1 -1
- package/dist/cli/commands/mock-users.js +1 -2
- package/dist/cli/commands/mock-users.js.map +1 -1
- package/dist/cli/commands/seed.d.ts +3 -1
- package/dist/cli/commands/seed.d.ts.map +1 -1
- package/dist/cli/commands/seed.js +0 -1
- package/dist/cli/commands/seed.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +2 -3
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schema/columnBuilder.d.ts +2 -2
- package/dist/schema/columnBuilder.d.ts.map +1 -1
- package/dist/schema/columnBuilder.js.map +1 -1
- package/dist/schema/types.d.ts +11 -4
- package/dist/schema/types.d.ts.map +1 -1
- package/package.json +1 -1
package/API.md
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
- [CRUD Operations](#crud-operations)
|
|
9
9
|
- [Authentication](#authentication)
|
|
10
10
|
- [CLI Commands](#cli-commands)
|
|
11
|
+
- [Cross-Actor Operations](#cross-actor-operations)
|
|
12
|
+
- [Type Definitions](#type-definitions)
|
|
11
13
|
|
|
12
14
|
## Schema Definition
|
|
13
15
|
|
|
@@ -157,7 +159,9 @@ Creates a new sheet adapter instance.
|
|
|
157
159
|
clientSecret: string;
|
|
158
160
|
redirectUri: string;
|
|
159
161
|
};
|
|
160
|
-
tokens:
|
|
162
|
+
tokens: unknown; // OAuth tokens object
|
|
163
|
+
onSchemaMismatch?: 'warn' | 'error' | 'auto-sync';
|
|
164
|
+
permissions?: Record<string, ActorPermission>; // cross-actor permission matrix
|
|
161
165
|
}
|
|
162
166
|
```
|
|
163
167
|
|
|
@@ -207,7 +211,7 @@ adapter.registerSchemas([usersSchema, bookingsSchema, paymentsSchema]);
|
|
|
207
211
|
|
|
208
212
|
### `adapter.withContext(context)`
|
|
209
213
|
|
|
210
|
-
Creates a new adapter instance with user context.
|
|
214
|
+
Creates a new adapter instance with user context. Optionally starts an async schema version check when `onSchemaMismatch` is configured.
|
|
211
215
|
|
|
212
216
|
**Parameters:**
|
|
213
217
|
|
|
@@ -216,6 +220,9 @@ Creates a new adapter instance with user context.
|
|
|
216
220
|
userId: string;
|
|
217
221
|
role: string;
|
|
218
222
|
actorSheetId?: string;
|
|
223
|
+
// Cross-actor fields (see Cross-Actor Operations below)
|
|
224
|
+
targetRole?: string;
|
|
225
|
+
targetSheetId?: string;
|
|
219
226
|
}
|
|
220
227
|
```
|
|
221
228
|
|
|
@@ -226,11 +233,35 @@ Creates a new adapter instance with user context.
|
|
|
226
233
|
```typescript
|
|
227
234
|
const userContext = adapter.withContext({
|
|
228
235
|
userId: 'user_123',
|
|
229
|
-
role: '
|
|
236
|
+
role: 'student',
|
|
230
237
|
actorSheetId: 'sheet-id-xyz',
|
|
231
238
|
});
|
|
232
239
|
```
|
|
233
240
|
|
|
241
|
+
### `adapter.asActor(targetRole, targetSheetId)`
|
|
242
|
+
|
|
243
|
+
Convenience method — clones the current context and sets cross-actor fields. Requires `withContext()` to have been called first.
|
|
244
|
+
|
|
245
|
+
**Parameters:**
|
|
246
|
+
|
|
247
|
+
- `targetRole: string` - The actor type to access
|
|
248
|
+
- `targetSheetId: string` - The sheet ID of the target actor
|
|
249
|
+
|
|
250
|
+
**Returns:** `SheetAdapter` pointing at the target actor's sheet
|
|
251
|
+
|
|
252
|
+
**Example:**
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
// Teacher accessing a student's sheet
|
|
256
|
+
const teacherCtx = adapter.withContext({
|
|
257
|
+
userId: 'teacher_001',
|
|
258
|
+
role: 'teacher',
|
|
259
|
+
actorSheetId: 'teacher-sheet-id',
|
|
260
|
+
});
|
|
261
|
+
const studentCtx = teacherCtx.asActor('student', 'student-sheet-id-123');
|
|
262
|
+
const scores = await studentCtx.table('scores').findMany({});
|
|
263
|
+
```
|
|
264
|
+
|
|
234
265
|
### `adapter.table(tableName)`
|
|
235
266
|
|
|
236
267
|
Gets CRUD operations for a table.
|
|
@@ -283,15 +314,16 @@ await adapter.syncSchema(bookingsSchema);
|
|
|
283
314
|
|
|
284
315
|
## CRUD Operations
|
|
285
316
|
|
|
286
|
-
### `table.create(data)`
|
|
317
|
+
### `table.create(data, options?)`
|
|
287
318
|
|
|
288
319
|
Creates a new row.
|
|
289
320
|
|
|
290
321
|
**Parameters:**
|
|
291
322
|
|
|
292
|
-
- `data: Record<string,
|
|
323
|
+
- `data: Record<string, unknown>` - Row data
|
|
324
|
+
- `options?: { skipFKValidation?: boolean }` - Skip FK checks for bulk seeding
|
|
293
325
|
|
|
294
|
-
**Returns:** `Promise<Record<string,
|
|
326
|
+
**Returns:** `Promise<Record<string, unknown>>` - Created row with generated fields
|
|
295
327
|
|
|
296
328
|
**Example:**
|
|
297
329
|
|
|
@@ -312,7 +344,7 @@ Finds multiple rows.
|
|
|
312
344
|
|
|
313
345
|
```typescript
|
|
314
346
|
{
|
|
315
|
-
where?: Record<string,
|
|
347
|
+
where?: Record<string, unknown>;
|
|
316
348
|
limit?: number;
|
|
317
349
|
offset?: number;
|
|
318
350
|
orderBy?: string;
|
|
@@ -320,7 +352,7 @@ Finds multiple rows.
|
|
|
320
352
|
}
|
|
321
353
|
```
|
|
322
354
|
|
|
323
|
-
**Returns:** `Promise<Record<string,
|
|
355
|
+
**Returns:** `Promise<Record<string, unknown>[]>`
|
|
324
356
|
|
|
325
357
|
**Example:**
|
|
326
358
|
|
|
@@ -341,11 +373,11 @@ Finds a single row.
|
|
|
341
373
|
|
|
342
374
|
```typescript
|
|
343
375
|
{
|
|
344
|
-
where?: Record<string,
|
|
376
|
+
where?: Record<string, unknown>;
|
|
345
377
|
}
|
|
346
378
|
```
|
|
347
379
|
|
|
348
|
-
**Returns:** `Promise<Record<string,
|
|
380
|
+
**Returns:** `Promise<Record<string, unknown> | null>`
|
|
349
381
|
|
|
350
382
|
**Example:**
|
|
351
383
|
|
|
@@ -363,8 +395,9 @@ Updates rows matching criteria.
|
|
|
363
395
|
|
|
364
396
|
```typescript
|
|
365
397
|
{
|
|
366
|
-
where: Record<string,
|
|
367
|
-
data: Record<string,
|
|
398
|
+
where: Record<string, unknown>;
|
|
399
|
+
data: Record<string, unknown>;
|
|
400
|
+
skipFKValidation?: boolean;
|
|
368
401
|
}
|
|
369
402
|
```
|
|
370
403
|
|
|
@@ -381,13 +414,13 @@ const updated = await table.update({
|
|
|
381
414
|
|
|
382
415
|
### `table.delete(options)`
|
|
383
416
|
|
|
384
|
-
Deletes rows matching criteria.
|
|
417
|
+
Deletes rows matching criteria. If `softDelete: true` is set on the schema, sets `_deleted_at` instead of removing the row.
|
|
385
418
|
|
|
386
419
|
**Parameters:**
|
|
387
420
|
|
|
388
421
|
```typescript
|
|
389
422
|
{
|
|
390
|
-
where: Record<string,
|
|
423
|
+
where: Record<string, unknown>;
|
|
391
424
|
}
|
|
392
425
|
```
|
|
393
426
|
|
|
@@ -440,7 +473,7 @@ Exchanges authorization code for tokens.
|
|
|
440
473
|
|
|
441
474
|
- `code: string` - Authorization code from OAuth callback
|
|
442
475
|
|
|
443
|
-
**Returns:** `Promise<
|
|
476
|
+
**Returns:** `Promise<unknown>` - OAuth tokens (save to `.sheet-db-tokens.json`)
|
|
444
477
|
|
|
445
478
|
### `oauth.refreshTokens(refreshToken)`
|
|
446
479
|
|
|
@@ -450,7 +483,7 @@ Refreshes expired tokens.
|
|
|
450
483
|
|
|
451
484
|
- `refreshToken: string`
|
|
452
485
|
|
|
453
|
-
**Returns:** `Promise<
|
|
486
|
+
**Returns:** `Promise<unknown>` - New tokens
|
|
454
487
|
|
|
455
488
|
### `oauth.verifyToken(idToken)`
|
|
456
489
|
|
|
@@ -460,7 +493,7 @@ Verifies an ID token.
|
|
|
460
493
|
|
|
461
494
|
- `idToken: string`
|
|
462
495
|
|
|
463
|
-
**Returns:** `Promise<
|
|
496
|
+
**Returns:** `Promise<unknown>` - Token payload
|
|
464
497
|
|
|
465
498
|
### `hashPassword(password)`
|
|
466
499
|
|
|
@@ -523,46 +556,165 @@ if (!valid) {
|
|
|
523
556
|
|
|
524
557
|
## CLI Commands
|
|
525
558
|
|
|
526
|
-
### `sheet-db init`
|
|
559
|
+
### `sheet-db init [--integrate]`
|
|
527
560
|
|
|
528
|
-
Initializes a new
|
|
561
|
+
Initializes a new project. With `--integrate`, merges into an existing project without overwriting files.
|
|
529
562
|
|
|
530
563
|
**Creates:**
|
|
531
564
|
|
|
532
|
-
- `sheet-db.config.ts`
|
|
533
|
-
- `.env`
|
|
534
|
-
- `schemas/`
|
|
565
|
+
- `sheet-db.config.ts` — actor config with per-actor `sheetIdEnv` mappings
|
|
566
|
+
- `.env` — Google OAuth vars + one `DEV_<ROLE>_SHEET_ID` per non-admin actor
|
|
567
|
+
- `schemas/admin/` — scaffolds `users`, `credentials`, `schema_versions` tables
|
|
535
568
|
|
|
536
|
-
|
|
569
|
+
```bash
|
|
570
|
+
npx sheet-db init
|
|
571
|
+
npx sheet-db init --integrate # safe merge into existing project
|
|
572
|
+
```
|
|
537
573
|
|
|
538
|
-
|
|
574
|
+
### `sheet-db generate <table-name>`
|
|
539
575
|
|
|
540
|
-
|
|
576
|
+
Interactively generates a new table schema file.
|
|
541
577
|
|
|
542
578
|
```bash
|
|
543
|
-
|
|
579
|
+
npx sheet-db generate bookings
|
|
544
580
|
```
|
|
545
581
|
|
|
546
|
-
### `sheet-db sync`
|
|
582
|
+
### `sheet-db sync [--all-users] [--dry-run]`
|
|
547
583
|
|
|
548
|
-
Syncs all schemas to Google Sheets.
|
|
584
|
+
Syncs all schemas to Google Sheets. Iterates every configured actor and prints a per-actor status table: Actor | Sheet ID | Tables | Status.
|
|
549
585
|
|
|
550
|
-
|
|
586
|
+
- `--all-users` — also pushes schema changes to every registered user sheet (reads `actor_sheet_id` values from admin `users` table, skips sheets that are already up-to-date via schema hash comparison)
|
|
587
|
+
- `--dry-run` — preview `--all-users` changes without applying them (requires `--all-users`)
|
|
551
588
|
|
|
552
|
-
|
|
553
|
-
-
|
|
554
|
-
-
|
|
589
|
+
```bash
|
|
590
|
+
npx sheet-db sync
|
|
591
|
+
npx sheet-db sync --all-users
|
|
592
|
+
npx sheet-db sync --all-users --dry-run
|
|
593
|
+
```
|
|
555
594
|
|
|
556
595
|
### `sheet-db validate`
|
|
557
596
|
|
|
558
|
-
Validates all
|
|
597
|
+
Validates all schema files.
|
|
559
598
|
|
|
560
599
|
**Checks:**
|
|
561
600
|
|
|
562
601
|
- Duplicate table names
|
|
563
|
-
- Invalid modifiers
|
|
564
602
|
- Unknown actors
|
|
565
603
|
- Missing required fields
|
|
604
|
+
- Invalid enum / min > max
|
|
605
|
+
|
|
606
|
+
### `sheet-db seed <seed-file> [--all-actors]`
|
|
607
|
+
|
|
608
|
+
Seeds data from a JS/TS file (exporting `Record<string, unknown[]>`).
|
|
609
|
+
|
|
610
|
+
- `--all-actors` — distributes seed records to every user's actor sheet (reads from admin `users` table)
|
|
611
|
+
|
|
612
|
+
```bash
|
|
613
|
+
npx sheet-db seed ./seeds/initial.js
|
|
614
|
+
npx sheet-db seed ./seeds/initial.js --all-actors
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### `sheet-db mock-users [count]`
|
|
618
|
+
|
|
619
|
+
Creates `count` mock Google Sheets for development (default: 3). Rotates through configured non-admin actor roles.
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
npx sheet-db mock-users
|
|
623
|
+
npx sheet-db mock-users 5
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
### `sheet-db export [--prisma] [--sql] [--output <dir>]`
|
|
627
|
+
|
|
628
|
+
Exports registered schemas to production DB formats.
|
|
629
|
+
|
|
630
|
+
- `--prisma` — writes `schema.prisma` (Prisma DSL)
|
|
631
|
+
- `--sql` — writes `schema.sql` (SQL DDL `CREATE TABLE` statements)
|
|
632
|
+
- `--output <dir>` — output directory (default: current directory)
|
|
633
|
+
|
|
634
|
+
```bash
|
|
635
|
+
npx sheet-db export --prisma --output ./prisma
|
|
636
|
+
npx sheet-db export --sql
|
|
637
|
+
npx sheet-db export --prisma --sql --output ./migration
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
### `sheet-db migrate [--table <name>] [--output <dir>] [--dry-run]`
|
|
641
|
+
|
|
642
|
+
Generates a `migrate.js` script that reads every table from Google Sheets and calls a stub `insertRow()` function. Replace the stub with your real DB client to move data.
|
|
643
|
+
|
|
644
|
+
- `--table <name>` — migrate a single table only
|
|
645
|
+
- `--output <dir>` — output directory (default: current directory)
|
|
646
|
+
- `--dry-run` — preview migration plan without writing any files
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
npx sheet-db migrate
|
|
650
|
+
npx sheet-db migrate --table bookings
|
|
651
|
+
npx sheet-db migrate --dry-run
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
### `sheet-db doctor`
|
|
655
|
+
|
|
656
|
+
Health check: validates env vars, config file, OAuth tokens, and schema directory.
|
|
657
|
+
|
|
658
|
+
### `sheet-db status`
|
|
659
|
+
|
|
660
|
+
Displays project status: actor list, env var values, OAuth token state, and all registered tables with column counts.
|
|
661
|
+
|
|
662
|
+
## Cross-Actor Operations
|
|
663
|
+
|
|
664
|
+
Cross-actor operations allow one actor (e.g. teacher) to perform CRUD on another actor's sheet (e.g. student), subject to a permission matrix.
|
|
665
|
+
|
|
666
|
+
### Permission Matrix Configuration
|
|
667
|
+
|
|
668
|
+
```typescript
|
|
669
|
+
const adapter = createSheetAdapter({
|
|
670
|
+
adminSheetId: process.env.ADMIN_SHEET_ID,
|
|
671
|
+
credentials: { clientId, clientSecret, redirectUri },
|
|
672
|
+
tokens: oauthTokens,
|
|
673
|
+
permissions: {
|
|
674
|
+
teacher: {
|
|
675
|
+
canAccess: ['student'],
|
|
676
|
+
tables: ['scores', 'attendance'], // omit to allow all tables
|
|
677
|
+
},
|
|
678
|
+
},
|
|
679
|
+
});
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
### Cross-Actor Context
|
|
683
|
+
|
|
684
|
+
```typescript
|
|
685
|
+
// Option A: withContext with targetRole + targetSheetId
|
|
686
|
+
const ctx = adapter.withContext({
|
|
687
|
+
userId: 'teacher_001',
|
|
688
|
+
role: 'teacher',
|
|
689
|
+
actorSheetId: 'teacher-sheet-id',
|
|
690
|
+
targetRole: 'student',
|
|
691
|
+
targetSheetId: 'student-sheet-id-123',
|
|
692
|
+
});
|
|
693
|
+
|
|
694
|
+
// Option B: asActor() shorthand
|
|
695
|
+
const ctx = adapter
|
|
696
|
+
.withContext({ userId: 'teacher_001', role: 'teacher', actorSheetId: 'teacher-sheet-id' })
|
|
697
|
+
.asActor('student', 'student-sheet-id-123');
|
|
698
|
+
|
|
699
|
+
// All CRUD operations now target the student sheet
|
|
700
|
+
await ctx.table('scores').create({ student_id: 'stu_456', score: 95 });
|
|
701
|
+
const scores = await ctx.table('scores').findMany({ where: { student_id: 'stu_456' } });
|
|
702
|
+
await ctx.table('scores').update({ where: { _id: 'score_001' }, data: { score: 98 } });
|
|
703
|
+
await ctx.table('scores').delete({ where: { _id: 'score_001' } });
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
### Permission Rules
|
|
707
|
+
|
|
708
|
+
| Scenario | Behaviour |
|
|
709
|
+
|---|---|
|
|
710
|
+
| Same actor access | Always allowed |
|
|
711
|
+
| Admin access | Bypasses all permission checks |
|
|
712
|
+
| Cross-actor — role in `permissions.canAccess` | Allowed |
|
|
713
|
+
| Cross-actor — role not in `permissions` | `PermissionError` |
|
|
714
|
+
| Cross-actor — table not in `permissions.tables` | `PermissionError` |
|
|
715
|
+
| Cross-actor — `targetSheetId` missing | `PermissionError` |
|
|
716
|
+
|
|
717
|
+
---
|
|
566
718
|
|
|
567
719
|
## Type Definitions
|
|
568
720
|
|
|
@@ -575,6 +727,7 @@ interface TableSchema {
|
|
|
575
727
|
timestamps?: boolean;
|
|
576
728
|
softDelete?: boolean;
|
|
577
729
|
columns: Record<string, ColumnDefinition>;
|
|
730
|
+
pkColumn?: string; // set automatically when primary() is used
|
|
578
731
|
}
|
|
579
732
|
```
|
|
580
733
|
|
|
@@ -585,14 +738,14 @@ interface ColumnDefinition {
|
|
|
585
738
|
type: 'string' | 'number' | 'boolean' | 'date' | 'json';
|
|
586
739
|
required?: boolean;
|
|
587
740
|
unique?: boolean;
|
|
588
|
-
default?:
|
|
741
|
+
default?: string | number | boolean | null;
|
|
589
742
|
min?: number;
|
|
590
743
|
max?: number;
|
|
591
|
-
enum?:
|
|
744
|
+
enum?: (string | number | boolean)[];
|
|
592
745
|
pattern?: RegExp;
|
|
593
746
|
readonly?: boolean;
|
|
594
|
-
primary?: boolean;
|
|
595
|
-
ref?: string;
|
|
747
|
+
primary?: boolean; // auto-generates nanoid for string columns
|
|
748
|
+
ref?: string; // 'table.column' FK reference
|
|
596
749
|
index?: boolean;
|
|
597
750
|
}
|
|
598
751
|
```
|
|
@@ -604,5 +757,36 @@ interface UserContext {
|
|
|
604
757
|
userId: string;
|
|
605
758
|
role: string;
|
|
606
759
|
actorSheetId?: string;
|
|
760
|
+
targetRole?: string; // cross-actor: which actor type to access
|
|
761
|
+
targetSheetId?: string; // cross-actor: the target actor's sheet ID
|
|
762
|
+
}
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
### `ActorPermission`
|
|
766
|
+
|
|
767
|
+
```typescript
|
|
768
|
+
interface ActorPermission {
|
|
769
|
+
canAccess: string[]; // actor roles this role can access
|
|
770
|
+
tables?: string[]; // restrict to specific tables (omit = all tables)
|
|
771
|
+
}
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
### `ActorConfig`
|
|
775
|
+
|
|
776
|
+
```typescript
|
|
777
|
+
interface ActorConfig {
|
|
778
|
+
role: string;
|
|
779
|
+
sheetIdEnv: string; // env var name that holds this actor's sheet ID
|
|
607
780
|
}
|
|
608
781
|
```
|
|
782
|
+
|
|
783
|
+
### `SchemaMismatchBehaviour`
|
|
784
|
+
|
|
785
|
+
```typescript
|
|
786
|
+
type SchemaMismatchBehaviour = 'warn' | 'error' | 'auto-sync';
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
Configured via `onSchemaMismatch` in `createSheetAdapter()`:
|
|
790
|
+
- `'warn'` — logs to stderr, continues (default)
|
|
791
|
+
- `'error'` — throws `SchemaMismatchError`
|
|
792
|
+
- `'auto-sync'` — syncs the actor sheet before proceeding
|
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,61 @@ This project follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) an
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
+
## [0.1.13] — 2026-05-26
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
#### Phase 5: CLI Completeness
|
|
26
|
+
- **`sheet-db migrate`** — generates a `migrate.js` script that reads every table from Google Sheets and calls a stub `insertRow()`. Replace the stub with your Prisma/Sequelize/MySQL client to move data to production. Supports `--table <name>` (single table), `--output <dir>`, and `--dry-run` (preview plan without writing files).
|
|
27
|
+
- **`sheet-db init --integrate`** — integrates into an existing project without overwriting `sheet-db.config.ts` or `.env`; appends missing Google OAuth vars to `.env` if needed.
|
|
28
|
+
- **`sheet-db mock-users [count]`** — creates mock Google Sheets for development (default: 3); rotates through configured non-admin actor roles.
|
|
29
|
+
- **`sheet-db seed <file> --all-actors`** — distributes seed records to every user's actor sheet by reading `actor_sheet_id` from the admin `users` table.
|
|
30
|
+
- **`sheet-db export --prisma / --sql`** — generates `schema.prisma` or SQL DDL from registered schemas; supports `--output <dir>`.
|
|
31
|
+
- **`sheet-db sync --all-users [--dry-run]`** — pushes schema changes to all registered user sheets; uses schema hash comparison to skip up-to-date sheets; exponential backoff on rate-limit errors.
|
|
32
|
+
|
|
33
|
+
#### TypeScript Strictness
|
|
34
|
+
- Replaced all `any` usages in production source with `unknown` or concrete types across: `crud.ts`, `sheetClient.ts`, `oauth.ts`, `generate.ts`, `seed.ts`, `mock-users.ts`, `status.ts`, `validate.ts`, `types.ts`, `columnBuilder.ts`.
|
|
35
|
+
- `ColumnDefinition.default` is now `string | number | boolean | null` (was `any`).
|
|
36
|
+
- `ColumnDefinition.enum` is now `(string | number | boolean)[]` (was `any[]`).
|
|
37
|
+
- `WhereClause` is now `Record<string, unknown>` (was `Record<string, any>`).
|
|
38
|
+
- `UpdateOptions.data` is now `Record<string, unknown>` (was `Record<string, any>`).
|
|
39
|
+
- CRUD method signatures updated to `Record<string, unknown>` throughout.
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
- `CRUDOperations.create` / `findMany` / `findOne` return `Record<string, unknown>` instead of `Record<string, any>`.
|
|
43
|
+
- Boolean deserialization in `crud.ts` now checks `value === 'TRUE'` only (removed unreachable `|| value === true` branch after `sheetClient` was typed to return `string[][]`).
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
- `OAuth2Client.setCredentials` now correctly receives a `Credentials`-typed cast instead of raw `unknown`.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## [0.1.12] — 2026-05-26
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
#### Cross-Actor CRUD Operations (Phase 4)
|
|
55
|
+
- **`permissions` option on `SheetAdapterConfig`** — define a permission matrix that controls which roles can access other actors' sheets and which tables they may touch. Example: `{ teacher: { canAccess: ['student'], tables: ['scores', 'attendance'] } }`.
|
|
56
|
+
- **`targetRole` and `targetSheetId` on `UserContext`** — pass these alongside the caller's own context to route all CRUD operations to a different actor's sheet.
|
|
57
|
+
- **`asActor(targetRole, targetSheetId)`** on `SheetAdapter` — convenience method that clones the current context with cross-actor fields set, avoiding repetitive `withContext()` calls.
|
|
58
|
+
- **Cross-actor permission enforcement in `hasPermission()`** — checks the permission matrix for `canAccess` and optional `tables` restrictions. Throws `PermissionError` with a clear message for every violation scenario (no config, not in canAccess list, table not allowed, missing targetSheetId).
|
|
59
|
+
- **Cross-actor sheet routing in `resolveSpreadsheetId()`** — when `targetRole` is set and differs from the caller's role, CRUD operations use `targetSheetId` instead of `actorSheetId`. Admin role bypasses all checks.
|
|
60
|
+
- **`ActorPermission` type** exported from the package.
|
|
61
|
+
- **18 unit tests** in `tests/unit/crossActorPermissions.test.ts` covering same-actor access, `asActor()`, cross-actor allow/deny, missing targetSheetId, admin bypass, and CRUD routing verification (findMany / create / update / delete each confirmed to hit the correct spreadsheet ID).
|
|
62
|
+
|
|
63
|
+
#### Schema Export (Phase 3 — test coverage)
|
|
64
|
+
- **`generatePrismaModel` and `generateSQLTable` are now exported** from `src/cli/commands/export.ts`, making them unit-testable without going through the CLI.
|
|
65
|
+
- **19 unit tests** in `tests/unit/export.test.ts` covering: Prisma model generation (all DataTypes, PK `@id`, `@default(cuid())`, optional `?`, `@unique`, `@relation` for FK columns), SQL DDL generation (all DataTypes, `PRIMARY KEY`, `FOREIGN KEY`, `NOT NULL`, fallback `_id` PK).
|
|
66
|
+
|
|
67
|
+
#### Developer Experience
|
|
68
|
+
- **`jest.config.js` `maxWorkers: 1`** — prevents Jest worker SIGKILL on memory-constrained environments when all test suites run together.
|
|
69
|
+
- **`Docs/developerGuide.md` Section 13** — new cross-actor operations guide covering permission matrix config, `withContext` + `asActor()` usage, all four CRUD operations, security rules table, and multi-sheet aggregation pattern.
|
|
70
|
+
|
|
71
|
+
### Changed
|
|
72
|
+
- `TODO.md` Phase 3 and Phase 4 implementation checklists fully checked off.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
21
76
|
## [0.1.9] — ready to publish
|
|
22
77
|
|
|
23
78
|
### Added
|
package/dist/adapter/crud.d.ts
CHANGED
|
@@ -7,9 +7,9 @@ export declare class CRUDOperations {
|
|
|
7
7
|
private fkResolver?;
|
|
8
8
|
private preFlight?;
|
|
9
9
|
constructor(client: SheetClient, spreadsheetId: string, schema: TableSchema, fkResolver?: FKResolver | undefined, preFlight?: Promise<void> | undefined);
|
|
10
|
-
create(data: Record<string,
|
|
11
|
-
findMany(options?: FindOptions): Promise<Record<string,
|
|
12
|
-
findOne(options?: FindOptions): Promise<Record<string,
|
|
10
|
+
create(data: Record<string, unknown>, options?: CreateOptions): Promise<Record<string, unknown>>;
|
|
11
|
+
findMany(options?: FindOptions): Promise<Record<string, unknown>[]>;
|
|
12
|
+
findOne(options?: FindOptions): Promise<Record<string, unknown> | null>;
|
|
13
13
|
update(options: UpdateOptions): Promise<number>;
|
|
14
14
|
delete(options: DeleteOptions): Promise<number>;
|
|
15
15
|
private getHeaders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/adapter/crud.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACX,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,cAAc;IAEvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,SAAS,CAAC;gBAJV,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,EACnB,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAA;IAG7B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/adapter/crud.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACX,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,cAAc;IAEvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,SAAS,CAAC;gBAJV,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,EACnB,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAA;IAG7B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoCpG,QAAQ,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAqCvE,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAK3E,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA4C/C,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YA+BvC,UAAU;IAYxB,OAAO,CAAC,wBAAwB;YAiDlB,mBAAmB;IAmBjC,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;YAuCR,eAAe;IAgB7B,OAAO,CAAC,YAAY;CAQrB"}
|
package/dist/adapter/crud.js
CHANGED
|
@@ -56,8 +56,10 @@ class CRUDOperations {
|
|
|
56
56
|
results.sort((a, b) => {
|
|
57
57
|
const aVal = a[options.orderBy];
|
|
58
58
|
const bVal = b[options.orderBy];
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
if (aVal === bVal)
|
|
60
|
+
return 0;
|
|
61
|
+
const gt = String(aVal) > String(bVal) ? 1 : -1;
|
|
62
|
+
return order === 'asc' ? gt : -gt;
|
|
61
63
|
});
|
|
62
64
|
}
|
|
63
65
|
if (options.offset) {
|
|
@@ -174,7 +176,7 @@ class CRUDOperations {
|
|
|
174
176
|
throw new ValidationError_1.ValidationError(`Column ${columnName} must be at most ${column.max}`, columnName);
|
|
175
177
|
}
|
|
176
178
|
}
|
|
177
|
-
if (column.pattern && !column.pattern.test(value)) {
|
|
179
|
+
if (column.pattern && typeof value === 'string' && !column.pattern.test(value)) {
|
|
178
180
|
throw new ValidationError_1.ValidationError(`Column ${columnName} does not match required pattern`, columnName);
|
|
179
181
|
}
|
|
180
182
|
}
|
|
@@ -223,7 +225,7 @@ class CRUDOperations {
|
|
|
223
225
|
result[header] = Number(value);
|
|
224
226
|
break;
|
|
225
227
|
case 'boolean':
|
|
226
|
-
result[header] = value === 'TRUE'
|
|
228
|
+
result[header] = value === 'TRUE';
|
|
227
229
|
break;
|
|
228
230
|
case 'json':
|
|
229
231
|
try {
|
package/dist/adapter/crud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/adapter/crud.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/adapter/crud.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SheetClient } from './sheetClient';
|
|
2
2
|
import { CRUDOperations } from './crud';
|
|
3
|
-
import { TableSchema, UserContext, SchemaMismatchBehaviour } from '../schema/types';
|
|
3
|
+
import { TableSchema, UserContext, SchemaMismatchBehaviour, ActorPermission } from '../schema/types';
|
|
4
4
|
export interface SheetAdapterConfig {
|
|
5
5
|
adminSheetId: string;
|
|
6
6
|
credentials: {
|
|
@@ -10,6 +10,7 @@ export interface SheetAdapterConfig {
|
|
|
10
10
|
};
|
|
11
11
|
tokens: unknown;
|
|
12
12
|
onSchemaMismatch?: SchemaMismatchBehaviour;
|
|
13
|
+
permissions?: Record<string, ActorPermission>;
|
|
13
14
|
}
|
|
14
15
|
export declare class SheetAdapter {
|
|
15
16
|
private client;
|
|
@@ -17,12 +18,14 @@ export declare class SheetAdapter {
|
|
|
17
18
|
private schemas;
|
|
18
19
|
private context?;
|
|
19
20
|
private onSchemaMismatch?;
|
|
21
|
+
private permissions?;
|
|
20
22
|
/** Pending schema version check promise set by withContext() */
|
|
21
23
|
private _pendingSchemaCheck?;
|
|
22
24
|
constructor(config: SheetAdapterConfig);
|
|
23
25
|
registerSchema(schema: TableSchema): void;
|
|
24
26
|
registerSchemas(schemas: TableSchema[]): void;
|
|
25
27
|
withContext(context: UserContext): SheetAdapter;
|
|
28
|
+
asActor(targetRole: string, targetSheetId: string): SheetAdapter;
|
|
26
29
|
table(tableName: string): CRUDOperations;
|
|
27
30
|
createUserSheet(userId: string, role: string, email: string): Promise<string>;
|
|
28
31
|
syncSchema(schema: TableSchema): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheetAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/sheetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAc,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"sheetAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/sheetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAc,uBAAuB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAsBjH,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC/C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,gBAAgB,CAAC,CAA0B;IACnD,OAAO,CAAC,WAAW,CAAC,CAAkC;IACtD,gEAAgE;IAChE,OAAO,CAAC,mBAAmB,CAAC,CAAgB;gBAEhC,MAAM,EAAE,kBAAkB;IAStC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKzC,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAI7C,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY;IAY/C,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,YAAY;IAOhE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAiBlC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B7E,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9C,mBAAmB,CACvB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAyBV,gBAAgB,CACpB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAkBnF,OAAO,CAAC,OAAO;YAID,0BAA0B;YAY1B,qBAAqB;IAqCnC,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,aAAa;YA0CP,WAAW;IAMzB,SAAS,IAAI,WAAW;CAGzB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAE3E"}
|