@setu-ts/kernel 0.0.0-bootstrap.0 → 0.9.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 (78) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -2
  3. package/dist/application/application.d.ts +172 -0
  4. package/dist/application/application.d.ts.map +1 -0
  5. package/dist/application/application.js +1862 -0
  6. package/dist/application/application.js.map +1 -0
  7. package/dist/application/inject-body.d.ts +58 -0
  8. package/dist/application/inject-body.d.ts.map +1 -0
  9. package/dist/application/inject-body.js +82 -0
  10. package/dist/application/inject-body.js.map +1 -0
  11. package/dist/context/request-context.d.ts +32 -0
  12. package/dist/context/request-context.d.ts.map +1 -0
  13. package/dist/context/request-context.js +136 -0
  14. package/dist/context/request-context.js.map +1 -0
  15. package/dist/context/response.d.ts +60 -0
  16. package/dist/context/response.d.ts.map +1 -0
  17. package/dist/context/response.js +193 -0
  18. package/dist/context/response.js.map +1 -0
  19. package/dist/diagnostics/buffer.d.ts +143 -0
  20. package/dist/diagnostics/buffer.d.ts.map +1 -0
  21. package/dist/diagnostics/buffer.js +185 -0
  22. package/dist/diagnostics/buffer.js.map +1 -0
  23. package/dist/diagnostics/collector.d.ts +284 -0
  24. package/dist/diagnostics/collector.d.ts.map +1 -0
  25. package/dist/diagnostics/collector.js +812 -0
  26. package/dist/diagnostics/collector.js.map +1 -0
  27. package/dist/diagnostics/projection.d.ts +153 -0
  28. package/dist/diagnostics/projection.d.ts.map +1 -0
  29. package/dist/diagnostics/projection.js +226 -0
  30. package/dist/diagnostics/projection.js.map +1 -0
  31. package/dist/index.d.ts +12 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +11 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/lifecycle/lifecycle-manager.d.ts +136 -0
  36. package/dist/lifecycle/lifecycle-manager.d.ts.map +1 -0
  37. package/dist/lifecycle/lifecycle-manager.js +206 -0
  38. package/dist/lifecycle/lifecycle-manager.js.map +1 -0
  39. package/dist/pipeline/execute-chain.d.ts +71 -0
  40. package/dist/pipeline/execute-chain.d.ts.map +1 -0
  41. package/dist/pipeline/execute-chain.js +104 -0
  42. package/dist/pipeline/execute-chain.js.map +1 -0
  43. package/dist/pipeline/middleware-pipeline.d.ts +68 -0
  44. package/dist/pipeline/middleware-pipeline.d.ts.map +1 -0
  45. package/dist/pipeline/middleware-pipeline.js +82 -0
  46. package/dist/pipeline/middleware-pipeline.js.map +1 -0
  47. package/dist/registry/plugin-resolver.d.ts +42 -0
  48. package/dist/registry/plugin-resolver.d.ts.map +1 -0
  49. package/dist/registry/plugin-resolver.js +140 -0
  50. package/dist/registry/plugin-resolver.js.map +1 -0
  51. package/dist/registry/service-registry.d.ts +110 -0
  52. package/dist/registry/service-registry.d.ts.map +1 -0
  53. package/dist/registry/service-registry.js +197 -0
  54. package/dist/registry/service-registry.js.map +1 -0
  55. package/dist/router/route-matcher.d.ts +85 -0
  56. package/dist/router/route-matcher.d.ts.map +1 -0
  57. package/dist/router/route-matcher.js +102 -0
  58. package/dist/router/route-matcher.js.map +1 -0
  59. package/dist/router/router.d.ts +130 -0
  60. package/dist/router/router.d.ts.map +1 -0
  61. package/dist/router/router.js +350 -0
  62. package/dist/router/router.js.map +1 -0
  63. package/package.json +40 -3
  64. package/src/application/application.ts +2299 -0
  65. package/src/application/inject-body.ts +131 -0
  66. package/src/context/request-context.ts +169 -0
  67. package/src/context/response.ts +254 -0
  68. package/src/diagnostics/buffer.ts +241 -0
  69. package/src/diagnostics/collector.ts +1031 -0
  70. package/src/diagnostics/projection.ts +322 -0
  71. package/src/index.ts +20 -0
  72. package/src/lifecycle/lifecycle-manager.ts +287 -0
  73. package/src/pipeline/execute-chain.ts +164 -0
  74. package/src/pipeline/middleware-pipeline.ts +131 -0
  75. package/src/registry/plugin-resolver.ts +185 -0
  76. package/src/registry/service-registry.ts +267 -0
  77. package/src/router/route-matcher.ts +131 -0
  78. package/src/router/router.ts +485 -0
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Diagnostics collector — the kernel-owned writer and the public pull-only
3
+ * reader behind `IApplication.diagnostics`.
4
+ *
5
+ * Ownership is the whole design: only the kernel implementation writes here,
6
+ * at its own registration and execution boundaries, projecting bounded
7
+ * primitives captured once at the owning mutation. The reader offers exactly
8
+ * `snapshot()` and `read()` — neither can register a callback, invoke
9
+ * application code, resolve a service, or mutate state — so an external
10
+ * reader can be slow, stop polling, or throw after reading without any effect
11
+ * on the application.
12
+ *
13
+ * Every mutation and execution call site passes through {@linkcode
14
+ * DiagnosticsCollector.safeObserve}: an inspection failure must never change a
15
+ * response, a lifecycle result, or a startup error. An event-capture failure
16
+ * drops the record, increments a value-free counter, and disables further
17
+ * event capture; a topology-capture failure drops that entry and marks the
18
+ * snapshot truncated.
19
+ *
20
+ * @module
21
+ */
22
+ import type { DiagnosticsBatch, DiagnosticsEventKind, DiagnosticsEventOutcome, DiagnosticsEventStage, DiagnosticsSnapshot, IDiagnosticsSource } from '@setu-ts/common';
23
+ import type { RouteRegistrationEvent } from '../router/router.ts';
24
+ import type { RegistryDiagnosticEvent } from '../registry/service-registry.ts';
25
+ import type { DiagnosticsLabelAllowlists } from './projection.ts';
26
+ /** Capture-time description of one plugin, taken at its registration boundary. */
27
+ export interface PluginRegistrationInfo {
28
+ /** The plugin's declared `name`. */
29
+ readonly name: string;
30
+ /** The plugin's declared `version`, emitted only when it passes the bounded grammar. */
31
+ readonly version: string;
32
+ /** Declared `provides` tokens. */
33
+ readonly provides: readonly string[];
34
+ /** Declared `requires` tokens. */
35
+ readonly requires: readonly string[];
36
+ /** Declared `optionalDependencies` tokens. */
37
+ readonly optionalDependencies: readonly string[];
38
+ /** Declared `consumes` tokens. */
39
+ readonly consumes: readonly string[];
40
+ }
41
+ /** Capture-time description of one global middleware stage, in execution order. */
42
+ export interface MiddlewareCompiledDescriptor {
43
+ readonly name: string;
44
+ readonly priority: number;
45
+ /** 1-based execution position in the stable priority sort. */
46
+ readonly position: number;
47
+ }
48
+ /** An operation allocated at entry, linking later records to their parent. */
49
+ export interface DiagnosticsOperation {
50
+ readonly id: string;
51
+ readonly startedAtMs: number | null;
52
+ }
53
+ /** Parts of one completion record the collector turns into a stored event. */
54
+ export interface CompletionRecordParts {
55
+ readonly kind: DiagnosticsEventKind;
56
+ readonly stage: DiagnosticsEventStage;
57
+ readonly operationId: string;
58
+ readonly parentOperationId: string | null;
59
+ readonly nodeId: string | null;
60
+ readonly outcome: DiagnosticsEventOutcome;
61
+ readonly startedAtMs: number | null;
62
+ readonly durationMs: number | null;
63
+ readonly statusCode?: number;
64
+ /** Whether the record may carry validated trace/span identifiers. */
65
+ readonly withTrace?: boolean;
66
+ }
67
+ /** The slice of `ITelemetryService` the collector reads, kept structural. */
68
+ interface TraceReadingTelemetry {
69
+ activeSpanContext?(): {
70
+ readonly traceId: string;
71
+ readonly spanId: string;
72
+ } | undefined;
73
+ }
74
+ /**
75
+ * The collector. Instantiated ONLY when the application was created with
76
+ * `diagnostics` explicitly enabled; an omitted option never constructs one.
77
+ * @since 0.8.0
78
+ */
79
+ export declare class DiagnosticsCollector implements IDiagnosticsSource {
80
+ #private;
81
+ constructor(labels: DiagnosticsLabelAllowlists);
82
+ /** @inheritDoc */
83
+ snapshot(): DiagnosticsSnapshot;
84
+ /** @inheritDoc */
85
+ read(after: number, limit?: number): DiagnosticsBatch;
86
+ /**
87
+ * Application start has begun. A start following a FAILED start resets the
88
+ * reader for the new attempt — the kernel rolls its own `#started` back so
89
+ * a start that failed before any plugin registered can be corrected and
90
+ * retried, and the reader must not keep
91
+ * reporting `failed` for a process that is starting (or later serving)
92
+ * again. The failed attempt's retained metadata was already cleared by
93
+ * `markStartupFailed`, so the reset recovers nothing sensitive; `closed`
94
+ * remains absolute (a stopped application never restarts its reader).
95
+ */
96
+ markStarting(): void;
97
+ /** Startup completed; the application is serving. */
98
+ markRunning(): void;
99
+ /** Shutdown has begun; the application is about to refuse requests. */
100
+ markStopping(): void;
101
+ /**
102
+ * Startup failed. Terminal: clears every retained node/edge/event buffer
103
+ * while preserving the caller's original error, so a reader sees only the
104
+ * coarse state, the failure code, and counters.
105
+ */
106
+ markStartupFailed(): void;
107
+ /**
108
+ * Shutdown finished (successfully or not). Terminal, like
109
+ * {@linkcode markStartupFailed}: retained buffers are cleared regardless of
110
+ * the outcome.
111
+ *
112
+ * @param shutdownFailed - `true` when a shutdown-phase hook rejected
113
+ */
114
+ markClosed(shutdownFailed: boolean): void;
115
+ /**
116
+ * Records runtime availability: the monotonic origin starts here and the
117
+ * instance UUID is generated once, through the registered runtime. Both are
118
+ * guarded — a failing runtime reports as unavailable (`null` timings, `null`
119
+ * instanceId) rather than turning startup into a diagnostics fault. Before
120
+ * this call, every timing is `null` and none is ever fabricated.
121
+ *
122
+ * @param runtime - The registered runtime services
123
+ * @param telemetryReader - Resolves the telemetry service WITHOUT resolving
124
+ * a lazy factory; `undefined` identifiers are reported as absence
125
+ */
126
+ initializeRuntime(runtime: {
127
+ readonly uuid: () => string;
128
+ readonly hrtime: () => number;
129
+ }, telemetryReader: (() => TraceReadingTelemetry | undefined) | undefined): void;
130
+ /**
131
+ * The one inspection boundary every capture passes through. An event-scope
132
+ * failure disables further event capture after saturating the drop counter;
133
+ * a topology-scope failure drops that entry and marks the snapshot
134
+ * truncated. Neither can propagate: an inspection failure must not change a
135
+ * response, a lifecycle result, or a startup error.
136
+ *
137
+ * @param scope - Which capture family the callback belongs to
138
+ * @param emit - The capture work
139
+ * @returns The callback's value, or `undefined` when it failed
140
+ */
141
+ safeObserve<T>(scope: 'event' | 'topology', emit: () => T): T | undefined;
142
+ /** Guarded monotonic offset in ms from runtime initialization, or `null`. */
143
+ monotonicMs(): number | null;
144
+ /**
145
+ * Captures one plugin at its registration boundary: the node plus its
146
+ * DECLARED dependency edges. Names are projected through the allowlists
147
+ * here, at capture — the collector never stores a label that was not
148
+ * explicitly approved.
149
+ *
150
+ * @param info - The declared plugin description
151
+ * @returns The plugin node id, or `undefined` when the capture was dropped
152
+ */
153
+ pluginRegistered(info: PluginRegistrationInfo): string | undefined;
154
+ /**
155
+ * Observes a successful registry registration (instance, factory, or
156
+ * multi-provider) or removal, using token metadata alone. The registry's
157
+ * existing logging observer is untouched.
158
+ *
159
+ * @param event - The registry's registration event
160
+ * @param owner - The plugin whose `register()` was running, when known
161
+ */
162
+ capabilityRegistrationObserved(event: RegistryDiagnosticEvent, owner: string | undefined): void;
163
+ /**
164
+ * Captures one route registration with its route-middleware nodes.
165
+ *
166
+ * @param event - The router's registration event
167
+ * @returns The route node id, or `undefined` when the capture was dropped
168
+ */
169
+ routeRegistered(event: RouteRegistrationEvent): string | undefined;
170
+ /**
171
+ * Captures the compiled global pipeline in execution order — the stable
172
+ * priority sort — so middleware stage records can name their node.
173
+ *
174
+ * @param descriptors - The compiled stages, in execution order
175
+ */
176
+ middlewareCompiled(descriptors: readonly MiddlewareCompiledDescriptor[]): void;
177
+ /** Route node id for a router entry index, when that route was captured. */
178
+ routeNodeIdOf(entryIndex: number): string | undefined;
179
+ /**
180
+ * Allocates an operation root at entry. The identifier exists before any
181
+ * record is written, so a child may reference a parent whose completion
182
+ * record appears later.
183
+ *
184
+ * @returns The operation handle
185
+ */
186
+ beginOperation(): DiagnosticsOperation;
187
+ /**
188
+ * Allocates the request operation for a context, stored in a private
189
+ * WeakMap — never in application state, never a caller-supplied id.
190
+ *
191
+ * @param ctx - The request context keying the operation
192
+ */
193
+ beginRequestOperation(ctx: object): void;
194
+ /**
195
+ * Emits the request operation's completion record.
196
+ *
197
+ * @param ctx - The request context keying the operation
198
+ * @param parts - Outcome and the produced status code
199
+ */
200
+ endRequestOperation(ctx: object, parts: {
201
+ outcome: DiagnosticsEventOutcome;
202
+ statusCode?: number;
203
+ }): void;
204
+ /**
205
+ * Emits one middleware stage completion record (global or route chain).
206
+ *
207
+ * @param parts - The stage observation from the chain executor
208
+ */
209
+ observeMiddlewareStage(parts: {
210
+ parentOperationId: string;
211
+ scope: 'global' | 'route';
212
+ position: number;
213
+ routeEntryIndex: number | undefined;
214
+ outcome: DiagnosticsEventOutcome;
215
+ startedAtMs: number | null;
216
+ durationMs: number | null;
217
+ }): void;
218
+ /**
219
+ * Emits one handler or protocol-boundary completion record.
220
+ *
221
+ * @param parts - The handler observation
222
+ */
223
+ observeHandlerStage(parts: {
224
+ parentOperationId: string;
225
+ stage: 'handler' | 'websocket-upgrade' | 'grpc-dispatch';
226
+ nodeId: string | null;
227
+ outcome: DiagnosticsEventOutcome;
228
+ startedAtMs: number | null;
229
+ durationMs: number | null;
230
+ statusCode?: number;
231
+ }): void;
232
+ /**
233
+ * Emits one request-scoped hook completion record (`request-hook`,
234
+ * `response-hook`, `error-hook`).
235
+ *
236
+ * @param parts - The hook observation
237
+ */
238
+ observeRequestStage(parts: {
239
+ parentOperationId: string;
240
+ stage: 'request-hook' | 'response-hook' | 'error-hook';
241
+ outcome: DiagnosticsEventOutcome;
242
+ startedAtMs: number | null;
243
+ durationMs: number | null;
244
+ }): void;
245
+ /**
246
+ * Emits one lifecycle completion record for an operation allocated at entry
247
+ * with {@linkcode beginOperation}.
248
+ *
249
+ * @param operation - The operation allocated at the boundary's entry
250
+ * @param stage - The lifecycle boundary that completed
251
+ * @param nodeId - The plugin node the boundary belongs to, when known
252
+ * @param outcome - How the boundary completed
253
+ */
254
+ observeLifecycleEvent(operation: DiagnosticsOperation, stage: DiagnosticsEventStage, nodeId: string | null, outcome: DiagnosticsEventOutcome): void;
255
+ /**
256
+ * Emits one per-hook lifecycle record observed by the lifecycle manager —
257
+ * fixed phase plus execution ordinal, never an inferred owner.
258
+ *
259
+ * @param observation - The manager's hook observation
260
+ */
261
+ observeLifecycleHook(observation: {
262
+ phase: 'register-hook' | 'init' | 'bootstrap' | 'stopping' | 'shutdown' | 'close';
263
+ ordinal: number;
264
+ failed: boolean;
265
+ startedAtMs: number | null;
266
+ durationMs: number | null;
267
+ }): void;
268
+ /**
269
+ * The request operation identifier keyed to a context, when one exists.
270
+ *
271
+ * @param ctx - The request context the operation was keyed under
272
+ * @returns The operation id, or `undefined`
273
+ */
274
+ requestOperationIdOf(ctx: object): string | undefined;
275
+ /**
276
+ * Inclusive monotonic elapsed time since a recorded start offset.
277
+ *
278
+ * @param startedAtMs - The recorded start offset, or `null`
279
+ * @returns Elapsed ms, or `null` when either reading was unavailable
280
+ */
281
+ elapsedSince(startedAtMs: number | null): number | null;
282
+ }
283
+ export {};
284
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"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"}