@usetoki/toki 0.1.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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +177 -0
  3. package/dist/app.d.ts +137 -0
  4. package/dist/app.js +608 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/cookies.d.ts +17 -0
  7. package/dist/cookies.js +54 -0
  8. package/dist/cookies.js.map +1 -0
  9. package/dist/forms.d.ts +13 -0
  10. package/dist/forms.js +64 -0
  11. package/dist/forms.js.map +1 -0
  12. package/dist/group.d.ts +19 -0
  13. package/dist/group.js +51 -0
  14. package/dist/group.js.map +1 -0
  15. package/dist/index.d.ts +19 -0
  16. package/dist/index.js +11 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/inject.d.ts +19 -0
  19. package/dist/inject.js +56 -0
  20. package/dist/inject.js.map +1 -0
  21. package/dist/jwt.d.ts +57 -0
  22. package/dist/jwt.js +128 -0
  23. package/dist/jwt.js.map +1 -0
  24. package/dist/logger.d.ts +7 -0
  25. package/dist/logger.js +45 -0
  26. package/dist/logger.js.map +1 -0
  27. package/dist/middleware.d.ts +38 -0
  28. package/dist/middleware.js +133 -0
  29. package/dist/middleware.js.map +1 -0
  30. package/dist/native.d.ts +81 -0
  31. package/dist/native.js +38 -0
  32. package/dist/native.js.map +1 -0
  33. package/dist/pipeline.d.ts +16 -0
  34. package/dist/pipeline.js +125 -0
  35. package/dist/pipeline.js.map +1 -0
  36. package/dist/request.d.ts +65 -0
  37. package/dist/request.js +170 -0
  38. package/dist/request.js.map +1 -0
  39. package/dist/response.d.ts +33 -0
  40. package/dist/response.js +92 -0
  41. package/dist/response.js.map +1 -0
  42. package/dist/schema.d.ts +45 -0
  43. package/dist/schema.js +179 -0
  44. package/dist/schema.js.map +1 -0
  45. package/dist/static.d.ts +20 -0
  46. package/dist/static.js +105 -0
  47. package/dist/static.js.map +1 -0
  48. package/dist/types.d.ts +88 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +63 -0
