@powerhousedao/reactor 6.0.0-dev.35 → 6.0.0-dev.37

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 (60) hide show
  1. package/dist/src/cache/kysely-operation-index.js +1 -1
  2. package/dist/src/cache/kysely-operation-index.js.map +1 -1
  3. package/dist/src/client/reactor-client.d.ts +2 -1
  4. package/dist/src/client/reactor-client.d.ts.map +1 -1
  5. package/dist/src/client/reactor-client.js +96 -19
  6. package/dist/src/client/reactor-client.js.map +1 -1
  7. package/dist/src/client/types.d.ts +10 -0
  8. package/dist/src/client/types.d.ts.map +1 -1
  9. package/dist/src/client/types.js.map +1 -1
  10. package/dist/src/core/reactor-builder.d.ts.map +1 -1
  11. package/dist/src/core/reactor-builder.js +1 -3
  12. package/dist/src/core/reactor-builder.js.map +1 -1
  13. package/dist/src/core/reactor.d.ts +2 -1
  14. package/dist/src/core/reactor.d.ts.map +1 -1
  15. package/dist/src/core/reactor.js +98 -4
  16. package/dist/src/core/reactor.js.map +1 -1
  17. package/dist/src/core/types.d.ts +32 -0
  18. package/dist/src/core/types.d.ts.map +1 -1
  19. package/dist/src/core/utils.d.ts +29 -0
  20. package/dist/src/core/utils.d.ts.map +1 -1
  21. package/dist/src/core/utils.js +31 -2
  22. package/dist/src/core/utils.js.map +1 -1
  23. package/dist/src/executor/document-action-handler.d.ts +37 -0
  24. package/dist/src/executor/document-action-handler.d.ts.map +1 -0
  25. package/dist/src/executor/document-action-handler.js +349 -0
  26. package/dist/src/executor/document-action-handler.js.map +1 -0
  27. package/dist/src/executor/signature-verifier.d.ts +9 -0
  28. package/dist/src/executor/signature-verifier.d.ts.map +1 -0
  29. package/dist/src/executor/signature-verifier.js +70 -0
  30. package/dist/src/executor/signature-verifier.js.map +1 -0
  31. package/dist/src/executor/simple-job-executor.d.ts +3 -39
  32. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  33. package/dist/src/executor/simple-job-executor.js +32 -510
  34. package/dist/src/executor/simple-job-executor.js.map +1 -1
  35. package/dist/src/executor/util.d.ts +11 -1
  36. package/dist/src/executor/util.d.ts.map +1 -1
  37. package/dist/src/executor/util.js +47 -1
  38. package/dist/src/executor/util.js.map +1 -1
  39. package/dist/src/index.d.ts +1 -1
  40. package/dist/src/index.d.ts.map +1 -1
  41. package/dist/src/index.js.map +1 -1
  42. package/dist/src/sync/channels/gql-channel.d.ts +1 -1
  43. package/dist/src/sync/channels/gql-channel.d.ts.map +1 -1
  44. package/dist/src/sync/channels/gql-channel.js +54 -19
  45. package/dist/src/sync/channels/gql-channel.js.map +1 -1
  46. package/dist/src/sync/channels/utils.d.ts.map +1 -1
  47. package/dist/src/sync/channels/utils.js +2 -2
  48. package/dist/src/sync/channels/utils.js.map +1 -1
  49. package/dist/src/sync/sync-manager.d.ts +6 -2
  50. package/dist/src/sync/sync-manager.d.ts.map +1 -1
  51. package/dist/src/sync/sync-manager.js +213 -129
  52. package/dist/src/sync/sync-manager.js.map +1 -1
  53. package/dist/src/sync/sync-operation.d.ts +2 -1
  54. package/dist/src/sync/sync-operation.d.ts.map +1 -1
  55. package/dist/src/sync/sync-operation.js +3 -1
  56. package/dist/src/sync/sync-operation.js.map +1 -1
  57. package/dist/src/sync/types.d.ts +2 -0
  58. package/dist/src/sync/types.d.ts.map +1 -1
  59. package/dist/src/sync/types.js.map +1 -1
  60. package/package.json +3 -3
