@powerhousedao/reactor 6.0.0-dev.105 → 6.0.0-dev.107
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/index.d.ts +4306 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9433 -0
- package/dist/index.js.map +1 -0
- package/package.json +16 -18
- package/dist/src/actions/index.d.ts +0 -24
- package/dist/src/actions/index.d.ts.map +0 -1
- package/dist/src/admin/document-integrity-service.d.ts +0 -17
- package/dist/src/admin/document-integrity-service.d.ts.map +0 -1
- package/dist/src/admin/types.d.ts +0 -30
- package/dist/src/admin/types.d.ts.map +0 -1
- package/dist/src/cache/buffer/ring-buffer.d.ts +0 -37
- package/dist/src/cache/buffer/ring-buffer.d.ts.map +0 -1
- package/dist/src/cache/collection-membership-cache.d.ts +0 -14
- package/dist/src/cache/collection-membership-cache.d.ts.map +0 -1
- package/dist/src/cache/document-meta-cache-types.d.ts +0 -114
- package/dist/src/cache/document-meta-cache-types.d.ts.map +0 -1
- package/dist/src/cache/document-meta-cache.d.ts +0 -31
- package/dist/src/cache/document-meta-cache.d.ts.map +0 -1
- package/dist/src/cache/index.d.ts +0 -3
- package/dist/src/cache/index.d.ts.map +0 -1
- package/dist/src/cache/kysely-operation-index.d.ts +0 -24
- package/dist/src/cache/kysely-operation-index.d.ts.map +0 -1
- package/dist/src/cache/kysely-write-cache.d.ts +0 -142
- package/dist/src/cache/kysely-write-cache.d.ts.map +0 -1
- package/dist/src/cache/lru/lru-tracker.d.ts +0 -15
- package/dist/src/cache/lru/lru-tracker.d.ts.map +0 -1
- package/dist/src/cache/operation-index-types.d.ts +0 -64
- package/dist/src/cache/operation-index-types.d.ts.map +0 -1
- package/dist/src/cache/write/interfaces.d.ts +0 -88
- package/dist/src/cache/write/interfaces.d.ts.map +0 -1
- package/dist/src/cache/write-cache-types.d.ts +0 -42
- package/dist/src/cache/write-cache-types.d.ts.map +0 -1
- package/dist/src/client/reactor-client.d.ts +0 -121
- package/dist/src/client/reactor-client.d.ts.map +0 -1
- package/dist/src/client/types.d.ts +0 -260
- package/dist/src/client/types.d.ts.map +0 -1
- package/dist/src/core/reactor-builder.d.ts +0 -60
- package/dist/src/core/reactor-builder.d.ts.map +0 -1
- package/dist/src/core/reactor-client-builder.d.ts +0 -53
- package/dist/src/core/reactor-client-builder.d.ts.map +0 -1
- package/dist/src/core/reactor.d.ts +0 -56
- package/dist/src/core/reactor.d.ts.map +0 -1
- package/dist/src/core/types.d.ts +0 -312
- package/dist/src/core/types.d.ts.map +0 -1
- package/dist/src/core/utils.d.ts +0 -95
- package/dist/src/core/utils.d.ts.map +0 -1
- package/dist/src/events/event-bus.d.ts +0 -8
- package/dist/src/events/event-bus.d.ts.map +0 -1
- package/dist/src/events/interfaces.d.ts +0 -27
- package/dist/src/events/interfaces.d.ts.map +0 -1
- package/dist/src/events/types.d.ts +0 -92
- package/dist/src/events/types.d.ts.map +0 -1
- package/dist/src/executor/document-action-handler.d.ts +0 -30
- package/dist/src/executor/document-action-handler.d.ts.map +0 -1
- package/dist/src/executor/execution-scope.d.ts +0 -44
- package/dist/src/executor/execution-scope.d.ts.map +0 -1
- package/dist/src/executor/interfaces.d.ts +0 -49
- package/dist/src/executor/interfaces.d.ts.map +0 -1
- package/dist/src/executor/signature-verifier.d.ts +0 -9
- package/dist/src/executor/signature-verifier.d.ts.map +0 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts +0 -40
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +0 -1
- package/dist/src/executor/simple-job-executor.d.ts +0 -42
- package/dist/src/executor/simple-job-executor.d.ts.map +0 -1
- package/dist/src/executor/types.d.ts +0 -91
- package/dist/src/executor/types.d.ts.map +0 -1
- package/dist/src/executor/util.d.ts +0 -84
- package/dist/src/executor/util.d.ts.map +0 -1
- package/dist/src/index.d.ts +0 -56
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -20714
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts +0 -26
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +0 -1
- package/dist/src/job-tracker/index.d.ts +0 -3
- package/dist/src/job-tracker/index.d.ts.map +0 -1
- package/dist/src/job-tracker/interfaces.d.ts +0 -41
- package/dist/src/job-tracker/interfaces.d.ts.map +0 -1
- package/dist/src/logging/console.d.ts +0 -2
- package/dist/src/logging/console.d.ts.map +0 -1
- package/dist/src/logging/types.d.ts +0 -2
- package/dist/src/logging/types.d.ts.map +0 -1
- package/dist/src/processors/index.d.ts +0 -2
- package/dist/src/processors/index.d.ts.map +0 -1
- package/dist/src/processors/processor-manager.d.ts +0 -51
- package/dist/src/processors/processor-manager.d.ts.map +0 -1
- package/dist/src/processors/utils.d.ts +0 -11
- package/dist/src/processors/utils.d.ts.map +0 -1
- package/dist/src/queue/interfaces.d.ts +0 -103
- package/dist/src/queue/interfaces.d.ts.map +0 -1
- package/dist/src/queue/job-execution-handle.d.ts +0 -28
- package/dist/src/queue/job-execution-handle.d.ts.map +0 -1
- package/dist/src/queue/queue.d.ts +0 -110
- package/dist/src/queue/queue.d.ts.map +0 -1
- package/dist/src/queue/types.d.ts +0 -74
- package/dist/src/queue/types.d.ts.map +0 -1
- package/dist/src/read-models/base-read-model.d.ts +0 -62
- package/dist/src/read-models/base-read-model.d.ts.map +0 -1
- package/dist/src/read-models/coordinator.d.ts +0 -39
- package/dist/src/read-models/coordinator.d.ts.map +0 -1
- package/dist/src/read-models/document-view.d.ts +0 -27
- package/dist/src/read-models/document-view.d.ts.map +0 -1
- package/dist/src/read-models/interfaces.d.ts +0 -29
- package/dist/src/read-models/interfaces.d.ts.map +0 -1
- package/dist/src/read-models/types.d.ts +0 -63
- package/dist/src/read-models/types.d.ts.map +0 -1
- package/dist/src/registry/document-model-resolver.d.ts +0 -29
- package/dist/src/registry/document-model-resolver.d.ts.map +0 -1
- package/dist/src/registry/implementation.d.ts +0 -74
- package/dist/src/registry/implementation.d.ts.map +0 -1
- package/dist/src/registry/index.d.ts +0 -5
- package/dist/src/registry/index.d.ts.map +0 -1
- package/dist/src/registry/interfaces.d.ts +0 -108
- package/dist/src/registry/interfaces.d.ts.map +0 -1
- package/dist/src/shared/awaiter.d.ts +0 -35
- package/dist/src/shared/awaiter.d.ts.map +0 -1
- package/dist/src/shared/collect-all-pages.d.ts +0 -7
- package/dist/src/shared/collect-all-pages.d.ts.map +0 -1
- package/dist/src/shared/consistency-tracker.d.ts +0 -48
- package/dist/src/shared/consistency-tracker.d.ts.map +0 -1
- package/dist/src/shared/drive-url.d.ts +0 -15
- package/dist/src/shared/drive-url.d.ts.map +0 -1
- package/dist/src/shared/errors.d.ts +0 -50
- package/dist/src/shared/errors.d.ts.map +0 -1
- package/dist/src/shared/factories.d.ts +0 -20
- package/dist/src/shared/factories.d.ts.map +0 -1
- package/dist/src/shared/types.d.ts +0 -161
- package/dist/src/shared/types.d.ts.map +0 -1
- package/dist/src/shared/utils.d.ts +0 -3
- package/dist/src/shared/utils.d.ts.map +0 -1
- package/dist/src/signer/passthrough-signer.d.ts +0 -12
- package/dist/src/signer/passthrough-signer.d.ts.map +0 -1
- package/dist/src/signer/types.d.ts +0 -17
- package/dist/src/signer/types.d.ts.map +0 -1
- package/dist/src/storage/index.d.ts +0 -4
- package/dist/src/storage/index.d.ts.map +0 -1
- package/dist/src/storage/interfaces.d.ts +0 -574
- package/dist/src/storage/interfaces.d.ts.map +0 -1
- package/dist/src/storage/kysely/document-indexer.d.ts +0 -27
- package/dist/src/storage/kysely/document-indexer.d.ts.map +0 -1
- package/dist/src/storage/kysely/keyframe-store.d.ts +0 -24
- package/dist/src/storage/kysely/keyframe-store.d.ts.map +0 -1
- package/dist/src/storage/kysely/store.d.ts +0 -21
- package/dist/src/storage/kysely/store.d.ts.map +0 -1
- package/dist/src/storage/kysely/sync-cursor-storage.d.ts +0 -13
- package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +0 -1
- package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts +0 -18
- package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts.map +0 -1
- package/dist/src/storage/kysely/sync-remote-storage.d.ts +0 -13
- package/dist/src/storage/kysely/sync-remote-storage.d.ts.map +0 -1
- package/dist/src/storage/kysely/types.d.ts +0 -157
- package/dist/src/storage/kysely/types.d.ts.map +0 -1
- package/dist/src/storage/migrations/001_create_operation_table.d.ts +0 -3
- package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/002_create_keyframe_table.d.ts +0 -3
- package/dist/src/storage/migrations/002_create_keyframe_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/003_create_document_table.d.ts +0 -3
- package/dist/src/storage/migrations/003_create_document_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts +0 -3
- package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts +0 -3
- package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts +0 -3
- package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts +0 -3
- package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts +0 -3
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts +0 -3
- package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts.map +0 -1
- package/dist/src/storage/migrations/010_create_sync_tables.d.ts +0 -3
- package/dist/src/storage/migrations/010_create_sync_tables.d.ts.map +0 -1
- package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts +0 -3
- package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts.map +0 -1
- package/dist/src/storage/migrations/012_add_source_remote_column.d.ts +0 -3
- package/dist/src/storage/migrations/012_add_source_remote_column.d.ts.map +0 -1
- package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts +0 -3
- package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/014_create_processor_cursor_table.d.ts +0 -3
- package/dist/src/storage/migrations/014_create_processor_cursor_table.d.ts.map +0 -1
- package/dist/src/storage/migrations/index.d.ts +0 -3
- package/dist/src/storage/migrations/index.d.ts.map +0 -1
- package/dist/src/storage/migrations/migrator.d.ts +0 -6
- package/dist/src/storage/migrations/migrator.d.ts.map +0 -1
- package/dist/src/storage/migrations/run-migrations.d.ts +0 -2
- package/dist/src/storage/migrations/run-migrations.d.ts.map +0 -1
- package/dist/src/storage/migrations/types.d.ts +0 -9
- package/dist/src/storage/migrations/types.d.ts.map +0 -1
- package/dist/src/storage/txn.d.ts +0 -15
- package/dist/src/storage/txn.d.ts.map +0 -1
- package/dist/src/subs/default-error-handler.d.ts +0 -13
- package/dist/src/subs/default-error-handler.d.ts.map +0 -1
- package/dist/src/subs/react-subscription-manager.d.ts +0 -45
- package/dist/src/subs/react-subscription-manager.d.ts.map +0 -1
- package/dist/src/subs/subscription-notification-read-model.d.ts +0 -18
- package/dist/src/subs/subscription-notification-read-model.d.ts.map +0 -1
- package/dist/src/subs/types.d.ts +0 -64
- package/dist/src/subs/types.d.ts.map +0 -1
- package/dist/src/sync/batch-aggregator.d.ts +0 -25
- package/dist/src/sync/batch-aggregator.d.ts.map +0 -1
- package/dist/src/sync/buffered-mailbox.d.ts +0 -37
- package/dist/src/sync/buffered-mailbox.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-req-channel.d.ts +0 -133
- package/dist/src/sync/channels/gql-req-channel.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-request-channel-factory.d.ts +0 -32
- package/dist/src/sync/channels/gql-request-channel-factory.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-res-channel.d.ts +0 -31
- package/dist/src/sync/channels/gql-res-channel.d.ts.map +0 -1
- package/dist/src/sync/channels/gql-response-channel-factory.d.ts +0 -13
- package/dist/src/sync/channels/gql-response-channel-factory.d.ts.map +0 -1
- package/dist/src/sync/channels/index.d.ts +0 -8
- package/dist/src/sync/channels/index.d.ts.map +0 -1
- package/dist/src/sync/channels/interval-poll-timer.d.ts +0 -40
- package/dist/src/sync/channels/interval-poll-timer.d.ts.map +0 -1
- package/dist/src/sync/channels/poll-timer.d.ts +0 -14
- package/dist/src/sync/channels/poll-timer.d.ts.map +0 -1
- package/dist/src/sync/channels/utils.d.ts +0 -44
- package/dist/src/sync/channels/utils.d.ts.map +0 -1
- package/dist/src/sync/errors.d.ts +0 -16
- package/dist/src/sync/errors.d.ts.map +0 -1
- package/dist/src/sync/index.d.ts +0 -16
- package/dist/src/sync/index.d.ts.map +0 -1
- package/dist/src/sync/interfaces.d.ts +0 -203
- package/dist/src/sync/interfaces.d.ts.map +0 -1
- package/dist/src/sync/mailbox.d.ts +0 -62
- package/dist/src/sync/mailbox.d.ts.map +0 -1
- package/dist/src/sync/sync-awaiter.d.ts +0 -34
- package/dist/src/sync/sync-awaiter.d.ts.map +0 -1
- package/dist/src/sync/sync-builder.d.ts +0 -23
- package/dist/src/sync/sync-builder.d.ts.map +0 -1
- package/dist/src/sync/sync-manager.d.ts +0 -51
- package/dist/src/sync/sync-manager.d.ts.map +0 -1
- package/dist/src/sync/sync-operation.d.ts +0 -30
- package/dist/src/sync/sync-operation.d.ts.map +0 -1
- package/dist/src/sync/sync-status-tracker.d.ts +0 -31
- package/dist/src/sync/sync-status-tracker.d.ts.map +0 -1
- package/dist/src/sync/types.d.ts +0 -165
- package/dist/src/sync/types.d.ts.map +0 -1
- package/dist/src/sync/utils.d.ts +0 -71
- package/dist/src/sync/utils.d.ts.map +0 -1
- package/dist/src/utils/reshuffle.d.ts +0 -47
- package/dist/src/utils/reshuffle.d.ts.map +0 -1
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { IEventBus } from "../events/interfaces.js";
|
|
2
|
-
import type { Job } from "../queue/types.js";
|
|
3
|
-
import type { ErrorInfo } from "../shared/types.js";
|
|
4
|
-
import { type JobInfo } from "../shared/types.js";
|
|
5
|
-
import type { IJobTracker } from "./interfaces.js";
|
|
6
|
-
/**
|
|
7
|
-
* In-memory implementation of IJobTracker.
|
|
8
|
-
* Maintains job status in a Map for synchronous access.
|
|
9
|
-
* Subscribes to operation events to update job states.
|
|
10
|
-
*/
|
|
11
|
-
export declare class InMemoryJobTracker implements IJobTracker {
|
|
12
|
-
private eventBus;
|
|
13
|
-
private jobs;
|
|
14
|
-
private unsubscribers;
|
|
15
|
-
constructor(eventBus: IEventBus);
|
|
16
|
-
private subscribeToEvents;
|
|
17
|
-
private handleWriteReady;
|
|
18
|
-
private handleReadReady;
|
|
19
|
-
private handleJobFailed;
|
|
20
|
-
shutdown(): void;
|
|
21
|
-
registerJob(jobInfo: JobInfo): void;
|
|
22
|
-
markRunning(jobId: string): void;
|
|
23
|
-
markFailed(jobId: string, error: ErrorInfo, job?: Job): void;
|
|
24
|
-
getJobStatus(jobId: string): JobInfo | null;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=in-memory-job-tracker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-job-tracker.d.ts","sourceRoot":"","sources":["../../../src/job-tracker/in-memory-job-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAYzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAIxC,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,aAAa,CAAqB;gBAEtB,QAAQ,EAAE,SAAS;IAIvC,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAWvB,QAAQ,IAAI,IAAI;IAOhB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAsBhC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI;IA0B5D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAI5C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/job-tracker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { Job } from "../queue/types.js";
|
|
2
|
-
import type { ErrorInfo, JobInfo } from "../shared/types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Interface for tracking job lifecycle status.
|
|
5
|
-
* Maintains job state throughout execution: PENDING → RUNNING → COMPLETED/FAILED.
|
|
6
|
-
*/
|
|
7
|
-
export interface IJobTracker {
|
|
8
|
-
/**
|
|
9
|
-
* Register a new job with PENDING status.
|
|
10
|
-
*
|
|
11
|
-
* @param jobInfo - The job information to register
|
|
12
|
-
*/
|
|
13
|
-
registerJob(jobInfo: JobInfo): void;
|
|
14
|
-
/**
|
|
15
|
-
* Update a job's status to RUNNING.
|
|
16
|
-
*
|
|
17
|
-
* @param jobId - The job ID to mark as running
|
|
18
|
-
*/
|
|
19
|
-
markRunning(jobId: string): void;
|
|
20
|
-
/**
|
|
21
|
-
* Mark a job as failed.
|
|
22
|
-
*
|
|
23
|
-
* @param jobId - The job ID to mark as failed
|
|
24
|
-
* @param error - Error information including message and stack trace
|
|
25
|
-
* @param job - Optional full job object for debugging purposes
|
|
26
|
-
*/
|
|
27
|
-
markFailed(jobId: string, error: ErrorInfo, job?: Job): void;
|
|
28
|
-
/**
|
|
29
|
-
* Retrieve the current status of a job.
|
|
30
|
-
*
|
|
31
|
-
* @param jobId - The job ID to query
|
|
32
|
-
* @returns The job information, or null if the job is not found
|
|
33
|
-
*/
|
|
34
|
-
getJobStatus(jobId: string): JobInfo | null;
|
|
35
|
-
/**
|
|
36
|
-
* Shutdown the job tracker and clean up resources.
|
|
37
|
-
* Unsubscribes from all event bus subscriptions.
|
|
38
|
-
*/
|
|
39
|
-
shutdown(): void;
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/job-tracker/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEpC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAE7D;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAE5C;;;OAGG;IACH,QAAQ,IAAI,IAAI,CAAC;CAClB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/logging/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/logging/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import type { OperationWithContext } from "@powerhousedao/shared/document-model";
|
|
2
|
-
import type { IProcessorManager, ProcessorFactory, TrackedProcessor } from "@powerhousedao/shared/processors";
|
|
3
|
-
import type { Kysely } from "kysely";
|
|
4
|
-
import type { IOperationIndex } from "../cache/operation-index-types.js";
|
|
5
|
-
import type { IWriteCache } from "../cache/write/interfaces.js";
|
|
6
|
-
import type { ILogger } from "../logging/types.js";
|
|
7
|
-
import { BaseReadModel } from "../read-models/base-read-model.js";
|
|
8
|
-
import type { DocumentViewDatabase } from "../read-models/types.js";
|
|
9
|
-
import type { IConsistencyTracker } from "../shared/consistency-tracker.js";
|
|
10
|
-
/**
|
|
11
|
-
* Manages processor lifecycle based on operations.
|
|
12
|
-
* Extends BaseReadModel to receive operations from ReadModelCoordinator.
|
|
13
|
-
*
|
|
14
|
-
* Responsibilities:
|
|
15
|
-
* 1. Detect drive creation from CREATE_DOCUMENT operations
|
|
16
|
-
* 2. Create processors for each drive using registered factories
|
|
17
|
-
* 3. Route operations to matching processors based on filters
|
|
18
|
-
* 4. Clean up processors when drives are deleted or factories are unregistered
|
|
19
|
-
* 5. Track per-processor cursors for failure recovery and backfill
|
|
20
|
-
*/
|
|
21
|
-
export declare class ProcessorManager extends BaseReadModel implements IProcessorManager {
|
|
22
|
-
private factoryRegistry;
|
|
23
|
-
private processorsByDrive;
|
|
24
|
-
private factoryToProcessors;
|
|
25
|
-
private knownDriveIds;
|
|
26
|
-
private cursorCache;
|
|
27
|
-
private logger;
|
|
28
|
-
constructor(db: Kysely<DocumentViewDatabase>, operationIndex: IOperationIndex, writeCache: IWriteCache, consistencyTracker: IConsistencyTracker, logger: ILogger);
|
|
29
|
-
init(): Promise<void>;
|
|
30
|
-
protected commitOperations(items: OperationWithContext[]): Promise<void>;
|
|
31
|
-
registerFactory(identifier: string, factory: ProcessorFactory): Promise<void>;
|
|
32
|
-
unregisterFactory(identifier: string): Promise<void>;
|
|
33
|
-
get(processorId: string): TrackedProcessor | undefined;
|
|
34
|
-
getAll(): TrackedProcessor[];
|
|
35
|
-
private allTrackedProcessors;
|
|
36
|
-
private detectAndRegisterNewDrives;
|
|
37
|
-
private detectAndCleanupDeletedDrives;
|
|
38
|
-
private discoverExistingDrives;
|
|
39
|
-
private isDeletedDocumentADrive;
|
|
40
|
-
private createProcessorsForDrive;
|
|
41
|
-
private backfillProcessor;
|
|
42
|
-
private retryProcessor;
|
|
43
|
-
private cleanupDriveProcessors;
|
|
44
|
-
private safeDisconnect;
|
|
45
|
-
private routeOperationsToProcessors;
|
|
46
|
-
private loadAllCursors;
|
|
47
|
-
private safeSaveProcessorCursor;
|
|
48
|
-
private saveProcessorCursor;
|
|
49
|
-
private deleteProcessorCursors;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=processor-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processor-manager.d.ts","sourceRoot":"","sources":["../../../src/processors/processor-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAEV,iBAAiB,EACjB,gBAAgB,EAEhB,gBAAgB,EACjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAW5E;;;;;;;;;;GAUG;AACH,qBAAa,gBACX,SAAQ,aACR,YAAW,iBAAiB;IAE5B,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,mBAAmB,CACf;IACZ,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,MAAM,CAAU;gBAGtB,EAAE,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAChC,cAAc,EAAE,eAAe,EAC/B,UAAU,EAAE,WAAW,EACvB,kBAAkB,EAAE,mBAAmB,EACvC,MAAM,EAAE,OAAO;IASF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;cAMX,gBAAgB,CACvC,KAAK,EAAE,oBAAoB,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC;IAMV,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;IAmBV,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB1D,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAOtD,MAAM,IAAI,gBAAgB,EAAE;IAI5B,OAAO,CAAE,oBAAoB;YAMf,0BAA0B;YAyB1B,6BAA6B;YAgB7B,sBAAsB;IAapC,OAAO,CAAC,uBAAuB;YAIjB,wBAAwB;YAwGxB,iBAAiB;YAsCjB,cAAc;YASd,sBAAsB;YAiBtB,cAAc;YAQd,2BAA2B;YA0C3B,cAAc;YAWd,uBAAuB;YAcvB,mBAAmB;YAuCnB,sBAAsB;CAqBrC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { OperationWithContext } from "@powerhousedao/shared/document-model";
|
|
2
|
-
import type { ProcessorFilter } from "@powerhousedao/shared/processors";
|
|
3
|
-
import type { PHDocumentHeader } from "document-model";
|
|
4
|
-
export declare const DRIVE_DOCUMENT_TYPE = "powerhouse/document-drive";
|
|
5
|
-
export declare function isDriveCreation(op: OperationWithContext): boolean;
|
|
6
|
-
export declare function isDriveDeletion(op: OperationWithContext): boolean;
|
|
7
|
-
export declare function extractDriveHeader(op: OperationWithContext): PHDocumentHeader | undefined;
|
|
8
|
-
export declare function extractDeletedDocumentId(op: OperationWithContext): string | undefined;
|
|
9
|
-
export declare function createMinimalDriveHeader(driveId: string): PHDocumentHeader;
|
|
10
|
-
export declare function matchesFilter(op: OperationWithContext, filter: ProcessorFilter): boolean;
|
|
11
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/processors/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAE/D,wBAAgB,eAAe,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAKjE;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAEjE;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,oBAAoB,GACvB,gBAAgB,GAAG,SAAS,CAQ9B;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,oBAAoB,GACvB,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAe1E;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,eAAe,GACtB,OAAO,CA2BT"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import type { ErrorInfo } from "../shared/types.js";
|
|
2
|
-
import type { IJobExecutionHandle, Job } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Interface for a job queue that manages write operations.
|
|
5
|
-
* Internally organizes jobs by documentId, scope, and branch to ensure proper ordering.
|
|
6
|
-
* Emits events to the event bus when new jobs are available for consumption.
|
|
7
|
-
*/
|
|
8
|
-
export interface IQueue {
|
|
9
|
-
/**
|
|
10
|
-
* Add a new job to the queue.
|
|
11
|
-
* Jobs are automatically organized by documentId, scope, and branch internally.
|
|
12
|
-
* Emits a 'jobAvailable' event to the event bus when the job is queued.
|
|
13
|
-
* @param job - The job to add to the queue
|
|
14
|
-
* @returns Promise that resolves when the job is queued
|
|
15
|
-
*/
|
|
16
|
-
enqueue(job: Job): Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* Get the next job to execute for a specific document/scope/branch combination.
|
|
19
|
-
* @param documentId - The document ID to get jobs for
|
|
20
|
-
* @param scope - The scope to get jobs for
|
|
21
|
-
* @param branch - The branch to get jobs for
|
|
22
|
-
* @param signal - Optional abort signal to cancel the request
|
|
23
|
-
* @returns Promise that resolves to the next job execution handle or null if no jobs available
|
|
24
|
-
*/
|
|
25
|
-
dequeue(documentId: string, scope: string, branch: string, signal?: AbortSignal): Promise<IJobExecutionHandle | null>;
|
|
26
|
-
/**
|
|
27
|
-
* Get the next available job from any queue.
|
|
28
|
-
* @param signal - Optional abort signal to cancel the request
|
|
29
|
-
* @returns Promise that resolves to the next job execution handle or null if no jobs available
|
|
30
|
-
*/
|
|
31
|
-
dequeueNext(signal?: AbortSignal): Promise<IJobExecutionHandle | null>;
|
|
32
|
-
/**
|
|
33
|
-
* Get the current size of the queue for a specific document/scope/branch.
|
|
34
|
-
* @param documentId - The document ID
|
|
35
|
-
* @param scope - The scope
|
|
36
|
-
* @param branch - The branch
|
|
37
|
-
* @returns Promise that resolves to the number of jobs in the queue
|
|
38
|
-
*/
|
|
39
|
-
size(documentId: string, scope: string, branch: string): Promise<number>;
|
|
40
|
-
/**
|
|
41
|
-
* Get the total size of all queues.
|
|
42
|
-
* @returns Promise that resolves to the total number of jobs across all queues
|
|
43
|
-
*/
|
|
44
|
-
totalSize(): Promise<number>;
|
|
45
|
-
/**
|
|
46
|
-
* Remove a specific job from the queue.
|
|
47
|
-
* @param jobId - The ID of the job to remove
|
|
48
|
-
* @returns Promise that resolves to true if job was removed, false if not found
|
|
49
|
-
*/
|
|
50
|
-
remove(jobId: string): Promise<boolean>;
|
|
51
|
-
/**
|
|
52
|
-
* Clear all jobs for a specific document/scope/branch combination.
|
|
53
|
-
* @param documentId - The document ID
|
|
54
|
-
* @param scope - The scope
|
|
55
|
-
* @param branch - The branch
|
|
56
|
-
* @returns Promise that resolves when the queue is cleared
|
|
57
|
-
*/
|
|
58
|
-
clear(documentId: string, scope: string, branch: string): Promise<void>;
|
|
59
|
-
/**
|
|
60
|
-
* Clear all jobs from all queues.
|
|
61
|
-
* @returns Promise that resolves when all queues are cleared
|
|
62
|
-
*/
|
|
63
|
-
clearAll(): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Check if there are any jobs in the queue.
|
|
66
|
-
* @returns Promise that resolves to true if there are jobs, false otherwise
|
|
67
|
-
*/
|
|
68
|
-
hasJobs(): Promise<boolean>;
|
|
69
|
-
/**
|
|
70
|
-
* Mark a job as completed.
|
|
71
|
-
* @param jobId - The ID of the job to mark as completed
|
|
72
|
-
* @returns Promise that resolves when the job is marked as completed
|
|
73
|
-
*/
|
|
74
|
-
completeJob(jobId: string): Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* Mark a job as failed.
|
|
77
|
-
* @param jobId - The ID of the job to mark as failed
|
|
78
|
-
* @param error - Optional error information
|
|
79
|
-
* @returns Promise that resolves when the job is marked as failed
|
|
80
|
-
*/
|
|
81
|
-
failJob(jobId: string, error?: ErrorInfo): Promise<void>;
|
|
82
|
-
/**
|
|
83
|
-
* Retry a failed job.
|
|
84
|
-
* @param jobId - The ID of the job to retry
|
|
85
|
-
* @param error - Optional error information from the failure
|
|
86
|
-
* @returns Promise that resolves when the job is requeued for retry
|
|
87
|
-
*/
|
|
88
|
-
retryJob(jobId: string, error?: ErrorInfo): Promise<void>;
|
|
89
|
-
/**
|
|
90
|
-
* Returns true if and only if all jobs have been resolved.
|
|
91
|
-
*/
|
|
92
|
-
get isDrained(): boolean;
|
|
93
|
-
/**
|
|
94
|
-
* Blocks the queue from accepting new jobs.
|
|
95
|
-
* @param onDrained - Optional callback to call when the queue is drained
|
|
96
|
-
*/
|
|
97
|
-
block(onDrained?: () => void): void;
|
|
98
|
-
/**
|
|
99
|
-
* Unblocks the queue from accepting new jobs.
|
|
100
|
-
*/
|
|
101
|
-
unblock(): void;
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/queue/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC;;;;;;;OAOG;IACH,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAEvC;;;;OAIG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAEvE;;;;;;OAMG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzE;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExC;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5B;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC;IAEzB;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAEpC;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { ErrorInfo } from "../shared/types.js";
|
|
2
|
-
import type { IJobExecutionHandle, Job } from "./types.js";
|
|
3
|
-
import { JobQueueState } from "./types.js";
|
|
4
|
-
/**
|
|
5
|
-
* Implementation of the IJobExecutionHandle interface
|
|
6
|
-
*/
|
|
7
|
-
export declare class JobExecutionHandle implements IJobExecutionHandle {
|
|
8
|
-
private _state;
|
|
9
|
-
private _job;
|
|
10
|
-
private onStart?;
|
|
11
|
-
private onComplete?;
|
|
12
|
-
private onFail?;
|
|
13
|
-
private onDefer?;
|
|
14
|
-
private getStateName;
|
|
15
|
-
constructor(job: Job, initialState: JobQueueState, callbacks?: {
|
|
16
|
-
onStart?: () => void;
|
|
17
|
-
onComplete?: () => void;
|
|
18
|
-
onFail?: (error: ErrorInfo) => void;
|
|
19
|
-
onDefer?: () => void;
|
|
20
|
-
});
|
|
21
|
-
get job(): Job;
|
|
22
|
-
get state(): JobQueueState;
|
|
23
|
-
start(): void;
|
|
24
|
-
complete(): void;
|
|
25
|
-
fail(error: ErrorInfo): void;
|
|
26
|
-
defer(): void;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=job-execution-handle.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"job-execution-handle.d.ts","sourceRoot":"","sources":["../../../src/queue/job-execution-handle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,MAAM,CAAC,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAC,CAAa;IAE7B,OAAO,CAAC,YAAY;gBAkBlB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,aAAa,EAC3B,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;QACpC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;KACtB;IAUH,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,KAAK,IAAI,aAAa,CAEzB;IAED,KAAK,IAAI,IAAI;IAUb,QAAQ,IAAI,IAAI;IAUhB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAU5B,KAAK,IAAI,IAAI;CASd"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import type { IEventBus } from "../events/interfaces.js";
|
|
2
|
-
import type { IDocumentModelResolver } from "../registry/document-model-resolver.js";
|
|
3
|
-
import type { ErrorInfo } from "../shared/types.js";
|
|
4
|
-
import type { IQueue } from "./interfaces.js";
|
|
5
|
-
import type { IJobExecutionHandle, Job } from "./types.js";
|
|
6
|
-
/**
|
|
7
|
-
* In-memory implementation of the IQueue interface.
|
|
8
|
-
* Organizes jobs by documentId, scope, and branch to ensure proper ordering.
|
|
9
|
-
* Ensures serial execution per document by tracking executing jobs.
|
|
10
|
-
* Implements dependency management through queue hints.
|
|
11
|
-
*/
|
|
12
|
-
export declare class InMemoryQueue implements IQueue {
|
|
13
|
-
private eventBus;
|
|
14
|
-
private resolver;
|
|
15
|
-
private queues;
|
|
16
|
-
private jobIdToQueueKey;
|
|
17
|
-
private docIdToJobId;
|
|
18
|
-
private jobIdToDocId;
|
|
19
|
-
private completedJobs;
|
|
20
|
-
private jobIndex;
|
|
21
|
-
private isBlocked;
|
|
22
|
-
private onDrainedCallback?;
|
|
23
|
-
private isPausedFlag;
|
|
24
|
-
constructor(eventBus: IEventBus, resolver: IDocumentModelResolver);
|
|
25
|
-
private toErrorInfo;
|
|
26
|
-
/**
|
|
27
|
-
* Creates a unique key for a document/scope/branch combination
|
|
28
|
-
*/
|
|
29
|
-
private createQueueKey;
|
|
30
|
-
/**
|
|
31
|
-
* Gets or creates a queue for the given key
|
|
32
|
-
*/
|
|
33
|
-
private getQueue;
|
|
34
|
-
/**
|
|
35
|
-
* Check if a document has any jobs currently executing
|
|
36
|
-
*/
|
|
37
|
-
private isDocumentExecuting;
|
|
38
|
-
/**
|
|
39
|
-
* Mark a job as executing for its document
|
|
40
|
-
*/
|
|
41
|
-
private markJobExecuting;
|
|
42
|
-
/**
|
|
43
|
-
* Mark a job as no longer executing for its document
|
|
44
|
-
*/
|
|
45
|
-
private markJobComplete;
|
|
46
|
-
/**
|
|
47
|
-
* Check if all dependencies for a job have been completed
|
|
48
|
-
*/
|
|
49
|
-
private areDependenciesMet;
|
|
50
|
-
/**
|
|
51
|
-
* Get the next job that has all its dependencies met
|
|
52
|
-
*/
|
|
53
|
-
private getNextJobWithMetDependencies;
|
|
54
|
-
private getCreateDocumentType;
|
|
55
|
-
enqueue(job: Job): Promise<void>;
|
|
56
|
-
dequeue(documentId: string, scope: string, branch: string, signal?: AbortSignal): Promise<IJobExecutionHandle | null>;
|
|
57
|
-
dequeueNext(signal?: AbortSignal): Promise<IJobExecutionHandle | null>;
|
|
58
|
-
size(documentId: string, scope: string, branch: string): Promise<number>;
|
|
59
|
-
totalSize(): Promise<number>;
|
|
60
|
-
remove(jobId: string): Promise<boolean>;
|
|
61
|
-
clear(documentId: string, scope: string, branch: string): Promise<void>;
|
|
62
|
-
clearAll(): Promise<void>;
|
|
63
|
-
hasJobs(): Promise<boolean>;
|
|
64
|
-
completeJob(jobId: string): Promise<void>;
|
|
65
|
-
failJob(jobId: string, error?: ErrorInfo): Promise<void>;
|
|
66
|
-
deferJob(jobId: string): void;
|
|
67
|
-
retryJob(jobId: string, error?: ErrorInfo): Promise<void>;
|
|
68
|
-
/**
|
|
69
|
-
* Check if the queue is drained and call the callback if it is
|
|
70
|
-
*/
|
|
71
|
-
private checkDrained;
|
|
72
|
-
/**
|
|
73
|
-
* Returns true if and only if all jobs have been resolved.
|
|
74
|
-
*/
|
|
75
|
-
get isDrained(): boolean;
|
|
76
|
-
/**
|
|
77
|
-
* Blocks the queue from accepting new jobs.
|
|
78
|
-
* @param onDrained - Optional callback to call when the queue is drained
|
|
79
|
-
*/
|
|
80
|
-
block(onDrained?: () => void): void;
|
|
81
|
-
/**
|
|
82
|
-
* Unblocks the queue from accepting new jobs.
|
|
83
|
-
*/
|
|
84
|
-
unblock(): void;
|
|
85
|
-
/**
|
|
86
|
-
* Pauses job dequeuing. Jobs can still be enqueued but dequeueNext() will return null.
|
|
87
|
-
*/
|
|
88
|
-
pause(): void;
|
|
89
|
-
/**
|
|
90
|
-
* Resumes job dequeuing and emits JOB_AVAILABLE events for pending jobs to wake up executors.
|
|
91
|
-
*/
|
|
92
|
-
resume(): Promise<void>;
|
|
93
|
-
/**
|
|
94
|
-
* Returns whether job dequeuing is paused.
|
|
95
|
-
*/
|
|
96
|
-
get paused(): boolean;
|
|
97
|
-
/**
|
|
98
|
-
* Returns all pending jobs across all queues.
|
|
99
|
-
*/
|
|
100
|
-
getPendingJobs(): Job[];
|
|
101
|
-
/**
|
|
102
|
-
* Returns a map of document IDs to sets of executing job IDs.
|
|
103
|
-
*/
|
|
104
|
-
getExecutingJobIds(): Map<string, Set<string>>;
|
|
105
|
-
/**
|
|
106
|
-
* Returns a job by ID from the job index.
|
|
107
|
-
*/
|
|
108
|
-
getJob(jobId: string): Job | undefined;
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import type { Action, Operation } from "document-model";
|
|
2
|
-
import type { ErrorInfo, JobMeta } from "../shared/types.js";
|
|
3
|
-
export type JobKind = "mutation" | "load";
|
|
4
|
-
/**
|
|
5
|
-
* State of a job in the queue
|
|
6
|
-
*/
|
|
7
|
-
export declare enum JobQueueState {
|
|
8
|
-
UNKNOWN = -1,
|
|
9
|
-
PREPROCESSING = 0,
|
|
10
|
-
PENDING = 1,
|
|
11
|
-
READY = 2,
|
|
12
|
-
RUNNING = 3,
|
|
13
|
-
RESOLVED = 4
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Interface for a job execution handle
|
|
17
|
-
*/
|
|
18
|
-
export interface IJobExecutionHandle {
|
|
19
|
-
readonly job: Job;
|
|
20
|
-
readonly state: JobQueueState;
|
|
21
|
-
start(): void;
|
|
22
|
-
complete(): void;
|
|
23
|
-
fail(error: ErrorInfo): void;
|
|
24
|
-
defer(): void;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Represents a job to be executed by the job executor
|
|
28
|
-
*/
|
|
29
|
-
export type Job = {
|
|
30
|
-
/** Unique identifier for the job */
|
|
31
|
-
id: string;
|
|
32
|
-
/** Classification of the job so executors can switch behavior */
|
|
33
|
-
kind: JobKind;
|
|
34
|
-
/** The document ID this job operates on */
|
|
35
|
-
documentId: string;
|
|
36
|
-
/** The scope of the operations */
|
|
37
|
-
scope: string;
|
|
38
|
-
/** The branch of the operations */
|
|
39
|
-
branch: string;
|
|
40
|
-
/** The actions to be executed (processed sequentially) */
|
|
41
|
-
actions: Action[];
|
|
42
|
-
/** Pre-existing operations to import (used for load jobs) */
|
|
43
|
-
operations: Operation[];
|
|
44
|
-
/** Timestamp when the job was created */
|
|
45
|
-
createdAt: string;
|
|
46
|
-
/** The hint for the queue to use for ordering the job */
|
|
47
|
-
queueHint: string[];
|
|
48
|
-
/** Number of retry attempts */
|
|
49
|
-
retryCount?: number;
|
|
50
|
-
/** Maximum number of retries allowed */
|
|
51
|
-
maxRetries?: number;
|
|
52
|
-
/** Last error if job failed */
|
|
53
|
-
lastError?: ErrorInfo;
|
|
54
|
-
/** History of all errors from each attempt (ordered) */
|
|
55
|
-
errorHistory: ErrorInfo[];
|
|
56
|
-
/** Metadata that flows through the job lifecycle */
|
|
57
|
-
meta: JobMeta;
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Event types for the queue system
|
|
61
|
-
*/
|
|
62
|
-
export declare const QueueEventTypes: {
|
|
63
|
-
readonly JOB_AVAILABLE: 10000;
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Event data for job available events
|
|
67
|
-
*/
|
|
68
|
-
export type JobAvailableEvent = {
|
|
69
|
-
documentId: string;
|
|
70
|
-
scope: string;
|
|
71
|
-
branch: string;
|
|
72
|
-
jobId: string;
|
|
73
|
-
};
|
|
74
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAE1C;;GAEG;AACH,oBAAY,aAAa;IACvB,OAAO,KAAK;IACZ,aAAa,IAAI;IACjB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,OAAO,IAAI;IACX,QAAQ,IAAI;CACb;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,IAAI,CAAC;IACjB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG;IAChB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IAEX,iEAAiE;IACjE,IAAI,EAAE,OAAO,CAAC;IAEd,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IAEnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IAEd,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IAEf,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,6DAA6D;IAC7D,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,yDAAyD;IACzD,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,wDAAwD;IACxD,YAAY,EAAE,SAAS,EAAE,CAAC;IAE1B,oDAAoD;IACpD,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;CAElB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { OperationWithContext } from "@powerhousedao/shared/document-model";
|
|
2
|
-
import type { Kysely, Transaction } from "kysely";
|
|
3
|
-
import type { IOperationIndex } from "../cache/operation-index-types.js";
|
|
4
|
-
import type { IWriteCache } from "../cache/write/interfaces.js";
|
|
5
|
-
import type { IConsistencyTracker } from "../shared/consistency-tracker.js";
|
|
6
|
-
import type { ConsistencyToken } from "../shared/types.js";
|
|
7
|
-
import type { IReadModel } from "./interfaces.js";
|
|
8
|
-
import type { DocumentViewDatabase } from "./types.js";
|
|
9
|
-
export type BaseReadModelConfig = {
|
|
10
|
-
readModelId: string;
|
|
11
|
-
rebuildStateOnInit: boolean;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Base class for read models that provides catch-up/rewind functionality.
|
|
15
|
-
* Handles initialization, state tracking via ViewState table, and consistency tracking.
|
|
16
|
-
* Subclasses override commitOperations() with their specific domain logic.
|
|
17
|
-
*/
|
|
18
|
-
export declare class BaseReadModel implements IReadModel {
|
|
19
|
-
protected db: Kysely<DocumentViewDatabase>;
|
|
20
|
-
protected operationIndex: IOperationIndex;
|
|
21
|
-
protected writeCache: IWriteCache;
|
|
22
|
-
protected consistencyTracker: IConsistencyTracker;
|
|
23
|
-
protected config: BaseReadModelConfig;
|
|
24
|
-
protected lastOrdinal: number;
|
|
25
|
-
constructor(db: Kysely<DocumentViewDatabase>, operationIndex: IOperationIndex, writeCache: IWriteCache, consistencyTracker: IConsistencyTracker, config: BaseReadModelConfig);
|
|
26
|
-
/**
|
|
27
|
-
* Initializes the read model by loading state and catching up on missed operations.
|
|
28
|
-
*/
|
|
29
|
-
init(): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Template method: runs domain-specific commitOperations, then persists
|
|
32
|
-
* state and updates consistency tracking.
|
|
33
|
-
*/
|
|
34
|
-
indexOperations(items: OperationWithContext[]): Promise<void>;
|
|
35
|
-
/**
|
|
36
|
-
* Waits for the read model to reach the specified consistency level.
|
|
37
|
-
*/
|
|
38
|
-
waitForConsistency(token: ConsistencyToken, timeoutMs?: number, signal?: AbortSignal): Promise<void>;
|
|
39
|
-
protected commitOperations(items: OperationWithContext[]): Promise<void>;
|
|
40
|
-
/**
|
|
41
|
-
* Rebuilds document state for each operation using the write cache.
|
|
42
|
-
*/
|
|
43
|
-
protected rebuildStateForOperations(operations: OperationWithContext[]): Promise<OperationWithContext[]>;
|
|
44
|
-
/**
|
|
45
|
-
* Loads the last processed ordinal from the ViewState table.
|
|
46
|
-
* Returns undefined if no state exists for this read model.
|
|
47
|
-
*/
|
|
48
|
-
protected loadState(): Promise<number | undefined>;
|
|
49
|
-
/**
|
|
50
|
-
* Initializes the ViewState row for this read model.
|
|
51
|
-
*/
|
|
52
|
-
protected initializeState(): Promise<void>;
|
|
53
|
-
/**
|
|
54
|
-
* Saves the last processed ordinal to the ViewState table.
|
|
55
|
-
*/
|
|
56
|
-
protected saveState(trx: Transaction<DocumentViewDatabase>, items: OperationWithContext[]): Promise<void>;
|
|
57
|
-
/**
|
|
58
|
-
* Updates the consistency tracker with the processed operations.
|
|
59
|
-
*/
|
|
60
|
-
protected updateConsistencyTracker(items: OperationWithContext[]): void;
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=base-read-model.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base-read-model.d.ts","sourceRoot":"","sources":["../../../src/read-models/base-read-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAc,YAAW,UAAU;IAI5C,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAC1C,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,UAAU,EAAE,WAAW;IACjC,SAAS,CAAC,kBAAkB,EAAE,mBAAmB;IACjD,SAAS,CAAC,MAAM,EAAE,mBAAmB;IAPvC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAK;gBAGtB,EAAE,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAChC,cAAc,EAAE,eAAe,EAC/B,UAAU,EAAE,WAAW,EACvB,kBAAkB,EAAE,mBAAmB,EACvC,MAAM,EAAE,mBAAmB;IAGvC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B3B;;;OAGG;IACG,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnE;;OAEG;IACG,kBAAkB,CACtB,KAAK,EAAE,gBAAgB,EACvB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;cAQA,gBAAgB,CAE9B,KAAK,EAAE,oBAAoB,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC;IAEhB;;OAEG;cACa,yBAAyB,CACvC,UAAU,EAAE,oBAAoB,EAAE,GACjC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA0BlC;;;OAGG;cACa,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAWxD;;OAEG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAWhD;;OAEG;cACa,SAAS,CACvB,GAAG,EAAE,WAAW,CAAC,oBAAoB,CAAC,EACtC,KAAK,EAAE,oBAAoB,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,IAAI;CAexE"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { IEventBus } from "../events/interfaces.js";
|
|
2
|
-
import type { IReadModel, IReadModelCoordinator } from "./interfaces.js";
|
|
3
|
-
/**
|
|
4
|
-
* Coordinates read model synchronization by listening to operation write events
|
|
5
|
-
* and updating all registered read models in parallel.
|
|
6
|
-
*
|
|
7
|
-
* This coordinator is responsible for:
|
|
8
|
-
* - Subscribing to OPERATION_WRITTEN events from the event bus
|
|
9
|
-
* - Distributing operation updates to all registered read models
|
|
10
|
-
* - Managing the lifecycle of read model subscriptions
|
|
11
|
-
*
|
|
12
|
-
* Read models are updated asynchronously and in parallel to avoid blocking
|
|
13
|
-
* the write path. Errors in read model updates are propagated through the
|
|
14
|
-
* event bus but do not affect the write operation success.
|
|
15
|
-
*/
|
|
16
|
-
export declare class ReadModelCoordinator implements IReadModelCoordinator {
|
|
17
|
-
private eventBus;
|
|
18
|
-
readonly preReady: IReadModel[];
|
|
19
|
-
readonly postReady: IReadModel[];
|
|
20
|
-
private unsubscribe?;
|
|
21
|
-
private isRunning;
|
|
22
|
-
constructor(eventBus: IEventBus, preReady: IReadModel[], postReady: IReadModel[]);
|
|
23
|
-
/**
|
|
24
|
-
* Start listening for operation events and updating read models.
|
|
25
|
-
* Can be called multiple times safely (subsequent calls are no-ops).
|
|
26
|
-
*/
|
|
27
|
-
start(): void;
|
|
28
|
-
/**
|
|
29
|
-
* Stop listening and clean up subscriptions.
|
|
30
|
-
* Can be called multiple times safely (subsequent calls are no-ops).
|
|
31
|
-
*/
|
|
32
|
-
stop(): void;
|
|
33
|
-
/**
|
|
34
|
-
* Handle write ready events by updating all read models in parallel.
|
|
35
|
-
* Errors from individual read models are collected and re-thrown as an aggregate.
|
|
36
|
-
*/
|
|
37
|
-
private handleWriteReady;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=coordinator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../src/read-models/coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAOzD,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAqB,YAAW,qBAAqB;IAK9D,OAAO,CAAC,QAAQ;aACA,QAAQ,EAAE,UAAU,EAAE;aACtB,SAAS,EAAE,UAAU,EAAE;IANzC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,SAAS,CAAS;gBAGhB,QAAQ,EAAE,SAAS,EACX,QAAQ,EAAE,UAAU,EAAE,EACtB,SAAS,EAAE,UAAU,EAAE;IAKzC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAgBb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAaZ;;;OAGG;YACW,gBAAgB;CAsB/B"}
|