package/dist/app.js ADDED
@@ -0,0 +1,608 @@
1
+ import { joinPaths, RouteGroup } from "./group.js";
2
+ import { inject } from "./inject.js";
3
+ import { resolveLogger } from "./logger.js";
4
+ import { corsHeaders, corsPreflight } from "./middleware.js";
5
+ import { native, } from "./native.js";
6
+ import { contentTypeMatcher, isThenable, materialize, runAfter, runBefore, runSerialization, validationStep, } from "./pipeline.js";
7
+ import { TokiRequest } from "./request.js";
8
+ import { isStreamResponse, isTokiResponse, reply, toNative } from "./response.js";
9
+ import { buildStaticEntries } from "./static.js";
10
+ const NO_MIDDLEWARE = [];
11
+ // must match `not_found_index` in Zig
12
+ const NOT_FOUND_INDEX = 0xffffffff;
13
+ // pause a stream producer once the connection's write backlog passes this (1 MiB)
14
+ const STREAM_HIGH_WATER = 1 << 20;
15
+ function streamHeaderBlock(stream, staged) {
16
+ let headers = "";
17
+ for (const [name, value] of staged) {
18
+ headers += `${name}: ${value}\r\n`;
19
+ }
20
+ headers += `Content-Type: ${stream.contentType}\r\n`;
21
+ for (const [name, value] of stream.headers) {
22
+ headers += `${name}: ${value}\r\n`;
23
+ }
24
+ return headers;
25
+ }
26
+ function asArray(value) {
27
+ return value === undefined ? [] : Array.isArray(value) ? value : [value];
28
+ }
29
+ /**
30
+ * Encapsulated registration scope: own hooks, middleware, request decorators,
31
+ * error handler, and path prefix. Routes here run the hook chains of this scope
32
+ * and all ancestors. The root app ({@link Toki}) is itself a scope; {@link
33
+ * Scope.register} creates children.
34
+ */
35
+ export class Scope {
36
+ parent;
37
+ prefix;
38
+ onRequest = [];
39
+ preParsing = [];
40
+ middleware = [];
41
+ preValidation = [];
42
+ preHandler = [];
43
+ preSerialization = [];
44
+ onResponse = [];
45
+ onSend = [];
46
+ onTimeout = [];
47
+ requestDecorators = {};
48
+ contentTypeParsers = [];
49
+ plugins = [];
50
+ errorHandler;
51
+ constructor(parent, prefix) {
52
+ this.parent = parent;
53
+ this.prefix = prefix;
54
+ }
55
+ get root() {
56
+ return this.parent ? this.parent.root : this;
57
+ }
58
+ get log() {
59
+ return this.root._logger;
60
+ }
61
+ get(path, a, b) {
62
+ return this.#add("GET", path, a, b);
63
+ }
64
+ post(path, a, b) {
65
+ return this.#add("POST", path, a, b);
66
+ }
67
+ put(path, a, b) {
68
+ return this.#add("PUT", path, a, b);
69
+ }
70
+ patch(path, a, b) {
71
+ return this.#add("PATCH", path, a, b);
72
+ }
73
+ delete(path, a, b) {
74
+ return this.#add("DELETE", path, a, b);
75
+ }
76
+ head(path, handler) {
77
+ return this.#add("HEAD", path, handler);
78
+ }
79
+ options(path, handler) {
80
+ return this.#add("OPTIONS", path, handler);
81
+ }
82
+ route(method, path, handler) {
83
+ return this.#add(method, path, handler);
84
+ }
85
+ #add(method, path, a, b) {
86
+ const [options, handler] = typeof a === "function" ? [{}, a] : [a, b];
87
+ this.root._pushRoute({
88
+ method,
89
+ path: joinPaths(this.prefix, path),
90
+ handler,
91
+ options,
92
+ groupMiddleware: NO_MIDDLEWARE,
93
+ scope: this,
94
+ });
95
+ return this;
96
+ }
97
+ /** Add middleware; runs before every handler in this scope and descendants. */
98
+ use(middleware) {
99
+ this.middleware.push(middleware);
100
+ return this;
101
+ }
102
+ addHook(name, fn) {
103
+ switch (name) {
104
+ case "onResponse":
105
+ this.onResponse.push(fn);
106
+ break;
107
+ case "onSend":
108
+ this.onSend.push(fn);
109
+ break;
110
+ case "preParsing":
111
+ this.preParsing.push(fn);
112
+ break;
113
+ case "preValidation":
114
+ this.preValidation.push(fn);
115
+ break;
116
+ case "preHandler":
117
+ this.preHandler.push(fn);
118
+ break;
119
+ case "preSerialization":
120
+ this.preSerialization.push(fn);
121
+ break;
122
+ case "onTimeout":
123
+ this.onTimeout.push(fn);
124
+ break;
125
+ default:
126
+ this.onRequest.push(fn);
127
+ }
128
+ return this;
129
+ }
130
+ /** Set the error handler for routes in this scope (alias: `onError`). */
131
+ setErrorHandler(handler) {
132
+ this.errorHandler = handler;
133
+ return this;
134
+ }
135
+ onError(handler) {
136
+ return this.setErrorHandler(handler);
137
+ }
138
+ /** Attach a property to every request handled in this scope. */
139
+ decorateRequest(name, value) {
140
+ this.requestDecorators[name] = value;
141
+ return this;
142
+ }
143
+ /**
144
+ * Register a body parser for one or more content types, consulted by
145
+ * `req.parseBody()`. `type` matches case-insensitively as a prefix (e.g.
146
+ * `"application/xml"`), a `RegExp`, or `"*"` for any. A child scope overrides
147
+ * an ancestor for the same type.
148
+ */
149
+ addContentTypeParser(type, parser) {
150
+ const tests = Array.isArray(type) ? type : [type];
151
+ for (const t of tests) {
152
+ this.contentTypeParsers.push({ test: contentTypeMatcher(t), parser });
153
+ }
154
+ return this;
155
+ }
156
+ /** Attach a property to the application instance (app-global, not encapsulated). */
157
+ decorate(name, value) {
158
+ this.root._decorate(name, value);
159
+ return this;
160
+ }
161
+ /** Set the handler for unmatched routes (app-global). */
162
+ setNotFoundHandler(handler) {
163
+ this.root._setNotFound(handler);
164
+ return this;
165
+ }
166
+ /** Enable CORS: stage headers on every response and answer preflight `OPTIONS`. */
167
+ cors(options = {}) {
168
+ this.use(corsHeaders(options));
169
+ this.options("/*", corsPreflight(options));
170
+ return this;
171
+ }
172
+ /** Serve files under `dir` at `urlPrefix` (joined with this scope's prefix). */
173
+ static(urlPrefix, dir, options) {
174
+ this.root._mountStatic(joinPaths(this.prefix, urlPrefix), dir, options);
175
+ return this;
176
+ }
177
+ /** Register a prefixed group of routes with its own middleware. */
178
+ group(prefix, build) {
179
+ const group = new RouteGroup(prefix, (method, path, handler, middleware) => {
180
+ this.root._pushRoute({
181
+ method,
182
+ path: joinPaths(this.prefix, path),
183
+ handler,
184
+ options: {},
185
+ groupMiddleware: middleware,
186
+ scope: this,
187
+ });
188
+ });
189
+ build(group);
190
+ return this;
191
+ }
192
+ /**
193
+ * Register a plugin into a fresh child scope. The plugin receives that scope as
194
+ * its `instance`; routes/hooks/decorators it adds are encapsulated there (and
195
+ * inherited by its own children), not leaked to the parent. Async plugins load
196
+ * during {@link Toki.ready}. `opts.prefix` mounts the plugin's routes under a path.
197
+ */
198
+ register(plugin, opts = {}) {
199
+ const prefix = joinPaths(this.prefix, typeof opts.prefix === "string" ? opts.prefix : "/");
200
+ this.plugins.push({ plugin, opts, scope: new Scope(this, prefix) });
201
+ return this;
202
+ }
203
+ }
204
+ /**
205
+ * The application. Register routes (optionally with a validation schema and
206
+ * route-scoped hooks), global hooks, middleware, and plugins, then
207
+ * {@link Toki.listen}. The pipeline stays synchronous until a step returns a
208
+ * `Promise`, keeping the common sync request on the fast path.
209
+ */
210
+ export class Toki extends Scope {
211
+ #routes = [];
212
+ #onReady = [];
213
+ #onClose = [];
214
+ #staticMounts = [];
215
+ #loggerInstance;
216
+ #requestTimeoutMs;
217
+ #notFoundHandler;
218
+ #compiled = [];
219
+ #compiledNotFound;
220
+ #booted = false;
221
+ #boundPort = 0;
222
+ #listening = false;
223
+ constructor(options = {}) {
224
+ super(undefined, "");
225
+ this.#loggerInstance = resolveLogger(options.logger);
226
+ this.#requestTimeoutMs = options.requestTimeoutMs ?? 0;
227
+ }
228
+ /** @internal */
229
+ get _logger() {
230
+ return this.#loggerInstance;
231
+ }
232
+ /** @internal */
233
+ _pushRoute(route) {
234
+ this.#routes.push(route);
235
+ }
236
+ /** @internal */
237
+ _decorate(name, value) {
238
+ this[name] = value;
239
+ }
240
+ /** @internal */
241
+ _setNotFound(handler) {
242
+ this.#notFoundHandler = handler;
243
+ }
244
+ /** @internal */
245
+ _mountStatic(prefix, dir, options) {
246
+ this.#staticMounts.push({ prefix, dir, ...(options ? { options } : {}) });
247
+ }
248
+ /** Run `fn` once at {@link Toki.listen}, before serving. */
249
+ onReady(fn) {
250
+ this.#onReady.push(fn);
251
+ return this;
252
+ }
253
+ /** Run `fn` when the server closes. */
254
+ onClose(fn) {
255
+ this.#onClose.push(fn);
256
+ return this;
257
+ }
258
+ /** Load all registered plugins, awaiting async ones. Call before {@link Toki.listen}
259
+ * when any plugin is async; `listen` loads sync plugins on its own. */
260
+ async ready() {
261
+ if (this.#booted) {
262
+ return;
263
+ }
264
+ await loadPluginsAsync(this);
265
+ this.#booted = true;
266
+ }
267
+ /** Bind `port` and serve. Returns a handle whose `close()` stops the server. */
268
+ listen(port, options = {}) {
269
+ this.#bootSync();
270
+ for (const ready of this.#onReady) {
271
+ this.#runLifecycle(ready, "onReady");
272
+ }
273
+ this.#compileAll();
274
+ const methods = this.#routes.map((r) => r.method);
275
+ const paths = this.#routes.map((r) => r.path);
276
+ const staticEntries = this.#staticMounts.flatMap((mount) => buildStaticEntries(mount.prefix, mount.dir, mount.options));
277
+ const serverOptions = {
278
+ ...options,
279
+ notFound: this.#compiledNotFound !== undefined,
280
+ };
281
+ if (options.rateLimit) {
282
+ serverOptions.rateLimitMax = options.rateLimit.max;
283
+ serverOptions.rateLimitWindowMs = options.rateLimit.windowMs;
284
+ }
285
+ this.#boundPort = native.listen(port, methods, paths, (raw) => this.#dispatch(raw), staticEntries, serverOptions);
286
+ this.#listening = true;
287
+ return {
288
+ close: () => {
289
+ for (const fn of this.#onClose) {
290
+ this.#runLifecycle(fn, "onClose");
291
+ }
292
+ this.#listening = false;
293
+ native.close();
294
+ },
295
+ };
296
+ }
297
+ /**
298
+ * Inject a request in-process for testing. Sends a real request over loopback so
299
+ * the full native path runs, auto-binding an ephemeral port when not already
300
+ * listening. Returns the captured response.
301
+ */
302
+ async inject(options) {
303
+ if (!this.#listening) {
304
+ this.listen(0, { host: "127.0.0.1" });
305
+ }
306
+ return inject(this.#boundPort, options);
307
+ }
308
+ /** Loads sync plugins; throws if any plugin is async (call `ready()` first). */
309
+ #bootSync() {
310
+ if (this.#booted) {
311
+ return;
312
+ }
313
+ loadPluginsSync(this);
314
+ this.#booted = true;
315
+ }
316
+ #compileAll() {
317
+ this.#compiled = this.#routes.map((route) => this.#compile(route));
318
+ this.#compiledNotFound =
319
+ this.#notFoundHandler !== undefined
320
+ ? this.#compileNotFound(this.#notFoundHandler)
321
+ : undefined;
322
+ }
323
+ // resolve a route's chains by walking scope ancestry (root → leaf). order:
324
+ // onRequest → use → group → preValidation → (validation) → preHandler → handler →
325
+ // onResponse → onSend, each phase running outer scopes before inner ones.
326
+ #compile(route) {
327
+ const chain = ancestry(route.scope);
328
+ const before = [];
329
+ for (const s of chain)
330
+ before.push(...s.onRequest);
331
+ for (const s of chain)
332
+ before.push(...s.preParsing);
333
+ for (const s of chain)
334
+ before.push(...s.middleware);
335
+ before.push(...route.groupMiddleware);
336
+ for (const s of chain)
337
+ before.push(...s.preValidation);
338
+ before.push(...asArray(route.options.preValidation));
339
+ if (route.options.schema) {
340
+ before.push(validationStep(route.options.schema));
341
+ }
342
+ for (const s of chain)
343
+ before.push(...s.preHandler);
344
+ before.push(...asArray(route.options.preHandler));
345
+ const after = [];
346
+ for (const s of chain)
347
+ after.push(...s.onResponse);
348
+ for (const s of chain)
349
+ after.push(...s.onSend);
350
+ const serialization = [];
351
+ for (const s of chain)
352
+ serialization.push(...s.preSerialization);
353
+ serialization.push(...asArray(route.options.preSerialization));
354
+ // parsers resolve nearest-scope-first (leaf → root)
355
+ const parsers = [];
356
+ for (let i = chain.length - 1; i >= 0; i--)
357
+ parsers.push(...chain[i].contentTypeParsers);
358
+ const onTimeout = [];
359
+ for (const s of chain)
360
+ onTimeout.push(...s.onTimeout);
361
+ const decorators = Object.assign({}, ...chain.map((s) => s.requestDecorators));
362
+ let errorHandler;
363
+ for (const s of chain) {
364
+ if (s.errorHandler)
365
+ errorHandler = s.errorHandler;
366
+ }
367
+ const compiled = {
368
+ handler: route.handler,
369
+ before,
370
+ after,
371
+ serialization,
372
+ onTimeout,
373
+ parsers,
374
+ decorators,
375
+ };
376
+ const withError = errorHandler ? { ...compiled, errorHandler } : compiled;
377
+ return route.options.schema?.response
378
+ ? { ...withError, responseSchemas: route.options.schema.response }
379
+ : withError;
380
+ }
381
+ // not-found handler runs the root chains, defaults to 404
382
+ #compileNotFound(handler) {
383
+ return {
384
+ handler,
385
+ before: [
386
+ ...this.onRequest,
387
+ ...this.preParsing,
388
+ ...this.middleware,
389
+ ...this.preValidation,
390
+ ...this.preHandler,
391
+ ],
392
+ after: [...this.onResponse, ...this.onSend],
393
+ serialization: [...this.preSerialization],
394
+ onTimeout: [...this.onTimeout],
395
+ parsers: [...this.contentTypeParsers],
396
+ decorators: this.requestDecorators,
397
+ ...(this.errorHandler ? { errorHandler: this.errorHandler } : {}),
398
+ defaultStatus: 404,
399
+ };
400
+ }
401
+ #dispatch(raw) {
402
+ const route = raw.routeIndex === NOT_FOUND_INDEX ? this.#compiledNotFound : this.#compiled[raw.routeIndex];
403
+ if (route === undefined) {
404
+ return toNative(reply.empty(raw.routeIndex === NOT_FOUND_INDEX ? 404 : 500));
405
+ }
406
+ const req = new TokiRequest(raw, { log: this.#loggerInstance, parsers: route.parsers });
407
+ Object.assign(req, route.decorators);
408
+ try {
409
+ const outcome = this.#run(req, route);
410
+ if (isThenable(outcome)) {
411
+ const id = raw.dispatchId;
412
+ const timer = this.#armTimeout(id, req, route);
413
+ void Promise.resolve(outcome)
414
+ .then((result) => {
415
+ if (timer)
416
+ clearTimeout(timer);
417
+ this.#submit(id, req, result);
418
+ }, (error) => {
419
+ if (timer)
420
+ clearTimeout(timer);
421
+ this.#submit(id, req, this.#handleError(req, error, route.errorHandler));
422
+ })
423
+ .catch((error) => {
424
+ // last resort: a throw inside #submit itself (e.g. native call failed)
425
+ req.log.error("dispatch settle failed", { error: String(error) });
426
+ });
427
+ return undefined;
428
+ }
429
+ if (isStreamResponse(outcome)) {
430
+ // engine suspends the connection only on the `undefined` we return below,
431
+ // so drive the stream on the next microtask, not now
432
+ const id = raw.dispatchId;
433
+ queueMicrotask(() => this.#driveSafe(id, req, outcome));
434
+ return undefined;
435
+ }
436
+ return toNative(outcome, req.stagedResponseHeaders);
437
+ }
438
+ catch (error) {
439
+ return this.#safeToNative(this.#handleError(req, error, route.errorHandler), req);
440
+ }
441
+ }
442
+ #submit(id, req, result) {
443
+ if (isStreamResponse(result)) {
444
+ this.#driveSafe(id, req, result);
445
+ return;
446
+ }
447
+ native.submitResponse(id, this.#safeToNative(result, req));
448
+ }
449
+ // #drive owns its own try/finally, but startStream can throw before it; never let
450
+ // a stream turn into an unhandled rejection.
451
+ #driveSafe(id, req, stream) {
452
+ void this.#drive(id, req, stream).catch((error) => {
453
+ req.log.error("stream drive failed", { error: String(error) });
454
+ try {
455
+ native.endStream(id);
456
+ }
457
+ catch {
458
+ // connection already gone
459
+ }
460
+ });
461
+ }
462
+ // run an onReady/onClose hook without letting a sync throw or async rejection escape
463
+ #runLifecycle(fn, name) {
464
+ try {
465
+ const result = fn();
466
+ if (isThenable(result)) {
467
+ void result.catch((error) => this.#loggerInstance.error(`${name} hook failed`, { error: String(error) }));
468
+ }
469
+ }
470
+ catch (error) {
471
+ this.#loggerInstance.error(`${name} hook failed`, { error: String(error) });
472
+ }
473
+ }
474
+ // arm a timeout for an async dispatch: run onTimeout hooks and reply 408 if the
475
+ // handler hasn't settled in time. caller clears the returned timer on settle.
476
+ #armTimeout(id, req, route) {
477
+ if (this.#requestTimeoutMs <= 0) {
478
+ return undefined;
479
+ }
480
+ const timer = setTimeout(() => {
481
+ for (const hook of route.onTimeout) {
482
+ try {
483
+ void hook(req);
484
+ }
485
+ catch {
486
+ // a timeout hook must not break the timeout response
487
+ }
488
+ }
489
+ // no-op if the handler already settled (its dispatch id is consumed)
490
+ this.#submit(id, req, reply.text("Request Timeout", 408));
491
+ }, this.#requestTimeoutMs);
492
+ // a pending timeout must not keep the process alive
493
+ timer.unref?.();
494
+ return timer;
495
+ }
496
+ async #drive(id, req, stream) {
497
+ native.startStream(id, stream.status, streamHeaderBlock(stream, req.stagedResponseHeaders));
498
+ const encoder = new TextEncoder();
499
+ try {
500
+ for await (const chunk of stream.source) {
501
+ const bytes = typeof chunk === "string" ? encoder.encode(chunk) : chunk;
502
+ if (bytes.length === 0) {
503
+ continue;
504
+ }
505
+ const backlog = native.writeStreamChunk(id, bytes);
506
+ if (backlog < 0) {
507
+ return; // connection gone; endStream (in finally) is a no-op
508
+ }
509
+ if (backlog > STREAM_HIGH_WATER) {
510
+ await new Promise((resolve) => setTimeout(resolve, 1)); // let the socket drain
511
+ }
512
+ }
513
+ }
514
+ catch (error) {
515
+ req.log.error("stream source failed", { error: String(error) });
516
+ }
517
+ finally {
518
+ native.endStream(id);
519
+ }
520
+ }
521
+ #safeToNative(result, req) {
522
+ try {
523
+ return toNative(result, req.stagedResponseHeaders);
524
+ }
525
+ catch {
526
+ return toNative(reply.empty(500));
527
+ }
528
+ }
529
+ #run(req, route) {
530
+ const short = runBefore(route.before, req, 0);
531
+ if (isThenable(short)) {
532
+ return short.then((value) => this.#afterBefore(req, route, value));
533
+ }
534
+ return this.#afterBefore(req, route, short);
535
+ }
536
+ #afterBefore(req, route, shortCircuit) {
537
+ const result = shortCircuit !== undefined ? shortCircuit : route.handler(req);
538
+ if (isThenable(result)) {
539
+ return result.then((value) => this.#afterHandler(req, route, value));
540
+ }
541
+ return this.#afterHandler(req, route, result);
542
+ }
543
+ #afterHandler(req, route, result) {
544
+ // a stream has no materialized body, so it skips serialization, materialization,
545
+ // and response hooks; the dispatcher drives it
546
+ if (isStreamResponse(result)) {
547
+ return result;
548
+ }
549
+ // preSerialization only sees plain values bound for JSON, not a built reply or string
550
+ if (route.serialization.length > 0 && !isTokiResponse(result) && typeof result !== "string") {
551
+ const transformed = runSerialization(route.serialization, req, result, 0);
552
+ if (isThenable(transformed)) {
553
+ return transformed.then((value) => this.#finishResponse(req, route, value));
554
+ }
555
+ return this.#finishResponse(req, route, transformed);
556
+ }
557
+ return this.#finishResponse(req, route, result);
558
+ }
559
+ #finishResponse(req, route, result) {
560
+ const res = materialize(result, route);
561
+ if (route.after.length === 0) {
562
+ return res;
563
+ }
564
+ return runAfter(route.after, req, res, 0);
565
+ }
566
+ #handleError(req, error, errorHandler) {
567
+ req.log.error("request handler threw", { error: String(error) });
568
+ if (errorHandler !== undefined) {
569
+ try {
570
+ return errorHandler(req, error);
571
+ }
572
+ catch {
573
+ // error handler itself threw; fall through to the default
574
+ }
575
+ }
576
+ return reply.text("Internal Server Error", 500);
577
+ }
578
+ }
579
+ /** Create a new application. */
580
+ export function createApp(options) {
581
+ return new Toki(options);
582
+ }
583
+ // scope and all ancestors, ordered root → leaf
584
+ function ancestry(scope) {
585
+ const chain = [];
586
+ for (let s = scope; s; s = s.parent) {
587
+ chain.unshift(s);
588
+ }
589
+ return chain;
590
+ }
591
+ // load a scope's plugins depth-first; throws on the first async plugin
592
+ function loadPluginsSync(scope) {
593
+ for (const entry of scope.plugins) {
594
+ const result = entry.plugin(entry.scope, entry.opts);
595
+ if (isThenable(result)) {
596
+ throw new Error("async plugin registered — call `await app.ready()` before `listen()`");
597
+ }
598
+ loadPluginsSync(entry.scope);
599
+ }
600
+ }
601
+ // load a scope's plugins depth-first, awaiting each
602
+ async function loadPluginsAsync(scope) {
603
+ for (const entry of scope.plugins) {
604
+ await entry.plugin(entry.scope, entry.opts);
605
+ await loadPluginsAsync(entry.scope);
606
+ }
607
+ }
608
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../ts/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** Options for a `Set-Cookie` header. */
2
+ export interface CookieOptions {
3
+ path?: string;
4
+ domain?: string;
5
+ /** Lifetime in seconds. */
6
+ maxAge?: number;
7
+ expires?: Date;
8
+ httpOnly?: boolean;
9
+ secure?: boolean;
10
+ sameSite?: "Strict" | "Lax" | "None";
11
+ /** Chrome's cookie partitioning. */
12
+ partitioned?: boolean;
13
+ }
14
+ /** Parses a `Cookie` header into a name → value map. Duplicate names: first wins. */
15
+ export declare function parseCookies(header: string): Readonly<Record<string, string | undefined>>;
16
+ /** Serializes one `Set-Cookie` header value. Throws on an invalid name. */
17
+ export declare function serializeCookie(name: string, value: string, options?: CookieOptions): string;