@powerhousedao/reactor 5.1.0 → 5.2.0-staging.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/src/cache/document-meta-cache-types.d.ts +114 -0
  2. package/dist/src/cache/document-meta-cache-types.d.ts.map +1 -0
  3. package/dist/src/cache/document-meta-cache-types.js +2 -0
  4. package/dist/src/cache/document-meta-cache-types.js.map +1 -0
  5. package/dist/src/cache/document-meta-cache.d.ts +30 -0
  6. package/dist/src/cache/document-meta-cache.d.ts.map +1 -0
  7. package/dist/src/cache/document-meta-cache.js +127 -0
  8. package/dist/src/cache/document-meta-cache.js.map +1 -0
  9. package/dist/src/cache/kysely-operation-index.d.ts +4 -2
  10. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
  11. package/dist/src/cache/kysely-operation-index.js +54 -0
  12. package/dist/src/cache/kysely-operation-index.js.map +1 -1
  13. package/dist/src/cache/operation-index-types.d.ts +3 -2
  14. package/dist/src/cache/operation-index-types.d.ts.map +1 -1
  15. package/dist/src/cache/operation-index-types.js.map +1 -1
  16. package/dist/src/client/reactor-client.d.ts +6 -6
  17. package/dist/src/client/reactor-client.d.ts.map +1 -1
  18. package/dist/src/client/reactor-client.js +48 -45
  19. package/dist/src/client/reactor-client.js.map +1 -1
  20. package/dist/src/client/types.d.ts +10 -10
  21. package/dist/src/client/types.d.ts.map +1 -1
  22. package/dist/src/core/reactor-builder.d.ts +9 -3
  23. package/dist/src/core/reactor-builder.d.ts.map +1 -1
  24. package/dist/src/core/reactor-builder.js +81 -29
  25. package/dist/src/core/reactor-builder.js.map +1 -1
  26. package/dist/src/core/{builder.d.ts → reactor-client-builder.d.ts} +11 -4
  27. package/dist/src/core/reactor-client-builder.d.ts.map +1 -0
  28. package/dist/src/core/{builder.js → reactor-client-builder.js} +43 -23
  29. package/dist/src/core/reactor-client-builder.js.map +1 -0
  30. package/dist/src/core/reactor.d.ts +11 -14
  31. package/dist/src/core/reactor.d.ts.map +1 -1
  32. package/dist/src/core/reactor.js +47 -43
  33. package/dist/src/core/reactor.js.map +1 -1
  34. package/dist/src/core/types.d.ts +84 -20
  35. package/dist/src/core/types.d.ts.map +1 -1
  36. package/dist/src/core/utils.d.ts +9 -0
  37. package/dist/src/core/utils.d.ts.map +1 -1
  38. package/dist/src/core/utils.js +30 -0
  39. package/dist/src/core/utils.js.map +1 -1
  40. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
  41. package/dist/src/executor/simple-job-executor-manager.js +1 -0
  42. package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
  43. package/dist/src/executor/simple-job-executor.d.ts +7 -1
  44. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  45. package/dist/src/executor/simple-job-executor.js +142 -21
  46. package/dist/src/executor/simple-job-executor.js.map +1 -1
  47. package/dist/src/index.d.ts +13 -6
  48. package/dist/src/index.d.ts.map +1 -1
  49. package/dist/src/index.js +9 -3
  50. package/dist/src/index.js.map +1 -1
  51. package/dist/src/logging/console.d.ts +13 -0
  52. package/dist/src/logging/console.d.ts.map +1 -0
  53. package/dist/src/logging/console.js +77 -0
  54. package/dist/src/logging/console.js.map +1 -0
  55. package/dist/src/logging/types.d.ts +11 -0
  56. package/dist/src/logging/types.d.ts.map +1 -0
  57. package/dist/src/logging/types.js +2 -0
  58. package/dist/src/logging/types.js.map +1 -0
  59. package/dist/src/read-models/base-read-model.d.ts +60 -0
  60. package/dist/src/read-models/base-read-model.d.ts.map +1 -0
  61. package/dist/src/read-models/base-read-model.js +143 -0
  62. package/dist/src/read-models/base-read-model.js.map +1 -0
  63. package/dist/src/read-models/document-view.d.ts +6 -7
  64. package/dist/src/read-models/document-view.d.ts.map +1 -1
  65. package/dist/src/read-models/document-view.js +16 -81
  66. package/dist/src/read-models/document-view.js.map +1 -1
  67. package/dist/src/read-models/types.d.ts +2 -1
  68. package/dist/src/read-models/types.d.ts.map +1 -1
  69. package/dist/src/shared/errors.d.ts +8 -0
  70. package/dist/src/shared/errors.d.ts.map +1 -1
  71. package/dist/src/shared/errors.js +14 -0
  72. package/dist/src/shared/errors.js.map +1 -1
  73. package/dist/src/signer/types.d.ts +23 -1
  74. package/dist/src/signer/types.d.ts.map +1 -1
  75. package/dist/src/storage/consistency-aware-legacy-storage.d.ts +33 -0
  76. package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +1 -0
  77. package/dist/src/storage/consistency-aware-legacy-storage.js +65 -0
  78. package/dist/src/storage/consistency-aware-legacy-storage.js.map +1 -0
  79. package/dist/src/storage/interfaces.d.ts +81 -0
  80. package/dist/src/storage/interfaces.d.ts.map +1 -1
  81. package/dist/src/storage/interfaces.js.map +1 -1
  82. package/dist/src/storage/kysely/store.d.ts.map +1 -1
  83. package/dist/src/storage/kysely/store.js +1 -0
  84. package/dist/src/storage/kysely/store.js.map +1 -1
  85. package/dist/src/storage/kysely/sync-remote-storage.d.ts.map +1 -1
  86. package/dist/src/storage/kysely/sync-remote-storage.js +3 -4
  87. package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
  88. package/dist/src/storage/migrations/008_create_view_state_table.d.ts +1 -1
  89. package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +1 -1
  90. package/dist/src/storage/migrations/008_create_view_state_table.js +2 -1
  91. package/dist/src/storage/migrations/008_create_view_state_table.js.map +1 -1
  92. package/dist/src/storage/migrations/run-migrations.js +3 -3
  93. package/dist/src/storage/migrations/run-migrations.js.map +1 -1
  94. package/dist/src/sync/channels/composite-channel-factory.d.ts +27 -0
  95. package/dist/src/sync/channels/composite-channel-factory.d.ts.map +1 -0
  96. package/dist/src/sync/channels/composite-channel-factory.js +86 -0
  97. package/dist/src/sync/channels/composite-channel-factory.js.map +1 -0
  98. package/dist/src/sync/channels/gql-channel-factory.d.ts +22 -0
  99. package/dist/src/sync/channels/gql-channel-factory.d.ts.map +1 -0
  100. package/dist/src/sync/channels/gql-channel-factory.js +72 -0
  101. package/dist/src/sync/channels/gql-channel-factory.js.map +1 -0
  102. package/dist/src/sync/channels/gql-channel.d.ts +104 -0
  103. package/dist/src/sync/channels/gql-channel.d.ts.map +1 -0
  104. package/dist/src/sync/channels/gql-channel.js +349 -0
  105. package/dist/src/sync/channels/gql-channel.js.map +1 -0
  106. package/dist/src/sync/channels/index.d.ts +3 -0
  107. package/dist/src/sync/channels/index.d.ts.map +1 -1
  108. package/dist/src/sync/channels/index.js +3 -0
  109. package/dist/src/sync/channels/index.js.map +1 -1
  110. package/dist/src/sync/channels/internal-channel.d.ts +5 -0
  111. package/dist/src/sync/channels/internal-channel.d.ts.map +1 -1
  112. package/dist/src/sync/channels/internal-channel.js +7 -0
  113. package/dist/src/sync/channels/internal-channel.js.map +1 -1
  114. package/dist/src/sync/index.d.ts +1 -1
  115. package/dist/src/sync/index.d.ts.map +1 -1
  116. package/dist/src/sync/index.js +1 -1
  117. package/dist/src/sync/index.js.map +1 -1
  118. package/dist/src/sync/interfaces.d.ts +26 -3
  119. package/dist/src/sync/interfaces.d.ts.map +1 -1
  120. package/dist/src/sync/sync-builder.d.ts +2 -1
  121. package/dist/src/sync/sync-builder.d.ts.map +1 -1
  122. package/dist/src/sync/sync-builder.js +11 -1
  123. package/dist/src/sync/sync-builder.js.map +1 -1
  124. package/dist/src/sync/sync-manager.d.ts +4 -2
  125. package/dist/src/sync/sync-manager.d.ts.map +1 -1
  126. package/dist/src/sync/sync-manager.js +60 -4
  127. package/dist/src/sync/sync-manager.js.map +1 -1
  128. package/dist/src/sync/types.d.ts +1 -2
  129. package/dist/src/sync/types.d.ts.map +1 -1
  130. package/package.json +6 -5
  131. package/dist/src/core/builder.d.ts.map +0 -1
  132. package/dist/src/core/builder.js.map +0 -1
