@barqel/barq 0.0.0-stage → 1.0.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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -2
  3. package/dist/app.d.ts +159 -0
  4. package/dist/app.d.ts.map +1 -0
  5. package/dist/context.d.ts +55 -0
  6. package/dist/context.d.ts.map +1 -0
  7. package/dist/cookies.d.ts +5 -0
  8. package/dist/cookies.d.ts.map +1 -0
  9. package/dist/cors.d.ts +11 -0
  10. package/dist/cors.d.ts.map +1 -0
  11. package/dist/errors.d.ts +10 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/http.d.ts +7 -0
  14. package/dist/http.d.ts.map +1 -0
  15. package/dist/index.d.ts +17 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +4304 -0
  18. package/dist/index.js.map +24 -0
  19. package/dist/internal/ip.d.ts +6 -0
  20. package/dist/internal/ip.d.ts.map +1 -0
  21. package/dist/internal/node-compat.d.ts +2 -0
  22. package/dist/internal/node-compat.d.ts.map +1 -0
  23. package/dist/internal/pathname.d.ts +9 -0
  24. package/dist/internal/pathname.d.ts.map +1 -0
  25. package/dist/internal/query.d.ts +5 -0
  26. package/dist/internal/query.d.ts.map +1 -0
  27. package/dist/internal/scan.d.ts +33 -0
  28. package/dist/internal/scan.d.ts.map +1 -0
  29. package/dist/internal/shutdown.d.ts +7 -0
  30. package/dist/internal/shutdown.d.ts.map +1 -0
  31. package/dist/internal/trie.d.ts +43 -0
  32. package/dist/internal/trie.d.ts.map +1 -0
  33. package/dist/middleware.d.ts +13 -0
  34. package/dist/middleware.d.ts.map +1 -0
  35. package/dist/node-patch.d.ts +3 -0
  36. package/dist/node-patch.d.ts.map +1 -0
  37. package/dist/node-patch.js +4304 -0
  38. package/dist/node-patch.js.map +24 -0
  39. package/dist/types.d.ts +59 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/validation.d.ts +27 -0
  42. package/dist/validation.d.ts.map +1 -0
  43. package/package.json +67 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Barq contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,90 @@
