@spine-event-engine/server 2.0.0-snapshot.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +569 -0
- package/REFERENCE.md +488 -0
- package/dist/bus/command-bus.d.ts +61 -0
- package/dist/bus/command-bus.d.ts.map +1 -0
- package/dist/bus/command-bus.js +201 -0
- package/dist/bus/command-bus.js.map +1 -0
- package/dist/bus/command-dispatcher-registry.d.ts +33 -0
- package/dist/bus/command-dispatcher-registry.d.ts.map +1 -0
- package/dist/bus/command-dispatcher-registry.js +75 -0
- package/dist/bus/command-dispatcher-registry.js.map +1 -0
- package/dist/bus/command-dispatcher.d.ts +25 -0
- package/dist/bus/command-dispatcher.d.ts.map +1 -0
- package/dist/bus/command-dispatcher.js +15 -0
- package/dist/bus/command-dispatcher.js.map +1 -0
- package/dist/bus/command-errors.d.ts +23 -0
- package/dist/bus/command-errors.d.ts.map +1 -0
- package/dist/bus/command-errors.js +52 -0
- package/dist/bus/command-errors.js.map +1 -0
- package/dist/bus/event-bus.d.ts +113 -0
- package/dist/bus/event-bus.d.ts.map +1 -0
- package/dist/bus/event-bus.js +518 -0
- package/dist/bus/event-bus.js.map +1 -0
- package/dist/bus/event-dispatcher-origin-schemas.d.ts +17 -0
- package/dist/bus/event-dispatcher-origin-schemas.d.ts.map +1 -0
- package/dist/bus/event-dispatcher-origin-schemas.js +32 -0
- package/dist/bus/event-dispatcher-origin-schemas.js.map +1 -0
- package/dist/bus/event-dispatcher-registry.d.ts +48 -0
- package/dist/bus/event-dispatcher-registry.d.ts.map +1 -0
- package/dist/bus/event-dispatcher-registry.js +176 -0
- package/dist/bus/event-dispatcher-registry.js.map +1 -0
- package/dist/bus/event-dispatcher.d.ts +48 -0
- package/dist/bus/event-dispatcher.d.ts.map +1 -0
- package/dist/bus/event-dispatcher.js +15 -0
- package/dist/bus/event-dispatcher.js.map +1 -0
- package/dist/context/bounded-context.d.ts +606 -0
- package/dist/context/bounded-context.d.ts.map +1 -0
- package/dist/context/bounded-context.js +1780 -0
- package/dist/context/bounded-context.js.map +1 -0
- package/dist/context/entity-inbox.d.ts +63 -0
- package/dist/context/entity-inbox.d.ts.map +1 -0
- package/dist/context/entity-inbox.js +380 -0
- package/dist/context/entity-inbox.js.map +1 -0
- package/dist/context/local-inbox-handoff.d.ts +244 -0
- package/dist/context/local-inbox-handoff.d.ts.map +1 -0
- package/dist/context/local-inbox-handoff.js +334 -0
- package/dist/context/local-inbox-handoff.js.map +1 -0
- package/dist/context/projection-handoff.d.ts +46 -0
- package/dist/context/projection-handoff.d.ts.map +1 -0
- package/dist/context/projection-handoff.js +172 -0
- package/dist/context/projection-handoff.js.map +1 -0
- package/dist/context/tenant-index.d.ts +41 -0
- package/dist/context/tenant-index.d.ts.map +1 -0
- package/dist/context/tenant-index.js +92 -0
- package/dist/context/tenant-index.js.map +1 -0
- package/dist/delivery/conditional-pickup.d.ts +25 -0
- package/dist/delivery/conditional-pickup.d.ts.map +1 -0
- package/dist/delivery/conditional-pickup.js +26 -0
- package/dist/delivery/conditional-pickup.js.map +1 -0
- package/dist/delivery/delivery-builder.d.ts +216 -0
- package/dist/delivery/delivery-builder.d.ts.map +1 -0
- package/dist/delivery/delivery-builder.js +323 -0
- package/dist/delivery/delivery-builder.js.map +1 -0
- package/dist/delivery/delivery-lease.d.ts +15 -0
- package/dist/delivery/delivery-lease.d.ts.map +1 -0
- package/dist/delivery/delivery-lease.js +44 -0
- package/dist/delivery/delivery-lease.js.map +1 -0
- package/dist/delivery/delivery-loop.d.ts +113 -0
- package/dist/delivery/delivery-loop.d.ts.map +1 -0
- package/dist/delivery/delivery-loop.js +119 -0
- package/dist/delivery/delivery-loop.js.map +1 -0
- package/dist/delivery/delivery-monitor.d.ts +165 -0
- package/dist/delivery/delivery-monitor.d.ts.map +1 -0
- package/dist/delivery/delivery-monitor.js +168 -0
- package/dist/delivery/delivery-monitor.js.map +1 -0
- package/dist/delivery/delivery-ports.d.ts +141 -0
- package/dist/delivery/delivery-ports.d.ts.map +1 -0
- package/dist/delivery/delivery-ports.js +15 -0
- package/dist/delivery/delivery-ports.js.map +1 -0
- package/dist/delivery/delivery-run-control.d.ts +50 -0
- package/dist/delivery/delivery-run-control.d.ts.map +1 -0
- package/dist/delivery/delivery-run-control.js +66 -0
- package/dist/delivery/delivery-run-control.js.map +1 -0
- package/dist/delivery/delivery-run-coordinator.d.ts +218 -0
- package/dist/delivery/delivery-run-coordinator.d.ts.map +1 -0
- package/dist/delivery/delivery-run-coordinator.js +609 -0
- package/dist/delivery/delivery-run-coordinator.js.map +1 -0
- package/dist/delivery/delivery-storage-error.d.ts +13 -0
- package/dist/delivery/delivery-storage-error.d.ts.map +1 -0
- package/dist/delivery/delivery-storage-error.js +30 -0
- package/dist/delivery/delivery-storage-error.js.map +1 -0
- package/dist/delivery/delivery-supervisor.d.ts +175 -0
- package/dist/delivery/delivery-supervisor.d.ts.map +1 -0
- package/dist/delivery/delivery-supervisor.js +469 -0
- package/dist/delivery/delivery-supervisor.js.map +1 -0
- package/dist/delivery/delivery-worker.d.ts +180 -0
- package/dist/delivery/delivery-worker.d.ts.map +1 -0
- package/dist/delivery/delivery-worker.js +232 -0
- package/dist/delivery/delivery-worker.js.map +1 -0
- package/dist/delivery/delivery.d.ts +238 -0
- package/dist/delivery/delivery.d.ts.map +1 -0
- package/dist/delivery/delivery.js +400 -0
- package/dist/delivery/delivery.js.map +1 -0
- package/dist/delivery/inbox-records.d.ts +19 -0
- package/dist/delivery/inbox-records.d.ts.map +1 -0
- package/dist/delivery/inbox-records.js +291 -0
- package/dist/delivery/inbox-records.js.map +1 -0
- package/dist/delivery/inbox-storage.d.ts +81 -0
- package/dist/delivery/inbox-storage.d.ts.map +1 -0
- package/dist/delivery/inbox-storage.js +353 -0
- package/dist/delivery/inbox-storage.js.map +1 -0
- package/dist/delivery/inbox.d.ts +263 -0
- package/dist/delivery/inbox.d.ts.map +1 -0
- package/dist/delivery/inbox.js +172 -0
- package/dist/delivery/inbox.js.map +1 -0
- package/dist/delivery/parked-delivery-obligations.d.ts +182 -0
- package/dist/delivery/parked-delivery-obligations.d.ts.map +1 -0
- package/dist/delivery/parked-delivery-obligations.js +390 -0
- package/dist/delivery/parked-delivery-obligations.js.map +1 -0
- package/dist/delivery/shard-index.d.ts +41 -0
- package/dist/delivery/shard-index.d.ts.map +1 -0
- package/dist/delivery/shard-index.js +67 -0
- package/dist/delivery/shard-index.js.map +1 -0
- package/dist/delivery/sharded-work-registry.d.ts +114 -0
- package/dist/delivery/sharded-work-registry.d.ts.map +1 -0
- package/dist/delivery/sharded-work-registry.js +360 -0
- package/dist/delivery/sharded-work-registry.js.map +1 -0
- package/dist/entity/entity-metadata.d.ts +173 -0
- package/dist/entity/entity-metadata.d.ts.map +1 -0
- package/dist/entity/entity-metadata.js +187 -0
- package/dist/entity/entity-metadata.js.map +1 -0
- package/dist/entity/entity-storage-descriptor.d.ts +64 -0
- package/dist/entity/entity-storage-descriptor.d.ts.map +1 -0
- package/dist/entity/entity-storage-descriptor.js +227 -0
- package/dist/entity/entity-storage-descriptor.js.map +1 -0
- package/dist/entity/entity-transaction.d.ts +372 -0
- package/dist/entity/entity-transaction.d.ts.map +1 -0
- package/dist/entity/entity-transaction.js +413 -0
- package/dist/entity/entity-transaction.js.map +1 -0
- package/dist/entity/entity-transition-validation.d.ts +47 -0
- package/dist/entity/entity-transition-validation.d.ts.map +1 -0
- package/dist/entity/entity-transition-validation.js +327 -0
- package/dist/entity/entity-transition-validation.js.map +1 -0
- package/dist/entity/entity.d.ts +499 -0
- package/dist/entity/entity.d.ts.map +1 -0
- package/dist/entity/entity.js +829 -0
- package/dist/entity/entity.js.map +1 -0
- package/dist/entity/implicit-required-id.d.ts +15 -0
- package/dist/entity/implicit-required-id.d.ts.map +1 -0
- package/dist/entity/implicit-required-id.js +123 -0
- package/dist/entity/implicit-required-id.js.map +1 -0
- package/dist/entity/spec-scanner.d.ts +14 -0
- package/dist/entity/spec-scanner.d.ts.map +1 -0
- package/dist/entity/spec-scanner.js +37 -0
- package/dist/entity/spec-scanner.js.map +1 -0
- package/dist/handler/build-time-handler-analyzer.d.ts +150 -0
- package/dist/handler/build-time-handler-analyzer.d.ts.map +1 -0
- package/dist/handler/build-time-handler-analyzer.js +1101 -0
- package/dist/handler/build-time-handler-analyzer.js.map +1 -0
- package/dist/handler/command-registration-readiness.d.ts +99 -0
- package/dist/handler/command-registration-readiness.d.ts.map +1 -0
- package/dist/handler/command-registration-readiness.js +118 -0
- package/dist/handler/command-registration-readiness.js.map +1 -0
- package/dist/handler/event-handler-filter.d.ts +43 -0
- package/dist/handler/event-handler-filter.d.ts.map +1 -0
- package/dist/handler/event-handler-filter.js +128 -0
- package/dist/handler/event-handler-filter.js.map +1 -0
- package/dist/handler/event-registration-readiness.d.ts +196 -0
- package/dist/handler/event-registration-readiness.d.ts.map +1 -0
- package/dist/handler/event-registration-readiness.js +187 -0
- package/dist/handler/event-registration-readiness.js.map +1 -0
- package/dist/handler/external.d.ts +10 -0
- package/dist/handler/external.d.ts.map +1 -0
- package/dist/handler/external.js +15 -0
- package/dist/handler/external.js.map +1 -0
- package/dist/handler/generated-handler-registry.d.ts +154 -0
- package/dist/handler/generated-handler-registry.d.ts.map +1 -0
- package/dist/handler/generated-handler-registry.js +223 -0
- package/dist/handler/generated-handler-registry.js.map +1 -0
- package/dist/handler/generated-registry-discovery.d.ts +94 -0
- package/dist/handler/generated-registry-discovery.d.ts.map +1 -0
- package/dist/handler/generated-registry-discovery.js +228 -0
- package/dist/handler/generated-registry-discovery.js.map +1 -0
- package/dist/handler/generated-registry-writer.d.ts +58 -0
- package/dist/handler/generated-registry-writer.d.ts.map +1 -0
- package/dist/handler/generated-registry-writer.js +458 -0
- package/dist/handler/generated-registry-writer.js.map +1 -0
- package/dist/handler/handler-codegen.d.ts +48 -0
- package/dist/handler/handler-codegen.d.ts.map +1 -0
- package/dist/handler/handler-codegen.js +214 -0
- package/dist/handler/handler-codegen.js.map +1 -0
- package/dist/handler/handler-decorators.d.ts +134 -0
- package/dist/handler/handler-decorators.d.ts.map +1 -0
- package/dist/handler/handler-decorators.js +239 -0
- package/dist/handler/handler-decorators.js.map +1 -0
- package/dist/handler/handler-metadata.d.ts +510 -0
- package/dist/handler/handler-metadata.d.ts.map +1 -0
- package/dist/handler/handler-metadata.js +391 -0
- package/dist/handler/handler-metadata.js.map +1 -0
- package/dist/handler/registration-readiness-metadata.d.ts +68 -0
- package/dist/handler/registration-readiness-metadata.d.ts.map +1 -0
- package/dist/handler/registration-readiness-metadata.js +170 -0
- package/dist/handler/registration-readiness-metadata.js.map +1 -0
- package/dist/handler/rejection-source.d.ts +11 -0
- package/dist/handler/rejection-source.d.ts.map +1 -0
- package/dist/handler/rejection-source.js +25 -0
- package/dist/handler/rejection-source.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/integration/external-messages.d.ts +49 -0
- package/dist/integration/external-messages.d.ts.map +1 -0
- package/dist/integration/external-messages.js +112 -0
- package/dist/integration/external-messages.js.map +1 -0
- package/dist/integration/integration-broker.d.ts +74 -0
- package/dist/integration/integration-broker.d.ts.map +1 -0
- package/dist/integration/integration-broker.js +444 -0
- package/dist/integration/integration-broker.js.map +1 -0
- package/dist/integration/third-party-context.d.ts +56 -0
- package/dist/integration/third-party-context.d.ts.map +1 -0
- package/dist/integration/third-party-context.js +130 -0
- package/dist/integration/third-party-context.js.map +1 -0
- package/dist/repository/command-errors.d.ts +25 -0
- package/dist/repository/command-errors.d.ts.map +1 -0
- package/dist/repository/command-errors.js +43 -0
- package/dist/repository/command-errors.js.map +1 -0
- package/dist/repository/command-routing.d.ts +72 -0
- package/dist/repository/command-routing.d.ts.map +1 -0
- package/dist/repository/command-routing.js +98 -0
- package/dist/repository/command-routing.js.map +1 -0
- package/dist/repository/commit-fence.d.ts +22 -0
- package/dist/repository/commit-fence.d.ts.map +1 -0
- package/dist/repository/commit-fence.js +37 -0
- package/dist/repository/commit-fence.js.map +1 -0
- package/dist/repository/event-routing.d.ts +71 -0
- package/dist/repository/event-routing.d.ts.map +1 -0
- package/dist/repository/event-routing.js +96 -0
- package/dist/repository/event-routing.js.map +1 -0
- package/dist/repository/primitive-id.d.ts +86 -0
- package/dist/repository/primitive-id.d.ts.map +1 -0
- package/dist/repository/primitive-id.js +110 -0
- package/dist/repository/primitive-id.js.map +1 -0
- package/dist/repository/repository.d.ts +670 -0
- package/dist/repository/repository.d.ts.map +1 -0
- package/dist/repository/repository.js +3298 -0
- package/dist/repository/repository.js.map +1 -0
- package/dist/repository/routing-declarations.d.ts +75 -0
- package/dist/repository/routing-declarations.d.ts.map +1 -0
- package/dist/repository/routing-declarations.js +101 -0
- package/dist/repository/routing-declarations.js.map +1 -0
- package/dist/repository/state-update-routing.d.ts +66 -0
- package/dist/repository/state-update-routing.d.ts.map +1 -0
- package/dist/repository/state-update-routing.js +91 -0
- package/dist/repository/state-update-routing.js.map +1 -0
- package/dist/runtime/runtime.d.ts +156 -0
- package/dist/runtime/runtime.d.ts.map +1 -0
- package/dist/runtime/runtime.js +215 -0
- package/dist/runtime/runtime.js.map +1 -0
- package/dist/runtime/signal-intake.d.ts +84 -0
- package/dist/runtime/signal-intake.d.ts.map +1 -0
- package/dist/runtime/signal-intake.js +94 -0
- package/dist/runtime/signal-intake.js.map +1 -0
- package/dist/runtime/signal-metadata.d.ts +242 -0
- package/dist/runtime/signal-metadata.d.ts.map +1 -0
- package/dist/runtime/signal-metadata.js +368 -0
- package/dist/runtime/signal-metadata.js.map +1 -0
- package/dist/server/browser-server.d.ts +49 -0
- package/dist/server/browser-server.d.ts.map +1 -0
- package/dist/server/browser-server.js +633 -0
- package/dist/server/browser-server.js.map +1 -0
- package/dist/server/durable-subscription-bindings.d.ts +122 -0
- package/dist/server/durable-subscription-bindings.d.ts.map +1 -0
- package/dist/server/durable-subscription-bindings.js +524 -0
- package/dist/server/durable-subscription-bindings.js.map +1 -0
- package/dist/server/environment-attachment.d.ts +356 -0
- package/dist/server/environment-attachment.d.ts.map +1 -0
- package/dist/server/environment-attachment.js +2061 -0
- package/dist/server/environment-attachment.js.map +1 -0
- package/dist/server/environment-delivery-records.d.ts +77 -0
- package/dist/server/environment-delivery-records.d.ts.map +1 -0
- package/dist/server/environment-delivery-records.js +282 -0
- package/dist/server/environment-delivery-records.js.map +1 -0
- package/dist/server/environment-delivery-worker.d.ts +161 -0
- package/dist/server/environment-delivery-worker.d.ts.map +1 -0
- package/dist/server/environment-delivery-worker.js +664 -0
- package/dist/server/environment-delivery-worker.js.map +1 -0
- package/dist/server/environment.d.ts +43 -0
- package/dist/server/environment.d.ts.map +1 -0
- package/dist/server/environment.js +90 -0
- package/dist/server/environment.js.map +1 -0
- package/dist/server/managed-child-subscription.d.ts +11 -0
- package/dist/server/managed-child-subscription.d.ts.map +1 -0
- package/dist/server/managed-child-subscription.js +44 -0
- package/dist/server/managed-child-subscription.js.map +1 -0
- package/dist/server/managed-server-application.d.ts +324 -0
- package/dist/server/managed-server-application.d.ts.map +1 -0
- package/dist/server/managed-server-application.js +937 -0
- package/dist/server/managed-server-application.js.map +1 -0
- package/dist/server/node-coordinator.d.ts +191 -0
- package/dist/server/node-coordinator.d.ts.map +1 -0
- package/dist/server/node-coordinator.js +552 -0
- package/dist/server/node-coordinator.js.map +1 -0
- package/dist/server/process-server-coordinator.d.ts +15 -0
- package/dist/server/process-server-coordinator.d.ts.map +1 -0
- package/dist/server/process-server-coordinator.js +112 -0
- package/dist/server/process-server-coordinator.js.map +1 -0
- package/dist/server/reserved-spine-rpc-paths.json +8 -0
- package/dist/server/retryable-close.d.ts +28 -0
- package/dist/server/retryable-close.d.ts.map +1 -0
- package/dist/server/retryable-close.js +129 -0
- package/dist/server/retryable-close.js.map +1 -0
- package/dist/server/server-environment.d.ts +180 -0
- package/dist/server/server-environment.d.ts.map +1 -0
- package/dist/server/server-environment.js +418 -0
- package/dist/server/server-environment.js.map +1 -0
- package/dist/server/server-log.d.ts +18 -0
- package/dist/server/server-log.d.ts.map +1 -0
- package/dist/server/server-log.js +96 -0
- package/dist/server/server-log.js.map +1 -0
- package/dist/server/server.d.ts +389 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +752 -0
- package/dist/server/server.js.map +1 -0
- package/dist/services/spine-services.d.ts +88 -0
- package/dist/services/spine-services.d.ts.map +1 -0
- package/dist/services/spine-services.js +1586 -0
- package/dist/services/spine-services.js.map +1 -0
- package/dist/stand/stand.d.ts +294 -0
- package/dist/stand/stand.d.ts.map +1 -0
- package/dist/stand/stand.js +680 -0
- package/dist/stand/stand.js.map +1 -0
- package/dist/stand/subscription-observer.d.ts +53 -0
- package/dist/stand/subscription-observer.d.ts.map +1 -0
- package/dist/stand/subscription-observer.js +444 -0
- package/dist/stand/subscription-observer.js.map +1 -0
- package/dist/stand/subscription-records.d.ts +12 -0
- package/dist/stand/subscription-records.d.ts.map +1 -0
- package/dist/stand/subscription-records.js +99 -0
- package/dist/stand/subscription-records.js.map +1 -0
- package/dist/stand/subscription-registry.d.ts +285 -0
- package/dist/stand/subscription-registry.d.ts.map +1 -0
- package/dist/stand/subscription-registry.js +403 -0
- package/dist/stand/subscription-registry.js.map +1 -0
- package/dist/stand/subscription-runtime.d.ts +102 -0
- package/dist/stand/subscription-runtime.d.ts.map +1 -0
- package/dist/stand/subscription-runtime.js +380 -0
- package/dist/stand/subscription-runtime.js.map +1 -0
- package/dist/testing/index.d.ts +14 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +34 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { InboxMessage } from "./inbox.js";
|
|
2
|
+
import type { ShardIndex } from "./shard-index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Executes a monitor-selected asynchronous reception outcome.
|
|
5
|
+
*/
|
|
6
|
+
export interface ReceptionAction {
|
|
7
|
+
/**
|
|
8
|
+
* Executes the selected reception outcome.
|
|
9
|
+
*
|
|
10
|
+
* @returns A promise that settles when the outcome has completed.
|
|
11
|
+
*/
|
|
12
|
+
execute(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Executes a monitor-selected pickup outcome.
|
|
16
|
+
*/
|
|
17
|
+
export interface PickUpAction {
|
|
18
|
+
/**
|
|
19
|
+
* Executes the selected pickup outcome.
|
|
20
|
+
*
|
|
21
|
+
* @returns A promise that settles when the outcome has completed.
|
|
22
|
+
*/
|
|
23
|
+
execute(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Describes a failed dispatch of one Inbox message.
|
|
27
|
+
*/
|
|
28
|
+
export declare class FailedReception {
|
|
29
|
+
readonly message: InboxMessage;
|
|
30
|
+
readonly error: unknown;
|
|
31
|
+
private readonly mark;
|
|
32
|
+
private readonly repeat;
|
|
33
|
+
/**
|
|
34
|
+
* Creates facts and fallback actions for a failed reception.
|
|
35
|
+
*
|
|
36
|
+
* @param message The message whose dispatch failed.
|
|
37
|
+
* @param error The dispatch failure.
|
|
38
|
+
* @param mark Marks the message delivered under the current shard session.
|
|
39
|
+
* @param repeat Repeats dispatch once under the current shard session.
|
|
40
|
+
*/
|
|
41
|
+
constructor(message: InboxMessage, error: unknown, mark: () => Promise<void>, repeat: () => Promise<void>);
|
|
42
|
+
/**
|
|
43
|
+
* Returns durable acknowledgement of the failed row.
|
|
44
|
+
*
|
|
45
|
+
* @returns The acknowledgement action.
|
|
46
|
+
*/
|
|
47
|
+
markDelivered(): ReceptionAction;
|
|
48
|
+
/**
|
|
49
|
+
* Returns one immediate repeat of the failed dispatch.
|
|
50
|
+
*
|
|
51
|
+
* @returns The repeat-dispatch action.
|
|
52
|
+
*/
|
|
53
|
+
repeatDispatching(): ReceptionAction;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Describes a failed shard acquisition.
|
|
57
|
+
*/
|
|
58
|
+
export declare class FailedPickUp {
|
|
59
|
+
readonly shard: ShardIndex;
|
|
60
|
+
readonly error: unknown;
|
|
61
|
+
/**
|
|
62
|
+
* Creates facts for a failed shard acquisition.
|
|
63
|
+
*
|
|
64
|
+
* @param shard The shard whose acquisition failed.
|
|
65
|
+
* @param error The acquisition failure.
|
|
66
|
+
*/
|
|
67
|
+
constructor(shard: ShardIndex, error: unknown);
|
|
68
|
+
/**
|
|
69
|
+
* Returns a failed delivery result without acquiring ownership.
|
|
70
|
+
*
|
|
71
|
+
* @returns The failed-result action.
|
|
72
|
+
*/
|
|
73
|
+
fail(): PickUpAction;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Describes a shard already owned by another worker.
|
|
77
|
+
*/
|
|
78
|
+
export declare class AlreadyPickedUp {
|
|
79
|
+
readonly shard: ShardIndex;
|
|
80
|
+
/**
|
|
81
|
+
* Creates facts for an already-owned shard.
|
|
82
|
+
*
|
|
83
|
+
* @param shard The shard already owned by another worker.
|
|
84
|
+
*/
|
|
85
|
+
constructor(shard: ShardIndex);
|
|
86
|
+
/**
|
|
87
|
+
* Returns a skipped delivery result without acquiring ownership.
|
|
88
|
+
*
|
|
89
|
+
* @returns The skipped-result action.
|
|
90
|
+
*/
|
|
91
|
+
skip(): PickUpAction;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Identifies a point at which a monitor can stop finite delivery.
|
|
95
|
+
*/
|
|
96
|
+
export type DeliveryStage = "DELIVERY" | "PAGE";
|
|
97
|
+
/**
|
|
98
|
+
* Summarizes one completed finite delivery.
|
|
99
|
+
*/
|
|
100
|
+
export interface DeliveryStatistics {
|
|
101
|
+
/**
|
|
102
|
+
* Counts messages considered for endpoint dispatch.
|
|
103
|
+
*/
|
|
104
|
+
readonly processed: number;
|
|
105
|
+
/**
|
|
106
|
+
* Counts messages durably acknowledged as delivered.
|
|
107
|
+
*/
|
|
108
|
+
readonly delivered: number;
|
|
109
|
+
/**
|
|
110
|
+
* Counts dispatch or acknowledgement failures observed by the run.
|
|
111
|
+
*/
|
|
112
|
+
readonly failed: number;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Controls finite delivery failure actions without scheduling retries.
|
|
116
|
+
*
|
|
117
|
+
* Subclasses can return direct values or promises from every hook. The default
|
|
118
|
+
* reception policy marks the failed row delivered so independent targets keep
|
|
119
|
+
* draining; it never persists attempts, receipts, markers, or quarantine data.
|
|
120
|
+
*/
|
|
121
|
+
export declare class DeliveryMonitor {
|
|
122
|
+
/**
|
|
123
|
+
* Checks whether delivery can continue after a lifecycle stage.
|
|
124
|
+
*
|
|
125
|
+
* @param stage The stage that has just been reached.
|
|
126
|
+
* @returns Whether the current finite delivery should continue.
|
|
127
|
+
*/
|
|
128
|
+
shouldContinueAfter(stage: DeliveryStage): boolean | Promise<boolean>;
|
|
129
|
+
/**
|
|
130
|
+
* Handles successful shard ownership before Inbox reads begin.
|
|
131
|
+
*
|
|
132
|
+
* @param shard The owned shard about to drain.
|
|
133
|
+
* @returns A promise that settles after the hook completes.
|
|
134
|
+
*/
|
|
135
|
+
onDeliveryStarted(shard: ShardIndex): void | Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* Handles a delivery after shard ownership has been released.
|
|
138
|
+
*
|
|
139
|
+
* @param statistics The immutable result counts for the finished delivery.
|
|
140
|
+
* @returns A promise that settles after the hook completes.
|
|
141
|
+
*/
|
|
142
|
+
onDeliveryCompleted(statistics: DeliveryStatistics): void | Promise<void>;
|
|
143
|
+
/**
|
|
144
|
+
* Returns an action after endpoint dispatch or acknowledgement fails.
|
|
145
|
+
*
|
|
146
|
+
* @param reception The failure facts and one-shot actions.
|
|
147
|
+
* @returns The selected asynchronous reception action.
|
|
148
|
+
*/
|
|
149
|
+
onReceptionFailure(reception: FailedReception): ReceptionAction | Promise<ReceptionAction>;
|
|
150
|
+
/**
|
|
151
|
+
* Returns an action after shard acquisition fails.
|
|
152
|
+
*
|
|
153
|
+
* @param failure The failed acquisition facts.
|
|
154
|
+
* @returns The selected pickup action.
|
|
155
|
+
*/
|
|
156
|
+
onShardPickUpFailure(failure: FailedPickUp): PickUpAction | Promise<PickUpAction>;
|
|
157
|
+
/**
|
|
158
|
+
* Returns an action when another worker already owns the shard.
|
|
159
|
+
*
|
|
160
|
+
* @param failure The already-owned shard facts.
|
|
161
|
+
* @returns The selected pickup action.
|
|
162
|
+
*/
|
|
163
|
+
onShardAlreadyPicked(failure: AlreadyPickedUp): PickUpAction | Promise<PickUpAction>;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=delivery-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-monitor.d.ts","sourceRoot":"","sources":["../../src/delivery/delivery-monitor.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,eAAe;IAG9B;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAG3B;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,eAAe;IAYxB,QAAQ,CAAC,OAAO,EAAE,YAAY;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZzB;;;;;;;OAOG;gBAEQ,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,OAAO,EACN,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACzB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAG9C;;;;OAIG;IACH,aAAa,IAAI,eAAe;IAIhC;;;;OAIG;IACH,iBAAiB,IAAI,eAAe;CAGrC;AAED;;GAEG;AACH,qBAAa,YAAY;IAUrB,QAAQ,CAAC,KAAK,EAAE,UAAU;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO;IARzB;;;;;OAKG;gBAEQ,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,OAAO;IAGzB;;;;OAIG;IACH,IAAI,IAAI,YAAY;CAGrB;AAED;;GAEG;AACH,qBAAa,eAAe;IAQd,QAAQ,CAAC,KAAK,EAAE,UAAU;IALtC;;;;OAIG;gBACkB,KAAK,EAAE,UAAU;IAEtC;;;;OAIG;IACH,IAAI,IAAI,YAAY;CAGrB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAGjC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAG1B;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrE;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;;;;OAKG;IACH,mBAAmB,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE;;;;;OAKG;IACH,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAI1F;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAIjF;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;CAGrF"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, CodeMatters. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
|
5
|
+
* in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
10
|
+
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
11
|
+
* or implied. See the License for the specific language governing permissions and limitations under
|
|
12
|
+
* the License.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Describes a failed dispatch of one Inbox message.
|
|
16
|
+
*/
|
|
17
|
+
export class FailedReception {
|
|
18
|
+
message;
|
|
19
|
+
error;
|
|
20
|
+
mark;
|
|
21
|
+
repeat;
|
|
22
|
+
// prettier-ignore
|
|
23
|
+
/**
|
|
24
|
+
* Creates facts and fallback actions for a failed reception.
|
|
25
|
+
*
|
|
26
|
+
* @param message The message whose dispatch failed.
|
|
27
|
+
* @param error The dispatch failure.
|
|
28
|
+
* @param mark Marks the message delivered under the current shard session.
|
|
29
|
+
* @param repeat Repeats dispatch once under the current shard session.
|
|
30
|
+
*/
|
|
31
|
+
constructor(message, error, mark, repeat) {
|
|
32
|
+
this.message = message;
|
|
33
|
+
this.error = error;
|
|
34
|
+
this.mark = mark;
|
|
35
|
+
this.repeat = repeat;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Returns durable acknowledgement of the failed row.
|
|
39
|
+
*
|
|
40
|
+
* @returns The acknowledgement action.
|
|
41
|
+
*/
|
|
42
|
+
markDelivered() {
|
|
43
|
+
return Object.freeze({ execute: this.mark });
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns one immediate repeat of the failed dispatch.
|
|
47
|
+
*
|
|
48
|
+
* @returns The repeat-dispatch action.
|
|
49
|
+
*/
|
|
50
|
+
repeatDispatching() {
|
|
51
|
+
return Object.freeze({ execute: this.repeat });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Describes a failed shard acquisition.
|
|
56
|
+
*/
|
|
57
|
+
export class FailedPickUp {
|
|
58
|
+
shard;
|
|
59
|
+
error;
|
|
60
|
+
// prettier-ignore
|
|
61
|
+
/**
|
|
62
|
+
* Creates facts for a failed shard acquisition.
|
|
63
|
+
*
|
|
64
|
+
* @param shard The shard whose acquisition failed.
|
|
65
|
+
* @param error The acquisition failure.
|
|
66
|
+
*/
|
|
67
|
+
constructor(shard, error) {
|
|
68
|
+
this.shard = shard;
|
|
69
|
+
this.error = error;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Returns a failed delivery result without acquiring ownership.
|
|
73
|
+
*
|
|
74
|
+
* @returns The failed-result action.
|
|
75
|
+
*/
|
|
76
|
+
fail() {
|
|
77
|
+
return Object.freeze({ execute: () => Promise.resolve() });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Describes a shard already owned by another worker.
|
|
82
|
+
*/
|
|
83
|
+
export class AlreadyPickedUp {
|
|
84
|
+
shard;
|
|
85
|
+
// prettier-ignore
|
|
86
|
+
/**
|
|
87
|
+
* Creates facts for an already-owned shard.
|
|
88
|
+
*
|
|
89
|
+
* @param shard The shard already owned by another worker.
|
|
90
|
+
*/
|
|
91
|
+
constructor(shard) {
|
|
92
|
+
this.shard = shard;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Returns a skipped delivery result without acquiring ownership.
|
|
96
|
+
*
|
|
97
|
+
* @returns The skipped-result action.
|
|
98
|
+
*/
|
|
99
|
+
skip() {
|
|
100
|
+
return Object.freeze({ execute: () => Promise.resolve() });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Controls finite delivery failure actions without scheduling retries.
|
|
105
|
+
*
|
|
106
|
+
* Subclasses can return direct values or promises from every hook. The default
|
|
107
|
+
* reception policy marks the failed row delivered so independent targets keep
|
|
108
|
+
* draining; it never persists attempts, receipts, markers, or quarantine data.
|
|
109
|
+
*/
|
|
110
|
+
export class DeliveryMonitor {
|
|
111
|
+
// prettier-ignore
|
|
112
|
+
/**
|
|
113
|
+
* Checks whether delivery can continue after a lifecycle stage.
|
|
114
|
+
*
|
|
115
|
+
* @param stage The stage that has just been reached.
|
|
116
|
+
* @returns Whether the current finite delivery should continue.
|
|
117
|
+
*/
|
|
118
|
+
shouldContinueAfter(stage) {
|
|
119
|
+
void stage;
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Handles successful shard ownership before Inbox reads begin.
|
|
124
|
+
*
|
|
125
|
+
* @param shard The owned shard about to drain.
|
|
126
|
+
* @returns A promise that settles after the hook completes.
|
|
127
|
+
*/
|
|
128
|
+
onDeliveryStarted(shard) {
|
|
129
|
+
void shard;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Handles a delivery after shard ownership has been released.
|
|
133
|
+
*
|
|
134
|
+
* @param statistics The immutable result counts for the finished delivery.
|
|
135
|
+
* @returns A promise that settles after the hook completes.
|
|
136
|
+
*/
|
|
137
|
+
onDeliveryCompleted(statistics) {
|
|
138
|
+
void statistics;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Returns an action after endpoint dispatch or acknowledgement fails.
|
|
142
|
+
*
|
|
143
|
+
* @param reception The failure facts and one-shot actions.
|
|
144
|
+
* @returns The selected asynchronous reception action.
|
|
145
|
+
*/
|
|
146
|
+
onReceptionFailure(reception) {
|
|
147
|
+
return reception.markDelivered();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Returns an action after shard acquisition fails.
|
|
151
|
+
*
|
|
152
|
+
* @param failure The failed acquisition facts.
|
|
153
|
+
* @returns The selected pickup action.
|
|
154
|
+
*/
|
|
155
|
+
onShardPickUpFailure(failure) {
|
|
156
|
+
return failure.fail();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Returns an action when another worker already owns the shard.
|
|
160
|
+
*
|
|
161
|
+
* @param failure The already-owned shard facts.
|
|
162
|
+
* @returns The selected pickup action.
|
|
163
|
+
*/
|
|
164
|
+
onShardAlreadyPicked(failure) {
|
|
165
|
+
return failure.skip();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=delivery-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-monitor.js","sourceRoot":"","sources":["../../src/delivery/delivery-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiCH;;GAEG;AACH,MAAM,OAAO,eAAe;IAYf;IACA;IACQ;IACA;IAdnB,kBAAkB;IAElB;;;;;;;OAOG;IACH,YACW,OAAqB,EACrB,KAAc,EACN,IAAyB,EACzB,MAA2B;QAHnC,YAAO,GAAP,OAAO,CAAc;QACrB,UAAK,GAAL,KAAK,CAAS;QACN,SAAI,GAAJ,IAAI,CAAqB;QACzB,WAAM,GAAN,MAAM,CAAqB;IAC3C,CAAC;IAEJ;;;;OAIG;IACH,aAAa;QACX,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IAUZ;IACA;IAVX,kBAAkB;IAElB;;;;;OAKG;IACH,YACW,KAAiB,EACjB,KAAc;QADd,UAAK,GAAL,KAAK,CAAY;QACjB,UAAK,GAAL,KAAK,CAAS;IACtB,CAAC;IAEJ;;;;OAIG;IACH,IAAI;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAQL;IAPrB,kBAAkB;IAElB;;;;OAIG;IACH,YAAqB,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;IAAG,CAAC;IAE1C;;;;OAIG;IACH,IAAI;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF;AA6BD;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAC1B,kBAAkB;IAElB;;;;;OAKG;IACH,mBAAmB,CAAC,KAAoB;QACtC,KAAK,KAAK,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,KAAiB;QACjC,KAAK,KAAK,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,UAA8B;QAChD,KAAK,UAAU,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,SAA0B;QAC3C,OAAO,SAAS,CAAC,aAAa,EAAE,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,OAAqB;QACxC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,OAAwB;QAC3C,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { InboxMessage, InboxMessageId, InboxMessageInput, InboxReadOptions, InboxWriteResult } from "./inbox.js";
|
|
2
|
+
import type { WorkerId } from "@spine-event-engine/proto/delivery";
|
|
3
|
+
import type { ShardIndex } from "./shard-index.js";
|
|
4
|
+
import type { ShardSession } from "./sharded-work-registry.js";
|
|
5
|
+
/**
|
|
6
|
+
* Cancellation and per-call deadline propagated through delivery port work.
|
|
7
|
+
*/
|
|
8
|
+
export interface DeliveryOperationOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Cooperative cancellation propagated through reads, mutations, lease work, and completion.
|
|
11
|
+
*/
|
|
12
|
+
readonly signal?: AbortSignal;
|
|
13
|
+
/**
|
|
14
|
+
* Non-negative safe-integer operation budget in milliseconds, measured from admission; zero is expired.
|
|
15
|
+
*/
|
|
16
|
+
readonly timeoutMs?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Server-owned durable inbox boundary used by delivery drains.
|
|
20
|
+
*/
|
|
21
|
+
export interface DeliveryInbox {
|
|
22
|
+
/**
|
|
23
|
+
* Session fence kind this inbox accepts; ports supplied together must agree.
|
|
24
|
+
*/
|
|
25
|
+
readonly sessionKind: DeliveryWorkSession["kind"];
|
|
26
|
+
/**
|
|
27
|
+
* Persists one incoming message before any worker observes it.
|
|
28
|
+
*
|
|
29
|
+
* @param input Describes the message to make durable.
|
|
30
|
+
* @param options Propagates cancellation and a delivery deadline.
|
|
31
|
+
* @returns The write or deduplication outcome.
|
|
32
|
+
*/
|
|
33
|
+
receive(input: InboxMessageInput, options?: DeliveryOperationOptions): Promise<InboxWriteResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Reads one bounded continuation page for a shard.
|
|
36
|
+
*
|
|
37
|
+
* @param shard Selects the shard to inspect.
|
|
38
|
+
* @param options Filters and bounds the ordered page.
|
|
39
|
+
* @returns The matching message snapshots.
|
|
40
|
+
*/
|
|
41
|
+
read(shard: ShardIndex, options?: InboxReadOptions & DeliveryOperationOptions): Promise<readonly InboxMessage[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Finds one exact message without claiming delivery work.
|
|
44
|
+
*
|
|
45
|
+
* @param id Identifies the durable message.
|
|
46
|
+
* @param options Propagates cancellation and a delivery deadline.
|
|
47
|
+
* @returns The message when it remains durable.
|
|
48
|
+
*/
|
|
49
|
+
readMessage(id: InboxMessageId, options?: DeliveryOperationOptions): Promise<InboxMessage | undefined>;
|
|
50
|
+
/**
|
|
51
|
+
* Marks one exact pending Inbox row delivered.
|
|
52
|
+
*
|
|
53
|
+
* @param message Supplies the expected pending row snapshot.
|
|
54
|
+
* @param options Propagates cancellation and a delivery deadline.
|
|
55
|
+
* @returns The delivered row, or `undefined` when durable acknowledgement failed.
|
|
56
|
+
*/
|
|
57
|
+
markDelivered(message: InboxMessage, options?: DeliveryOperationOptions): Promise<InboxMessage | undefined>;
|
|
58
|
+
/**
|
|
59
|
+
* Removes one exact delivered snapshot atomically while a direct shard
|
|
60
|
+
* session remains current.
|
|
61
|
+
*
|
|
62
|
+
* Built-in direct Inbox storage implements this through its provider-owned
|
|
63
|
+
* ownership-and-delete operation. Custom structural ports may omit this
|
|
64
|
+
* optional retention capability. RemoteInbox omits it because acknowledgement
|
|
65
|
+
* already removes its pending row.
|
|
66
|
+
*
|
|
67
|
+
* @param message Supplies the expected delivered row snapshot.
|
|
68
|
+
* @param session Supplies the currently owned shard session.
|
|
69
|
+
* @param options Propagates cancellation and a delivery deadline.
|
|
70
|
+
* @returns `true` only when the exact snapshot was removed under current ownership.
|
|
71
|
+
*/
|
|
72
|
+
removeDelivered?(message: InboxMessage, session: DeliveryWorkSession, options?: DeliveryOperationOptions): Promise<boolean>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Server-owned exclusive shard-work boundary.
|
|
76
|
+
*/
|
|
77
|
+
export interface DeliveryWorkRegistry {
|
|
78
|
+
/**
|
|
79
|
+
* Session fence kind this registry issues; ports supplied together must agree.
|
|
80
|
+
*/
|
|
81
|
+
readonly sessionKind: DeliveryWorkSession["kind"];
|
|
82
|
+
/**
|
|
83
|
+
* Acquires one shard work fence when it is available.
|
|
84
|
+
*
|
|
85
|
+
* @param shard Selects the shard to acquire.
|
|
86
|
+
* @param worker Identifies the complete worker acquiring the fence.
|
|
87
|
+
* @param options Propagates cancellation and a delivery deadline.
|
|
88
|
+
* @returns The acquired session, when the shard is available.
|
|
89
|
+
*/
|
|
90
|
+
pickUp(shard: ShardIndex, worker: WorkerId, options?: DeliveryOperationOptions): Promise<DeliveryWorkSession | undefined>;
|
|
91
|
+
/**
|
|
92
|
+
* Updates a local leased session when it remains current.
|
|
93
|
+
*
|
|
94
|
+
* @param session Supplies the leased session to renew.
|
|
95
|
+
* @param options Propagates cancellation and a delivery deadline.
|
|
96
|
+
* @returns The renewed session, when its fence remains valid.
|
|
97
|
+
*/
|
|
98
|
+
renew?(session: LeasedDeliveryWorkSession, options?: DeliveryOperationOptions): Promise<LeasedDeliveryWorkSession | undefined>;
|
|
99
|
+
/**
|
|
100
|
+
* Validates ownership immediately before a guarded side effect.
|
|
101
|
+
*
|
|
102
|
+
* Leased registries return the renewed session. Exclusive registries return
|
|
103
|
+
* the current session only while its authoritative remote fence still
|
|
104
|
+
* matches.
|
|
105
|
+
*
|
|
106
|
+
* @param session Supplies the session to validate.
|
|
107
|
+
* @param options Propagates cancellation and a delivery deadline.
|
|
108
|
+
* @returns The current session, or `undefined` after ownership loss.
|
|
109
|
+
*/
|
|
110
|
+
validateOwnership(session: DeliveryWorkSession, options?: DeliveryOperationOptions): Promise<DeliveryWorkSession | undefined>;
|
|
111
|
+
/**
|
|
112
|
+
* Removes a held work fence.
|
|
113
|
+
*
|
|
114
|
+
* @param session Supplies the session to release.
|
|
115
|
+
* @param options Propagates cancellation and a delivery deadline.
|
|
116
|
+
* @returns Whether the held fence was released.
|
|
117
|
+
*/
|
|
118
|
+
release(session: DeliveryWorkSession, options?: DeliveryOperationOptions): Promise<boolean>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Local registry session that has renewable expiry fencing.
|
|
122
|
+
*/
|
|
123
|
+
export type LeasedDeliveryWorkSession = ShardSession;
|
|
124
|
+
/**
|
|
125
|
+
* Remote exclusive session without a fictional lease or renewal timer.
|
|
126
|
+
*/
|
|
127
|
+
export interface ExclusiveDeliveryWorkSession {
|
|
128
|
+
/**
|
|
129
|
+
* Identifies an exclusive remote fence without renewal.
|
|
130
|
+
*/
|
|
131
|
+
readonly kind: "EXCLUSIVE";
|
|
132
|
+
/**
|
|
133
|
+
* Selects the shard held by the exclusive fence.
|
|
134
|
+
*/
|
|
135
|
+
readonly shard: ShardIndex;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Honest session union accepted by delivery work.
|
|
139
|
+
*/
|
|
140
|
+
export type DeliveryWorkSession = LeasedDeliveryWorkSession | ExclusiveDeliveryWorkSession;
|
|
141
|
+
//# sourceMappingURL=delivery-ports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-ports.d.ts","sourceRoot":"","sources":["../../src/delivery/delivery-ports.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAGvC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAG5B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAElD;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEjG;;;;;;OAMG;IACH,IAAI,CACF,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,gBAAgB,GAAG,wBAAwB,GACpD,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IAEpC;;;;;;OAMG;IACH,WAAW,CACT,EAAE,EAAE,cAAc,EAClB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IAErC;;;;;;OAMG;IACH,aAAa,CACX,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IAErC;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,CACd,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAGnC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAElD;;;;;;;OAOG;IACH,MAAM,CACJ,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,QAAQ,EAChB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAE5C;;;;;;OAMG;IACH,KAAK,CAAC,CACJ,OAAO,EAAE,yBAAyB,EAClC,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;IAElD;;;;;;;;;;OAUG;IACH,iBAAiB,CACf,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAE5C;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7F;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAG3C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,GAAG,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, CodeMatters. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
|
5
|
+
* in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
10
|
+
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
11
|
+
* or implied. See the License for the specific language governing permissions and limitations under
|
|
12
|
+
* the License.
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=delivery-ports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-ports.js","sourceRoot":"","sources":["../../src/delivery/delivery-ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Delivery, type DeliveryResult, type DeliveryRunOptions } from "./delivery-builder.js";
|
|
2
|
+
import type { ShardIndex } from "./shard-index.js";
|
|
3
|
+
import type { InboxMessage } from "./inbox.js";
|
|
4
|
+
/**
|
|
5
|
+
* Controls admission for one finite delivery run.
|
|
6
|
+
*/
|
|
7
|
+
export declare class DeliveryRunControl {
|
|
8
|
+
#private;
|
|
9
|
+
/**
|
|
10
|
+
* Creates controlled admission for a builder-created delivery.
|
|
11
|
+
*
|
|
12
|
+
* @param delivery The builder-created delivery to control.
|
|
13
|
+
*/
|
|
14
|
+
constructor(delivery: Delivery);
|
|
15
|
+
/**
|
|
16
|
+
* Executes one controlled delivery until it settles or its signal aborts.
|
|
17
|
+
*
|
|
18
|
+
* @param options The finite shard run and its cancellation signal.
|
|
19
|
+
* @returns The delivery result, or an abort error.
|
|
20
|
+
*/
|
|
21
|
+
run(options: DeliveryControlledRun): Promise<DeliveryResult>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Describes one controlled finite delivery request.
|
|
25
|
+
*/
|
|
26
|
+
export interface DeliveryControlledRun extends DeliveryRunOptions {
|
|
27
|
+
/**
|
|
28
|
+
* Identifies the shard to drain.
|
|
29
|
+
*/
|
|
30
|
+
readonly shard: ShardIndex;
|
|
31
|
+
/**
|
|
32
|
+
* Cancels the controlled run.
|
|
33
|
+
*/
|
|
34
|
+
readonly signal: AbortSignal;
|
|
35
|
+
/**
|
|
36
|
+
* Determines whether the private controlled run owns a pending row before dispatch or acknowledgment.
|
|
37
|
+
*
|
|
38
|
+
* @param message Contains the pending Inbox row.
|
|
39
|
+
* @returns `true` if this controlled run owns the row.
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
readonly acceptMessage?: (message: InboxMessage) => boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Completes private admission cleanup when the controlled run settles before dispatch.
|
|
45
|
+
*
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
readonly onRunSettled?: () => void;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=delivery-run-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-run-control.d.ts","sourceRoot":"","sources":["../../src/delivery/delivery-run-control.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,qBAAa,kBAAkB;;IAG7B;;;;OAIG;gBACS,QAAQ,EAAE,QAAQ;IAQ9B;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;CA6B7D;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAG/D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC;IAE5D;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, CodeMatters. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
|
5
|
+
* in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
10
|
+
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
11
|
+
* or implied. See the License for the specific language governing permissions and limitations under
|
|
12
|
+
* the License.
|
|
13
|
+
*/
|
|
14
|
+
import { deliveryControls, } from "./delivery-builder.js";
|
|
15
|
+
/**
|
|
16
|
+
* Controls admission for one finite delivery run.
|
|
17
|
+
*/
|
|
18
|
+
export class DeliveryRunControl {
|
|
19
|
+
#runControlled;
|
|
20
|
+
/**
|
|
21
|
+
* Creates controlled admission for a builder-created delivery.
|
|
22
|
+
*
|
|
23
|
+
* @param delivery The builder-created delivery to control.
|
|
24
|
+
*/
|
|
25
|
+
constructor(delivery) {
|
|
26
|
+
const runControlled = deliveryControls.runner(delivery);
|
|
27
|
+
if (runControlled === undefined) {
|
|
28
|
+
throw new TypeError("DeliverySupervisor requires a Delivery built by DeliveryBuilder.");
|
|
29
|
+
}
|
|
30
|
+
this.#runControlled = runControlled;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Executes one controlled delivery until it settles or its signal aborts.
|
|
34
|
+
*
|
|
35
|
+
* @param options The finite shard run and its cancellation signal.
|
|
36
|
+
* @returns The delivery result, or an abort error.
|
|
37
|
+
*/
|
|
38
|
+
run(options) {
|
|
39
|
+
if (options.signal.aborted)
|
|
40
|
+
return Promise.reject(this.#abortError(options.signal));
|
|
41
|
+
const settled = this.#runControlled(options);
|
|
42
|
+
let aborted;
|
|
43
|
+
const abort = () => {
|
|
44
|
+
aborted = this.#abortError(options.signal);
|
|
45
|
+
};
|
|
46
|
+
options.signal.addEventListener("abort", abort, { once: true });
|
|
47
|
+
// spine-log-boundary: server.delivery_control_settlement_observer
|
|
48
|
+
void settled.catch(() => undefined);
|
|
49
|
+
return settled
|
|
50
|
+
.then((result) => {
|
|
51
|
+
if (aborted !== undefined)
|
|
52
|
+
throw aborted;
|
|
53
|
+
return result;
|
|
54
|
+
}, (error) => {
|
|
55
|
+
throw error;
|
|
56
|
+
})
|
|
57
|
+
.finally(() => {
|
|
58
|
+
options.signal.removeEventListener("abort", abort);
|
|
59
|
+
options.onRunSettled?.();
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
#abortError(signal) {
|
|
63
|
+
return signal.reason instanceof Error ? signal.reason : new Error("Delivery run was aborted.");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=delivery-run-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-run-control.js","sourceRoot":"","sources":["../../src/delivery/delivery-run-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAC;AAI/B;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACpB,cAAc,CAA8D;IAErF;;;;OAIG;IACH,YAAY,QAAkB;QAC5B,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CAAC,kEAAkE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,OAA8B;QAChC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,OAA0B,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,kEAAkE;QAClE,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,OAAO;aACX,IAAI,CACH,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,OAAO,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,MAAM,KAAK,CAAC;QACd,CAAC,CACF;aACA,OAAO,CAAC,GAAG,EAAE;YACZ,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,MAAmB;QAC7B,OAAO,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjG,CAAC;CACF"}
|