@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.
Files changed (108) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +27 -0
  3. package/dist/application.d.ts +45 -0
  4. package/dist/application.d.ts.map +1 -0
  5. package/dist/application.js +186 -0
  6. package/dist/application.js.map +1 -0
  7. package/dist/commands/index.d.ts +31 -0
  8. package/dist/commands/index.d.ts.map +1 -0
  9. package/dist/commands/index.js +338 -0
  10. package/dist/commands/index.js.map +1 -0
  11. package/dist/cqrs/index.d.ts +47 -0
  12. package/dist/cqrs/index.d.ts.map +1 -0
  13. package/dist/cqrs/index.js +76 -0
  14. package/dist/cqrs/index.js.map +1 -0
  15. package/dist/data/index.d.ts +12 -0
  16. package/dist/data/index.d.ts.map +1 -0
  17. package/dist/data/index.js +25 -0
  18. package/dist/data/index.js.map +1 -0
  19. package/dist/di/index.d.ts +44 -0
  20. package/dist/di/index.d.ts.map +1 -0
  21. package/dist/di/index.js +136 -0
  22. package/dist/di/index.js.map +1 -0
  23. package/dist/events/index.d.ts +46 -0
  24. package/dist/events/index.d.ts.map +1 -0
  25. package/dist/events/index.js +181 -0
  26. package/dist/events/index.js.map +1 -0
  27. package/dist/health/index.d.ts +35 -0
  28. package/dist/health/index.d.ts.map +1 -0
  29. package/dist/health/index.js +14 -0
  30. package/dist/health/index.js.map +1 -0
  31. package/dist/index.d.ts +11 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +22 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/lifecycle.d.ts +21 -0
  36. package/dist/lifecycle.d.ts.map +1 -0
  37. package/dist/lifecycle.js +52 -0
  38. package/dist/lifecycle.js.map +1 -0
  39. package/dist/messaging/index.d.ts +176 -0
  40. package/dist/messaging/index.d.ts.map +1 -0
  41. package/dist/messaging/index.js +442 -0
  42. package/dist/messaging/index.js.map +1 -0
  43. package/dist/messaging/transport-kit.d.ts +22 -0
  44. package/dist/messaging/transport-kit.d.ts.map +1 -0
  45. package/dist/messaging/transport-kit.js +174 -0
  46. package/dist/messaging/transport-kit.js.map +1 -0
  47. package/dist/modules/index.d.ts +52 -0
  48. package/dist/modules/index.d.ts.map +1 -0
  49. package/dist/modules/index.js +351 -0
  50. package/dist/modules/index.js.map +1 -0
  51. package/dist/modules/lifecycle-instances.d.ts +4 -0
  52. package/dist/modules/lifecycle-instances.d.ts.map +1 -0
  53. package/dist/modules/lifecycle-instances.js +19 -0
  54. package/dist/modules/lifecycle-instances.js.map +1 -0
  55. package/dist/modules/runtime.d.ts +18 -0
  56. package/dist/modules/runtime.d.ts.map +1 -0
  57. package/dist/modules/runtime.js +8 -0
  58. package/dist/modules/runtime.js.map +1 -0
  59. package/dist/observability/index.d.ts +27 -0
  60. package/dist/observability/index.d.ts.map +1 -0
  61. package/dist/observability/index.js +145 -0
  62. package/dist/observability/index.js.map +1 -0
  63. package/dist/observability/propagation.d.ts +10 -0
  64. package/dist/observability/propagation.d.ts.map +1 -0
  65. package/dist/observability/propagation.js +96 -0
  66. package/dist/observability/propagation.js.map +1 -0
  67. package/dist/observability/types.d.ts +66 -0
  68. package/dist/observability/types.d.ts.map +1 -0
  69. package/dist/observability/types.js +10 -0
  70. package/dist/observability/types.js.map +1 -0
  71. package/dist/polyfill.d.ts +2 -0
  72. package/dist/polyfill.d.ts.map +1 -0
  73. package/dist/polyfill.js +21 -0
  74. package/dist/polyfill.js.map +1 -0
  75. package/dist/state/fixtures.d.ts +10 -0
  76. package/dist/state/fixtures.d.ts.map +1 -0
  77. package/dist/state/fixtures.js +14 -0
  78. package/dist/state/fixtures.js.map +1 -0
  79. package/dist/state/index.d.ts +26 -0
  80. package/dist/state/index.d.ts.map +1 -0
  81. package/dist/state/index.js +37 -0
  82. package/dist/state/index.js.map +1 -0
  83. package/dist/state-transitions.d.ts +57 -0
  84. package/dist/state-transitions.d.ts.map +1 -0
  85. package/dist/state-transitions.js +31 -0
  86. package/dist/state-transitions.js.map +1 -0
  87. package/package.json +99 -0
  88. package/src/application.ts +243 -0
  89. package/src/commands/index.ts +447 -0
  90. package/src/cqrs/index.ts +124 -0
  91. package/src/data/index.ts +33 -0
  92. package/src/di/index.ts +179 -0
  93. package/src/events/index.ts +248 -0
  94. package/src/health/index.ts +54 -0
  95. package/src/index.ts +68 -0
  96. package/src/lifecycle.ts +62 -0
  97. package/src/messaging/index.ts +668 -0
  98. package/src/messaging/transport-kit.ts +234 -0
  99. package/src/modules/index.ts +476 -0
  100. package/src/modules/lifecycle-instances.ts +23 -0
  101. package/src/modules/runtime.ts +26 -0
  102. package/src/observability/index.ts +204 -0
  103. package/src/observability/propagation.ts +107 -0
  104. package/src/observability/types.ts +68 -0
  105. package/src/polyfill.ts +24 -0
  106. package/src/state/fixtures.ts +20 -0
  107. package/src/state/index.ts +57 -0
  108. package/src/state-transitions.ts +150 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-kit.js","sourceRoot":"","sources":["../../src/messaging/transport-kit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import '../polyfill.js';