1
- # Temporary Holding Version
1
+ # Barq
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Barq is a high-performance HTTP and WebSocket core for Bun and Node.js, written in TypeScript. It provides a segment-trie router, typed route parameters, middleware hooks, request context helpers, cookie utilities, redirects, and graceful server shutdown.
4
+
5
+ ## Requirements
6
+
7
+ - Bun 1.1 or newer, or Node.js 18+ (with zero-change automatic C++ Stream adapter).
8
+ - A signing secret only when using signed cookies. Store it in a secret manager or environment variable; do not commit it.
9
+
10
+ ## Quick start
11
+
12
+ ```ts
13
+ import { App, json } from "@barqel/barq";
14
+
15
+ const app = new App();
16
+
17
+ app.get("/users/:id", (ctx) => {
18
+ return json({ id: ctx.params.id });
19
+ });
20
+
21
+ app.listen(3000);
22
+ ```
23
+
24
+ See [examples/README.md](./examples/README.md) for runnable examples covering routing, middleware, validation, cookies, WebSockets, errors, and server lifecycle.
25
+
26
+ See [compares/README.md](./compares/README.md) for the separate Bun project used to benchmark Barq against Elysia with Bun's client or external `oha`.
27
+
28
+ Unsigned cookies work without a signing secret. Cookies are `HttpOnly` by default; pass `httpOnly: false` only when browser JavaScript needs access. Set `secure: true` for HTTPS deployments. To use signed cookies, configure a high-entropy secret and set cookies with `ctx.cookies.setSigned(name, value)`. `getSigned` returns `null` when verification fails or no secret is configured.
29
+
30
+ Incoming cookies are parsed lazily on the first `ctx.cookies` read or mutation. Routes that never use cookies do not parse the `Cookie` header or allocate the parsed-cookie map.
31
+
32
+ Error details are hidden by default unless `development: true` or `NODE_ENV=development` is set. Set development mode deliberately; error messages and stack traces can disclose application internals.
33
+
34
+ ## Routing and middleware
35
+
36
+ Routes support named parameters (`/users/:id`), optional parameters (`/posts/:id?`, up to eight per pattern), and final wildcards (`/files/*path`). Route groups add prefixes and middleware:
37
+
38
+ ```ts
39
+ app.group("/api", { before: (ctx) => {
40
+ if (!ctx.req.headers.has("authorization")) {
41
+ return new Response("Unauthorized", { status: 401 });
42
+ }
43
+ } }, (api) => {
44
+ api.get("/health", () => json({ ok: true }));
45
+ });
46
+ ```
47
+
48
+ Middleware `before` hooks may return a `Response` to short-circuit; `after` hooks can replace the response. Errors become HTTP responses and can be customized with `app.onError()`.
49
+
50
+ For typed request state, return an object from a middleware `before` hook and keep the typed app returned by `.use()`:
51
+
52
+ ```ts
53
+ const app = new App()
54
+ .use({ before: () => ({ user: { id: "user-1" } }) })
55
+ .get("/me", (ctx) => json({ id: ctx.state.user.id }));
56
+ ```
57
+
58
+ The object is merged into `ctx.state` at runtime; hooks returning `void` add no merge work. Chain `.use(first).use(second)` when the second middleware needs the first middleware's inferred state. `validateJson(schema, handler)` adapts any schema with a `parse(unknown)` method without adding a schema dependency:
59
+
60
+ ```ts
61
+ app.post("/users", validateJson(userSchema, (_ctx, body) => json(body)));
62
+ ```
63
+
64
+ Optional parameters are expanded into ordinary trie routes during registration. The matcher has no optional-route branch at request time; registration parses the original pattern once and reuses its segments. Run `bun run bench` for warmed, five-round median router measurements, including optional routes against equivalent explicit routes. Results depend on the machine and Bun version and are not a performance guarantee.
65
+
66
+ ## Proxy trust and client IP
67
+
68
+ By default, forwarded headers are ignored. Configure `trustProxy` with the exact proxy IPs or CIDR ranges that connect directly to the app. Barq walks `X-Forwarded-For` from the nearest hop and stops at the first untrusted address. `trustProxy: true` trusts every hop and is unsafe when clients can reach the app directly; prefer explicit ranges.
69
+
70
+ Keep the global `idleTimeout` enabled for ordinary traffic. A value of `0` disables it; use `ctx.disableTimeout()` only for a request that needs a long-lived stream.
71
+
72
+ `app.cluster(port)` starts one Bun worker per logical CPU on Linux and binds workers with `reusePort`; `await app.stop()` terminates the workers. Windows and macOS use a single-process listener because Bun's `reusePort` option is ignored there. Clustering requires a fixed non-zero port and the application entry file must call `app.cluster()` in each worker.
73
+
74
+ WebSocket deployments can bound inbound messages with `websocket.maxPayloadLength` and queued output with `websocket.backpressureLimit`. Set limits based on the application protocol; Bun's defaults permit messages and queued data up to 16 MiB per connection.
75
+
76
+ ## Development
77
+
78
+ ```sh
79
+ bun install
80
+ bun run check
81
+ bun run typecheck
82
+ bun run typecheck:tests
83
+ bun test
84
+ bun run build
85
+ bun run bench
86
+ bun run bench:middleware
87
+ bun run bench:runtime
88
+ ```
89
+
90
+ `dist/` is generated by the build. Tests use Bun's test runner. The package is MIT licensed; see [LICENSE](./LICENSE).
package/dist/app.d.ts ADDED
@@ -0,0 +1,159 @@
1
+ import type { ServeOptions, Server, ServerWebSocket } from "bun";
2
+ import { Context } from "./context";
3
+ import type { ShutdownResult } from "./internal/shutdown";
4
+ import type { ErrorHandler, Handler, HttpMethod, JoinPath, Middleware, NotFoundHandler, RouteParams, WebSocketHandlers } from "./types";
5
+ export type { ShutdownResult };
6
+ export type RouteHandlerArg = Middleware | readonly Middleware[];
7
+ type MiddlewareOutput<TMiddleware> = TMiddleware extends {
8
+ before?: (...args: never[]) => infer TResult;
9
+ } ? Exclude<Awaited<TResult>, Response | void | undefined> extends infer TOutput extends object ? TOutput : never : never;
10
+ type UnionToIntersection<T> = (T extends unknown ? (value: T) => void : never) extends (value: infer TIntersection) => void ? TIntersection : never;
11
+ type MiddlewareOutputs<TMiddlewares extends readonly unknown[]> = UnionToIntersection<MiddlewareOutput<TMiddlewares[number]>>;
12
+ export interface WebSocketOptions {
13
+ maxPayloadLength?: number;
14
+ backpressureLimit?: number;
15
+ closeOnBackpressureLimit?: boolean;
16
+ idleTimeout?: number;
17
+ open?: (ws: ServerWebSocket<unknown>) => void | Promise<void>;
18
+ message?: (ws: ServerWebSocket<unknown>, message: string | Buffer) => void | Promise<void>;
19
+ close?: (ws: ServerWebSocket<unknown>, code: number, reason: string) => void | Promise<void>;
20
+ drain?: (ws: ServerWebSocket<unknown>) => void | Promise<void>;
21
+ error?: (ws: ServerWebSocket<unknown>, error: unknown) => void | Promise<void>;
22
+ }
23
+ export interface AppOptions {
24
+ port?: number;
25
+ hostname?: string;
26
+ development?: boolean;
27
+ maxRequestBodySize?: number;
28
+ idleTimeout?: number;
29
+ tls?: ServeOptions["tls"];
30
+ allowedRedirectHosts?: string[];
31
+ trustProxy?: boolean | string | readonly string[] | ((ip: string) => boolean);
32
+ websocket?: WebSocketOptions;
33
+ cookieSecret?: string;
34
+ }
35
+ export declare class RouteGroup<Prefix extends string = string, TState extends object = Record<string, unknown>> {
36
+ private readonly app;
37
+ readonly prefix: string;
38
+ private readonly middlewares;
39
+ constructor(app: App<TState>, prefix: string, middlewares?: Middleware[]);
40
+ use<const TMiddlewares extends readonly Middleware<TState, object>[]>(...middlewares: TMiddlewares): RouteGroup<Prefix, TState & MiddlewareOutputs<TMiddlewares>>;
41
+ plugin<TOptions>(pluginFn: (group: this, options?: TOptions) => void, options?: TOptions): this;
42
+ private _register;
43
+ private _registerMethods;
44
+ add<P extends string>(method: HttpMethod, pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
45
+ add<P extends string>(method: HttpMethod, pattern: P, ...handlers: [
46
+ ...RouteHandlerArg[],
47
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
48
+ ]): this;
49
+ get<P extends string>(pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
50
+ get<P extends string>(pattern: P, ...handlers: [
51
+ ...RouteHandlerArg[],
52
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
53
+ ]): this;
54
+ post<P extends string>(pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
55
+ post<P extends string>(pattern: P, ...handlers: [
56
+ ...RouteHandlerArg[],
57
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
58
+ ]): this;
59
+ put<P extends string>(pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
60
+ put<P extends string>(pattern: P, ...handlers: [
61
+ ...RouteHandlerArg[],
62
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
63
+ ]): this;
64
+ delete<P extends string>(pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
65
+ delete<P extends string>(pattern: P, ...handlers: [
66
+ ...RouteHandlerArg[],
67
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
68
+ ]): this;
69
+ patch<P extends string>(pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
70
+ patch<P extends string>(pattern: P, ...handlers: [
71
+ ...RouteHandlerArg[],
72
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
73
+ ]): this;
74
+ head<P extends string>(pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
75
+ head<P extends string>(pattern: P, ...handlers: [
76
+ ...RouteHandlerArg[],
77
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
78
+ ]): this;
79
+ options<P extends string>(pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
80
+ options<P extends string>(pattern: P, ...handlers: [
81
+ ...RouteHandlerArg[],
82
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
83
+ ]): this;
84
+ all<P extends string>(pattern: P, handler: Handler<RouteParams<JoinPath<Prefix, P>>, TState>): this;
85
+ all<P extends string>(pattern: P, ...handlers: [
86
+ ...RouteHandlerArg[],
87
+ Handler<RouteParams<JoinPath<Prefix, P>>, TState>
88
+ ]): this;
89
+ ws<P extends string, TData = unknown>(pattern: P, handlers: WebSocketHandlers<TData>, beforeUpgrade?: (ctx: Context<RouteParams<JoinPath<Prefix, P>>, TState>) => boolean | {
90
+ data?: TData;
91
+ } | Promise<boolean | {
92
+ data?: TData;
93
+ }>): this;
94
+ group<Sub extends string>(prefix: Sub, callback: (group: RouteGroup<JoinPath<Prefix, Sub>, TState>) => void): this;
95
+ group<Sub extends string>(prefix: Sub, ...args: [
96
+ ...RouteHandlerArg[],
97
+ (group: RouteGroup<JoinPath<Prefix, Sub>, TState>) => void
98
+ ]): this;
99
+ }
100
+ export declare class App<TState extends object = Record<string, unknown>> {
101
+ private readonly fetchHandler;
102
+ private readonly trie;
103
+ private readonly middlewares;
104
+ private readonly nativeRoutes;
105
+ private server;
106
+ private clusterProcesses;
107
+ private readonly _options;
108
+ private readonly redirectHosts;
109
+ readonly trustProxy: boolean | string | readonly string[] | ((ip: string) => boolean);
110
+ readonly trustedProxyChecker: (ip: string) => boolean;
111
+ private stopPromise;
112
+ private notFoundHandler;
113
+ private errorHandler;
114
+ private errorResolver;
115
+ private globalPipeline;
116
+ private hasMiddlewares;
117
+ private hasWebSockets;
118
+ readonly development: boolean;
119
+ readonly cookieSecret?: string;
120
+ constructor(options?: AppOptions);
121
+ plugin<TOptions>(pluginFn: (app: this, options?: TOptions) => void, options?: TOptions): this;
122
+ notFound(handler: NotFoundHandler): this;
123
+ onError(handler: ErrorHandler): this;
124
+ /** @internal */
125
+ _register(method: HttpMethod, pattern: string, args: unknown[]): this;
126
+ /** @internal */
127
+ _registerMethods(methods: readonly HttpMethod[], pattern: string, args: unknown[]): this;
128
+ add<P extends string>(method: HttpMethod, pattern: P, handler: Handler<RouteParams<P>, TState>): this;
129
+ add<P extends string>(method: HttpMethod, pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
130
+ get<P extends string>(pattern: P, handler: Handler<RouteParams<P>, TState>): this;
131
+ get<P extends string>(pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
132
+ post<P extends string>(pattern: P, handler: Handler<RouteParams<P>, TState>): this;
133
+ post<P extends string>(pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
134
+ put<P extends string>(pattern: P, handler: Handler<RouteParams<P>, TState>): this;
135
+ put<P extends string>(pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
136
+ delete<P extends string>(pattern: P, handler: Handler<RouteParams<P>, TState>): this;
137
+ delete<P extends string>(pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
138
+ patch<P extends string>(pattern: P, handler: Handler<RouteParams<P>, TState>): this;
139
+ patch<P extends string>(pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
140
+ head<P extends string>(pattern: P, handler: Handler<RouteParams<P>, TState>): this;
141
+ head<P extends string>(pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
142
+ options<P extends string>(pattern: P, handler: Handler<RouteParams<P>, TState>): this;
143
+ options<P extends string>(pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
144
+ all<P extends string>(pattern: P, handler: Handler<RouteParams<P>, TState>): this;
145
+ all<P extends string>(pattern: P, ...handlers: [...RouteHandlerArg[], Handler<RouteParams<P>, TState>]): this;
146
+ ws<P extends string, TData = unknown>(pattern: P, handlers: WebSocketHandlers<TData>, beforeUpgrade?: (ctx: Context<RouteParams<P>, TState>) => boolean | {
147
+ data?: TData;
148
+ } | Promise<boolean | {
149
+ data?: TData;
150
+ }>): this;
151
+ group<Prefix extends string>(prefix: Prefix, callback: (group: RouteGroup<Prefix, TState>) => void): this;
152
+ group<Prefix extends string>(prefix: Prefix, ...args: [...RouteHandlerArg[], (group: RouteGroup<Prefix, TState>) => void]): this;
153
+ use<const TMiddlewares extends readonly Middleware<TState, object>[]>(...middlewares: TMiddlewares): App<TState & MiddlewareOutputs<TMiddlewares>>;
154
+ listen(port?: number): Server<unknown>;
155
+ private handle;
156
+ cluster(port?: number): Server<unknown> | void;
157
+ stop(hardTimeoutMs?: number): Promise<ShutdownResult>;
158
+ }
159
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { Server } from "bun";
2
+ import type { CookieJar, Params } from "./types";
3
+ export interface ContextApplication {
4
+ readonly development: boolean;
5
+ readonly redirectHosts: ReadonlySet<string>;
6
+ readonly trustProxy: boolean | string | readonly string[] | ((ip: string) => boolean);
7
+ readonly trustedProxyChecker?: (ip: string) => boolean;
8
+ readonly cookieSecret?: string;
9
+ }
10
+ type TrustProxy = ContextApplication["trustProxy"];
11
+ export declare class Context<TParams extends object = Params, TState extends object = Record<string, unknown>> {
12
+ readonly req: Request;
13
+ readonly params: TParams;
14
+ /** @internal Set only when this request queues a cookie mutation. */
15
+ _hasPendingCookies: boolean;
16
+ private readonly server;
17
+ private readonly application;
18
+ private _pathname;
19
+ private _query;
20
+ private _url;
21
+ private _queryParams;
22
+ private _lazy;
23
+ constructor(req: Request, server: Server<unknown> | null, params: TParams, application: ContextApplication, pathname?: string);
24
+ private _getLazy;
25
+ get development(): boolean;
26
+ get redirectHosts(): ReadonlySet<string>;
27
+ get trustProxy(): TrustProxy;
28
+ get cookies(): CookieJar;
29
+ /** @internal Returns the jar without creating one. */
30
+ _cookieJarIfCreated(): CookieJar | null;
31
+ get state(): TState;
32
+ get valid(): unknown;
33
+ set valid(val: unknown);
34
+ get pathname(): string;
35
+ get query(): URLSearchParams;
36
+ queryParam(name: string): string | null;
37
+ queryParamAll(name: string): string[];
38
+ get ip(): string;
39
+ private isTrustedProxy;
40
+ private getDirectIp;
41
+ get bodyStream(): ReadableStream<Uint8Array> | null;
42
+ stream(): ReadableStream<Uint8Array> | null;
43
+ private _getBodyBuffer;
44
+ arrayBuffer(): Promise<ArrayBuffer>;
45
+ text(): Promise<string>;
46
+ json<T = unknown>(): Promise<T>;
47
+ blob(): Promise<Blob>;
48
+ formData(): ReturnType<Request["formData"]>;
49
+ redirect(url: string, status?: number): Response;
50
+ upgrade<TData = unknown>(data?: TData): boolean;
51
+ timeout(seconds: number): this;
52
+ disableTimeout(): this;
53
+ }
54
+ export {};
55
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CookieJar } from "./types";
2
+ export declare function createCookieJar(secret?: string, requestHeaders?: Headers, onMutation?: () => void): CookieJar;
3
+ export declare function hasPendingCookies(cookieJar: CookieJar): boolean;
4
+ export declare function applyPendingCookies(cookieJar: CookieJar, headers: Headers): void;
5
+ //# sourceMappingURL=cookies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../src/cookies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,SAAS,CAAC;AA+P3D,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,OAAO,EACxB,UAAU,CAAC,EAAE,MAAM,IAAI,GACtB,SAAS,CAEX;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAE/D;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,GACf,IAAI,CAKN"}
package/dist/cors.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { Middleware } from "./types";
2
+ export interface CorsOptions {
3
+ origin?: string | string[] | ((origin: string) => boolean | string);
4
+ methods?: string[];
5
+ allowedHeaders?: string[];
6
+ exposedHeaders?: string[];
7
+ credentials?: boolean;
8
+ maxAge?: number;
9
+ }
10
+ export declare function cors(options?: CorsOptions): Middleware;
11
+ //# sourceMappingURL=cors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC,CAAC;IACpE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,UAAU,CAyF1D"}
@@ -0,0 +1,10 @@
1
+ export type HeadersInit = NonNullable<ResponseInit["headers"]>;
2
+ export declare class HttpError extends Error {
3
+ readonly status: number;
4
+ readonly body: unknown;
5
+ readonly headers?: HeadersInit;
6
+ constructor(status: number, body?: unknown, headers?: HeadersInit);
7
+ }
8
+ export declare function errorToResponse(err: unknown, development: boolean): Response;
9
+ export declare const createErrorResponse: typeof errorToResponse;
10
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;AAE/D,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;gBAEnB,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW;CAYlE;AAwDD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,QAAQ,CAa5E;AAED,eAAO,MAAM,mBAAmB,wBAAkB,CAAC"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export type HeadersInit = NonNullable<ResponseInit["headers"]>;
2
+ export declare function isNullBodyStatus(status: number): boolean;
3
+ export declare function json(data: unknown, init?: number | ResponseInit): Response;
4
+ export declare function text(body: string, init?: number | ResponseInit): Response;
5
+ export declare function empty(status?: number, headers?: HeadersInit): Response;
6
+ export declare function redirect(url: string, status?: number, allowlist?: ReadonlySet<string>): Response;
7
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAeD,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAoC1E;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAiCzE;AAED,wBAAgB,KAAK,CAAC,MAAM,SAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,CAInE;AAOD,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,SAAM,EACZ,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC9B,QAAQ,CAqCV"}
@@ -0,0 +1,17 @@
1
+ import "./internal/node-compat";
2
+ export type { AppOptions, RouteHandlerArg, ShutdownResult, WebSocketOptions, } from "./app";
3
+ export { App, RouteGroup } from "./app";
4
+ export type { ContextApplication } from "./context";
5
+ export { Context } from "./context";
6
+ export { createCookieJar } from "./cookies";
7
+ export type { CorsOptions } from "./cors";
8
+ export { cors } from "./cors";
9
+ export { createErrorResponse, errorToResponse, HttpError } from "./errors";
10
+ export { empty, json, redirect, text } from "./http";
11
+ export { parseRequestTarget } from "./internal/pathname";
12
+ export type { MiddlewareDispatcher } from "./middleware";
13
+ export { composeMiddlewareDispatcher, composeMiddlewares, isThenable, runPipeline, unwindAfter, } from "./middleware";
14
+ export type { BeforeResult, CookieJar, ErrorHandler, Handler, HandlerResult, HttpMethod, Middleware, NotFoundHandler, Params, ResponseHandler, RouteParams, SetCookieOptions, WebSocketHandlers, } from "./types";
15
+ export type { StandardSchemaV1, StandardSchemaV1Issue, Validator, } from "./validation";
16
+ export { validateJson } from "./validation";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAEhC,YAAY,EACV,UAAU,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,OAAO,EACP,aAAa,EACb,UAAU,EACV,UAAU,EACV,eAAe,EACf,MAAM,EACN,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}