@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.
- package/dist/app.d.ts +228 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +519 -0
- package/dist/app.js.map +1 -0
- package/dist/components.d.ts +28 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +14 -0
- package/dist/components.js.map +1 -0
- package/dist/decorator.d.ts +54 -0
- package/dist/decorator.d.ts.map +1 -0
- package/dist/decorator.js +36 -0
- package/dist/decorator.js.map +1 -0
- package/dist/defaults-handles.d.ts +25 -0
- package/dist/defaults-handles.d.ts.map +1 -0
- package/dist/defaults-handles.js +25 -0
- package/dist/defaults-handles.js.map +1 -0
- package/dist/defaults.d.ts +10 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +49 -0
- package/dist/defaults.js.map +1 -0
- package/dist/errors.d.ts +37 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +53 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/kronos.d.ts +51 -0
- package/dist/kronos.d.ts.map +1 -0
- package/dist/kronos.js +74 -0
- package/dist/kronos.js.map +1 -0
- package/dist/lifecycle.d.ts +27 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +7 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/resolved.d.ts +18 -0
- package/dist/resolved.d.ts.map +1 -0
- package/dist/resolved.js +43 -0
- package/dist/resolved.js.map +1 -0
- package/dist/slot-registry.d.ts +35 -0
- package/dist/slot-registry.d.ts.map +1 -0
- package/dist/slot-registry.js +50 -0
- package/dist/slot-registry.js.map +1 -0
- package/dist/warnings.d.ts +19 -0
- package/dist/warnings.d.ts.map +1 -0
- package/dist/warnings.js +14 -0
- package/dist/warnings.js.map +1 -0
- package/package.json +59 -0
- package/src/app.ts +795 -0
- package/src/components.ts +48 -0
- package/src/decorator.ts +88 -0
- package/src/defaults-handles.ts +29 -0
- package/src/defaults.ts +64 -0
- package/src/errors.ts +62 -0
- package/src/index.ts +38 -0
- package/src/kronos.ts +117 -0
- package/src/lifecycle.ts +33 -0
- package/src/resolved.ts +54 -0
- package/src/slot-registry.ts +89 -0
- 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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"}
|