@kronos-ts/app 0.1.0

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 (61) hide show
  1. package/dist/app.d.ts +228 -0
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +519 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/components.d.ts +28 -0
  6. package/dist/components.d.ts.map +1 -0
  7. package/dist/components.js +14 -0
  8. package/dist/components.js.map +1 -0
  9. package/dist/decorator.d.ts +54 -0
  10. package/dist/decorator.d.ts.map +1 -0
  11. package/dist/decorator.js +36 -0
  12. package/dist/decorator.js.map +1 -0
  13. package/dist/defaults-handles.d.ts +25 -0
  14. package/dist/defaults-handles.d.ts.map +1 -0
  15. package/dist/defaults-handles.js +25 -0
  16. package/dist/defaults-handles.js.map +1 -0
  17. package/dist/defaults.d.ts +10 -0
  18. package/dist/defaults.d.ts.map +1 -0
  19. package/dist/defaults.js +49 -0
  20. package/dist/defaults.js.map +1 -0
  21. package/dist/errors.d.ts +37 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +53 -0
  24. package/dist/errors.js.map +1 -0
  25. package/dist/index.d.ts +17 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +12 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/kronos.d.ts +51 -0
  30. package/dist/kronos.d.ts.map +1 -0
  31. package/dist/kronos.js +74 -0
  32. package/dist/kronos.js.map +1 -0
  33. package/dist/lifecycle.d.ts +27 -0
  34. package/dist/lifecycle.d.ts.map +1 -0
  35. package/dist/lifecycle.js +7 -0
  36. package/dist/lifecycle.js.map +1 -0
  37. package/dist/resolved.d.ts +18 -0
  38. package/dist/resolved.d.ts.map +1 -0
  39. package/dist/resolved.js +43 -0
  40. package/dist/resolved.js.map +1 -0
  41. package/dist/slot-registry.d.ts +35 -0
  42. package/dist/slot-registry.d.ts.map +1 -0
  43. package/dist/slot-registry.js +50 -0
  44. package/dist/slot-registry.js.map +1 -0
  45. package/dist/warnings.d.ts +19 -0
  46. package/dist/warnings.d.ts.map +1 -0
  47. package/dist/warnings.js +14 -0
  48. package/dist/warnings.js.map +1 -0
  49. package/package.json +59 -0
  50. package/src/app.ts +795 -0
  51. package/src/components.ts +48 -0
  52. package/src/decorator.ts +88 -0
  53. package/src/defaults-handles.ts +29 -0
  54. package/src/defaults.ts +64 -0
  55. package/src/errors.ts +62 -0
  56. package/src/index.ts +38 -0
  57. package/src/kronos.ts +117 -0
  58. package/src/lifecycle.ts +33 -0
  59. package/src/resolved.ts +54 -0
  60. package/src/slot-registry.ts +89 -0
  61. package/src/warnings.ts +32 -0
