@b2bc-devkit/sheetorm 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -54,6 +54,17 @@ export declare class Record implements Entity {
54
54
  * e.g. class `Car` → `"idx_Cars"`.
55
55
  */
56
56
  static get indexTableName(): string;
57
+ /**
58
+ * Whether the auto-created sheet should be protected.
59
+ * Override in a subclass to return `true` and enable sheet protection.
60
+ */
61
+ static isProtected(): boolean;
62
+ /**
63
+ * Email addresses of editors allowed to edit the protected sheet.
64
+ * Only used when `isProtected()` returns `true`.
65
+ * Override in a subclass to specify allowed editors.
66
+ */
67
+ static protectedFor(): string[];
57
68
  /**
58
69
  * Create an in-memory instance pre-populated with the given data.
59
70
  * The instance is **not** persisted until `save()` is called.
@@ -1 +1 @@
1
- {"version":3,"file":"Record.d.ts","sourceRoot":"","sources":["../../../src/core/Record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Record.d.ts","sourceRoot":"","sources":["../../../src/core/Record.ts"],"names":[],"mappings":"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"}
@@ -73,6 +73,21 @@ export class Record {
73
73
  static get indexTableName() {
74
74
  return "idx_" + this.name + "s";
75
75
  }
76
+ /**
77
+ * Whether the auto-created sheet should be protected.
78
+ * Override in a subclass to return `true` and enable sheet protection.
79
+ */
80
+ static isProtected() {
81
+ return false;
82
+ }
83
+ /**
84
+ * Email addresses of editors allowed to edit the protected sheet.
85
+ * Only used when `isProtected()` returns `true`.
86
+ * Override in a subclass to specify allowed editors.
87
+ */
88
+ static protectedFor() {
89
+ return [];
90
+ }
76
91
  // ─── Static Factory ──────────────────────────────
77
92
  /**
78
93
  * Create an in-memory instance pre-populated with the given data.
@@ -1 +1 @@
1
- {"version":3,"file":"Record.js","sourceRoot":"","sources":["../../../src/core/Record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Record.js","sourceRoot":"","sources":["../../../src/core/Record.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,9 @@ export interface RecordStatic {
15
15
  indexTableName: string;
16
16
  /** JavaScript class name (used for Registry class-name lookup). */
17
17
  name: string;
18
+ /** Whether the auto-created sheet should be protected. */
19
+ isProtected(): boolean;
20
+ /** Email addresses of editors allowed to edit the protected sheet. */
21
+ protectedFor(): string[];
18
22
  }
19
23
  //# sourceMappingURL=RecordStatic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecordStatic.d.ts","sourceRoot":"","sources":["../../../src/core/RecordStatic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,8DAA8D;IAC9D,QAAQ,MAAM,CAAC;IAEf,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAElB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IAEvB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"RecordStatic.d.ts","sourceRoot":"","sources":["../../../src/core/RecordStatic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,8DAA8D;IAC9D,QAAQ,MAAM,CAAC;IAEf,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAElB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IAEvB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,WAAW,IAAI,OAAO,CAAC;IAEvB,sEAAsE;IACtE,YAAY,IAAI,MAAM,EAAE,CAAC;CAC1B"}