2
+ import { Container, type Constructor, type Scope, type Token } from '../di/index.js';
3
+ /** A provider binds a token to a value or a factory, with an optional scope. */
4
+ export type ProviderDef<T = unknown> = {
5
+ readonly token: Token<T>;
6
+ readonly useValue: T;
7
+ } | {
8
+ readonly token: Token<T>;
9
+ readonly useFactory: (container: Container) => T;
10
+ readonly scope?: Scope;
11
+ };
12
+ /** A module class (nominal — carries its definition in Symbol.metadata). */
13
+ export type ModuleClass = abstract new (...args: never[]) => unknown;
14
+ /** An inert declaration that defers one imported module's instantiation. */
15
+ export interface LazyImport {
16
+ readonly kind: 'lazy';
17
+ readonly module: ModuleClass;
18
+ }
19
+ /** The `@Module` definition. */
20
+ export interface ModuleDef {
21
+ readonly controllers?: readonly Constructor<object>[];
22
+ readonly commands?: readonly Constructor<object>[];
23
+ readonly providers?: readonly ProviderDef[];
24
+ readonly imports?: readonly (ModuleClass | LazyImport)[];
25
+ readonly exports?: readonly Token<unknown>[];
26
+ }
27
+ export type LazyStatus = 'unloaded' | 'loading' | 'loaded' | 'failed';
28
+ export interface LazyModuleHandle {
29
+ readonly name: string;
30
+ readonly status: LazyStatus;
31
+ load(): Promise<void>;
32
+ }
33
+ /** The result of compiling a module graph. */
34
+ export interface CompiledModule {
35
+ readonly container: Container;
36
+ readonly controllers: readonly object[];
37
+ readonly commands: readonly object[];
38
+ readonly lazy: readonly LazyModuleHandle[];
39
+ }
40
+ /** Stage-3 class decorator: record a module definition. */
41
+ export declare function Module(def: ModuleDef): <T extends ModuleClass>(_target: T, context: ClassDecoratorContext<T>) => void;
42
+ /** Declare an import whose instances are constructed on first use. */
43
+ export declare function lazy(module: ModuleClass): LazyImport;
44
+ /** Read the module declaration written by `@Module`. */
45
+ export declare function moduleDefOf(moduleClass: ModuleClass): ModuleDef | undefined;
46
+ /**
47
+ * Validate a module graph, construct its eager modules, and retain per-app
48
+ * handles for lazy subtrees. Overrides are registered before construction and
49
+ * remain authoritative when a lazy subtree is loaded later.
50
+ */
51
+ export declare function compileModule(rootModule: ModuleClass, overrides?: readonly ProviderDef[]): CompiledModule;
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAIA,OAAO,gBAAgB,CAAC;AACxB,OAAO,EACL,SAAS,EAGT,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,KAAK,EACX,MAAM,gBAAgB,CAAC;AAKxB,gFAAgF;AAChF,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAC/B;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAE3G,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAErE,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,gCAAgC;AAChC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,CAAC;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9C;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC5C;AAyBD,2DAA2D;AAC3D,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,IAClB,CAAC,SAAS,WAAW,WAAW,CAAC,WAAW,qBAAqB,CAAC,CAAC,CAAC,KAAG,IAAI,CAG7F;AAED,sEAAsE;AACtE,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAEpD;AAED,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAM3E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,GAAE,SAAS,WAAW,EAAO,GAAG,cAAc,CA6L7G"}
@@ -0,0 +1,351 @@
1
+ // @zmdb/app — modules & providers (epic #282, spec ./SPEC.md). @Module records a
2
+ // module graph in context.metadata; compileModule validates its declarations,
3
+ // constructs eager modules, and retains per-app handles for lazy subtrees.
4
+ import '../polyfill.js';
5
+ import { Container, injectionsOf, UnresolvedTokenError, } from '../di/index.js';
6
+ import { runInit } from '../lifecycle.js';
7
+ import { createLifecycleRecorder, lifecycleInstances } from './lifecycle-instances.js';
8
+ import { rememberRuntime } from './runtime.js';
9
+ const MODULE = Symbol('zmdb.app.module');
10
+ const compilePlans = new WeakMap();
11
+ // boundary: our @Module decorator is the only writer of the MODULE slot, so
12
+ // viewing the record through ModuleMetadata is sound (ARCHITECTURE.md §2.1).
13
+ function moduleView(metadata) {
14
+ return metadata;
15
+ }
16
+ /** Stage-3 class decorator: record a module definition. */
17
+ export function Module(def) {
18
+ return function (_target, context) {
19
+ moduleView(context.metadata)[MODULE] = def;
20
+ };
21
+ }
22
+ /** Declare an import whose instances are constructed on first use. */
23
+ export function lazy(module) {
24
+ return { kind: 'lazy', module };
25
+ }
26
+ /** Read the module declaration written by `@Module`. */
27
+ export function moduleDefOf(moduleClass) {
28
+ const metadata = moduleClass[Symbol.metadata];
29
+ if (metadata === undefined || metadata === null) {
30
+ return undefined;
31
+ }
32
+ return moduleView(metadata)[MODULE];
33
+ }
34
+ /**
35
+ * Validate a module graph, construct its eager modules, and retain per-app
36
+ * handles for lazy subtrees. Overrides are registered before construction and
37
+ * remain authoritative when a lazy subtree is loaded later.
38
+ */
39
+ export function compileModule(rootModule, overrides = []) {
40
+ const plan = compilePlans.get(rootModule) ?? buildCompilePlan(rootModule);
41
+ validateInjections(plan, overrides);
42
+ const container = new Container();
43
+ const controllers = [];
44
+ const commands = [];
45
+ const recordInstance = createLifecycleRecorder(container);
46
+ for (const override of overrides) {
47
+ registerProvider(container, override, recordInstance);
48
+ }
49
+ // Preserve the original eager path: imports are in post-order, and each
50
+ // module registers its providers immediately before building its controllers.
51
+ if (plan.lazyRoots.length === 0) {
52
+ for (const moduleClass of plan.moduleOrder) {
53
+ instantiateEagerModule(moduleClass, plan.definitions, container, controllers, commands, overrides, recordInstance);
54
+ }
55
+ return { container, controllers, commands, lazy: [] };
56
+ }
57
+ const controllerInstances = new Map();
58
+ const instantiated = new Set();
59
+ const pendingLoads = new Set();
60
+ let shuttingDown = false;
61
+ const instantiateModules = (order) => {
62
+ const firstInstance = lifecycleInstances(container).length;
63
+ for (const moduleClass of order) {
64
+ if (instantiated.has(moduleClass)) {
65
+ continue;
66
+ }
67
+ instantiated.add(moduleClass);
68
+ const def = plan.definitions.get(moduleClass);
69
+ for (const provider of def?.providers ?? []) {
70
+ if (!isOverridden(overrides, provider)) {
71
+ registerProvider(container, provider, recordInstance);
72
+ }
73
+ }
74
+ const instances = new Map();
75
+ controllerInstances.set(moduleClass, instances);
76
+ for (const Controller of def?.controllers ?? []) {
77
+ const instance = container.build(Controller);
78
+ recordInstance(instance);
79
+ instances.set(Controller, instance);
80
+ controllers.push(instance);
81
+ }
82
+ for (const Command of def?.commands ?? []) {
83
+ const instance = container.build(Command);
84
+ recordInstance(instance);
85
+ commands.push(instance);
86
+ }
87
+ }
88
+ return lifecycleInstances(container).slice(firstInstance);
89
+ };
90
+ const eagerOrder = plan.moduleOrder.filter(module => plan.eagerModules.has(module));
91
+ instantiateModules(eagerOrder);
92
+ const lazyHandles = [];
93
+ const handleByModule = new Map();
94
+ const createLazyHandle = (name, wire) => {
95
+ let status = 'unloaded';
96
+ let inFlight;
97
+ let failure;
98
+ return {
99
+ name,
100
+ get status() {
101
+ return status;
102
+ },
103
+ load() {
104
+ if (status === 'loaded') {
105
+ return Promise.resolve();
106
+ }
107
+ if (status === 'failed') {
108
+ return Promise.reject(failure);
109
+ }
110
+ if (shuttingDown) {
111
+ return Promise.reject(new Error('@zmdb/app: application is shutting down'));
112
+ }
113
+ if (inFlight !== undefined) {
114
+ return inFlight;
115
+ }
116
+ status = 'loading';
117
+ let instances;
118
+ try {
119
+ instances = wire();
120
+ }
121
+ catch (error) {
122
+ failure = error;
123
+ status = 'failed';
124
+ return Promise.reject(error);
125
+ }
126
+ const load = runInit(instances).then(() => {
127
+ status = 'loaded';
128
+ }, error => {
129
+ failure = error;
130
+ status = 'failed';
131
+ throw error;
132
+ });
133
+ inFlight = load;
134
+ pendingLoads.add(load);
135
+ void load.then(() => {
136
+ inFlight = undefined;
137
+ pendingLoads.delete(load);
138
+ }, () => {
139
+ inFlight = undefined;
140
+ pendingLoads.delete(load);
141
+ });
142
+ return load;
143
+ },
144
+ };
145
+ };
146
+ for (const root of plan.lazyRoots) {
147
+ const loadOrder = plan.lazyOrders.get(root) ?? [];
148
+ const handle = createLazyHandle(root.name, () => instantiateModules(loadOrder));
149
+ lazyHandles.push(handle);
150
+ for (const moduleClass of loadOrder) {
151
+ if (!handleByModule.has(moduleClass)) {
152
+ handleByModule.set(moduleClass, handle);
153
+ }
154
+ }
155
+ }
156
+ const controllerBindings = [];
157
+ for (const moduleClass of plan.moduleOrder) {
158
+ const def = plan.definitions.get(moduleClass);
159
+ if (def === undefined) {
160
+ continue;
161
+ }
162
+ if (plan.eagerModules.has(moduleClass)) {
163
+ const instances = controllerInstances.get(moduleClass);
164
+ for (const Controller of def.controllers ?? []) {
165
+ const instance = instances?.get(Controller);
166
+ if (instance !== undefined) {
167
+ controllerBindings.push({ kind: 'eager', controller: instance });
168
+ }
169
+ }
170
+ continue;
171
+ }
172
+ const handle = handleByModule.get(moduleClass);
173
+ if (handle === undefined) {
174
+ continue;
175
+ }
176
+ for (const Controller of def.controllers ?? []) {
177
+ controllerBindings.push({
178
+ kind: 'deferred',
179
+ controller: Controller,
180
+ instance: async () => {
181
+ await handle.load();
182
+ const instance = controllerInstances.get(moduleClass)?.get(Controller);
183
+ if (instance === undefined) {
184
+ throw new Error(`@zmdb/app: lazy controller ${Controller.name} was not constructed`);
185
+ }
186
+ return instance;
187
+ },
188
+ });
189
+ }
190
+ }
191
+ const compiled = { container, controllers, commands, lazy: lazyHandles };
192
+ rememberRuntime(compiled, {
193
+ controllers: controllerBindings,
194
+ beginShutdown: () => {
195
+ shuttingDown = true;
196
+ },
197
+ waitForLoads: async () => {
198
+ await Promise.allSettled(pendingLoads);
199
+ },
200
+ });
201
+ return compiled;
202
+ }
203
+ function buildCompilePlan(rootModule) {
204
+ const definitions = new Map();
205
+ const moduleOrder = [];
206
+ const visiting = new Set();
207
+ const visited = new Set();
208
+ const eagerModules = new Set();
209
+ const providerModules = new Map();
210
+ const collect = (moduleClass) => {
211
+ if (visited.has(moduleClass)) {
212
+ return;
213
+ }
214
+ if (visiting.has(moduleClass)) {
215
+ const path = [...visiting];
216
+ const repeatedAt = path.indexOf(moduleClass);
217
+ const cycle = [...path.slice(repeatedAt), moduleClass].map(module => module.name).join(' -> ');
218
+ throw new Error(`@zmdb/app: import cycle in the module graph: ${cycle}`);
219
+ }
220
+ visiting.add(moduleClass);
221
+ const def = moduleDefOf(moduleClass);
222
+ if (def !== undefined) {
223
+ definitions.set(moduleClass, def);
224
+ for (const imported of def.imports ?? []) {
225
+ collect(typeof imported === 'function' ? imported : imported.module);
226
+ }
227
+ }
228
+ visiting.delete(moduleClass);
229
+ visited.add(moduleClass);
230
+ moduleOrder.push(moduleClass);
231
+ };
232
+ const markEager = (moduleClass) => {
233
+ if (eagerModules.has(moduleClass)) {
234
+ return;
235
+ }
236
+ eagerModules.add(moduleClass);
237
+ for (const imported of definitions.get(moduleClass)?.imports ?? []) {
238
+ if (typeof imported === 'function') {
239
+ markEager(imported);
240
+ }
241
+ }
242
+ };
243
+ collect(rootModule);
244
+ markEager(rootModule);
245
+ for (const moduleClass of moduleOrder) {
246
+ for (const provider of definitions.get(moduleClass)?.providers ?? []) {
247
+ const previous = providerModules.get(provider.token);
248
+ if (previous !== undefined && previous !== moduleClass) {
249
+ throw new Error(`@zmdb/app: duplicate provider token "${provider.token.description}" in ${previous.name} and ${moduleClass.name}`);
250
+ }
251
+ providerModules.set(provider.token, moduleClass);
252
+ }
253
+ }
254
+ const lazyRoots = [];
255
+ const seenLazyRoots = new Set();
256
+ for (const moduleClass of moduleOrder) {
257
+ if (!eagerModules.has(moduleClass)) {
258
+ continue;
259
+ }
260
+ for (const imported of definitions.get(moduleClass)?.imports ?? []) {
261
+ if (typeof imported !== 'function' && !eagerModules.has(imported.module) && !seenLazyRoots.has(imported.module)) {
262
+ seenLazyRoots.add(imported.module);
263
+ lazyRoots.push(imported.module);
264
+ }
265
+ }
266
+ }
267
+ const lazyOrders = new Map();
268
+ for (const root of lazyRoots) {
269
+ lazyOrders.set(root, lazySubtreeOrder(root, definitions, moduleOrder, eagerModules));
270
+ }
271
+ const plan = {
272
+ definitions,
273
+ moduleOrder,
274
+ eagerModules,
275
+ providerModules,
276
+ lazyRoots,
277
+ lazyOrders,
278
+ };
279
+ compilePlans.set(rootModule, plan);
280
+ return plan;
281
+ }
282
+ function validateInjections(plan, overrides) {
283
+ for (const moduleClass of plan.moduleOrder) {
284
+ const def = plan.definitions.get(moduleClass);
285
+ const injectables = [...(def?.controllers ?? []), ...(def?.commands ?? [])];
286
+ for (const Injectable of injectables) {
287
+ for (const injection of injectionsOf(Injectable)) {
288
+ if (overrides.some(override => override.token === injection.token)) {
289
+ continue;
290
+ }
291
+ const providerModule = plan.providerModules.get(injection.token);
292
+ if (providerModule === undefined) {
293
+ throw new UnresolvedTokenError(injection.token.description);
294
+ }
295
+ if (plan.eagerModules.has(moduleClass) && !plan.eagerModules.has(providerModule)) {
296
+ throw new Error(`@zmdb/app: eager class ${Injectable.name} injects lazy-only token ` +
297
+ `"${injection.token.description}" from ${providerModule.name}; import ${providerModule.name} eagerly`);
298
+ }
299
+ }
300
+ }
301
+ }
302
+ }
303
+ function lazySubtreeOrder(root, definitions, moduleOrder, eagerModules) {
304
+ const reachable = new Set();
305
+ const visit = (moduleClass) => {
306
+ if (reachable.has(moduleClass) || eagerModules.has(moduleClass)) {
307
+ return;
308
+ }
309
+ reachable.add(moduleClass);
310
+ for (const imported of definitions.get(moduleClass)?.imports ?? []) {
311
+ visit(typeof imported === 'function' ? imported : imported.module);
312
+ }
313
+ };
314
+ visit(root);
315
+ return moduleOrder.filter(module => reachable.has(module));
316
+ }
317
+ function instantiateEagerModule(moduleClass, definitions, container, controllers, commands, overrides, recordInstance) {
318
+ const def = definitions.get(moduleClass);
319
+ for (const provider of def?.providers ?? []) {
320
+ if (!isOverridden(overrides, provider)) {
321
+ registerProvider(container, provider, recordInstance);
322
+ }
323
+ }
324
+ for (const Controller of def?.controllers ?? []) {
325
+ const controller = container.build(Controller);
326
+ recordInstance(controller);
327
+ controllers.push(controller);
328
+ }
329
+ for (const Command of def?.commands ?? []) {
330
+ const command = container.build(Command);
331
+ recordInstance(command);
332
+ commands.push(command);
333
+ }
334
+ }
335
+ function isOverridden(overrides, provider) {
336
+ return overrides.some(override => override.token === provider.token);
337
+ }
338
+ function registerProvider(container, provider, recordInstance) {
339
+ if ('useValue' in provider) {
340
+ container.register(provider.token, provider.useValue);
341
+ recordInstance(provider.useValue);
342
+ }
343
+ else {
344
+ container.registerFactory(provider.token, c => {
345
+ const value = provider.useFactory(c);
346
+ recordInstance(value);
347
+ return value;
348
+ }, provider.scope ?? 'singleton');
349
+ }
350
+ }
351
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Container } from '../di/index.js';
2
+ export declare function createLifecycleRecorder(container: Container): (value: unknown) => void;
3
+ export declare function lifecycleInstances(container: Container): readonly object[];
4
+ //# sourceMappingURL=lifecycle-instances.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-instances.d.ts","sourceRoot":"","sources":["../../src/modules/lifecycle-instances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAUtF;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,MAAM,EAAE,CAE1E"}
@@ -0,0 +1,19 @@
1
+ const ledgers = new WeakMap();
2
+ export function createLifecycleRecorder(container) {
3
+ const instances = [];
4
+ const seen = new Set();
5
+ ledgers.set(container, instances);
6
+ return value => {
7
+ if (!isObject(value) || seen.has(value))
8
+ return;
9
+ seen.add(value);
10
+ instances.push(value);
11
+ };
12
+ }
13
+ export function lifecycleInstances(container) {
14
+ return ledgers.get(container) ?? [];
15
+ }
16
+ function isObject(value) {
17
+ return (typeof value === 'object' && value !== null) || typeof value === 'function';
18
+ }
19
+ //# sourceMappingURL=lifecycle-instances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-instances.js","sourceRoot":"","sources":["../../src/modules/lifecycle-instances.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAuB,CAAC;AAEnD,MAAM,UAAU,uBAAuB,CAAC,SAAoB;IAC1D,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAElC,OAAO,KAAK,CAAC,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO;QAChD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAoB;IACrD,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;AACtF,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Constructor } from '../di/index.js';
2
+ import type { CompiledModule } from './index.js';
3
+ export type CompiledController = {
4
+ readonly kind: 'eager';
5
+ readonly controller: object;
6
+ } | {
7
+ readonly kind: 'deferred';
8
+ readonly controller: Constructor<object>;
9
+ readonly instance: () => Promise<object>;
10
+ };
11
+ export interface CompiledModuleRuntime {
12
+ readonly controllers: readonly CompiledController[];
13
+ beginShutdown(): void;
14
+ waitForLoads(): Promise<void>;
15
+ }
16
+ export declare function rememberRuntime(compiled: CompiledModule, runtime: CompiledModuleRuntime): void;
17
+ export declare function runtimeOf(compiled: CompiledModule): CompiledModuleRuntime | undefined;
18
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/modules/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1C,CAAC;AAEN,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,aAAa,IAAI,IAAI,CAAC;IACtB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAID,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAE9F;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,qBAAqB,GAAG,SAAS,CAErF"}
@@ -0,0 +1,8 @@
1
+ const runtimes = new WeakMap();
2
+ export function rememberRuntime(compiled, runtime) {
3
+ runtimes.set(compiled, runtime);
4
+ }
5
+ export function runtimeOf(compiled) {
6
+ return runtimes.get(compiled);
7
+ }
8
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/modules/runtime.ts"],"names":[],"mappings":"AAiBA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAyC,CAAC;AAEtE,MAAM,UAAU,eAAe,CAAC,QAAwB,EAAE,OAA8B;IACtF,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAwB;IAChD,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type ExecuteOptions } from '@zmdb/orm';
2
+ import { type CommentPairs, type CompiledQuery, type SqlDialect } from '@zmdb/sql';
3
+ import { type Observability, type Span, type TraceCarrier } from './types.js';
4
+ export { fromTraceContext, fromTraceparent, toTraceHeaders, toTraceparent } from './propagation.js';
5
+ export { SpanKind } from './types.js';
6
+ export type { Attributes, CommentKey, CommentKeys, CommentPairs, Meter, Observability, QueryTelemetry, Span, SpanContext, SpanOptions, TraceCarrier, Tracer, } from './types.js';
7
+ /** Structural driver surface instrumented without importing a concrete driver. */
8
+ export interface ExecutingDriver {
9
+ readonly dialect?: SqlDialect;
10
+ readonly queryTelemetry?: true;
11
+ execute(query: CompiledQuery, options?: ExecuteOptions): Promise<readonly Record<string, unknown>[]>;
12
+ stream?(query: CompiledQuery, options?: ExecuteOptions): AsyncIterable<Record<string, unknown>>;
13
+ }
14
+ /**
15
+ * Add database spans, metrics and optional sqlcommenter tags at execution.
16
+ *
17
+ * `commentValues` is request-scoped and supplies the low-cardinality values.
18
+ * When selected, `traceparent` comes from the query span (or the supplied
19
+ * parent when no tracer is configured), not from the callback.
20
+ *
21
+ * With no port configured, return the original object: no wrapper, marker,
22
+ * closure or per-query branch is added to the off path.
23
+ */
24
+ export declare function tracedDriver(driver: ExecutingDriver, observability: Observability, parent?: Span, commentValues?: () => CommentPairs): ExecutingDriver;
25
+ /** Start the consumer side of one propagated message delivery. */
26
+ export declare function consumerSpan(observability: Observability, envelope: TraceCarrier, delivery: 'queued' | 'request-reply'): Span;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAkC,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAGnH,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,IAAI,EAAE,KAAK,YAAY,EAAe,MAAM,YAAY,CAAC;AAEtH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,KAAK,EACL,aAAa,EACb,cAAc,EACd,IAAI,EACJ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,GACP,MAAM,YAAY,CAAC;AAEpB,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAC/B,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACrG,MAAM,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,aAAa,EAC5B,MAAM,CAAC,EAAE,IAAI,EACb,aAAa,CAAC,EAAE,MAAM,YAAY,GACjC,eAAe,CAwDjB;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,GAAG,eAAe,GACnC,IAAI,CAYN"}