@daloyjs/core 0.7.4 → 0.8.2
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 +33 -63
- package/dist/adapters/bun.d.ts +26 -4
- package/dist/adapters/bun.d.ts.map +1 -1
- package/dist/adapters/bun.js +16 -4
- package/dist/adapters/bun.js.map +1 -1
- package/dist/adapters/cloudflare.d.ts +21 -4
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/deno.d.ts +25 -2
- package/dist/adapters/deno.d.ts.map +1 -1
- package/dist/adapters/deno.js +39 -7
- package/dist/adapters/deno.js.map +1 -1
- package/dist/adapters/fastly.d.ts +23 -0
- package/dist/adapters/fastly.d.ts.map +1 -0
- package/dist/adapters/fastly.js +11 -0
- package/dist/adapters/fastly.js.map +1 -0
- package/dist/adapters/lambda.d.ts +67 -0
- package/dist/adapters/lambda.d.ts.map +1 -0
- package/dist/adapters/lambda.js +117 -0
- package/dist/adapters/lambda.js.map +1 -0
- package/dist/adapters/node.d.ts +7 -0
- package/dist/adapters/node.d.ts.map +1 -1
- package/dist/adapters/node.js +17 -4
- package/dist/adapters/node.js.map +1 -1
- package/dist/adapters/vercel.d.ts +35 -7
- package/dist/adapters/vercel.d.ts.map +1 -1
- package/dist/adapters/vercel.js +22 -1
- package/dist/adapters/vercel.js.map +1 -1
- package/dist/app.d.ts +235 -8
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +222 -8
- package/dist/app.js.map +1 -1
- package/dist/client.d.ts +27 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +27 -0
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +169 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +143 -0
- package/dist/errors.js.map +1 -1
- package/dist/logger.d.ts +26 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +26 -0
- package/dist/logger.js.map +1 -1
- package/dist/middleware.d.ts +143 -0
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +147 -4
- package/dist/middleware.js.map +1 -1
- package/dist/openapi.d.ts +32 -0
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +33 -2
- package/dist/openapi.js.map +1 -1
- package/dist/schema.d.ts +33 -2
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +33 -2
- package/dist/schema.js.map +1 -1
- package/dist/security-schemes.d.ts +75 -5
- package/dist/security-schemes.d.ts.map +1 -1
- package/dist/security-schemes.js +75 -5
- package/dist/security-schemes.js.map +1 -1
- package/dist/security.d.ts +73 -4
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +73 -4
- package/dist/security.js.map +1 -1
- package/dist/types.d.ts +195 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -1
package/dist/adapters/node.d.ts
CHANGED
|
@@ -15,6 +15,13 @@ export interface NodeServerOptions {
|
|
|
15
15
|
handleSignals?: boolean;
|
|
16
16
|
/** Maximum HTTP header size bytes (DoS protection). Default: 16 KiB. */
|
|
17
17
|
maxHeaderBytes?: number;
|
|
18
|
+
/**
|
|
19
|
+
* When true, honor `x-forwarded-proto` and `x-forwarded-host` headers when
|
|
20
|
+
* constructing the request URL. Enable this only when running behind a
|
|
21
|
+
* trusted reverse proxy (e.g. a TLS-terminating load balancer); otherwise
|
|
22
|
+
* clients can spoof the scheme/host. Default: false.
|
|
23
|
+
*/
|
|
24
|
+
trustProxy?: boolean;
|
|
18
25
|
}
|
|
19
26
|
export interface NodeServerHandle {
|
|
20
27
|
server: Server;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/adapters/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA2D,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/adapters/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA2D,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,iBAAsB,GAAG,gBAAgB,CAoD9E"}
|
package/dist/adapters/node.js
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
import { createServer } from "node:http";
|
|
6
6
|
import { Readable } from "node:stream";
|
|
7
7
|
export function serve(app, opts = {}) {
|
|
8
|
+
const trustProxy = opts.trustProxy === true;
|
|
8
9
|
const server = createServer({ maxHeaderSize: opts.maxHeaderBytes ?? 16 * 1024 }, async (req, res) => {
|
|
9
10
|
try {
|
|
10
|
-
const request = await toWebRequest(req);
|
|
11
|
+
const request = await toWebRequest(req, trustProxy);
|
|
11
12
|
const response = await app.fetch(request);
|
|
12
13
|
await sendWebResponse(response, res);
|
|
13
14
|
}
|
|
@@ -50,9 +51,12 @@ export function serve(app, opts = {}) {
|
|
|
50
51
|
}
|
|
51
52
|
return { server, port, close };
|
|
52
53
|
}
|
|
53
|
-
async function toWebRequest(req) {
|
|
54
|
-
const
|
|
55
|
-
const
|
|
54
|
+
async function toWebRequest(req, trustProxy) {
|
|
55
|
+
const forwardedHost = trustProxy ? firstHeader(req.headers["x-forwarded-host"]) : undefined;
|
|
56
|
+
const host = forwardedHost ?? req.headers.host ?? "localhost";
|
|
57
|
+
const forwardedProto = trustProxy ? firstHeader(req.headers["x-forwarded-proto"]) : undefined;
|
|
58
|
+
const proto = forwardedProto ?? (req.socket.encrypted ? "https" : "http");
|
|
59
|
+
const url = `${proto}://${host}${req.url ?? "/"}`;
|
|
56
60
|
const headers = new Headers();
|
|
57
61
|
for (const [k, v] of Object.entries(req.headers)) {
|
|
58
62
|
if (v === undefined)
|
|
@@ -70,6 +74,15 @@ async function toWebRequest(req) {
|
|
|
70
74
|
}
|
|
71
75
|
return new Request(url, init);
|
|
72
76
|
}
|
|
77
|
+
function firstHeader(v) {
|
|
78
|
+
if (v === undefined)
|
|
79
|
+
return undefined;
|
|
80
|
+
const raw = Array.isArray(v) ? v[0] : v;
|
|
81
|
+
if (raw === undefined)
|
|
82
|
+
return undefined;
|
|
83
|
+
const comma = raw.indexOf(",");
|
|
84
|
+
return (comma === -1 ? raw : raw.slice(0, comma)).trim() || undefined;
|
|
85
|
+
}
|
|
73
86
|
async function sendWebResponse(res, out) {
|
|
74
87
|
out.statusCode = res.status;
|
|
75
88
|
res.headers.forEach((v, k) => out.setHeader(k, v));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/adapters/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/adapters/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Vercel
|
|
2
|
+
* Vercel / web-standard handler.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Vercel now recommends the Node.js runtime over Edge for new functions. The
|
|
5
|
+
* runtime is web-standard, but the export shape differs by integration: Node
|
|
6
|
+
* `/api` functions use a default `{ fetch }` object, while Edge functions and
|
|
7
|
+
* Next.js route handlers use function exports.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* // Vercel Functions (`api/[...path].ts`)
|
|
10
|
+
* import { toFetchHandler } from "@daloyjs/core/vercel";
|
|
11
|
+
* export default toFetchHandler(app);
|
|
12
|
+
*
|
|
13
|
+
* // Next.js App Router (`app/api/[...slug]/route.ts`)
|
|
14
|
+
* import { toRouteHandlers } from "@daloyjs/core/vercel";
|
|
15
|
+
* export const { GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD } =
|
|
16
|
+
* toRouteHandlers(app);
|
|
17
|
+
*
|
|
18
|
+
* `toEdgeHandler` is kept as a backward-compatible alias of `toWebHandler`.
|
|
10
19
|
*/
|
|
11
20
|
import type { App } from "../app.js";
|
|
12
|
-
export
|
|
21
|
+
export type WebHandler = (req: Request) => Promise<Response>;
|
|
22
|
+
export interface FetchHandler {
|
|
23
|
+
fetch: WebHandler;
|
|
24
|
+
}
|
|
25
|
+
declare const NEXT_METHODS: readonly ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"];
|
|
26
|
+
export type RouteHandlers = Record<(typeof NEXT_METHODS)[number], WebHandler>;
|
|
27
|
+
export declare function toWebHandler(app: App): WebHandler;
|
|
28
|
+
/**
|
|
29
|
+
* Build the default `{ fetch }` export expected by Vercel Node.js Functions
|
|
30
|
+
* in the `/api` directory.
|
|
31
|
+
*/
|
|
32
|
+
export declare function toFetchHandler(app: App): FetchHandler;
|
|
33
|
+
/** Backward-compatible alias for {@link toWebHandler}. */
|
|
34
|
+
export declare const toEdgeHandler: typeof toWebHandler;
|
|
35
|
+
/**
|
|
36
|
+
* Build the `{ GET, POST, ... }` object expected by Next.js App Router
|
|
37
|
+
* `route.ts` files, so a single catch-all segment can serve every HTTP method.
|
|
38
|
+
*/
|
|
39
|
+
export declare function toRouteHandlers(app: App): RouteHandlers;
|
|
40
|
+
export {};
|
|
13
41
|
//# sourceMappingURL=vercel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/adapters/vercel.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/adapters/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,QAAA,MAAM,YAAY,uEAAwE,CAAC;AAC3F,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;AAE9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,CAEjD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAErD;AAED,0DAA0D;AAC1D,eAAO,MAAM,aAAa,qBAAe,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAKvD"}
|
package/dist/adapters/vercel.js
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
const NEXT_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"];
|
|
2
|
+
export function toWebHandler(app) {
|
|
2
3
|
return (req) => app.fetch(req);
|
|
3
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* Build the default `{ fetch }` export expected by Vercel Node.js Functions
|
|
7
|
+
* in the `/api` directory.
|
|
8
|
+
*/
|
|
9
|
+
export function toFetchHandler(app) {
|
|
10
|
+
return { fetch: toWebHandler(app) };
|
|
11
|
+
}
|
|
12
|
+
/** Backward-compatible alias for {@link toWebHandler}. */
|
|
13
|
+
export const toEdgeHandler = toWebHandler;
|
|
14
|
+
/**
|
|
15
|
+
* Build the `{ GET, POST, ... }` object expected by Next.js App Router
|
|
16
|
+
* `route.ts` files, so a single catch-all segment can serve every HTTP method.
|
|
17
|
+
*/
|
|
18
|
+
export function toRouteHandlers(app) {
|
|
19
|
+
const handler = toWebHandler(app);
|
|
20
|
+
const out = {};
|
|
21
|
+
for (const method of NEXT_METHODS)
|
|
22
|
+
out[method] = handler;
|
|
23
|
+
return out;
|
|
24
|
+
}
|
|
4
25
|
//# sourceMappingURL=vercel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/adapters/vercel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/adapters/vercel.ts"],"names":[],"mappings":"AA0BA,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAG3F,MAAM,UAAU,YAAY,CAAC,GAAQ;IACnC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAQ;IACrC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAQ;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,EAAmB,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,YAAY;QAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IACzD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/app.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { type Logger } from "./logger.js";
|
|
2
2
|
import type { HttpMethod, Hooks, PathString, RequestSchemas, ResponsesMap, RouteDefinition } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Configuration accepted by {@link App}'s constructor. Every field is
|
|
5
|
+
* optional; sensible production defaults are applied.
|
|
6
|
+
*
|
|
7
|
+
* @since 0.1.0
|
|
8
|
+
*/
|
|
3
9
|
export interface AppOptions {
|
|
4
10
|
/** OpenAPI document metadata */
|
|
5
11
|
title?: string;
|
|
@@ -55,6 +61,13 @@ export interface ShutdownEvent {
|
|
|
55
61
|
/** Drain timeout (ms) the shutdown will use after listeners finish. */
|
|
56
62
|
timeoutMs: number;
|
|
57
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Lightweight introspection record produced by {@link App.introspect}. Useful
|
|
66
|
+
* for tooling (dead-route checks, custom dashboards) that needs to enumerate
|
|
67
|
+
* the registered surface without parsing the OpenAPI document.
|
|
68
|
+
*
|
|
69
|
+
* @since 0.1.0
|
|
70
|
+
*/
|
|
58
71
|
export interface IntrospectedRoute {
|
|
59
72
|
method: HttpMethod;
|
|
60
73
|
path: string;
|
|
@@ -73,6 +86,55 @@ export interface IntrospectedRoute {
|
|
|
73
86
|
scopes?: string[];
|
|
74
87
|
};
|
|
75
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Contract-first HTTP application.
|
|
91
|
+
*
|
|
92
|
+
* `App` is the top-level entry point: register {@link RouteDefinition routes}
|
|
93
|
+
* with {@link App.route}, layer cross-cutting behavior with
|
|
94
|
+
* {@link App.use}/{@link App.register}, then expose the application to a
|
|
95
|
+
* runtime via {@link App.fetch} (Web standard) or one of the adapter subpaths
|
|
96
|
+
* such as `@daloyjs/core/node`, `@daloyjs/core/cloudflare`, or
|
|
97
|
+
* `@daloyjs/core/lambda`.
|
|
98
|
+
*
|
|
99
|
+
* The same `App` instance powers:
|
|
100
|
+
*
|
|
101
|
+
* - request routing (`Router` under the hood)
|
|
102
|
+
* - request/response validation against Standard-Schema validators
|
|
103
|
+
* - OpenAPI 3.1 generation (`generateOpenAPI(app)`)
|
|
104
|
+
* - typed in-process client (`createClient(app)`) and generated SDK
|
|
105
|
+
* - graceful shutdown and lifecycle observability
|
|
106
|
+
*
|
|
107
|
+
* `App` is **runtime-agnostic**: the same instance runs on Node, Bun, Deno,
|
|
108
|
+
* Cloudflare Workers, Vercel Edge, AWS Lambda, and Fastly Compute via the
|
|
109
|
+
* dedicated adapters.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* import { App, secureHeaders } from "@daloyjs/core";
|
|
114
|
+
* import { z } from "zod";
|
|
115
|
+
*
|
|
116
|
+
* const app = new App({ title: "Books API", version: "1.0.0" });
|
|
117
|
+
*
|
|
118
|
+
* app.use(secureHeaders());
|
|
119
|
+
*
|
|
120
|
+
* app.route({
|
|
121
|
+
* method: "GET",
|
|
122
|
+
* path: "/books/:id",
|
|
123
|
+
* operationId: "getBook",
|
|
124
|
+
* request: { params: z.object({ id: z.uuid() }) },
|
|
125
|
+
* responses: {
|
|
126
|
+
* 200: { description: "OK", body: z.object({ id: z.string(), title: z.string() }) },
|
|
127
|
+
* },
|
|
128
|
+
* handler: ({ params }) => ({ status: 200, body: { id: params.id, title: "Dune" } }),
|
|
129
|
+
* });
|
|
130
|
+
*
|
|
131
|
+
* // Node:
|
|
132
|
+
* import { serve } from "@daloyjs/core/node";
|
|
133
|
+
* serve(app, { port: 3000 });
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* @since 0.1.0
|
|
137
|
+
*/
|
|
76
138
|
export declare class App {
|
|
77
139
|
readonly options: Required<Pick<AppOptions, "validateResponses" | "bodyLimitBytes" | "requestTimeoutMs">> & AppOptions;
|
|
78
140
|
readonly log: Logger;
|
|
@@ -96,18 +158,114 @@ export declare class App {
|
|
|
96
158
|
private inflight;
|
|
97
159
|
private draining;
|
|
98
160
|
constructor(options?: AppOptions);
|
|
161
|
+
/**
|
|
162
|
+
* Register a single route on the application.
|
|
163
|
+
*
|
|
164
|
+
* The supplied {@link RouteDefinition} is the **single source of truth**
|
|
165
|
+
* for that endpoint — routing, request/response validation, OpenAPI
|
|
166
|
+
* documentation, and the typed client SDK all derive from this one call.
|
|
167
|
+
* Generic parameters are inferred from `path`, `method`, `request`, and
|
|
168
|
+
* `responses`; you should rarely need to specify them explicitly.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* app.route({
|
|
173
|
+
* method: "POST",
|
|
174
|
+
* path: "/books",
|
|
175
|
+
* operationId: "createBook",
|
|
176
|
+
* request: { body: z.object({ title: z.string().min(1) }) },
|
|
177
|
+
* responses: { 201: { description: "Created" } },
|
|
178
|
+
* handler: ({ body }) => ({ status: 201, body: { id: "1", title: body.title } }),
|
|
179
|
+
* });
|
|
180
|
+
* ```
|
|
181
|
+
*
|
|
182
|
+
* @param def - The route definition.
|
|
183
|
+
* @returns This `App` instance for chaining.
|
|
184
|
+
*/
|
|
99
185
|
route<P extends PathString, M extends HttpMethod, Req extends RequestSchemas | undefined, Res extends ResponsesMap>(def: RouteDefinition<P, M, Req, Res>): this;
|
|
100
|
-
/**
|
|
186
|
+
/**
|
|
187
|
+
* Mount a group of routes under a shared prefix with shared tags, hooks,
|
|
188
|
+
* and authentication. The `register` callback receives an encapsulated
|
|
189
|
+
* child `App` whose `route()` calls inherit the prefix and group config.
|
|
190
|
+
* Hooks and tags are merged with any further `app.use(...)` / route-level
|
|
191
|
+
* entries.
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```ts
|
|
195
|
+
* app.group("/admin", { tags: ["admin"] }, (admin) => {
|
|
196
|
+
* admin.route({
|
|
197
|
+
* method: "GET",
|
|
198
|
+
* path: "/users",
|
|
199
|
+
* responses: { 200: { description: "OK" } },
|
|
200
|
+
* handler: () => ({ status: 200, body: [] }),
|
|
201
|
+
* });
|
|
202
|
+
* });
|
|
203
|
+
* ```
|
|
204
|
+
*
|
|
205
|
+
* @param prefix - Path prefix prepended to every route registered in `register`.
|
|
206
|
+
* @param config - Shared metadata: tags, hooks, and auth requirement.
|
|
207
|
+
* @param register - Callback that registers the grouped routes on the child app.
|
|
208
|
+
* @returns This `App` instance for chaining.
|
|
209
|
+
*/
|
|
101
210
|
group(prefix: PathString, config: {
|
|
102
211
|
tags?: string[];
|
|
103
212
|
hooks?: Hooks;
|
|
104
213
|
auth?: RouteDefinition["auth"];
|
|
105
214
|
}, register: (app: App) => void): this;
|
|
106
|
-
/**
|
|
215
|
+
/**
|
|
216
|
+
* Attach a hook layer that applies to every route registered **afterwards**.
|
|
217
|
+
*
|
|
218
|
+
* Use this for cross-cutting middleware (CORS, secure headers, auth
|
|
219
|
+
* bouncers). Hooks compose pipeline-style — see {@link Hooks} for ordering.
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```ts
|
|
223
|
+
* import { secureHeaders, cors } from "@daloyjs/core";
|
|
224
|
+
*
|
|
225
|
+
* app.use(secureHeaders());
|
|
226
|
+
* app.use(cors({ origin: "https://app.example.com", credentials: true }));
|
|
227
|
+
* ```
|
|
228
|
+
*
|
|
229
|
+
* @param hooks - Hook bundle applied to subsequent routes.
|
|
230
|
+
* @returns This `App` instance for chaining.
|
|
231
|
+
*/
|
|
107
232
|
use(hooks: Hooks): this;
|
|
108
|
-
/**
|
|
233
|
+
/**
|
|
234
|
+
* Decorate `ctx.state` with a value available inside every handler and hook.
|
|
235
|
+
*
|
|
236
|
+
* Augment the {@link AppState} interface to type the decoration globally:
|
|
237
|
+
*
|
|
238
|
+
* ```ts
|
|
239
|
+
* declare module "@daloyjs/core" {
|
|
240
|
+
* interface AppState { db: Database }
|
|
241
|
+
* }
|
|
242
|
+
*
|
|
243
|
+
* app.decorate("db", db);
|
|
244
|
+
*
|
|
245
|
+
* app.route({
|
|
246
|
+
* method: "GET",
|
|
247
|
+
* path: "/health",
|
|
248
|
+
* responses: { 200: { description: "OK" } },
|
|
249
|
+
* handler: ({ state }) => ({ status: 200, body: state.db.ping() }),
|
|
250
|
+
* });
|
|
251
|
+
* ```
|
|
252
|
+
*
|
|
253
|
+
* @param key - Property name on `ctx.state`.
|
|
254
|
+
* @param value - Value bound to that property on every request.
|
|
255
|
+
* @returns This `App` instance for chaining.
|
|
256
|
+
*/
|
|
109
257
|
decorate<K extends string, V>(key: K, value: V): this;
|
|
110
|
-
/**
|
|
258
|
+
/**
|
|
259
|
+
* Register a callback to run once during graceful shutdown, **after** all
|
|
260
|
+
* in-flight requests have drained. Use this to close database pools, flush
|
|
261
|
+
* metrics, or release any other long-lived resources.
|
|
262
|
+
*
|
|
263
|
+
* For listeners that need to fire **before** draining starts (e.g. to tell
|
|
264
|
+
* a load balancer the instance is going away), use {@link App.onShutdown}.
|
|
265
|
+
*
|
|
266
|
+
* @param hook - Async or sync cleanup function. Errors are swallowed and logged.
|
|
267
|
+
* @returns This `App` instance for chaining.
|
|
268
|
+
*/
|
|
111
269
|
onClose(hook: () => void | Promise<void>): this;
|
|
112
270
|
/**
|
|
113
271
|
* Subscribe to plugin install events. The listener fires once per registered
|
|
@@ -137,15 +295,84 @@ export declare class App {
|
|
|
137
295
|
auth?: RouteDefinition["auth"];
|
|
138
296
|
}): this;
|
|
139
297
|
private firePluginInstalled;
|
|
140
|
-
/**
|
|
298
|
+
/**
|
|
299
|
+
* Wait until every async plugin registered with {@link App.register} has
|
|
300
|
+
* finished initializing. Call this after `register()` returns and **before**
|
|
301
|
+
* starting the server when any plugin's `register()` returns a `Promise`.
|
|
302
|
+
*
|
|
303
|
+
* Sync plugins also push observer promises here so `await app.ready()` is
|
|
304
|
+
* always safe to call.
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* ```ts
|
|
308
|
+
* app.register(metricsPlugin); // async
|
|
309
|
+
* await app.ready();
|
|
310
|
+
* serve(app, { port: 3000 });
|
|
311
|
+
* ```
|
|
312
|
+
*
|
|
313
|
+
* @returns Promise that resolves once all pending plugins have settled.
|
|
314
|
+
*/
|
|
141
315
|
ready(): Promise<void>;
|
|
316
|
+
/**
|
|
317
|
+
* Web-standard request handler. Accepts a `Request` and returns a `Response`.
|
|
318
|
+
* This is the universal entry point used by every runtime adapter; you may
|
|
319
|
+
* also call it directly from tests, Cloudflare Workers, or any other
|
|
320
|
+
* environment that speaks the Fetch API.
|
|
321
|
+
*
|
|
322
|
+
* During graceful shutdown this rejects new requests with `503` and a
|
|
323
|
+
* `Retry-After: 5` header.
|
|
324
|
+
*
|
|
325
|
+
* @example
|
|
326
|
+
* ```ts
|
|
327
|
+
* // Cloudflare Worker
|
|
328
|
+
* export default { fetch: (req) => app.fetch(req) };
|
|
329
|
+
* ```
|
|
330
|
+
*
|
|
331
|
+
* @param request - A standard `Request` object.
|
|
332
|
+
* @returns A standard `Response`. Errors thrown inside handlers are mapped
|
|
333
|
+
* to RFC 9457 `application/problem+json` automatically.
|
|
334
|
+
*/
|
|
142
335
|
fetch: (request: Request) => Promise<Response>;
|
|
143
|
-
/**
|
|
336
|
+
/**
|
|
337
|
+
* In-process test client. Accepts the same arguments as the global `fetch`
|
|
338
|
+
* but routes them through `this.fetch` without a network hop. Relative URLs
|
|
339
|
+
* (starting with `/`) are resolved against `http://test.local`.
|
|
340
|
+
*
|
|
341
|
+
* @example
|
|
342
|
+
* ```ts
|
|
343
|
+
* const res = await app.request("/books/123");
|
|
344
|
+
* assert.equal(res.status, 200);
|
|
345
|
+
* const json = await res.json();
|
|
346
|
+
* ```
|
|
347
|
+
*
|
|
348
|
+
* @param input - URL, path, or `Request` to dispatch.
|
|
349
|
+
* @param init - Standard `RequestInit` (ignored if `input` is a `Request`).
|
|
350
|
+
* @returns Fulfills with the `Response` produced by the matching handler.
|
|
351
|
+
*/
|
|
144
352
|
request(input: string | URL | Request, init?: RequestInit): Promise<Response>;
|
|
353
|
+
/**
|
|
354
|
+
* Return a JSON-serializable summary of every registered route. Useful for
|
|
355
|
+
* dead-route detection, dashboards, and tests that want to assert against
|
|
356
|
+
* the route table without parsing the OpenAPI document.
|
|
357
|
+
*
|
|
358
|
+
* @returns Array of one {@link IntrospectedRoute} per registered route.
|
|
359
|
+
*/
|
|
145
360
|
introspect(): IntrospectedRoute[];
|
|
146
361
|
/**
|
|
147
|
-
* Begin graceful shutdown
|
|
148
|
-
*
|
|
362
|
+
* Begin graceful shutdown.
|
|
363
|
+
*
|
|
364
|
+
* Subsequent calls to {@link App.fetch} immediately reply `503 Service
|
|
365
|
+
* Unavailable` with `Retry-After: 5`. Listeners registered with
|
|
366
|
+
* {@link App.onShutdown} fire first (so observability plugins can publish a
|
|
367
|
+
* "draining" signal); then the app waits up to `timeoutMs` for in-flight
|
|
368
|
+
* requests to settle; finally, {@link App.onClose} cleanups run.
|
|
369
|
+
*
|
|
370
|
+
* Both Node and Bun adapters call this automatically on `SIGINT` / `SIGTERM`.
|
|
371
|
+
* Call it manually from custom runtimes or integration tests.
|
|
372
|
+
*
|
|
373
|
+
* @param timeoutMs - Maximum time (ms) to wait for inflight requests. Default: `10_000`.
|
|
374
|
+
* @param reason - Optional human-readable reason forwarded to listeners.
|
|
375
|
+
* @returns Resolves once draining + cleanups complete (or the timeout elapses).
|
|
149
376
|
*/
|
|
150
377
|
shutdown(timeoutMs?: number, reason?: string): Promise<void>;
|
|
151
378
|
}
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|