@canmi/seam-server 0.4.18 → 0.5.27

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/README.md CHANGED
@@ -29,8 +29,8 @@ Framework-agnostic server core that defines procedures, subscriptions, pages, an
29
29
 
30
30
  ## Development
31
31
 
32
- - Build: `bun run --filter '@canmi/seam-server' build`
33
- - Test: `bun run --filter '@canmi/seam-server' test`
32
+ - Build: `just build-ts`
33
+ - Test: `just test-ts`
34
34
 
35
35
  ## Notes
36
36
 
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ interface SchemaNode<TOutput = unknown> {
10
10
  interface OptionalSchemaNode<TOutput = unknown> extends SchemaNode<TOutput> {
11
11
  readonly _optional: true;
12
12
  }
13
- type Infer<T extends SchemaNode> = T["_output"];
13
+ type Infer<T extends SchemaNode> = T['_output'];
14
14
  //#endregion
15
15
  //#region src/types/primitives.d.ts
16
16
  declare function string(): SchemaNode<string>;
@@ -63,6 +63,65 @@ declare const t: {
63
63
  readonly html: typeof html;
64
64
  };
65
65
  //#endregion
66
+ //#region src/procedure.d.ts
67
+ interface HandleResult {
68
+ status: number;
69
+ body: unknown;
70
+ }
71
+ interface SeamFileHandle {
72
+ stream(): ReadableStream<Uint8Array>;
73
+ }
74
+ //#endregion
75
+ //#region src/http.d.ts
76
+ interface HttpRequest {
77
+ method: string;
78
+ url: string;
79
+ body: () => Promise<unknown>;
80
+ header?: (name: string) => string | null;
81
+ file?: () => Promise<SeamFileHandle | null>;
82
+ }
83
+ interface HttpBodyResponse {
84
+ status: number;
85
+ headers: Record<string, string>;
86
+ body: unknown;
87
+ }
88
+ interface HttpStreamResponse {
89
+ status: number;
90
+ headers: Record<string, string>;
91
+ stream: AsyncIterable<string>;
92
+ onCancel?: () => void;
93
+ }
94
+ type HttpResponse = HttpBodyResponse | HttpStreamResponse;
95
+ type HttpHandler = (req: HttpRequest) => Promise<HttpResponse>;
96
+ interface RpcHashMap {
97
+ procedures: Record<string, string>;
98
+ batch: string;
99
+ }
100
+ interface SseOptions {
101
+ heartbeatInterval?: number;
102
+ sseIdleTimeout?: number;
103
+ }
104
+ interface HttpHandlerOptions {
105
+ staticDir?: string;
106
+ fallback?: HttpHandler;
107
+ rpcHashMap?: RpcHashMap;
108
+ sseOptions?: SseOptions;
109
+ }
110
+ /** Format a single SSE data event */
111
+ declare function sseDataEvent(data: unknown): string;
112
+ /** Format an SSE data event with a sequence id (for streams) */
113
+ declare function sseDataEventWithId(data: unknown, id: number): string;
114
+ /** Format an SSE error event */
115
+ declare function sseErrorEvent(code: string, message: string, transient?: boolean): string;
116
+ /** Format an SSE complete event */
117
+ declare function sseCompleteEvent(): string;
118
+ declare function createHttpHandler<T extends DefinitionMap>(router: Router<T>, opts?: HttpHandlerOptions): HttpHandler;
119
+ declare function serialize(body: unknown): string;
120
+ /** Consume an async stream chunk-by-chunk; return false from write to stop early. */
121
+ declare function drainStream(stream: AsyncIterable<string>, write: (chunk: string) => boolean | void): Promise<void>;
122
+ /** Convert an HttpResponse to a Web API Response (for adapters using fetch-compatible runtimes) */
123
+ declare function toWebResponse(result: HttpResponse): Response;
124
+ //#endregion
66
125
  //#region src/channel.d.ts
67
126
  interface IncomingDef<TIn = unknown, TOut = unknown> {
68
127
  input: SchemaNode<TIn>;
@@ -79,6 +138,7 @@ interface ChannelDef<TChannelIn = unknown, TIncoming extends Record<string, Inco
79
138
  subscribe: (params: {
80
139
  input: TChannelIn;
81
140
  }) => AsyncIterable<ChannelEvent<TOutgoing>>;
141
+ transport?: TransportConfig;
82
142
  }
83
143
  type ChannelEvent<TOutgoing extends Record<string, SchemaNode<Record<string, unknown>>>> = { [K in keyof TOutgoing & string]: {
84
144
  type: K;
@@ -93,6 +153,10 @@ interface ChannelMeta {
93
153
  error?: Schema;
94
154
  }>;
95
155
  outgoing: Record<string, Schema>;
156
+ transport?: {
157
+ prefer: string;
158
+ fallback?: string[];
159
+ };
96
160
  }
97
161
  interface ChannelResult {
98
162
  /** Expanded Level 0 procedure definitions — spread into createRouter */
@@ -102,24 +166,66 @@ interface ChannelResult {
102
166
  }
103
167
  declare function createChannel<TChannelIn, TIncoming extends Record<string, IncomingDef<any, any>>, TOutgoing extends Record<string, SchemaNode<Record<string, unknown>>>>(name: string, def: ChannelDef<TChannelIn, TIncoming, TOutgoing>): ChannelResult;
104
168
  //#endregion
169
+ //#region src/context.d.ts
170
+ interface ContextFieldDef {
171
+ extract: string;
172
+ schema: SchemaNode;
173
+ }
174
+ type ContextConfig = Record<string, ContextFieldDef>;
175
+ type RawContextMap = Record<string, string | null>;
176
+ /** Check whether any context fields are defined */
177
+ declare function contextHasExtracts(config: ContextConfig): boolean;
178
+ /** Parse a Cookie header into key-value pairs */
179
+ declare function parseCookieHeader(header: string): Record<string, string>;
180
+ /** Build a RawContextMap keyed by config key from request headers, cookies, and query params */
181
+ declare function buildRawContext(config: ContextConfig, headerFn: ((name: string) => string | null) | undefined, url: URL): RawContextMap;
182
+ /** Syntax sugar for building extract rules; the underlying "source:key" format is unchanged. */
183
+ declare const extract: {
184
+ header: (name: string) => string;
185
+ cookie: (name: string) => string;
186
+ query: (name: string) => string;
187
+ };
188
+ //#endregion
105
189
  //#region src/manifest/index.d.ts
106
- type ProcedureType = "query" | "command" | "subscription";
190
+ type ProcedureType = 'query' | 'command' | 'subscription' | 'stream' | 'upload';
191
+ interface NormalizedMappingValue {
192
+ from: string;
193
+ each?: boolean;
194
+ }
195
+ interface NormalizedInvalidateTarget {
196
+ query: string;
197
+ mapping?: Record<string, NormalizedMappingValue>;
198
+ }
199
+ interface ContextManifestEntry {
200
+ extract: string;
201
+ schema: Schema;
202
+ }
107
203
  interface ProcedureEntry {
108
- type: ProcedureType;
204
+ kind: ProcedureType;
109
205
  input: Schema;
110
- output: Schema;
206
+ output?: Schema;
207
+ chunkOutput?: Schema;
111
208
  error?: Schema;
209
+ invalidates?: NormalizedInvalidateTarget[];
210
+ context?: string[];
211
+ transport?: {
212
+ prefer: string;
213
+ fallback?: string[];
214
+ };
215
+ suppress?: string[];
216
+ cache?: false | {
217
+ ttl: number;
218
+ };
112
219
  }
113
220
  interface ProcedureManifest {
114
221
  version: number;
222
+ context: Record<string, ContextManifestEntry>;
115
223
  procedures: Record<string, ProcedureEntry>;
116
224
  channels?: Record<string, ChannelMeta>;
117
- }
118
- //#endregion
119
- //#region src/procedure.d.ts
120
- interface HandleResult {
121
- status: number;
122
- body: unknown;
225
+ transportDefaults: Record<string, {
226
+ prefer: string;
227
+ fallback?: string[];
228
+ }>;
123
229
  }
124
230
  //#endregion
125
231
  //#region src/router/handler.d.ts
@@ -144,7 +250,7 @@ interface LoaderResult {
144
250
  procedure: string;
145
251
  input: unknown;
146
252
  }
147
- type LoaderFn = (params: Record<string, string>) => LoaderResult;
253
+ type LoaderFn = (params: Record<string, string>, searchParams?: URLSearchParams) => LoaderResult;
148
254
  interface LayoutDef {
149
255
  id: string;
150
256
  template: string;
@@ -167,11 +273,12 @@ interface PageDef {
167
273
  dataId?: string;
168
274
  i18nKeys?: string[];
169
275
  pageAssets?: PageAssets;
276
+ projections?: Record<string, string[]>;
170
277
  }
171
278
  interface I18nConfig {
172
279
  locales: string[];
173
280
  default: string;
174
- mode: "memory" | "paged";
281
+ mode: 'memory' | 'paged';
175
282
  cache: boolean;
176
283
  routeHashes: Record<string, string>;
177
284
  contentHashes: Record<string, Record<string, string>>;
@@ -228,39 +335,114 @@ declare function resolveChain(strategies: ResolveStrategy[], data: ResolveData):
228
335
  declare function defaultStrategies(): ResolveStrategy[];
229
336
  //#endregion
230
337
  //#region src/router/index.d.ts
338
+ type ProcedureKind = 'query' | 'command' | 'subscription' | 'stream' | 'upload';
339
+ type ValidationMode = 'dev' | 'always' | 'never';
340
+ interface ValidationConfig {
341
+ input?: ValidationMode;
342
+ }
343
+ type MappingValue = string | {
344
+ from: string;
345
+ each?: boolean;
346
+ };
347
+ type InvalidateTarget = string | {
348
+ query: string;
349
+ mapping?: Record<string, MappingValue>;
350
+ };
351
+ type TransportPreference = 'http' | 'sse' | 'ws' | 'ipc';
352
+ interface TransportConfig {
353
+ prefer: TransportPreference;
354
+ fallback?: TransportPreference[];
355
+ }
356
+ type CacheConfig = false | {
357
+ ttl: number;
358
+ };
359
+ /** @deprecated Use QueryDef instead */
231
360
  interface ProcedureDef<TIn = unknown, TOut = unknown> {
361
+ kind?: 'query';
362
+ /** @deprecated Use `kind` instead */
363
+ type?: 'query';
232
364
  input: SchemaNode<TIn>;
233
365
  output: SchemaNode<TOut>;
234
366
  error?: SchemaNode;
367
+ context?: string[];
368
+ transport?: TransportConfig;
369
+ suppress?: string[];
370
+ cache?: CacheConfig;
235
371
  handler: (params: {
236
372
  input: TIn;
373
+ ctx: Record<string, unknown>;
237
374
  }) => TOut | Promise<TOut>;
238
375
  }
376
+ type QueryDef<TIn = unknown, TOut = unknown> = ProcedureDef<TIn, TOut>;
239
377
  interface CommandDef<TIn = unknown, TOut = unknown> {
240
- type: "command";
378
+ kind?: 'command';
379
+ /** @deprecated Use `kind` instead */
380
+ type?: 'command';
241
381
  input: SchemaNode<TIn>;
242
382
  output: SchemaNode<TOut>;
243
383
  error?: SchemaNode;
384
+ context?: string[];
385
+ invalidates?: InvalidateTarget[];
386
+ transport?: TransportConfig;
387
+ suppress?: string[];
244
388
  handler: (params: {
245
389
  input: TIn;
390
+ ctx: Record<string, unknown>;
246
391
  }) => TOut | Promise<TOut>;
247
392
  }
248
393
  interface SubscriptionDef<TIn = unknown, TOut = unknown> {
249
- type: "subscription";
394
+ kind?: 'subscription';
395
+ /** @deprecated Use `kind` instead */
396
+ type?: 'subscription';
250
397
  input: SchemaNode<TIn>;
251
398
  output: SchemaNode<TOut>;
252
399
  error?: SchemaNode;
400
+ context?: string[];
401
+ transport?: TransportConfig;
402
+ suppress?: string[];
253
403
  handler: (params: {
254
404
  input: TIn;
405
+ ctx: Record<string, unknown>;
255
406
  }) => AsyncIterable<TOut>;
256
407
  }
257
- type DefinitionMap = Record<string, ProcedureDef<any, any> | CommandDef<any, any> | SubscriptionDef<any, any>>;
408
+ interface StreamDef<TIn = unknown, TChunk = unknown> {
409
+ kind: 'stream';
410
+ input: SchemaNode<TIn>;
411
+ output: SchemaNode<TChunk>;
412
+ error?: SchemaNode;
413
+ context?: string[];
414
+ transport?: TransportConfig;
415
+ suppress?: string[];
416
+ handler: (params: {
417
+ input: TIn;
418
+ ctx: Record<string, unknown>;
419
+ }) => AsyncGenerator<TChunk>;
420
+ }
421
+ interface UploadDef<TIn = unknown, TOut = unknown> {
422
+ kind: 'upload';
423
+ input: SchemaNode<TIn>;
424
+ output: SchemaNode<TOut>;
425
+ error?: SchemaNode;
426
+ context?: string[];
427
+ transport?: TransportConfig;
428
+ suppress?: string[];
429
+ handler: (params: {
430
+ input: TIn;
431
+ file: SeamFileHandle;
432
+ ctx: Record<string, unknown>;
433
+ }) => TOut | Promise<TOut>;
434
+ }
435
+ type DefinitionMap = Record<string, QueryDef<any, any> | CommandDef<any, any> | SubscriptionDef<any, any> | StreamDef<any, any> | UploadDef<any, any>>;
258
436
  interface RouterOptions {
259
437
  pages?: Record<string, PageDef>;
438
+ rpcHashMap?: RpcHashMap;
260
439
  i18n?: I18nConfig | null;
261
440
  validateOutput?: boolean;
441
+ validation?: ValidationConfig;
262
442
  resolve?: ResolveStrategy[];
263
443
  channels?: ChannelResult[];
444
+ context?: ContextConfig;
445
+ transportDefaults?: Partial<Record<ProcedureKind, TransportConfig>>;
264
446
  }
265
447
  interface PageRequestHeaders {
266
448
  url?: string;
@@ -269,76 +451,156 @@ interface PageRequestHeaders {
269
451
  }
270
452
  interface Router<T extends DefinitionMap> {
271
453
  manifest(): ProcedureManifest;
272
- handle(procedureName: string, body: unknown): Promise<HandleResult>;
273
- handleBatch(calls: BatchCall[]): Promise<{
454
+ handle(procedureName: string, body: unknown, rawCtx?: RawContextMap): Promise<HandleResult>;
455
+ handleBatch(calls: BatchCall[], rawCtx?: RawContextMap): Promise<{
274
456
  results: BatchResultItem[];
275
457
  }>;
276
- handleSubscription(name: string, input: unknown): AsyncIterable<unknown>;
277
- handlePage(path: string, headers?: PageRequestHeaders): Promise<HandlePageResult | null>;
458
+ handleSubscription(name: string, input: unknown, rawCtx?: RawContextMap): AsyncIterable<unknown>;
459
+ handleStream(name: string, input: unknown, rawCtx?: RawContextMap): AsyncGenerator<unknown>;
460
+ handleUpload(name: string, body: unknown, file: SeamFileHandle, rawCtx?: RawContextMap): Promise<HandleResult>;
461
+ getKind(name: string): ProcedureKind | null;
462
+ handlePage(path: string, headers?: PageRequestHeaders, rawCtx?: RawContextMap): Promise<HandlePageResult | null>;
463
+ hasContext(): boolean;
464
+ readonly ctxConfig: ContextConfig;
278
465
  readonly hasPages: boolean;
466
+ readonly rpcHashMap: RpcHashMap | undefined;
279
467
  /** Exposed for adapter access to the definitions */
280
468
  readonly procedures: T;
281
469
  }
282
470
  declare function createRouter<T extends DefinitionMap>(procedures: T, opts?: RouterOptions): Router<T>;
283
471
  //#endregion
472
+ //#region src/factory.d.ts
473
+ declare function query<TIn, TOut>(def: Omit<QueryDef<TIn, TOut>, 'kind' | 'type'>): QueryDef<TIn, TOut>;
474
+ declare function command<TIn, TOut>(def: Omit<CommandDef<TIn, TOut>, 'kind' | 'type'>): CommandDef<TIn, TOut>;
475
+ declare function subscription<TIn, TOut>(def: Omit<SubscriptionDef<TIn, TOut>, 'kind' | 'type'>): SubscriptionDef<TIn, TOut>;
476
+ declare function stream<TIn, TChunk>(def: Omit<StreamDef<TIn, TChunk>, 'kind'>): StreamDef<TIn, TChunk>;
477
+ declare function upload<TIn, TOut>(def: Omit<UploadDef<TIn, TOut>, 'kind'>): UploadDef<TIn, TOut>;
478
+ //#endregion
479
+ //#region src/seam-router.d.ts
480
+ interface TypedContextFieldDef<T = unknown> {
481
+ extract: string;
482
+ schema: SchemaNode<T>;
483
+ }
484
+ type InferContextMap<T extends Record<string, TypedContextFieldDef<any>>> = { [K in keyof T]: T[K] extends TypedContextFieldDef<infer U> ? U : never };
485
+ type PickContext<TMap, TKeys extends readonly string[]> = Pick<TMap, TKeys[number] & keyof TMap>;
486
+ type QueryDefWithCtx<TIn, TOut, TCtx> = {
487
+ input: SchemaNode<TIn>;
488
+ output: SchemaNode<TOut>;
489
+ error?: SchemaNode;
490
+ context?: readonly string[];
491
+ transport?: TransportConfig;
492
+ suppress?: string[];
493
+ cache?: CacheConfig;
494
+ handler: (params: {
495
+ input: TIn;
496
+ ctx: TCtx;
497
+ }) => TOut | Promise<TOut>;
498
+ };
499
+ type CommandDefWithCtx<TIn, TOut, TCtx> = {
500
+ input: SchemaNode<TIn>;
501
+ output: SchemaNode<TOut>;
502
+ error?: SchemaNode;
503
+ context?: readonly string[];
504
+ invalidates?: InvalidateTarget[];
505
+ transport?: TransportConfig;
506
+ suppress?: string[];
507
+ handler: (params: {
508
+ input: TIn;
509
+ ctx: TCtx;
510
+ }) => TOut | Promise<TOut>;
511
+ };
512
+ type SubscriptionDefWithCtx<TIn, TOut, TCtx> = {
513
+ input: SchemaNode<TIn>;
514
+ output: SchemaNode<TOut>;
515
+ error?: SchemaNode;
516
+ context?: readonly string[];
517
+ transport?: TransportConfig;
518
+ suppress?: string[];
519
+ handler: (params: {
520
+ input: TIn;
521
+ ctx: TCtx;
522
+ }) => AsyncIterable<TOut>;
523
+ };
524
+ type StreamDefWithCtx<TIn, TChunk, TCtx> = {
525
+ input: SchemaNode<TIn>;
526
+ output: SchemaNode<TChunk>;
527
+ error?: SchemaNode;
528
+ context?: readonly string[];
529
+ transport?: TransportConfig;
530
+ suppress?: string[];
531
+ handler: (params: {
532
+ input: TIn;
533
+ ctx: TCtx;
534
+ }) => AsyncGenerator<TChunk>;
535
+ };
536
+ type UploadDefWithCtx<TIn, TOut, TCtx> = {
537
+ input: SchemaNode<TIn>;
538
+ output: SchemaNode<TOut>;
539
+ error?: SchemaNode;
540
+ context?: readonly string[];
541
+ transport?: TransportConfig;
542
+ suppress?: string[];
543
+ handler: (params: {
544
+ input: TIn;
545
+ file: SeamFileHandle;
546
+ ctx: TCtx;
547
+ }) => TOut | Promise<TOut>;
548
+ };
549
+ interface SeamDefine<TCtxMap extends Record<string, unknown>> {
550
+ query<TIn, TOut, const TKeys extends readonly (keyof TCtxMap & string)[] = []>(def: QueryDefWithCtx<TIn, TOut, PickContext<TCtxMap, TKeys>> & {
551
+ context?: TKeys;
552
+ }): QueryDef<TIn, TOut>;
553
+ command<TIn, TOut, const TKeys extends readonly (keyof TCtxMap & string)[] = []>(def: CommandDefWithCtx<TIn, TOut, PickContext<TCtxMap, TKeys>> & {
554
+ context?: TKeys;
555
+ }): CommandDef<TIn, TOut>;
556
+ subscription<TIn, TOut, const TKeys extends readonly (keyof TCtxMap & string)[] = []>(def: SubscriptionDefWithCtx<TIn, TOut, PickContext<TCtxMap, TKeys>> & {
557
+ context?: TKeys;
558
+ }): SubscriptionDef<TIn, TOut>;
559
+ stream<TIn, TChunk, const TKeys extends readonly (keyof TCtxMap & string)[] = []>(def: StreamDefWithCtx<TIn, TChunk, PickContext<TCtxMap, TKeys>> & {
560
+ context?: TKeys;
561
+ }): StreamDef<TIn, TChunk>;
562
+ upload<TIn, TOut, const TKeys extends readonly (keyof TCtxMap & string)[] = []>(def: UploadDefWithCtx<TIn, TOut, PickContext<TCtxMap, TKeys>> & {
563
+ context?: TKeys;
564
+ }): UploadDef<TIn, TOut>;
565
+ }
566
+ declare function createSeamRouter<const T extends Record<string, TypedContextFieldDef<any>>>(config: {
567
+ context: T;
568
+ } & Omit<RouterOptions, 'context'>): {
569
+ router: <P extends DefinitionMap>(procedures: P, extraOpts?: Omit<RouterOptions, 'context'>) => Router<P>;
570
+ define: SeamDefine<InferContextMap<T>>;
571
+ };
572
+ //#endregion
284
573
  //#region src/errors.d.ts
285
- type ErrorCode = "VALIDATION_ERROR" | "NOT_FOUND" | "UNAUTHORIZED" | "FORBIDDEN" | "RATE_LIMITED" | "INTERNAL_ERROR" | (string & {});
574
+ type ErrorCode = 'VALIDATION_ERROR' | 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'RATE_LIMITED' | 'INTERNAL_ERROR' | (string & {});
286
575
  declare class SeamError extends Error {
287
576
  readonly code: string;
288
577
  readonly status: number;
289
- constructor(code: string, message: string, status?: number);
578
+ readonly details?: unknown[];
579
+ constructor(code: string, message: string, status?: number, details?: unknown[]);
290
580
  toJSON(): {
291
581
  ok: boolean;
292
- error: {
293
- code: string;
294
- message: string;
295
- transient: boolean;
296
- };
582
+ error: Record<string, unknown>;
297
583
  };
298
584
  }
299
585
  //#endregion
300
- //#region src/http.d.ts
301
- interface HttpRequest {
302
- method: string;
303
- url: string;
304
- body: () => Promise<unknown>;
305
- header?: (name: string) => string | null;
306
- }
307
- interface HttpBodyResponse {
308
- status: number;
309
- headers: Record<string, string>;
310
- body: unknown;
311
- }
312
- interface HttpStreamResponse {
313
- status: number;
314
- headers: Record<string, string>;
315
- stream: AsyncIterable<string>;
316
- }
317
- type HttpResponse = HttpBodyResponse | HttpStreamResponse;
318
- type HttpHandler = (req: HttpRequest) => Promise<HttpResponse>;
319
- interface RpcHashMap {
320
- procedures: Record<string, string>;
321
- batch: string;
586
+ //#region src/page/loader-error.d.ts
587
+ interface LoaderError {
588
+ __error: true;
589
+ code: string;
590
+ message: string;
322
591
  }
323
- interface HttpHandlerOptions {
324
- staticDir?: string;
325
- fallback?: HttpHandler;
326
- rpcHashMap?: RpcHashMap;
327
- }
328
- /** Format a single SSE data event */
329
- declare function sseDataEvent(data: unknown): string;
330
- /** Format an SSE error event */
331
- declare function sseErrorEvent(code: string, message: string, transient?: boolean): string;
332
- /** Format an SSE complete event */
333
- declare function sseCompleteEvent(): string;
334
- declare function createHttpHandler<T extends DefinitionMap>(router: Router<T>, opts?: HttpHandlerOptions): HttpHandler;
335
- declare function serialize(body: unknown): string;
336
- /** Consume an async stream chunk-by-chunk; return false from write to stop early. */
337
- declare function drainStream(stream: AsyncIterable<string>, write: (chunk: string) => boolean | void): Promise<void>;
338
- /** Convert an HttpResponse to a Web API Response (for adapters using fetch-compatible runtimes) */
339
- declare function toWebResponse(result: HttpResponse): Response;
592
+ declare function isLoaderError(value: unknown): value is LoaderError;
340
593
  //#endregion
341
594
  //#region src/page/build-loader.d.ts
595
+ interface BuildOutput {
596
+ pages: Record<string, PageDef>;
597
+ rpcHashMap: RpcHashMap | undefined;
598
+ i18n: I18nConfig | null;
599
+ }
600
+ /** Load all build artifacts (pages, rpcHashMap, i18n) in one call */
601
+ declare function loadBuild(distDir: string): BuildOutput;
602
+ /** Load all build artifacts with lazy template getters (for dev mode) */
603
+ declare function loadBuildDev(distDir: string): BuildOutput;
342
604
  /** Load the RPC hash map from build output (returns undefined when obfuscation is off) */
343
605
  declare function loadRpcHashMap(distDir: string): RpcHashMap | undefined;
344
606
  /** Load i18n config and messages from build output */
@@ -369,13 +631,17 @@ declare function fromCallback<T>(setup: (sink: CallbackSink<T>) => (() => void)
369
631
  //#region src/ws.d.ts
370
632
  interface WsSink {
371
633
  send(data: string): void;
634
+ ping?: () => void;
635
+ close?: () => void;
372
636
  }
373
637
  interface ChannelWsSession {
374
638
  onMessage(data: string): void;
639
+ onPong(): void;
375
640
  close(): void;
376
641
  }
377
642
  interface ChannelWsOptions {
378
643
  heartbeatInterval?: number;
644
+ pongTimeout?: number;
379
645
  }
380
646
  /**
381
647
  * Start a WebSocket session for a channel.
@@ -402,8 +668,17 @@ declare function createStaticHandler(opts: StaticHandlerOptions): HttpHandler;
402
668
  //#region src/dev/reload-watcher.d.ts
403
669
  interface ReloadWatcher {
404
670
  close(): void;
671
+ /** Resolves on the next reload event. Rejects if the watcher is already closed. */
672
+ nextReload(): Promise<void>;
405
673
  }
406
674
  declare function watchReloadTrigger(distDir: string, onReload: () => void): ReloadWatcher;
407
675
  //#endregion
408
- export { type BatchCall, type BatchResultItem, type CallbackSink, type ChannelDef, type ChannelMeta, type ChannelResult, type ChannelWsOptions, type ChannelWsSession, type CommandDef, type DefinitionMap, type DevProxyOptions, type ErrorCode, type HandlePageResult, type HandleResult, type HttpBodyResponse, type HttpHandler, type HttpHandlerOptions, type HttpRequest, type HttpResponse, type HttpStreamResponse, type I18nConfig, type I18nOpts, type IncomingDef, type Infer, type LayoutDef, type LoaderFn, type OptionalSchemaNode, type PageDef, type PageRequestHeaders, type PageTiming, type ProcedureDef, type ProcedureEntry, type ProcedureManifest, type ProcedureType, type ReloadWatcher, type ResolveData, type ResolveStrategy, type Router, type RouterOptions, type RpcHashMap, type SchemaNode, SeamError, type StaticHandlerOptions, type SubscriptionDef, type WsSink, createChannel, createDevProxy, createHttpHandler, createRouter, createStaticHandler, defaultStrategies, definePage, drainStream, fromAcceptLanguage, fromCallback, fromCookie, fromUrlPrefix, fromUrlQuery, loadBuildOutput, loadBuildOutputDev, loadI18nMessages, loadRpcHashMap, resolveChain, serialize, sseCompleteEvent, sseDataEvent, sseErrorEvent, startChannelWs, t, toWebResponse, watchReloadTrigger };
676
+ //#region src/validation/index.d.ts
677
+ interface ValidationDetail {
678
+ path: string;
679
+ expected?: string;
680
+ actual?: string;
681
+ }
682
+ //#endregion
683
+ export { type BatchCall, type BatchResultItem, type BuildOutput, type CallbackSink, type ChannelDef, type ChannelMeta, type ChannelResult, type ChannelWsOptions, type ChannelWsSession, type CommandDef, type ContextConfig, type ContextFieldDef, type ContextManifestEntry, type DefinitionMap, type DevProxyOptions, type ErrorCode, type HandlePageResult, type HandleResult, type HttpBodyResponse, type HttpHandler, type HttpHandlerOptions, type HttpRequest, type HttpResponse, type HttpStreamResponse, type I18nConfig, type I18nOpts, type IncomingDef, type Infer, type InvalidateTarget, type LayoutDef, type LoaderError, type LoaderFn, type MappingValue, type NormalizedInvalidateTarget, type NormalizedMappingValue, type OptionalSchemaNode, type PageDef, type PageRequestHeaders, type PageTiming, type ProcedureDef, type ProcedureEntry, type ProcedureKind, type ProcedureManifest, type ProcedureType, type QueryDef, type RawContextMap, type ReloadWatcher, type ResolveData, type ResolveStrategy, type Router, type RouterOptions, type RpcHashMap, type SchemaNode, type SeamDefine, SeamError, type SeamFileHandle, type SseOptions, type StaticHandlerOptions, type StreamDef, type SubscriptionDef, type TransportConfig, type TransportPreference, type TypedContextFieldDef, type UploadDef, type ValidationConfig, type ValidationDetail, type ValidationMode, type WsSink, buildRawContext, command, contextHasExtracts, createChannel, createDevProxy, createHttpHandler, createRouter, createSeamRouter, createStaticHandler, defaultStrategies, definePage, drainStream, extract, fromAcceptLanguage, fromCallback, fromCookie, fromUrlPrefix, fromUrlQuery, isLoaderError, loadBuild, loadBuildDev, loadBuildOutput, loadBuildOutputDev, loadI18nMessages, loadRpcHashMap, parseCookieHeader, query, resolveChain, serialize, sseCompleteEvent, sseDataEvent, sseDataEventWithId, sseErrorEvent, startChannelWs, stream, subscription, t, toWebResponse, upload, watchReloadTrigger };
409
684
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/schema.ts","../src/types/primitives.ts","../src/types/composites.ts","../src/types/index.ts","../src/channel.ts","../src/manifest/index.ts","../src/procedure.ts","../src/router/handler.ts","../src/page/index.ts","../src/page/handler.ts","../src/resolve.ts","../src/router/index.ts","../src/errors.ts","../src/http.ts","../src/page/build-loader.ts","../src/subscription.ts","../src/ws.ts","../src/proxy.ts","../src/dev/reload-watcher.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/schema.ts","../src/types/primitives.ts","../src/types/composites.ts","../src/types/index.ts","../src/procedure.ts","../src/http.ts","../src/channel.ts","../src/context.ts","../src/manifest/index.ts","../src/router/handler.ts","../src/page/index.ts","../src/page/handler.ts","../src/resolve.ts","../src/router/index.ts","../src/factory.ts","../src/seam-router.ts","../src/errors.ts","../src/page/loader-error.ts","../src/page/build-loader.ts","../src/subscription.ts","../src/ws.ts","../src/proxy.ts","../src/dev/reload-watcher.ts","../src/validation/index.ts"],"mappings":"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"}