@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
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { errorToResponse } from "./errors";
|
|
2
|
+
export function isThenable(value) {
|
|
3
|
+
return ((typeof value === "object" || typeof value === "function") &&
|
|
4
|
+
value !== null &&
|
|
5
|
+
typeof value.then === "function");
|
|
6
|
+
}
|
|
7
|
+
function mergeState(ctx, value) {
|
|
8
|
+
if (typeof value === "object" && value !== null) {
|
|
9
|
+
Object.assign(ctx.state, value);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/** Compile a middleware chain once for reuse by native and fallback routes. */
|
|
13
|
+
export function composeMiddlewareDispatcher(mws, errorResolver) {
|
|
14
|
+
// Keep pathological chains on the iterative implementation to avoid deep
|
|
15
|
+
// call stacks. The usual short chains are compiled into direct closures.
|
|
16
|
+
if (mws.length > 64 ||
|
|
17
|
+
mws.some((middleware) => middleware.after !== undefined)) {
|
|
18
|
+
return (ctx, handler) => runPipeline(mws, ctx, handler, errorResolver);
|
|
19
|
+
}
|
|
20
|
+
let next = (ctx, handler) => {
|
|
21
|
+
let result;
|
|
22
|
+
try {
|
|
23
|
+
result = handler(ctx);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return handlePipelineError(mws, ctx, error, mws.length, errorResolver);
|
|
27
|
+
}
|
|
28
|
+
if (isThenable(result)) {
|
|
29
|
+
return Promise.resolve(result).catch((error) => handlePipelineError(mws, ctx, error, mws.length, errorResolver));
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
for (let i = mws.length - 1; i >= 0; i--) {
|
|
34
|
+
const middleware = mws[i];
|
|
35
|
+
const hook = middleware.before;
|
|
36
|
+
const following = next;
|
|
37
|
+
next = (ctx, handler) => {
|
|
38
|
+
if (!hook)
|
|
39
|
+
return following(ctx, handler);
|
|
40
|
+
let result;
|
|
41
|
+
try {
|
|
42
|
+
result = hook(ctx);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return handlePipelineError(mws, ctx, error, i, errorResolver);
|
|
46
|
+
}
|
|
47
|
+
if (result === undefined)
|
|
48
|
+
return following(ctx, handler);
|
|
49
|
+
if (isThenable(result)) {
|
|
50
|
+
return Promise.resolve(result).then((value) => {
|
|
51
|
+
if (value instanceof Response)
|
|
52
|
+
return value;
|
|
53
|
+
mergeState(ctx, value);
|
|
54
|
+
return following(ctx, handler);
|
|
55
|
+
}, (error) => handlePipelineError(mws, ctx, error, i, errorResolver));
|
|
56
|
+
}
|
|
57
|
+
if (result instanceof Response)
|
|
58
|
+
return result;
|
|
59
|
+
mergeState(ctx, result);
|
|
60
|
+
return following(ctx, handler);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return next;
|
|
64
|
+
}
|
|
65
|
+
/** Compile a route-specific chain around its handler. */
|
|
66
|
+
export function composeMiddlewares(mws, handler, errorResolver) {
|
|
67
|
+
const dispatch = composeMiddlewareDispatcher(mws, errorResolver);
|
|
68
|
+
return (ctx) => dispatch(ctx, handler);
|
|
69
|
+
}
|
|
70
|
+
export function runPipeline(mws, ctx, handler, errorResolver) {
|
|
71
|
+
let i = 0;
|
|
72
|
+
const len = mws.length;
|
|
73
|
+
while (i < len) {
|
|
74
|
+
const hook = mws[i].before;
|
|
75
|
+
if (hook) {
|
|
76
|
+
let r;
|
|
77
|
+
try {
|
|
78
|
+
r = hook(ctx);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
return handlePipelineError(mws, ctx, err, i, errorResolver);
|
|
82
|
+
}
|
|
83
|
+
if (r !== undefined) {
|
|
84
|
+
if (r instanceof Response) {
|
|
85
|
+
return unwindAfter(mws, ctx, r, i + 1, errorResolver);
|
|
86
|
+
}
|
|
87
|
+
if (isThenable(r)) {
|
|
88
|
+
return resumeBefore(mws, ctx, handler, r, i, errorResolver);
|
|
89
|
+
}
|
|
90
|
+
mergeState(ctx, r);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
i++;
|
|
94
|
+
}
|
|
95
|
+
return invokeHandler(mws, ctx, handler, len, errorResolver);
|
|
96
|
+
}
|
|
97
|
+
function continueBefore(mws, ctx, handler, startIndex, errorResolver) {
|
|
98
|
+
let i = startIndex;
|
|
99
|
+
const len = mws.length;
|
|
100
|
+
while (i < len) {
|
|
101
|
+
const hook = mws[i].before;
|
|
102
|
+
if (hook) {
|
|
103
|
+
let r;
|
|
104
|
+
try {
|
|
105
|
+
r = hook(ctx);
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
return handlePipelineError(mws, ctx, err, i, errorResolver);
|
|
109
|
+
}
|
|
110
|
+
if (r !== undefined) {
|
|
111
|
+
if (r instanceof Response) {
|
|
112
|
+
return unwindAfter(mws, ctx, r, i + 1, errorResolver);
|
|
113
|
+
}
|
|
114
|
+
if (isThenable(r)) {
|
|
115
|
+
return resumeBefore(mws, ctx, handler, r, i, errorResolver);
|
|
116
|
+
}
|
|
117
|
+
mergeState(ctx, r);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
i++;
|
|
121
|
+
}
|
|
122
|
+
return invokeHandler(mws, ctx, handler, len, errorResolver);
|
|
123
|
+
}
|
|
124
|
+
function invokeHandler(mws, ctx, handler, entered, errorResolver) {
|
|
125
|
+
let res;
|
|
126
|
+
try {
|
|
127
|
+
res = handler(ctx);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
return handlePipelineError(mws, ctx, err, entered, errorResolver);
|
|
131
|
+
}
|
|
132
|
+
if (isThenable(res)) {
|
|
133
|
+
return resumeHandler(mws, ctx, res, entered, errorResolver);
|
|
134
|
+
}
|
|
135
|
+
return unwindAfter(mws, ctx, res, entered, errorResolver);
|
|
136
|
+
}
|
|
137
|
+
function resumeBefore(mws, ctx, handler, promise, index, errorResolver) {
|
|
138
|
+
return Promise.resolve(promise).then((r) => {
|
|
139
|
+
if (r instanceof Response) {
|
|
140
|
+
return unwindAfter(mws, ctx, r, index + 1, errorResolver);
|
|
141
|
+
}
|
|
142
|
+
mergeState(ctx, r);
|
|
143
|
+
return continueBefore(mws, ctx, handler, index + 1, errorResolver);
|
|
144
|
+
}, (err) => handlePipelineError(mws, ctx, err, index, errorResolver));
|
|
145
|
+
}
|
|
146
|
+
function resumeHandler(mws, ctx, promise, entered, errorResolver) {
|
|
147
|
+
return Promise.resolve(promise).then((res) => unwindAfter(mws, ctx, res, entered, errorResolver), (err) => handlePipelineError(mws, ctx, err, entered, errorResolver));
|
|
148
|
+
}
|
|
149
|
+
function handlePipelineError(mws, ctx, err, entered, errorResolver) {
|
|
150
|
+
if (errorResolver !== undefined) {
|
|
151
|
+
let res;
|
|
152
|
+
try {
|
|
153
|
+
res = errorResolver(err, ctx);
|
|
154
|
+
}
|
|
155
|
+
catch (resolverErr) {
|
|
156
|
+
const fallback = errorToResponse(resolverErr, ctx.development);
|
|
157
|
+
return unwindAfter(mws, ctx, fallback, entered, errorResolver);
|
|
158
|
+
}
|
|
159
|
+
if (isThenable(res)) {
|
|
160
|
+
return res.then((resolved) => unwindAfter(mws, ctx, resolved, entered, errorResolver), (resolverErr) => {
|
|
161
|
+
const fallback = errorToResponse(resolverErr, ctx.development);
|
|
162
|
+
return unwindAfter(mws, ctx, fallback, entered, errorResolver);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
return unwindAfter(mws, ctx, res, entered, errorResolver);
|
|
166
|
+
}
|
|
167
|
+
const res = errorToResponse(err, ctx.development);
|
|
168
|
+
return unwindAfter(mws, ctx, res, entered, errorResolver);
|
|
169
|
+
}
|
|
170
|
+
export function unwindAfter(mws, ctx, res, enteredCount, errorResolver) {
|
|
171
|
+
let currentRes = res;
|
|
172
|
+
for (let j = enteredCount - 1; j >= 0; j--) {
|
|
173
|
+
const hook = mws[j].after;
|
|
174
|
+
if (hook) {
|
|
175
|
+
let r;
|
|
176
|
+
try {
|
|
177
|
+
r = hook(ctx, currentRes);
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
if (errorResolver !== undefined) {
|
|
181
|
+
try {
|
|
182
|
+
const resolved = errorResolver(err, ctx);
|
|
183
|
+
if (isThenable(resolved)) {
|
|
184
|
+
return resolved.then((resolvedRes) => continueUnwind(mws, ctx, j - 1, resolvedRes, errorResolver), (resolverErr) => continueUnwind(mws, ctx, j - 1, errorToResponse(resolverErr, ctx.development), errorResolver));
|
|
185
|
+
}
|
|
186
|
+
currentRes = resolved;
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
catch (resolverErr) {
|
|
190
|
+
currentRes = errorToResponse(resolverErr, ctx.development);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
currentRes = errorToResponse(err, ctx.development);
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
if (r !== undefined) {
|
|
198
|
+
if (isThenable(r)) {
|
|
199
|
+
return resumeUnwind(mws, ctx, r, j - 1, currentRes, errorResolver);
|
|
200
|
+
}
|
|
201
|
+
if (r instanceof Response) {
|
|
202
|
+
currentRes = r;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return currentRes;
|
|
208
|
+
}
|
|
209
|
+
function resumeUnwind(mws, ctx, promise, nextIndex, currentRes, errorResolver) {
|
|
210
|
+
return Promise.resolve(promise).then((r) => {
|
|
211
|
+
const next = r instanceof Response ? r : currentRes;
|
|
212
|
+
return continueUnwind(mws, ctx, nextIndex, next, errorResolver);
|
|
213
|
+
}, (err) => {
|
|
214
|
+
if (errorResolver !== undefined) {
|
|
215
|
+
try {
|
|
216
|
+
const resolved = errorResolver(err, ctx);
|
|
217
|
+
if (isThenable(resolved)) {
|
|
218
|
+
return resolved.then((resolvedRes) => continueUnwind(mws, ctx, nextIndex, resolvedRes, errorResolver), (resolverErr) => continueUnwind(mws, ctx, nextIndex, errorToResponse(resolverErr, ctx.development), errorResolver));
|
|
219
|
+
}
|
|
220
|
+
return continueUnwind(mws, ctx, nextIndex, resolved, errorResolver);
|
|
221
|
+
}
|
|
222
|
+
catch (resolverErr) {
|
|
223
|
+
return continueUnwind(mws, ctx, nextIndex, errorToResponse(resolverErr, ctx.development), errorResolver);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
const next = errorToResponse(err, ctx.development);
|
|
227
|
+
return continueUnwind(mws, ctx, nextIndex, next, errorResolver);
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
function continueUnwind(mws, ctx, startIndex, currentRes, errorResolver) {
|
|
231
|
+
let cur = currentRes;
|
|
232
|
+
for (let j = startIndex; j >= 0; j--) {
|
|
233
|
+
const hook = mws[j].after;
|
|
234
|
+
if (hook) {
|
|
235
|
+
let r;
|
|
236
|
+
try {
|
|
237
|
+
r = hook(ctx, cur);
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
if (errorResolver !== undefined) {
|
|
241
|
+
try {
|
|
242
|
+
const resolved = errorResolver(err, ctx);
|
|
243
|
+
if (isThenable(resolved)) {
|
|
244
|
+
return resolved.then((resolvedRes) => continueUnwind(mws, ctx, j - 1, resolvedRes, errorResolver), (resolverErr) => continueUnwind(mws, ctx, j - 1, errorToResponse(resolverErr, ctx.development), errorResolver));
|
|
245
|
+
}
|
|
246
|
+
cur = resolved;
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
catch (resolverErr) {
|
|
250
|
+
cur = errorToResponse(resolverErr, ctx.development);
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
cur = errorToResponse(err, ctx.development);
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
if (r !== undefined) {
|
|
258
|
+
if (isThenable(r)) {
|
|
259
|
+
return resumeUnwind(mws, ctx, r, j - 1, cur, errorResolver);
|
|
260
|
+
}
|
|
261
|
+
if (r instanceof Response) {
|
|
262
|
+
cur = r;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return cur;
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { ServerWebSocket } from "bun";
|
|
2
|
+
import type { Context } from "./context";
|
|
3
|
+
export type HttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS";
|
|
4
|
+
export type BeforeResult<TOutput extends object = Record<string, unknown>> = Response | TOutput | void | undefined | Promise<Response | TOutput | undefined>;
|
|
5
|
+
export type AfterResult = Response | void | undefined | Promise<Response | undefined>;
|
|
6
|
+
export interface Middleware<TState extends object = Record<string, unknown>, TOutput extends object = Record<string, unknown>> {
|
|
7
|
+
before?(ctx: Context<Params, TState>): BeforeResult<TOutput>;
|
|
8
|
+
after?(ctx: Context<Params, TState>, res: Response): AfterResult;
|
|
9
|
+
}
|
|
10
|
+
export interface WebSocketHandlers<TData = unknown> {
|
|
11
|
+
open?: (ws: ServerWebSocket<TData>) => void | Promise<void>;
|
|
12
|
+
message?: (ws: ServerWebSocket<TData>, message: string | Buffer) => void | Promise<void>;
|
|
13
|
+
close?: (ws: ServerWebSocket<TData>, code: number, reason: string) => void | Promise<void>;
|
|
14
|
+
drain?: (ws: ServerWebSocket<TData>) => void | Promise<void>;
|
|
15
|
+
error?: (ws: ServerWebSocket<TData>, error: unknown) => void | Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export type NotFoundHandler = (ctx: Context) => Response | Promise<Response>;
|
|
18
|
+
export type ErrorHandler = (error: unknown, ctx: Context) => Response | Promise<Response>;
|
|
19
|
+
export type ErrorResolver = (err: unknown, ctx: Context) => Response | Promise<Response>;
|
|
20
|
+
export type Params = Readonly<Record<string, string>>;
|
|
21
|
+
export interface CookieJar {
|
|
22
|
+
get(name: string): string | undefined;
|
|
23
|
+
getSigned(name: string, customSecret?: string): string | null;
|
|
24
|
+
set(name: string, value: string, options?: SetCookieOptions): void;
|
|
25
|
+
setSigned(name: string, value: string, options?: SetCookieOptions, customSecret?: string): void;
|
|
26
|
+
delete(name: string, options?: SetCookieOptions): void;
|
|
27
|
+
}
|
|
28
|
+
export interface SetCookieOptions {
|
|
29
|
+
path?: string;
|
|
30
|
+
domain?: string;
|
|
31
|
+
maxAge?: number;
|
|
32
|
+
expires?: Date;
|
|
33
|
+
httpOnly?: boolean;
|
|
34
|
+
secure?: boolean;
|
|
35
|
+
sameSite?: "Strict" | "Lax" | "None" | "strict" | "lax" | "none";
|
|
36
|
+
}
|
|
37
|
+
export type Handler<TParams extends object = Record<string, string>, TState extends object = Record<string, unknown>> = (ctx: Context<TParams, TState>) => HandlerResult | Promise<HandlerResult>;
|
|
38
|
+
/** Internal handlers return a Response after route values are normalized. */
|
|
39
|
+
export type ResponseHandler<TParams extends object = Record<string, string>, TState extends object = Record<string, unknown>> = (ctx: Context<TParams, TState>) => Response | Promise<Response>;
|
|
40
|
+
/** Values returned by route handlers are converted to HTTP responses. */
|
|
41
|
+
export type HandlerResult = Response | string | number | boolean | bigint | symbol | null | undefined | object;
|
|
42
|
+
export type ExtractParam<Segment extends string> = Segment extends `:${infer Param}?` ? {
|
|
43
|
+
readonly [K in Param]?: string;
|
|
44
|
+
} : Segment extends `:${infer Param}` ? {
|
|
45
|
+
readonly [K in Param]: string;
|
|
46
|
+
} : Segment extends `*${infer Wildcard}` ? Wildcard extends "" ? {
|
|
47
|
+
readonly "*": string;
|
|
48
|
+
} : {
|
|
49
|
+
readonly [K in Wildcard]: string;
|
|
50
|
+
} : Record<never, never>;
|
|
51
|
+
export type ExtractParams<Path extends string> = Path extends `${infer Start}/${infer Rest}` ? ExtractParam<Start> & ExtractParams<Rest> : ExtractParam<Path>;
|
|
52
|
+
export type Simplify<T> = {
|
|
53
|
+
[K in keyof T]: T[K];
|
|
54
|
+
} & {};
|
|
55
|
+
export type RouteParams<Path extends string> = string extends Path ? Record<string, string> : Simplify<ExtractParams<Path>>;
|
|
56
|
+
export type JoinPath<A extends string, B extends string> = A extends "" ? B : B extends "" ? A : B extends "/" ? NormalizePrefix<A> : B extends `/${string}` ? `${NormalizePrefix<A>}${B}` : `${NormalizePrefix<A>}/${B}`;
|
|
57
|
+
type NormalizePrefix<P extends string> = P extends "" ? "" : P extends "/" ? "" : P extends `/${infer Rest}` ? Rest extends `${infer R}/` ? R : Rest : P;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Context } from "./context";
|
|
2
|
+
import type { Params, ResponseHandler } from "./types";
|
|
3
|
+
export interface StandardSchemaV1Issue {
|
|
4
|
+
readonly message: string;
|
|
5
|
+
readonly path?: ReadonlyArray<PropertyKey | {
|
|
6
|
+
readonly key: PropertyKey;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
export type StandardSchemaV1Result<TOutput> = {
|
|
10
|
+
readonly value: TOutput;
|
|
11
|
+
readonly issues?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
readonly issues: ReadonlyArray<StandardSchemaV1Issue>;
|
|
14
|
+
};
|
|
15
|
+
export interface StandardSchemaV1<_TInput = unknown, TOutput = unknown> {
|
|
16
|
+
readonly "~standard": {
|
|
17
|
+
readonly version: 1;
|
|
18
|
+
readonly vendor: string;
|
|
19
|
+
readonly validate: (value: unknown) => StandardSchemaV1Result<TOutput> | Promise<StandardSchemaV1Result<TOutput>>;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface LegacyValidator<TOutput> {
|
|
23
|
+
parse(data: unknown): TOutput;
|
|
24
|
+
}
|
|
25
|
+
export type Validator<TOutput> = LegacyValidator<TOutput> | StandardSchemaV1<unknown, TOutput> | ((data: unknown) => TOutput | Promise<TOutput>);
|
|
26
|
+
export declare function validateJson<TOutput, TParams extends object = Params, TState extends object = Record<string, unknown>>(validator: Validator<TOutput>, handler: (ctx: Context<TParams, TState>, body: TOutput) => Response | Promise<Response>): ResponseHandler<TParams, TState>;
|
|
27
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,GAAG;QAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,MAAM,MAAM,sBAAsB,CAAC,OAAO,IACtC;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,gBAAgB,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACpE,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,OAAO,KAEZ,sBAAsB,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;KAC9C,CAAC;CACH;AAED,MAAM,WAAW,eAAe,CAAC,OAAO;IACtC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,MAAM,SAAS,CAAC,OAAO,IACzB,eAAe,CAAC,OAAO,CAAC,GACxB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,GAClC,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpD,wBAAgB,YAAY,CAC1B,OAAO,EACP,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,MAAM,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE/C,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,EAC7B,OAAO,EAAE,CACP,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAC7B,IAAI,EAAE,OAAO,KACV,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAChC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAgClC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { HttpError } from "./errors";
|
|
2
|
+
export function validateJson(validator, handler) {
|
|
3
|
+
return async (ctx) => {
|
|
4
|
+
const raw = await ctx.json();
|
|
5
|
+
let body;
|
|
6
|
+
if (typeof validator === "object" &&
|
|
7
|
+
validator !== null &&
|
|
8
|
+
"~standard" in validator) {
|
|
9
|
+
const res = await validator["~standard"].validate(raw);
|
|
10
|
+
if (res.issues) {
|
|
11
|
+
throw new HttpError(422, {
|
|
12
|
+
error: "Validation Failed",
|
|
13
|
+
issues: res.issues,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
body = res.value;
|
|
17
|
+
}
|
|
18
|
+
else if (typeof validator === "function") {
|
|
19
|
+
body = await validator(raw);
|
|
20
|
+
}
|
|
21
|
+
else if (typeof validator === "object" &&
|
|
22
|
+
validator !== null &&
|
|
23
|
+
"parse" in validator) {
|
|
24
|
+
body = validator.parse(raw);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
throw new TypeError("Invalid validator provided to validateJson");
|
|
28
|
+
}
|
|
29
|
+
return handler(ctx, body);
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAiCrC,MAAM,UAAU,YAAY,CAK1B,SAA6B,EAC7B,OAGiC;IAEjC,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;QACnB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAW,CAAC;QACtC,IAAI,IAAa,CAAC;QAElB,IACE,OAAO,SAAS,KAAK,QAAQ;YAC7B,SAAS,KAAK,IAAI;YAClB,WAAW,IAAI,SAAS,EACxB,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACvD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE;oBACvB,KAAK,EAAE,mBAAmB;oBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YAC3C,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;aAAM,IACL,OAAO,SAAS,KAAK,QAAQ;YAC7B,SAAS,KAAK,IAAI;YAClB,OAAO,IAAI,SAAS,EACpB,CAAC;YACD,IAAI,GAAI,SAAsC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,60 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barqel/barq",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Zero dependencies. Maximum performance. HTTP & WebSocket for Bun.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"format": "biome format --write .",
|
|
16
|
+
"lint": "biome lint .",
|
|
17
|
+
"check": "biome check .",
|
|
18
|
+
"test": "bun test",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"typecheck:tests": "tsc --noEmit -p tsconfig.test.json",
|
|
21
|
+
"clean": "rm -rf dist",
|
|
22
|
+
"build": "rm -rf dist && tsc",
|
|
23
|
+
"verify": "bun run check && bun run typecheck && bun run typecheck:tests && bun run test && bun run build",
|
|
24
|
+
"prepublishOnly": "bun run verify"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"keywords": [
|
|
30
|
+
"bun",
|
|
31
|
+
"http",
|
|
32
|
+
"router",
|
|
33
|
+
"server",
|
|
34
|
+
"websocket",
|
|
35
|
+
"framework",
|
|
36
|
+
"typescript",
|
|
37
|
+
"zero-dependency",
|
|
38
|
+
"fast",
|
|
39
|
+
"api"
|
|
40
|
+
],
|
|
41
|
+
"author": "Barq Contributors",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "git+https://github.com/Barqel/barq.git"
|
|
46
|
+
},
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/Barqel/barq/issues"
|
|
49
|
+
},
|
|
50
|
+
"homepage": "https://github.com/Barqel/barq#readme",
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"bun": ">=1.1.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@biomejs/biome": "^2.5.15",
|
|
56
|
+
"@types/bun": "^1.2.0",
|
|
57
|
+
"@types/node": "^20.0.0",
|
|
58
|
+
"typescript": "^5.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|