@taserjs/router 0.1.4 → 0.1.6
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/dist/cjs/builder/factories.cjs.map +1 -1
- package/dist/cjs/builder/factories.d.cts +9 -9
- package/dist/cjs/builder/middleware-unit.cjs +21 -12
- package/dist/cjs/builder/middleware-unit.cjs.map +1 -1
- package/dist/cjs/builder/middleware-unit.d.cts +1 -18
- package/dist/cjs/builder/middleware.cjs +1 -0
- package/dist/cjs/builder/middleware.cjs.map +1 -1
- package/dist/cjs/builder/route.cjs +1 -0
- package/dist/cjs/builder/route.cjs.map +1 -1
- package/dist/cjs/builder/router.cjs +1 -16
- package/dist/cjs/builder/router.cjs.map +1 -1
- package/dist/cjs/builder/router.d.cts +6 -17
- package/dist/cjs/builder/standalone.cjs +43 -0
- package/dist/cjs/builder/standalone.cjs.map +1 -0
- package/dist/cjs/builder/standalone.d.cts +28 -0
- package/dist/cjs/define/middleware.cjs +2 -3
- package/dist/cjs/define/middleware.cjs.map +1 -1
- package/dist/cjs/define/middleware.d.cts +15 -16
- package/dist/cjs/index.cjs +13 -2
- package/dist/cjs/index.d.cts +5 -3
- package/dist/cjs/middleware/body-limit.cjs +1 -1
- package/dist/cjs/middleware/body-limit.cjs.map +1 -1
- package/dist/cjs/middleware/body-limit.d.cts +1 -1
- package/dist/cjs/middleware/compress.cjs +1 -1
- package/dist/cjs/middleware/compress.cjs.map +1 -1
- package/dist/cjs/middleware/compress.d.cts +1 -1
- package/dist/cjs/middleware/cors.cjs +1 -1
- package/dist/cjs/middleware/cors.cjs.map +1 -1
- package/dist/cjs/middleware/cors.d.cts +1 -1
- package/dist/cjs/middleware/csrf.cjs +1 -1
- package/dist/cjs/middleware/csrf.cjs.map +1 -1
- package/dist/cjs/middleware/csrf.d.cts +1 -1
- package/dist/cjs/middleware/etag.cjs +1 -1
- package/dist/cjs/middleware/etag.cjs.map +1 -1
- package/dist/cjs/middleware/etag.d.cts +1 -1
- package/dist/cjs/middleware/hono-mw.cjs +1 -1
- package/dist/cjs/middleware/hono-mw.cjs.map +1 -1
- package/dist/cjs/middleware/hono-mw.d.cts +1 -1
- package/dist/cjs/middleware/jwk.cjs +1 -1
- package/dist/cjs/middleware/jwk.cjs.map +1 -1
- package/dist/cjs/middleware/jwt.cjs +1 -1
- package/dist/cjs/middleware/jwt.cjs.map +1 -1
- package/dist/cjs/middleware/secure-headers.cjs +1 -1
- package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
- package/dist/cjs/middleware/secure-headers.d.cts +1 -1
- package/dist/cjs/middleware/timing.cjs +1 -1
- package/dist/cjs/middleware/timing.cjs.map +1 -1
- package/dist/cjs/middleware/timing.d.cts +1 -1
- package/dist/cjs/types/index.d.cts +27 -17
- package/dist/cjs/types/type-utils.d.cts +2 -2
- package/dist/cjs/types/units.d.cts +17 -19
- package/dist/esm/builder/factories.d.ts +9 -9
- package/dist/esm/builder/factories.js.map +1 -1
- package/dist/esm/builder/middleware-unit.d.ts +1 -18
- package/dist/esm/builder/middleware-unit.js +21 -12
- package/dist/esm/builder/middleware-unit.js.map +1 -1
- package/dist/esm/builder/middleware.js +1 -0
- package/dist/esm/builder/middleware.js.map +1 -1
- package/dist/esm/builder/route.js +1 -0
- package/dist/esm/builder/route.js.map +1 -1
- package/dist/esm/builder/router.d.ts +6 -17
- package/dist/esm/builder/router.js +1 -16
- package/dist/esm/builder/router.js.map +1 -1
- package/dist/esm/builder/standalone.d.ts +28 -0
- package/dist/esm/builder/standalone.js +32 -0
- package/dist/esm/builder/standalone.js.map +1 -0
- package/dist/esm/define/middleware.d.ts +15 -16
- package/dist/esm/define/middleware.js +2 -3
- package/dist/esm/define/middleware.js.map +1 -1
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.js +2 -2
- package/dist/esm/middleware/body-limit.d.ts +1 -1
- package/dist/esm/middleware/body-limit.js +2 -2
- package/dist/esm/middleware/body-limit.js.map +1 -1
- package/dist/esm/middleware/compress.d.ts +1 -1
- package/dist/esm/middleware/compress.js +2 -2
- package/dist/esm/middleware/compress.js.map +1 -1
- package/dist/esm/middleware/cors.d.ts +1 -1
- package/dist/esm/middleware/cors.js +2 -2
- package/dist/esm/middleware/cors.js.map +1 -1
- package/dist/esm/middleware/csrf.d.ts +1 -1
- package/dist/esm/middleware/csrf.js +2 -2
- package/dist/esm/middleware/csrf.js.map +1 -1
- package/dist/esm/middleware/etag.d.ts +1 -1
- package/dist/esm/middleware/etag.js +2 -2
- package/dist/esm/middleware/etag.js.map +1 -1
- package/dist/esm/middleware/hono-mw.d.ts +1 -1
- package/dist/esm/middleware/hono-mw.js +1 -1
- package/dist/esm/middleware/hono-mw.js.map +1 -1
- package/dist/esm/middleware/jwk.js +2 -2
- package/dist/esm/middleware/jwk.js.map +1 -1
- package/dist/esm/middleware/jwt.js +2 -2
- package/dist/esm/middleware/jwt.js.map +1 -1
- package/dist/esm/middleware/secure-headers.d.ts +1 -1
- package/dist/esm/middleware/secure-headers.js +2 -2
- package/dist/esm/middleware/secure-headers.js.map +1 -1
- package/dist/esm/middleware/timing.d.ts +1 -1
- package/dist/esm/middleware/timing.js +2 -2
- package/dist/esm/middleware/timing.js.map +1 -1
- package/dist/esm/types/index.d.ts +27 -17
- package/dist/esm/types/type-utils.d.ts +2 -2
- package/dist/esm/types/units.d.ts +17 -19
- package/package.json +3 -3
- package/src/builder/factories.ts +2 -2
- package/src/builder/middleware-unit.ts +22 -11
- package/src/builder/middleware.ts +2 -0
- package/src/builder/route.ts +2 -0
- package/src/builder/router.ts +7 -60
- package/src/builder/standalone.ts +70 -0
- package/src/define/middleware.ts +37 -18
- package/src/index.ts +26 -2
- package/src/middleware/body-limit.ts +2 -2
- package/src/middleware/compress.ts +2 -2
- package/src/middleware/cors.ts +2 -2
- package/src/middleware/csrf.ts +2 -2
- package/src/middleware/etag.ts +2 -2
- package/src/middleware/hono-mw.ts +1 -1
- package/src/middleware/jwk.ts +2 -2
- package/src/middleware/jwt.ts +2 -2
- package/src/middleware/secure-headers.ts +2 -2
- package/src/middleware/timing.ts +2 -2
- package/src/types/index.ts +53 -28
- package/src/types/type-utils.ts +8 -4
- package/src/types/units.ts +46 -22
- package/dist/cjs/register.d.cts +0 -2
- package/dist/esm/register.d.ts +0 -2
- package/src/register.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.cjs","names":[],"sources":["../../../src/builder/factories.ts"],"sourcesContent":["import { createRouteBuilder } from \"./route.js\";\nimport type { RouteBuilder, RoutePath } from \"../types/index.js\";\nimport type {
|
|
1
|
+
{"version":3,"file":"factories.cjs","names":[],"sources":["../../../src/builder/factories.ts"],"sourcesContent":["import { createRouteBuilder } from \"./route.js\";\nimport type { AppContext, RouteBuilder, RoutePath } from \"../types/index.js\";\nimport type { HttpMethod } from \"../types/units.js\";\n\nexport type CreateWithoutBodyRoute<\n M extends \"GET\" | \"DELETE\" | \"OPTIONS\" | \"HEAD\",\n TAppContext extends Record<string, unknown> = AppContext,\n> = <const Path extends RoutePath>(\n path: Path,\n) => RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;\n\nexport type CreateWithBodyRoute<\n M extends \"POST\" | \"PUT\" | \"PATCH\",\n TAppContext extends Record<string, unknown> = AppContext,\n> = <const Path extends RoutePath>(\n path: Path,\n) => RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;\n\nexport type CreateAnyRoute<TAppContext extends Record<string, unknown> = AppContext> = <\n const Path extends RoutePath,\n const Methods extends readonly HttpMethod[],\n>(\n path: Path,\n methods: Methods,\n) => RouteBuilder<Path, Methods[number], readonly [], {}, {}, TAppContext>;\n\nexport type CreateAllRoute<TAppContext extends Record<string, unknown> = AppContext> = <\n const Path extends RoutePath,\n>(\n path: Path,\n) => RouteBuilder<Path, HttpMethod, readonly [], {}, {}, TAppContext>;\n\nfunction createWithoutBodyRoute<M extends \"GET\" | \"DELETE\" | \"OPTIONS\" | \"HEAD\">(\n method: M,\n): CreateWithoutBodyRoute<M> {\n return ((path: string) =>\n createRouteBuilder(path, method)) as unknown as CreateWithoutBodyRoute<M>;\n}\n\nfunction createWithBodyRoute<M extends \"POST\" | \"PUT\" | \"PATCH\">(\n method: M,\n): CreateWithBodyRoute<M> {\n return ((path: string) => createRouteBuilder(path, method)) as unknown as CreateWithBodyRoute<M>;\n}\n\nexport const createGetRoute = createWithoutBodyRoute(\"GET\");\nexport const createDeleteRoute = createWithoutBodyRoute(\"DELETE\");\nexport const createOptionsRoute = createWithoutBodyRoute(\"OPTIONS\");\nexport const createHeadRoute = createWithoutBodyRoute(\"HEAD\");\nexport const createPostRoute = createWithBodyRoute(\"POST\");\nexport const createPutRoute = createWithBodyRoute(\"PUT\");\nexport const createPatchRoute = createWithBodyRoute(\"PATCH\");\n\nexport const createAnyRoute: CreateAnyRoute = ((path: string, methods: readonly HttpMethod[]) =>\n createRouteBuilder(path, \"ANY\", methods)) as unknown as CreateAnyRoute;\n\nexport const createAllRoute: CreateAllRoute = ((path: string) =>\n createRouteBuilder(path, \"ALL\")) as unknown as CreateAllRoute;\n"],"mappings":";;AAgCA,SAAS,uBACP,QAC2B;CAC3B,SAAS,SACP,cAAA,mBAAmB,MAAM,MAAM;AACnC;AAEA,SAAS,oBACP,QACwB;CACxB,SAAS,SAAiB,cAAA,mBAAmB,MAAM,MAAM;AAC3D;AAEA,IAAa,iBAAiB,uBAAuB,KAAK;AAC1D,IAAa,oBAAoB,uBAAuB,QAAQ;AAChE,IAAa,qBAAqB,uBAAuB,SAAS;AAClE,IAAa,kBAAkB,uBAAuB,MAAM;AAC5D,IAAa,kBAAkB,oBAAoB,MAAM;AACzD,IAAa,iBAAiB,oBAAoB,KAAK;AACvD,IAAa,mBAAmB,oBAAoB,OAAO;AAE3D,IAAa,mBAAmC,MAAc,YAC5D,cAAA,mBAAmB,MAAM,OAAO,OAAO;AAEzC,IAAa,mBAAmC,SAC9C,cAAA,mBAAmB,MAAM,KAAK"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { RouteBuilder, RoutePath } from '../types/index.js';
|
|
2
|
-
import {
|
|
1
|
+
import { AppContext, RouteBuilder, RoutePath } from '../types/index.js';
|
|
2
|
+
import { HttpMethod } from '../types/units.js';
|
|
3
3
|
export type CreateWithoutBodyRoute<M extends "GET" | "DELETE" | "OPTIONS" | "HEAD", TAppContext extends Record<string, unknown> = AppContext> = <const Path extends RoutePath>(path: Path) => RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
|
|
4
4
|
export type CreateWithBodyRoute<M extends "POST" | "PUT" | "PATCH", TAppContext extends Record<string, unknown> = AppContext> = <const Path extends RoutePath>(path: Path) => RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
|
|
5
5
|
export type CreateAnyRoute<TAppContext extends Record<string, unknown> = AppContext> = <const Path extends RoutePath, const Methods extends readonly HttpMethod[]>(path: Path, methods: Methods) => RouteBuilder<Path, Methods[number], readonly [], {}, {}, TAppContext>;
|
|
6
6
|
export type CreateAllRoute<TAppContext extends Record<string, unknown> = AppContext> = <const Path extends RoutePath>(path: Path) => RouteBuilder<Path, HttpMethod, readonly [], {}, {}, TAppContext>;
|
|
7
|
-
export declare const createGetRoute: CreateWithoutBodyRoute<"GET",
|
|
8
|
-
export declare const createDeleteRoute: CreateWithoutBodyRoute<"DELETE",
|
|
9
|
-
export declare const createOptionsRoute: CreateWithoutBodyRoute<"OPTIONS",
|
|
10
|
-
export declare const createHeadRoute: CreateWithoutBodyRoute<"HEAD",
|
|
11
|
-
export declare const createPostRoute: CreateWithBodyRoute<"POST",
|
|
12
|
-
export declare const createPutRoute: CreateWithBodyRoute<"PUT",
|
|
13
|
-
export declare const createPatchRoute: CreateWithBodyRoute<"PATCH",
|
|
7
|
+
export declare const createGetRoute: CreateWithoutBodyRoute<"GET", import('../types/units.js').EmptyAppContext>;
|
|
8
|
+
export declare const createDeleteRoute: CreateWithoutBodyRoute<"DELETE", import('../types/units.js').EmptyAppContext>;
|
|
9
|
+
export declare const createOptionsRoute: CreateWithoutBodyRoute<"OPTIONS", import('../types/units.js').EmptyAppContext>;
|
|
10
|
+
export declare const createHeadRoute: CreateWithoutBodyRoute<"HEAD", import('../types/units.js').EmptyAppContext>;
|
|
11
|
+
export declare const createPostRoute: CreateWithBodyRoute<"POST", import('../types/units.js').EmptyAppContext>;
|
|
12
|
+
export declare const createPutRoute: CreateWithBodyRoute<"PUT", import('../types/units.js').EmptyAppContext>;
|
|
13
|
+
export declare const createPatchRoute: CreateWithBodyRoute<"PATCH", import('../types/units.js').EmptyAppContext>;
|
|
14
14
|
export declare const createAnyRoute: CreateAnyRoute;
|
|
15
15
|
export declare const createAllRoute: CreateAllRoute;
|
|
@@ -4,6 +4,20 @@ function createMiddlewareUnitBuilder(requiredLayouts) {
|
|
|
4
4
|
const validators = {};
|
|
5
5
|
let bodyMode;
|
|
6
6
|
let returnsMap;
|
|
7
|
+
function toUnit(fn) {
|
|
8
|
+
const schemas = require_validators.pickDefinedSchemas(validators);
|
|
9
|
+
return {
|
|
10
|
+
...fn ? { handler: fn } : {},
|
|
11
|
+
...schemas,
|
|
12
|
+
...bodyMode ? { bodyMode } : {},
|
|
13
|
+
...returnsMap ? {
|
|
14
|
+
returns: returnsMap,
|
|
15
|
+
__returns: returnsMap
|
|
16
|
+
} : {},
|
|
17
|
+
...requiredLayouts !== void 0 ? { __requiredLayouts: requiredLayouts } : {},
|
|
18
|
+
__middlewareAcc: void 0
|
|
19
|
+
};
|
|
20
|
+
}
|
|
7
21
|
const builder = {
|
|
8
22
|
query(schema) {
|
|
9
23
|
validators.query = schema;
|
|
@@ -34,19 +48,14 @@ function createMiddlewareUnitBuilder(requiredLayouts) {
|
|
|
34
48
|
return builder;
|
|
35
49
|
},
|
|
36
50
|
handler(fn) {
|
|
37
|
-
return
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
__returns: returnsMap
|
|
44
|
-
} : {},
|
|
45
|
-
...requiredLayouts !== void 0 ? { __requiredLayouts: requiredLayouts } : {},
|
|
46
|
-
__middlewareAcc: void 0
|
|
47
|
-
};
|
|
48
|
-
}
|
|
51
|
+
return toUnit(fn);
|
|
52
|
+
},
|
|
53
|
+
toUnit() {
|
|
54
|
+
return toUnit();
|
|
55
|
+
},
|
|
56
|
+
__middlewareAcc: void 0
|
|
49
57
|
};
|
|
58
|
+
if (requiredLayouts !== void 0) builder.__requiredLayouts = requiredLayouts;
|
|
50
59
|
return builder;
|
|
51
60
|
}
|
|
52
61
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-unit.cjs","names":[],"sources":["../../../src/builder/middleware-unit.ts"],"sourcesContent":["import type { BodyMode } from \"@taserjs/router-core\";\n\nimport type { ReturnsMap } from \"../types/returns.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"../define/validators.js\";\n\nexport function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]) {\n const validators: SchemaValidators = {};\n let bodyMode: BodyMode | undefined;\n let returnsMap: ReturnsMap | undefined;\n\n const builder = {\n query(schema: Schema<unknown>) {\n validators.query = schema;\n return builder;\n },\n params(schema: Schema<unknown>) {\n validators.params = schema;\n return builder;\n },\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>) {\n if (typeof modeOrSchema === \"string\") {\n bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n validators.body = schema;\n }\n } else {\n bodyMode = \"json\";\n validators.body = modeOrSchema;\n }\n return builder;\n },\n returns(map: ReturnsMap) {\n returnsMap = { ...returnsMap, ...map };\n return builder;\n },\n requires() {\n return builder;\n },\n handler(fn: (ctx: any, next: any) => any) {\n
|
|
1
|
+
{"version":3,"file":"middleware-unit.cjs","names":[],"sources":["../../../src/builder/middleware-unit.ts"],"sourcesContent":["import type { BodyMode } from \"@taserjs/router-core\";\n\nimport type { ReturnsMap } from \"../types/returns.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"../define/validators.js\";\n\nexport function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]) {\n const validators: SchemaValidators = {};\n let bodyMode: BodyMode | undefined;\n let returnsMap: ReturnsMap | undefined;\n\n function toUnit(fn?: (ctx: any, next: any) => any) {\n const schemas = pickDefinedSchemas(validators);\n return {\n ...(fn ? { handler: fn } : {}),\n ...schemas,\n ...(bodyMode ? { bodyMode } : {}),\n ...(returnsMap ? { returns: returnsMap, __returns: returnsMap } : {}),\n ...(requiredLayouts !== undefined ? { __requiredLayouts: requiredLayouts } : {}),\n __middlewareAcc: undefined as unknown,\n };\n }\n\n const builder: any = {\n query(schema: Schema<unknown>) {\n validators.query = schema;\n return builder;\n },\n params(schema: Schema<unknown>) {\n validators.params = schema;\n return builder;\n },\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>) {\n if (typeof modeOrSchema === \"string\") {\n bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n validators.body = schema;\n }\n } else {\n bodyMode = \"json\";\n validators.body = modeOrSchema;\n }\n return builder;\n },\n returns(map: ReturnsMap) {\n returnsMap = { ...returnsMap, ...map };\n return builder;\n },\n requires() {\n return builder;\n },\n handler(fn: (ctx: any, next: any) => any) {\n return toUnit(fn);\n },\n toUnit() {\n return toUnit();\n },\n __middlewareAcc: undefined as unknown,\n };\n\n if (requiredLayouts !== undefined) {\n builder.__requiredLayouts = requiredLayouts;\n }\n\n return builder;\n}\n"],"mappings":";;AAMA,SAAgB,4BAA4B,iBAA8C;CACxF,MAAM,aAA+B,CAAC;CACtC,IAAI;CACJ,IAAI;CAEJ,SAAS,OAAO,IAAmC;EACjD,MAAM,UAAU,mBAAA,mBAAmB,UAAU;EAC7C,OAAO;GACL,GAAI,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;GAC5B,GAAG;GACH,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;GAC/B,GAAI,aAAa;IAAE,SAAS;IAAY,WAAW;GAAW,IAAI,CAAC;GACnE,GAAI,oBAAoB,KAAA,IAAY,EAAE,mBAAmB,gBAAgB,IAAI,CAAC;GAC9E,iBAAiB,KAAA;EACnB;CACF;CAEA,MAAM,UAAe;EACnB,MAAM,QAAyB;GAC7B,WAAW,QAAQ;GACnB,OAAO;EACT;EACA,OAAO,QAAyB;GAC9B,WAAW,SAAS;GACpB,OAAO;EACT;EACA,KAAK,cAA0C,QAA0B;GACvE,IAAI,OAAO,iBAAiB,UAAU;IACpC,WAAW;IACX,IAAI,WAAW,KAAA,GACb,WAAW,OAAO;GAEtB,OAAO;IACL,WAAW;IACX,WAAW,OAAO;GACpB;GACA,OAAO;EACT;EACA,QAAQ,KAAiB;GACvB,aAAa;IAAE,GAAG;IAAY,GAAG;GAAI;GACrC,OAAO;EACT;EACA,WAAW;GACT,OAAO;EACT;EACA,QAAQ,IAAkC;GACxC,OAAO,OAAO,EAAE;EAClB;EACA,SAAS;GACP,OAAO,OAAO;EAChB;EACA,iBAAiB,KAAA;CACnB;CAEA,IAAI,oBAAoB,KAAA,GACtB,QAAQ,oBAAoB;CAG9B,OAAO;AACT"}
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { ReturnsMap } from '../types/returns.js';
|
|
3
|
-
import { Schema } from '../types/schema.js';
|
|
4
|
-
export declare function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]): {
|
|
5
|
-
query(schema: Schema<unknown>): /*elided*/ any;
|
|
6
|
-
params(schema: Schema<unknown>): /*elided*/ any;
|
|
7
|
-
body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>): /*elided*/ any;
|
|
8
|
-
returns(map: ReturnsMap): /*elided*/ any;
|
|
9
|
-
requires(): /*elided*/ any;
|
|
10
|
-
handler(fn: (ctx: any, next: any) => any): {
|
|
11
|
-
__middlewareAcc: unknown;
|
|
12
|
-
__requiredLayouts?: string | readonly string[];
|
|
13
|
-
returns?: ReturnsMap;
|
|
14
|
-
__returns?: ReturnsMap;
|
|
15
|
-
bodyMode?: BodyMode;
|
|
16
|
-
handler: (ctx: any, next: any) => any;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
1
|
+
export declare function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]): any;
|
|
@@ -6,6 +6,7 @@ function createMiddleware(layout) {
|
|
|
6
6
|
middlewares: entries,
|
|
7
7
|
use(definition) {
|
|
8
8
|
if (typeof definition === "function") entries.push({ handler: definition });
|
|
9
|
+
else if (typeof definition?.toUnit === "function") entries.push(definition.toUnit());
|
|
9
10
|
else entries.push(definition);
|
|
10
11
|
return chain;
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/builder/middleware.ts"],"sourcesContent":["import type { LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { MiddlewareDefinition } from \"../types/units.js\";\n\nexport function createMiddleware<const Layout extends LayoutId>(\n layout: Layout,\n): MiddlewareBuilder<Layout, readonly []> {\n const entries: MiddlewareDefinition[] = [];\n\n const chain = {\n layout,\n middlewares: entries,\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)) {\n if (typeof definition === \"function\") {\n entries.push({ handler: definition as any });\n } else {\n entries.push(definition);\n }\n return chain;\n },\n };\n\n return chain as unknown as MiddlewareBuilder<Layout, readonly []>;\n}\n"],"mappings":";AAGA,SAAgB,iBACd,QACwC;CACxC,MAAM,UAAkC,CAAC;CAEzC,MAAM,QAAQ;EACZ;EACA,aAAa;EACb,IAAI,YAAmE;GACrE,IAAI,OAAO,eAAe,YACxB,QAAQ,KAAK,EAAE,SAAS,WAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/builder/middleware.ts"],"sourcesContent":["import type { LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { MiddlewareDefinition } from \"../types/units.js\";\n\nexport function createMiddleware<const Layout extends LayoutId>(\n layout: Layout,\n): MiddlewareBuilder<Layout, readonly []> {\n const entries: MiddlewareDefinition[] = [];\n\n const chain = {\n layout,\n middlewares: entries,\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)) {\n if (typeof definition === \"function\") {\n entries.push({ handler: definition as any });\n } else if (typeof (definition as any)?.toUnit === \"function\") {\n entries.push((definition as any).toUnit());\n } else {\n entries.push(definition);\n }\n return chain;\n },\n };\n\n return chain as unknown as MiddlewareBuilder<Layout, readonly []>;\n}\n"],"mappings":";AAGA,SAAgB,iBACd,QACwC;CACxC,MAAM,UAAkC,CAAC;CAEzC,MAAM,QAAQ;EACZ;EACA,aAAa;EACb,IAAI,YAAmE;GACrE,IAAI,OAAO,eAAe,YACxB,QAAQ,KAAK,EAAE,SAAS,WAAkB,CAAC;QACtC,IAAI,OAAQ,YAAoB,WAAW,YAChD,QAAQ,KAAM,WAAmB,OAAO,CAAC;QAEzC,QAAQ,KAAK,UAAU;GAEzB,OAAO;EACT;CACF;CAEA,OAAO;AACT"}
|
|
@@ -55,6 +55,7 @@ function createRouteBuilder(path, method, methods) {
|
|
|
55
55
|
},
|
|
56
56
|
use(definition) {
|
|
57
57
|
if (typeof definition === "function") middlewares.push({ handler: definition });
|
|
58
|
+
else if (typeof definition?.toUnit === "function") middlewares.push(definition.toUnit());
|
|
58
59
|
else middlewares.push(definition);
|
|
59
60
|
return builder;
|
|
60
61
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.cjs","names":[],"sources":["../../../src/builder/route.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport {\n collectReturnsFromDefinitions,\n hasInputSchemas,\n mergeReturnsMaps,\n withAuto422,\n} from \"@taserjs/router-utils\";\nimport type { BodyMode } from \"@taserjs/router-core\";\n\nimport type {\n Method,\n RouteBuilder,\n RoutePath,\n ReturnsMap,\n ValidatorParts,\n Schema,\n} from \"../types/index.js\";\nimport type { HttpMethod, MiddlewareDefinition } from \"../types/units.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"../define/validators.js\";\n\nfunction toUtilsMap(map: ReturnsMap | undefined): Record<number, StandardSchemaV1> {\n if (!map) {\n return {};\n }\n const out: Record<number, StandardSchemaV1> = {};\n for (const [key, schema] of Object.entries(map)) {\n if (schema !== undefined) {\n out[Number(key)] = schema;\n }\n }\n return out;\n}\n\nfunction buildEffectiveReturns(args: {\n middlewareReturns: ReturnsMap;\n routeReturns: ReturnsMap;\n schemas: {\n query?: unknown;\n params?: unknown;\n body?: unknown;\n middlewares?: readonly MiddlewareDefinition[];\n };\n}): Record<number, StandardSchemaV1> | undefined {\n const merged = mergeReturnsMaps(\n toUtilsMap(args.middlewareReturns),\n toUtilsMap(args.routeReturns),\n );\n const with422 = withAuto422(merged, hasInputSchemas(args.schemas));\n return Object.keys(with422).length > 0 ? with422 : undefined;\n}\n\nfunction buildRouteBase(\n path: string,\n method: HttpMethod | \"ANY\" | \"ALL\",\n methods: readonly HttpMethod[] | undefined,\n middlewares: MiddlewareDefinition[],\n) {\n return {\n path,\n method,\n ...(methods ? { methods: [...methods] } : {}),\n middlewares: [...middlewares],\n };\n}\n\n/** Shared internal builder — not part of the public `@taserjs/router` API. */\nexport function createRouteBuilder(\n path: string,\n method: HttpMethod | \"ANY\" | \"ALL\",\n methods?: readonly HttpMethod[],\n): RouteBuilder<RoutePath, Method, readonly [], ValidatorParts> {\n const middlewares: MiddlewareDefinition[] = [];\n let routeReturns: Record<number, StandardSchemaV1> = {};\n const validators: SchemaValidators = {};\n let bodyMode: BodyMode | undefined;\n\n const builder = {\n path,\n method,\n query(schema: Schema<unknown>) {\n validators.query = schema;\n return builder;\n },\n params(schema: Schema<unknown>) {\n validators.params = schema;\n return builder;\n },\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>) {\n if (typeof modeOrSchema === \"string\") {\n bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n validators.body = schema;\n }\n } else {\n bodyMode = \"json\";\n validators.body = modeOrSchema;\n }\n return builder;\n },\n returns(map: ReturnsMap) {\n routeReturns = { ...routeReturns, ...toUtilsMap(map) };\n return builder;\n },\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)) {\n if (typeof definition === \"function\") {\n middlewares.push({ handler: definition as any });\n } else {\n middlewares.push(definition);\n }\n return builder;\n },\n handler(fn: (ctx: unknown) => Response | Promise<Response>) {\n const routeSchemas = pickDefinedSchemas(validators);\n const base = buildRouteBase(path, method, methods, middlewares);\n\n const returns = buildEffectiveReturns({\n middlewareReturns: collectReturnsFromDefinitions(middlewares),\n routeReturns,\n schemas: {\n ...validators,\n middlewares,\n },\n });\n\n return {\n ...base,\n handler: fn,\n ...routeSchemas,\n ...(bodyMode ? { bodyMode } : {}),\n ...(returns ? { returns } : {}),\n };\n },\n };\n\n return builder as unknown as RouteBuilder<RoutePath, Method, readonly [], ValidatorParts>;\n}\n"],"mappings":";;;AAoBA,SAAS,WAAW,KAA+D;CACjF,IAAI,CAAC,KACH,OAAO,CAAC;CAEV,MAAM,MAAwC,CAAC;CAC/C,KAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,GAAG,GAC5C,IAAI,WAAW,KAAA,GACb,IAAI,OAAO,GAAG,KAAK;CAGvB,OAAO;AACT;AAEA,SAAS,sBAAsB,MASkB;CAK/C,MAAM,WAAA,GAAA,sBAAA,YAAA,EAAA,GAAA,sBAAA,iBAAA,CAHJ,WAAW,KAAK,iBAAiB,GACjC,WAAW,KAAK,YAAY,CAEF,IAAA,GAAA,sBAAA,gBAAA,CAAwB,KAAK,OAAO,CAAC;CACjE,OAAO,OAAO,KAAK,OAAO,CAAC,CAAC,SAAS,IAAI,UAAU,KAAA;AACrD;AAEA,SAAS,eACP,MACA,QACA,SACA,aACA;CACA,OAAO;EACL;EACA;EACA,GAAI,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC;EAC3C,aAAa,CAAC,GAAG,WAAW;CAC9B;AACF;;AAGA,SAAgB,mBACd,MACA,QACA,SAC8D;CAC9D,MAAM,cAAsC,CAAC;CAC7C,IAAI,eAAiD,CAAC;CACtD,MAAM,aAA+B,CAAC;CACtC,IAAI;CAEJ,MAAM,UAAU;EACd;EACA;EACA,MAAM,QAAyB;GAC7B,WAAW,QAAQ;GACnB,OAAO;EACT;EACA,OAAO,QAAyB;GAC9B,WAAW,SAAS;GACpB,OAAO;EACT;EACA,KAAK,cAA0C,QAA0B;GACvE,IAAI,OAAO,iBAAiB,UAAU;IACpC,WAAW;IACX,IAAI,WAAW,KAAA,GACb,WAAW,OAAO;GAEtB,OAAO;IACL,WAAW;IACX,WAAW,OAAO;GACpB;GACA,OAAO;EACT;EACA,QAAQ,KAAiB;GACvB,eAAe;IAAE,GAAG;IAAc,GAAG,WAAW,GAAG;GAAE;GACrD,OAAO;EACT;EACA,IAAI,YAAmE;GACrE,IAAI,OAAO,eAAe,YACxB,YAAY,KAAK,EAAE,SAAS,WAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"route.cjs","names":[],"sources":["../../../src/builder/route.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport {\n collectReturnsFromDefinitions,\n hasInputSchemas,\n mergeReturnsMaps,\n withAuto422,\n} from \"@taserjs/router-utils\";\nimport type { BodyMode } from \"@taserjs/router-core\";\n\nimport type {\n Method,\n RouteBuilder,\n RoutePath,\n ReturnsMap,\n ValidatorParts,\n Schema,\n} from \"../types/index.js\";\nimport type { HttpMethod, MiddlewareDefinition } from \"../types/units.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"../define/validators.js\";\n\nfunction toUtilsMap(map: ReturnsMap | undefined): Record<number, StandardSchemaV1> {\n if (!map) {\n return {};\n }\n const out: Record<number, StandardSchemaV1> = {};\n for (const [key, schema] of Object.entries(map)) {\n if (schema !== undefined) {\n out[Number(key)] = schema;\n }\n }\n return out;\n}\n\nfunction buildEffectiveReturns(args: {\n middlewareReturns: ReturnsMap;\n routeReturns: ReturnsMap;\n schemas: {\n query?: unknown;\n params?: unknown;\n body?: unknown;\n middlewares?: readonly MiddlewareDefinition[];\n };\n}): Record<number, StandardSchemaV1> | undefined {\n const merged = mergeReturnsMaps(\n toUtilsMap(args.middlewareReturns),\n toUtilsMap(args.routeReturns),\n );\n const with422 = withAuto422(merged, hasInputSchemas(args.schemas));\n return Object.keys(with422).length > 0 ? with422 : undefined;\n}\n\nfunction buildRouteBase(\n path: string,\n method: HttpMethod | \"ANY\" | \"ALL\",\n methods: readonly HttpMethod[] | undefined,\n middlewares: MiddlewareDefinition[],\n) {\n return {\n path,\n method,\n ...(methods ? { methods: [...methods] } : {}),\n middlewares: [...middlewares],\n };\n}\n\n/** Shared internal builder — not part of the public `@taserjs/router` API. */\nexport function createRouteBuilder(\n path: string,\n method: HttpMethod | \"ANY\" | \"ALL\",\n methods?: readonly HttpMethod[],\n): RouteBuilder<RoutePath, Method, readonly [], ValidatorParts> {\n const middlewares: MiddlewareDefinition[] = [];\n let routeReturns: Record<number, StandardSchemaV1> = {};\n const validators: SchemaValidators = {};\n let bodyMode: BodyMode | undefined;\n\n const builder = {\n path,\n method,\n query(schema: Schema<unknown>) {\n validators.query = schema;\n return builder;\n },\n params(schema: Schema<unknown>) {\n validators.params = schema;\n return builder;\n },\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>) {\n if (typeof modeOrSchema === \"string\") {\n bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n validators.body = schema;\n }\n } else {\n bodyMode = \"json\";\n validators.body = modeOrSchema;\n }\n return builder;\n },\n returns(map: ReturnsMap) {\n routeReturns = { ...routeReturns, ...toUtilsMap(map) };\n return builder;\n },\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)) {\n if (typeof definition === \"function\") {\n middlewares.push({ handler: definition as any });\n } else if (typeof (definition as any)?.toUnit === \"function\") {\n middlewares.push((definition as any).toUnit());\n } else {\n middlewares.push(definition);\n }\n return builder;\n },\n handler(fn: (ctx: unknown) => Response | Promise<Response>) {\n const routeSchemas = pickDefinedSchemas(validators);\n const base = buildRouteBase(path, method, methods, middlewares);\n\n const returns = buildEffectiveReturns({\n middlewareReturns: collectReturnsFromDefinitions(middlewares),\n routeReturns,\n schemas: {\n ...validators,\n middlewares,\n },\n });\n\n return {\n ...base,\n handler: fn,\n ...routeSchemas,\n ...(bodyMode ? { bodyMode } : {}),\n ...(returns ? { returns } : {}),\n };\n },\n };\n\n return builder as unknown as RouteBuilder<RoutePath, Method, readonly [], ValidatorParts>;\n}\n"],"mappings":";;;AAoBA,SAAS,WAAW,KAA+D;CACjF,IAAI,CAAC,KACH,OAAO,CAAC;CAEV,MAAM,MAAwC,CAAC;CAC/C,KAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,GAAG,GAC5C,IAAI,WAAW,KAAA,GACb,IAAI,OAAO,GAAG,KAAK;CAGvB,OAAO;AACT;AAEA,SAAS,sBAAsB,MASkB;CAK/C,MAAM,WAAA,GAAA,sBAAA,YAAA,EAAA,GAAA,sBAAA,iBAAA,CAHJ,WAAW,KAAK,iBAAiB,GACjC,WAAW,KAAK,YAAY,CAEF,IAAA,GAAA,sBAAA,gBAAA,CAAwB,KAAK,OAAO,CAAC;CACjE,OAAO,OAAO,KAAK,OAAO,CAAC,CAAC,SAAS,IAAI,UAAU,KAAA;AACrD;AAEA,SAAS,eACP,MACA,QACA,SACA,aACA;CACA,OAAO;EACL;EACA;EACA,GAAI,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC;EAC3C,aAAa,CAAC,GAAG,WAAW;CAC9B;AACF;;AAGA,SAAgB,mBACd,MACA,QACA,SAC8D;CAC9D,MAAM,cAAsC,CAAC;CAC7C,IAAI,eAAiD,CAAC;CACtD,MAAM,aAA+B,CAAC;CACtC,IAAI;CAEJ,MAAM,UAAU;EACd;EACA;EACA,MAAM,QAAyB;GAC7B,WAAW,QAAQ;GACnB,OAAO;EACT;EACA,OAAO,QAAyB;GAC9B,WAAW,SAAS;GACpB,OAAO;EACT;EACA,KAAK,cAA0C,QAA0B;GACvE,IAAI,OAAO,iBAAiB,UAAU;IACpC,WAAW;IACX,IAAI,WAAW,KAAA,GACb,WAAW,OAAO;GAEtB,OAAO;IACL,WAAW;IACX,WAAW,OAAO;GACpB;GACA,OAAO;EACT;EACA,QAAQ,KAAiB;GACvB,eAAe;IAAE,GAAG;IAAc,GAAG,WAAW,GAAG;GAAE;GACrD,OAAO;EACT;EACA,IAAI,YAAmE;GACrE,IAAI,OAAO,eAAe,YACxB,YAAY,KAAK,EAAE,SAAS,WAAkB,CAAC;QAC1C,IAAI,OAAQ,YAAoB,WAAW,YAChD,YAAY,KAAM,WAAmB,OAAO,CAAC;QAE7C,YAAY,KAAK,UAAU;GAE7B,OAAO;EACT;EACA,QAAQ,IAAoD;GAC1D,MAAM,eAAe,mBAAA,mBAAmB,UAAU;GAClD,MAAM,OAAO,eAAe,MAAM,QAAQ,SAAS,WAAW;GAE9D,MAAM,UAAU,sBAAsB;IACpC,oBAAA,GAAA,sBAAA,8BAAA,CAAiD,WAAW;IAC5D;IACA,SAAS;KACP,GAAG;KACH;IACF;GACF,CAAC;GAED,OAAO;IACL,GAAG;IACH,SAAS;IACT,GAAG;IACH,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;IAC/B,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;GAC/B;EACF;CACF;CAEA,OAAO;AACT"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
const require_factories = require("./factories.cjs");
|
|
2
|
-
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
-
const require_middleware$1 = require("./middleware.cjs");
|
|
4
1
|
const require_app = require("./app.cjs");
|
|
5
2
|
let _taserjs_router_utils = require("@taserjs/router-utils");
|
|
6
3
|
let _taserjs_router_core = require("@taserjs/router-core");
|
|
@@ -11,6 +8,7 @@ function toOnErrorHandler(onErrorOptions) {
|
|
|
11
8
|
var emptyContext = {};
|
|
12
9
|
var TaserRouter = class {
|
|
13
10
|
state;
|
|
11
|
+
$Infer;
|
|
14
12
|
constructor(options = {}, state) {
|
|
15
13
|
this.state = {
|
|
16
14
|
options,
|
|
@@ -31,19 +29,6 @@ var TaserRouter = class {
|
|
|
31
29
|
this.state.notFound = (ctx) => handler(ctx);
|
|
32
30
|
return this;
|
|
33
31
|
}
|
|
34
|
-
get = require_factories.createGetRoute;
|
|
35
|
-
post = require_factories.createPostRoute;
|
|
36
|
-
put = require_factories.createPutRoute;
|
|
37
|
-
patch = require_factories.createPatchRoute;
|
|
38
|
-
delete = require_factories.createDeleteRoute;
|
|
39
|
-
options = require_factories.createOptionsRoute;
|
|
40
|
-
head = require_factories.createHeadRoute;
|
|
41
|
-
any = require_factories.createAnyRoute;
|
|
42
|
-
all = require_factories.createAllRoute;
|
|
43
|
-
middleware(layout) {
|
|
44
|
-
return require_middleware$1.createMiddleware(layout);
|
|
45
|
-
}
|
|
46
|
-
defineMiddleware = require_middleware.defineMiddleware;
|
|
47
32
|
create(manifest, runtimeOptions) {
|
|
48
33
|
const definition = this.state.contextDef;
|
|
49
34
|
const validateResponse = this.state.options.response?.validate ?? true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.cjs","names":[],"sources":["../../../src/builder/router.ts"],"sourcesContent":["import {\n createTaserRuntime,\n type NotFoundHandler,\n type OnErrorHandler,\n type RouteManifestShape,\n} from \"@taserjs/router-core\";\nimport { isPromise, normalizeOnError } from \"@taserjs/router-utils\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"router.cjs","names":[],"sources":["../../../src/builder/router.ts"],"sourcesContent":["import {\n createTaserRuntime,\n type NotFoundHandler,\n type OnErrorHandler,\n type RouteManifestShape,\n} from \"@taserjs/router-core\";\nimport { isPromise, normalizeOnError } from \"@taserjs/router-utils\";\n\nimport { TaserApp } from \"./app.js\";\nimport type { ContextDefinition, CreateTaserAppOptions, OnErrorOptions } from \"../types/app.js\";\nimport type { EmptyAppContext } from \"../types/units.js\";\nimport type { ReturnsMap } from \"../types/returns.js\";\n\nfunction toOnErrorHandler(\n onErrorOptions: OnErrorOptions | OnErrorOptions[\"handle\"],\n): OnErrorHandler {\n return normalizeOnError(onErrorOptions);\n}\n\ntype RouterState = {\n options: CreateTaserAppOptions;\n contextDef: ContextDefinition<Record<string, unknown>, Record<string, unknown>>;\n onError?: OnErrorHandler;\n notFound?: NotFoundHandler;\n};\n\nconst emptyContext: ContextDefinition<Record<string, unknown>, Record<string, unknown>> = {};\n\nexport class TaserRouter<\n TAppContext extends Record<string, unknown> = EmptyAppContext,\n THasNotFound extends boolean = false,\n> {\n private readonly state: RouterState;\n readonly $Infer!: {\n Context: TAppContext;\n };\n\n constructor(options: CreateTaserAppOptions = {}, state?: Partial<Omit<RouterState, \"options\">>) {\n this.state = {\n options,\n contextDef: state?.contextDef ?? emptyContext,\n ...(state?.onError !== undefined ? { onError: state.onError } : {}),\n ...(state?.notFound !== undefined ? { notFound: state.notFound } : {}),\n };\n }\n\n context<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>>(\n definition: ContextDefinition<TBoot, TReq>,\n ): TaserRouter<TBoot & TReq, THasNotFound> {\n this.state.contextDef = definition;\n return this as unknown as TaserRouter<TBoot & TReq, THasNotFound>;\n }\n\n onError<TResponses extends ReturnsMap = ReturnsMap>(\n options: OnErrorOptions<TResponses> | OnErrorOptions<TResponses>[\"handle\"],\n ): this {\n this.state.onError = toOnErrorHandler(options);\n return this;\n }\n\n notFound(\n handler: (ctx: unknown) => Response | Promise<Response> | unknown,\n ): TaserRouter<TAppContext, true> {\n this.state.notFound = (ctx) => handler(ctx);\n return this as unknown as TaserRouter<TAppContext, true>;\n }\n\n create<const TManifest extends RouteManifestShape>(\n manifest: TManifest,\n runtimeOptions?: { basePath?: string },\n ): TaserApp<TManifest, THasNotFound> {\n const definition = this.state.contextDef;\n const validateResponse = this.state.options.response?.validate ?? true;\n const onValidationFailure = this.state.options.response?.onValidationFailure;\n const basePath = runtimeOptions?.basePath;\n\n const hasCustomContext = definition.boot !== undefined || definition.request !== undefined;\n let bootContextResolved: Record<string, unknown> | undefined;\n let bootPromise: Promise<Record<string, unknown>> | undefined;\n\n if (definition.boot !== undefined) {\n const bootResult = definition.boot();\n if (isPromise(bootResult)) {\n bootPromise = bootResult.then((ctx) => {\n bootContextResolved = (ctx ?? {}) as Record<string, unknown>;\n return bootContextResolved;\n });\n } else {\n bootContextResolved = (bootResult ?? {}) as Record<string, unknown>;\n }\n } else if (hasCustomContext) {\n bootContextResolved = {};\n }\n\n const contextFactory = hasCustomContext\n ? (req?: Request) => {\n if (bootPromise !== undefined && bootContextResolved === undefined) {\n return bootPromise.then(async (bootContext) => {\n if (!definition.request) {\n return { ...bootContext };\n }\n const requestResult = definition.request(req!);\n const requestContext = isPromise(requestResult) ? await requestResult : requestResult;\n return { ...bootContext, ...requestContext };\n });\n }\n\n const bootContext = bootContextResolved ?? {};\n if (!definition.request) {\n return { ...bootContext };\n }\n\n const requestResult = definition.request(req!);\n if (isPromise(requestResult)) {\n return requestResult.then((requestContext) => ({\n ...bootContext,\n ...requestContext,\n }));\n }\n\n return { ...bootContext, ...(requestResult as Record<string, unknown>) };\n }\n : () => ({});\n\n const runtime = createTaserRuntime(manifest, contextFactory, {\n ...(basePath !== undefined ? { basePath } : {}),\n response: {\n validate: validateResponse,\n ...(onValidationFailure !== undefined ? { onValidationFailure } : {}),\n },\n ...(this.state.onError !== undefined ? { onError: this.state.onError } : {}),\n ...(this.state.notFound !== undefined ? { notFound: this.state.notFound } : {}),\n ...(this.state.options.cookies !== undefined ? { cookies: this.state.options.cookies } : {}),\n });\n\n return new TaserApp(runtime, manifest) as unknown as TaserApp<TManifest, THasNotFound>;\n }\n}\n\nexport function createTaserApp(\n options: CreateTaserAppOptions = {},\n): TaserRouter<EmptyAppContext, false> {\n return new TaserRouter<EmptyAppContext, false>(options);\n}\n"],"mappings":";;;;AAaA,SAAS,iBACP,gBACgB;CAChB,QAAA,GAAA,sBAAA,iBAAA,CAAwB,cAAc;AACxC;AASA,IAAM,eAAoF,CAAC;AAE3F,IAAa,cAAb,MAGE;CACA;CACA;CAIA,YAAY,UAAiC,CAAC,GAAG,OAA+C;EAC9F,KAAK,QAAQ;GACX;GACA,YAAY,OAAO,cAAc;GACjC,GAAI,OAAO,YAAY,KAAA,IAAY,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;GACjE,GAAI,OAAO,aAAa,KAAA,IAAY,EAAE,UAAU,MAAM,SAAS,IAAI,CAAC;EACtE;CACF;CAEA,QACE,YACyC;EACzC,KAAK,MAAM,aAAa;EACxB,OAAO;CACT;CAEA,QACE,SACM;EACN,KAAK,MAAM,UAAU,iBAAiB,OAAO;EAC7C,OAAO;CACT;CAEA,SACE,SACgC;EAChC,KAAK,MAAM,YAAY,QAAQ,QAAQ,GAAG;EAC1C,OAAO;CACT;CAEA,OACE,UACA,gBACmC;EACnC,MAAM,aAAa,KAAK,MAAM;EAC9B,MAAM,mBAAmB,KAAK,MAAM,QAAQ,UAAU,YAAY;EAClE,MAAM,sBAAsB,KAAK,MAAM,QAAQ,UAAU;EACzD,MAAM,WAAW,gBAAgB;EAEjC,MAAM,mBAAmB,WAAW,SAAS,KAAA,KAAa,WAAW,YAAY,KAAA;EACjF,IAAI;EACJ,IAAI;EAEJ,IAAI,WAAW,SAAS,KAAA,GAAW;GACjC,MAAM,aAAa,WAAW,KAAK;GACnC,KAAA,GAAA,sBAAA,UAAA,CAAc,UAAU,GACtB,cAAc,WAAW,MAAM,QAAQ;IACrC,sBAAuB,OAAO,CAAC;IAC/B,OAAO;GACT,CAAC;QAED,sBAAuB,cAAc,CAAC;EAE1C,OAAO,IAAI,kBACT,sBAAsB,CAAC;EA4CzB,OAAO,IAAI,YAAA,UAAA,GAAA,qBAAA,mBAAA,CAXwB,UA9BZ,oBAClB,QAAkB;GACjB,IAAI,gBAAgB,KAAA,KAAa,wBAAwB,KAAA,GACvD,OAAO,YAAY,KAAK,OAAO,gBAAgB;IAC7C,IAAI,CAAC,WAAW,SACd,OAAO,EAAE,GAAG,YAAY;IAE1B,MAAM,gBAAgB,WAAW,QAAQ,GAAI;IAC7C,MAAM,kBAAA,GAAA,sBAAA,UAAA,CAA2B,aAAa,IAAI,MAAM,gBAAgB;IACxE,OAAO;KAAE,GAAG;KAAa,GAAG;IAAe;GAC7C,CAAC;GAGH,MAAM,cAAc,uBAAuB,CAAC;GAC5C,IAAI,CAAC,WAAW,SACd,OAAO,EAAE,GAAG,YAAY;GAG1B,MAAM,gBAAgB,WAAW,QAAQ,GAAI;GAC7C,KAAA,GAAA,sBAAA,UAAA,CAAc,aAAa,GACzB,OAAO,cAAc,MAAM,oBAAoB;IAC7C,GAAG;IACH,GAAG;GACL,EAAE;GAGJ,OAAO;IAAE,GAAG;IAAa,GAAI;GAA0C;EACzE,WACO,CAAC,IAEiD;GAC3D,GAAI,aAAa,KAAA,IAAY,EAAE,SAAS,IAAI,CAAC;GAC7C,UAAU;IACR,UAAU;IACV,GAAI,wBAAwB,KAAA,IAAY,EAAE,oBAAoB,IAAI,CAAC;GACrE;GACA,GAAI,KAAK,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,MAAM,QAAQ,IAAI,CAAC;GAC1E,GAAI,KAAK,MAAM,aAAa,KAAA,IAAY,EAAE,UAAU,KAAK,MAAM,SAAS,IAAI,CAAC;GAC7E,GAAI,KAAK,MAAM,QAAQ,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,MAAM,QAAQ,QAAQ,IAAI,CAAC;EAC5F,CAEoB,GAAS,QAAQ;CACvC;AACF;AAEA,SAAgB,eACd,UAAiC,CAAC,GACG;CACrC,OAAO,IAAI,YAAoC,OAAO;AACxD"}
|
|
@@ -1,37 +1,26 @@
|
|
|
1
1
|
import { NotFoundHandler, OnErrorHandler, RouteManifestShape } from '@taserjs/router-core';
|
|
2
|
-
import { DefineMiddlewareFn } from '../define/middleware.js';
|
|
3
2
|
import { TaserApp } from './app.js';
|
|
4
3
|
import { ContextDefinition, CreateTaserAppOptions, OnErrorOptions } from '../types/app.js';
|
|
5
|
-
import {
|
|
6
|
-
import { LayoutId, MiddlewareBuilder } from '../types/index.js';
|
|
4
|
+
import { EmptyAppContext } from '../types/units.js';
|
|
7
5
|
import { ReturnsMap } from '../types/returns.js';
|
|
8
|
-
import { CreateAllRoute, CreateAnyRoute, CreateWithBodyRoute, CreateWithoutBodyRoute } from './factories.js';
|
|
9
6
|
type RouterState = {
|
|
10
7
|
options: CreateTaserAppOptions;
|
|
11
8
|
contextDef: ContextDefinition<Record<string, unknown>, Record<string, unknown>>;
|
|
12
9
|
onError?: OnErrorHandler;
|
|
13
10
|
notFound?: NotFoundHandler;
|
|
14
11
|
};
|
|
15
|
-
export declare class TaserRouter<TAppContext extends Record<string, unknown> =
|
|
12
|
+
export declare class TaserRouter<TAppContext extends Record<string, unknown> = EmptyAppContext, THasNotFound extends boolean = false> {
|
|
16
13
|
private readonly state;
|
|
14
|
+
readonly $Infer: {
|
|
15
|
+
Context: TAppContext;
|
|
16
|
+
};
|
|
17
17
|
constructor(options?: CreateTaserAppOptions, state?: Partial<Omit<RouterState, "options">>);
|
|
18
18
|
context<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>>(definition: ContextDefinition<TBoot, TReq>): TaserRouter<TBoot & TReq, THasNotFound>;
|
|
19
19
|
onError<TResponses extends ReturnsMap = ReturnsMap>(options: OnErrorOptions<TResponses> | OnErrorOptions<TResponses>["handle"]): this;
|
|
20
20
|
notFound(handler: (ctx: unknown) => Response | Promise<Response> | unknown): TaserRouter<TAppContext, true>;
|
|
21
|
-
get: CreateWithoutBodyRoute<"GET", TAppContext>;
|
|
22
|
-
post: CreateWithBodyRoute<"POST", TAppContext>;
|
|
23
|
-
put: CreateWithBodyRoute<"PUT", TAppContext>;
|
|
24
|
-
patch: CreateWithBodyRoute<"PATCH", TAppContext>;
|
|
25
|
-
delete: CreateWithoutBodyRoute<"DELETE", TAppContext>;
|
|
26
|
-
options: CreateWithoutBodyRoute<"OPTIONS", TAppContext>;
|
|
27
|
-
head: CreateWithoutBodyRoute<"HEAD", TAppContext>;
|
|
28
|
-
any: CreateAnyRoute<TAppContext>;
|
|
29
|
-
all: CreateAllRoute<TAppContext>;
|
|
30
|
-
middleware<const Layout extends LayoutId>(layout: Layout): MiddlewareBuilder<Layout, readonly [], TAppContext>;
|
|
31
|
-
defineMiddleware: DefineMiddlewareFn<TAppContext>;
|
|
32
21
|
create<const TManifest extends RouteManifestShape>(manifest: TManifest, runtimeOptions?: {
|
|
33
22
|
basePath?: string;
|
|
34
23
|
}): TaserApp<TManifest, THasNotFound>;
|
|
35
24
|
}
|
|
36
|
-
export declare function createTaserApp(options?: CreateTaserAppOptions): TaserRouter<
|
|
25
|
+
export declare function createTaserApp(options?: CreateTaserAppOptions): TaserRouter<EmptyAppContext, false>;
|
|
37
26
|
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const require_factories = require("./factories.cjs");
|
|
2
|
+
const require_middleware = require("./middleware.cjs");
|
|
3
|
+
const require_middleware$1 = require("../define/middleware.cjs");
|
|
4
|
+
//#region src/builder/standalone.ts
|
|
5
|
+
var get = require_factories.createGetRoute;
|
|
6
|
+
var post = require_factories.createPostRoute;
|
|
7
|
+
var put = require_factories.createPutRoute;
|
|
8
|
+
var patch = require_factories.createPatchRoute;
|
|
9
|
+
var del = require_factories.createDeleteRoute;
|
|
10
|
+
var options = require_factories.createOptionsRoute;
|
|
11
|
+
var head = require_factories.createHeadRoute;
|
|
12
|
+
var any = require_factories.createAnyRoute;
|
|
13
|
+
var all = require_factories.createAllRoute;
|
|
14
|
+
var layout = require_middleware.createMiddleware;
|
|
15
|
+
var middleware = require_middleware$1.middleware;
|
|
16
|
+
var t = {
|
|
17
|
+
get,
|
|
18
|
+
post,
|
|
19
|
+
put,
|
|
20
|
+
patch,
|
|
21
|
+
delete: del,
|
|
22
|
+
options,
|
|
23
|
+
head,
|
|
24
|
+
any,
|
|
25
|
+
all,
|
|
26
|
+
layout,
|
|
27
|
+
middleware
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.all = all;
|
|
31
|
+
exports.any = any;
|
|
32
|
+
exports.del = del;
|
|
33
|
+
exports.get = get;
|
|
34
|
+
exports.head = head;
|
|
35
|
+
exports.layout = layout;
|
|
36
|
+
exports.middleware = middleware;
|
|
37
|
+
exports.options = options;
|
|
38
|
+
exports.patch = patch;
|
|
39
|
+
exports.post = post;
|
|
40
|
+
exports.put = put;
|
|
41
|
+
exports.t = t;
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=standalone.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone.cjs","names":[],"sources":["../../../src/builder/standalone.ts"],"sourcesContent":["import type { AppContext, LayoutBuilder } from \"../types/index.js\";\nimport {\n createAllRoute,\n createAnyRoute,\n createDeleteRoute,\n createGetRoute,\n createHeadRoute,\n createOptionsRoute,\n createPatchRoute,\n createPostRoute,\n createPutRoute,\n type CreateAllRoute,\n type CreateAnyRoute,\n type CreateWithBodyRoute,\n type CreateWithoutBodyRoute,\n} from \"./factories.js\";\nimport { createMiddleware } from \"./middleware.js\";\nimport { middleware as createMiddlewareFn, type MiddlewareFn } from \"../define/middleware.js\";\n\nexport const get: CreateWithoutBodyRoute<\"GET\", AppContext> =\n createGetRoute as CreateWithoutBodyRoute<\"GET\", AppContext>;\nexport const post: CreateWithBodyRoute<\"POST\", AppContext> = createPostRoute as CreateWithBodyRoute<\n \"POST\",\n AppContext\n>;\nexport const put: CreateWithBodyRoute<\"PUT\", AppContext> = createPutRoute as CreateWithBodyRoute<\n \"PUT\",\n AppContext\n>;\nexport const patch: CreateWithBodyRoute<\"PATCH\", AppContext> =\n createPatchRoute as CreateWithBodyRoute<\"PATCH\", AppContext>;\nexport const del: CreateWithoutBodyRoute<\"DELETE\", AppContext> =\n createDeleteRoute as CreateWithoutBodyRoute<\"DELETE\", AppContext>;\nexport const options: CreateWithoutBodyRoute<\"OPTIONS\", AppContext> =\n createOptionsRoute as CreateWithoutBodyRoute<\"OPTIONS\", AppContext>;\nexport const head: CreateWithoutBodyRoute<\"HEAD\", AppContext> =\n createHeadRoute as CreateWithoutBodyRoute<\"HEAD\", AppContext>;\nexport const any: CreateAnyRoute<AppContext> = createAnyRoute as CreateAnyRoute<AppContext>;\nexport const all: CreateAllRoute<AppContext> = createAllRoute as CreateAllRoute<AppContext>;\n\nexport const layout: LayoutBuilder<AppContext> = createMiddleware as LayoutBuilder<AppContext>;\nexport const middleware: MiddlewareFn<AppContext> = createMiddlewareFn as MiddlewareFn<AppContext>;\n\nexport type TaserNamespace<TAppContext extends Record<string, unknown> = AppContext> = {\n readonly get: CreateWithoutBodyRoute<\"GET\", TAppContext>;\n readonly post: CreateWithBodyRoute<\"POST\", TAppContext>;\n readonly put: CreateWithBodyRoute<\"PUT\", TAppContext>;\n readonly patch: CreateWithBodyRoute<\"PATCH\", TAppContext>;\n readonly delete: CreateWithoutBodyRoute<\"DELETE\", TAppContext>;\n readonly options: CreateWithoutBodyRoute<\"OPTIONS\", TAppContext>;\n readonly head: CreateWithoutBodyRoute<\"HEAD\", TAppContext>;\n readonly any: CreateAnyRoute<TAppContext>;\n readonly all: CreateAllRoute<TAppContext>;\n readonly layout: LayoutBuilder<TAppContext>;\n readonly middleware: MiddlewareFn<TAppContext>;\n};\n\nexport const t: TaserNamespace<AppContext> = {\n get,\n post,\n put,\n patch,\n delete: del,\n options,\n head,\n any,\n all,\n layout,\n middleware,\n};\n"],"mappings":";;;;AAmBA,IAAa,MACX,kBAAA;AACF,IAAa,OAAgD,kBAAA;AAI7D,IAAa,MAA8C,kBAAA;AAI3D,IAAa,QACX,kBAAA;AACF,IAAa,MACX,kBAAA;AACF,IAAa,UACX,kBAAA;AACF,IAAa,OACX,kBAAA;AACF,IAAa,MAAkC,kBAAA;AAC/C,IAAa,MAAkC,kBAAA;AAE/C,IAAa,SAAoC,mBAAA;AACjD,IAAa,aAAuC,qBAAA;AAgBpD,IAAa,IAAgC;CAC3C;CACA;CACA;CACA;CACA,QAAQ;CACR;CACA;CACA;CACA;CACA;CACA;AACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AppContext, LayoutBuilder } from '../types/index.js';
|
|
2
|
+
import { CreateAllRoute, CreateAnyRoute, CreateWithBodyRoute, CreateWithoutBodyRoute } from './factories.js';
|
|
3
|
+
import { MiddlewareFn } from '../define/middleware.js';
|
|
4
|
+
export declare const get: CreateWithoutBodyRoute<"GET", AppContext>;
|
|
5
|
+
export declare const post: CreateWithBodyRoute<"POST", AppContext>;
|
|
6
|
+
export declare const put: CreateWithBodyRoute<"PUT", AppContext>;
|
|
7
|
+
export declare const patch: CreateWithBodyRoute<"PATCH", AppContext>;
|
|
8
|
+
export declare const del: CreateWithoutBodyRoute<"DELETE", AppContext>;
|
|
9
|
+
export declare const options: CreateWithoutBodyRoute<"OPTIONS", AppContext>;
|
|
10
|
+
export declare const head: CreateWithoutBodyRoute<"HEAD", AppContext>;
|
|
11
|
+
export declare const any: CreateAnyRoute<AppContext>;
|
|
12
|
+
export declare const all: CreateAllRoute<AppContext>;
|
|
13
|
+
export declare const layout: LayoutBuilder<AppContext>;
|
|
14
|
+
export declare const middleware: MiddlewareFn<AppContext>;
|
|
15
|
+
export type TaserNamespace<TAppContext extends Record<string, unknown> = AppContext> = {
|
|
16
|
+
readonly get: CreateWithoutBodyRoute<"GET", TAppContext>;
|
|
17
|
+
readonly post: CreateWithBodyRoute<"POST", TAppContext>;
|
|
18
|
+
readonly put: CreateWithBodyRoute<"PUT", TAppContext>;
|
|
19
|
+
readonly patch: CreateWithBodyRoute<"PATCH", TAppContext>;
|
|
20
|
+
readonly delete: CreateWithoutBodyRoute<"DELETE", TAppContext>;
|
|
21
|
+
readonly options: CreateWithoutBodyRoute<"OPTIONS", TAppContext>;
|
|
22
|
+
readonly head: CreateWithoutBodyRoute<"HEAD", TAppContext>;
|
|
23
|
+
readonly any: CreateAnyRoute<TAppContext>;
|
|
24
|
+
readonly all: CreateAllRoute<TAppContext>;
|
|
25
|
+
readonly layout: LayoutBuilder<TAppContext>;
|
|
26
|
+
readonly middleware: MiddlewareFn<TAppContext>;
|
|
27
|
+
};
|
|
28
|
+
export declare const t: TaserNamespace<AppContext>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const require_middleware_unit = require("../builder/middleware-unit.cjs");
|
|
2
|
-
require("@taserjs/router-core");
|
|
3
2
|
//#region src/define/middleware.ts
|
|
4
|
-
var
|
|
3
|
+
var middleware = function middleware(first, second) {
|
|
5
4
|
if (first === void 0) return require_middleware_unit.createMiddlewareUnitBuilder();
|
|
6
5
|
if (typeof first === "string" || Array.isArray(first)) {
|
|
7
6
|
if (typeof second === "function") return {
|
|
@@ -18,6 +17,6 @@ var defineMiddleware = function defineMiddleware(first, second) {
|
|
|
18
17
|
return require_middleware_unit.createMiddlewareUnitBuilder();
|
|
19
18
|
};
|
|
20
19
|
//#endregion
|
|
21
|
-
exports.
|
|
20
|
+
exports.middleware = middleware;
|
|
22
21
|
|
|
23
22
|
//# sourceMappingURL=middleware.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import { createMiddlewareUnitBuilder } from \"../builder/middleware-unit.js\";\nimport type {\n DefineMiddlewareResult,\n ExtractState,\n IsUnknown,\n MiddlewareUnitBuilder,\n NextFn,\n StandaloneMiddlewareContext,\n} from \"../types/units.js\";\nimport type {\n AppContext,\n LayoutId,\n ResolveLayoutMiddlewaresState,\n ResolveLayoutsState,\n} from \"../types/index.js\";\n\nexport interface MiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {\n /**\n * Constructs a fluent unscoped middleware builder, with optional explicit State generic.\n *\n * @example\n * ```ts\n * const auth = middleware<{ user: string }>()\n * .query(z.object({ token: z.string() }))\n * .body(\"form\", z.object({ file: z.instanceof(File) }))\n * .returns({ 401: z.string() })\n * .handler(async (ctx, next) => next({ user: \"alice\" }));\n * ```\n */\n <TState = unknown>(): MiddlewareUnitBuilder<\n unknown,\n unknown,\n unknown,\n {},\n null,\n {},\n TAppContext,\n {},\n unknown,\n unknown,\n unknown,\n TState\n >;\n\n /**\n * Constructs a fluent middleware builder scoped to a single layout branch, with optional explicit State generic.\n */\n <const Layout extends LayoutId, TState = unknown>(\n layout: Layout,\n ): MiddlewareUnitBuilder<\n unknown,\n unknown,\n unknown,\n {},\n Layout,\n {},\n TAppContext,\n ResolveLayoutMiddlewaresState<Layout>,\n unknown,\n unknown,\n unknown,\n TState\n >;\n\n /**\n * Constructs a fluent middleware builder scoped to multiple layout branches (branch union), with optional explicit State generic.\n */\n <const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown>(\n layouts: Layouts,\n ): MiddlewareUnitBuilder<\n unknown,\n unknown,\n unknown,\n {},\n Layouts,\n {},\n TAppContext,\n ResolveLayoutsState<Layouts>,\n unknown,\n unknown,\n unknown,\n TState\n >;\n\n /**\n * Defines a standalone middleware scoped to a single layout branch using a short function signature.\n */\n <const Layout extends LayoutId, TState = unknown, TRequires = {}, R = unknown>(\n layout: Layout,\n fn: (\n ctx: StandaloneMiddlewareContext<\n unknown,\n unknown,\n unknown,\n TAppContext,\n ResolveLayoutMiddlewaresState<Layout> & TRequires\n >,\n next: NextFn<NoInfer<TState>>,\n ) => R,\n ): DefineMiddlewareResult<\n unknown,\n unknown,\n unknown,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n R,\n unknown,\n unknown,\n unknown,\n {},\n Layout,\n TRequires\n >;\n\n /**\n * Defines a standalone middleware scoped to multiple layout branches using a short function signature.\n */\n <\n const Layouts extends readonly [LayoutId, ...LayoutId[]],\n TState = unknown,\n TRequires = {},\n R = unknown,\n >(\n layouts: Layouts,\n fn: (\n ctx: StandaloneMiddlewareContext<\n unknown,\n unknown,\n unknown,\n TAppContext,\n ResolveLayoutsState<Layouts> & TRequires\n >,\n next: NextFn<NoInfer<TState>>,\n ) => R,\n ): DefineMiddlewareResult<\n unknown,\n unknown,\n unknown,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n R,\n unknown,\n unknown,\n unknown,\n {},\n Layouts,\n TRequires\n >;\n\n /**\n * Defines a standalone, unscoped middleware using a short function signature.\n *\n * @example\n * ```ts\n * const auth = middleware((ctx, next) => {\n * return next({ user: \"alice\" });\n * });\n * ```\n */\n <TState = unknown, TRequires = {}, R = unknown>(\n fn: (\n ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, TRequires>,\n next: NextFn<NoInfer<TState>>,\n ) => R,\n ): DefineMiddlewareResult<\n unknown,\n unknown,\n unknown,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n R,\n unknown,\n unknown,\n unknown,\n {},\n null,\n TRequires\n >;\n}\n\nexport const middleware: MiddlewareFn<AppContext> = function middleware(\n first?: any,\n second?: any,\n): any {\n if (first === undefined) {\n return createMiddlewareUnitBuilder();\n }\n\n if (typeof first === \"string\" || Array.isArray(first)) {\n if (typeof second === \"function\") {\n return {\n handler: second,\n __middlewareAcc: undefined as unknown,\n __requiredLayouts: first,\n };\n }\n return createMiddlewareUnitBuilder(first);\n }\n\n if (typeof first === \"function\") {\n return {\n handler: first,\n __middlewareAcc: undefined as unknown,\n };\n }\n\n return createMiddlewareUnitBuilder();\n};\n"],"mappings":";;AAiLA,IAAa,aAAuC,SAAS,WAC3D,OACA,QACK;CACL,IAAI,UAAU,KAAA,GACZ,OAAO,wBAAA,4BAA4B;CAGrC,IAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;EACrD,IAAI,OAAO,WAAW,YACpB,OAAO;GACL,SAAS;GACT,iBAAiB,KAAA;GACjB,mBAAmB;EACrB;EAEF,OAAO,wBAAA,4BAA4B,KAAK;CAC1C;CAEA,IAAI,OAAO,UAAU,YACnB,OAAO;EACL,SAAS;EACT,iBAAiB,KAAA;CACnB;CAGF,OAAO,wBAAA,4BAA4B;AACrC"}
|
|
@@ -1,46 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AppContext,
|
|
3
|
-
|
|
4
|
-
export interface DefineMiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {
|
|
1
|
+
import { DefineMiddlewareResult, ExtractState, IsUnknown, MiddlewareUnitBuilder, NextFn, StandaloneMiddlewareContext } from '../types/units.js';
|
|
2
|
+
import { AppContext, LayoutId, ResolveLayoutMiddlewaresState, ResolveLayoutsState } from '../types/index.js';
|
|
3
|
+
export interface MiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {
|
|
5
4
|
/**
|
|
6
|
-
* Constructs a fluent unscoped middleware builder.
|
|
5
|
+
* Constructs a fluent unscoped middleware builder, with optional explicit State generic.
|
|
7
6
|
*
|
|
8
7
|
* @example
|
|
9
8
|
* ```ts
|
|
10
|
-
* const auth =
|
|
9
|
+
* const auth = middleware<{ user: string }>()
|
|
11
10
|
* .query(z.object({ token: z.string() }))
|
|
12
11
|
* .body("form", z.object({ file: z.instanceof(File) }))
|
|
13
12
|
* .returns({ 401: z.string() })
|
|
14
13
|
* .handler(async (ctx, next) => next({ user: "alice" }));
|
|
15
14
|
* ```
|
|
16
15
|
*/
|
|
17
|
-
(): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, null, {}, TAppContext>;
|
|
16
|
+
<TState = unknown>(): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, null, {}, TAppContext, {}, unknown, unknown, unknown, TState>;
|
|
18
17
|
/**
|
|
19
|
-
* Constructs a fluent middleware builder scoped to a single layout branch.
|
|
18
|
+
* Constructs a fluent middleware builder scoped to a single layout branch, with optional explicit State generic.
|
|
20
19
|
*/
|
|
21
|
-
<const Layout extends LayoutId>(layout: Layout): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layout, {}, TAppContext, ResolveLayoutMiddlewaresState<Layout
|
|
20
|
+
<const Layout extends LayoutId, TState = unknown>(layout: Layout): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layout, {}, TAppContext, ResolveLayoutMiddlewaresState<Layout>, unknown, unknown, unknown, TState>;
|
|
22
21
|
/**
|
|
23
|
-
* Constructs a fluent middleware builder scoped to multiple layout branches (branch union).
|
|
22
|
+
* Constructs a fluent middleware builder scoped to multiple layout branches (branch union), with optional explicit State generic.
|
|
24
23
|
*/
|
|
25
|
-
<const Layouts extends readonly [LayoutId, ...LayoutId[]]>(layouts: Layouts): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layouts, {}, TAppContext, ResolveLayoutsState<Layouts
|
|
24
|
+
<const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown>(layouts: Layouts): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layouts, {}, TAppContext, ResolveLayoutsState<Layouts>, unknown, unknown, unknown, TState>;
|
|
26
25
|
/**
|
|
27
26
|
* Defines a standalone middleware scoped to a single layout branch using a short function signature.
|
|
28
27
|
*/
|
|
29
|
-
<const Layout extends LayoutId, TState = unknown, TRequires = {}, R = unknown>(layout: Layout, fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, ResolveLayoutMiddlewaresState<Layout> & TRequires>, next: NextFn<NoInfer<TState>>) =>
|
|
28
|
+
<const Layout extends LayoutId, TState = unknown, TRequires = {}, R = unknown>(layout: Layout, fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, ResolveLayoutMiddlewaresState<Layout> & TRequires>, next: NextFn<NoInfer<TState>>) => R): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, Layout, TRequires>;
|
|
30
29
|
/**
|
|
31
30
|
* Defines a standalone middleware scoped to multiple layout branches using a short function signature.
|
|
32
31
|
*/
|
|
33
|
-
<const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown, TRequires = {}, R = unknown>(layouts: Layouts, fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, ResolveLayoutsState<Layouts> & TRequires>, next: NextFn<NoInfer<TState>>) =>
|
|
32
|
+
<const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown, TRequires = {}, R = unknown>(layouts: Layouts, fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, ResolveLayoutsState<Layouts> & TRequires>, next: NextFn<NoInfer<TState>>) => R): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, Layouts, TRequires>;
|
|
34
33
|
/**
|
|
35
34
|
* Defines a standalone, unscoped middleware using a short function signature.
|
|
36
35
|
*
|
|
37
36
|
* @example
|
|
38
37
|
* ```ts
|
|
39
|
-
* const auth =
|
|
38
|
+
* const auth = middleware((ctx, next) => {
|
|
40
39
|
* return next({ user: "alice" });
|
|
41
40
|
* });
|
|
42
41
|
* ```
|
|
43
42
|
*/
|
|
44
|
-
<TState = unknown, TRequires = {}, R = unknown>(fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, TRequires>, next: NextFn<NoInfer<TState>>) =>
|
|
43
|
+
<TState = unknown, TRequires = {}, R = unknown>(fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, TRequires>, next: NextFn<NoInfer<TState>>) => R): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, null, TRequires>;
|
|
45
44
|
}
|
|
46
|
-
export declare const
|
|
45
|
+
export declare const middleware: MiddlewareFn<AppContext>;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_standalone = require("./builder/standalone.cjs");
|
|
3
3
|
const require_app = require("./builder/app.cjs");
|
|
4
4
|
const require_router = require("./builder/router.cjs");
|
|
5
5
|
const require_create_context = require("./context/create-context.cjs");
|
|
@@ -13,10 +13,21 @@ Object.defineProperty(exports, "ValidationError", {
|
|
|
13
13
|
return _taserjs_router_utils.ValidationError;
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
|
+
exports.all = require_standalone.all;
|
|
17
|
+
exports.any = require_standalone.any;
|
|
16
18
|
exports.createContext = require_create_context.createContext;
|
|
17
19
|
exports.createTaserApp = require_router.createTaserApp;
|
|
18
|
-
exports.
|
|
20
|
+
exports.del = require_standalone.del;
|
|
21
|
+
exports.get = require_standalone.get;
|
|
22
|
+
exports.head = require_standalone.head;
|
|
19
23
|
exports.honoMw = require_hono_mw.honoMw;
|
|
24
|
+
exports.layout = require_standalone.layout;
|
|
25
|
+
exports.middleware = require_standalone.middleware;
|
|
26
|
+
exports.options = require_standalone.options;
|
|
27
|
+
exports.patch = require_standalone.patch;
|
|
28
|
+
exports.post = require_standalone.post;
|
|
29
|
+
exports.put = require_standalone.put;
|
|
30
|
+
exports.t = require_standalone.t;
|
|
20
31
|
Object.defineProperty(exports, "validationErrorSchema", {
|
|
21
32
|
enumerable: true,
|
|
22
33
|
get: function() {
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export interface RouterRegister {
|
|
2
|
+
}
|
|
3
|
+
export type { AppContext, EmptyAppContext, HttpMethod, InferInput, InferOutput, InferRouteContext, InferRouteInput, InferRouteInputFromPath, InferRouteOutput, LayoutBuilder, LayoutId, LayoutTree, Method, MiddlewareBuilder, MiddlewareDefinition, MiddlewareUnit, MiddlewareUnitBuilder, PathParams, ReturnsMap, RouteByPathMethod, RouteDefinition, RouteExport, RoutePath, Schema, Simplify, StatusCode, } from './types/index.js';
|
|
3
4
|
export type { ContextDefinition, CreateTaserAppOptions, InferAppContext, InferAppManifest, OnErrorOptions, RouteManifestShape, } from './types/app.js';
|
|
4
5
|
export { ValidationError, validationErrorSchema } from '@taserjs/router-utils';
|
|
5
6
|
export type { ResponseValidationFailureHandler, SuccessStatusCode } from '@taserjs/router-utils';
|
|
7
|
+
export { all, any, del, get, head, layout, middleware, options, patch, post, put, t, type TaserNamespace, } from './builder/standalone.js';
|
|
6
8
|
export { createTaserApp, TaserRouter } from './builder/router.js';
|
|
7
9
|
export { TaserApp } from './builder/app.js';
|
|
8
10
|
export { createContext } from './context/create-context.js';
|
|
9
|
-
export { defineMiddleware } from './define/middleware.js';
|
|
10
11
|
export { honoMw } from './middleware/hono-mw.js';
|
|
12
|
+
export type { MiddlewareFn } from './define/middleware.js';
|
|
11
13
|
export type { TaserCookieJar, TaserHeaders } from '@taserjs/router-core';
|
|
@@ -4,7 +4,7 @@ const require_hono_mw = require("./hono-mw.cjs");
|
|
|
4
4
|
let hono_body_limit = require("hono/body-limit");
|
|
5
5
|
//#region src/middleware/body-limit.ts
|
|
6
6
|
function bodyLimit(...args) {
|
|
7
|
-
return require_middleware.
|
|
7
|
+
return require_middleware.middleware(require_hono_mw.honoMw((0, hono_body_limit.bodyLimit)(...args)));
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
10
|
exports.bodyLimit = bodyLimit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body-limit.cjs","names":[],"sources":["../../../src/middleware/body-limit.ts"],"sourcesContent":["import { bodyLimit as honoBodyLimit } from \"hono/body-limit\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"body-limit.cjs","names":[],"sources":["../../../src/middleware/body-limit.ts"],"sourcesContent":["import { bodyLimit as honoBodyLimit } from \"hono/body-limit\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function bodyLimit(...args: Parameters<typeof honoBodyLimit>) {\n return middleware(honoMw(honoBodyLimit(...args)));\n}\n\nexport type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];\n"],"mappings":";;;;;AAKA,SAAgB,UAAU,GAAG,MAAwC;CACnE,OAAO,mBAAA,WAAW,gBAAA,QAAA,GAAA,gBAAA,UAAA,CAAqB,GAAG,IAAI,CAAC,CAAC;AAClD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { bodyLimit as honoBodyLimit } from 'hono/body-limit';
|
|
2
|
-
export declare function bodyLimit(...args: Parameters<typeof honoBodyLimit>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response
|
|
2
|
+
export declare function bodyLimit(...args: Parameters<typeof honoBodyLimit>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
|
|
3
3
|
export type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];
|
|
@@ -4,7 +4,7 @@ const require_hono_mw = require("./hono-mw.cjs");
|
|
|
4
4
|
let hono_compress = require("hono/compress");
|
|
5
5
|
//#region src/middleware/compress.ts
|
|
6
6
|
function compress(...args) {
|
|
7
|
-
return require_middleware.
|
|
7
|
+
return require_middleware.middleware(require_hono_mw.honoMw((0, hono_compress.compress)(...args)));
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
10
|
exports.compress = compress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.cjs","names":[],"sources":["../../../src/middleware/compress.ts"],"sourcesContent":["import { compress as honoCompress } from \"hono/compress\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"compress.cjs","names":[],"sources":["../../../src/middleware/compress.ts"],"sourcesContent":["import { compress as honoCompress } from \"hono/compress\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function compress(...args: Parameters<typeof honoCompress>) {\n return middleware(honoMw(honoCompress(...args)));\n}\n\nexport type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;\n"],"mappings":";;;;;AAKA,SAAgB,SAAS,GAAG,MAAuC;CACjE,OAAO,mBAAA,WAAW,gBAAA,QAAA,GAAA,cAAA,SAAA,CAAoB,GAAG,IAAI,CAAC,CAAC;AACjD"}
|