@@ -66,6 +66,7 @@ export declare class Registry {
66
66
  *
67
67
  * @param schema - The table schema (name, fields, indexes).
68
68
  * @param indexStore - The shared IndexStore.
69
+ * @param ctor - The Record subclass constructor (for protection config).
69
70
  * @returns The sheet adapter and whether it was freshly created.
70
71
  */
71
72
  private ensureTable;
@@ -1 +1 @@
1
- {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../src/core/Registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;;;;GAKG;AACH,qBAAa,QAAQ;IACnB,6CAA6C;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyB;IAEhD,qEAAqE;IACrE,OAAO,CAAC,OAAO,CAAoC;IACnD,4DAA4D;IAC5D,OAAO,CAAC,KAAK,CAA+B;IAC5C,sCAAsC;IACtC,OAAO,CAAC,UAAU,CAA2B;IAC7C,yCAAyC;IACzC,OAAO,CAAC,KAAK,CAA8C;IAC3D,mEAAmE;IACnE,OAAO,CAAC,cAAc,CAAmC;IACzD,yEAAyE;IACzE,OAAO,CAAC,aAAa,CAAmC;IAExD,0DAA0D;IAC1D,MAAM,CAAC,WAAW,IAAI,QAAQ;IAO9B,+EAA+E;IAC/E,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC;QAAC,KAAK,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI;IAUnF;;;OAGG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IA0CnB;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IASvC;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;IAkD1E;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAItD,2DAA2D;IAC3D,aAAa,IAAI,UAAU;IAI3B,mEAAmE;IACnE,UAAU,IAAI,IAAI;CAInB"}
1
+ {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../src/core/Registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD;;;;;GAKG;AACH,qBAAa,QAAQ;IACnB,6CAA6C;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyB;IAEhD,qEAAqE;IACrE,OAAO,CAAC,OAAO,CAAoC;IACnD,4DAA4D;IAC5D,OAAO,CAAC,KAAK,CAA+B;IAC5C,sCAAsC;IACtC,OAAO,CAAC,UAAU,CAA2B;IAC7C,yCAAyC;IACzC,OAAO,CAAC,KAAK,CAA8C;IAC3D,mEAAmE;IACnE,OAAO,CAAC,cAAc,CAAmC;IACzD,yEAAyE;IACzE,OAAO,CAAC,aAAa,CAAmC;IAExD,0DAA0D;IAC1D,MAAM,CAAC,WAAW,IAAI,QAAQ;IAO9B,+EAA+E;IAC/E,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC;QAAC,KAAK,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI;IAUnF;;;OAGG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAmEnB;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IASvC;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;IAkD1E;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAItD,2DAA2D;IAC3D,aAAa,IAAI,UAAU;IAI3B,mEAAmE;IACnE,UAAU,IAAI,IAAI;CAInB"}
@@ -15,6 +15,7 @@ import { IndexStore } from "../index/IndexStore.js";
15
15
  import { MemoryCache } from "./cache/MemoryCache.js";
16
16
  import { GoogleSpreadsheetAdapter } from "../storage/GoogleSpreadsheetAdapter.js";
17
17
  import { Decorators } from "./Decorators.js";
18
+ import { SystemColumns } from "./types/SystemColumns.js";
18
19
  import { SheetOrmLogger } from "../utils/SheetOrmLogger.js";
19
20
  /**
20
21
  * Central registry for SheetORM.
@@ -93,9 +94,10 @@ export class Registry {
93
94
  *
94
95
  * @param schema - The table schema (name, fields, indexes).
95
96
  * @param indexStore - The shared IndexStore.
97
+ * @param ctor - The Record subclass constructor (for protection config).
96
98
  * @returns The sheet adapter and whether it was freshly created.
97
99
  */
98
- ensureTable(schema, indexStore) {
100
+ ensureTable(schema, indexStore, ctor) {
99
101
  const adapter = this.getAdapter();
100
102
  SheetOrmLogger.log(`[Registry] ensureTable "${schema.tableName}" (indexes=${schema.indexes.length})`);
101
103
  // Check if the sheet tab already exists
@@ -106,10 +108,29 @@ export class Registry {
106
108
  created = true;
107
109
  }
108
110
  SheetOrmLogger.log(`[Registry] ensureTable "${schema.tableName}" → ${created ? "insertSheet (G4 new)" : "existing sheet"}`);
109
- // Headers for newly-created sheets are deferred they will be written
110
- // together with the first data flush in SheetRepository, saving one GAS API call.
111
- if (!created) {
112
- // Nothing to do existing sheet already has headers from a prior execution.
111
+ // Always ensure headers are present on the sheet.
112
+ // Previously headers for new sheets were deferred to the first data write
113
+ // (L1 optimisation), but this caused a bug: if a read-only operation
114
+ // (e.g. findOne) triggered ensureTable, the GAS execution could end
115
+ // before any write flushed the deferred headers, leaving the sheet
116
+ // without headers for all subsequent executions.
117
+ const expectedHeaders = [
118
+ SystemColumns.ID,
119
+ SystemColumns.CREATED_AT,
120
+ SystemColumns.UPDATED_AT,
121
+ ...schema.fields.map((f) => f.name),
122
+ ];
123
+ const existingHeaders = sheet.getHeaders();
124
+ const hasValidHeaders = existingHeaders.length > 0 && existingHeaders.some((h) => h !== "");
125
+ if (!hasValidHeaders) {
126
+ sheet.setHeaders(expectedHeaders);
127
+ SheetOrmLogger.log(`[Registry] ensureTable "${schema.tableName}" → wrote ${expectedHeaders.length} headers`);
128
+ }
129
+ // Apply sheet protection when the sheet is newly created and the class opts in
130
+ if (created && ctor.isProtected()) {
131
+ const editors = ctor.protectedFor();
132
+ adapter.protectSheet(schema.tableName, editors);
133
+ SheetOrmLogger.log(`[Registry] ensureTable "${schema.tableName}" → protected (editors=${editors.length})`);
113
134
  }
114
135
  // If no indexes are defined, skip index table creation
115
136
  if (schema.indexes.length === 0)
@@ -172,12 +193,12 @@ export class Registry {
172
193
  indexes,
173
194
  };
174
195
  // Create the sheet tab (or get existing) and register indexes
175
- const { sheet, created } = this.ensureTable(schema, indexStore);
196
+ const { sheet, created } = this.ensureTable(schema, indexStore, ctor);
176
197
  // Construct the repository with pre-resolved sheet and row-count hints:
177
198
  // - sheet: pre-resolved ISheetAdapter (avoids getSheetByName call)
178
199
  // - created ? 0 : undefined: known row count (0 for new sheets, avoids getLastRow call)
179
200
  // - created: defer header write to first data flush
180
- const repo = new SheetRepository(this.getAdapter(), schema, indexStore, this.cache, undefined, sheet, created ? 0 : undefined, created);
201
+ const repo = new SheetRepository(this.getAdapter(), schema, indexStore, this.cache, undefined, sheet, created ? 0 : undefined, false);
181
202
  this.repos.set(tableName, repo);
182
203
  return repo;
183
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Registry.js","sourceRoot":"","sources":["../../../src/core/Registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Registry.js","sourceRoot":"","sources":["../../../src/core/Registry.ts"],"names":[],"mappings":"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"}
@@ -29,5 +29,13 @@ export interface ISpreadsheetAdapter {
29
29
  getSheets(): Map<string, ISheetAdapter>;
30
30
  /** Delete all sheets except one (GAS requires at least one sheet to exist). */
31
31
  removeAllSheets(): void;
32
+ /**
33
+ * Protect a sheet tab and restrict editing to the given email addresses.
34
+ * No-op if the sheet does not exist.
35
+ *
36
+ * @param name - The sheet tab name to protect.
37
+ * @param editors - Email addresses allowed to edit the protected sheet.
38
+ */
39
+ protectSheet(name: string, editors: string[]): void;
32
40
  }
33
41
  //# sourceMappingURL=ISpreadsheetAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ISpreadsheetAdapter.d.ts","sourceRoot":"","sources":["../../../../src/core/types/ISpreadsheetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;IAEnD,yEAAyE;IACzE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IAEzC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IAEzC,kEAAkE;IAClE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,+DAA+D;IAC/D,aAAa,IAAI,MAAM,EAAE,CAAC;IAE1B;;;OAGG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAExC,+EAA+E;IAC/E,eAAe,IAAI,IAAI,CAAC;CACzB"}
1
+ {"version":3,"file":"ISpreadsheetAdapter.d.ts","sourceRoot":"","sources":["../../../../src/core/types/ISpreadsheetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;IAEnD,yEAAyE;IACzE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IAEzC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IAEzC,kEAAkE;IAClE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,+DAA+D;IAC/D,aAAa,IAAI,MAAM,EAAE,CAAC;IAE1B;;;OAGG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAExC,+EAA+E;IAC/E,eAAe,IAAI,IAAI,CAAC;IAExB;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrD"}
@@ -51,5 +51,15 @@ export declare class GoogleSpreadsheetAdapter implements ISpreadsheetAdapter {
51
51
  * is kept, cleared, and renamed to "Sheet1" while all others are deleted.
52
52
  */
53
53
  removeAllSheets(): void;
54
+ /**
55
+ * Protect a sheet tab and restrict editing to the given email addresses.
56
+ *
57
+ * Uses the GAS `Protection` API to add a sheet-level protection.
58
+ * Existing editors (except the owner) are removed, and only the
59
+ * specified `editors` are granted edit access.
60
+ *
61
+ * No-op if the sheet does not exist.
62
+ */
63
+ protectSheet(name: string, editors: string[]): void;
54
64
  }
55
65
  //# sourceMappingURL=GoogleSpreadsheetAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleSpreadsheetAdapter.d.ts","sourceRoot":"","sources":["../../../src/storage/GoogleSpreadsheetAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAClE,0CAA0C;IAC1C,OAAO,CAAC,WAAW,CAA2C;IAE9D;;;;OAIG;gBACS,WAAW,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,WAAW;IAIlE;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAMlD;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAWxC;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAMxC,sEAAsE;IACtE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ/B,iEAAiE;IACjE,aAAa,IAAI,MAAM,EAAE;IAIzB,6EAA6E;IAC7E,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAQvC;;;;;OAKG;IACH,eAAe,IAAI,IAAI;CAaxB"}
1
+ {"version":3,"file":"GoogleSpreadsheetAdapter.d.ts","sourceRoot":"","sources":["../../../src/storage/GoogleSpreadsheetAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAClE,0CAA0C;IAC1C,OAAO,CAAC,WAAW,CAA2C;IAE9D;;;;OAIG;gBACS,WAAW,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,WAAW;IAIlE;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAMlD;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAWxC;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAMxC,sEAAsE;IACtE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ/B,iEAAiE;IACjE,aAAa,IAAI,MAAM,EAAE;IAIzB,6EAA6E;IAC7E,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAQvC;;;;;OAKG;IACH,eAAe,IAAI,IAAI;IAcvB;;;;;;;;OAQG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;CAUpD"}
@@ -95,5 +95,25 @@ export class GoogleSpreadsheetAdapter {
95
95
  keeper.clear();
96
96
  keeper.setName("Sheet1");
97
97
  }
98
+ /**
99
+ * Protect a sheet tab and restrict editing to the given email addresses.
100
+ *
101
+ * Uses the GAS `Protection` API to add a sheet-level protection.
102
+ * Existing editors (except the owner) are removed, and only the
103
+ * specified `editors` are granted edit access.
104
+ *
105
+ * No-op if the sheet does not exist.
106
+ */
107
+ protectSheet(name, editors) {
108
+ const sheet = this.spreadsheet.getSheetByName(name);
109
+ if (!sheet)
110
+ return;
111
+ SheetOrmLogger.log(`[Spreadsheet] protectSheet("${name}") → editors: [${editors.join(", ")}]`);
112
+ const protection = sheet.protect().setDescription("Protected by SheetORM");
113
+ protection.removeEditors(protection.getEditors());
114
+ if (editors.length > 0) {
115
+ protection.addEditors(editors);
116
+ }
117
+ }
98
118
  }
99
119
  //# sourceMappingURL=GoogleSpreadsheetAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleSpreadsheetAdapter.js","sourceRoot":"","sources":["../../../src/storage/GoogleSpreadsheetAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoogleSpreadsheetAdapter.js","sourceRoot":"","sources":["../../../src/storage/GoogleSpreadsheetAdapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ParityCatalog.d.ts","sourceRoot":"","sources":["../../../src/testing/ParityCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4EAA4E;AAC5E,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AA+WD,4EAA4E;AAC5E,iBAAS,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9D;AAOD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,6CAA6C;IAC7C,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAiB;IACvC,wCAAwC;IACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAAmB;IAC3C,4CAA4C;IAC5C,MAAM,CAAC,QAAQ,wBAAkB;CAClC"}
1
+ {"version":3,"file":"ParityCatalog.d.ts","sourceRoot":"","sources":["../../../src/testing/ParityCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4EAA4E;AAC5E,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAmXD,4EAA4E;AAC5E,iBAAS,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9D;AAOD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,6CAA6C;IAC7C,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAiB;IACvC,wCAAwC;IACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAAmB;IAC3C,4CAA4C;IAC5C,MAAM,CAAC,QAAQ,wBAAkB;CAClC"}
@@ -334,6 +334,10 @@ const PARITY_SUITES = [
334
334
  "batch save updates existing entity when committed",
335
335
  "throws when indexed model has no indexTableName",
336
336
  "getClassByName resolves class by table name fallback",
337
+ "protects sheet on first save when isProtected returns true",
338
+ "does not protect sheet when isProtected returns false",
339
+ "does not re-protect sheet on subsequent saves",
340
+ "protects sheet with empty editors list",
337
341
  ],
338
342
  },
339
343
  {
@@ -1 +1 @@
1
- {"version":3,"file":"ParityCatalog.js","sourceRoot":"","sources":["../../../src/testing/ParityCatalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParityCatalog.js","sourceRoot":"","sources":["../../../src/testing/ParityCatalog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeParity.d.ts","sourceRoot":"","sources":["../../../src/testing/RuntimeParity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AA2qJH;;;;;;GAMG;AACH,iBAAS,aAAa,IAAI,IAAI,CAiB7B;AA6GD,qEAAqE;AACrE,iBAAS,gBAAgB,IAAI,MAAM,CAIlC;AAED,gEAAgE;AAChE,iBAAS,gBAAgB,IAAI,MAAM,CAIlC;AAED,oDAAoD;AACpD,iBAAS,kBAAkB,IAAI,MAAM,CAIpC;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,gFAAgF;IAChF,MAAM,CAAC,WAAW,0BAAoB;IACtC,oEAAoE;IACpE,MAAM,CAAC,WAAW,0BAAoB;IACtC,2DAA2D;IAC3D,MAAM,CAAC,aAAa,4BAAsB;IAC1C,yEAAyE;IACzE,MAAM,CAAC,QAAQ,uBAAiB;IAChC,+EAA+E;IAC/E,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAA2B;CACpD"}
1
+ {"version":3,"file":"RuntimeParity.d.ts","sourceRoot":"","sources":["../../../src/testing/RuntimeParity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AA2xJH;;;;;;GAMG;AACH,iBAAS,aAAa,IAAI,IAAI,CAiB7B;AA6GD,qEAAqE;AACrE,iBAAS,gBAAgB,IAAI,MAAM,CAIlC;AAED,gEAAgE;AAChE,iBAAS,gBAAgB,IAAI,MAAM,CAIlC;AAED,oDAAoD;AACpD,iBAAS,kBAAkB,IAAI,MAAM,CAIpC;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,gFAAgF;IAChF,MAAM,CAAC,WAAW,0BAAoB;IACtC,oEAAoE;IACpE,MAAM,CAAC,WAAW,0BAAoB;IACtC,2DAA2D;IAC3D,MAAM,CAAC,aAAa,4BAAsB;IAC1C,yEAAyE;IACzE,MAAM,CAAC,QAAQ,uBAAiB;IAChC,+EAA+E;IAC/E,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAA2B;CACpD"}
@@ -2975,6 +2975,102 @@ const runtimeSuiteHandlers = {
2975
2975
  }
2976
2976
  assertTrue(threw, "save() should throw when indexed schema has no indexTableName");
2977
2977
  },
2978
+ "protects sheet on first save when isProtected returns true": (ctx) => {
2979
+ const adapter = ctx.state.getAdapter();
2980
+ const suffix = ctx.state.nextTableName("prot");
2981
+ Registry.reset();
2982
+ resetDecoratorCaches();
2983
+ Registry.getInstance().configure({ adapter });
2984
+ class ProtectedNote extends BaseRecord {
2985
+ static get tableName() {
2986
+ return `ProtNote_${suffix}`;
2987
+ }
2988
+ static isProtected() {
2989
+ return true;
2990
+ }
2991
+ static protectedFor() {
2992
+ return ["alice@example.com", "bob@example.com"];
2993
+ }
2994
+ }
2995
+ const note = new ProtectedNote();
2996
+ note.body = "secret";
2997
+ note.save();
2998
+ // Verify the sheet was created and protected
2999
+ const spreadsheet = ctx.state.getSpreadsheet();
3000
+ const sheet = spreadsheet.getSheetByName(`ProtNote_${suffix}`);
3001
+ assertTrue(sheet !== null, "protected sheet should exist");
3002
+ const protections = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
3003
+ assertTrue(protections.length > 0, "sheet should have at least one protection");
3004
+ const editors = protections[0].getEditors().map((e) => e.getEmail());
3005
+ assertTrue(editors.includes("alice@example.com"), "alice should be an editor");
3006
+ assertTrue(editors.includes("bob@example.com"), "bob should be an editor");
3007
+ },
3008
+ "does not protect sheet when isProtected returns false": (ctx) => {
3009
+ const { Car } = setup(ctx);
3010
+ const car = new Car();
3011
+ car.make = "Toyota";
3012
+ car.model = "Corolla";
3013
+ car.save();
3014
+ const spreadsheet = ctx.state.getSpreadsheet();
3015
+ const sheet = spreadsheet.getSheetByName(Car.tableName);
3016
+ assertTrue(sheet !== null, "sheet should exist");
3017
+ const protections = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
3018
+ assertEqual(protections.length, 0, "unprotected sheet should have no protections");
3019
+ },
3020
+ "does not re-protect sheet on subsequent saves": (ctx) => {
3021
+ const adapter = ctx.state.getAdapter();
3022
+ const suffix = ctx.state.nextTableName("reprot");
3023
+ Registry.reset();
3024
+ resetDecoratorCaches();
3025
+ Registry.getInstance().configure({ adapter });
3026
+ class TrackedProtected extends BaseRecord {
3027
+ static get tableName() {
3028
+ return `Tracked_${suffix}`;
3029
+ }
3030
+ static isProtected() {
3031
+ return true;
3032
+ }
3033
+ static protectedFor() {
3034
+ return ["admin@example.com"];
3035
+ }
3036
+ }
3037
+ const item1 = new TrackedProtected();
3038
+ item1.value = "first";
3039
+ item1.save();
3040
+ const spreadsheet = ctx.state.getSpreadsheet();
3041
+ const sheet = spreadsheet.getSheetByName(`Tracked_${suffix}`);
3042
+ assertTrue(sheet !== null, "sheet should exist");
3043
+ const protsBefore = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
3044
+ assertEqual(protsBefore.length, 1, "should have exactly one protection after first save");
3045
+ const item2 = new TrackedProtected();
3046
+ item2.value = "second";
3047
+ item2.save();
3048
+ const protsAfter = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
3049
+ assertEqual(protsAfter.length, 1, "should still have exactly one protection after second save");
3050
+ },
3051
+ "protects sheet with empty editors list": (ctx) => {
3052
+ const adapter = ctx.state.getAdapter();
3053
+ const suffix = ctx.state.nextTableName("locked");
3054
+ Registry.reset();
3055
+ resetDecoratorCaches();
3056
+ Registry.getInstance().configure({ adapter });
3057
+ class LockedSheet extends BaseRecord {
3058
+ static get tableName() {
3059
+ return `Locked_${suffix}`;
3060
+ }
3061
+ static isProtected() {
3062
+ return true;
3063
+ }
3064
+ }
3065
+ const item = new LockedSheet();
3066
+ item.data = "locked";
3067
+ item.save();
3068
+ const spreadsheet = ctx.state.getSpreadsheet();
3069
+ const sheet = spreadsheet.getSheetByName(`Locked_${suffix}`);
3070
+ assertTrue(sheet !== null, "sheet should exist");
3071
+ const protections = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
3072
+ assertTrue(protections.length > 0, "sheet should be protected even with no editors");
3073
+ },
2978
3074
  };
2979
3075
  })(),
2980
3076
  "sheet-repository.test.ts": {