@@ -12,6 +12,7 @@ export class ReactorClientBuilder {
12
12
  eventBus;
13
13
  documentIndexer;
14
14
  signer;
15
+ signatureVerifier;
15
16
  subscriptionManager;
16
17
  jobAwaiter;
17
18
  /**
@@ -36,8 +37,19 @@ export class ReactorClientBuilder {
36
37
  this.documentIndexer = documentIndexer;
37
38
  return this;
38
39
  }
39
- withSigner(signer) {
40
- this.signer = signer;
40
+ /**
41
+ * Sets the signer configuration for signing and verifying actions.
42
+ *
43
+ * @param config - Either an ISigner for signing only, or a SignerConfig for both signing and verification
44
+ */
45
+ withSigner(config) {
46
+ if ("signer" in config) {
47
+ this.signer = config.signer;
48
+ this.signatureVerifier = config.verifier;
49
+ }
50
+ else {
51
+ this.signer = config;
52
+ }
41
53
  return this;
42
54
  }
43
55
  withSubscriptionManager(subscriptionManager) {
@@ -49,40 +61,48 @@ export class ReactorClientBuilder {
49
61
  return this;
50
62
  }
51
63
  async build() {
64
+ const module = await this.buildModule();
65
+ return module.client;
66
+ }
67
+ async buildModule() {
52
68
  let reactor;
53
69
  let eventBus;
54
70
  let documentIndexer;
71
+ let reactorModule;
55
72
  if (this.reactorBuilder) {
56
- reactor = await this.reactorBuilder.build();
57
- const builderEventBus = this.reactorBuilder.events;
58
- const builderDocumentIndexer = this.reactorBuilder.documentIndexer;
59
- if (!builderEventBus) {
60
- throw new Error("Event bus is required in ReactorBuilder");
61
- }
62
- if (!builderDocumentIndexer) {
63
- throw new Error("DocumentIndexer must be initialized by ReactorBuilder");
73
+ if (this.signatureVerifier) {
74
+ this.reactorBuilder.withSignatureVerifier(this.signatureVerifier);
64
75
  }
65
- eventBus = builderEventBus;
66
- documentIndexer = builderDocumentIndexer;
76
+ reactorModule = await this.reactorBuilder.buildModule();
77
+ reactor = reactorModule.reactor;
78
+ eventBus = reactorModule.eventBus;
79
+ documentIndexer = reactorModule.documentIndexer;
67
80
  }
68
81
  else if (this.reactor && this.eventBus && this.documentIndexer) {
69
82
  reactor = this.reactor;
70
83
  eventBus = this.eventBus;
71
84
  documentIndexer = this.documentIndexer;
85
+ reactorModule = undefined;
72
86
  }
73
87
  else {
74
88
  throw new Error("Either ReactorBuilder or (Reactor + EventBus + DocumentIndexer) is required");
75
89
  }
76
- if (!this.signer) {
77
- this.signer = new PassthroughSigner();
78
- }
79
- if (!this.subscriptionManager) {
80
- this.subscriptionManager = new ReactorSubscriptionManager(new DefaultSubscriptionErrorHandler());
81
- }
82
- if (!this.jobAwaiter) {
83
- this.jobAwaiter = new JobAwaiter(eventBus, (jobId, signal) => reactor.getJobStatus(jobId, signal));
84
- }
85
- return new ReactorClient(reactor, this.signer, this.subscriptionManager, this.jobAwaiter, documentIndexer);
90
+ const signer = this.signer ?? new PassthroughSigner();
91
+ const subscriptionManager = this.subscriptionManager ??
92
+ new ReactorSubscriptionManager(new DefaultSubscriptionErrorHandler());
93
+ const jobAwaiter = this.jobAwaiter ??
94
+ new JobAwaiter(eventBus, (jobId, signal) => reactor.getJobStatus(jobId, signal));
95
+ const client = new ReactorClient(reactor, signer, subscriptionManager, jobAwaiter, documentIndexer);
96
+ return {
97
+ client,
98
+ reactor,
99
+ eventBus,
100
+ documentIndexer,
101
+ signer,
102
+ subscriptionManager,
103
+ jobAwaiter,
104
+ reactorModule,
105
+ };
86
106
  }
87
107
  }
88
- //# sourceMappingURL=builder.js.map
108
+ //# sourceMappingURL=reactor-client-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactor-client-builder.js","sourceRoot":"","sources":["../../../src/core/reactor-client-builder.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import type { BaseDocumentDriveServer, IDocumentStorage } from "document-drive";
1
+ import type { BaseDocumentDriveServer } from "document-drive";
2
2
  import type { Action, DocumentModelModule, Operation, PHDocument } from "document-model";
3
3
  import type { IJobTracker } from "../job-tracker/interfaces.js";
4
4
  import type { IQueue } from "../queue/interfaces.js";
5
5
  import type { IReadModelCoordinator } from "../read-models/interfaces.js";
6
6
  import type { ConsistencyToken, JobInfo, PagedResults, PagingOptions, SearchFilter, ShutdownStatus, ViewFilter } from "../shared/types.js";
7
- import type { IDocumentIndexer, IDocumentView, IOperationStore } from "../storage/interfaces.js";
8
- import type { ISyncManager } from "../sync/interfaces.js";
9
- import type { BatchMutationRequest, BatchMutationResult, IReactor, ReactorFeatures } from "./types.js";
7
+ import type { ISigner } from "../signer/types.js";
8
+ import type { IConsistencyAwareStorage, IDocumentIndexer, IDocumentView, IOperationStore } from "../storage/interfaces.js";
9
+ import type { BatchExecutionRequest, BatchExecutionResult, IReactor, ReactorFeatures } from "./types.js";
10
10
  /**
11
11
  * This class implements the IReactor interface and serves as the main entry point
12
12
  * for the new Reactor architecture.
@@ -23,10 +23,7 @@ export declare class Reactor implements IReactor {
23
23
  private documentView;
24
24
  private _documentIndexer;
25
25
  private operationStore;
26
- private _syncManager?;
27
- constructor(driveServer: BaseDocumentDriveServer, documentStorage: IDocumentStorage, queue: IQueue, jobTracker: IJobTracker, readModelCoordinator: IReadModelCoordinator, features: ReactorFeatures, documentView: IDocumentView, documentIndexer: IDocumentIndexer, operationStore: IOperationStore);
28
- get syncManager(): ISyncManager | undefined;
29
- setSync(syncManager: ISyncManager): void;
26
+ constructor(driveServer: BaseDocumentDriveServer, documentStorage: IConsistencyAwareStorage, queue: IQueue, jobTracker: IJobTracker, readModelCoordinator: IReadModelCoordinator, features: ReactorFeatures, documentView: IDocumentView, documentIndexer: IDocumentIndexer, operationStore: IOperationStore);
30
27
  /**
31
28
  * Signals that the reactor should shutdown.
32
29
  */
@@ -67,15 +64,15 @@ export declare class Reactor implements IReactor {
67
64
  /**
68
65
  * Creates a document
69
66
  */
70
- create(document: PHDocument, signal?: AbortSignal): Promise<JobInfo>;
67
+ create(document: PHDocument, signer?: ISigner, signal?: AbortSignal): Promise<JobInfo>;
71
68
  /**
72
69
  * Deletes a document
73
70
  */
74
- deleteDocument(id: string, signal?: AbortSignal): Promise<JobInfo>;
71
+ deleteDocument(id: string, signer?: ISigner, signal?: AbortSignal): Promise<JobInfo>;
75
72
  /**
76
73
  * Applies a list of actions to a document
77
74
  */
78
- mutate(docId: string, branch: string, actions: Action[], signal?: AbortSignal): Promise<JobInfo>;
75
+ execute(docId: string, branch: string, actions: Action[], signal?: AbortSignal): Promise<JobInfo>;
79
76
  /**
80
77
  * Imports pre-existing operations that were produced by another reactor.
81
78
  * This function may cause a reshuffle, which will generate additional
@@ -85,15 +82,15 @@ export declare class Reactor implements IReactor {
85
82
  /**
86
83
  * Applies multiple mutations across documents with dependency management
87
84
  */
88
- mutateBatch(request: BatchMutationRequest, signal?: AbortSignal): Promise<BatchMutationResult>;
85
+ executeBatch(request: BatchExecutionRequest, signal?: AbortSignal): Promise<BatchExecutionResult>;
89
86
  /**
90
87
  * Adds multiple documents as children to another
91
88
  */
92
- addChildren(parentId: string, documentIds: string[], _view?: ViewFilter, signal?: AbortSignal): Promise<JobInfo>;
89
+ addChildren(parentId: string, documentIds: string[], branch?: string, signer?: ISigner, signal?: AbortSignal): Promise<JobInfo>;
93
90
  /**
94
91
  * Removes multiple documents as children from another
95
92
  */
96
- removeChildren(parentId: string, documentIds: string[], _view?: ViewFilter, signal?: AbortSignal): Promise<JobInfo>;
93
+ removeChildren(parentId: string, documentIds: string[], branch?: string, signer?: ISigner, signal?: AbortSignal): Promise<JobInfo>;
97
94
  /**
98
95
  * Retrieves the status of a job
99
96
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/core/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhF,OAAO,KAAK,EACV,MAAM,EAGN,mBAAmB,EACnB,SAAS,EAET,UAAU,EAEX,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EAChB,MAAM,YAAY,CAAC;AAUpB;;;GAGG;AACH,qBAAa,OAAQ,YAAW,QAAQ;IACtC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,oBAAoB,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAGlC,WAAW,EAAE,uBAAuB,EACpC,eAAe,EAAE,gBAAgB,EACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,EACvB,oBAAoB,EAAE,qBAAqB,EAC3C,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,aAAa,EAC3B,eAAe,EAAE,gBAAgB,EACjC,cAAc,EAAE,eAAe;IAqBjC,IAAI,WAAW,IAAI,YAAY,GAAG,SAAS,CAE1C;IAED,OAAO,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI;IAIxC;;OAEG;IACH,IAAI,IAAI,cAAc;IAkBtB;;OAEG;IACH,iBAAiB,CACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAqC7C;;OAEG;IACG,GAAG,CAAC,SAAS,SAAS,UAAU,EACpC,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,UAAU,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,QAAQ,EAAE,SAAS,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IAwDF;;OAEG;IACG,SAAS,CAAC,SAAS,SAAS,UAAU,EAC1C,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,UAAU,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,QAAQ,EAAE,SAAS,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IAuCF;;OAEG;IACG,aAAa,CAAC,SAAS,SAAS,UAAU,EAC9C,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,UAAU,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,QAAQ,EAAE,SAAS,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IA8DF;;OAEG;IACG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,aAAa,EACtB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAyGnD;;OAEG;IACG,IAAI,CACR,MAAM,EAAE,YAAY,EACpB,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,aAAa,EACtB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IA4DpC;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAwF1E;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAkDxE;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAgDnB;;;;OAIG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAuDnB;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAgF/B;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAqBnB;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAqBnB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BnE;;OAEG;YACW,SAAS;IA6HvB;;OAEG;YACW,WAAW;IA0JzB;;OAEG;YACW,cAAc;IAmF5B;;OAEG;YACW,UAAU;CA0GzB"}
1
+ {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/core/reactor.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { v4 as uuidv4 } from "uuid";
3
3
  import { createMutableShutdownStatus } from "../shared/factories.js";
4
4
  import { JobStatus } from "../shared/types.js";
5
5
  import { matchesScope } from "../shared/utils.js";
6
- import { filterByType, getSharedScope, toErrorInfo, topologicalSort, validateActionScopes, validateBatchRequest, } from "./utils.js";
6
+ import { filterByType, getSharedScope, signAction, signActions, toErrorInfo, topologicalSort, validateActionScopes, validateBatchRequest, } from "./utils.js";
7
7
  /**
8
8
  * This class implements the IReactor interface and serves as the main entry point
9
9
  * for the new Reactor architecture.
@@ -20,7 +20,6 @@ export class Reactor {
20
20
  documentView;
21
21
  _documentIndexer;
22
22
  operationStore;
23
- _syncManager;
24
23
  constructor(driveServer, documentStorage, queue, jobTracker, readModelCoordinator, features, documentView, documentIndexer, operationStore) {
25
24
  // Store required dependencies
26
25
  this.driveServer = driveServer;
@@ -38,22 +37,12 @@ export class Reactor {
38
37
  this.setShutdown = setter;
39
38
  this.readModelCoordinator.start();
40
39
  }
41
- get syncManager() {
42
- return this._syncManager;
43
- }
44
- setSync(syncManager) {
45
- this._syncManager = syncManager;
46
- }
47
40
  /**
48
41
  * Signals that the reactor should shutdown.
49
42
  */
50
43
  kill() {
51
44
  // Mark the reactor as shutdown
52
45
  this.setShutdown(true);
53
- // Stop the sync manager if enabled
54
- if (this._syncManager) {
55
- this._syncManager.shutdown();
56
- }
57
46
  // Stop the read model coordinator
58
47
  this.readModelCoordinator.stop();
59
48
  // Stop the job tracker
@@ -92,11 +81,11 @@ export class Reactor {
92
81
  */
93
82
  async get(id, view, consistencyToken, signal) {
94
83
  if (this.features.legacyStorageEnabled) {
95
- const document = await this.documentStorage.get(id);
84
+ const document = await this.documentStorage.get(id, consistencyToken, signal);
96
85
  if (signal?.aborted) {
97
86
  throw new AbortError();
98
87
  }
99
- const childIds = await this.documentStorage.getChildren(id);
88
+ const childIds = await this.documentStorage.getChildren(id, consistencyToken, signal);
100
89
  if (signal?.aborted) {
101
90
  throw new AbortError();
102
91
  }
@@ -133,7 +122,7 @@ export class Reactor {
133
122
  if (this.features.legacyStorageEnabled) {
134
123
  let ids;
135
124
  try {
136
- ids = await this.documentStorage.resolveIds([slug], signal);
125
+ ids = await this.documentStorage.resolveIds([slug], consistencyToken, signal);
137
126
  }
138
127
  catch (error) {
139
128
  if (error instanceof Error && error.message.includes("not found")) {
@@ -164,7 +153,7 @@ export class Reactor {
164
153
  }
165
154
  catch {
166
155
  try {
167
- const ids = await this.documentStorage.resolveIds([identifier], signal);
156
+ const ids = await this.documentStorage.resolveIds([identifier], consistencyToken, signal);
168
157
  if (ids.length === 0 || !ids[0]) {
169
158
  throw new Error(`Document not found: ${identifier}`);
170
159
  }
@@ -197,7 +186,7 @@ export class Reactor {
197
186
  async getOperations(documentId, view, paging, consistencyToken, signal) {
198
187
  if (this.features.legacyStorageEnabled) {
199
188
  // Use storage directly to get the document
200
- const document = await this.documentStorage.get(documentId);
189
+ const document = await this.documentStorage.get(documentId, consistencyToken, signal);
201
190
  if (signal?.aborted) {
202
191
  throw new AbortError();
203
192
  }
@@ -304,7 +293,7 @@ export class Reactor {
304
293
  /**
305
294
  * Creates a document
306
295
  */
307
- async create(document, signal) {
296
+ async create(document, signer, signal) {
308
297
  const createdAtUtcIso = new Date().toISOString();
309
298
  if (signal?.aborted) {
310
299
  throw new AbortError();
@@ -350,6 +339,11 @@ export class Reactor {
350
339
  timestampUtcMs: new Date().toISOString(),
351
340
  input: upgradeInput,
352
341
  };
342
+ // Sign actions if signer is provided
343
+ let actions = [createAction, upgradeAction];
344
+ if (signer) {
345
+ actions = await signActions(actions, signer, signal);
346
+ }
353
347
  // Create a single job with both CREATE_DOCUMENT and UPGRADE_DOCUMENT actions
354
348
  const job = {
355
349
  id: uuidv4(),
@@ -357,7 +351,7 @@ export class Reactor {
357
351
  documentId: document.header.id,
358
352
  scope: "document",
359
353
  branch: "main",
360
- actions: [createAction, upgradeAction],
354
+ actions,
361
355
  operations: [],
362
356
  createdAt: new Date().toISOString(),
363
357
  queueHint: [],
@@ -383,7 +377,7 @@ export class Reactor {
383
377
  /**
384
378
  * Deletes a document
385
379
  */
386
- async deleteDocument(id, signal) {
380
+ async deleteDocument(id, signer, signal) {
387
381
  const createdAtUtcIso = new Date().toISOString();
388
382
  if (signal?.aborted) {
389
383
  throw new AbortError();
@@ -391,13 +385,17 @@ export class Reactor {
391
385
  const deleteInput = {
392
386
  documentId: id,
393
387
  };
394
- const action = {
388
+ let action = {
395
389
  id: `${id}-delete`,
396
390
  type: "DELETE_DOCUMENT",
397
391
  scope: "document",
398
392
  timestampUtcMs: new Date().toISOString(),
399
393
  input: deleteInput,
400
394
  };
395
+ // Sign action if signer is provided
396
+ if (signer) {
397
+ action = await signAction(action, signer, signal);
398
+ }
401
399
  const job = {
402
400
  id: uuidv4(),
403
401
  kind: "mutation",
@@ -428,7 +426,7 @@ export class Reactor {
428
426
  /**
429
427
  * Applies a list of actions to a document
430
428
  */
431
- async mutate(docId, branch, actions, signal) {
429
+ async execute(docId, branch, actions, signal) {
432
430
  if (signal?.aborted) {
433
431
  throw new AbortError();
434
432
  }
@@ -521,7 +519,7 @@ export class Reactor {
521
519
  /**
522
520
  * Applies multiple mutations across documents with dependency management
523
521
  */
524
- async mutateBatch(request, signal) {
522
+ async executeBatch(request, signal) {
525
523
  if (signal?.aborted) {
526
524
  throw new AbortError();
527
525
  }
@@ -600,11 +598,11 @@ export class Reactor {
600
598
  /**
601
599
  * Adds multiple documents as children to another
602
600
  */
603
- async addChildren(parentId, documentIds, _view, signal) {
601
+ async addChildren(parentId, documentIds, branch = "main", signer, signal) {
604
602
  if (signal?.aborted) {
605
603
  throw new AbortError();
606
604
  }
607
- const actions = documentIds.map((childId) => ({
605
+ let actions = documentIds.map((childId) => ({
608
606
  id: uuidv4(),
609
607
  type: "ADD_RELATIONSHIP",
610
608
  scope: "document",
@@ -615,17 +613,20 @@ export class Reactor {
615
613
  relationshipType: "child",
616
614
  },
617
615
  }));
618
- const branch = _view?.branch || "main";
619
- return await this.mutate(parentId, branch, actions, signal);
616
+ // Sign actions if signer is provided
617
+ if (signer) {
618
+ actions = await signActions(actions, signer, signal);
619
+ }
620
+ return await this.execute(parentId, branch, actions, signal);
620
621
  }
621
622
  /**
622
623
  * Removes multiple documents as children from another
623
624
  */
624
- async removeChildren(parentId, documentIds, _view, signal) {
625
+ async removeChildren(parentId, documentIds, branch = "main", signer, signal) {
625
626
  if (signal?.aborted) {
626
627
  throw new AbortError();
627
628
  }
628
- const actions = documentIds.map((childId) => ({
629
+ let actions = documentIds.map((childId) => ({
629
630
  id: uuidv4(),
630
631
  type: "REMOVE_RELATIONSHIP",
631
632
  scope: "document",
@@ -636,8 +637,11 @@ export class Reactor {
636
637
  relationshipType: "child",
637
638
  },
638
639
  }));
639
- const branch = _view?.branch || "main";
640
- return await this.mutate(parentId, branch, actions, signal);
640
+ // Sign actions if signer is provided
641
+ if (signer) {
642
+ actions = await signActions(actions, signer, signal);
643
+ }
644
+ return await this.execute(parentId, branch, actions, signal);
641
645
  }
642
646
  /**
643
647
  * Retrieves the status of a job
@@ -681,7 +685,7 @@ export class Reactor {
681
685
  }
682
686
  let document;
683
687
  try {
684
- document = await this.documentStorage.get(id);
688
+ document = await this.documentStorage.get(id, consistencyToken, signal);
685
689
  }
686
690
  catch {
687
691
  // Skip documents that don't exist or can't be accessed
@@ -712,7 +716,7 @@ export class Reactor {
712
716
  options: paging || { cursor: "0", limit: documents.length },
713
717
  nextCursor,
714
718
  next: hasMore
715
- ? () => this.findByIds(ids, view, { cursor: nextCursor, limit }, undefined, signal)
719
+ ? () => this.findByIds(ids, view, { cursor: nextCursor, limit }, consistencyToken, signal)
716
720
  : undefined,
717
721
  };
718
722
  }
@@ -747,7 +751,7 @@ export class Reactor {
747
751
  options: paging || { cursor: "0", limit: documents.length },
748
752
  nextCursor,
749
753
  next: hasMore
750
- ? () => this.findByIds(ids, view, { cursor: nextCursor, limit }, undefined, signal)
754
+ ? () => this.findByIds(ids, view, { cursor: nextCursor, limit }, consistencyToken, signal)
751
755
  : undefined,
752
756
  };
753
757
  }
@@ -764,7 +768,7 @@ export class Reactor {
764
768
  // Use storage to resolve slugs to IDs
765
769
  let ids;
766
770
  try {
767
- ids = await this.documentStorage.resolveIds(slugs, signal);
771
+ ids = await this.documentStorage.resolveIds(slugs, consistencyToken, signal);
768
772
  }
769
773
  catch {
770
774
  // If slug resolution fails, return empty results
@@ -778,7 +782,7 @@ export class Reactor {
778
782
  }
779
783
  let document;
780
784
  try {
781
- document = await this.documentStorage.get(id);
785
+ document = await this.documentStorage.get(id, consistencyToken, signal);
782
786
  }
783
787
  catch {
784
788
  // Skip documents that don't exist or can't be accessed
@@ -809,7 +813,7 @@ export class Reactor {
809
813
  options: paging || { cursor: "0", limit: documents.length },
810
814
  nextCursor,
811
815
  next: hasMore
812
- ? () => this.findBySlugs(slugs, view, { cursor: nextCursor, limit }, undefined, signal)
816
+ ? () => this.findBySlugs(slugs, view, { cursor: nextCursor, limit }, consistencyToken, signal)
813
817
  : undefined,
814
818
  };
815
819
  }
@@ -855,7 +859,7 @@ export class Reactor {
855
859
  options: paging || { cursor: "0", limit: documents.length },
856
860
  nextCursor,
857
861
  next: hasMore
858
- ? () => this.findBySlugs(slugs, view, { cursor: nextCursor, limit }, undefined, signal)
862
+ ? () => this.findBySlugs(slugs, view, { cursor: nextCursor, limit }, consistencyToken, signal)
859
863
  : undefined,
860
864
  };
861
865
  }
@@ -928,7 +932,7 @@ export class Reactor {
928
932
  const cursor = paging?.cursor;
929
933
  const limit = paging?.limit || 100;
930
934
  // Get document IDs of the specified type
931
- const { documents: documentIds, nextCursor } = await this.documentStorage.findByType(type, limit, cursor);
935
+ const { documents: documentIds, nextCursor } = await this.documentStorage.findByType(type, limit, cursor, consistencyToken, signal);
932
936
  if (signal?.aborted) {
933
937
  throw new AbortError();
934
938
  }
@@ -939,7 +943,7 @@ export class Reactor {
939
943
  }
940
944
  let document;
941
945
  try {
942
- document = await this.documentStorage.get(documentId);
946
+ document = await this.documentStorage.get(documentId, consistencyToken, signal);
943
947
  }
944
948
  catch {
945
949
  // Skip documents that can't be retrieved
@@ -962,12 +966,12 @@ export class Reactor {
962
966
  options: paging || { cursor: cursor || "0", limit },
963
967
  nextCursor,
964
968
  next: nextCursor
965
- ? async () => this.findByType(type, view, { cursor: nextCursor, limit }, undefined, signal)
969
+ ? async () => this.findByType(type, view, { cursor: nextCursor, limit }, consistencyToken, signal)
966
970
  : undefined,
967
971
  };
968
972
  }
969
973
  else {
970
- const result = await this.documentView.findByType(type, view, paging, undefined, signal);
974
+ const result = await this.documentView.findByType(type, view, paging, consistencyToken, signal);
971
975
  if (signal?.aborted) {
972
976
  throw new AbortError();
973
977
  }
@@ -978,7 +982,7 @@ export class Reactor {
978
982
  options: paging || { cursor: cursor || "0", limit },
979
983
  nextCursor: result.nextCursor,
980
984
  next: result.nextCursor
981
- ? async () => this.findByType(type, view, { cursor: result.nextCursor, limit }, undefined, signal)
985
+ ? async () => this.findByType(type, view, { cursor: result.nextCursor, limit }, consistencyToken, signal)
982
986
  : undefined,
983
987
  };
984
988
  }