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.
Files changed (47) hide show
  1. package/API.md +222 -38
  2. package/CHANGELOG.md +55 -0
  3. package/dist/adapter/crud.d.ts +3 -3
  4. package/dist/adapter/crud.d.ts.map +1 -1
  5. package/dist/adapter/crud.js +6 -4
  6. package/dist/adapter/crud.js.map +1 -1
  7. package/dist/adapter/sheetAdapter.d.ts +4 -1
  8. package/dist/adapter/sheetAdapter.d.ts.map +1 -1
  9. package/dist/adapter/sheetAdapter.js +36 -8
  10. package/dist/adapter/sheetAdapter.js.map +1 -1
  11. package/dist/adapter/sheetClient.d.ts +4 -4
  12. package/dist/adapter/sheetClient.d.ts.map +1 -1
  13. package/dist/adapter/sheetClient.js.map +1 -1
  14. package/dist/auth/oauth.d.ts +3 -3
  15. package/dist/auth/oauth.d.ts.map +1 -1
  16. package/dist/cli/commands/export.d.ts +3 -0
  17. package/dist/cli/commands/export.d.ts.map +1 -1
  18. package/dist/cli/commands/export.js +2 -0
  19. package/dist/cli/commands/export.js.map +1 -1
  20. package/dist/cli/commands/generate.js.map +1 -1
  21. package/dist/cli/commands/migrate.d.ts +8 -0
  22. package/dist/cli/commands/migrate.d.ts.map +1 -0
  23. package/dist/cli/commands/migrate.js +153 -0
  24. package/dist/cli/commands/migrate.js.map +1 -0
  25. package/dist/cli/commands/mock-users.d.ts.map +1 -1
  26. package/dist/cli/commands/mock-users.js +1 -2
  27. package/dist/cli/commands/mock-users.js.map +1 -1
  28. package/dist/cli/commands/seed.d.ts +3 -1
  29. package/dist/cli/commands/seed.d.ts.map +1 -1
  30. package/dist/cli/commands/seed.js +0 -1
  31. package/dist/cli/commands/seed.js.map +1 -1
  32. package/dist/cli/commands/status.d.ts.map +1 -1
  33. package/dist/cli/commands/status.js.map +1 -1
  34. package/dist/cli/commands/validate.d.ts.map +1 -1
  35. package/dist/cli/commands/validate.js +2 -3
  36. package/dist/cli/commands/validate.js.map +1 -1
  37. package/dist/cli/index.js +8 -0
  38. package/dist/cli/index.js.map +1 -1
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/schema/columnBuilder.d.ts +2 -2
  43. package/dist/schema/columnBuilder.d.ts.map +1 -1
  44. package/dist/schema/columnBuilder.js.map +1 -1
  45. package/dist/schema/types.d.ts +11 -4
  46. package/dist/schema/types.d.ts.map +1 -1
  47. 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: any; // OAuth 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: 'user',
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, any>` - Row data
323
+ - `data: Record<string, unknown>` - Row data
324
+ - `options?: { skipFKValidation?: boolean }` - Skip FK checks for bulk seeding
293
325
 
294
- **Returns:** `Promise<Record<string, any>>` - Created row with generated fields
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, any>;
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, any>[]>`
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, any>;
376
+ where?: Record<string, unknown>;
345
377
  }
346
378
  ```
347
379
 
348
- **Returns:** `Promise<Record<string, any> | null>`
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, any>;
367
- data: Record<string, any>;
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, any>;
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<any>` - OAuth tokens
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<any>` - New tokens
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<any>` - Token payload
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 longcelot-sheet-db project.
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/` directory
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
- ### `sheet-db generate <table-name>`
569
+ ```bash
570
+ npx sheet-db init
571
+ npx sheet-db init --integrate # safe merge into existing project
572
+ ```
537
573
 
538
- Generates a new table schema interactively.
574
+ ### `sheet-db generate <table-name>`
539
575
 
540
- **Example:**
576
+ Interactively generates a new table schema file.
541
577
 
542
578
  ```bash
543
- pnpm sheet-db generate bookings
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
- **Actions:**
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
- - Creates missing sheets
553
- - Adds missing columns
554
- - Never deletes existing data
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 schemas.
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?: any;
741
+ default?: string | number | boolean | null;
589
742
  min?: number;
590
743
  max?: number;
591
- enum?: any[];
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
@@ -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, any>, options?: CreateOptions): Promise<Record<string, any>>;
11
- findMany(options?: FindOptions): Promise<Record<string, any>[]>;
12
- findOne(options?: FindOptions): Promise<Record<string, any> | null>;
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,GAAG,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAoC5F,QAAQ,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAoCnE,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAKvE,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"}
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"}
@@ -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
- const comparison = aVal > bVal ? 1 : aVal < bVal ? -1 : 0;
60
- return order === 'asc' ? comparison : -comparison;
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' || value === true;
228
+ result[header] = value === 'TRUE';
227
229
  break;
228
230
  case 'json':
229
231
  try {
@@ -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;AAsBhG,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;CAC5C;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,gEAAgE;IAChE,OAAO,CAAC,mBAAmB,CAAC,CAAgB;gBAEhC,MAAM,EAAE,kBAAkB;IAQtC,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,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;IAY5B,OAAO,CAAC,aAAa;YAoBP,WAAW;IAMzB,SAAS,IAAI,WAAW;CAGzB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAE3E"}
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"}