@powerhousedao/reactor 5.1.0 → 5.2.0-staging.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cache/document-meta-cache-types.d.ts +114 -0
- package/dist/src/cache/document-meta-cache-types.d.ts.map +1 -0
- package/dist/src/cache/document-meta-cache-types.js +2 -0
- package/dist/src/cache/document-meta-cache-types.js.map +1 -0
- package/dist/src/cache/document-meta-cache.d.ts +30 -0
- package/dist/src/cache/document-meta-cache.d.ts.map +1 -0
- package/dist/src/cache/document-meta-cache.js +127 -0
- package/dist/src/cache/document-meta-cache.js.map +1 -0
- package/dist/src/cache/kysely-operation-index.d.ts +4 -2
- package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
- package/dist/src/cache/kysely-operation-index.js +54 -0
- package/dist/src/cache/kysely-operation-index.js.map +1 -1
- package/dist/src/cache/operation-index-types.d.ts +3 -2
- package/dist/src/cache/operation-index-types.d.ts.map +1 -1
- package/dist/src/cache/operation-index-types.js.map +1 -1
- package/dist/src/client/reactor-client.d.ts +6 -6
- package/dist/src/client/reactor-client.d.ts.map +1 -1
- package/dist/src/client/reactor-client.js +48 -45
- package/dist/src/client/reactor-client.js.map +1 -1
- package/dist/src/client/types.d.ts +10 -10
- package/dist/src/client/types.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.d.ts +9 -3
- package/dist/src/core/reactor-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.js +81 -29
- package/dist/src/core/reactor-builder.js.map +1 -1
- package/dist/src/core/{builder.d.ts → reactor-client-builder.d.ts} +11 -4
- package/dist/src/core/reactor-client-builder.d.ts.map +1 -0
- package/dist/src/core/{builder.js → reactor-client-builder.js} +43 -23
- package/dist/src/core/reactor-client-builder.js.map +1 -0
- package/dist/src/core/reactor.d.ts +11 -14
- package/dist/src/core/reactor.d.ts.map +1 -1
- package/dist/src/core/reactor.js +47 -43
- package/dist/src/core/reactor.js.map +1 -1
- package/dist/src/core/types.d.ts +84 -20
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/utils.d.ts +9 -0
- package/dist/src/core/utils.d.ts.map +1 -1
- package/dist/src/core/utils.js +30 -0
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.js +1 -0
- package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
- package/dist/src/executor/simple-job-executor.d.ts +7 -1
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor.js +142 -21
- package/dist/src/executor/simple-job-executor.js.map +1 -1
- package/dist/src/index.d.ts +13 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/logging/console.d.ts +13 -0
- package/dist/src/logging/console.d.ts.map +1 -0
- package/dist/src/logging/console.js +77 -0
- package/dist/src/logging/console.js.map +1 -0
- package/dist/src/logging/types.d.ts +11 -0
- package/dist/src/logging/types.d.ts.map +1 -0
- package/dist/src/logging/types.js +2 -0
- package/dist/src/logging/types.js.map +1 -0
- package/dist/src/read-models/base-read-model.d.ts +60 -0
- package/dist/src/read-models/base-read-model.d.ts.map +1 -0
- package/dist/src/read-models/base-read-model.js +143 -0
- package/dist/src/read-models/base-read-model.js.map +1 -0
- package/dist/src/read-models/document-view.d.ts +6 -7
- package/dist/src/read-models/document-view.d.ts.map +1 -1
- package/dist/src/read-models/document-view.js +16 -81
- package/dist/src/read-models/document-view.js.map +1 -1
- package/dist/src/read-models/types.d.ts +2 -1
- package/dist/src/read-models/types.d.ts.map +1 -1
- package/dist/src/shared/errors.d.ts +8 -0
- package/dist/src/shared/errors.d.ts.map +1 -1
- package/dist/src/shared/errors.js +14 -0
- package/dist/src/shared/errors.js.map +1 -1
- package/dist/src/signer/types.d.ts +23 -1
- package/dist/src/signer/types.d.ts.map +1 -1
- package/dist/src/storage/consistency-aware-legacy-storage.d.ts +33 -0
- package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +1 -0
- package/dist/src/storage/consistency-aware-legacy-storage.js +65 -0
- package/dist/src/storage/consistency-aware-legacy-storage.js.map +1 -0
- package/dist/src/storage/interfaces.d.ts +81 -0
- package/dist/src/storage/interfaces.d.ts.map +1 -1
- package/dist/src/storage/interfaces.js.map +1 -1
- package/dist/src/storage/kysely/store.d.ts.map +1 -1
- package/dist/src/storage/kysely/store.js +1 -0
- package/dist/src/storage/kysely/store.js.map +1 -1
- package/dist/src/storage/kysely/sync-remote-storage.d.ts.map +1 -1
- package/dist/src/storage/kysely/sync-remote-storage.js +3 -4
- package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts +1 -1
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +1 -1
- package/dist/src/storage/migrations/008_create_view_state_table.js +2 -1
- package/dist/src/storage/migrations/008_create_view_state_table.js.map +1 -1
- package/dist/src/storage/migrations/run-migrations.js +3 -3
- package/dist/src/storage/migrations/run-migrations.js.map +1 -1
- package/dist/src/sync/channels/composite-channel-factory.d.ts +27 -0
- package/dist/src/sync/channels/composite-channel-factory.d.ts.map +1 -0
- package/dist/src/sync/channels/composite-channel-factory.js +86 -0
- package/dist/src/sync/channels/composite-channel-factory.js.map +1 -0
- package/dist/src/sync/channels/gql-channel-factory.d.ts +22 -0
- package/dist/src/sync/channels/gql-channel-factory.d.ts.map +1 -0
- package/dist/src/sync/channels/gql-channel-factory.js +72 -0
- package/dist/src/sync/channels/gql-channel-factory.js.map +1 -0
- package/dist/src/sync/channels/gql-channel.d.ts +104 -0
- package/dist/src/sync/channels/gql-channel.d.ts.map +1 -0
- package/dist/src/sync/channels/gql-channel.js +349 -0
- package/dist/src/sync/channels/gql-channel.js.map +1 -0
- package/dist/src/sync/channels/index.d.ts +3 -0
- package/dist/src/sync/channels/index.d.ts.map +1 -1
- package/dist/src/sync/channels/index.js +3 -0
- package/dist/src/sync/channels/index.js.map +1 -1
- package/dist/src/sync/channels/internal-channel.d.ts +5 -0
- package/dist/src/sync/channels/internal-channel.d.ts.map +1 -1
- package/dist/src/sync/channels/internal-channel.js +7 -0
- package/dist/src/sync/channels/internal-channel.js.map +1 -1
- package/dist/src/sync/index.d.ts +1 -1
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/index.js +1 -1
- package/dist/src/sync/index.js.map +1 -1
- package/dist/src/sync/interfaces.d.ts +26 -3
- package/dist/src/sync/interfaces.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.d.ts +2 -1
- package/dist/src/sync/sync-builder.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.js +11 -1
- package/dist/src/sync/sync-builder.js.map +1 -1
- package/dist/src/sync/sync-manager.d.ts +4 -2
- package/dist/src/sync/sync-manager.d.ts.map +1 -1
- package/dist/src/sync/sync-manager.js +60 -4
- package/dist/src/sync/sync-manager.js.map +1 -1
- package/dist/src/sync/types.d.ts +1 -2
- package/dist/src/sync/types.d.ts.map +1 -1
- package/package.json +6 -5
- package/dist/src/core/builder.d.ts.map +0 -1
- 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
|
-
|
|
40
|
-
|
|
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
|
-
|
|
57
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
|
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 {
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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[],
|
|
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[],
|
|
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,
|
|
1
|
+
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/core/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9D,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,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACb,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,QAAQ,EACR,eAAe,EAChB,MAAM,YAAY,CAAC;AAYpB;;;GAGG;AACH,qBAAa,OAAQ,YAAW,QAAQ;IACtC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,eAAe,CAA2B;IAClD,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;gBAGtC,WAAW,EAAE,uBAAuB,EACpC,eAAe,EAAE,wBAAwB,EACzC,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;;OAEG;IACH,IAAI,IAAI,cAAc;IAatB;;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;IAgEF;;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;IA2CF;;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;IA+DF;;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;IA6GnD;;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,CACV,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IA8FnB;;OAEG;IACG,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAuDnB;;OAEG;IACG,OAAO,CACX,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,YAAY,CAChB,OAAO,EAAE,qBAAqB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,oBAAoB,CAAC;IAgFhC;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,GAAE,MAAe,EACvB,MAAM,CAAC,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAyBnB;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,GAAE,MAAe,EACvB,MAAM,CAAC,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAyBnB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BnE;;OAEG;YACW,SAAS;IAiIvB;;OAEG;YACW,WAAW;IAkKzB;;OAEG;YACW,cAAc;IAmF5B;;OAEG;YACW,UAAU;CAoHzB"}
|
package/dist/src/core/reactor.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
|
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
|
|
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,
|
|
601
|
+
async addChildren(parentId, documentIds, branch = "main", signer, signal) {
|
|
604
602
|
if (signal?.aborted) {
|
|
605
603
|
throw new AbortError();
|
|
606
604
|
}
|
|
607
|
-
|
|
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
|
-
|
|
619
|
-
|
|
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,
|
|
625
|
+
async removeChildren(parentId, documentIds, branch = "main", signer, signal) {
|
|
625
626
|
if (signal?.aborted) {
|
|
626
627
|
throw new AbortError();
|
|
627
628
|
}
|
|
628
|
-
|
|
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
|
-
|
|
640
|
-
|
|
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 },
|
|
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 },
|
|
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 },
|
|
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 },
|
|
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 },
|
|
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,
|
|
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 },
|
|
985
|
+
? async () => this.findByType(type, view, { cursor: result.nextCursor, limit }, consistencyToken, signal)
|
|
982
986
|
: undefined,
|
|
983
987
|
};
|
|
984
988
|
}
|