@barqel/barq 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +89 -2
- package/dist/app.d.ts +159 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +1370 -0
- package/dist/app.js.map +1 -0
- package/dist/context.d.ts +55 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +261 -0
- package/dist/context.js.map +1 -0
- package/dist/cookies.d.ts +5 -0
- package/dist/cookies.d.ts.map +1 -0
- package/dist/cookies.js +234 -0
- package/dist/cookies.js.map +1 -0
- package/dist/cors.d.ts +11 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/cors.js +82 -0
- package/dist/cors.js.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +81 -0
- package/dist/errors.js.map +1 -0
- package/dist/http.d.ts +7 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +127 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/ip.d.ts +6 -0
- package/dist/internal/ip.d.ts.map +1 -0
- package/dist/internal/ip.js +151 -0
- package/dist/internal/ip.js.map +1 -0
- package/dist/internal/pathname.d.ts +9 -0
- package/dist/internal/pathname.d.ts.map +1 -0
- package/dist/internal/pathname.js +158 -0
- package/dist/internal/pathname.js.map +1 -0
- package/dist/internal/query.d.ts +5 -0
- package/dist/internal/query.d.ts.map +1 -0
- package/dist/internal/query.js +126 -0
- package/dist/internal/query.js.map +1 -0
- package/dist/internal/scan.d.ts +33 -0
- package/dist/internal/scan.d.ts.map +1 -0
- package/dist/internal/scan.js +1069 -0
- package/dist/internal/scan.js.map +1 -0
- package/dist/internal/shutdown.d.ts +7 -0
- package/dist/internal/shutdown.d.ts.map +1 -0
- package/dist/internal/shutdown.js +30 -0
- package/dist/internal/shutdown.js.map +1 -0
- package/dist/internal/trie.d.ts +43 -0
- package/dist/internal/trie.d.ts.map +1 -0
- package/dist/internal/trie.js +560 -0
- package/dist/internal/trie.js.map +1 -0
- package/dist/middleware.d.ts +13 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +269 -0
- package/dist/middleware.js.map +1 -0
- package/dist/types.d.ts +59 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +27 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +32 -0
- package/dist/validation.js.map +1 -0
- package/package.json +58 -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
|
-
#
|
|
1
|
+
# Barq
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Barq is a small HTTP and WebSocket core for Bun, 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.
|
|
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 "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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"}
|