@zmdb/app 1.0.0-beta.1
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 +674 -0
- package/README.md +27 -0
- package/dist/application.d.ts +45 -0
- package/dist/application.d.ts.map +1 -0
- package/dist/application.js +186 -0
- package/dist/application.js.map +1 -0
- package/dist/commands/index.d.ts +31 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +338 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/cqrs/index.d.ts +47 -0
- package/dist/cqrs/index.d.ts.map +1 -0
- package/dist/cqrs/index.js +76 -0
- package/dist/cqrs/index.js.map +1 -0
- package/dist/data/index.d.ts +12 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +25 -0
- package/dist/data/index.js.map +1 -0
- package/dist/di/index.d.ts +44 -0
- package/dist/di/index.d.ts.map +1 -0
- package/dist/di/index.js +136 -0
- package/dist/di/index.js.map +1 -0
- package/dist/events/index.d.ts +46 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +181 -0
- package/dist/events/index.js.map +1 -0
- package/dist/health/index.d.ts +35 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +14 -0
- package/dist/health/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle.d.ts +21 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +52 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/messaging/index.d.ts +176 -0
- package/dist/messaging/index.d.ts.map +1 -0
- package/dist/messaging/index.js +442 -0
- package/dist/messaging/index.js.map +1 -0
- package/dist/messaging/transport-kit.d.ts +22 -0
- package/dist/messaging/transport-kit.d.ts.map +1 -0
- package/dist/messaging/transport-kit.js +174 -0
- package/dist/messaging/transport-kit.js.map +1 -0
- package/dist/modules/index.d.ts +52 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +351 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/lifecycle-instances.d.ts +4 -0
- package/dist/modules/lifecycle-instances.d.ts.map +1 -0
- package/dist/modules/lifecycle-instances.js +19 -0
- package/dist/modules/lifecycle-instances.js.map +1 -0
- package/dist/modules/runtime.d.ts +18 -0
- package/dist/modules/runtime.d.ts.map +1 -0
- package/dist/modules/runtime.js +8 -0
- package/dist/modules/runtime.js.map +1 -0
- package/dist/observability/index.d.ts +27 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +145 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/propagation.d.ts +10 -0
- package/dist/observability/propagation.d.ts.map +1 -0
- package/dist/observability/propagation.js +96 -0
- package/dist/observability/propagation.js.map +1 -0
- package/dist/observability/types.d.ts +66 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +10 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/polyfill.d.ts +2 -0
- package/dist/polyfill.d.ts.map +1 -0
- package/dist/polyfill.js +21 -0
- package/dist/polyfill.js.map +1 -0
- package/dist/state/fixtures.d.ts +10 -0
- package/dist/state/fixtures.d.ts.map +1 -0
- package/dist/state/fixtures.js +14 -0
- package/dist/state/fixtures.js.map +1 -0
- package/dist/state/index.d.ts +26 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +37 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state-transitions.d.ts +57 -0
- package/dist/state-transitions.d.ts.map +1 -0
- package/dist/state-transitions.js +31 -0
- package/dist/state-transitions.js.map +1 -0
- package/package.json +99 -0
- package/src/application.ts +243 -0
- package/src/commands/index.ts +447 -0
- package/src/cqrs/index.ts +124 -0
- package/src/data/index.ts +33 -0
- package/src/di/index.ts +179 -0
- package/src/events/index.ts +248 -0
- package/src/health/index.ts +54 -0
- package/src/index.ts +68 -0
- package/src/lifecycle.ts +62 -0
- package/src/messaging/index.ts +668 -0
- package/src/messaging/transport-kit.ts +234 -0
- package/src/modules/index.ts +476 -0
- package/src/modules/lifecycle-instances.ts +23 -0
- package/src/modules/runtime.ts +26 -0
- package/src/observability/index.ts +204 -0
- package/src/observability/propagation.ts +107 -0
- package/src/observability/types.ts +68 -0
- package/src/polyfill.ts +24 -0
- package/src/state/fixtures.ts +20 -0
- package/src/state/index.ts +57 -0
- package/src/state-transitions.ts +150 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type Driver } from '@zmdb/orm';
|
|
2
|
+
/** The process is not wedged. Synchronous by construction. */
|
|
3
|
+
export interface LivenessCheck {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
run(): boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface CheckResult {
|
|
8
|
+
readonly ok: boolean;
|
|
9
|
+
readonly detail?: string;
|
|
10
|
+
}
|
|
11
|
+
/** The process can serve traffic. Dependencies receive an explicit deadline. */
|
|
12
|
+
export interface ReadinessCheck {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly timeoutMs: number;
|
|
15
|
+
readonly cacheMs?: number;
|
|
16
|
+
run(signal: AbortSignal): Promise<CheckResult>;
|
|
17
|
+
}
|
|
18
|
+
export interface HealthChecks {
|
|
19
|
+
readonly liveness?: readonly LivenessCheck[];
|
|
20
|
+
readonly readiness?: readonly ReadinessCheck[];
|
|
21
|
+
}
|
|
22
|
+
export interface DetailedCheck {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly ok: boolean;
|
|
25
|
+
readonly detail?: string;
|
|
26
|
+
readonly durationMs?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface DatabaseReadinessOptions {
|
|
29
|
+
readonly name?: string;
|
|
30
|
+
readonly timeoutMs: number;
|
|
31
|
+
readonly cacheMs?: number;
|
|
32
|
+
}
|
|
33
|
+
/** Build the protocol-neutral readiness check for one required database. */
|
|
34
|
+
export declare function databaseReadinessCheck(driver: Pick<Driver, 'execute'>, options: DatabaseReadinessOptions): ReadinessCheck;
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/health/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,IAAI,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,OAAO,EAAE,wBAAwB,GAChC,cAAc,CAUhB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {} from '@zmdb/orm';
|
|
2
|
+
/** Build the protocol-neutral readiness check for one required database. */
|
|
3
|
+
export function databaseReadinessCheck(driver, options) {
|
|
4
|
+
return {
|
|
5
|
+
name: options.name ?? 'database',
|
|
6
|
+
timeoutMs: options.timeoutMs,
|
|
7
|
+
...(options.cacheMs === undefined ? {} : { cacheMs: options.cacheMs }),
|
|
8
|
+
async run(signal) {
|
|
9
|
+
await driver.execute({ text: 'SELECT 1', parameters: [] }, { signal });
|
|
10
|
+
return { ok: true };
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/health/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,WAAW,CAAC;AAuCxC,4EAA4E;AAC5E,MAAM,UAAU,sBAAsB,CACpC,MAA+B,EAC/B,OAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,UAAU;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACtE,KAAK,CAAC,GAAG,CAAC,MAAM;YACd,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import './polyfill.js';
|
|
2
|
+
export type ApplicationMetadata = DecoratorMetadataObject;
|
|
3
|
+
/** Read one Stage-3 metadata record, or the shared frozen empty record. */
|
|
4
|
+
export declare function metadataOf(target: object): ApplicationMetadata;
|
|
5
|
+
export { Container, createToken, Inject, injectionsOf, UnresolvedTokenError, type Constructor, type Scope, type Token, } from './di/index.js';
|
|
6
|
+
export { compileModule, lazy, Module, moduleDefOf, type CompiledModule, type LazyImport, type LazyModuleHandle, type LazyStatus, type ModuleClass, type ModuleDef, type ProviderDef, } from './modules/index.js';
|
|
7
|
+
export { createApplication, type Application, type ApplicationExtension, type ApplicationExtensionContext, type ApplicationOptions, } from './application.js';
|
|
8
|
+
export type { OnApplicationBootstrap, OnModuleInit, OnShutdown } from './lifecycle.js';
|
|
9
|
+
export { defineStateTransitions, createStateUpdatePayload, defineEntityStateMachine } from './state-transitions.js';
|
|
10
|
+
export type { StateTransitions, AllowedTargetStates, StateUpdateDTO, EntityStateMachineOptions, EntityStateMachine, } from './state-transitions.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,eAAe,CAAC;AAEvB,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAc1D,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAE9D;AAED,OAAO,EACL,SAAS,EACT,WAAW,EACX,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,KAAK,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,IAAI,EACJ,MAAM,EACN,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACpH,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// @zmdb/app — the protocol-neutral application kernel.
|
|
2
|
+
//
|
|
3
|
+
// This entry owns the one Stage-3 metadata installation and reader, the
|
|
4
|
+
// application graph, dependency injection and lifecycle. Concern-heavy
|
|
5
|
+
// capabilities such as command parsing, events and observability remain behind
|
|
6
|
+
// their explicit subpaths.
|
|
7
|
+
import './polyfill.js';
|
|
8
|
+
const EMPTY = Object.freeze(Object.create(null));
|
|
9
|
+
function hasMetadata(value) {
|
|
10
|
+
const carrier = value;
|
|
11
|
+
const record = carrier[Symbol.metadata];
|
|
12
|
+
return record !== undefined && record !== null;
|
|
13
|
+
}
|
|
14
|
+
/** Read one Stage-3 metadata record, or the shared frozen empty record. */
|
|
15
|
+
export function metadataOf(target) {
|
|
16
|
+
return hasMetadata(target) ? target[Symbol.metadata] : EMPTY;
|
|
17
|
+
}
|
|
18
|
+
export { Container, createToken, Inject, injectionsOf, UnresolvedTokenError, } from './di/index.js';
|
|
19
|
+
export { compileModule, lazy, Module, moduleDefOf, } from './modules/index.js';
|
|
20
|
+
export { createApplication, } from './application.js';
|
|
21
|
+
export { defineStateTransitions, createStateUpdatePayload, defineEntityStateMachine } from './state-transitions.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,+EAA+E;AAC/E,2BAA2B;AAE3B,OAAO,eAAe,CAAC;AAQvB,MAAM,KAAK,GAAwB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAEtE,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,OAAO,GAAgB,KAAK,CAAC;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC;AACjD,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC;AAED,OAAO,EACL,SAAS,EACT,WAAW,EACX,MAAM,EACN,YAAY,EACZ,oBAAoB,GAIrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,IAAI,EACJ,MAAM,EACN,WAAW,GAQZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,GAKlB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Called after the eager application instances are constructed. */
|
|
2
|
+
export interface OnModuleInit {
|
|
3
|
+
onModuleInit(): void | Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
/** Called after all modules are initialized. */
|
|
6
|
+
export interface OnApplicationBootstrap {
|
|
7
|
+
onApplicationBootstrap(): void | Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/** Called on graceful shutdown (via `await using` / dispose). */
|
|
10
|
+
export interface OnShutdown {
|
|
11
|
+
onShutdown(): void | Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* `onModuleInit` on every implementer, then `onApplicationBootstrap` on every
|
|
15
|
+
* implementer — two full passes, so a bootstrap hook can rely on every module
|
|
16
|
+
* having been initialized.
|
|
17
|
+
*/
|
|
18
|
+
export declare function runInit(instances: readonly object[]): Promise<void>;
|
|
19
|
+
/** `onShutdown` in reverse construction order, so a dependent tears down before what it depends on. */
|
|
20
|
+
export declare function runShutdown(instances: readonly (object | undefined)[]): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAQA,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AACD,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACrC,sBAAsB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AACD,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,UAAU,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAYD;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzE;AAED,uGAAuG;AACvG,wBAAsB,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3F"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// @zmdb/app — lifecycle hooks, shared by the app bootstrap and the test harness.
|
|
2
|
+
//
|
|
3
|
+
// Every protocol adapter and test harness delegates to this one ledger. Hook
|
|
4
|
+
// detection and ordering therefore cannot drift between HTTP, commands, jobs
|
|
5
|
+
// or a standalone application.
|
|
6
|
+
//
|
|
7
|
+
// Detection is structural `in`-narrowing on the instance: no reflection, no cast.
|
|
8
|
+
function hasModuleInit(x) {
|
|
9
|
+
return 'onModuleInit' in x && typeof x.onModuleInit === 'function';
|
|
10
|
+
}
|
|
11
|
+
function hasBootstrap(x) {
|
|
12
|
+
return 'onApplicationBootstrap' in x && typeof x.onApplicationBootstrap === 'function';
|
|
13
|
+
}
|
|
14
|
+
function hasShutdown(x) {
|
|
15
|
+
return 'onShutdown' in x && typeof x.onShutdown === 'function';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* `onModuleInit` on every implementer, then `onApplicationBootstrap` on every
|
|
19
|
+
* implementer — two full passes, so a bootstrap hook can rely on every module
|
|
20
|
+
* having been initialized.
|
|
21
|
+
*/
|
|
22
|
+
export async function runInit(instances) {
|
|
23
|
+
for (const instance of instances) {
|
|
24
|
+
if (hasModuleInit(instance))
|
|
25
|
+
await instance.onModuleInit();
|
|
26
|
+
}
|
|
27
|
+
for (const instance of instances) {
|
|
28
|
+
if (hasBootstrap(instance))
|
|
29
|
+
await instance.onApplicationBootstrap();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** `onShutdown` in reverse construction order, so a dependent tears down before what it depends on. */
|
|
33
|
+
export async function runShutdown(instances) {
|
|
34
|
+
const errors = [];
|
|
35
|
+
for (let i = instances.length - 1; i >= 0; i -= 1) {
|
|
36
|
+
const instance = instances[i];
|
|
37
|
+
if (instance === undefined || !hasShutdown(instance))
|
|
38
|
+
continue;
|
|
39
|
+
try {
|
|
40
|
+
await instance.onShutdown();
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
errors.push(error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (errors.length === 1)
|
|
47
|
+
throw errors[0];
|
|
48
|
+
if (errors.length > 1) {
|
|
49
|
+
throw new AggregateError(errors, '@zmdb/app: application shutdown hooks failed');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,+BAA+B;AAC/B,EAAE;AACF,kFAAkF;AAelF,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,cAAc,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC;AACrE,CAAC;AACD,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,wBAAwB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,sBAAsB,KAAK,UAAU,CAAC;AACzF,CAAC;AACD,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,YAAY,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,SAA4B;IACxD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,aAAa,CAAC,QAAQ,CAAC;YAAE,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC7D,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,YAAY,CAAC,QAAQ,CAAC;YAAE,MAAM,QAAQ,CAAC,sBAAsB,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAA0C;IAC1E,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { type ApplicationExtension } from '../application.js';
|
|
2
|
+
import type { Observability, Span, TraceCarrier } from '../observability/index.js';
|
|
3
|
+
export { abortError, decodeDelivery, decodeReply, encodeDelivery, encodeReply, InFlight, reportTransportError, withinGrace, } from './transport-kit.js';
|
|
4
|
+
export type { DeliveryMetadata, TransportErrorSink } from './transport-kit.js';
|
|
5
|
+
/** A parsed delivery constructed by a transport strategy. */
|
|
6
|
+
export interface RawMessage extends TraceCarrier {
|
|
7
|
+
readonly pattern: string;
|
|
8
|
+
readonly payload: unknown;
|
|
9
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
10
|
+
readonly correlationId: string | undefined;
|
|
11
|
+
readonly replyTo: string | undefined;
|
|
12
|
+
readonly deliveryAttempt: number;
|
|
13
|
+
/** Set when transport framing failed; `payload` then carries inspectable raw input. */
|
|
14
|
+
readonly parseError?: unknown;
|
|
15
|
+
}
|
|
16
|
+
/** The broker action applied after dispatch. */
|
|
17
|
+
export type Settlement = {
|
|
18
|
+
readonly kind: 'ack';
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: 'retry';
|
|
21
|
+
readonly afterMs: number;
|
|
22
|
+
} | {
|
|
23
|
+
readonly kind: 'dead';
|
|
24
|
+
readonly reason: string;
|
|
25
|
+
};
|
|
26
|
+
/** A correlated reply a strategy publishes to `RawMessage.replyTo`. */
|
|
27
|
+
export type MessageReply = {
|
|
28
|
+
readonly kind: 'result';
|
|
29
|
+
readonly correlationId: string;
|
|
30
|
+
readonly payload: unknown;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: 'error';
|
|
33
|
+
readonly correlationId: string;
|
|
34
|
+
readonly message: string;
|
|
35
|
+
};
|
|
36
|
+
/** Handler output and broker settlement are separate facts. */
|
|
37
|
+
export interface DispatchOutcome {
|
|
38
|
+
readonly settlement: Settlement;
|
|
39
|
+
readonly reply?: MessageReply;
|
|
40
|
+
}
|
|
41
|
+
/** What a strategy can truthfully do with a settlement. */
|
|
42
|
+
export interface TransportCapabilities {
|
|
43
|
+
readonly redelivery: boolean;
|
|
44
|
+
readonly deadLetter: boolean;
|
|
45
|
+
readonly requestResponse: boolean;
|
|
46
|
+
}
|
|
47
|
+
/** One outbound request, including framework-owned correlation and cancellation. */
|
|
48
|
+
export interface TransportRequest extends TraceCarrier {
|
|
49
|
+
readonly pattern: string;
|
|
50
|
+
readonly payload: unknown;
|
|
51
|
+
readonly correlationId: string;
|
|
52
|
+
readonly timeoutMs: number;
|
|
53
|
+
readonly signal: AbortSignal;
|
|
54
|
+
}
|
|
55
|
+
/** Public boundary implemented by broker adapters and custom transports. */
|
|
56
|
+
export interface TransportStrategy {
|
|
57
|
+
readonly name: string;
|
|
58
|
+
readonly capabilities: TransportCapabilities;
|
|
59
|
+
/** Open intake and hand each decoded delivery to the application dispatcher. */
|
|
60
|
+
listen(dispatch: (message: RawMessage) => Promise<DispatchOutcome>): Promise<void>;
|
|
61
|
+
send(request: TransportRequest): Promise<MessageReply>;
|
|
62
|
+
emit(pattern: string, payload: unknown, carrier?: TraceCarrier): Promise<void>;
|
|
63
|
+
/** Stop intake, drain in-flight dispatches under `graceMs`, then close connections. */
|
|
64
|
+
close(graceMs: number): Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
/** The structural context portion HTTP and message authorisation can share. */
|
|
67
|
+
export type WithHeaders = {
|
|
68
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
69
|
+
};
|
|
70
|
+
/** Validated context supplied to one message handler. */
|
|
71
|
+
export interface MessageContext<T> {
|
|
72
|
+
readonly kind: 'message';
|
|
73
|
+
readonly pattern: string;
|
|
74
|
+
readonly payload: T;
|
|
75
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
76
|
+
readonly correlationId: string;
|
|
77
|
+
readonly deliveryAttempt: number;
|
|
78
|
+
readonly transport: string;
|
|
79
|
+
readonly span?: Span;
|
|
80
|
+
}
|
|
81
|
+
/** Public, validator-free description of one decorated handler. */
|
|
82
|
+
export interface ResolvedMessagePattern {
|
|
83
|
+
readonly pattern: string;
|
|
84
|
+
readonly handlerName: string;
|
|
85
|
+
readonly semantics: 'request' | 'event';
|
|
86
|
+
}
|
|
87
|
+
/** Observation and retry policy for one app-owned dispatcher. */
|
|
88
|
+
export interface DispatcherOptions {
|
|
89
|
+
readonly onUnhandled: (message: RawMessage) => void;
|
|
90
|
+
readonly onInvalidPayload: (message: RawMessage, error: unknown) => void;
|
|
91
|
+
readonly onHandlerError: (message: RawMessage, error: unknown) => void;
|
|
92
|
+
readonly onUndeliverable?: (message: RawMessage, settlement: Settlement) => void;
|
|
93
|
+
readonly maxAttempts?: number;
|
|
94
|
+
readonly retryAfterMs?: (attempt: number) => number;
|
|
95
|
+
readonly observability?: Observability;
|
|
96
|
+
}
|
|
97
|
+
/** Startup-built exact-pattern dispatcher. */
|
|
98
|
+
export interface MessageDispatcher {
|
|
99
|
+
dispatch(message: RawMessage, transport: string): Promise<DispatchOutcome>;
|
|
100
|
+
readonly patterns: readonly string[];
|
|
101
|
+
}
|
|
102
|
+
/** Pattern map for a request/response client. Declare concrete maps as type aliases. */
|
|
103
|
+
export interface ClientPatterns {
|
|
104
|
+
readonly [pattern: string]: {
|
|
105
|
+
readonly request: unknown;
|
|
106
|
+
readonly response: unknown;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** One callable property per request pattern. */
|
|
110
|
+
export type MessageClient<P extends ClientPatterns> = {
|
|
111
|
+
readonly [K in keyof P]: (payload: P[K]['request'], span?: Span) => Promise<P[K]['response']>;
|
|
112
|
+
};
|
|
113
|
+
/** Required timeout and total response-validation map. */
|
|
114
|
+
export interface MessageClientOptions<P extends ClientPatterns> {
|
|
115
|
+
readonly timeoutMs: number;
|
|
116
|
+
readonly validate: {
|
|
117
|
+
readonly [K in keyof P]: (raw: unknown) => P[K]['response'];
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** Pattern map for one-way events. */
|
|
121
|
+
export interface EventPatterns {
|
|
122
|
+
readonly [pattern: string]: unknown;
|
|
123
|
+
}
|
|
124
|
+
/** One callable property per event pattern. */
|
|
125
|
+
export type EventPublisher<E extends EventPatterns> = {
|
|
126
|
+
readonly [K in keyof E]: (payload: E[K], span?: Span) => Promise<void>;
|
|
127
|
+
};
|
|
128
|
+
/** A request was made against a strategy without request/reply support. */
|
|
129
|
+
export declare class TransportUnsupportedError extends Error {
|
|
130
|
+
readonly transport: string;
|
|
131
|
+
readonly operation: 'send';
|
|
132
|
+
constructor(transport: string);
|
|
133
|
+
}
|
|
134
|
+
/** A request did not settle before its required deadline. */
|
|
135
|
+
export declare class MessageTimeoutError extends Error {
|
|
136
|
+
readonly pattern: string;
|
|
137
|
+
readonly timeoutMs: number;
|
|
138
|
+
readonly correlationId: string;
|
|
139
|
+
constructor(pattern: string, timeoutMs: number, correlationId: string);
|
|
140
|
+
}
|
|
141
|
+
/** A remote handler failed without exposing its private error detail. */
|
|
142
|
+
export declare class MessageRemoteError extends Error {
|
|
143
|
+
readonly pattern: string;
|
|
144
|
+
readonly correlationId: string;
|
|
145
|
+
constructor(pattern: string, correlationId: string, message: string);
|
|
146
|
+
}
|
|
147
|
+
/** A transport returned a reply for a different outstanding request. */
|
|
148
|
+
export declare class MessageCorrelationError extends Error {
|
|
149
|
+
readonly pattern: string;
|
|
150
|
+
readonly expected: string;
|
|
151
|
+
readonly received: string;
|
|
152
|
+
constructor(pattern: string, expected: string, received: string);
|
|
153
|
+
}
|
|
154
|
+
/** Declare a request/reply handler with its consume-boundary validator. */
|
|
155
|
+
export declare function MessagePattern<T, R>(pattern: string, validate: (raw: unknown) => T): (target: (ctx: MessageContext<T>) => R | Promise<R>, context: ClassMethodDecoratorContext) => void;
|
|
156
|
+
/** Declare a one-way event handler. Returning a value is a compile error. */
|
|
157
|
+
export declare function EventPattern<T>(pattern: string, validate: (raw: unknown) => T): (target: (ctx: MessageContext<T>) => void | Promise<void>, context: ClassMethodDecoratorContext) => void;
|
|
158
|
+
/** Read declarations from one class without constructing or discovering it. */
|
|
159
|
+
export declare function getMessagePatterns(cls: abstract new (...args: never[]) => unknown): readonly ResolvedMessagePattern[];
|
|
160
|
+
/** Build one exact-pattern map for the supplied application-owned consumers. */
|
|
161
|
+
export declare function createMessageDispatcher(consumers: readonly object[], options: DispatcherOptions): MessageDispatcher;
|
|
162
|
+
/**
|
|
163
|
+
* Attach transport strategies to the protocol-neutral application lifecycle.
|
|
164
|
+
*
|
|
165
|
+
* The strategy snapshot and exact-pattern dispatcher are application-owned;
|
|
166
|
+
* concrete broker clients remain outside this package.
|
|
167
|
+
*/
|
|
168
|
+
export declare function transportExtension(options: {
|
|
169
|
+
readonly transports: readonly TransportStrategy[];
|
|
170
|
+
readonly dispatcher: DispatcherOptions;
|
|
171
|
+
}): ApplicationExtension;
|
|
172
|
+
/** Build a typed request client from a total response-validator map. */
|
|
173
|
+
export declare function createMessageClient<P extends ClientPatterns>(transport: TransportStrategy, options: MessageClientOptions<P>): MessageClient<P>;
|
|
174
|
+
/** Build a typed one-way publisher. Methods are cached on first property access. */
|
|
175
|
+
export declare function createEventPublisher<E extends EventPatterns>(transport: TransportStrategy): EventPublisher<E>;
|
|
176
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"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"}
|