@spine-event-engine/server 2.0.0-snapshot.11
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 +209 -0
- package/REFERENCE.md +760 -0
- package/dist/browser/browser-server.d.ts +95 -0
- package/dist/browser/browser-server.d.ts.map +1 -0
- package/dist/browser/browser-server.js +719 -0
- package/dist/browser/browser-server.js.map +1 -0
- package/dist/browser/durable-subscription-bindings.d.ts +122 -0
- package/dist/browser/durable-subscription-bindings.d.ts.map +1 -0
- package/dist/browser/durable-subscription-bindings.js +524 -0
- package/dist/browser/durable-subscription-bindings.js.map +1 -0
- package/dist/browser/index.d.ts +12 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +24 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/options.d.ts +183 -0
- package/dist/browser/options.d.ts.map +1 -0
- package/dist/browser/options.js +15 -0
- package/dist/browser/options.js.map +1 -0
- package/dist/bus/command-bus.d.ts +63 -0
- package/dist/bus/command-bus.d.ts.map +1 -0
- package/dist/bus/command-bus.js +236 -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 +592 -0
- package/dist/context/bounded-context.d.ts.map +1 -0
- package/dist/context/bounded-context.js +1897 -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 +387 -0
- package/dist/context/entity-inbox.js.map +1 -0
- package/dist/context/local-inbox-handoff.d.ts +248 -0
- package/dist/context/local-inbox-handoff.d.ts.map +1 -0
- package/dist/context/local-inbox-handoff.js +340 -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 +177 -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 +93 -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 +151 -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 +236 -0
- package/dist/delivery/delivery.d.ts.map +1 -0
- package/dist/delivery/delivery.js +539 -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 +83 -0
- package/dist/delivery/inbox-storage.d.ts.map +1 -0
- package/dist/delivery/inbox-storage.js +336 -0
- package/dist/delivery/inbox-storage.js.map +1 -0
- package/dist/delivery/inbox.d.ts +272 -0
- package/dist/delivery/inbox.d.ts.map +1 -0
- package/dist/delivery/inbox.js +183 -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 +361 -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 +605 -0
- package/dist/entity/entity.d.ts.map +1 -0
- package/dist/entity/entity.js +981 -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/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 +120 -0
- package/dist/handler/command-registration-readiness.js.map +1 -0
- package/dist/handler/declared-rejections.d.ts +11 -0
- package/dist/handler/declared-rejections.d.ts.map +1 -0
- package/dist/handler/declared-rejections.js +34 -0
- package/dist/handler/declared-rejections.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 +185 -0
- package/dist/handler/generated-handler-registry.d.ts.map +1 -0
- package/dist/handler/generated-handler-registry.js +439 -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 +226 -0
- package/dist/handler/generated-registry-discovery.js.map +1 -0
- package/dist/handler/handler-decorators.d.ts +151 -0
- package/dist/handler/handler-decorators.d.ts.map +1 -0
- package/dist/handler/handler-decorators.js +275 -0
- package/dist/handler/handler-decorators.js.map +1 -0
- package/dist/handler/handler-metadata.d.ts +553 -0
- package/dist/handler/handler-metadata.d.ts.map +1 -0
- package/dist/handler/handler-metadata.js +437 -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 +171 -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/handler/standalone.d.ts +25 -0
- package/dist/handler/standalone.d.ts.map +1 -0
- package/dist/handler/standalone.js +38 -0
- package/dist/handler/standalone.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 +75 -0
- package/dist/repository/primitive-id.d.ts.map +1 -0
- package/dist/repository/primitive-id.js +85 -0
- package/dist/repository/primitive-id.js.map +1 -0
- package/dist/repository/repository.d.ts +667 -0
- package/dist/repository/repository.d.ts.map +1 -0
- package/dist/repository/repository.js +3510 -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 +217 -0
- package/dist/runtime/signal-metadata.d.ts.map +1 -0
- package/dist/runtime/signal-metadata.js +333 -0
- package/dist/runtime/signal-metadata.js.map +1 -0
- package/dist/runtime/signal-publisher.d.ts +144 -0
- package/dist/runtime/signal-publisher.d.ts.map +1 -0
- package/dist/runtime/signal-publisher.js +248 -0
- package/dist/runtime/signal-publisher.js.map +1 -0
- package/dist/runtime/standalone-handler-runtime.d.ts +114 -0
- package/dist/runtime/standalone-handler-runtime.d.ts.map +1 -0
- package/dist/runtime/standalone-handler-runtime.js +307 -0
- package/dist/runtime/standalone-handler-runtime.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 +2062 -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 +673 -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 +327 -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 +100 -0
- package/dist/server/server-log.js.map +1 -0
- package/dist/server/server.d.ts +221 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +704 -0
- package/dist/server/server.js.map +1 -0
- package/dist/services/query-reader.d.ts +19 -0
- package/dist/services/query-reader.d.ts.map +1 -0
- package/dist/services/query-reader.js +43 -0
- package/dist/services/query-reader.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 +1582 -0
- package/dist/services/spine-services.js.map +1 -0
- package/dist/spi/delivery.d.ts +5 -0
- package/dist/spi/delivery.d.ts.map +1 -0
- package/dist/spi/delivery.js +18 -0
- package/dist/spi/delivery.js.map +1 -0
- package/dist/spi/handler-registry.d.ts +8 -0
- package/dist/spi/handler-registry.d.ts.map +1 -0
- package/dist/spi/handler-registry.js +15 -0
- package/dist/spi/handler-registry.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 +681 -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 +36 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +54 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type MessageSchema } from "@spine-event-engine/core";
|
|
2
|
+
import { type BoundedContextName, type Event } from "@spine-event-engine/proto";
|
|
3
|
+
import type { TransportFactory } from "@spine-event-engine/transport";
|
|
4
|
+
import { EventBus } from "../bus/event-bus.js";
|
|
5
|
+
/**
|
|
6
|
+
* Coordinates private context-owned integration exchanges.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare class IntegrationBroker {
|
|
11
|
+
#private;
|
|
12
|
+
/**
|
|
13
|
+
* Creates an exchange coordinator from context-owned integration resources.
|
|
14
|
+
*
|
|
15
|
+
* @param input Provides the context assembly inputs.
|
|
16
|
+
*/
|
|
17
|
+
constructor(input: IntegrationBrokerInput);
|
|
18
|
+
/**
|
|
19
|
+
* Starts the three exchanges once; callers share the same readiness promise.
|
|
20
|
+
*
|
|
21
|
+
* @returns Completes when all exchanges are ready.
|
|
22
|
+
*/
|
|
23
|
+
open(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Stops intake, withdraws interests, drains accepted work, and attempts every cleanup.
|
|
26
|
+
*
|
|
27
|
+
* @returns Completes when all retained resources close.
|
|
28
|
+
*/
|
|
29
|
+
close(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Publishes a third-party imported event through this context's private broker.
|
|
32
|
+
*
|
|
33
|
+
* @param event Contains the original event envelope to publish.
|
|
34
|
+
* @returns Completes after publication is accepted or rejects when the broker is closed or the
|
|
35
|
+
* event has no message type URL.
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
publishImported(event: Event): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Provides the minimal context-assembly handoff; it is not a public application API.
|
|
42
|
+
*
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
export interface IntegrationBrokerInput {
|
|
46
|
+
/**
|
|
47
|
+
* Name of the owning bounded context.
|
|
48
|
+
*/
|
|
49
|
+
readonly contextName: BoundedContextName;
|
|
50
|
+
/**
|
|
51
|
+
* Optional system context whose frames share this broker's transport.
|
|
52
|
+
*/
|
|
53
|
+
readonly pairedContextName?: BoundedContextName;
|
|
54
|
+
/**
|
|
55
|
+
* Transport resource factory owned by the context environment.
|
|
56
|
+
*/
|
|
57
|
+
readonly transportFactory: TransportFactory;
|
|
58
|
+
/**
|
|
59
|
+
* Local EventBus used for domestic publication and schema lookup.
|
|
60
|
+
*/
|
|
61
|
+
readonly eventBus: EventBus;
|
|
62
|
+
/**
|
|
63
|
+
* Schemas whose external event channels this context consumes.
|
|
64
|
+
*/
|
|
65
|
+
readonly externalEventSchemas: Iterable<MessageSchema>;
|
|
66
|
+
/**
|
|
67
|
+
* Posts a validated imported Event through the owning context.
|
|
68
|
+
*
|
|
69
|
+
* @param event Provides the imported Event.
|
|
70
|
+
* @returns Completes when the context has accepted the Event.
|
|
71
|
+
*/
|
|
72
|
+
readonly postImported: (event: Event) => Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=integration-broker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-broker.d.ts","sourceRoot":"","sources":["../../src/integration/integration-broker.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAIL,KAAK,kBAAkB,EAEvB,KAAK,KAAK,EAGX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAIV,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAkB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAe/D;;;;GAIG;AACH,qBAAa,iBAAiB;;IAc5B;;;;OAIG;gBACS,KAAK,EAAE,sBAAsB;IAYzC;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB;;;;;;;OAOG;IACG,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CA2RnD;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IAGrC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAEhD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEvD;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD"}
|
|
@@ -0,0 +1,444 @@
|
|
|
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 { create, fromBinary } from "@bufbuild/protobuf";
|
|
15
|
+
import { StringValueSchema } from "@bufbuild/protobuf/wkt";
|
|
16
|
+
import { TypeUrls } from "@spine-event-engine/core";
|
|
17
|
+
import { BoundedContextOnlineSchema, ChannelIdSchema, ExternalEventsWantedSchema, } from "@spine-event-engine/proto";
|
|
18
|
+
import { eventBusAccess, EventBus } from "../bus/event-bus.js";
|
|
19
|
+
import { emitServerError } from "../server/server-log.js";
|
|
20
|
+
import { ServerEnvironment, serverEnvironmentAccess } from "../server/server-environment.js";
|
|
21
|
+
import { unpackExternalEvent, toExternalEvent, wrapBoundedContextOnline, wrapExternalEvent, wrapExternalEventsWanted, } from "./external-messages.js";
|
|
22
|
+
const onlineType = typeUrl(BoundedContextOnlineSchema);
|
|
23
|
+
const wantedType = typeUrl(ExternalEventsWantedSchema);
|
|
24
|
+
/**
|
|
25
|
+
* Coordinates private context-owned integration exchanges.
|
|
26
|
+
*
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export class IntegrationBroker {
|
|
30
|
+
#input;
|
|
31
|
+
#wantedByOrigin = new Map();
|
|
32
|
+
#publishers = new Map();
|
|
33
|
+
#resources = [];
|
|
34
|
+
#retainedCloseables = [];
|
|
35
|
+
#externalSchemas;
|
|
36
|
+
#acceptedCallbacks = new Set();
|
|
37
|
+
#transition = Promise.resolve();
|
|
38
|
+
#open;
|
|
39
|
+
#close;
|
|
40
|
+
#closed = false;
|
|
41
|
+
#emptyWantedPublished = false;
|
|
42
|
+
/**
|
|
43
|
+
* Creates an exchange coordinator from context-owned integration resources.
|
|
44
|
+
*
|
|
45
|
+
* @param input Provides the context assembly inputs.
|
|
46
|
+
*/
|
|
47
|
+
constructor(input) {
|
|
48
|
+
this.#input = input;
|
|
49
|
+
this.#externalSchemas = Object.freeze([...input.externalEventSchemas].filter((schema, index, schemas) => schemas.findIndex((candidate) => TypeUrls.derive(candidate) === TypeUrls.derive(schema)) === index));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Starts the three exchanges once; callers share the same readiness promise.
|
|
53
|
+
*
|
|
54
|
+
* @returns Completes when all exchanges are ready.
|
|
55
|
+
*/
|
|
56
|
+
open() {
|
|
57
|
+
if (this.#closed)
|
|
58
|
+
return Promise.reject(new Error("IntegrationBroker is closed."));
|
|
59
|
+
this.#open ??= this.#openOnce();
|
|
60
|
+
return this.#open;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Stops intake, withdraws interests, drains accepted work, and attempts every cleanup.
|
|
64
|
+
*
|
|
65
|
+
* @returns Completes when all retained resources close.
|
|
66
|
+
*/
|
|
67
|
+
close() {
|
|
68
|
+
this.#close ??= this.#closeOnce();
|
|
69
|
+
return this.#close;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Publishes a third-party imported event through this context's private broker.
|
|
73
|
+
*
|
|
74
|
+
* @param event Contains the original event envelope to publish.
|
|
75
|
+
* @returns Completes after publication is accepted or rejects when the broker is closed or the
|
|
76
|
+
* event has no message type URL.
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
async publishImported(event) {
|
|
80
|
+
if (this.#closed)
|
|
81
|
+
throw new Error("IntegrationBroker is closed.");
|
|
82
|
+
const targetType = event.message?.typeUrl;
|
|
83
|
+
if (targetType === undefined || targetType.length === 0) {
|
|
84
|
+
throw new Error("Imported event requires event.message.typeUrl.");
|
|
85
|
+
}
|
|
86
|
+
if (![...this.#wantedByOrigin.values()].some((types) => types.has(targetType))) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const publisher = await this.#input.transportFactory.createPublisher(channel(targetType));
|
|
90
|
+
try {
|
|
91
|
+
const frame = wrapExternalEvent(event, this.#input.contextName);
|
|
92
|
+
await publisher.publish(frame.id, frame);
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
await this.#closeEphemeral(publisher);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async #openOnce() {
|
|
99
|
+
try {
|
|
100
|
+
const factory = this.#input.transportFactory;
|
|
101
|
+
const status = await this.#attach(factory, onlineType, (message) => this.#onOnline(message));
|
|
102
|
+
this.#resources.push(status);
|
|
103
|
+
const config = await this.#attach(factory, wantedType, (message) => this.#onWanted(message));
|
|
104
|
+
this.#resources.push(config);
|
|
105
|
+
for (const schema of this.#externalSchemas) {
|
|
106
|
+
const targetType = typeUrl(schema);
|
|
107
|
+
this.#resources.push(await this.#attach(factory, targetType, (message) => this.#onEvent(message)));
|
|
108
|
+
}
|
|
109
|
+
await this.#publishOnline();
|
|
110
|
+
await this.#publishWanted();
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const failures = await closeRetained(this.#resources);
|
|
114
|
+
this.#open = undefined;
|
|
115
|
+
if (failures.length)
|
|
116
|
+
throw new AggregateError([error, ...failures], "IntegrationBroker open failed.");
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async #attach(factory, targetType, consumer) {
|
|
121
|
+
const subscriber = await factory.createSubscriber(channel(targetType));
|
|
122
|
+
try {
|
|
123
|
+
const handle = await subscriber.addConsumer((message) => this.#acceptCallback(() => consumer(message)));
|
|
124
|
+
return new SubscriberResource(subscriber, handle);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
try {
|
|
128
|
+
await subscriber.close();
|
|
129
|
+
}
|
|
130
|
+
catch (closeError) {
|
|
131
|
+
throw new AggregateError([error, closeError], "Integration subscriber setup failed.");
|
|
132
|
+
}
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
#acceptCallback(work) {
|
|
137
|
+
if (this.#closed)
|
|
138
|
+
return Promise.resolve();
|
|
139
|
+
const accepted = Promise.resolve().then(work);
|
|
140
|
+
this.#acceptedCallbacks.add(accepted);
|
|
141
|
+
void accepted.then(() => this.#acceptedCallbacks.delete(accepted), () => this.#acceptedCallbacks.delete(accepted));
|
|
142
|
+
return accepted;
|
|
143
|
+
}
|
|
144
|
+
async #onOnline(message) {
|
|
145
|
+
if (this.#closed)
|
|
146
|
+
return;
|
|
147
|
+
const online = unpackOnline(message);
|
|
148
|
+
if (online.context?.value !== message.boundedContextName?.value)
|
|
149
|
+
throw new Error("Malformed integration control message.");
|
|
150
|
+
if (!this.#accepts(online.context))
|
|
151
|
+
return;
|
|
152
|
+
await this.#publishWanted();
|
|
153
|
+
}
|
|
154
|
+
async #onWanted(message) {
|
|
155
|
+
if (this.#closed)
|
|
156
|
+
return;
|
|
157
|
+
if (!this.#accepts(message.boundedContextName))
|
|
158
|
+
return;
|
|
159
|
+
const wanted = unpackWanted(message);
|
|
160
|
+
const requested = new Set(wanted.type.map((entry) => entry.typeUrl).filter(Boolean));
|
|
161
|
+
const origin = message.boundedContextName.value;
|
|
162
|
+
await this.#enqueueTransition(async () => this.#replaceWanted(origin, requested));
|
|
163
|
+
}
|
|
164
|
+
async #onEvent(message) {
|
|
165
|
+
if (this.#closed)
|
|
166
|
+
return;
|
|
167
|
+
if (!this.#accepts(message.boundedContextName))
|
|
168
|
+
return;
|
|
169
|
+
let imported;
|
|
170
|
+
try {
|
|
171
|
+
const original = unpackExternalEvent(message);
|
|
172
|
+
const typeUrl = original.message?.typeUrl;
|
|
173
|
+
const schema = typeUrl === undefined
|
|
174
|
+
? undefined
|
|
175
|
+
: (eventBusAccess.schema(this.#input.eventBus, typeUrl) ??
|
|
176
|
+
(typeUrl === TypeUrls.derive(StringValueSchema) ? StringValueSchema : undefined));
|
|
177
|
+
if (schema === undefined || original.message === undefined)
|
|
178
|
+
throw new Error("External event message type is not accepted.");
|
|
179
|
+
fromBinary(schema, original.message.value);
|
|
180
|
+
imported = toExternalEvent(original);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
emitServerError(serverEnvironmentAccess.loggerFor(ServerEnvironment.instance()), "Dropped corrupt external event.", {
|
|
184
|
+
contextName: message.boundedContextName.value,
|
|
185
|
+
eventType: message.originalMessage?.typeUrl ?? "unknown",
|
|
186
|
+
operation: "external-event-intake",
|
|
187
|
+
reasonCode: "corrupt_external_event",
|
|
188
|
+
});
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
await this.#input.postImported(imported);
|
|
192
|
+
}
|
|
193
|
+
async #replaceWanted(origin, next) {
|
|
194
|
+
const previous = this.#wantedByOrigin.get(origin) ?? new Set();
|
|
195
|
+
const add = [...next].flatMap((type) => {
|
|
196
|
+
const schema = eventBusAccess.schema(this.#input.eventBus, type);
|
|
197
|
+
if (previous.has(type) || this.#wantedElsewhere(type, origin) || schema === undefined)
|
|
198
|
+
return [];
|
|
199
|
+
return [[type, schema]];
|
|
200
|
+
});
|
|
201
|
+
const removals = [...this.#publishers].filter(([type]) => previous.has(type) && !next.has(type) && !this.#wantedElsewhere(type, origin));
|
|
202
|
+
const acquired = [];
|
|
203
|
+
try {
|
|
204
|
+
for (const [targetType, schema] of add) {
|
|
205
|
+
const publisher = await DomesticPublisher.create(this.#input.eventBus, this.#input.transportFactory, targetType, this.#input.contextName, schema);
|
|
206
|
+
acquired.push(publisher);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
const failures = await this.#rollbackAcquired(acquired);
|
|
211
|
+
if (failures.length)
|
|
212
|
+
throw new AggregateError([error, ...failures], "Integration publisher acquisition failed.");
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
const errors = [];
|
|
216
|
+
for (const [, publisher] of removals) {
|
|
217
|
+
await collect(() => publisher.close(), errors);
|
|
218
|
+
}
|
|
219
|
+
if (errors.length) {
|
|
220
|
+
const failures = await this.#rollbackAcquired(acquired);
|
|
221
|
+
throw new AggregateError([...errors, ...failures], "Failed to remove domestic publisher.");
|
|
222
|
+
}
|
|
223
|
+
this.#wantedByOrigin.set(origin, new Set(next));
|
|
224
|
+
for (const [targetType] of removals)
|
|
225
|
+
this.#publishers.delete(targetType);
|
|
226
|
+
for (const publisher of acquired)
|
|
227
|
+
this.#publishers.set(publisher.targetType, publisher);
|
|
228
|
+
}
|
|
229
|
+
#wantedElsewhere(targetType, exceptOrigin) {
|
|
230
|
+
return [...this.#wantedByOrigin.entries()].some(([origin, types]) => origin !== exceptOrigin && types.has(targetType));
|
|
231
|
+
}
|
|
232
|
+
async #rollbackAcquired(acquired) {
|
|
233
|
+
const settled = await Promise.all(acquired.map(async (publisher) => {
|
|
234
|
+
try {
|
|
235
|
+
await publisher.rollback();
|
|
236
|
+
}
|
|
237
|
+
catch (reason) {
|
|
238
|
+
return { publisher, reason };
|
|
239
|
+
}
|
|
240
|
+
return undefined;
|
|
241
|
+
}));
|
|
242
|
+
const failures = [];
|
|
243
|
+
for (const failure of settled) {
|
|
244
|
+
if (failure === undefined)
|
|
245
|
+
continue;
|
|
246
|
+
this.#retainedCloseables.push(failure.publisher);
|
|
247
|
+
failures.push(failure.reason);
|
|
248
|
+
}
|
|
249
|
+
return failures;
|
|
250
|
+
}
|
|
251
|
+
#enqueueTransition(work) {
|
|
252
|
+
const accepted = this.#transition.then(work);
|
|
253
|
+
this.#transition = accepted.catch(() => undefined);
|
|
254
|
+
return accepted;
|
|
255
|
+
}
|
|
256
|
+
async #publishOnline() {
|
|
257
|
+
const publisher = await this.#input.transportFactory.createPublisher(channel(onlineType));
|
|
258
|
+
try {
|
|
259
|
+
const frame = wrapBoundedContextOnline(create(BoundedContextOnlineSchema, { context: this.#input.contextName }));
|
|
260
|
+
await publisher.publish(frame.id, frame);
|
|
261
|
+
}
|
|
262
|
+
finally {
|
|
263
|
+
await this.#closeEphemeral(publisher);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
async #publishWanted() {
|
|
267
|
+
const types = this.#externalSchemas.map(typeUrl).sort();
|
|
268
|
+
const publisher = await this.#input.transportFactory.createPublisher(channel(wantedType));
|
|
269
|
+
try {
|
|
270
|
+
const frame = wrapExternalEventsWanted(create(ExternalEventsWantedSchema, { type: types.map((typeUrl) => ({ typeUrl })) }), this.#input.contextName);
|
|
271
|
+
await publisher.publish(frame.id, frame);
|
|
272
|
+
}
|
|
273
|
+
finally {
|
|
274
|
+
await this.#closeEphemeral(publisher);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
#accepts(origin) {
|
|
278
|
+
const value = origin?.value;
|
|
279
|
+
return Boolean(value &&
|
|
280
|
+
value !== this.#input.contextName.value &&
|
|
281
|
+
value !== this.#input.pairedContextName?.value);
|
|
282
|
+
}
|
|
283
|
+
async #closeOnce() {
|
|
284
|
+
this.#closed = true;
|
|
285
|
+
const errors = [];
|
|
286
|
+
const opening = this.#open;
|
|
287
|
+
if (opening !== undefined)
|
|
288
|
+
await collect(() => opening, errors);
|
|
289
|
+
await Promise.allSettled([...this.#acceptedCallbacks]);
|
|
290
|
+
await this.#transition;
|
|
291
|
+
await collect(() => this.#publishEmptyWanted(), errors);
|
|
292
|
+
const publisherFailures = await closeRetained(this.#retainedCloseables);
|
|
293
|
+
errors.push(...publisherFailures);
|
|
294
|
+
for (const [type, publisher] of this.#publishers) {
|
|
295
|
+
const failures = [];
|
|
296
|
+
await collect(() => publisher.close(), failures);
|
|
297
|
+
if (failures.length === 0)
|
|
298
|
+
this.#publishers.delete(type);
|
|
299
|
+
else
|
|
300
|
+
errors.push(...failures);
|
|
301
|
+
}
|
|
302
|
+
errors.push(...(await closeRetained(this.#resources)));
|
|
303
|
+
if (errors.length) {
|
|
304
|
+
this.#close = undefined;
|
|
305
|
+
throw new AggregateError(errors, "IntegrationBroker close failed.");
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
async #publishEmptyWanted() {
|
|
309
|
+
if (this.#emptyWantedPublished)
|
|
310
|
+
return;
|
|
311
|
+
const publisher = await this.#input.transportFactory.createPublisher(channel(wantedType));
|
|
312
|
+
try {
|
|
313
|
+
const frame = wrapExternalEventsWanted(create(ExternalEventsWantedSchema), this.#input.contextName);
|
|
314
|
+
await publisher.publish(frame.id, frame);
|
|
315
|
+
this.#emptyWantedPublished = true;
|
|
316
|
+
}
|
|
317
|
+
finally {
|
|
318
|
+
await this.#closeEphemeral(publisher);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
async #closeEphemeral(publisher) {
|
|
322
|
+
try {
|
|
323
|
+
await publisher.close();
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
this.#retainedCloseables.push(publisher);
|
|
327
|
+
throw error;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
class DomesticPublisher {
|
|
332
|
+
targetType;
|
|
333
|
+
#eventBus;
|
|
334
|
+
#dispatcher;
|
|
335
|
+
#publisher;
|
|
336
|
+
#detached = false;
|
|
337
|
+
constructor(eventBus, publisher, targetType, origin, schema) {
|
|
338
|
+
this.#eventBus = eventBus;
|
|
339
|
+
this.#publisher = publisher;
|
|
340
|
+
this.targetType = targetType;
|
|
341
|
+
this.#dispatcher = {
|
|
342
|
+
messageSchemas: () => [schema],
|
|
343
|
+
dispatch: async (event) => {
|
|
344
|
+
const frame = wrapExternalEvent(event, origin);
|
|
345
|
+
await publisher.publish(frame.id, frame);
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
static async create(eventBus, factory, targetType, origin, schema) {
|
|
350
|
+
const publisher = await factory.createPublisher(channel(targetType));
|
|
351
|
+
const domestic = new DomesticPublisher(eventBus, publisher, targetType, origin, schema);
|
|
352
|
+
eventBus.register(domestic.#dispatcher);
|
|
353
|
+
return domestic;
|
|
354
|
+
}
|
|
355
|
+
async close() {
|
|
356
|
+
await this.#publisher.close();
|
|
357
|
+
this.#detach();
|
|
358
|
+
}
|
|
359
|
+
async rollback() {
|
|
360
|
+
this.#detach();
|
|
361
|
+
await this.#publisher.close();
|
|
362
|
+
}
|
|
363
|
+
#detach() {
|
|
364
|
+
if (this.#detached)
|
|
365
|
+
return;
|
|
366
|
+
this.#detached = true;
|
|
367
|
+
eventBusAccess.unregister(this.#eventBus, this.#dispatcher);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
class SubscriberResource {
|
|
371
|
+
subscriber;
|
|
372
|
+
handle;
|
|
373
|
+
constructor(subscriber, handle) {
|
|
374
|
+
this.subscriber = subscriber;
|
|
375
|
+
this.handle = handle;
|
|
376
|
+
}
|
|
377
|
+
async close() {
|
|
378
|
+
const errors = [];
|
|
379
|
+
await collect(() => this.handle.close(), errors);
|
|
380
|
+
await collect(() => this.subscriber.close(), errors);
|
|
381
|
+
if (errors.length)
|
|
382
|
+
throw new AggregateError(errors, "Integration subscriber close failed.");
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
async function closeRetained(resources) {
|
|
386
|
+
const settled = await Promise.allSettled(resources.map((resource) => resource.close()));
|
|
387
|
+
const retained = resources.filter((_, index) => settled[index]?.status === "rejected");
|
|
388
|
+
resources.splice(0, resources.length, ...retained);
|
|
389
|
+
const failures = [];
|
|
390
|
+
for (const result of settled)
|
|
391
|
+
if (result.status === "rejected")
|
|
392
|
+
failures.push(result.reason);
|
|
393
|
+
return failures;
|
|
394
|
+
}
|
|
395
|
+
async function collect(work, errors) {
|
|
396
|
+
try {
|
|
397
|
+
await work();
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
errors.push(error);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
function channel(targetType) {
|
|
404
|
+
return create(ChannelIdSchema, { targetType });
|
|
405
|
+
}
|
|
406
|
+
function typeUrl(schema) {
|
|
407
|
+
return TypeUrls.derive(schema);
|
|
408
|
+
}
|
|
409
|
+
function unpackOnline(message) {
|
|
410
|
+
const originalMessage = controlPayload(BoundedContextOnlineSchema, message);
|
|
411
|
+
try {
|
|
412
|
+
return fromBinary(BoundedContextOnlineSchema, originalMessage.value);
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
throw new Error("Malformed integration control message.");
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
function unpackWanted(message) {
|
|
419
|
+
try {
|
|
420
|
+
return fromBinary(ExternalEventsWantedSchema, controlPayload(ExternalEventsWantedSchema, message).value);
|
|
421
|
+
}
|
|
422
|
+
catch {
|
|
423
|
+
throw new Error("Malformed integration control message.");
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
function controlPayload(schema, message) {
|
|
427
|
+
const originalMessage = message.originalMessage;
|
|
428
|
+
if (!message.boundedContextName?.value ||
|
|
429
|
+
originalMessage?.typeUrl !== typeUrl(schema) ||
|
|
430
|
+
!isControlIdentity(message.id))
|
|
431
|
+
throw new Error("Malformed integration control message.");
|
|
432
|
+
return originalMessage;
|
|
433
|
+
}
|
|
434
|
+
function isControlIdentity(identity) {
|
|
435
|
+
if (identity?.typeUrl !== typeUrl(StringValueSchema))
|
|
436
|
+
return false;
|
|
437
|
+
try {
|
|
438
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(fromBinary(StringValueSchema, identity.value).value);
|
|
439
|
+
}
|
|
440
|
+
catch {
|
|
441
|
+
return false;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
//# sourceMappingURL=integration-broker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-broker.js","sourceRoot":"","sources":["../../src/integration/integration-broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type Message } from "@bufbuild/protobuf";
|
|
2
|
+
import { type ActorContext, type UserId } from "@spine-event-engine/proto";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a hidden bounded context that imports third-party events through its private broker.
|
|
5
|
+
*
|
|
6
|
+
* The JVM-owned integration lifecycle remains private: this facade only creates the context,
|
|
7
|
+
* publishes generated events, observes availability, and closes it.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ThirdPartyContext {
|
|
10
|
+
#private;
|
|
11
|
+
private constructor();
|
|
12
|
+
/**
|
|
13
|
+
* Creates a third-party context that forbids actor tenants.
|
|
14
|
+
*
|
|
15
|
+
* @param name Identifies the hidden bounded context.
|
|
16
|
+
* @returns Resolves to an open single-tenant context.
|
|
17
|
+
*/
|
|
18
|
+
static singleTenant(name: string): Promise<ThirdPartyContext>;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a third-party context that requires actor tenants.
|
|
21
|
+
*
|
|
22
|
+
* @param name Identifies the hidden bounded context.
|
|
23
|
+
* @returns Resolves to an open multitenant context.
|
|
24
|
+
*/
|
|
25
|
+
static multitenant(name: string): Promise<ThirdPartyContext>;
|
|
26
|
+
/**
|
|
27
|
+
* Publishes one generated event with its importing actor identity.
|
|
28
|
+
*
|
|
29
|
+
* @param event Supplies the generated event message to import unchanged.
|
|
30
|
+
* @param actor Supplies a user or actor context that satisfies this context's tenancy policy.
|
|
31
|
+
* @returns Completes when the private broker accepts the imported event, or rejects for a closed
|
|
32
|
+
* context, an unsupported message, or incompatible actor tenancy.
|
|
33
|
+
*/
|
|
34
|
+
emittedEvent(event: Message, actor: ActorContext): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Publishes one generated event with a user identity in a single-tenant context.
|
|
37
|
+
*
|
|
38
|
+
* @param event Supplies the generated event message to import unchanged.
|
|
39
|
+
* @param actor Supplies the importing user identity.
|
|
40
|
+
* @returns Completes when the private broker accepts the imported event.
|
|
41
|
+
*/
|
|
42
|
+
emittedEvent(event: Message, actor: UserId): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Returns whether the hidden bounded context remains available for imports.
|
|
45
|
+
*
|
|
46
|
+
* @returns `true` until a successful close; `false` after it closes.
|
|
47
|
+
*/
|
|
48
|
+
isOpen(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Closes the hidden bounded context and its private broker resources.
|
|
51
|
+
*
|
|
52
|
+
* @returns Completes after shutdown; repeated calls after a successful close do nothing.
|
|
53
|
+
*/
|
|
54
|
+
close(): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=third-party-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"third-party-context.d.ts","sourceRoot":"","sources":["../../src/integration/third-party-context.ts"],"names":[],"mappings":"AAcA,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAC;AAKnC;;;;;GAKG;AACH,qBAAa,iBAAiB;;IAK5B,OAAO;IAKP;;;;;OAKG;WACU,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInE;;;;;OAKG;WACU,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlE;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhE;;;;;;OAMG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC1D;;;;OAIG;IACH,MAAM,IAAI,OAAO;IAIjB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC7B"}
|