@@ -0,0 +1,349 @@
1
+ import { driveCollectionId } from "../cache/operation-index-types.js";
2
+ import { DocumentDeletedError } from "../shared/errors.js";
3
+ import { applyDeleteDocumentAction, applyUpgradeDocumentAction, buildErrorResult, buildSuccessResult, createDocumentFromAction, createOperation, getNextIndexForScope, updateDocumentRevision, } from "./util.js";
4
+ export class DocumentActionHandler {
5
+ writeCache;
6
+ operationStore;
7
+ documentMetaCache;
8
+ collectionMembershipCache;
9
+ registry;
10
+ logger;
11
+ constructor(writeCache, operationStore, documentMetaCache, collectionMembershipCache, registry, logger) {
12
+ this.writeCache = writeCache;
13
+ this.operationStore = operationStore;
14
+ this.documentMetaCache = documentMetaCache;
15
+ this.collectionMembershipCache = collectionMembershipCache;
16
+ this.registry = registry;
17
+ this.logger = logger;
18
+ }
19
+ async execute(job, action, startTime, indexTxn, skip = 0) {
20
+ switch (action.type) {
21
+ case "CREATE_DOCUMENT":
22
+ return this.executeCreate(job, action, startTime, indexTxn, skip);
23
+ case "DELETE_DOCUMENT":
24
+ return this.executeDelete(job, action, startTime, indexTxn);
25
+ case "UPGRADE_DOCUMENT":
26
+ return this.executeUpgrade(job, action, startTime, indexTxn, skip);
27
+ case "ADD_RELATIONSHIP":
28
+ return this.executeAddRelationship(job, action, startTime, indexTxn);
29
+ case "REMOVE_RELATIONSHIP":
30
+ return this.executeRemoveRelationship(job, action, startTime, indexTxn);
31
+ default:
32
+ return buildErrorResult(job, new Error(`Unknown document action type: ${action.type}`), startTime);
33
+ }
34
+ }
35
+ async executeCreate(job, action, startTime, indexTxn, skip = 0) {
36
+ if (job.scope !== "document") {
37
+ return {
38
+ job,
39
+ success: false,
40
+ error: new Error(`CREATE_DOCUMENT must be in "document" scope, got "${job.scope}"`),
41
+ duration: Date.now() - startTime,
42
+ };
43
+ }
44
+ const document = createDocumentFromAction(action);
45
+ const operation = createOperation(action, 0, skip, {
46
+ documentId: document.header.id,
47
+ scope: job.scope,
48
+ branch: job.branch,
49
+ });
50
+ const resultingStateObj = {
51
+ header: document.header,
52
+ ...document.state,
53
+ };
54
+ const resultingState = JSON.stringify(resultingStateObj);
55
+ const writeError = await this.writeOperationToStore(document.header.id, document.header.documentType, job.scope, job.branch, operation, job, startTime);
56
+ if (writeError !== null) {
57
+ return writeError;
58
+ }
59
+ updateDocumentRevision(document, job.scope, operation.index);
60
+ this.writeCache.putState(document.header.id, job.scope, job.branch, operation.index, document);
61
+ indexTxn.write([
62
+ {
63
+ ...operation,
64
+ documentId: document.header.id,
65
+ documentType: document.header.documentType,
66
+ branch: job.branch,
67
+ scope: job.scope,
68
+ },
69
+ ]);
70
+ if (document.header.documentType === "powerhouse/document-drive") {
71
+ const collectionId = driveCollectionId(job.branch, document.header.id);
72
+ indexTxn.createCollection(collectionId);
73
+ indexTxn.addToCollection(collectionId, document.header.id);
74
+ }
75
+ this.documentMetaCache.putDocumentMeta(document.header.id, job.branch, {
76
+ state: document.state.document,
77
+ documentType: document.header.documentType,
78
+ documentScopeRevision: 1,
79
+ });
80
+ return buildSuccessResult(job, operation, document.header.id, document.header.documentType, resultingState, startTime);
81
+ }
82
+ async executeDelete(job, action, startTime, indexTxn) {
83
+ const input = action.input;
84
+ if (!input.documentId) {
85
+ return buildErrorResult(job, new Error("DELETE_DOCUMENT action requires a documentId in input"), startTime);
86
+ }
87
+ const documentId = input.documentId;
88
+ let document;
89
+ try {
90
+ document = await this.writeCache.getState(documentId, job.scope, job.branch);
91
+ }
92
+ catch (error) {
93
+ return buildErrorResult(job, new Error(`Failed to fetch document before deletion: ${error instanceof Error ? error.message : String(error)}`), startTime);
94
+ }
95
+ const documentState = document.state.document;
96
+ if (documentState.isDeleted) {
97
+ return buildErrorResult(job, new DocumentDeletedError(documentId, documentState.deletedAtUtcIso), startTime);
98
+ }
99
+ const nextIndex = getNextIndexForScope(document, job.scope);
100
+ const operation = createOperation(action, nextIndex, 0, {
101
+ documentId,
102
+ scope: job.scope,
103
+ branch: job.branch,
104
+ });
105
+ applyDeleteDocumentAction(document, action);
106
+ const resultingStateObj = {
107
+ header: document.header,
108
+ document: document.state.document,
109
+ };
110
+ const resultingState = JSON.stringify(resultingStateObj);
111
+ const writeError = await this.writeOperationToStore(documentId, document.header.documentType, job.scope, job.branch, operation, job, startTime);
112
+ if (writeError !== null) {
113
+ return writeError;
114
+ }
115
+ indexTxn.write([
116
+ {
117
+ ...operation,
118
+ documentId: documentId,
119
+ documentType: document.header.documentType,
120
+ branch: job.branch,
121
+ scope: job.scope,
122
+ },
123
+ ]);
124
+ this.documentMetaCache.putDocumentMeta(documentId, job.branch, {
125
+ state: document.state.document,
126
+ documentType: document.header.documentType,
127
+ documentScopeRevision: operation.index + 1,
128
+ });
129
+ return buildSuccessResult(job, operation, documentId, document.header.documentType, resultingState, startTime);
130
+ }
131
+ async executeUpgrade(job, action, startTime, indexTxn, skip = 0) {
132
+ const input = action.input;
133
+ if (!input.documentId) {
134
+ return buildErrorResult(job, new Error("UPGRADE_DOCUMENT action requires a documentId in input"), startTime);
135
+ }
136
+ const documentId = input.documentId;
137
+ const fromVersion = input.fromVersion;
138
+ const toVersion = input.toVersion;
139
+ let document;
140
+ try {
141
+ document = await this.writeCache.getState(documentId, job.scope, job.branch);
142
+ }
143
+ catch (error) {
144
+ return buildErrorResult(job, new Error(`Failed to fetch document for upgrade: ${error instanceof Error ? error.message : String(error)}`), startTime);
145
+ }
146
+ const documentState = document.state.document;
147
+ if (documentState.isDeleted) {
148
+ return buildErrorResult(job, new DocumentDeletedError(documentId, documentState.deletedAtUtcIso), startTime);
149
+ }
150
+ const nextIndex = getNextIndexForScope(document, job.scope);
151
+ let upgradePath;
152
+ if (fromVersion > 0 && fromVersion < toVersion) {
153
+ try {
154
+ upgradePath = this.registry.computeUpgradePath(document.header.documentType, fromVersion, toVersion);
155
+ }
156
+ catch (error) {
157
+ return buildErrorResult(job, error instanceof Error ? error : new Error(String(error)), startTime);
158
+ }
159
+ }
160
+ if (fromVersion === toVersion && fromVersion > 0) {
161
+ return {
162
+ job,
163
+ success: true,
164
+ operations: [],
165
+ operationsWithContext: [],
166
+ duration: Date.now() - startTime,
167
+ };
168
+ }
169
+ try {
170
+ document = applyUpgradeDocumentAction(document, action, upgradePath);
171
+ }
172
+ catch (error) {
173
+ return buildErrorResult(job, error instanceof Error ? error : new Error(String(error)), startTime);
174
+ }
175
+ const operation = createOperation(action, nextIndex, skip, {
176
+ documentId,
177
+ scope: job.scope,
178
+ branch: job.branch,
179
+ });
180
+ const resultingStateObj = {
181
+ header: document.header,
182
+ ...document.state,
183
+ };
184
+ const resultingState = JSON.stringify(resultingStateObj);
185
+ const writeError = await this.writeOperationToStore(documentId, document.header.documentType, job.scope, job.branch, operation, job, startTime);
186
+ if (writeError !== null) {
187
+ return writeError;
188
+ }
189
+ updateDocumentRevision(document, job.scope, operation.index);
190
+ this.writeCache.putState(documentId, job.scope, job.branch, operation.index, document);
191
+ indexTxn.write([
192
+ {
193
+ ...operation,
194
+ documentId: documentId,
195
+ documentType: document.header.documentType,
196
+ branch: job.branch,
197
+ scope: job.scope,
198
+ },
199
+ ]);
200
+ this.documentMetaCache.putDocumentMeta(documentId, job.branch, {
201
+ state: document.state.document,
202
+ documentType: document.header.documentType,
203
+ documentScopeRevision: operation.index + 1,
204
+ });
205
+ return buildSuccessResult(job, operation, documentId, document.header.documentType, resultingState, startTime);
206
+ }
207
+ async executeAddRelationship(job, action, startTime, indexTxn) {
208
+ if (job.scope !== "document") {
209
+ return buildErrorResult(job, new Error(`ADD_RELATIONSHIP must be in "document" scope, got "${job.scope}"`), startTime);
210
+ }
211
+ const input = action.input;
212
+ if (!input.sourceId || !input.targetId || !input.relationshipType) {
213
+ return buildErrorResult(job, new Error("ADD_RELATIONSHIP action requires sourceId, targetId, and relationshipType in input"), startTime);
214
+ }
215
+ if (input.sourceId === input.targetId) {
216
+ return buildErrorResult(job, new Error("ADD_RELATIONSHIP: sourceId and targetId cannot be the same (self-relationships not allowed)"), startTime);
217
+ }
218
+ let sourceDoc;
219
+ try {
220
+ sourceDoc = await this.writeCache.getState(input.sourceId, "document", job.branch);
221
+ }
222
+ catch (error) {
223
+ return buildErrorResult(job, new Error(`ADD_RELATIONSHIP: source document ${input.sourceId} not found: ${error instanceof Error ? error.message : String(error)}`), startTime);
224
+ }
225
+ const nextIndex = getNextIndexForScope(sourceDoc, job.scope);
226
+ const operation = createOperation(action, nextIndex, 0, {
227
+ documentId: input.sourceId,
228
+ scope: job.scope,
229
+ branch: job.branch,
230
+ });
231
+ const writeError = await this.writeOperationToStore(input.sourceId, sourceDoc.header.documentType, job.scope, job.branch, operation, job, startTime);
232
+ if (writeError !== null) {
233
+ return writeError;
234
+ }
235
+ sourceDoc.header.lastModifiedAtUtcIso =
236
+ operation.timestampUtcMs || new Date().toISOString();
237
+ updateDocumentRevision(sourceDoc, job.scope, operation.index);
238
+ sourceDoc.operations = {
239
+ ...sourceDoc.operations,
240
+ [job.scope]: [...(sourceDoc.operations[job.scope] ?? []), operation],
241
+ };
242
+ const scopeState = sourceDoc.state[job.scope];
243
+ const resultingStateObj = {
244
+ header: structuredClone(sourceDoc.header),
245
+ [job.scope]: scopeState === undefined ? {} : structuredClone(scopeState),
246
+ };
247
+ const resultingState = JSON.stringify(resultingStateObj);
248
+ this.writeCache.putState(input.sourceId, job.scope, job.branch, operation.index, sourceDoc);
249
+ indexTxn.write([
250
+ {
251
+ ...operation,
252
+ documentId: input.sourceId,
253
+ documentType: sourceDoc.header.documentType,
254
+ branch: job.branch,
255
+ scope: job.scope,
256
+ },
257
+ ]);
258
+ if (sourceDoc.header.documentType === "powerhouse/document-drive") {
259
+ const collectionId = driveCollectionId(job.branch, input.sourceId);
260
+ indexTxn.addToCollection(collectionId, input.targetId);
261
+ this.collectionMembershipCache.invalidate(input.targetId);
262
+ }
263
+ this.documentMetaCache.putDocumentMeta(input.sourceId, job.branch, {
264
+ state: sourceDoc.state.document,
265
+ documentType: sourceDoc.header.documentType,
266
+ documentScopeRevision: operation.index + 1,
267
+ });
268
+ return buildSuccessResult(job, operation, input.sourceId, sourceDoc.header.documentType, resultingState, startTime);
269
+ }
270
+ async executeRemoveRelationship(job, action, startTime, indexTxn) {
271
+ if (job.scope !== "document") {
272
+ return buildErrorResult(job, new Error(`REMOVE_RELATIONSHIP must be in "document" scope, got "${job.scope}"`), startTime);
273
+ }
274
+ const input = action.input;
275
+ if (!input.sourceId || !input.targetId || !input.relationshipType) {
276
+ return buildErrorResult(job, new Error("REMOVE_RELATIONSHIP action requires sourceId, targetId, and relationshipType in input"), startTime);
277
+ }
278
+ let sourceDoc;
279
+ try {
280
+ sourceDoc = await this.writeCache.getState(input.sourceId, "document", job.branch);
281
+ }
282
+ catch (error) {
283
+ return buildErrorResult(job, new Error(`REMOVE_RELATIONSHIP: source document ${input.sourceId} not found: ${error instanceof Error ? error.message : String(error)}`), startTime);
284
+ }
285
+ const nextIndex = getNextIndexForScope(sourceDoc, job.scope);
286
+ const operation = createOperation(action, nextIndex, 0, {
287
+ documentId: input.sourceId,
288
+ scope: job.scope,
289
+ branch: job.branch,
290
+ });
291
+ const writeError = await this.writeOperationToStore(input.sourceId, sourceDoc.header.documentType, job.scope, job.branch, operation, job, startTime);
292
+ if (writeError !== null) {
293
+ return writeError;
294
+ }
295
+ sourceDoc.header.lastModifiedAtUtcIso =
296
+ operation.timestampUtcMs || new Date().toISOString();
297
+ updateDocumentRevision(sourceDoc, job.scope, operation.index);
298
+ sourceDoc.operations = {
299
+ ...sourceDoc.operations,
300
+ [job.scope]: [...(sourceDoc.operations[job.scope] ?? []), operation],
301
+ };
302
+ const scopeState = sourceDoc.state[job.scope];
303
+ const resultingStateObj = {
304
+ header: structuredClone(sourceDoc.header),
305
+ [job.scope]: scopeState === undefined ? {} : structuredClone(scopeState),
306
+ };
307
+ const resultingState = JSON.stringify(resultingStateObj);
308
+ this.writeCache.putState(input.sourceId, job.scope, job.branch, operation.index, sourceDoc);
309
+ indexTxn.write([
310
+ {
311
+ ...operation,
312
+ documentId: input.sourceId,
313
+ documentType: sourceDoc.header.documentType,
314
+ branch: job.branch,
315
+ scope: job.scope,
316
+ },
317
+ ]);
318
+ if (sourceDoc.header.documentType === "powerhouse/document-drive") {
319
+ const collectionId = driveCollectionId(job.branch, input.sourceId);
320
+ indexTxn.removeFromCollection(collectionId, input.targetId);
321
+ this.collectionMembershipCache.invalidate(input.targetId);
322
+ }
323
+ this.documentMetaCache.putDocumentMeta(input.sourceId, job.branch, {
324
+ state: sourceDoc.state.document,
325
+ documentType: sourceDoc.header.documentType,
326
+ documentScopeRevision: operation.index + 1,
327
+ });
328
+ return buildSuccessResult(job, operation, input.sourceId, sourceDoc.header.documentType, resultingState, startTime);
329
+ }
330
+ async writeOperationToStore(documentId, documentType, scope, branch, operation, job, startTime) {
331
+ try {
332
+ await this.operationStore.apply(documentId, documentType, scope, branch, operation.index, (txn) => {
333
+ txn.addOperations(operation);
334
+ });
335
+ return null;
336
+ }
337
+ catch (error) {
338
+ this.logger.error("Error writing @Operation to IOperationStore: @Error", operation, error);
339
+ this.writeCache.invalidate(documentId, scope, branch);
340
+ return {
341
+ job,
342
+ success: false,
343
+ error: new Error(`Failed to write operation to IOperationStore: ${error instanceof Error ? error.message : String(error)}`),
344
+ duration: Date.now() - startTime,
345
+ };
346
+ }
347
+ }
348
+ }
349
+ //# sourceMappingURL=document-action-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-action-handler.js","sourceRoot":"","sources":["../../../src/executor/document-action-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Action, Operation } from "document-model";
2
+ import type { SignatureVerificationHandler } from "../signer/types.js";
3
+ export declare class SignatureVerifier {
4
+ private verifier?;
5
+ constructor(verifier?: SignatureVerificationHandler | undefined);
6
+ verifyActions(documentId: string, branch: string, actions: Action[]): Promise<void>;
7
+ verifyOperations(documentId: string, operations: Operation[]): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=signature-verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-verifier.d.ts","sourceRoot":"","sources":["../../../src/executor/signature-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAEvE,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC;gBAAT,QAAQ,CAAC,EAAE,4BAA4B,YAAA;IAErD,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC;IAmDV,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC;CA0CjB"}
@@ -0,0 +1,70 @@
1
+ import { deriveOperationId } from "document-model/core";
2
+ import { InvalidSignatureError } from "../shared/errors.js";
3
+ export class SignatureVerifier {
4
+ verifier;
5
+ constructor(verifier) {
6
+ this.verifier = verifier;
7
+ }
8
+ async verifyActions(documentId, branch, actions) {
9
+ if (!this.verifier) {
10
+ return;
11
+ }
12
+ for (const action of actions) {
13
+ const signer = action.context?.signer;
14
+ if (!signer) {
15
+ continue;
16
+ }
17
+ if (signer.signatures.length === 0) {
18
+ throw new InvalidSignatureError(documentId, `Action ${action.id} has signer but no signatures`);
19
+ }
20
+ const publicKey = signer.app.key;
21
+ let isValid = false;
22
+ try {
23
+ const tempOperation = {
24
+ id: deriveOperationId(documentId, action.scope, branch, action.id),
25
+ index: 0,
26
+ timestampUtcMs: action.timestampUtcMs || new Date().toISOString(),
27
+ hash: "",
28
+ skip: 0,
29
+ action: action,
30
+ };
31
+ isValid = await this.verifier(tempOperation, publicKey);
32
+ }
33
+ catch (error) {
34
+ const errorMessage = error instanceof Error ? error.message : String(error);
35
+ throw new InvalidSignatureError(documentId, `Action ${action.id} verification failed: ${errorMessage}`);
36
+ }
37
+ if (!isValid) {
38
+ throw new InvalidSignatureError(documentId, `Action ${action.id} signature verification returned false`);
39
+ }
40
+ }
41
+ }
42
+ async verifyOperations(documentId, operations) {
43
+ if (!this.verifier) {
44
+ return;
45
+ }
46
+ for (let i = 0; i < operations.length; i++) {
47
+ const operation = operations[i];
48
+ const signer = operation.action.context?.signer;
49
+ if (!signer) {
50
+ continue;
51
+ }
52
+ if (signer.signatures.length === 0) {
53
+ throw new InvalidSignatureError(documentId, `Operation ${operation.id} at index ${operation.index} has signer but no signatures`);
54
+ }
55
+ const publicKey = signer.app.key;
56
+ let isValid = false;
57
+ try {
58
+ isValid = await this.verifier(operation, publicKey);
59
+ }
60
+ catch (error) {
61
+ const errorMessage = error instanceof Error ? error.message : String(error);
62
+ throw new InvalidSignatureError(documentId, `Operation ${operation.id} at index ${operation.index} verification failed: ${errorMessage}`);
63
+ }
64
+ if (!isValid) {
65
+ throw new InvalidSignatureError(documentId, `Operation ${operation.id} at index ${operation.index} signature verification returned false`);
66
+ }
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=signature-verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-verifier.js","sourceRoot":"","sources":["../../../src/executor/signature-verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,OAAO,iBAAiB;IACR;IAApB,YAAoB,QAAuC;QAAvC,aAAQ,GAAR,QAAQ,CAA+B;IAAG,CAAC;IAE/D,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,MAAc,EACd,OAAiB;QAEjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;YAEtC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,qBAAqB,CAC7B,UAAU,EACV,UAAU,MAAM,CAAC,EAAE,+BAA+B,CACnD,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YACjC,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,IAAI,CAAC;gBACH,MAAM,aAAa,GAAc;oBAC/B,EAAE,EAAE,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;oBAClE,KAAK,EAAE,CAAC;oBACR,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACjE,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE,MAAM;iBACf,CAAC;gBAEF,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,MAAM,IAAI,qBAAqB,CAC7B,UAAU,EACV,UAAU,MAAM,CAAC,EAAE,yBAAyB,YAAY,EAAE,CAC3D,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,qBAAqB,CAC7B,UAAU,EACV,UAAU,MAAM,CAAC,EAAE,wCAAwC,CAC5D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,UAAkB,EAClB,UAAuB;QAEvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;YAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,qBAAqB,CAC7B,UAAU,EACV,aAAa,SAAS,CAAC,EAAE,aAAa,SAAS,CAAC,KAAK,+BAA+B,CACrF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YACjC,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,MAAM,IAAI,qBAAqB,CAC7B,UAAU,EACV,aAAa,SAAS,CAAC,EAAE,aAAa,SAAS,CAAC,KAAK,yBAAyB,YAAY,EAAE,CAC7F,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,qBAAqB,CAC7B,UAAU,EACV,aAAa,SAAS,CAAC,EAAE,aAAa,SAAS,CAAC,KAAK,wCAAwC,CAC9F,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -22,9 +22,10 @@ export declare class SimpleJobExecutor implements IJobExecutor {
22
22
  private operationIndex;
23
23
  private documentMetaCache;
24
24
  private collectionMembershipCache;
25
- private signatureVerifier?;
26
25
  private config;
27
- constructor(logger: ILogger, registry: IDocumentModelRegistry, operationStore: IOperationStore, eventBus: IEventBus, writeCache: IWriteCache, operationIndex: IOperationIndex, documentMetaCache: IDocumentMetaCache, collectionMembershipCache: ICollectionMembershipCache, config: JobExecutorConfig, signatureVerifier?: SignatureVerificationHandler | undefined);
26
+ private signatureVerifierModule;
27
+ private documentActionHandler;
28
+ constructor(logger: ILogger, registry: IDocumentModelRegistry, operationStore: IOperationStore, eventBus: IEventBus, writeCache: IWriteCache, operationIndex: IOperationIndex, documentMetaCache: IDocumentMetaCache, collectionMembershipCache: ICollectionMembershipCache, config: JobExecutorConfig, signatureVerifier?: SignatureVerificationHandler);
28
29
  /**
29
30
  * Execute a single job by applying all its actions through the appropriate reducers.
30
31
  * Actions are processed sequentially in order.
@@ -32,45 +33,8 @@ export declare class SimpleJobExecutor implements IJobExecutor {
32
33
  executeJob(job: Job): Promise<JobResult>;
33
34
  private getCollectionMembershipsForOperations;
34
35
  private processActions;
35
- /**
36
- * Execute a document scope action (CREATE_DOCUMENT, DELETE_DOCUMENT, UPGRADE_DOCUMENT,
37
- * ADD_RELATIONSHIP, REMOVE_RELATIONSHIP) by dispatching to the appropriate handler.
38
- */
39
- private executeDocumentAction;
40
- /**
41
- * Execute a CREATE_DOCUMENT system action.
42
- * This creates a new document in storage along with its initial operation.
43
- * For a new document, the operation index is always 0.
44
- */
45
- private executeCreateDocumentAction;
46
- /**
47
- * Execute a DELETE_DOCUMENT system action.
48
- * This deletes a document from legacy storage and writes the operation to IOperationStore.
49
- * The operation index is determined from the document's current operation count.
50
- */
51
- private executeDeleteDocumentAction;
52
- /**
53
- * Execute an UPGRADE_DOCUMENT system action.
54
- * Handles initial upgrades (version 0 to N), same-version no-ops, and multi-step upgrade chains.
55
- * The operation index is determined from the document's current operation count.
56
- */
57
- private executeUpgradeDocumentAction;
58
- private executeAddRelationshipAction;
59
- private executeRemoveRelationshipAction;
60
- /**
61
- * Execute a regular document action by applying it through the document model reducer.
62
- * If sourceOperation is provided (for load jobs), its id and timestamp are preserved.
63
- */
64
36
  private executeRegularAction;
65
- private createOperation;
66
37
  private executeLoadJob;
67
- private writeOperationToStore;
68
- private updateDocumentRevision;
69
- private writeCacheState;
70
- private buildSuccessResult;
71
- private buildErrorResult;
72
- private verifyOperationSignatures;
73
- private verifyActionSignatures;
74
38
  private accumulateResultOrReturnError;
75
39
  }
76
40
  //# sourceMappingURL=simple-job-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-job-executor.d.ts","sourceRoot":"","sources":["../../../src/executor/simple-job-executor.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAKxE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyB/D;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAIlD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,yBAAyB;IAEjC,OAAO,CAAC,iBAAiB,CAAC;IAZ5B,OAAO,CAAC,MAAM,CAA8B;gBAGlC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,sBAAsB,EAChC,cAAc,EAAE,eAAe,EAC/B,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,eAAe,EAC/B,iBAAiB,EAAE,kBAAkB,EACrC,yBAAyB,EAAE,0BAA0B,EAC7D,MAAM,EAAE,iBAAiB,EACjB,iBAAiB,CAAC,EAAE,4BAA4B,YAAA;IAW1D;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;YA+EhC,qCAAqC;YAWrC,cAAc;IAmE5B;;;OAGG;YACW,qBAAqB;IAkEnC;;;;OAIG;YACW,2BAA2B;IAwGzC;;;;OAIG;YACW,2BAA2B;IAmHzC;;;;OAIG;YACW,4BAA4B;YAqK5B,4BAA4B;YAmJ5B,+BAA+B;IAyI7C;;;OAGG;YACW,oBAAoB;IAsLlC,OAAO,CAAC,eAAe;YAuBT,cAAc;YA8Ld,qBAAqB;IAyCnC,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,gBAAgB;YAaV,yBAAyB;YA8CzB,sBAAsB;IA2DpC,OAAO,CAAC,6BAA6B;CAgBtC"}
1
+ {"version":3,"file":"simple-job-executor.d.ts","sourceRoot":"","sources":["../../../src/executor/simple-job-executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoB/D;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAMlD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,yBAAyB;IAZnC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,uBAAuB,CAAoB;IACnD,OAAO,CAAC,qBAAqB,CAAwB;gBAG3C,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,sBAAsB,EAChC,cAAc,EAAE,eAAe,EAC/B,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,eAAe,EAC/B,iBAAiB,EAAE,kBAAkB,EACrC,yBAAyB,EAAE,0BAA0B,EAC7D,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,CAAC,EAAE,4BAA4B;IAoBlD;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;YA+EhC,qCAAqC;YAWrC,cAAc;YAuEd,oBAAoB;YAoMpB,cAAc;IAgL5B,OAAO,CAAC,6BAA6B;CAgBtC"}