package/dist/app.d.ts ADDED
@@ -0,0 +1,228 @@
1
+ import type { StateModule } from "@kronos-ts/modelling";
2
+ import type { CommandHandlerDefinition, QueryHandlerDefinition, EventProcessorModule, CommandGateway, QueryGateway, CommandMessage, QueryMessage, EventMessage, DispatchInterceptor, HandlerInterceptor, HandlerEnhancerDefinition } from "@kronos-ts/messaging";
3
+ import type { SnapshotPolicy, SnapshotStore } from "@kronos-ts/eventsourcing";
4
+ import { type KronosComponents, type SlotName } from "./components.js";
5
+ import { SlotRegistry, type SlotFactory, type SlotMeta } from "./slot-registry.js";
6
+ import type { WarningChannel } from "./warnings.js";
7
+ import type { DecoratorEntry, DecoratorFactory, DecoratorHandle } from "./decorator.js";
8
+ import type { LifecycleStage, LifecycleHook } from "./lifecycle.js";
9
+ /** Thrown when the App's mutating methods are called after .start() (D-50 footgun closure). */
10
+ export declare class AppAlreadyStartedError extends Error {
11
+ constructor();
12
+ }
13
+ /**
14
+ * Extension shape in Phase 5 (D-50). Phase 6/7/9 will widen this; Phase 5 keeps it minimal.
15
+ */
16
+ export type Extension = (app: App) => void | Promise<void>;
17
+ /**
18
+ * Plan 09-01 (D-88): per-state options accepted in App.states() tuple form.
19
+ * Both fields optional — extensions or user code that wants snapshotting on a
20
+ * particular state passes one or both, and the value flows through into
21
+ * createEventSourcedRepository at start-time Step 5a.
22
+ */
23
+ export interface StateOptions {
24
+ readonly snapshotPolicy?: SnapshotPolicy;
25
+ readonly snapshotStore?: SnapshotStore;
26
+ }
27
+ /**
28
+ * Plan 09-01 (D-88): argument shape accepted by App.states() — either a bare
29
+ * StateModule or a [module, options] tuple. Mixed lists are fine.
30
+ */
31
+ export type StatesArg = StateModule<any, any> | readonly [StateModule<any, any>, StateOptions];
32
+ export interface KronosIdentity {
33
+ /** Stable logical service/application name. Same across replicas. */
34
+ readonly serviceName: string;
35
+ /** Unique physical runtime instance id. Different per process/pod. */
36
+ readonly instanceId: string;
37
+ }
38
+ export interface App {
39
+ readonly identity: KronosIdentity;
40
+ states(...args: StatesArg[]): App;
41
+ commands(...handlers: CommandHandlerDefinition<any, any>[]): App;
42
+ queries(...handlers: QueryHandlerDefinition[]): App;
43
+ /**
44
+ * Read accessor (Plan 09-01, D-103): when called with zero arguments,
45
+ * returns the registered EventProcessorModule[] in registration order.
46
+ * Returned array is a frozen view; mutations have no effect on app state.
47
+ * Consumed by extensions (e.g. Axon Server) inside `onStart('connect', ...)`
48
+ * to build a fan-out registration list before processors start.
49
+ */
50
+ processors(): readonly EventProcessorModule[];
51
+ /** Writer overload (D-103): appends EventProcessorModule registrations. */
52
+ processors(...modules: EventProcessorModule[]): App;
53
+ /** D-73: register an Extension (function) — runs during start() before slot resolution. */
54
+ use(extension: Extension): App;
55
+ setDefault<K extends SlotName>(slot: K, factory: SlotFactory<K> | KronosComponents[K], meta?: SlotMeta): App;
56
+ set<K extends SlotName>(slot: K, factory: SlotFactory<K> | KronosComponents[K]): App;
57
+ forceSet<K extends SlotName>(slot: K, factory: SlotFactory<K> | KronosComponents[K]): App;
58
+ decorate<K extends SlotName>(slot: K, factory: DecoratorFactory<K>): DecoratorHandle<K>;
59
+ removeDecorator<K extends SlotName>(handle: DecoratorHandle<K>): App;
60
+ /**
61
+ * Register a dispatch interceptor for the command bus. The interceptor runs as
62
+ * part of the framework `intercepting` default decorator (Defaults.commandBus.intercepting).
63
+ * If that default has been removed via `removeDecorator()`, registered interceptors
64
+ * have no effect on dispatch.
65
+ */
66
+ commandDispatchInterceptor(fn: DispatchInterceptor<CommandMessage>): App;
67
+ /** Same as commandDispatchInterceptor, scoped to the query bus. */
68
+ queryDispatchInterceptor(fn: DispatchInterceptor<QueryMessage>): App;
69
+ /** Same as commandDispatchInterceptor, scoped to the event bus. */
70
+ eventDispatchInterceptor(fn: DispatchInterceptor<EventMessage>): App;
71
+ /**
72
+ * Register a bus-agnostic handler interceptor. Wired into the framework `intercepting`
73
+ * defaults for commandBus and queryBus only — eventBus has no handler-interceptor concept
74
+ * in the existing intercepting wrapper.
75
+ */
76
+ handlerInterceptor(fn: HandlerInterceptor): App;
77
+ /**
78
+ * Plan 09-01 (D-86): accumulator for HandlerEnhancerDefinition. Mirrors the
79
+ * Phase 6 dispatch-interceptor accumulator pattern. Multiple registrations
80
+ * compose left-to-right via multiHandlerEnhancerDefinition (first registered
81
+ * wraps outermost). Composed at start-time and threaded through:
82
+ * - registerCommandHandlersNatively (Step 5c)
83
+ * - registerQueryHandlersNatively (Step 5d, RESEARCH Open Question #4)
84
+ * - createTrackingEventProcessor / createSubscribingEventProcessor (Step 5e)
85
+ *
86
+ * Returns App for chaining. Throws AppAlreadyStartedError after .start().
87
+ */
88
+ handlerEnhancer(def: HandlerEnhancerDefinition): App;
89
+ /**
90
+ * Live CommandGateway. Throws AppNotStartedError if accessed before the
91
+ * `register` lifecycle stage completes during `.start()`. Available inside
92
+ * `onStart('warmup'|'register'|'processors'|'serve', fn)` hooks (after register)
93
+ * and after `.start()` resolves. (Plan 08-01.)
94
+ */
95
+ readonly commandGateway: CommandGateway;
96
+ /**
97
+ * Live QueryGateway. Throws AppNotStartedError if accessed before the
98
+ * `register` lifecycle stage completes during `.start()`. Available inside
99
+ * `onStart('warmup'|'register'|'processors'|'serve', fn)` hooks (after register)
100
+ * and after `.start()` resolves. (Plan 08-01.)
101
+ */
102
+ readonly queryGateway: QueryGateway;
103
+ /**
104
+ * Register a hook that runs at the given lifecycle stage during `.start()`.
105
+ * Stages execute in forward order (connect → warmup → register → processors → serve).
106
+ * Within a stage, hooks execute in registration order. Throws AppAlreadyStartedError
107
+ * if called after `.start()`. (LIF-02, D-68, D-69, D-70)
108
+ */
109
+ onStart(stage: LifecycleStage, fn: LifecycleHook): App;
110
+ /**
111
+ * Register a hook that runs at the given lifecycle stage during `.stop()`.
112
+ * Stages execute in reverse order (serve → processors → register → warmup → connect).
113
+ * Within a stage, hooks execute in registration order. Throws AppAlreadyStartedError
114
+ * if called after `.start()`. (LIF-02, D-68, D-69, D-70)
115
+ */
116
+ onStop(stage: LifecycleStage, fn: LifecycleHook): App;
117
+ start(): Promise<RunningApp>;
118
+ }
119
+ export interface RunningApp {
120
+ readonly identity: KronosIdentity;
121
+ readonly commandGateway: CommandGateway;
122
+ readonly queryGateway: QueryGateway;
123
+ stop(): Promise<void>;
124
+ }
125
+ /** Internal accumulators populated by fluent methods; consumed by .start(). */
126
+ export interface AppState {
127
+ readonly slotRegistry: SlotRegistry;
128
+ /** Plan 09-01 (D-88): replaces flat `states: StateModule[]` to carry per-state options. */
129
+ readonly stateEntries: Array<{
130
+ module: StateModule;
131
+ options: StateOptions;
132
+ }>;
133
+ readonly commandHandlers: CommandHandlerDefinition<any, any>[];
134
+ readonly queryHandlers: QueryHandlerDefinition[];
135
+ readonly processors: EventProcessorModule[];
136
+ readonly extensions: Extension[];
137
+ readonly warningChannel: WarningChannel;
138
+ readonly decoratorRegistrations: DecoratorEntry[];
139
+ readonly commandDispatchInterceptors: DispatchInterceptor<CommandMessage>[];
140
+ readonly queryDispatchInterceptors: DispatchInterceptor<QueryMessage>[];
141
+ readonly eventDispatchInterceptors: DispatchInterceptor<EventMessage>[];
142
+ readonly handlerInterceptors: HandlerInterceptor[];
143
+ /** Plan 09-01 (D-86): accumulator composed via multiHandlerEnhancerDefinition at start. */
144
+ readonly handlerEnhancers: HandlerEnhancerDefinition[];
145
+ readonly startHooks: Array<{
146
+ stage: LifecycleStage;
147
+ fn: LifecycleHook;
148
+ }>;
149
+ readonly stopHooks: Array<{
150
+ stage: LifecycleStage;
151
+ fn: LifecycleHook;
152
+ }>;
153
+ }
154
+ export interface AppImplOptions {
155
+ warningChannel: WarningChannel;
156
+ /** Stable logical service/application name. Same across replicas. */
157
+ serviceName?: string;
158
+ /** Unique physical runtime instance id. Different per process/pod. */
159
+ instanceId?: string;
160
+ /** Per-stage timeout (ms) for native lifecycle execution (D-77). Default: 5000. */
161
+ stageTimeoutMs?: number;
162
+ }
163
+ export declare class AppImpl implements App {
164
+ readonly _state: AppState;
165
+ private _started;
166
+ readonly identity: KronosIdentity;
167
+ private _commandGateway;
168
+ private _queryGateway;
169
+ /** D-77: per-stage timeout for native lifecycle execution. */
170
+ private readonly _stageTimeoutMs;
171
+ /**
172
+ * Live CommandGateway. Throws AppNotStartedError if accessed before the
173
+ * `register` lifecycle stage completes during `.start()`. (Plan 08-01.)
174
+ */
175
+ get commandGateway(): CommandGateway;
176
+ /**
177
+ * Live QueryGateway. Throws AppNotStartedError if accessed before the
178
+ * `register` lifecycle stage completes during `.start()`. (Plan 08-01.)
179
+ */
180
+ get queryGateway(): QueryGateway;
181
+ constructor(options: AppImplOptions);
182
+ /** @internal — used by tests + by registerInMemoryDefaults indirectly through setDefault. */
183
+ getRegistry(): SlotRegistry;
184
+ /** @internal — used by Task 2's start() implementation. */
185
+ isStarted(): boolean;
186
+ /** @internal — set just before .start() returns; Task 2 toggles this. */
187
+ markStarted(): void;
188
+ private guard;
189
+ states(...args: StatesArg[]): App;
190
+ commands(...handlers: CommandHandlerDefinition<any, any>[]): App;
191
+ queries(...handlers: QueryHandlerDefinition[]): App;
192
+ processors(): readonly EventProcessorModule[];
193
+ processors(...modules: EventProcessorModule[]): App;
194
+ use(extension: Extension): App;
195
+ setDefault<K extends SlotName>(slot: K, factory: SlotFactory<K> | KronosComponents[K], meta?: SlotMeta): App;
196
+ set<K extends SlotName>(slot: K, factory: SlotFactory<K> | KronosComponents[K]): App;
197
+ forceSet<K extends SlotName>(slot: K, factory: SlotFactory<K> | KronosComponents[K]): App;
198
+ decorate<K extends SlotName>(slot: K, factory: DecoratorFactory<K>): DecoratorHandle<K>;
199
+ removeDecorator<K extends SlotName>(handle: DecoratorHandle<K>): App;
200
+ commandDispatchInterceptor(fn: DispatchInterceptor<CommandMessage>): App;
201
+ queryDispatchInterceptor(fn: DispatchInterceptor<QueryMessage>): App;
202
+ eventDispatchInterceptor(fn: DispatchInterceptor<EventMessage>): App;
203
+ handlerInterceptor(fn: HandlerInterceptor): App;
204
+ handlerEnhancer(def: HandlerEnhancerDefinition): App;
205
+ onStart(stage: LifecycleStage, fn: LifecycleHook): App;
206
+ onStop(stage: LifecycleStage, fn: LifecycleHook): App;
207
+ /**
208
+ * @internal — used by `kronos()` bootstrap (Plan 02) to register framework-default
209
+ * decorators with pre-allocated handle identities from `Defaults`. Distinguished
210
+ * from user `.decorate()` registrations by `frameworkDefault: true` — at `.start()`,
211
+ * framework defaults wrap innermost (handler-adjacent) and user decorators wrap
212
+ * outside them (D-62, DESIGN.md §8 line 248).
213
+ *
214
+ * Called once per slot per kronos() invocation. Idempotent guard not added here
215
+ * because kronos() bootstrap controls call sites.
216
+ */
217
+ _registerFrameworkDefaultDecorator<K extends SlotName>(handle: DecoratorHandle<K>, factory: DecoratorFactory<K>): void;
218
+ start(): Promise<RunningApp>;
219
+ /**
220
+ * D-77 native lifecycle execution: per-stage Promise.all + Promise.race with
221
+ * warn-then-continue. If the stage exceeds `timeoutMs`, log a warning and
222
+ * STOP WAITING — the slow hooks continue to pend in the background; they are
223
+ * NOT cancelled. Reproduces createLifecycleRegistry's per-phase semantics
224
+ * verbatim, but over typed stages instead of numeric phases.
225
+ */
226
+ private _runStageWithTimeout;
227
+ }
228
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}