@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,172 @@
|
|
|
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
|
+
var _a;
|
|
15
|
+
import { Delivery } from "../delivery/delivery.js";
|
|
16
|
+
import { ShardIndex } from "../delivery/shard-index.js";
|
|
17
|
+
import { DeliveryReadiness, InboxHandoff, } from "./local-inbox-handoff.js";
|
|
18
|
+
const projectionLabels = ["UPDATE_SUBSCRIBER"];
|
|
19
|
+
/**
|
|
20
|
+
* Persists and replays delivery rows for projection subscribers.
|
|
21
|
+
*/
|
|
22
|
+
export class LocalProjectionInbox {
|
|
23
|
+
#contextName;
|
|
24
|
+
#targets = new Map();
|
|
25
|
+
#endpoints = new Map();
|
|
26
|
+
#readiness;
|
|
27
|
+
#keepTenant;
|
|
28
|
+
#inFlightHandoffs = new Map();
|
|
29
|
+
#inFlightMessageIds = new Set();
|
|
30
|
+
#acknowledgedMessageIds = new Set();
|
|
31
|
+
#nextVersion = 0n;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a local projection inbox.
|
|
34
|
+
* @param contextName Names the bounded context that owns this inbox.
|
|
35
|
+
* @param readiness Coordinates delivery readiness after persistence.
|
|
36
|
+
* @param keepTenant Records a tenant before its message is persisted.
|
|
37
|
+
*/
|
|
38
|
+
constructor(contextName, readiness = new DeliveryReadiness(), keepTenant = () => Promise.resolve()) {
|
|
39
|
+
this.#contextName = contextName;
|
|
40
|
+
this.#readiness =
|
|
41
|
+
readiness instanceof DeliveryReadiness ? readiness : new DeliveryReadiness(readiness);
|
|
42
|
+
this.#keepTenant = keepTenant;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Registers a target that replays projection messages.
|
|
46
|
+
* @param target Handles messages for one projection type.
|
|
47
|
+
*/
|
|
48
|
+
register(target) {
|
|
49
|
+
this.#targets.set(target.targetTypeUrl, target);
|
|
50
|
+
this.#endpoints.set(target.targetTypeUrl, Object.freeze([
|
|
51
|
+
InboxHandoff.endpoint({
|
|
52
|
+
label: projectionLabels[0],
|
|
53
|
+
inboxId: { targetTypeUrl: target.targetTypeUrl },
|
|
54
|
+
shard: ShardIndex.single(),
|
|
55
|
+
}),
|
|
56
|
+
]));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Lists endpoints registered for projection delivery.
|
|
60
|
+
* @returns Returns immutable endpoint descriptions.
|
|
61
|
+
*/
|
|
62
|
+
endpoints() {
|
|
63
|
+
return Object.freeze([...this.#endpoints.values()].flat());
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Dispatches a durable inbox row through its projection target.
|
|
67
|
+
* @param message Contains the persisted inbox row to replay.
|
|
68
|
+
* @param deliveryTenantId Identifies the tenant that owns the row when present.
|
|
69
|
+
* @returns A promise that resolves after the inbox row is replayed.
|
|
70
|
+
*/
|
|
71
|
+
replay(message, deliveryTenantId) {
|
|
72
|
+
return this.#replay(message, deliveryTenantId);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Persists and drains one projection inbox message.
|
|
76
|
+
* @param delivery Stores and drains the inbox row.
|
|
77
|
+
* @param input Describes the message to persist.
|
|
78
|
+
* @param deliveryTenantId Identifies the tenant that owns the message when present.
|
|
79
|
+
* @returns Resolves to the persisted inbox row.
|
|
80
|
+
*/
|
|
81
|
+
async receive(delivery, input, deliveryTenantId) {
|
|
82
|
+
const routed = this.#readiness.route(delivery);
|
|
83
|
+
return await InboxHandoff.coordinate({
|
|
84
|
+
handoffs: this.#inFlightHandoffs,
|
|
85
|
+
key: InboxHandoff.key(input, deliveryTenantId),
|
|
86
|
+
onHandoff: () => this.#receiveAndDrain(routed, input, deliveryTenantId),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
async #receiveAndDrain(delivery, input, deliveryTenantId) {
|
|
90
|
+
if (deliveryTenantId !== undefined) {
|
|
91
|
+
await this.#keepTenant(deliveryTenantId);
|
|
92
|
+
}
|
|
93
|
+
const written = await delivery.inbox.receive({
|
|
94
|
+
inboxId: input.inboxId,
|
|
95
|
+
signalId: input.signalId,
|
|
96
|
+
label: input.label,
|
|
97
|
+
status: input.status,
|
|
98
|
+
shard: input.shard,
|
|
99
|
+
whenReceived: new Date(),
|
|
100
|
+
version: this.#takeVersion(),
|
|
101
|
+
...(input.signal === undefined ? {} : { signal: input.signal }),
|
|
102
|
+
...(input.keepUntil === undefined ? {} : { keepUntil: input.keepUntil }),
|
|
103
|
+
});
|
|
104
|
+
const endpoint = written.outcome === "WRITTEN"
|
|
105
|
+
? InboxHandoff.configuredEndpoint(written.message, this.#endpoints.get(written.message.inboxId.targetTypeUrl) ?? [])
|
|
106
|
+
: undefined;
|
|
107
|
+
this.#trackMessage(written.message);
|
|
108
|
+
try {
|
|
109
|
+
await this.#readiness
|
|
110
|
+
.claim(endpoint === undefined ? undefined : InboxHandoff.ready(endpoint, deliveryTenantId))
|
|
111
|
+
.complete(() => this.#isAcknowledged(written.message)
|
|
112
|
+
? Promise.resolve()
|
|
113
|
+
: InboxHandoff.drain({
|
|
114
|
+
delivery,
|
|
115
|
+
received: written.message,
|
|
116
|
+
node: this.#contextName,
|
|
117
|
+
onReplay: (message) => this.#replay(message, deliveryTenantId),
|
|
118
|
+
acceptMessage: (message) => InboxHandoff.sameMessageId(message.id, written.message.id) ||
|
|
119
|
+
(message.label === "UPDATE_SUBSCRIBER" &&
|
|
120
|
+
this.#targets.has(message.inboxId.targetTypeUrl)),
|
|
121
|
+
onAcknowledged: (message) => {
|
|
122
|
+
this.#recordAcknowledgement(message);
|
|
123
|
+
},
|
|
124
|
+
replayFailureMessage: "Projection inbox replay failed.",
|
|
125
|
+
skippedMessage: "Projection inbox delivery was skipped before the target row was delivered.",
|
|
126
|
+
unfinishedMessage: "Projection inbox delivery did not reach the target row before the local drain finished.",
|
|
127
|
+
}));
|
|
128
|
+
return written.message;
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
this.#untrackMessage(written.message);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
#trackMessage(message) {
|
|
135
|
+
this.#inFlightMessageIds.add(InboxHandoff.messageIdKey(message));
|
|
136
|
+
}
|
|
137
|
+
#untrackMessage(message) {
|
|
138
|
+
const key = InboxHandoff.messageIdKey(message);
|
|
139
|
+
this.#inFlightMessageIds.delete(key);
|
|
140
|
+
this.#acknowledgedMessageIds.delete(key);
|
|
141
|
+
}
|
|
142
|
+
#recordAcknowledgement(message) {
|
|
143
|
+
const key = InboxHandoff.messageIdKey(message);
|
|
144
|
+
if (this.#inFlightMessageIds.has(key))
|
|
145
|
+
this.#acknowledgedMessageIds.add(key);
|
|
146
|
+
}
|
|
147
|
+
#isAcknowledged(message) {
|
|
148
|
+
return this.#acknowledgedMessageIds.has(InboxHandoff.messageIdKey(message));
|
|
149
|
+
}
|
|
150
|
+
#takeVersion() {
|
|
151
|
+
this.#nextVersion += 1n;
|
|
152
|
+
return this.#nextVersion;
|
|
153
|
+
}
|
|
154
|
+
async #replay(message, deliveryTenantId) {
|
|
155
|
+
_a.#assert(message);
|
|
156
|
+
const target = this.#targets.get(message.inboxId.targetTypeUrl);
|
|
157
|
+
if (target === undefined) {
|
|
158
|
+
throw new Error(`BoundedContext delivery has no projection subscriber target for "${message.inboxId.targetTypeUrl}".`);
|
|
159
|
+
}
|
|
160
|
+
await target.replay(message, deliveryTenantId);
|
|
161
|
+
}
|
|
162
|
+
static #assert(message) {
|
|
163
|
+
if (message.label !== "UPDATE_SUBSCRIBER") {
|
|
164
|
+
throw new Error(`BoundedContext delivery has no handler for inbox label "${message.label}".`);
|
|
165
|
+
}
|
|
166
|
+
if (message.status !== "TO_DELIVER") {
|
|
167
|
+
throw new Error(`BoundedContext delivery cannot replay projection inbox message with status "${message.status}".`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
_a = LocalProjectionInbox;
|
|
172
|
+
//# sourceMappingURL=projection-handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-handoff.js","sourceRoot":"","sources":["../../src/context/projection-handoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { TenantId } from "@spine-event-engine/proto";
|
|
2
|
+
import { type StorageFactory } from "@spine-event-engine/storage";
|
|
3
|
+
type TenantMode = "single-tenant" | "multitenant";
|
|
4
|
+
/**
|
|
5
|
+
* Tracks tenants admitted through one factory-owned provider catalog.
|
|
6
|
+
*/
|
|
7
|
+
export interface TenantIndex {
|
|
8
|
+
/**
|
|
9
|
+
* Identifies whether the owning context accepts tenant IDs.
|
|
10
|
+
*/
|
|
11
|
+
readonly tenantMode: TenantMode;
|
|
12
|
+
/**
|
|
13
|
+
* Lists complete tenants discovered by the provider.
|
|
14
|
+
*
|
|
15
|
+
* @returns The provider-owned tenant IDs.
|
|
16
|
+
*/
|
|
17
|
+
all(): Promise<readonly TenantId[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Records one complete tenant through provider-native catalog state.
|
|
20
|
+
*
|
|
21
|
+
* @param tenantId The complete generated tenant ID.
|
|
22
|
+
* @returns Completion of provider catalog admission.
|
|
23
|
+
*/
|
|
24
|
+
keep(tenantId: TenantId): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Closes this context view without closing the factory-owned catalog.
|
|
27
|
+
*/
|
|
28
|
+
close(): void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates context views over factory-owned tenant catalogs.
|
|
32
|
+
*/
|
|
33
|
+
export declare const TenantIndexes: Readonly<{
|
|
34
|
+
create(input: {
|
|
35
|
+
readonly contextName: string;
|
|
36
|
+
readonly tenantMode: TenantMode;
|
|
37
|
+
readonly storageFactory: StorageFactory;
|
|
38
|
+
}): TenantIndex;
|
|
39
|
+
}>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=tenant-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-index.d.ts","sourceRoot":"","sources":["../../src/context/tenant-index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAMlF,KAAK,UAAU,GAAG,eAAe,GAAG,aAAa,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,WAAW;IAG1B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC;;;;OAIG;IACH,GAAG,IAAI,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE;QACZ,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;QAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;KACzC,GAAG,WAAW,CAAC;CACjB,CAcC,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
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 { TenantBoundary } from "@spine-event-engine/storage";
|
|
15
|
+
/**
|
|
16
|
+
* Creates context views over factory-owned tenant catalogs.
|
|
17
|
+
*/
|
|
18
|
+
export const TenantIndexes = Object.freeze({
|
|
19
|
+
// prettier-ignore
|
|
20
|
+
/**
|
|
21
|
+
* Creates an index view for one context.
|
|
22
|
+
*
|
|
23
|
+
* @param input Identifies the diagnostic context, tenancy mode, and factory.
|
|
24
|
+
* @returns The matching tenant index.
|
|
25
|
+
*/
|
|
26
|
+
create(input) {
|
|
27
|
+
return input.tenantMode === "single-tenant"
|
|
28
|
+
? new SingleTenantIndex(input.contextName)
|
|
29
|
+
: new StorageTenantIndex(input.contextName, tenantCatalog(input.storageFactory));
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
class SingleTenantIndex {
|
|
33
|
+
contextName;
|
|
34
|
+
tenantMode = "single-tenant";
|
|
35
|
+
#open = true;
|
|
36
|
+
constructor(contextName) {
|
|
37
|
+
this.contextName = contextName;
|
|
38
|
+
}
|
|
39
|
+
all() {
|
|
40
|
+
const closed = this.closedError();
|
|
41
|
+
return closed === undefined ? Promise.resolve(Object.freeze([])) : Promise.reject(closed);
|
|
42
|
+
}
|
|
43
|
+
keep() {
|
|
44
|
+
const closed = this.closedError();
|
|
45
|
+
return Promise.reject(closed ??
|
|
46
|
+
new Error(`Single-tenant context "${this.contextName}" does not accept tenant recording.`));
|
|
47
|
+
}
|
|
48
|
+
close() {
|
|
49
|
+
this.#open = false;
|
|
50
|
+
}
|
|
51
|
+
closedError() {
|
|
52
|
+
return this.#open ? undefined : new Error("TenantIndex is closed.");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
class StorageTenantIndex {
|
|
56
|
+
contextName;
|
|
57
|
+
catalog;
|
|
58
|
+
tenantMode = "multitenant";
|
|
59
|
+
#open = true;
|
|
60
|
+
constructor(contextName, catalog) {
|
|
61
|
+
this.contextName = contextName;
|
|
62
|
+
this.catalog = catalog;
|
|
63
|
+
}
|
|
64
|
+
async all() {
|
|
65
|
+
this.requireOpen();
|
|
66
|
+
return Object.freeze((await this.catalog.all()).map((boundary) => {
|
|
67
|
+
if (boundary.single || boundary.tenantId === undefined)
|
|
68
|
+
throw new Error("Multitenant provider catalog returned a single-tenant boundary.");
|
|
69
|
+
return boundary.tenantId;
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
keep(tenantId) {
|
|
73
|
+
return Promise.resolve().then(() => {
|
|
74
|
+
this.requireOpen();
|
|
75
|
+
return this.catalog.keep(TenantBoundary.from(tenantId));
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
close() {
|
|
79
|
+
this.#open = false;
|
|
80
|
+
}
|
|
81
|
+
requireOpen() {
|
|
82
|
+
if (!this.#open)
|
|
83
|
+
throw new Error(`TenantIndex for "${this.contextName}" is closed.`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function tenantCatalog(factory) {
|
|
87
|
+
const provider = factory;
|
|
88
|
+
if (typeof provider.tenantCatalog !== "function")
|
|
89
|
+
throw new Error("Multitenant storage requires a provider-owned tenant catalog.");
|
|
90
|
+
return provider.tenantCatalog();
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=tenant-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-index.js","sourceRoot":"","sources":["../../src/context/tenant-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,cAAc,EAAuB,MAAM,6BAA6B,CAAC;AAwClF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAMrB,MAAM,CAAC,MAAM,CAAC;IACjB,kBAAkB;IAElB;;;;;OAKG;IACH,MAAM,CAAC,KAAK;QACV,OAAO,KAAK,CAAC,UAAU,KAAK,eAAe;YACzC,CAAC,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;YAC1C,CAAC,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IACrF,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,iBAAiB;IAIQ;IAHpB,UAAU,GAAG,eAAe,CAAC;IACtC,KAAK,GAAG,IAAI,CAAC;IAEb,YAA6B,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAEpD,GAAG;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,CACnB,MAAM;YACJ,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,WAAW,qCAAqC,CAAC,CAC7F,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACtE,CAAC;CACF;AAED,MAAM,kBAAkB;IAKH;IACA;IALV,UAAU,GAAG,aAAa,CAAC;IACpC,KAAK,GAAG,IAAI,CAAC;IAEb,YACmB,WAAmB,EACnB,OAAsB;QADtB,gBAAW,GAAX,WAAW,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAe;IACtC,CAAC;IAEJ,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC1C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;gBACpD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACrF,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC3B,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAkB;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,WAAW,cAAc,CAAC,CAAC;IACvF,CAAC;CACF;AAED,SAAS,aAAa,CAAC,OAAuB;IAC5C,MAAM,QAAQ,GAAG,OAAyC,CAAC;IAC3D,IAAI,OAAO,QAAQ,CAAC,aAAa,KAAK,UAAU;QAC9C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,OAAO,QAAQ,CAAC,aAAa,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DeliveryOperationOptions, DeliveryWorkRegistry, DeliveryWorkSession } from "./delivery-ports.js";
|
|
2
|
+
import type { WorkerId } from "@spine-event-engine/proto/delivery";
|
|
3
|
+
import type { ShardIndex } from "./shard-index.js";
|
|
4
|
+
type OnConditionalPickUp = (shard: ShardIndex, worker: WorkerId, options?: DeliveryOperationOptions) => Promise<DeliveryWorkSession | undefined>;
|
|
5
|
+
/**
|
|
6
|
+
* Provides framework-private conditional pickup for registries that support it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const conditionalPickUp: Readonly<{
|
|
9
|
+
/**
|
|
10
|
+
* Records a registry's conditional pickup implementation.
|
|
11
|
+
*
|
|
12
|
+
* @param registry Identifies the supporting work registry.
|
|
13
|
+
* @param pickUp Acquires only when remote pending work exists.
|
|
14
|
+
*/
|
|
15
|
+
register: (registry: DeliveryWorkRegistry, pickUp: OnConditionalPickUp) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Finds a registry's conditional pickup implementation.
|
|
18
|
+
*
|
|
19
|
+
* @param registry Identifies the work registry.
|
|
20
|
+
* @returns The conditional pickup when the registry supports it.
|
|
21
|
+
*/
|
|
22
|
+
for: (registry: DeliveryWorkRegistry) => OnConditionalPickUp | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=conditional-pickup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-pickup.d.ts","sourceRoot":"","sources":["../../src/delivery/conditional-pickup.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,KAAK,mBAAmB,GAAG,CACzB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,QAAQ,EAChB,OAAO,CAAC,EAAE,wBAAwB,KAC/B,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;AAG9C;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC;IAGvC;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAEhF;;;;;OAKG;IACH,GAAG,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,mBAAmB,GAAG,SAAS,CAAC;CAC1E,CAOC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
const pickups = new WeakMap();
|
|
15
|
+
/**
|
|
16
|
+
* Provides framework-private conditional pickup for registries that support it.
|
|
17
|
+
*/
|
|
18
|
+
export const conditionalPickUp = Object.freeze({
|
|
19
|
+
register(registry, pickUp) {
|
|
20
|
+
pickups.set(registry, pickUp);
|
|
21
|
+
},
|
|
22
|
+
for(registry) {
|
|
23
|
+
return pickups.get(registry);
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=conditional-pickup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-pickup.js","sourceRoot":"","sources":["../../src/delivery/conditional-pickup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,OAAO,GAAG,IAAI,OAAO,EAA6C,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAkBzB,MAAM,CAAC,MAAM,CAAC;IACjB,QAAQ,CAAC,QAA8B,EAAE,MAA2B;QAClE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,GAAG,CAAC,QAA8B;QAChC,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import type { Any } from "@bufbuild/protobuf/wkt";
|
|
2
|
+
import type { StorageContext, StorageFactory } from "@spine-event-engine/storage";
|
|
3
|
+
import type { WorkerId } from "@spine-event-engine/proto/delivery";
|
|
4
|
+
import { type OnDeliveryMessage } from "./delivery.js";
|
|
5
|
+
import { DeliveryMonitor } from "./delivery-monitor.js";
|
|
6
|
+
import type { DeliveryInbox, DeliveryWorkRegistry } from "./delivery-ports.js";
|
|
7
|
+
import type { DeliveryControlledRun } from "./delivery-run-control.js";
|
|
8
|
+
import { ShardIndex } from "./shard-index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Provides package-local controls for builder-created deliveries.
|
|
11
|
+
*/
|
|
12
|
+
export interface DeliveryControls {
|
|
13
|
+
/**
|
|
14
|
+
* Finds controlled execution for one builder-created delivery.
|
|
15
|
+
*
|
|
16
|
+
* @param delivery The builder-created delivery.
|
|
17
|
+
* @returns Its controlled runner, if present.
|
|
18
|
+
*/
|
|
19
|
+
runner(delivery: Delivery): ((options: DeliveryControlledRun) => Promise<DeliveryResult>) | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Exposes package-local controls for builder-created deliveries.
|
|
23
|
+
*/
|
|
24
|
+
export declare const deliveryControls: DeliveryControls;
|
|
25
|
+
/**
|
|
26
|
+
* Assigns inbox targets to durable delivery shards.
|
|
27
|
+
*/
|
|
28
|
+
export interface DeliveryStrategy {
|
|
29
|
+
/**
|
|
30
|
+
* Positive number of shards addressable by this strategy.
|
|
31
|
+
*/
|
|
32
|
+
readonly shardCount: number;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the shard for one canonical packed Entity ID and target type.
|
|
35
|
+
*
|
|
36
|
+
* The supplied `Any` contains the typed ID's type URL and bytes. Treat it as
|
|
37
|
+
* immutable typed identity, not as a display string.
|
|
38
|
+
*
|
|
39
|
+
* @param targetId The target identity.
|
|
40
|
+
* @param targetType The target type URL.
|
|
41
|
+
* @returns The durable shard for the target.
|
|
42
|
+
*/
|
|
43
|
+
shardFor(targetId: Any, targetType: string): ShardIndex;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Places every target in one local shard.
|
|
47
|
+
*/
|
|
48
|
+
export declare class UniformAcrossAllShards implements DeliveryStrategy {
|
|
49
|
+
#private;
|
|
50
|
+
/**
|
|
51
|
+
* Returns a strategy with the requested positive number of shards.
|
|
52
|
+
*
|
|
53
|
+
* @param shards The number of addressable shards.
|
|
54
|
+
* @returns A uniform shard strategy.
|
|
55
|
+
*/
|
|
56
|
+
static forNumber(shards: number): UniformAcrossAllShards;
|
|
57
|
+
/**
|
|
58
|
+
* Returns the shared single-shard strategy.
|
|
59
|
+
*
|
|
60
|
+
* @returns The shared single-shard strategy.
|
|
61
|
+
*/
|
|
62
|
+
static singleShard(): UniformAcrossAllShards;
|
|
63
|
+
/**
|
|
64
|
+
* Number of uniformly distributed shards.
|
|
65
|
+
*/
|
|
66
|
+
readonly shardCount: number;
|
|
67
|
+
private constructor();
|
|
68
|
+
/**
|
|
69
|
+
* Determines a stable shard from a target identity.
|
|
70
|
+
*
|
|
71
|
+
* @param targetId The target identity.
|
|
72
|
+
* @param targetType The target type URL.
|
|
73
|
+
* @returns The stable shard for the target.
|
|
74
|
+
*/
|
|
75
|
+
shardFor(targetId: Any, targetType: string): ShardIndex;
|
|
76
|
+
}
|
|
77
|
+
export { DeliveryMonitor, type DeliveryStatistics } from "./delivery-monitor.js";
|
|
78
|
+
/**
|
|
79
|
+
* Immutable outcome of one finite local delivery run.
|
|
80
|
+
*/
|
|
81
|
+
export interface DeliveryResult {
|
|
82
|
+
/**
|
|
83
|
+
* Terminal reason for this local run.
|
|
84
|
+
*/
|
|
85
|
+
readonly status: "COMPLETED" | "SKIPPED" | "STOPPED" | "FAILED";
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Options for one finite local delivery run.
|
|
89
|
+
*/
|
|
90
|
+
export interface DeliveryRunOptions {
|
|
91
|
+
/**
|
|
92
|
+
* Framework endpoint invoked for each available inbox row.
|
|
93
|
+
*/
|
|
94
|
+
readonly onMessage: OnDeliveryMessage;
|
|
95
|
+
/**
|
|
96
|
+
* Shard to process; defaults to the strategy's only shard when applicable.
|
|
97
|
+
* An explicit shard's `ofTotal` must equal the strategy's resolved `shardCount`.
|
|
98
|
+
*/
|
|
99
|
+
readonly shard?: ShardIndex;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Builder-owned public delivery view.
|
|
103
|
+
*/
|
|
104
|
+
export interface Delivery {
|
|
105
|
+
/**
|
|
106
|
+
* Immutable storage namespace selected for this delivery.
|
|
107
|
+
*/
|
|
108
|
+
readonly context: StorageContext;
|
|
109
|
+
/**
|
|
110
|
+
* Storage factory selected for durable delivery records.
|
|
111
|
+
*/
|
|
112
|
+
readonly storageFactory: StorageFactory;
|
|
113
|
+
/**
|
|
114
|
+
* Target-to-shard strategy selected for inbox writes and runs.
|
|
115
|
+
*/
|
|
116
|
+
readonly strategy: DeliveryStrategy;
|
|
117
|
+
/**
|
|
118
|
+
* Node identity used for exclusive shard pickup.
|
|
119
|
+
*/
|
|
120
|
+
readonly node: string;
|
|
121
|
+
/**
|
|
122
|
+
* Identifies the complete opaque worker used for shard ownership.
|
|
123
|
+
*/
|
|
124
|
+
readonly worker: WorkerId;
|
|
125
|
+
/**
|
|
126
|
+
* Maximum accepted work per internal delivery page, from 1 through 1000.
|
|
127
|
+
*/
|
|
128
|
+
readonly pageSize: number;
|
|
129
|
+
/**
|
|
130
|
+
* Durable inbox facade.
|
|
131
|
+
*/
|
|
132
|
+
readonly inbox: DeliveryInbox;
|
|
133
|
+
/**
|
|
134
|
+
* Executes one finite local shard delivery.
|
|
135
|
+
*
|
|
136
|
+
* @param options The shard and endpoint callback.
|
|
137
|
+
* @returns The terminal finite-run result.
|
|
138
|
+
*/
|
|
139
|
+
run(options: DeliveryRunOptions): Promise<DeliveryResult>;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Configures and snapshots one public {@link Delivery}.
|
|
143
|
+
*/
|
|
144
|
+
export declare class DeliveryBuilder {
|
|
145
|
+
#private;
|
|
146
|
+
/**
|
|
147
|
+
* Sets the storage namespace for Inbox and shard records.
|
|
148
|
+
*
|
|
149
|
+
* @param context The delivery storage namespace.
|
|
150
|
+
* @returns This builder.
|
|
151
|
+
*/
|
|
152
|
+
withContext(context: StorageContext): this;
|
|
153
|
+
/**
|
|
154
|
+
* Sets the storage factory.
|
|
155
|
+
*
|
|
156
|
+
* @param storageFactory The durable storage factory.
|
|
157
|
+
* @returns This builder.
|
|
158
|
+
*/
|
|
159
|
+
withStorageFactory(storageFactory: StorageFactory): this;
|
|
160
|
+
/**
|
|
161
|
+
* Sets the registry used for exclusive shard pickup.
|
|
162
|
+
*
|
|
163
|
+
* @param workRegistry The shard work registry.
|
|
164
|
+
* @returns This builder.
|
|
165
|
+
*/
|
|
166
|
+
withWorkRegistry(workRegistry: DeliveryWorkRegistry): this;
|
|
167
|
+
/**
|
|
168
|
+
* Sets an inbox port instead of the local durable inbox default.
|
|
169
|
+
*
|
|
170
|
+
* @param inbox The inbox port.
|
|
171
|
+
* @returns This builder.
|
|
172
|
+
*/
|
|
173
|
+
withInbox(inbox: DeliveryInbox): this;
|
|
174
|
+
/**
|
|
175
|
+
* Sets the target-to-shard strategy.
|
|
176
|
+
*
|
|
177
|
+
* @param strategy The target strategy.
|
|
178
|
+
* @returns This builder.
|
|
179
|
+
*/
|
|
180
|
+
withStrategy(strategy: DeliveryStrategy): this;
|
|
181
|
+
/**
|
|
182
|
+
* Sets finite-run observation and cancellation.
|
|
183
|
+
*
|
|
184
|
+
* @param monitor The run monitor.
|
|
185
|
+
* @returns This builder.
|
|
186
|
+
*/
|
|
187
|
+
withMonitor(monitor: DeliveryMonitor): this;
|
|
188
|
+
/**
|
|
189
|
+
* Sets the positive accepted-work bound for one page.
|
|
190
|
+
*
|
|
191
|
+
* @param pageSize The positive page size.
|
|
192
|
+
* @returns This builder.
|
|
193
|
+
*/
|
|
194
|
+
withPageSize(pageSize: number): this;
|
|
195
|
+
/**
|
|
196
|
+
* Sets the node identity used for shard pickup.
|
|
197
|
+
*
|
|
198
|
+
* @param node The non-empty node identity.
|
|
199
|
+
* @returns This builder.
|
|
200
|
+
*/
|
|
201
|
+
withNode(node: string): this;
|
|
202
|
+
/**
|
|
203
|
+
* Sets the complete opaque worker identity used for shard ownership.
|
|
204
|
+
*
|
|
205
|
+
* @param worker The generated worker identity for this delivery lifetime.
|
|
206
|
+
* @returns This builder.
|
|
207
|
+
*/
|
|
208
|
+
withWorker(worker: WorkerId): this;
|
|
209
|
+
/**
|
|
210
|
+
* Creates one immutable delivery from the current builder configuration.
|
|
211
|
+
*
|
|
212
|
+
* @returns The configured delivery.
|
|
213
|
+
*/
|
|
214
|
+
build(): Delivery;
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=delivery-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-builder.d.ts","sourceRoot":"","sources":["../../src/delivery/delivery-builder.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAGnE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAa9C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAG/B;;;;;OAKG;IACH,MAAM,CACJ,QAAQ,EAAE,QAAQ,GACjB,CAAC,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC;CAC9E;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAW7B,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAG/B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC;CACzD;AAED;;GAEG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;;IAG7D;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB;IAIxD;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,sBAAsB;IAI5C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,OAAO;IAQP;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU;CAYxD;AAED,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,cAAc;IAG7B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAGjC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IAGvB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,qBAAa,eAAe;;IAW1B;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAK1C;;;;;OAKG;IACH,kBAAkB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAKxD;;;;;OAKG;IACH,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,GAAG,IAAI;IAK1D;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKrC;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAK9C;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAK3C;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW5B;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAelC;;;;OAIG;IACH,KAAK,IAAI,QAAQ;CAmClB"}
|