@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.
- 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/context.d.ts +55 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/cookies.d.ts +5 -0
- package/dist/cookies.d.ts.map +1 -0
- package/dist/cors.d.ts +11 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/http.d.ts +7 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4304 -0
- package/dist/index.js.map +24 -0
- package/dist/internal/ip.d.ts +6 -0
- package/dist/internal/ip.d.ts.map +1 -0
- package/dist/internal/node-compat.d.ts +2 -0
- package/dist/internal/node-compat.d.ts.map +1 -0
- package/dist/internal/pathname.d.ts +9 -0
- package/dist/internal/pathname.d.ts.map +1 -0
- package/dist/internal/query.d.ts +5 -0
- package/dist/internal/query.d.ts.map +1 -0
- package/dist/internal/scan.d.ts +33 -0
- package/dist/internal/scan.d.ts.map +1 -0
- package/dist/internal/shutdown.d.ts +7 -0
- package/dist/internal/shutdown.d.ts.map +1 -0
- package/dist/internal/trie.d.ts +43 -0
- package/dist/internal/trie.d.ts.map +1 -0
- package/dist/middleware.d.ts +13 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/node-patch.d.ts +3 -0
- package/dist/node-patch.d.ts.map +1 -0
- package/dist/node-patch.js +4304 -0
- package/dist/node-patch.js.map +24 -0
- package/dist/types.d.ts +59 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/validation.d.ts +27 -0
- package/dist/validation.d.ts.map +1 -0
- package/package.json +67 -4
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type IpMatcher = (ip: string) => boolean;
|
|
2
|
+
export declare function compileTrustProxy(trust: boolean | string | readonly string[] | ((ip: string) => boolean) | undefined): IpMatcher;
|
|
3
|
+
export declare function isIpRange(value: string): boolean;
|
|
4
|
+
export declare function ipMatchesRange(ip: string, range: string): boolean;
|
|
5
|
+
export declare function isValidIpAddress(value: string): boolean;
|
|
6
|
+
//# sourceMappingURL=ip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ip.d.ts","sourceRoot":"","sources":["../../src/internal/ip.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;AAQhD,wBAAgB,iBAAiB,CAC/B,KAAK,EACD,OAAO,GACP,MAAM,GACN,SAAS,MAAM,EAAE,GACjB,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GACzB,SAAS,GACZ,SAAS,CA2CX;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAYhD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA4BjE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-compat.d.ts","sourceRoot":"","sources":["../../src/internal/node-compat.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ParsedTarget {
|
|
2
|
+
pathname: string;
|
|
3
|
+
query: string | undefined;
|
|
4
|
+
}
|
|
5
|
+
export declare function hasEncodedSlash(path: string): boolean;
|
|
6
|
+
export declare function normalizeDotSegments(path: string): string;
|
|
7
|
+
export declare function scanPathname(url: string): string;
|
|
8
|
+
export declare function parseRequestTarget(url: string): ParsedTarget;
|
|
9
|
+
//# sourceMappingURL=pathname.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathname.d.ts","sourceRoot":"","sources":["../../src/internal/pathname.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAoDD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAoBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2BzD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBhD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAuC5D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function findQueryParam(url: string, name: string, startPos?: number): string | null;
|
|
2
|
+
export declare function findQueryParamAll(url: string, name: string): string[];
|
|
3
|
+
export declare function parseAllQueryParams(url: string): Record<string, string>;
|
|
4
|
+
export declare function parseFastQuery(url: string, startPos: number): Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/internal/query.ts"],"names":[],"mappings":"AAaA,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAkCf;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA2BrE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBvE;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token-based lexical scanner + semantic analyzer for handler functions.
|
|
3
|
+
* Runs ONCE per route at registration time. Zero dependencies.
|
|
4
|
+
*/
|
|
5
|
+
export interface LiteralInfo {
|
|
6
|
+
kind: "string" | "json";
|
|
7
|
+
value: string;
|
|
8
|
+
}
|
|
9
|
+
export type HandlerFunction = (...args: never[]) => unknown;
|
|
10
|
+
export type ParamSerializer = (params: Record<string, string> | string) => string;
|
|
11
|
+
export interface ParamEntry {
|
|
12
|
+
key: string;
|
|
13
|
+
isParam: boolean;
|
|
14
|
+
paramKey?: string;
|
|
15
|
+
literalValue?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface HandlerAnalysis {
|
|
18
|
+
isNoArg: boolean;
|
|
19
|
+
contextProps: Set<string>;
|
|
20
|
+
hasDynamicAccess: boolean;
|
|
21
|
+
isDestructured: boolean;
|
|
22
|
+
destructuredProps: Set<string>;
|
|
23
|
+
literal: LiteralInfo | null;
|
|
24
|
+
arglessJsonCall: boolean;
|
|
25
|
+
isParamJson?: boolean;
|
|
26
|
+
paramJsonKey?: string;
|
|
27
|
+
paramSerializer?: ParamSerializer | null;
|
|
28
|
+
paramParts?: ParamEntry[] | null;
|
|
29
|
+
}
|
|
30
|
+
export declare const ESCAPE_JSON_CHARS_RE: RegExp;
|
|
31
|
+
export declare function escapeJsonString(value: string): string;
|
|
32
|
+
export declare function analyzeHandler(fn: HandlerFunction): HandlerAnalysis;
|
|
33
|
+
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/internal/scan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,KACpC,MAAM,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;CAClC;AAUD,eAAO,MAAM,oBAAoB,QAAuB,CAAC;AAEzD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AA0XD,wBAAgB,cAAc,CAAC,EAAE,EAAE,eAAe,GAAG,eAAe,CA2FnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../src/internal/shutdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC,CA8BzB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { HttpMethod, ResponseHandler } from "../types";
|
|
2
|
+
export declare const MATCH_HANDLER: unique symbol;
|
|
3
|
+
export declare const MATCH_NOT_ALLOWED: unique symbol;
|
|
4
|
+
export type RouteParams = Record<string, string> & {
|
|
5
|
+
[MATCH_HANDLER]?: ResponseHandler;
|
|
6
|
+
};
|
|
7
|
+
export interface NotAllowed {
|
|
8
|
+
readonly [MATCH_NOT_ALLOWED]: string;
|
|
9
|
+
}
|
|
10
|
+
export type RouteResult = ResponseHandler | RouteParams | NotAllowed | null;
|
|
11
|
+
type PatternSegment = {
|
|
12
|
+
readonly kind: "static";
|
|
13
|
+
readonly value: string;
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: "param";
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly optional?: boolean;
|
|
18
|
+
} | {
|
|
19
|
+
readonly kind: "wildcard";
|
|
20
|
+
readonly name: string | null;
|
|
21
|
+
};
|
|
22
|
+
export declare function parsePattern(pattern: string): PatternSegment[];
|
|
23
|
+
export declare class SegmentTrie {
|
|
24
|
+
private root;
|
|
25
|
+
private staticRoutes;
|
|
26
|
+
private staticNotAllowed;
|
|
27
|
+
private maxStaticLength;
|
|
28
|
+
private readonly paramNameBuffer;
|
|
29
|
+
private readonly paramValueBuffer;
|
|
30
|
+
addBatch(routes: readonly {
|
|
31
|
+
method: HttpMethod;
|
|
32
|
+
pattern: string;
|
|
33
|
+
handler: ResponseHandler;
|
|
34
|
+
}[]): void;
|
|
35
|
+
private clone;
|
|
36
|
+
add(method: HttpMethod, pattern: string, handler: ResponseHandler): void;
|
|
37
|
+
private addWithSegments;
|
|
38
|
+
private addParsed;
|
|
39
|
+
static computeAllow(handlers: Record<string, ResponseHandler>): string;
|
|
40
|
+
match(method: string, pathname: string): RouteResult;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=trie.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trie.d.ts","sourceRoot":"","sources":["../../src/internal/trie.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE5D,eAAO,MAAM,aAAa,EAAE,OAAO,MAAqC,CAAC;AAEzE,eAAO,MAAM,iBAAiB,EAAE,OAAO,MAEtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IACjD,CAAC,aAAa,CAAC,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;AA6G5E,KAAK,cAAc,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAIhE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAyF9D;AAiND,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,YAAY,CAAsD;IAC1E,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IAEjD,QAAQ,CACN,MAAM,EAAE,SAAS;QACf,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,eAAe,CAAC;KAC1B,EAAE,GACF,IAAI;IA6BP,OAAO,CAAC,KAAK;IAiBb,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAkBxE,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,SAAS;IA+HjB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM;IAQtE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;CAoDrD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Context } from "./context";
|
|
2
|
+
import type { ErrorResolver, Middleware } from "./types";
|
|
3
|
+
type PipelineHandler = (ctx: Context) => Response | Promise<Response>;
|
|
4
|
+
export type MiddlewareDispatcher = (ctx: Context, handler: PipelineHandler) => Response | Promise<Response>;
|
|
5
|
+
export declare function isThenable(value: unknown): value is PromiseLike<unknown>;
|
|
6
|
+
/** Compile a middleware chain once for reuse by native and fallback routes. */
|
|
7
|
+
export declare function composeMiddlewareDispatcher(mws: readonly Middleware[], errorResolver?: ErrorResolver): MiddlewareDispatcher;
|
|
8
|
+
/** Compile a route-specific chain around its handler. */
|
|
9
|
+
export declare function composeMiddlewares(mws: readonly Middleware[], handler: PipelineHandler, errorResolver?: ErrorResolver): PipelineHandler;
|
|
10
|
+
export declare function runPipeline(mws: readonly Middleware[], ctx: Context, handler: (ctx: Context) => Response | Promise<Response>, errorResolver?: ErrorResolver): Response | Promise<Response>;
|
|
11
|
+
export declare function unwindAfter(mws: readonly Middleware[], ctx: Context, res: Response, enteredCount: number, errorResolver?: ErrorResolver): Response | Promise<Response>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEzD,KAAK,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG,CACjC,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,eAAe,KACrB,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,CAMxE;AAQD,+EAA+E;AAC/E,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,SAAS,UAAU,EAAE,EAC1B,aAAa,CAAC,EAAE,aAAa,GAC5B,oBAAoB,CAwDtB;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,SAAS,UAAU,EAAE,EAC1B,OAAO,EAAE,eAAe,EACxB,aAAa,CAAC,EAAE,aAAa,GAC5B,eAAe,CAGjB;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,UAAU,EAAE,EAC1B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EACvD,aAAa,CAAC,EAAE,aAAa,GAC5B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CA2B9B;AAsHD,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,UAAU,EAAE,EAC1B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,aAAa,GAC5B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiD9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-patch.d.ts","sourceRoot":"","sources":["../src/node-patch.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAEhC,cAAc,SAAS,CAAC"}
|