@powerhousedao/reactor 5.1.0-dev.4 → 5.1.0-dev.40
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/actions/index.d.ts +24 -0
- package/dist/src/actions/index.d.ts.map +1 -0
- package/dist/src/actions/index.js +77 -0
- package/dist/src/actions/index.js.map +1 -0
- 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 +128 -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 +67 -24
- package/dist/src/cache/kysely-operation-index.js.map +1 -1
- package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
- package/dist/src/cache/kysely-write-cache.js +3 -2
- package/dist/src/cache/kysely-write-cache.js.map +1 -1
- package/dist/src/cache/operation-index-types.d.ts +4 -3
- 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 +16 -4
- package/dist/src/client/reactor-client.d.ts.map +1 -1
- package/dist/src/client/reactor-client.js +122 -5
- package/dist/src/client/reactor-client.js.map +1 -1
- package/dist/src/client/types.d.ts +22 -3
- package/dist/src/client/types.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.d.ts +17 -11
- package/dist/src/core/reactor-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.js +88 -24
- package/dist/src/core/reactor-builder.js.map +1 -1
- package/dist/src/core/{builder.d.ts → reactor-client-builder.d.ts} +20 -4
- package/dist/src/core/reactor-client-builder.d.ts.map +1 -0
- package/dist/src/core/reactor-client-builder.js +123 -0
- package/dist/src/core/reactor-client-builder.js.map +1 -0
- package/dist/src/core/reactor.d.ts +11 -10
- package/dist/src/core/reactor.d.ts.map +1 -1
- package/dist/src/core/reactor.js +78 -91
- package/dist/src/core/reactor.js.map +1 -1
- package/dist/src/core/types.d.ts +40 -7
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/utils.d.ts +1 -2
- package/dist/src/core/utils.d.ts.map +1 -1
- package/dist/src/core/utils.js +2 -2
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/events/types.d.ts +1 -0
- package/dist/src/events/types.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts +3 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.js +10 -7
- package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
- package/dist/src/executor/simple-job-executor.d.ts +18 -3
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor.js +327 -221
- package/dist/src/executor/simple-job-executor.js.map +1 -1
- package/dist/src/executor/types.d.ts +2 -8
- package/dist/src/executor/types.d.ts.map +1 -1
- package/dist/src/executor/types.js.map +1 -1
- package/dist/src/executor/util.d.ts +14 -5
- package/dist/src/executor/util.d.ts.map +1 -1
- package/dist/src/executor/util.js +36 -9
- package/dist/src/executor/util.js.map +1 -1
- package/dist/src/index.d.ts +16 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +15 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/logging/console.d.ts +23 -0
- package/dist/src/logging/console.d.ts.map +1 -0
- package/dist/src/logging/console.js +108 -0
- package/dist/src/logging/console.js.map +1 -0
- package/dist/src/logging/types.d.ts +12 -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/processors/index.d.ts +3 -0
- package/dist/src/processors/index.d.ts.map +1 -0
- package/dist/src/processors/index.js +2 -0
- package/dist/src/processors/index.js.map +1 -0
- package/dist/src/processors/processor-manager.d.ts +38 -0
- package/dist/src/processors/processor-manager.d.ts.map +1 -0
- package/dist/src/processors/processor-manager.js +165 -0
- package/dist/src/processors/processor-manager.js.map +1 -0
- package/dist/src/processors/types.d.ts +63 -0
- package/dist/src/processors/types.d.ts.map +1 -0
- package/dist/src/processors/types.js +2 -0
- package/dist/src/processors/types.js.map +1 -0
- package/dist/src/processors/utils.d.ts +10 -0
- package/dist/src/processors/utils.d.ts.map +1 -0
- package/dist/src/processors/utils.js +58 -0
- package/dist/src/processors/utils.js.map +1 -0
- package/dist/src/queue/types.d.ts +2 -0
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js.map +1 -1
- 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/coordinator.d.ts +3 -2
- package/dist/src/read-models/coordinator.d.ts.map +1 -1
- package/dist/src/read-models/coordinator.js +12 -13
- package/dist/src/read-models/coordinator.js.map +1 -1
- 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 +18 -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/registry/implementation.d.ts +42 -34
- package/dist/src/registry/implementation.d.ts.map +1 -1
- package/dist/src/registry/implementation.js +168 -48
- package/dist/src/registry/implementation.js.map +1 -1
- package/dist/src/registry/interfaces.d.ts +69 -8
- package/dist/src/registry/interfaces.d.ts.map +1 -1
- package/dist/src/shared/errors.d.ts +16 -0
- package/dist/src/shared/errors.d.ts.map +1 -1
- package/dist/src/shared/errors.js +28 -0
- package/dist/src/shared/errors.js.map +1 -1
- package/dist/src/shared/types.d.ts +4 -0
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/src/shared/types.js.map +1 -1
- package/dist/src/signer/passthrough-signer.d.ts +9 -3
- package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
- package/dist/src/signer/passthrough-signer.js +13 -0
- package/dist/src/signer/passthrough-signer.js.map +1 -1
- package/dist/src/signer/types.d.ts +12 -10
- 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 +94 -1
- package/dist/src/storage/interfaces.d.ts.map +1 -1
- package/dist/src/storage/interfaces.js +2 -2
- package/dist/src/storage/interfaces.js.map +1 -1
- package/dist/src/storage/kysely/store.d.ts +1 -0
- package/dist/src/storage/kysely/store.d.ts.map +1 -1
- package/dist/src/storage/kysely/store.js +40 -3
- package/dist/src/storage/kysely/store.js.map +1 -1
- package/dist/src/storage/kysely/sync-cursor-storage.js +2 -2
- package/dist/src/storage/kysely/sync-cursor-storage.js.map +1 -1
- package/dist/src/storage/kysely/sync-remote-storage.js +8 -8
- package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
- package/dist/src/storage/kysely/types.d.ts +6 -6
- package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +1 -1
- package/dist/src/storage/migrations/001_create_operation_table.js +2 -1
- package/dist/src/storage/migrations/001_create_operation_table.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/009_create_operation_index_tables.js +1 -1
- package/dist/src/storage/migrations/009_create_operation_index_tables.js.map +1 -1
- package/dist/src/storage/migrations/010_create_sync_tables.js +5 -5
- package/dist/src/storage/migrations/010_create_sync_tables.js.map +1 -1
- package/dist/src/storage/migrations/migrator.d.ts +3 -2
- package/dist/src/storage/migrations/migrator.d.ts.map +1 -1
- package/dist/src/storage/migrations/migrator.js +29 -6
- package/dist/src/storage/migrations/migrator.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/storage/txn.d.ts.map +1 -1
- package/dist/src/storage/txn.js +2 -3
- package/dist/src/storage/txn.js.map +1 -1
- package/dist/src/subs/subscription-notification-read-model.d.ts +17 -0
- package/dist/src/subs/subscription-notification-read-model.d.ts.map +1 -0
- package/dist/src/subs/subscription-notification-read-model.js +62 -0
- package/dist/src/subs/subscription-notification-read-model.js.map +1 -0
- package/dist/src/sync/channels/composite-channel-factory.d.ts +30 -0
- package/dist/src/sync/channels/composite-channel-factory.d.ts.map +1 -0
- package/dist/src/sync/channels/composite-channel-factory.js +87 -0
- package/dist/src/sync/channels/composite-channel-factory.js.map +1 -0
- package/dist/src/sync/channels/gql-channel-factory.d.ts +5 -2
- package/dist/src/sync/channels/gql-channel-factory.d.ts.map +1 -1
- package/dist/src/sync/channels/gql-channel-factory.js +8 -2
- package/dist/src/sync/channels/gql-channel-factory.js.map +1 -1
- package/dist/src/sync/channels/gql-channel.d.ts +28 -1
- package/dist/src/sync/channels/gql-channel.d.ts.map +1 -1
- package/dist/src/sync/channels/gql-channel.js +150 -22
- package/dist/src/sync/channels/gql-channel.js.map +1 -1
- package/dist/src/sync/channels/index.d.ts +2 -1
- package/dist/src/sync/channels/index.d.ts.map +1 -1
- package/dist/src/sync/channels/index.js +2 -1
- package/dist/src/sync/channels/index.js.map +1 -1
- package/dist/src/sync/channels/polling-channel.d.ts +39 -0
- package/dist/src/sync/channels/polling-channel.d.ts.map +1 -0
- package/dist/src/sync/channels/polling-channel.js +72 -0
- package/dist/src/sync/channels/polling-channel.js.map +1 -0
- package/dist/src/sync/channels/utils.d.ts +17 -2
- package/dist/src/sync/channels/utils.d.ts.map +1 -1
- package/dist/src/sync/channels/utils.js +76 -6
- package/dist/src/sync/channels/utils.js.map +1 -1
- package/dist/src/sync/errors.d.ts +1 -1
- package/dist/src/sync/errors.d.ts.map +1 -1
- package/dist/src/sync/errors.js +2 -2
- package/dist/src/sync/errors.js.map +1 -1
- package/dist/src/sync/index.d.ts +2 -2
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/index.js +2 -2
- package/dist/src/sync/index.js.map +1 -1
- package/dist/src/sync/interfaces.d.ts +16 -1
- package/dist/src/sync/interfaces.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.d.ts +3 -2
- package/dist/src/sync/sync-builder.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.js +4 -4
- package/dist/src/sync/sync-builder.js.map +1 -1
- package/dist/src/sync/sync-manager.d.ts +4 -1
- package/dist/src/sync/sync-manager.d.ts.map +1 -1
- package/dist/src/sync/sync-manager.js +65 -8
- package/dist/src/sync/sync-manager.js.map +1 -1
- package/dist/src/sync/utils.d.ts +19 -0
- package/dist/src/sync/utils.d.ts.map +1 -1
- package/dist/src/sync/utils.js +44 -0
- package/dist/src/sync/utils.js.map +1 -1
- package/package.json +4 -4
- package/dist/src/core/builder.d.ts.map +0 -1
- package/dist/src/core/builder.js +0 -88
- package/dist/src/core/builder.js.map +0 -1
- package/dist/src/sync/channels/internal-channel.d.ts +0 -57
- package/dist/src/sync/channels/internal-channel.d.ts.map +0 -1
- package/dist/src/sync/channels/internal-channel.js +0 -106
- package/dist/src/sync/channels/internal-channel.js.map +0 -1
|
@@ -1,40 +1,46 @@
|
|
|
1
1
|
import type { IDocumentOperationStorage, IDocumentStorage } from "document-drive";
|
|
2
|
-
import type { DocumentModelModule } from "document-model";
|
|
2
|
+
import type { DocumentModelModule, UpgradeManifest } from "document-model";
|
|
3
3
|
import type { WriteCacheConfig } from "../cache/write-cache-types.js";
|
|
4
|
-
import type { IReadModel } from "../read-models/interfaces.js";
|
|
4
|
+
import type { IReadModel, IReadModelCoordinator } from "../read-models/interfaces.js";
|
|
5
5
|
import type { SyncBuilder } from "../sync/sync-builder.js";
|
|
6
|
-
import type { ExecutorConfig, IReactor, ReactorFeatures, ReactorModule } from "./types.js";
|
|
6
|
+
import type { Database, ExecutorConfig, IReactor, ReactorFeatures, ReactorModule } from "./types.js";
|
|
7
7
|
import type { IJobExecutorManager } from "#executor/interfaces.js";
|
|
8
|
-
import type {
|
|
8
|
+
import type { ILogger } from "#logging/types.js";
|
|
9
|
+
import { Kysely } from "kysely";
|
|
9
10
|
import type { IEventBus } from "../events/interfaces.js";
|
|
10
|
-
import type {
|
|
11
|
+
import type { SignatureVerificationHandler } from "../signer/types.js";
|
|
11
12
|
import type { MigrationStrategy } from "../storage/migrations/types.js";
|
|
12
|
-
export type IReadModelCoordinatorFactory = (eventBus: IEventBus, readModels: IReadModel[]) => IReadModelCoordinator;
|
|
13
13
|
export declare class ReactorBuilder {
|
|
14
|
+
private logger?;
|
|
14
15
|
private documentModels;
|
|
16
|
+
private upgradeManifests;
|
|
15
17
|
private storage?;
|
|
16
18
|
private features;
|
|
17
19
|
private readModels;
|
|
18
20
|
private executorManager;
|
|
19
21
|
private executorConfig;
|
|
20
22
|
private writeCacheConfig?;
|
|
21
|
-
private readModelCoordinatorFactory?;
|
|
22
23
|
private migrationStrategy;
|
|
23
24
|
private syncBuilder?;
|
|
24
25
|
private eventBus?;
|
|
25
|
-
|
|
26
|
+
private readModelCoordinator?;
|
|
27
|
+
private signatureVerifier?;
|
|
28
|
+
private kyselyInstance?;
|
|
29
|
+
withLogger(logger: ILogger): this;
|
|
26
30
|
withDocumentModels(models: DocumentModelModule[]): this;
|
|
31
|
+
withUpgradeManifests(manifests: UpgradeManifest<readonly number[]>[]): this;
|
|
27
32
|
withLegacyStorage(storage: IDocumentStorage & IDocumentOperationStorage): this;
|
|
28
33
|
withFeatures(features: ReactorFeatures): this;
|
|
29
34
|
withReadModel(readModel: IReadModel): this;
|
|
30
|
-
|
|
35
|
+
withReadModelCoordinator(readModelCoordinator: IReadModelCoordinator): this;
|
|
31
36
|
withExecutor(executor: IJobExecutorManager): this;
|
|
32
37
|
withExecutorConfig(config: Partial<ExecutorConfig>): this;
|
|
33
38
|
withWriteCacheConfig(config: Partial<WriteCacheConfig>): this;
|
|
34
|
-
|
|
39
|
+
withMigrationStrategy(strategy: MigrationStrategy): this;
|
|
35
40
|
withSync(syncBuilder: SyncBuilder): this;
|
|
36
41
|
withEventBus(eventBus: IEventBus): this;
|
|
37
|
-
|
|
42
|
+
withSignatureVerifier(verifier: SignatureVerificationHandler): this;
|
|
43
|
+
withKysely(kysely: Kysely<Database>): this;
|
|
38
44
|
build(): Promise<IReactor>;
|
|
39
45
|
buildModule(): Promise<ReactorModule>;
|
|
40
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactor-builder.d.ts","sourceRoot":"","sources":["../../../src/core/reactor-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"reactor-builder.d.ts","sourceRoot":"","sources":["../../../src/core/reactor-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAI3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAQtE,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,eAAe,EACf,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAMvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAMxE,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,OAAO,CAAC,CAA+C;IAC/D,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,gBAAgB,CAAC,CAA4B;IACrD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAY;IAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAwB;IACrD,OAAO,CAAC,iBAAiB,CAAC,CAA+B;IACzD,OAAO,CAAC,cAAc,CAAC,CAAmB;IAE1C,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAKjC,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI;IAKvD,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI;IAK3E,iBAAiB,CACf,OAAO,EAAE,gBAAgB,GAAG,yBAAyB,GACpD,IAAI;IAKP,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAK7C,aAAa,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAK1C,wBAAwB,CAAC,oBAAoB,EAAE,qBAAqB,GAAG,IAAI;IAK3E,YAAY,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAKjD,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAKzD,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAK7D,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAKxD,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAKxC,YAAY,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAKvC,qBAAqB,CAAC,QAAQ,EAAE,4BAA4B,GAAG,IAAI;IAKnE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKpC,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;IAK1B,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;CA4N5C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ReactorBuilder as DriveReactorBuilder, MemoryStorage, } from "document-drive";
|
|
2
|
+
import { DocumentMetaCache } from "../cache/document-meta-cache.js";
|
|
2
3
|
import { KyselyOperationIndex } from "../cache/kysely-operation-index.js";
|
|
3
4
|
import { KyselyWriteCache } from "../cache/kysely-write-cache.js";
|
|
4
5
|
import { EventBus } from "../events/event-bus.js";
|
|
@@ -14,26 +15,44 @@ import { KyselyDocumentIndexer } from "../storage/kysely/document-indexer.js";
|
|
|
14
15
|
import { KyselyKeyframeStore } from "../storage/kysely/keyframe-store.js";
|
|
15
16
|
import { KyselyOperationStore } from "../storage/kysely/store.js";
|
|
16
17
|
import { Reactor } from "./reactor.js";
|
|
18
|
+
import { ConsoleLogger } from "#logging/console.js";
|
|
19
|
+
import { PGlite } from "@electric-sql/pglite";
|
|
17
20
|
import { Kysely } from "kysely";
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
21
|
+
import { PGliteDialect } from "kysely-pglite-dialect";
|
|
22
|
+
import { ConsistencyAwareLegacyStorage } from "../storage/consistency-aware-legacy-storage.js";
|
|
23
|
+
import { REACTOR_SCHEMA, runMigrations, } from "../storage/migrations/migrator.js";
|
|
24
|
+
import { DefaultSubscriptionErrorHandler } from "../subs/default-error-handler.js";
|
|
25
|
+
import { ReactorSubscriptionManager } from "../subs/react-subscription-manager.js";
|
|
26
|
+
import { SubscriptionNotificationReadModel } from "../subs/subscription-notification-read-model.js";
|
|
27
|
+
import { ProcessorManager } from "../processors/processor-manager.js";
|
|
20
28
|
export class ReactorBuilder {
|
|
29
|
+
logger;
|
|
21
30
|
documentModels = [];
|
|
31
|
+
upgradeManifests = [];
|
|
22
32
|
storage;
|
|
23
33
|
features = { legacyStorageEnabled: true };
|
|
24
34
|
readModels = [];
|
|
25
35
|
executorManager;
|
|
26
36
|
executorConfig = { count: 1 };
|
|
27
37
|
writeCacheConfig;
|
|
28
|
-
readModelCoordinatorFactory;
|
|
29
38
|
migrationStrategy = "auto";
|
|
30
39
|
syncBuilder;
|
|
31
40
|
eventBus;
|
|
32
|
-
|
|
41
|
+
readModelCoordinator;
|
|
42
|
+
signatureVerifier;
|
|
43
|
+
kyselyInstance;
|
|
44
|
+
withLogger(logger) {
|
|
45
|
+
this.logger = logger;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
33
48
|
withDocumentModels(models) {
|
|
34
49
|
this.documentModels = models;
|
|
35
50
|
return this;
|
|
36
51
|
}
|
|
52
|
+
withUpgradeManifests(manifests) {
|
|
53
|
+
this.upgradeManifests = manifests;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
37
56
|
withLegacyStorage(storage) {
|
|
38
57
|
this.storage = storage;
|
|
39
58
|
return this;
|
|
@@ -46,8 +65,8 @@ export class ReactorBuilder {
|
|
|
46
65
|
this.readModels.push(readModel);
|
|
47
66
|
return this;
|
|
48
67
|
}
|
|
49
|
-
|
|
50
|
-
this.
|
|
68
|
+
withReadModelCoordinator(readModelCoordinator) {
|
|
69
|
+
this.readModelCoordinator = readModelCoordinator;
|
|
51
70
|
return this;
|
|
52
71
|
}
|
|
53
72
|
withExecutor(executor) {
|
|
@@ -62,7 +81,7 @@ export class ReactorBuilder {
|
|
|
62
81
|
this.writeCacheConfig = config;
|
|
63
82
|
return this;
|
|
64
83
|
}
|
|
65
|
-
|
|
84
|
+
withMigrationStrategy(strategy) {
|
|
66
85
|
this.migrationStrategy = strategy;
|
|
67
86
|
return this;
|
|
68
87
|
}
|
|
@@ -74,37 +93,51 @@ export class ReactorBuilder {
|
|
|
74
93
|
this.eventBus = eventBus;
|
|
75
94
|
return this;
|
|
76
95
|
}
|
|
77
|
-
|
|
78
|
-
|
|
96
|
+
withSignatureVerifier(verifier) {
|
|
97
|
+
this.signatureVerifier = verifier;
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
withKysely(kysely) {
|
|
101
|
+
this.kyselyInstance = kysely;
|
|
102
|
+
return this;
|
|
79
103
|
}
|
|
80
104
|
async build() {
|
|
81
105
|
const module = await this.buildModule();
|
|
82
106
|
return module.reactor;
|
|
83
107
|
}
|
|
84
108
|
async buildModule() {
|
|
109
|
+
if (!this.logger) {
|
|
110
|
+
this.logger = new ConsoleLogger(["reactor"]);
|
|
111
|
+
}
|
|
85
112
|
const storage = this.storage || new MemoryStorage();
|
|
86
113
|
const documentModelRegistry = new DocumentModelRegistry();
|
|
114
|
+
if (this.upgradeManifests.length > 0) {
|
|
115
|
+
documentModelRegistry.registerUpgradeManifests(...this.upgradeManifests);
|
|
116
|
+
}
|
|
87
117
|
if (this.documentModels.length > 0) {
|
|
88
118
|
documentModelRegistry.registerModules(...this.documentModels);
|
|
89
119
|
}
|
|
90
120
|
const builder = new DriveReactorBuilder(this.documentModels).withStorage(storage);
|
|
91
121
|
const driveServer = builder.build();
|
|
92
122
|
await driveServer.initialize();
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
123
|
+
const baseDatabase = this.kyselyInstance ??
|
|
124
|
+
new Kysely({
|
|
125
|
+
dialect: new PGliteDialect(new PGlite()),
|
|
126
|
+
});
|
|
97
127
|
if (this.migrationStrategy === "auto") {
|
|
98
|
-
const result = await runMigrations(
|
|
128
|
+
const result = await runMigrations(baseDatabase, REACTOR_SCHEMA);
|
|
99
129
|
if (!result.success && result.error) {
|
|
100
130
|
throw new Error(`Database migration failed: ${result.error.message}`);
|
|
101
131
|
}
|
|
102
132
|
}
|
|
133
|
+
const database = baseDatabase.withSchema(REACTOR_SCHEMA);
|
|
103
134
|
const operationStore = new KyselyOperationStore(database);
|
|
104
135
|
const keyframeStore = new KyselyKeyframeStore(database);
|
|
105
136
|
const eventBus = this.eventBus || new EventBus();
|
|
106
137
|
const queue = new InMemoryQueue(eventBus);
|
|
107
138
|
const jobTracker = new InMemoryJobTracker(eventBus);
|
|
139
|
+
const legacyStorageConsistencyTracker = new ConsistencyTracker();
|
|
140
|
+
const consistencyAwareStorage = new ConsistencyAwareLegacyStorage(storage, legacyStorageConsistencyTracker, eventBus);
|
|
108
141
|
const cacheConfig = {
|
|
109
142
|
maxDocuments: this.writeCacheConfig?.maxDocuments ?? 100,
|
|
110
143
|
ringBufferSize: this.writeCacheConfig?.ringBufferSize ?? 10,
|
|
@@ -113,32 +146,60 @@ export class ReactorBuilder {
|
|
|
113
146
|
const writeCache = new KyselyWriteCache(keyframeStore, operationStore, documentModelRegistry, cacheConfig);
|
|
114
147
|
await writeCache.startup();
|
|
115
148
|
const operationIndex = new KyselyOperationIndex(database);
|
|
149
|
+
const documentMetaCache = new DocumentMetaCache(operationStore, {
|
|
150
|
+
maxDocuments: 1000,
|
|
151
|
+
});
|
|
152
|
+
await documentMetaCache.startup();
|
|
116
153
|
let executorManager = this.executorManager;
|
|
117
154
|
if (!executorManager) {
|
|
118
|
-
executorManager = new SimpleJobExecutorManager(() => new SimpleJobExecutor(documentModelRegistry, storage, storage, operationStore, eventBus, writeCache, operationIndex, { legacyStorageEnabled: this.features.legacyStorageEnabled }), eventBus, queue, jobTracker);
|
|
155
|
+
executorManager = new SimpleJobExecutorManager(() => new SimpleJobExecutor(this.logger, documentModelRegistry, storage, storage, operationStore, eventBus, writeCache, operationIndex, documentMetaCache, { legacyStorageEnabled: this.features.legacyStorageEnabled }, this.signatureVerifier), eventBus, queue, jobTracker, this.logger);
|
|
119
156
|
}
|
|
120
157
|
await executorManager.start(this.executorConfig.count);
|
|
121
158
|
const readModelInstances = Array.from(new Set([...this.readModels]));
|
|
122
159
|
const documentViewConsistencyTracker = new ConsistencyTracker();
|
|
123
160
|
const documentView = new KyselyDocumentView(
|
|
124
161
|
// @ts-expect-error - Database type is a superset that includes all required tables
|
|
125
|
-
database, operationStore, documentViewConsistencyTracker);
|
|
126
|
-
|
|
162
|
+
database, operationStore, operationIndex, writeCache, documentViewConsistencyTracker);
|
|
163
|
+
try {
|
|
164
|
+
await documentView.init();
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
console.error("Error initializing document view", error);
|
|
168
|
+
}
|
|
127
169
|
readModelInstances.push(documentView);
|
|
128
170
|
const documentIndexerConsistencyTracker = new ConsistencyTracker();
|
|
129
171
|
const documentIndexer = new KyselyDocumentIndexer(
|
|
130
172
|
// @ts-expect-error - Database type is a superset that includes all required tables
|
|
131
173
|
database, operationStore, documentIndexerConsistencyTracker);
|
|
132
|
-
|
|
174
|
+
try {
|
|
175
|
+
await documentIndexer.init();
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
console.error("Error initializing document indexer", error);
|
|
179
|
+
}
|
|
133
180
|
readModelInstances.push(documentIndexer);
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
181
|
+
const subscriptionManager = new ReactorSubscriptionManager(new DefaultSubscriptionErrorHandler());
|
|
182
|
+
const subscriptionNotificationReadModel = new SubscriptionNotificationReadModel(subscriptionManager, documentView);
|
|
183
|
+
const processorManagerConsistencyTracker = new ConsistencyTracker();
|
|
184
|
+
const processorManager = new ProcessorManager(
|
|
185
|
+
// @ts-expect-error - Database type is a superset that includes all required tables
|
|
186
|
+
database, operationIndex, writeCache, processorManagerConsistencyTracker);
|
|
187
|
+
try {
|
|
188
|
+
await processorManager.init();
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
console.error("Error initializing processor manager", error);
|
|
192
|
+
}
|
|
193
|
+
const readModelCoordinator = this.readModelCoordinator
|
|
194
|
+
? this.readModelCoordinator
|
|
195
|
+
: new ReadModelCoordinator(eventBus, readModelInstances, [
|
|
196
|
+
subscriptionNotificationReadModel,
|
|
197
|
+
processorManager,
|
|
198
|
+
]);
|
|
199
|
+
const reactor = new Reactor(this.logger, driveServer, consistencyAwareStorage, queue, jobTracker, readModelCoordinator, this.features, documentView, documentIndexer, operationStore);
|
|
139
200
|
let syncModule = undefined;
|
|
140
201
|
if (this.syncBuilder) {
|
|
141
|
-
syncModule = this.syncBuilder.buildModule(reactor, operationIndex, eventBus, database);
|
|
202
|
+
syncModule = this.syncBuilder.buildModule(reactor, this.logger, operationIndex, eventBus, database);
|
|
142
203
|
await syncModule.syncManager.startup();
|
|
143
204
|
}
|
|
144
205
|
return {
|
|
@@ -159,6 +220,9 @@ export class ReactorBuilder {
|
|
|
159
220
|
documentIndexer,
|
|
160
221
|
documentIndexerConsistencyTracker,
|
|
161
222
|
readModelCoordinator,
|
|
223
|
+
subscriptionManager,
|
|
224
|
+
processorManager,
|
|
225
|
+
processorManagerConsistencyTracker,
|
|
162
226
|
syncModule,
|
|
163
227
|
reactor,
|
|
164
228
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactor-builder.js","sourceRoot":"","sources":["../../../src/core/reactor-builder.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,IAAI,mBAAmB,EACrC,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"reactor-builder.js","sourceRoot":"","sources":["../../../src/core/reactor-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,32 @@
|
|
|
1
1
|
import type { IEventBus } from "#events/interfaces.js";
|
|
2
|
+
import type { ILogger } from "#logging/types.js";
|
|
3
|
+
import type { ISigner } from "document-model";
|
|
2
4
|
import { ReactorClient } from "../client/reactor-client.js";
|
|
3
5
|
import { type IJobAwaiter } from "../shared/awaiter.js";
|
|
4
|
-
import type {
|
|
6
|
+
import type { SignerConfig } from "../signer/types.js";
|
|
5
7
|
import type { IDocumentIndexer } from "../storage/interfaces.js";
|
|
6
8
|
import type { IReactorSubscriptionManager } from "../subs/types.js";
|
|
7
9
|
import type { ReactorBuilder } from "./reactor-builder.js";
|
|
8
|
-
import type { IReactor } from "./types.js";
|
|
10
|
+
import type { IReactor, ReactorClientModule } from "./types.js";
|
|
9
11
|
/**
|
|
10
12
|
* Builder class for constructing ReactorClient instances with proper configuration
|
|
11
13
|
*/
|
|
12
14
|
export declare class ReactorClientBuilder {
|
|
15
|
+
private logger?;
|
|
13
16
|
private reactorBuilder?;
|
|
14
17
|
private reactor?;
|
|
15
18
|
private eventBus?;
|
|
16
19
|
private documentIndexer?;
|
|
17
20
|
private signer?;
|
|
21
|
+
private signatureVerifier?;
|
|
18
22
|
private subscriptionManager?;
|
|
19
23
|
private jobAwaiter?;
|
|
24
|
+
/**
|
|
25
|
+
* Sets the logger for the ReactorClient.
|
|
26
|
+
* @param logger - The logger to use.
|
|
27
|
+
* @returns The ReactorClientBuilder instance.
|
|
28
|
+
*/
|
|
29
|
+
withLogger(logger: ILogger): this;
|
|
20
30
|
/**
|
|
21
31
|
* Either this or withReactor must be set.
|
|
22
32
|
*/
|
|
@@ -25,9 +35,15 @@ export declare class ReactorClientBuilder {
|
|
|
25
35
|
* Either this or withReactorBuilder must be set.
|
|
26
36
|
*/
|
|
27
37
|
withReactor(reactor: IReactor, eventBus: IEventBus, documentIndexer: IDocumentIndexer): this;
|
|
28
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Sets the signer configuration for signing and verifying actions.
|
|
40
|
+
*
|
|
41
|
+
* @param config - Either an ISigner for signing only, or a SignerConfig for both signing and verification
|
|
42
|
+
*/
|
|
43
|
+
withSigner(config: ISigner | SignerConfig): this;
|
|
29
44
|
withSubscriptionManager(subscriptionManager: IReactorSubscriptionManager): this;
|
|
30
45
|
withJobAwaiter(jobAwaiter: IJobAwaiter): this;
|
|
31
46
|
build(): Promise<ReactorClient>;
|
|
47
|
+
buildModule(): Promise<ReactorClientModule>;
|
|
32
48
|
}
|
|
33
|
-
//# sourceMappingURL=builder.d.ts.map
|
|
49
|
+
//# sourceMappingURL=reactor-client-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor-client-builder.d.ts","sourceRoot":"","sources":["../../../src/core/reactor-client-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAEV,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAiB,MAAM,YAAY,CAAC;AAE/E;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,OAAO,CAAC,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,iBAAiB,CAAC,CAA+B;IACzD,OAAO,CAAC,mBAAmB,CAAC,CAA8B;IAC1D,OAAO,CAAC,UAAU,CAAC,CAAc;IAEjC;;;;OAIG;IACI,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAKxC;;OAEG;IACI,kBAAkB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAS/D;;OAEG;IACI,WAAW,CAChB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,SAAS,EACnB,eAAe,EAAE,gBAAgB,GAChC,IAAI;IAWP;;;;OAIG;IACI,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;IAUhD,uBAAuB,CAC5B,mBAAmB,EAAE,2BAA2B,GAC/C,IAAI;IAKA,cAAc,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAKvC,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC;IAK/B,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;CA8DzD"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { ConsoleLogger } from "#logging/console.js";
|
|
2
|
+
import { ReactorClient } from "../client/reactor-client.js";
|
|
3
|
+
import { JobAwaiter } from "../shared/awaiter.js";
|
|
4
|
+
import { PassthroughSigner } from "../signer/passthrough-signer.js";
|
|
5
|
+
import { DefaultSubscriptionErrorHandler } from "../subs/default-error-handler.js";
|
|
6
|
+
import { ReactorSubscriptionManager } from "../subs/react-subscription-manager.js";
|
|
7
|
+
/**
|
|
8
|
+
* Builder class for constructing ReactorClient instances with proper configuration
|
|
9
|
+
*/
|
|
10
|
+
export class ReactorClientBuilder {
|
|
11
|
+
logger;
|
|
12
|
+
reactorBuilder;
|
|
13
|
+
reactor;
|
|
14
|
+
eventBus;
|
|
15
|
+
documentIndexer;
|
|
16
|
+
signer;
|
|
17
|
+
signatureVerifier;
|
|
18
|
+
subscriptionManager;
|
|
19
|
+
jobAwaiter;
|
|
20
|
+
/**
|
|
21
|
+
* Sets the logger for the ReactorClient.
|
|
22
|
+
* @param logger - The logger to use.
|
|
23
|
+
* @returns The ReactorClientBuilder instance.
|
|
24
|
+
*/
|
|
25
|
+
withLogger(logger) {
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Either this or withReactor must be set.
|
|
31
|
+
*/
|
|
32
|
+
withReactorBuilder(reactorBuilder) {
|
|
33
|
+
if (this.reactor) {
|
|
34
|
+
throw new Error("Reactor is already set");
|
|
35
|
+
}
|
|
36
|
+
this.reactorBuilder = reactorBuilder;
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Either this or withReactorBuilder must be set.
|
|
41
|
+
*/
|
|
42
|
+
withReactor(reactor, eventBus, documentIndexer) {
|
|
43
|
+
if (this.reactorBuilder) {
|
|
44
|
+
throw new Error("ReactorBuilder is already set");
|
|
45
|
+
}
|
|
46
|
+
this.reactor = reactor;
|
|
47
|
+
this.eventBus = eventBus;
|
|
48
|
+
this.documentIndexer = documentIndexer;
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Sets the signer configuration for signing and verifying actions.
|
|
53
|
+
*
|
|
54
|
+
* @param config - Either an ISigner for signing only, or a SignerConfig for both signing and verification
|
|
55
|
+
*/
|
|
56
|
+
withSigner(config) {
|
|
57
|
+
if ("signer" in config) {
|
|
58
|
+
this.signer = config.signer;
|
|
59
|
+
this.signatureVerifier = config.verifier;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.signer = config;
|
|
63
|
+
}
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
withSubscriptionManager(subscriptionManager) {
|
|
67
|
+
this.subscriptionManager = subscriptionManager;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
withJobAwaiter(jobAwaiter) {
|
|
71
|
+
this.jobAwaiter = jobAwaiter;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
async build() {
|
|
75
|
+
const module = await this.buildModule();
|
|
76
|
+
return module.client;
|
|
77
|
+
}
|
|
78
|
+
async buildModule() {
|
|
79
|
+
if (!this.logger) {
|
|
80
|
+
this.logger = new ConsoleLogger(["reactor-client"]);
|
|
81
|
+
}
|
|
82
|
+
let reactor;
|
|
83
|
+
let eventBus;
|
|
84
|
+
let documentIndexer;
|
|
85
|
+
let reactorModule;
|
|
86
|
+
if (this.reactorBuilder) {
|
|
87
|
+
if (this.signatureVerifier) {
|
|
88
|
+
this.reactorBuilder.withSignatureVerifier(this.signatureVerifier);
|
|
89
|
+
}
|
|
90
|
+
reactorModule = await this.reactorBuilder.buildModule();
|
|
91
|
+
reactor = reactorModule.reactor;
|
|
92
|
+
eventBus = reactorModule.eventBus;
|
|
93
|
+
documentIndexer = reactorModule.documentIndexer;
|
|
94
|
+
}
|
|
95
|
+
else if (this.reactor && this.eventBus && this.documentIndexer) {
|
|
96
|
+
reactor = this.reactor;
|
|
97
|
+
eventBus = this.eventBus;
|
|
98
|
+
documentIndexer = this.documentIndexer;
|
|
99
|
+
reactorModule = undefined;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
throw new Error("Either ReactorBuilder or (Reactor + EventBus + DocumentIndexer) is required");
|
|
103
|
+
}
|
|
104
|
+
const signer = this.signer ?? new PassthroughSigner();
|
|
105
|
+
const subscriptionManager = this.subscriptionManager ??
|
|
106
|
+
reactorModule?.subscriptionManager ??
|
|
107
|
+
new ReactorSubscriptionManager(new DefaultSubscriptionErrorHandler());
|
|
108
|
+
const jobAwaiter = this.jobAwaiter ??
|
|
109
|
+
new JobAwaiter(eventBus, (jobId, signal) => reactor.getJobStatus(jobId, signal));
|
|
110
|
+
const client = new ReactorClient(this.logger, reactor, signer, subscriptionManager, jobAwaiter, documentIndexer);
|
|
111
|
+
return {
|
|
112
|
+
client,
|
|
113
|
+
reactor,
|
|
114
|
+
eventBus,
|
|
115
|
+
documentIndexer,
|
|
116
|
+
signer,
|
|
117
|
+
subscriptionManager,
|
|
118
|
+
jobAwaiter,
|
|
119
|
+
reactorModule,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# 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,17 +1,18 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { ILogger } from "#logging/types.js";
|
|
2
|
+
import type { BaseDocumentDriveServer } from "document-drive";
|
|
3
|
+
import type { Action, DocumentModelModule, ISigner, Operation, PHDocument } from "document-model";
|
|
3
4
|
import type { IJobTracker } from "../job-tracker/interfaces.js";
|
|
4
5
|
import type { IQueue } from "../queue/interfaces.js";
|
|
5
6
|
import type { IReadModelCoordinator } from "../read-models/interfaces.js";
|
|
6
7
|
import type { ConsistencyToken, JobInfo, PagedResults, PagingOptions, SearchFilter, ShutdownStatus, ViewFilter } from "../shared/types.js";
|
|
7
|
-
import type {
|
|
8
|
-
import type { IDocumentIndexer, IDocumentView, IOperationStore } from "../storage/interfaces.js";
|
|
8
|
+
import type { IConsistencyAwareStorage, IDocumentIndexer, IDocumentView, IOperationStore } from "../storage/interfaces.js";
|
|
9
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.
|
|
13
13
|
*/
|
|
14
14
|
export declare class Reactor implements IReactor {
|
|
15
|
+
private logger;
|
|
15
16
|
private driveServer;
|
|
16
17
|
private documentStorage;
|
|
17
18
|
private shutdownStatus;
|
|
@@ -23,7 +24,7 @@ export declare class Reactor implements IReactor {
|
|
|
23
24
|
private documentView;
|
|
24
25
|
private _documentIndexer;
|
|
25
26
|
private operationStore;
|
|
26
|
-
constructor(driveServer: BaseDocumentDriveServer, documentStorage:
|
|
27
|
+
constructor(logger: ILogger, driveServer: BaseDocumentDriveServer, documentStorage: IConsistencyAwareStorage, queue: IQueue, jobTracker: IJobTracker, readModelCoordinator: IReadModelCoordinator, features: ReactorFeatures, documentView: IDocumentView, documentIndexer: IDocumentIndexer, operationStore: IOperationStore);
|
|
27
28
|
/**
|
|
28
29
|
* Signals that the reactor should shutdown.
|
|
29
30
|
*/
|
|
@@ -64,25 +65,25 @@ export declare class Reactor implements IReactor {
|
|
|
64
65
|
/**
|
|
65
66
|
* Creates a document
|
|
66
67
|
*/
|
|
67
|
-
create(document: PHDocument, signer?: ISigner, signal?: AbortSignal): Promise<JobInfo>;
|
|
68
|
+
create(document: PHDocument, signer?: ISigner, signal?: AbortSignal, meta?: Record<string, unknown>): Promise<JobInfo>;
|
|
68
69
|
/**
|
|
69
70
|
* Deletes a document
|
|
70
71
|
*/
|
|
71
|
-
deleteDocument(id: string, signer?: ISigner, signal?: AbortSignal): Promise<JobInfo>;
|
|
72
|
+
deleteDocument(id: string, signer?: ISigner, signal?: AbortSignal, meta?: Record<string, unknown>): Promise<JobInfo>;
|
|
72
73
|
/**
|
|
73
74
|
* Applies a list of actions to a document
|
|
74
75
|
*/
|
|
75
|
-
execute(docId: string, branch: string, actions: Action[], signal?: AbortSignal): Promise<JobInfo>;
|
|
76
|
+
execute(docId: string, branch: string, actions: Action[], signal?: AbortSignal, meta?: Record<string, unknown>): Promise<JobInfo>;
|
|
76
77
|
/**
|
|
77
78
|
* Imports pre-existing operations that were produced by another reactor.
|
|
78
79
|
* This function may cause a reshuffle, which will generate additional
|
|
79
80
|
* operations.
|
|
80
81
|
*/
|
|
81
|
-
load(docId: string, branch: string, operations: Operation[], signal?: AbortSignal): Promise<JobInfo>;
|
|
82
|
+
load(docId: string, branch: string, operations: Operation[], signal?: AbortSignal, meta?: Record<string, unknown>): Promise<JobInfo>;
|
|
82
83
|
/**
|
|
83
84
|
* Applies multiple mutations across documents with dependency management
|
|
84
85
|
*/
|
|
85
|
-
executeBatch(request: BatchExecutionRequest, signal?: AbortSignal): Promise<BatchExecutionResult>;
|
|
86
|
+
executeBatch(request: BatchExecutionRequest, signal?: AbortSignal, meta?: Record<string, unknown>): Promise<BatchExecutionResult>;
|
|
86
87
|
/**
|
|
87
88
|
* Adds multiple documents as children to another
|
|
88
89
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/core/reactor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/core/reactor.ts"],"names":[],"mappings":"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"}
|