@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,391 @@
|
|
|
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 { describeEntityMetadata, isEntitySchema } from "../entity/entity-metadata.js";
|
|
15
|
+
/**
|
|
16
|
+
* Error thrown when explicit handler metadata cannot be defined.
|
|
17
|
+
*/
|
|
18
|
+
export class HandlerMetadataError extends Error {
|
|
19
|
+
// prettier-ignore
|
|
20
|
+
/**
|
|
21
|
+
* Stable code for callers/tests that need structured failure handling.
|
|
22
|
+
*/
|
|
23
|
+
code;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a registration error.
|
|
26
|
+
*
|
|
27
|
+
* @param code Stable failure code.
|
|
28
|
+
* @param message Human-readable failure detail.
|
|
29
|
+
*/
|
|
30
|
+
constructor(code, message) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = "HandlerMetadataError";
|
|
33
|
+
this.code = code;
|
|
34
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Error thrown when a caller-owned handler metadata registry rejects metadata.
|
|
39
|
+
*/
|
|
40
|
+
export class HandlerMetadataRegistryError extends Error {
|
|
41
|
+
// prettier-ignore
|
|
42
|
+
/**
|
|
43
|
+
* Stable code for callers/tests that need structured failure handling.
|
|
44
|
+
*/
|
|
45
|
+
code;
|
|
46
|
+
/**
|
|
47
|
+
* Creates a registry validation error.
|
|
48
|
+
*
|
|
49
|
+
* @param code Stable failure code.
|
|
50
|
+
* @param message Human-readable failure detail.
|
|
51
|
+
*/
|
|
52
|
+
constructor(code, message) {
|
|
53
|
+
super(message);
|
|
54
|
+
this.name = "HandlerMetadataRegistryError";
|
|
55
|
+
this.code = code;
|
|
56
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Caller-owned registry for lookup-only handler metadata and duplicate validation.
|
|
61
|
+
*/
|
|
62
|
+
export class HandlerMetadataRegistry {
|
|
63
|
+
#entityHandlers = [];
|
|
64
|
+
#handlerEntries = [];
|
|
65
|
+
#byEntityState = new Map();
|
|
66
|
+
#byKind = new Map();
|
|
67
|
+
#byMessage = new Map();
|
|
68
|
+
#commandAssignments = new Map();
|
|
69
|
+
#eventApplications = new Map();
|
|
70
|
+
/**
|
|
71
|
+
* Creates a caller-owned registry and optionally registers metadata.
|
|
72
|
+
*
|
|
73
|
+
* @param entityHandlers Entity metadata to register in iteration order.
|
|
74
|
+
*/
|
|
75
|
+
constructor(entityHandlers = []) {
|
|
76
|
+
for (const metadata of entityHandlers) {
|
|
77
|
+
this.register(metadata);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Registers one entity handler metadata object.
|
|
82
|
+
*
|
|
83
|
+
* @param metadata Entity handler metadata to register.
|
|
84
|
+
* @returns The registered metadata unchanged.
|
|
85
|
+
*/
|
|
86
|
+
register(metadata) {
|
|
87
|
+
const entries = metadata.handlers.map((handler) => this.#entry(metadata, handler));
|
|
88
|
+
const commandAssignments = new Map();
|
|
89
|
+
const eventApplications = new Map();
|
|
90
|
+
for (const entry of entries) {
|
|
91
|
+
if (entry.handler.kind === "command-assignment") {
|
|
92
|
+
const commandEntry = entry;
|
|
93
|
+
this.#validateAssignment(commandEntry, this.#commandAssignments.get(entry.handler.messageFullTypeName) ??
|
|
94
|
+
commandAssignments.get(entry.handler.messageFullTypeName));
|
|
95
|
+
commandAssignments.set(entry.handler.messageFullTypeName, commandEntry);
|
|
96
|
+
}
|
|
97
|
+
if (entry.handler.kind === "event-application") {
|
|
98
|
+
const eventEntry = entry;
|
|
99
|
+
const key = this.#applicationKey(entry.entity.fullTypeName, entry.handler.messageFullTypeName);
|
|
100
|
+
this.#validateApplication(eventEntry, this.#eventApplications.get(key) ?? eventApplications.get(key));
|
|
101
|
+
eventApplications.set(key, eventEntry);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
this.#entityHandlers.push(metadata);
|
|
105
|
+
this.#push(this.#byEntityState, metadata.entity.fullTypeName, metadata);
|
|
106
|
+
for (const entry of entries) {
|
|
107
|
+
this.#handlerEntries.push(entry);
|
|
108
|
+
this.#push(this.#byKind, entry.handler.kind, entry);
|
|
109
|
+
this.#push(this.#byMessage, entry.handler.messageFullTypeName, entry);
|
|
110
|
+
}
|
|
111
|
+
for (const [messageFullTypeName, entry] of commandAssignments) {
|
|
112
|
+
this.#commandAssignments.set(messageFullTypeName, entry);
|
|
113
|
+
}
|
|
114
|
+
for (const [key, entry] of eventApplications) {
|
|
115
|
+
this.#eventApplications.set(key, entry);
|
|
116
|
+
}
|
|
117
|
+
return metadata;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Returns registered entity handler metadata in registration order.
|
|
121
|
+
*
|
|
122
|
+
* @returns A fresh frozen metadata list.
|
|
123
|
+
*/
|
|
124
|
+
listEntityHandlers() {
|
|
125
|
+
return Object.freeze([...this.#entityHandlers]);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Returns registered handler entries in registration and declaration order.
|
|
129
|
+
*
|
|
130
|
+
* @returns A fresh frozen registered-handler list.
|
|
131
|
+
*/
|
|
132
|
+
listHandlers() {
|
|
133
|
+
return Object.freeze([...this.#handlerEntries]);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Finds entity handler metadata by state type name.
|
|
137
|
+
*
|
|
138
|
+
* @param stateTypeName Fully qualified entity state type name.
|
|
139
|
+
* @returns Matching metadata in registration order.
|
|
140
|
+
*/
|
|
141
|
+
findByState(stateTypeName) {
|
|
142
|
+
return Object.freeze([...(this.#byEntityState.get(stateTypeName) ?? [])]);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Finds handler entries by handler role.
|
|
146
|
+
*
|
|
147
|
+
* @param kind Handler role.
|
|
148
|
+
* @returns Matching entries in registration and declaration order.
|
|
149
|
+
*/
|
|
150
|
+
findHandlersByKind(kind) {
|
|
151
|
+
return Object.freeze([
|
|
152
|
+
...(this.#byKind.get(kind) ?? []),
|
|
153
|
+
]);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Finds handler entries by message type name.
|
|
157
|
+
*
|
|
158
|
+
* @param messageTypeName Fully qualified command or event type name.
|
|
159
|
+
* @returns Matching entries in registration and declaration order.
|
|
160
|
+
*/
|
|
161
|
+
findByMessage(messageTypeName) {
|
|
162
|
+
return Object.freeze([...(this.#byMessage.get(messageTypeName) ?? [])]);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Finds the unique command assignment for a command type.
|
|
166
|
+
*
|
|
167
|
+
* @param commandTypeName Fully qualified command type name.
|
|
168
|
+
* @returns The assignment when registered.
|
|
169
|
+
*/
|
|
170
|
+
findCommandAssignment(commandTypeName) {
|
|
171
|
+
return this.#commandAssignments.get(commandTypeName);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Finds the unique event applier for a state and event type.
|
|
175
|
+
*
|
|
176
|
+
* @param stateTypeName Fully qualified entity state type name.
|
|
177
|
+
* @param eventTypeName Fully qualified event type name.
|
|
178
|
+
* @returns The applier when registered.
|
|
179
|
+
*/
|
|
180
|
+
findEventApplication(stateTypeName, eventTypeName) {
|
|
181
|
+
return this.#eventApplications.get(this.#applicationKey(stateTypeName, eventTypeName));
|
|
182
|
+
}
|
|
183
|
+
#entry(entityHandlers, handler) {
|
|
184
|
+
return Object.freeze({
|
|
185
|
+
entityHandlers,
|
|
186
|
+
entityType: entityHandlers.entityType,
|
|
187
|
+
entity: entityHandlers.entity,
|
|
188
|
+
handler,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
#validateAssignment(entry, duplicate) {
|
|
192
|
+
if (duplicate !== undefined) {
|
|
193
|
+
throw new HandlerMetadataRegistryError("DUPLICATE_COMMAND_ASSIGNMENT", `Duplicate command assignment for "${entry.handler.messageFullTypeName}" declared by entity ` +
|
|
194
|
+
`"${entry.entity.fullTypeName}"; already declared by entity ` +
|
|
195
|
+
`"${duplicate.entity.fullTypeName}".`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
#validateApplication(entry, duplicate) {
|
|
199
|
+
if (duplicate !== undefined) {
|
|
200
|
+
throw new HandlerMetadataRegistryError("DUPLICATE_EVENT_APPLICATION", `Duplicate event application for entity "${entry.entity.fullTypeName}" and event ` +
|
|
201
|
+
`"${entry.handler.messageFullTypeName}"; already declared by method ` +
|
|
202
|
+
`"${duplicate.handler.methodName}".`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
#applicationKey(stateTypeName, eventTypeName) {
|
|
206
|
+
return `${stateTypeName}\u0000${eventTypeName}`;
|
|
207
|
+
}
|
|
208
|
+
#push(map, key, value) {
|
|
209
|
+
const values = map.get(key);
|
|
210
|
+
if (values === undefined) {
|
|
211
|
+
map.set(key, [value]);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
values.push(value);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Builds and validates metadata for one entity class.
|
|
220
|
+
*/
|
|
221
|
+
class EntityHandlersOwner {
|
|
222
|
+
#authentic = new WeakSet();
|
|
223
|
+
#emittedSchemas = new WeakMap();
|
|
224
|
+
/**
|
|
225
|
+
* Creates handler metadata without invoking entity methods.
|
|
226
|
+
*
|
|
227
|
+
* @param entityType Entity class whose prototype owns the methods.
|
|
228
|
+
* @param stateSchema Generated schema for the entity state.
|
|
229
|
+
* @param define Callback that registers handlers with the builder.
|
|
230
|
+
* @returns Frozen metadata for the entity class.
|
|
231
|
+
*/
|
|
232
|
+
define(entityType, stateSchema, define) {
|
|
233
|
+
return this.#define(entityType, stateSchema, define, []);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Checks that metadata was created by this package.
|
|
237
|
+
*
|
|
238
|
+
* @param metadata Metadata to inspect.
|
|
239
|
+
* @returns Whether the metadata is package-authentic.
|
|
240
|
+
* @internal
|
|
241
|
+
*/
|
|
242
|
+
isAuthentic(metadata) {
|
|
243
|
+
return this.#authentic.has(metadata);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Returns schemas emitted by generated handler metadata.
|
|
247
|
+
*
|
|
248
|
+
* @param handler Handler metadata to inspect.
|
|
249
|
+
* @returns Frozen emitted schemas.
|
|
250
|
+
* @internal
|
|
251
|
+
*/
|
|
252
|
+
emittedSchemas(handler) {
|
|
253
|
+
return Object.freeze([...(this.#emittedSchemas.get(handler) ?? [])]);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Copies generated emitted-schema metadata between cloned handlers.
|
|
257
|
+
*
|
|
258
|
+
* @param source Source handler metadata.
|
|
259
|
+
* @param target Cloned target handler metadata.
|
|
260
|
+
* @internal
|
|
261
|
+
*/
|
|
262
|
+
copyEmittedSchemas(source, target) {
|
|
263
|
+
const schemas = this.#emittedSchemas.get(source);
|
|
264
|
+
if (schemas !== undefined) {
|
|
265
|
+
this.#emittedSchemas.set(target, Object.freeze([...schemas]));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Creates handler metadata using generated arity metadata.
|
|
270
|
+
*
|
|
271
|
+
* @param entityType Entity class whose prototype owns the methods.
|
|
272
|
+
* @param stateSchema Generated schema for the entity state.
|
|
273
|
+
* @param define Callback that registers handlers with the builder.
|
|
274
|
+
* @param arities Generated arity metadata.
|
|
275
|
+
* @returns Frozen metadata for the entity class.
|
|
276
|
+
* @internal
|
|
277
|
+
*/
|
|
278
|
+
defineArity(entityType, stateSchema, define, arities) {
|
|
279
|
+
return this.#define(entityType, stateSchema, define, arities);
|
|
280
|
+
}
|
|
281
|
+
#define(entityType, stateSchema, define, arities) {
|
|
282
|
+
const built = new WeakSet();
|
|
283
|
+
const builder = this.#builder(entityType, built, this.#arityMap(arities));
|
|
284
|
+
const handlers = Object.freeze([...define(builder)]);
|
|
285
|
+
this.#validateBuilt(handlers, built);
|
|
286
|
+
const metadata = {
|
|
287
|
+
entityType,
|
|
288
|
+
entity: describeEntityMetadata(stateSchema),
|
|
289
|
+
handlers,
|
|
290
|
+
commandAssignments: this.#ofKind(handlers, "command-assignment"),
|
|
291
|
+
commandReactions: this.#ofKind(handlers, "command-reaction"),
|
|
292
|
+
eventSubscriptions: this.#ofKind(handlers, "event-subscription"),
|
|
293
|
+
stateSubscriptions: this.#ofKind(handlers, "state-subscription"),
|
|
294
|
+
eventReactions: this.#ofKind(handlers, "event-reaction"),
|
|
295
|
+
eventApplications: this.#ofKind(handlers, "event-application"),
|
|
296
|
+
};
|
|
297
|
+
this.#authentic.add(metadata);
|
|
298
|
+
return Object.freeze(metadata);
|
|
299
|
+
}
|
|
300
|
+
#builder(entityType, built, arities) {
|
|
301
|
+
return Object.freeze({
|
|
302
|
+
assign: (schema, methodName) => this.#handler(entityType, "command-assignment", schema, methodName, built, arities),
|
|
303
|
+
command: (schema, methodName) => this.#handler(entityType, "command-reaction", schema, methodName, built, arities),
|
|
304
|
+
subscribe: (schema, methodName) => this.#handler(entityType, isEntitySchema(schema) ? "state-subscription" : "event-subscription", schema, methodName, built, arities),
|
|
305
|
+
react: (schema, methodName) => this.#handler(entityType, "event-reaction", schema, methodName, built, arities),
|
|
306
|
+
apply: (schema, methodName, options = {}) => {
|
|
307
|
+
const handler = Object.freeze({
|
|
308
|
+
...this.#handler(entityType, "event-application", schema, methodName, built),
|
|
309
|
+
allowImport: options.allowImport ?? false,
|
|
310
|
+
});
|
|
311
|
+
built.add(handler);
|
|
312
|
+
return handler;
|
|
313
|
+
},
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
#handler(entityType, kind, schema, methodName, built, arities = new Map()) {
|
|
317
|
+
this.#validateMethod(entityType, methodName);
|
|
318
|
+
const generated = arities.get(this.#arityKey(kind, methodName));
|
|
319
|
+
const handler = Object.freeze({
|
|
320
|
+
kind,
|
|
321
|
+
schema,
|
|
322
|
+
descriptor: schema,
|
|
323
|
+
messageFullTypeName: schema.typeName,
|
|
324
|
+
methodName,
|
|
325
|
+
parameterCount: generated?.parameterCount ?? 1,
|
|
326
|
+
origin: generated?.origin ?? "domestic",
|
|
327
|
+
...(generated?.where === undefined ? {} : { where: Object.freeze({ ...generated.where }) }),
|
|
328
|
+
});
|
|
329
|
+
if (generated?.emittedSchemas !== undefined) {
|
|
330
|
+
this.#emittedSchemas.set(handler, generated.emittedSchemas);
|
|
331
|
+
}
|
|
332
|
+
built.add(handler);
|
|
333
|
+
return handler;
|
|
334
|
+
}
|
|
335
|
+
#arityMap(arities) {
|
|
336
|
+
const result = new Map();
|
|
337
|
+
for (const arity of arities) {
|
|
338
|
+
result.set(this.#arityKey(arity.kind, arity.methodName), Object.freeze({
|
|
339
|
+
parameterCount: this.#parameterCount(arity.parameterCount),
|
|
340
|
+
origin: arity.origin ?? "domestic",
|
|
341
|
+
...(arity.emittedSchemas === undefined
|
|
342
|
+
? {}
|
|
343
|
+
: { emittedSchemas: Object.freeze([...arity.emittedSchemas]) }),
|
|
344
|
+
...(arity.where === undefined ? {} : { where: Object.freeze({ ...arity.where }) }),
|
|
345
|
+
}));
|
|
346
|
+
}
|
|
347
|
+
return result;
|
|
348
|
+
}
|
|
349
|
+
#parameterCount(value) {
|
|
350
|
+
if (value === 1 || value === 2) {
|
|
351
|
+
return value;
|
|
352
|
+
}
|
|
353
|
+
throw new HandlerMetadataError("INVALID_PARAMETER_COUNT", `Handler metadata declares unsupported parameter count ${String(value)}.`);
|
|
354
|
+
}
|
|
355
|
+
#arityKey(kind, methodName) {
|
|
356
|
+
return `${kind}\u0000${methodName}`;
|
|
357
|
+
}
|
|
358
|
+
#validateBuilt(handlers, built) {
|
|
359
|
+
for (const handler of handlers) {
|
|
360
|
+
if (!built.has(handler)) {
|
|
361
|
+
throw new HandlerMetadataError("UNKNOWN_HANDLER_METHOD", "Handler metadata must be created by the registration builder.");
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
#validateMethod(entityType, methodName) {
|
|
366
|
+
const descriptor = Object.getOwnPropertyDescriptor(entityType.prototype, methodName);
|
|
367
|
+
if (methodName === "constructor" ||
|
|
368
|
+
descriptor === undefined ||
|
|
369
|
+
typeof descriptor.value !== "function") {
|
|
370
|
+
throw new HandlerMetadataError("UNKNOWN_HANDLER_METHOD", `Handler method "${methodName}" must be an own prototype data method declared with ` +
|
|
371
|
+
"normal class method syntax on the registered entity prototype.");
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
#ofKind(handlers, kind) {
|
|
375
|
+
return Object.freeze(handlers.filter((handler) => handler.kind === kind));
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Internal metadata authority for handler registration, generated metadata, and cloning.
|
|
380
|
+
* @internal
|
|
381
|
+
*/
|
|
382
|
+
export const HandlerMetadataValues = Object.freeze(new EntityHandlersOwner());
|
|
383
|
+
/**
|
|
384
|
+
* Defines metadata for explicitly registered entity handlers.
|
|
385
|
+
*/
|
|
386
|
+
export const EntityHandlers = Object.freeze({
|
|
387
|
+
define(entityType, stateSchema, define) {
|
|
388
|
+
return HandlerMetadataValues.define(entityType, stateSchema, define);
|
|
389
|
+
},
|
|
390
|
+
});
|
|
391
|
+
//# sourceMappingURL=handler-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-metadata.js","sourceRoot":"","sources":["../../src/handler/handler-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AA4DtF;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,kBAAkB;IAElB;;OAEG;IACM,IAAI,CAA2B;IAExC;;;;;OAKG;IACH,YAAY,IAA8B,EAAE,OAAe;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAgSD;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,kBAAkB;IAElB;;OAEG;IACM,IAAI,CAA2B;IAExC;;;;;OAKG;IACH,YAAY,IAA8B,EAAE,OAAe;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAkGD;;GAEG;AACH,MAAM,OAAO,uBAAuB;IACzB,eAAe,GAA6B,EAAE,CAAC;IAC/C,eAAe,GAAgC,EAAE,CAAC;IAClD,cAAc,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC7D,OAAO,GAAG,IAAI,GAAG,EAA4C,CAAC;IAC9D,UAAU,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC5D,mBAAmB,GAAG,IAAI,GAAG,EAGnC,CAAC;IACK,kBAAkB,GAAG,IAAI,GAAG,EAGlC,CAAC;IAEJ;;;;OAIG;IACH,YAAY,iBAAmD,EAAE;QAC/D,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAA0C,QAAkB;QAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACnF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B,CAAC;QACJ,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAG9B,CAAC;QAEJ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBAChD,MAAM,YAAY,GAAG,KAAoE,CAAC;gBAC1F,IAAI,CAAC,mBAAmB,CACtB,YAAY,EACZ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;oBAC7D,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAC5D,CAAC;gBACF,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBAC/C,MAAM,UAAU,GAAG,KAAmE,CAAC;gBACvF,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAC9B,KAAK,CAAC,MAAM,CAAC,YAAY,EACzB,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAClC,CAAC;gBAEF,IAAI,CAAC,oBAAoB,CACvB,UAAU,EACV,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAC/D,CAAC;gBACF,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAExE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;QAED,KAAK,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,kBAAkB,EAAE,CAAC;YAC9D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAC7C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,kBAAkB;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,aAAqB;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAChB,IAAU;QAEV,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,GAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAE7B;SACL,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,eAAuB;QACnC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CACnB,eAAuB;QAEvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACH,oBAAoB,CAClB,aAAqB,EACrB,aAAqB;QAErB,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,CACJ,cAAsC,EACtC,OAAwB;QAExB,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,cAAc;YACd,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CACjB,KAAkE,EAClE,SAAkF;QAElF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,4BAA4B,CACpC,8BAA8B,EAC9B,qCAAqC,KAAK,CAAC,OAAO,CAAC,mBAAmB,uBAAuB;gBAC3F,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,gCAAgC;gBAC7D,IAAI,SAAS,CAAC,MAAM,CAAC,YAAY,IAAI,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oBAAoB,CAClB,KAAiE,EACjE,SAAiF;QAEjF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,4BAA4B,CACpC,6BAA6B,EAC7B,2CAA2C,KAAK,CAAC,MAAM,CAAC,YAAY,cAAc;gBAChF,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,gCAAgC;gBACrE,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI,CACvC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe,CAAC,aAAqB,EAAE,aAAqB;QAC1D,OAAO,GAAG,aAAa,SAAS,aAAa,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAa,GAAsB,EAAE,GAAQ,EAAE,KAAY;QAC9D,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAwCD;;GAEG;AACH,MAAM,mBAAmB;IACd,UAAU,GAAG,IAAI,OAAO,EAA0B,CAAC;IACnD,eAAe,GAAG,IAAI,OAAO,EAAuD,CAAC;IAE9F;;;;;;;OAOG;IACH,MAAM,CACJ,UAAiC,EACjC,WAAwB,EACxB,MAEqF;QAErF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,QAAgC;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,OAAwB;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAAC,MAAuB,EAAE,MAAuB;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,WAAW,CACT,UAAiC,EACjC,WAAwB,EACxB,MAEqF,EACrF,OAA+B;QAE/B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CACL,UAAiC,EACjC,WAAwB,EACxB,MAEqF,EACrF,OAA+B;QAE/B,MAAM,KAAK,GAAG,IAAI,OAAO,EAAmB,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAkD;YAC9D,UAAU;YACV,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC;YAC3C,QAAQ;YACR,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAAC;YAChE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC;YAC5D,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAAC;YAChE,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAAC;YAChE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC;YACxD,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC;SAC/D,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ,CACN,UAAiC,EACjC,KAA+B,EAC/B,OAAkD;QAElD,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,CACN,MAAc,EACd,UAAuC,EACvC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC;YACxF,OAAO,EAAE,CACP,MAAc,EACd,UAAuC,EACvC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC;YACtF,SAAS,EAAE,CACT,MAAc,EACd,UAAuC,EACvC,EAAE,CACF,IAAI,CAAC,QAAQ,CACX,UAAU,EACV,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,EACpE,MAAM,EACN,UAAU,EACV,KAAK,EACL,OAAO,CACR;YACH,KAAK,EAAE,CACL,MAAc,EACd,UAAuC,EACvC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC;YACpF,KAAK,EAAE,CACL,MAAc,EACd,UAAuC,EACvC,UAAmC,EAAE,EACrC,EAAE;gBACF,MAAM,OAAO,GAGT,MAAM,CAAC,MAAM,CAAC;oBAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;oBAC5E,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;iBAC1C,CAAC,CAAC;gBACH,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACnB,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAKN,UAAiC,EACjC,IAAU,EACV,MAAc,EACd,UAAuC,EACvC,KAA+B,EAC/B,UAAqD,IAAI,GAAG,EAAE;QAE9D,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,IAAI;YACJ,MAAM;YACN,UAAU,EAAE,MAAM;YAClB,mBAAmB,EAAE,MAAM,CAAC,QAAQ;YACpC,UAAU;YACV,cAAc,EAAE,SAAS,EAAE,cAAc,IAAI,CAAC;YAC9C,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,UAAU;YACvC,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;SAC5F,CAAC,CAAC;QACH,IAAI,SAAS,EAAE,cAAc,KAAK,SAAS,EAAE,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAA0B,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;QACjF,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,OAA0B,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,OAA+B;QACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,EAC5C,MAAM,CAAC,MAAM,CAAC;gBACZ,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC1D,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,UAAU;gBAClC,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS;oBACpC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;gBACjE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;aACnF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,KAAc;QAC5B,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,oBAAoB,CAC5B,yBAAyB,EACzB,yDAAyD,MAAM,CAAC,KAAK,CAAC,GAAG,CAC1E,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAiB,EAAE,UAAkB;QAC7C,OAAO,GAAG,IAAI,SAAS,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,cAAc,CAAC,QAAoC,EAAE,KAA+B;QAClF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,oBAAoB,CAC5B,wBAAwB,EACxB,+DAA+D,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,eAAe,CACb,UAAiC,EACjC,UAAuC;QAEvC,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrF,IACE,UAAU,KAAK,aAAa;YAC5B,UAAU,KAAK,SAAS;YACxB,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EACtC,CAAC;YACD,MAAM,IAAI,oBAAoB,CAC5B,wBAAwB,EACxB,mBAAmB,UAAU,uDAAuD;gBAClF,gEAAgE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CACL,QAAoC,EACpC,IAAU;QAEV,OAAO,MAAM,CAAC,MAAM,CAClB,QAAQ,CAAC,MAAM,CACb,CAAC,OAAO,EAAgE,EAAE,CACxE,OAAO,CAAC,IAAI,KAAK,IAAI,CACxB,CACF,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAkC,MAAM,CAAC,MAAM,CAC/E,IAAI,mBAAmB,EAAE,CAC1B,CAAC;AAyBF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAuC,MAAM,CAAC,MAAM,CAAC;IAC9E,MAAM,CACJ,UAAiC,EACjC,WAAwB,EACxB,MAEqF;QAErF,OAAO,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { EntityMetadata } from "../entity/entity-metadata.js";
|
|
2
|
+
import type { EntityClass, EntityHandlersMetadata, HandlerMetadata, RegisteredHandlerMetadata } from "./handler-metadata.js";
|
|
3
|
+
/**
|
|
4
|
+
* Frozen fields shared by a readiness entry and its registered handler.
|
|
5
|
+
*/
|
|
6
|
+
export interface ReadinessMetadataFields<Handler extends HandlerMetadata> {
|
|
7
|
+
/**
|
|
8
|
+
* Entity handler metadata that declared the handler.
|
|
9
|
+
*/
|
|
10
|
+
readonly entityHandlers: EntityHandlersMetadata;
|
|
11
|
+
/**
|
|
12
|
+
* Entity class that owns the handler method.
|
|
13
|
+
*/
|
|
14
|
+
readonly entityType: EntityClass;
|
|
15
|
+
/**
|
|
16
|
+
* Descriptor-derived metadata for the entity state.
|
|
17
|
+
*/
|
|
18
|
+
readonly entity: EntityMetadata;
|
|
19
|
+
/**
|
|
20
|
+
* Handler metadata used by the readiness entry.
|
|
21
|
+
*/
|
|
22
|
+
readonly handler: Handler;
|
|
23
|
+
/**
|
|
24
|
+
* Registered handler metadata used to create the entry.
|
|
25
|
+
*/
|
|
26
|
+
readonly registeredHandler: RegisteredHandlerMetadata<Handler>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates frozen readiness metadata without sharing mutable caller-owned records.
|
|
30
|
+
*/
|
|
31
|
+
declare class ReadinessMetadataOwner {
|
|
32
|
+
#private;
|
|
33
|
+
/**
|
|
34
|
+
* Compares fully qualified Protobuf type names in lexical order.
|
|
35
|
+
*
|
|
36
|
+
* @param left First type name.
|
|
37
|
+
* @param right Second type name.
|
|
38
|
+
* @returns A negative, zero, or positive comparison result.
|
|
39
|
+
*/
|
|
40
|
+
compareTypeNames(left: string, right: string): number;
|
|
41
|
+
/**
|
|
42
|
+
* Creates cloned fields for a new readiness entry.
|
|
43
|
+
*
|
|
44
|
+
* @param registeredHandler Registered handler to clone.
|
|
45
|
+
* @returns Frozen fields with cloned metadata.
|
|
46
|
+
*/
|
|
47
|
+
create<Handler extends HandlerMetadata>(registeredHandler: RegisteredHandlerMetadata<Handler>): ReadinessMetadataFields<Handler>;
|
|
48
|
+
/**
|
|
49
|
+
* Creates fields that retain already frozen registered metadata.
|
|
50
|
+
*
|
|
51
|
+
* @param registeredHandler Registered handler to retain.
|
|
52
|
+
* @returns Frozen fields sharing the registered metadata.
|
|
53
|
+
*/
|
|
54
|
+
copy<Handler extends HandlerMetadata>(registeredHandler: RegisteredHandlerMetadata<Handler>): ReadinessMetadataFields<Handler>;
|
|
55
|
+
/**
|
|
56
|
+
* Copies map arrays into fresh frozen arrays.
|
|
57
|
+
*
|
|
58
|
+
* @param map Metadata arrays to copy.
|
|
59
|
+
* @returns A map containing fresh frozen arrays.
|
|
60
|
+
*/
|
|
61
|
+
copyMap<Value>(map: ReadonlyMap<string, readonly Value[]>): ReadonlyMap<string, readonly Value[]>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Creates frozen readiness metadata without sharing mutable caller-owned records.
|
|
65
|
+
*/
|
|
66
|
+
export declare const ReadinessMetadata: Readonly<ReadinessMetadataOwner>;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=registration-readiness-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-readiness-metadata.d.ts","sourceRoot":"","sources":["../../src/handler/registration-readiness-metadata.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAGV,cAAc,EACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAG/B;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO,SAAS,eAAe;IAGtE;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAEhD;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,cAAM,sBAAsB;;IAG1B;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAUrD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,SAAS,eAAe,EACpC,iBAAiB,EAAE,yBAAyB,CAAC,OAAO,CAAC,GACpD,uBAAuB,CAAC,OAAO,CAAC;IAInC;;;;;OAKG;IACH,IAAI,CAAC,OAAO,SAAS,eAAe,EAClC,iBAAiB,EAAE,yBAAyB,CAAC,OAAO,CAAC,GACpD,uBAAuB,CAAC,OAAO,CAAC;IAInC;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EACX,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,GACzC,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;CAiLzC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,sBAAsB,CAE9D,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
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 { HandlerMetadataValues } from "./handler-metadata.js";
|
|
15
|
+
/**
|
|
16
|
+
* Creates frozen readiness metadata without sharing mutable caller-owned records.
|
|
17
|
+
*/
|
|
18
|
+
class ReadinessMetadataOwner {
|
|
19
|
+
// prettier-ignore
|
|
20
|
+
/**
|
|
21
|
+
* Compares fully qualified Protobuf type names in lexical order.
|
|
22
|
+
*
|
|
23
|
+
* @param left First type name.
|
|
24
|
+
* @param right Second type name.
|
|
25
|
+
* @returns A negative, zero, or positive comparison result.
|
|
26
|
+
*/
|
|
27
|
+
compareTypeNames(left, right) {
|
|
28
|
+
if (left < right) {
|
|
29
|
+
return -1;
|
|
30
|
+
}
|
|
31
|
+
if (left > right) {
|
|
32
|
+
return 1;
|
|
33
|
+
}
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates cloned fields for a new readiness entry.
|
|
38
|
+
*
|
|
39
|
+
* @param registeredHandler Registered handler to clone.
|
|
40
|
+
* @returns Frozen fields with cloned metadata.
|
|
41
|
+
*/
|
|
42
|
+
create(registeredHandler) {
|
|
43
|
+
return this.#fields(this.#cloneRegistered(registeredHandler));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Creates fields that retain already frozen registered metadata.
|
|
47
|
+
*
|
|
48
|
+
* @param registeredHandler Registered handler to retain.
|
|
49
|
+
* @returns Frozen fields sharing the registered metadata.
|
|
50
|
+
*/
|
|
51
|
+
copy(registeredHandler) {
|
|
52
|
+
return this.#fields(this.#copyRegistered(registeredHandler));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Copies map arrays into fresh frozen arrays.
|
|
56
|
+
*
|
|
57
|
+
* @param map Metadata arrays to copy.
|
|
58
|
+
* @returns A map containing fresh frozen arrays.
|
|
59
|
+
*/
|
|
60
|
+
copyMap(map) {
|
|
61
|
+
const copy = new Map();
|
|
62
|
+
for (const [key, values] of map) {
|
|
63
|
+
copy.set(key, Object.freeze([...values]));
|
|
64
|
+
}
|
|
65
|
+
return copy;
|
|
66
|
+
}
|
|
67
|
+
#fields(registeredHandler) {
|
|
68
|
+
return Object.freeze({
|
|
69
|
+
entityHandlers: registeredHandler.entityHandlers,
|
|
70
|
+
entityType: registeredHandler.entityType,
|
|
71
|
+
entity: registeredHandler.entity,
|
|
72
|
+
handler: registeredHandler.handler,
|
|
73
|
+
registeredHandler,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
#cloneRegistered(registeredHandler) {
|
|
77
|
+
const handlers = new Map();
|
|
78
|
+
const schemas = new WeakMap();
|
|
79
|
+
const fields = new Map();
|
|
80
|
+
const entity = this.#cloneEntity(registeredHandler.entity, schemas, fields);
|
|
81
|
+
const handler = this.#cloneHandler(registeredHandler.handler, handlers, schemas);
|
|
82
|
+
const entityHandlers = this.#cloneEntityHandlers(registeredHandler.entityHandlers, handlers, schemas, entity);
|
|
83
|
+
return Object.freeze({
|
|
84
|
+
entityHandlers,
|
|
85
|
+
entityType: registeredHandler.entityType,
|
|
86
|
+
entity,
|
|
87
|
+
handler,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
#copyRegistered(registeredHandler) {
|
|
91
|
+
return Object.freeze({
|
|
92
|
+
entityHandlers: registeredHandler.entityHandlers,
|
|
93
|
+
entityType: registeredHandler.entityType,
|
|
94
|
+
entity: registeredHandler.entity,
|
|
95
|
+
handler: registeredHandler.handler,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
#cloneEntityHandlers(entityHandlers, clonedHandlers, clonedSchemas, entity) {
|
|
99
|
+
return Object.freeze({
|
|
100
|
+
entityType: entityHandlers.entityType,
|
|
101
|
+
entity,
|
|
102
|
+
handlers: this.#cloneHandlers(entityHandlers.handlers, clonedHandlers, clonedSchemas),
|
|
103
|
+
commandAssignments: this.#cloneHandlers(entityHandlers.commandAssignments, clonedHandlers, clonedSchemas),
|
|
104
|
+
commandReactions: this.#cloneHandlers(entityHandlers.commandReactions, clonedHandlers, clonedSchemas),
|
|
105
|
+
eventSubscriptions: this.#cloneHandlers(entityHandlers.eventSubscriptions, clonedHandlers, clonedSchemas),
|
|
106
|
+
stateSubscriptions: this.#cloneHandlers(entityHandlers.stateSubscriptions, clonedHandlers, clonedSchemas),
|
|
107
|
+
eventReactions: this.#cloneHandlers(entityHandlers.eventReactions, clonedHandlers, clonedSchemas),
|
|
108
|
+
eventApplications: this.#cloneHandlers(entityHandlers.eventApplications, clonedHandlers, clonedSchemas),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
#cloneHandlers(handlers, clonedHandlers, clonedSchemas) {
|
|
112
|
+
return Object.freeze(handlers.map((handler) => this.#cloneHandler(handler, clonedHandlers, clonedSchemas)));
|
|
113
|
+
}
|
|
114
|
+
#cloneHandler(handler, clonedHandlers, clonedSchemas) {
|
|
115
|
+
const existing = clonedHandlers.get(handler);
|
|
116
|
+
if (existing !== undefined) {
|
|
117
|
+
return existing;
|
|
118
|
+
}
|
|
119
|
+
const clone = Object.freeze({
|
|
120
|
+
...handler,
|
|
121
|
+
schema: this.#cloneSchema(handler.schema, clonedSchemas),
|
|
122
|
+
descriptor: this.#cloneSchema(handler.descriptor, clonedSchemas),
|
|
123
|
+
});
|
|
124
|
+
clonedHandlers.set(handler, clone);
|
|
125
|
+
HandlerMetadataValues.copyEmittedSchemas(handler, clone);
|
|
126
|
+
return clone;
|
|
127
|
+
}
|
|
128
|
+
#cloneEntity(entity, clonedSchemas, clonedFields) {
|
|
129
|
+
return Object.freeze({
|
|
130
|
+
...entity,
|
|
131
|
+
schema: this.#cloneSchema(entity.schema, clonedSchemas),
|
|
132
|
+
descriptor: this.#cloneSchema(entity.descriptor, clonedSchemas),
|
|
133
|
+
idField: this.#cloneField(entity.idField, clonedFields),
|
|
134
|
+
firstFieldRoutingHint: Object.freeze({
|
|
135
|
+
...entity.firstFieldRoutingHint,
|
|
136
|
+
field: this.#cloneField(entity.firstFieldRoutingHint.field, clonedFields),
|
|
137
|
+
}),
|
|
138
|
+
columns: Object.freeze(entity.columns.map((field) => this.#cloneField(field, clonedFields))),
|
|
139
|
+
setOnceFields: Object.freeze(entity.setOnceFields.map((field) => this.#cloneField(field, clonedFields))),
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
#cloneSchema(schema, clonedSchemas) {
|
|
143
|
+
const existing = clonedSchemas.get(schema);
|
|
144
|
+
if (existing !== undefined) {
|
|
145
|
+
return existing;
|
|
146
|
+
}
|
|
147
|
+
const clone = this.#cloneFrozen(schema);
|
|
148
|
+
clonedSchemas.set(schema, clone);
|
|
149
|
+
return clone;
|
|
150
|
+
}
|
|
151
|
+
#cloneField(field, clonedFields) {
|
|
152
|
+
const existing = clonedFields.get(field);
|
|
153
|
+
if (existing !== undefined) {
|
|
154
|
+
return existing;
|
|
155
|
+
}
|
|
156
|
+
const clone = Object.freeze({ ...field });
|
|
157
|
+
clonedFields.set(field, clone);
|
|
158
|
+
return clone;
|
|
159
|
+
}
|
|
160
|
+
#cloneFrozen(value) {
|
|
161
|
+
const clone = Object.create(Reflect.getPrototypeOf(value));
|
|
162
|
+
Object.defineProperties(clone, Object.getOwnPropertyDescriptors(value));
|
|
163
|
+
return Object.freeze(clone);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Creates frozen readiness metadata without sharing mutable caller-owned records.
|
|
168
|
+
*/
|
|
169
|
+
export const ReadinessMetadata = Object.freeze(new ReadinessMetadataOwner());
|
|
170
|
+
//# sourceMappingURL=registration-readiness-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-readiness-metadata.js","sourceRoot":"","sources":["../../src/handler/registration-readiness-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface RejectionSourceMatcher {
|
|
2
|
+
matches(sourceName: string): boolean;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Matches the two authored Proto filename forms reserved for domain rejections.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare const RejectionSources: Readonly<RejectionSourceMatcher>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=rejection-source.d.ts.map
|