@taserjs/router 0.1.13 → 0.2.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/README.md +5 -5
- package/dist/builder-DYfjARJF.js +226 -0
- package/dist/builder-DYfjARJF.js.map +1 -0
- package/dist/builder-EWuIQcdU.cjs +283 -0
- package/dist/hono-Ddk3waH-.cjs +42 -0
- package/dist/hono-kDZSomjd.js +39 -0
- package/dist/hono-kDZSomjd.js.map +1 -0
- package/dist/index.cjs +60 -0
- package/dist/index.d.cts +104 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +104 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/body-limit.cjs +15 -0
- package/dist/middleware/body-limit.d.cts +11 -0
- package/dist/middleware/body-limit.d.cts.map +1 -0
- package/dist/middleware/body-limit.d.ts +11 -0
- package/dist/middleware/body-limit.d.ts.map +1 -0
- package/dist/middleware/body-limit.js +16 -0
- package/dist/middleware/body-limit.js.map +1 -0
- package/dist/middleware/compress.cjs +10 -0
- package/dist/middleware/compress.d.cts +8 -0
- package/dist/middleware/compress.d.cts.map +1 -0
- package/dist/middleware/compress.d.ts +8 -0
- package/dist/middleware/compress.d.ts.map +1 -0
- package/dist/middleware/compress.js +10 -0
- package/dist/middleware/compress.js.map +1 -0
- package/dist/middleware/cookie.cjs +87 -0
- package/dist/middleware/cookie.d.cts +26 -0
- package/dist/middleware/cookie.d.cts.map +1 -0
- package/dist/middleware/cookie.d.ts +26 -0
- package/dist/middleware/cookie.d.ts.map +1 -0
- package/dist/middleware/cookie.js +87 -0
- package/dist/middleware/cookie.js.map +1 -0
- package/dist/middleware/cors.cjs +9 -0
- package/dist/middleware/cors.d.cts +7 -0
- package/dist/middleware/cors.d.cts.map +1 -0
- package/dist/middleware/cors.d.ts +7 -0
- package/dist/middleware/cors.d.ts.map +1 -0
- package/dist/middleware/cors.js +10 -0
- package/dist/middleware/cors.js.map +1 -0
- package/dist/middleware/csrf.cjs +9 -0
- package/dist/middleware/csrf.d.cts +7 -0
- package/dist/middleware/csrf.d.cts.map +1 -0
- package/dist/middleware/csrf.d.ts +7 -0
- package/dist/middleware/csrf.d.ts.map +1 -0
- package/dist/middleware/csrf.js +10 -0
- package/dist/middleware/csrf.js.map +1 -0
- package/dist/middleware/etag.cjs +10 -0
- package/dist/middleware/etag.d.cts +8 -0
- package/dist/middleware/etag.d.cts.map +1 -0
- package/dist/middleware/etag.d.ts +8 -0
- package/dist/middleware/etag.d.ts.map +1 -0
- package/dist/middleware/etag.js +10 -0
- package/dist/middleware/etag.js.map +1 -0
- package/dist/middleware/index.cjs +39 -0
- package/dist/middleware/index.d.cts +11 -0
- package/dist/middleware/index.d.ts +11 -0
- package/dist/middleware/index.js +11 -0
- package/dist/middleware/jwk.cjs +12 -0
- package/dist/middleware/jwk.d.cts +9 -0
- package/dist/middleware/jwk.d.cts.map +1 -0
- package/dist/middleware/jwk.d.ts +9 -0
- package/dist/middleware/jwk.d.ts.map +1 -0
- package/dist/middleware/jwk.js +13 -0
- package/dist/middleware/jwk.js.map +1 -0
- package/dist/middleware/jwt.cjs +21 -0
- package/dist/middleware/jwt.d.cts +13 -0
- package/dist/middleware/jwt.d.cts.map +1 -0
- package/dist/middleware/jwt.d.ts +13 -0
- package/dist/middleware/jwt.d.ts.map +1 -0
- package/dist/middleware/jwt.js +17 -0
- package/dist/middleware/jwt.js.map +1 -0
- package/dist/middleware/secure-headers.cjs +10 -0
- package/dist/middleware/secure-headers.d.cts +8 -0
- package/dist/middleware/secure-headers.d.cts.map +1 -0
- package/dist/middleware/secure-headers.d.ts +8 -0
- package/dist/middleware/secure-headers.d.ts.map +1 -0
- package/dist/middleware/secure-headers.js +10 -0
- package/dist/middleware/secure-headers.js.map +1 -0
- package/dist/middleware/timing.cjs +13 -0
- package/dist/middleware/timing.d.cts +8 -0
- package/dist/middleware/timing.d.cts.map +1 -0
- package/dist/middleware/timing.d.ts +8 -0
- package/dist/middleware/timing.d.ts.map +1 -0
- package/dist/middleware/timing.js +10 -0
- package/dist/middleware/timing.js.map +1 -0
- package/dist/reply.cjs +128 -0
- package/dist/reply.d.cts +2 -0
- package/dist/reply.d.ts +2 -0
- package/dist/reply.js +2 -0
- package/dist/stream.cjs +32 -0
- package/dist/stream.d.cts +2 -0
- package/dist/stream.d.ts +2 -0
- package/dist/stream.js +2 -0
- package/dist/types-87QgPePQ.d.cts +294 -0
- package/dist/types-87QgPePQ.d.cts.map +1 -0
- package/dist/types-oo9In1Ss.d.ts +294 -0
- package/dist/types-oo9In1Ss.d.ts.map +1 -0
- package/package.json +49 -107
- package/src/builder.ts +753 -0
- package/src/context.ts +11 -0
- package/src/hono.ts +75 -0
- package/src/index.ts +67 -49
- package/src/middleware/body-limit.ts +17 -5
- package/src/middleware/compress.ts +7 -6
- package/src/middleware/cookie.ts +128 -0
- package/src/middleware/cors.ts +5 -6
- package/src/middleware/csrf.ts +5 -6
- package/src/middleware/etag.ts +7 -6
- package/src/middleware/index.ts +35 -0
- package/src/middleware/jwk.ts +12 -46
- package/src/middleware/jwt.ts +21 -26
- package/src/middleware/secure-headers.ts +7 -6
- package/src/middleware/timing.ts +9 -6
- package/src/reply.ts +26 -1
- package/src/stream.ts +10 -1
- package/src/taser.ts +55 -0
- package/src/types.ts +802 -0
- package/dist/cjs/builder/app.cjs +0 -27
- package/dist/cjs/builder/app.cjs.map +0 -1
- package/dist/cjs/builder/app.d.cts +0 -11
- package/dist/cjs/builder/constants.cjs +0 -11
- package/dist/cjs/builder/constants.cjs.map +0 -1
- package/dist/cjs/builder/constants.d.cts +0 -3
- package/dist/cjs/builder/middleware-unit.cjs +0 -64
- package/dist/cjs/builder/middleware-unit.cjs.map +0 -1
- package/dist/cjs/builder/middleware-unit.d.cts +0 -34
- package/dist/cjs/builder/middleware.cjs +0 -20
- package/dist/cjs/builder/middleware.cjs.map +0 -1
- package/dist/cjs/builder/middleware.d.cts +0 -2
- package/dist/cjs/builder/normalize.cjs +0 -10
- package/dist/cjs/builder/normalize.cjs.map +0 -1
- package/dist/cjs/builder/normalize.d.cts +0 -2
- package/dist/cjs/builder/route.cjs +0 -83
- package/dist/cjs/builder/route.cjs.map +0 -1
- package/dist/cjs/builder/route.d.cts +0 -4
- package/dist/cjs/builder/router.cjs +0 -88
- package/dist/cjs/builder/router.cjs.map +0 -1
- package/dist/cjs/builder/router.d.cts +0 -26
- package/dist/cjs/builder/standalone.cjs +0 -30
- package/dist/cjs/builder/standalone.cjs.map +0 -1
- package/dist/cjs/builder/standalone.d.cts +0 -23
- package/dist/cjs/context/create-context.cjs +0 -8
- package/dist/cjs/context/create-context.cjs.map +0 -1
- package/dist/cjs/context/create-context.d.cts +0 -5
- package/dist/cjs/define/middleware.cjs +0 -22
- package/dist/cjs/define/middleware.cjs.map +0 -1
- package/dist/cjs/define/middleware.d.cts +0 -45
- package/dist/cjs/define/validators.cjs +0 -14
- package/dist/cjs/define/validators.cjs.map +0 -1
- package/dist/cjs/define/validators.d.cts +0 -8
- package/dist/cjs/index.cjs +0 -26
- package/dist/cjs/index.d.cts +0 -17
- package/dist/cjs/middleware/body-limit.cjs +0 -12
- package/dist/cjs/middleware/body-limit.cjs.map +0 -1
- package/dist/cjs/middleware/body-limit.d.cts +0 -3
- package/dist/cjs/middleware/compress.cjs +0 -12
- package/dist/cjs/middleware/compress.cjs.map +0 -1
- package/dist/cjs/middleware/compress.d.cts +0 -3
- package/dist/cjs/middleware/cors.cjs +0 -12
- package/dist/cjs/middleware/cors.cjs.map +0 -1
- package/dist/cjs/middleware/cors.d.cts +0 -3
- package/dist/cjs/middleware/csrf.cjs +0 -12
- package/dist/cjs/middleware/csrf.cjs.map +0 -1
- package/dist/cjs/middleware/csrf.d.cts +0 -3
- package/dist/cjs/middleware/etag.cjs +0 -12
- package/dist/cjs/middleware/etag.cjs.map +0 -1
- package/dist/cjs/middleware/etag.d.cts +0 -3
- package/dist/cjs/middleware/hono-mw.cjs +0 -23
- package/dist/cjs/middleware/hono-mw.cjs.map +0 -1
- package/dist/cjs/middleware/hono-mw.d.cts +0 -17
- package/dist/cjs/middleware/jwk.cjs +0 -30
- package/dist/cjs/middleware/jwk.cjs.map +0 -1
- package/dist/cjs/middleware/jwk.d.cts +0 -14
- package/dist/cjs/middleware/jwt.cjs +0 -20
- package/dist/cjs/middleware/jwt.cjs.map +0 -1
- package/dist/cjs/middleware/jwt.d.cts +0 -12
- package/dist/cjs/middleware/secure-headers.cjs +0 -12
- package/dist/cjs/middleware/secure-headers.cjs.map +0 -1
- package/dist/cjs/middleware/secure-headers.d.cts +0 -3
- package/dist/cjs/middleware/timing.cjs +0 -12
- package/dist/cjs/middleware/timing.cjs.map +0 -1
- package/dist/cjs/middleware/timing.d.cts +0 -3
- package/dist/cjs/reply.cjs +0 -9
- package/dist/cjs/reply.d.cts +0 -1
- package/dist/cjs/stream.cjs +0 -9
- package/dist/cjs/stream.d.cts +0 -1
- package/dist/cjs/types/app.d.cts +0 -29
- package/dist/cjs/types/index.d.cts +0 -297
- package/dist/cjs/types/returns.d.cts +0 -34
- package/dist/cjs/types/schema.d.cts +0 -14
- package/dist/cjs/types/type-utils.d.cts +0 -50
- package/dist/cjs/types/units.d.cts +0 -71
- package/dist/esm/builder/app.d.ts +0 -11
- package/dist/esm/builder/app.js +0 -26
- package/dist/esm/builder/app.js.map +0 -1
- package/dist/esm/builder/constants.d.ts +0 -3
- package/dist/esm/builder/constants.js +0 -11
- package/dist/esm/builder/constants.js.map +0 -1
- package/dist/esm/builder/middleware-unit.d.ts +0 -34
- package/dist/esm/builder/middleware-unit.js +0 -64
- package/dist/esm/builder/middleware-unit.js.map +0 -1
- package/dist/esm/builder/middleware.d.ts +0 -2
- package/dist/esm/builder/middleware.js +0 -20
- package/dist/esm/builder/middleware.js.map +0 -1
- package/dist/esm/builder/normalize.d.ts +0 -2
- package/dist/esm/builder/normalize.js +0 -10
- package/dist/esm/builder/normalize.js.map +0 -1
- package/dist/esm/builder/route.d.ts +0 -4
- package/dist/esm/builder/route.js +0 -83
- package/dist/esm/builder/route.js.map +0 -1
- package/dist/esm/builder/router.d.ts +0 -26
- package/dist/esm/builder/router.js +0 -87
- package/dist/esm/builder/router.js.map +0 -1
- package/dist/esm/builder/standalone.d.ts +0 -23
- package/dist/esm/builder/standalone.js +0 -29
- package/dist/esm/builder/standalone.js.map +0 -1
- package/dist/esm/context/create-context.d.ts +0 -5
- package/dist/esm/context/create-context.js +0 -8
- package/dist/esm/context/create-context.js.map +0 -1
- package/dist/esm/define/middleware.d.ts +0 -45
- package/dist/esm/define/middleware.js +0 -22
- package/dist/esm/define/middleware.js.map +0 -1
- package/dist/esm/define/validators.d.ts +0 -8
- package/dist/esm/define/validators.js +0 -14
- package/dist/esm/define/validators.js.map +0 -1
- package/dist/esm/index.d.ts +0 -17
- package/dist/esm/index.js +0 -7
- package/dist/esm/middleware/body-limit.d.ts +0 -3
- package/dist/esm/middleware/body-limit.js +0 -11
- package/dist/esm/middleware/body-limit.js.map +0 -1
- package/dist/esm/middleware/compress.d.ts +0 -3
- package/dist/esm/middleware/compress.js +0 -11
- package/dist/esm/middleware/compress.js.map +0 -1
- package/dist/esm/middleware/cors.d.ts +0 -3
- package/dist/esm/middleware/cors.js +0 -11
- package/dist/esm/middleware/cors.js.map +0 -1
- package/dist/esm/middleware/csrf.d.ts +0 -3
- package/dist/esm/middleware/csrf.js +0 -11
- package/dist/esm/middleware/csrf.js.map +0 -1
- package/dist/esm/middleware/etag.d.ts +0 -3
- package/dist/esm/middleware/etag.js +0 -11
- package/dist/esm/middleware/etag.js.map +0 -1
- package/dist/esm/middleware/hono-mw.d.ts +0 -17
- package/dist/esm/middleware/hono-mw.js +0 -23
- package/dist/esm/middleware/hono-mw.js.map +0 -1
- package/dist/esm/middleware/jwk.d.ts +0 -14
- package/dist/esm/middleware/jwk.js +0 -29
- package/dist/esm/middleware/jwk.js.map +0 -1
- package/dist/esm/middleware/jwt.d.ts +0 -12
- package/dist/esm/middleware/jwt.js +0 -19
- package/dist/esm/middleware/jwt.js.map +0 -1
- package/dist/esm/middleware/secure-headers.d.ts +0 -3
- package/dist/esm/middleware/secure-headers.js +0 -11
- package/dist/esm/middleware/secure-headers.js.map +0 -1
- package/dist/esm/middleware/timing.d.ts +0 -3
- package/dist/esm/middleware/timing.js +0 -11
- package/dist/esm/middleware/timing.js.map +0 -1
- package/dist/esm/reply.d.ts +0 -1
- package/dist/esm/reply.js +0 -1
- package/dist/esm/stream.d.ts +0 -1
- package/dist/esm/stream.js +0 -1
- package/dist/esm/types/app.d.ts +0 -29
- package/dist/esm/types/index.d.ts +0 -297
- package/dist/esm/types/returns.d.ts +0 -34
- package/dist/esm/types/schema.d.ts +0 -14
- package/dist/esm/types/type-utils.d.ts +0 -50
- package/dist/esm/types/units.d.ts +0 -71
- package/src/builder/app.ts +0 -39
- package/src/builder/constants.ts +0 -4
- package/src/builder/middleware-unit.ts +0 -71
- package/src/builder/middleware.ts +0 -23
- package/src/builder/normalize.ts +0 -13
- package/src/builder/route.ts +0 -137
- package/src/builder/router.ts +0 -144
- package/src/builder/standalone.ts +0 -79
- package/src/context/create-context.ts +0 -19
- package/src/define/middleware.ts +0 -214
- package/src/define/validators.ts +0 -22
- package/src/middleware/hono-mw.ts +0 -27
- package/src/types/app.ts +0 -48
- package/src/types/index.ts +0 -801
- package/src/types/returns.ts +0 -61
- package/src/types/schema.ts +0 -21
- package/src/types/type-utils.ts +0 -90
- package/src/types/units.ts +0 -314
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { pickDefinedSchemas } from "../define/validators.js";
|
|
2
|
-
//#region src/builder/middleware-unit.ts
|
|
3
|
-
var MiddlewareUnitBuilderImpl = class {
|
|
4
|
-
validators = {};
|
|
5
|
-
bodyMode;
|
|
6
|
-
returnsMap;
|
|
7
|
-
__requiredLayouts;
|
|
8
|
-
__middlewareAcc = void 0;
|
|
9
|
-
constructor(requiredLayouts) {
|
|
10
|
-
this.__requiredLayouts = requiredLayouts;
|
|
11
|
-
}
|
|
12
|
-
query(schema) {
|
|
13
|
-
this.validators.query = schema;
|
|
14
|
-
return this;
|
|
15
|
-
}
|
|
16
|
-
params(schema) {
|
|
17
|
-
this.validators.params = schema;
|
|
18
|
-
return this;
|
|
19
|
-
}
|
|
20
|
-
body(modeOrSchema, schema) {
|
|
21
|
-
if (typeof modeOrSchema === "string") {
|
|
22
|
-
this.bodyMode = modeOrSchema;
|
|
23
|
-
if (schema !== void 0) this.validators.body = schema;
|
|
24
|
-
} else {
|
|
25
|
-
this.bodyMode = "json";
|
|
26
|
-
this.validators.body = modeOrSchema;
|
|
27
|
-
}
|
|
28
|
-
return this;
|
|
29
|
-
}
|
|
30
|
-
returns(map) {
|
|
31
|
-
this.returnsMap = this.returnsMap ? {
|
|
32
|
-
...this.returnsMap,
|
|
33
|
-
...map
|
|
34
|
-
} : { ...map };
|
|
35
|
-
return this;
|
|
36
|
-
}
|
|
37
|
-
requires() {
|
|
38
|
-
return this;
|
|
39
|
-
}
|
|
40
|
-
handler(fn) {
|
|
41
|
-
return this.toUnit(fn);
|
|
42
|
-
}
|
|
43
|
-
toUnit(fn) {
|
|
44
|
-
const schemas = pickDefinedSchemas(this.validators);
|
|
45
|
-
return {
|
|
46
|
-
...fn ? { handler: fn } : {},
|
|
47
|
-
...schemas,
|
|
48
|
-
...this.bodyMode ? { bodyMode: this.bodyMode } : {},
|
|
49
|
-
...this.returnsMap ? {
|
|
50
|
-
returns: this.returnsMap,
|
|
51
|
-
__returns: this.returnsMap
|
|
52
|
-
} : {},
|
|
53
|
-
...this.__requiredLayouts !== void 0 ? { __requiredLayouts: this.__requiredLayouts } : {},
|
|
54
|
-
__middlewareAcc: void 0
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
function createMiddlewareUnitBuilder(requiredLayouts) {
|
|
59
|
-
return new MiddlewareUnitBuilderImpl(requiredLayouts);
|
|
60
|
-
}
|
|
61
|
-
//#endregion
|
|
62
|
-
export { createMiddlewareUnitBuilder };
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=middleware-unit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-unit.js","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\nclass MiddlewareUnitBuilderImpl {\n private readonly validators: SchemaValidators = {};\n private bodyMode: BodyMode | undefined;\n private returnsMap: ReturnsMap | undefined;\n readonly __requiredLayouts: string | readonly string[] | undefined;\n readonly __middlewareAcc: unknown = undefined;\n\n constructor(requiredLayouts?: string | readonly string[]) {\n this.__requiredLayouts = requiredLayouts;\n }\n\n query(schema: Schema<unknown>): this {\n this.validators.query = schema;\n return this;\n }\n\n params(schema: Schema<unknown>): this {\n this.validators.params = schema;\n return this;\n }\n\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>): this {\n if (typeof modeOrSchema === \"string\") {\n this.bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n this.validators.body = schema;\n }\n } else {\n this.bodyMode = \"json\";\n this.validators.body = modeOrSchema;\n }\n return this;\n }\n\n returns(map: ReturnsMap): this {\n this.returnsMap = this.returnsMap ? { ...this.returnsMap, ...map } : { ...map };\n return this;\n }\n\n requires(): this {\n return this;\n }\n\n handler(fn: (ctx: any, next: any) => any) {\n return this.toUnit(fn);\n }\n\n toUnit(fn?: (ctx: any, next: any) => any) {\n const schemas = pickDefinedSchemas(this.validators);\n return {\n ...(fn ? { handler: fn } : {}),\n ...schemas,\n ...(this.bodyMode ? { bodyMode: this.bodyMode } : {}),\n ...(this.returnsMap ? { returns: this.returnsMap, __returns: this.returnsMap } : {}),\n ...(this.__requiredLayouts !== undefined\n ? { __requiredLayouts: this.__requiredLayouts }\n : {}),\n __middlewareAcc: undefined as unknown,\n };\n }\n}\n\nexport function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]) {\n return new MiddlewareUnitBuilderImpl(requiredLayouts);\n}\n"],"mappings":";;AAMA,IAAM,4BAAN,MAAgC;CAC9B,aAAgD,CAAC;CACjD;CACA;CACA;CACA,kBAAoC,KAAA;CAEpC,YAAY,iBAA8C;EACxD,KAAK,oBAAoB;CAC3B;CAEA,MAAM,QAA+B;EACnC,KAAK,WAAW,QAAQ;EACxB,OAAO;CACT;CAEA,OAAO,QAA+B;EACpC,KAAK,WAAW,SAAS;EACzB,OAAO;CACT;CAEA,KAAK,cAA0C,QAAgC;EAC7E,IAAI,OAAO,iBAAiB,UAAU;GACpC,KAAK,WAAW;GAChB,IAAI,WAAW,KAAA,GACb,KAAK,WAAW,OAAO;EAE3B,OAAO;GACL,KAAK,WAAW;GAChB,KAAK,WAAW,OAAO;EACzB;EACA,OAAO;CACT;CAEA,QAAQ,KAAuB;EAC7B,KAAK,aAAa,KAAK,aAAa;GAAE,GAAG,KAAK;GAAY,GAAG;EAAI,IAAI,EAAE,GAAG,IAAI;EAC9E,OAAO;CACT;CAEA,WAAiB;EACf,OAAO;CACT;CAEA,QAAQ,IAAkC;EACxC,OAAO,KAAK,OAAO,EAAE;CACvB;CAEA,OAAO,IAAmC;EACxC,MAAM,UAAU,mBAAmB,KAAK,UAAU;EAClD,OAAO;GACL,GAAI,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;GAC5B,GAAG;GACH,GAAI,KAAK,WAAW,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC;GACnD,GAAI,KAAK,aAAa;IAAE,SAAS,KAAK;IAAY,WAAW,KAAK;GAAW,IAAI,CAAC;GAClF,GAAI,KAAK,sBAAsB,KAAA,IAC3B,EAAE,mBAAmB,KAAK,kBAAkB,IAC5C,CAAC;GACL,iBAAiB,KAAA;EACnB;CACF;AACF;AAEA,SAAgB,4BAA4B,iBAA8C;CACxF,OAAO,IAAI,0BAA0B,eAAe;AACtD"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { normalizeMiddlewareDefinition } from "./normalize.js";
|
|
2
|
-
//#region src/builder/middleware.ts
|
|
3
|
-
var MiddlewareBuilderImpl = class {
|
|
4
|
-
layout;
|
|
5
|
-
middlewares = [];
|
|
6
|
-
constructor(layout) {
|
|
7
|
-
this.layout = layout;
|
|
8
|
-
}
|
|
9
|
-
use(definition) {
|
|
10
|
-
this.middlewares.push(normalizeMiddlewareDefinition(definition));
|
|
11
|
-
return this;
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
function createMiddleware(layout) {
|
|
15
|
-
return new MiddlewareBuilderImpl(layout);
|
|
16
|
-
}
|
|
17
|
-
//#endregion
|
|
18
|
-
export { createMiddleware };
|
|
19
|
-
|
|
20
|
-
//# sourceMappingURL=middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":[],"sources":["../../../src/builder/middleware.ts"],"sourcesContent":["import type { LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { MiddlewareDefinition } from \"../types/units.js\";\nimport { normalizeMiddlewareDefinition } from \"./normalize.js\";\n\nclass MiddlewareBuilderImpl<Layout extends LayoutId> {\n readonly layout: Layout;\n readonly middlewares: MiddlewareDefinition[] = [];\n\n constructor(layout: Layout) {\n this.layout = layout;\n }\n\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)): this {\n this.middlewares.push(normalizeMiddlewareDefinition(definition));\n return this;\n }\n}\n\nexport function createMiddleware<const Layout extends LayoutId>(\n layout: Layout,\n): MiddlewareBuilder<Layout, readonly []> {\n return new MiddlewareBuilderImpl(layout) as unknown as MiddlewareBuilder<Layout, readonly []>;\n}\n"],"mappings":";;AAIA,IAAM,wBAAN,MAAqD;CACnD;CACA,cAA+C,CAAC;CAEhD,YAAY,QAAgB;EAC1B,KAAK,SAAS;CAChB;CAEA,IAAI,YAAyE;EAC3E,KAAK,YAAY,KAAK,8BAA8B,UAAU,CAAC;EAC/D,OAAO;CACT;AACF;AAEA,SAAgB,iBACd,QACwC;CACxC,OAAO,IAAI,sBAAsB,MAAM;AACzC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
//#region src/builder/normalize.ts
|
|
2
|
-
function normalizeMiddlewareDefinition(definition) {
|
|
3
|
-
if (typeof definition === "function") return { handler: definition };
|
|
4
|
-
if (typeof definition?.toUnit === "function") return definition.toUnit();
|
|
5
|
-
return definition;
|
|
6
|
-
}
|
|
7
|
-
//#endregion
|
|
8
|
-
export { normalizeMiddlewareDefinition };
|
|
9
|
-
|
|
10
|
-
//# sourceMappingURL=normalize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","names":[],"sources":["../../../src/builder/normalize.ts"],"sourcesContent":["import type { MiddlewareDefinition } from \"../types/units.js\";\n\nexport function normalizeMiddlewareDefinition(\n definition: MiddlewareDefinition | ((ctx: any, next: any) => any),\n): MiddlewareDefinition {\n if (typeof definition === \"function\") {\n return { handler: definition as any };\n }\n if (typeof (definition as any)?.toUnit === \"function\") {\n return (definition as any).toUnit();\n }\n return definition;\n}\n"],"mappings":";AAEA,SAAgB,8BACd,YACsB;CACtB,IAAI,OAAO,eAAe,YACxB,OAAO,EAAE,SAAS,WAAkB;CAEtC,IAAI,OAAQ,YAAoB,WAAW,YACzC,OAAQ,WAAmB,OAAO;CAEpC,OAAO;AACT"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { Method, RouteBuilder, RoutePath, ValidatorParts } from '../types/index.js';
|
|
2
|
-
import { HttpMethod } from '../types/units.js';
|
|
3
|
-
/** Shared internal builder — not part of the public `@taserjs/router` API. */
|
|
4
|
-
export declare function createRouteBuilder(path: string, method: HttpMethod | "ANY" | "ALL", methods?: readonly HttpMethod[]): RouteBuilder<RoutePath, Method, readonly [], ValidatorParts>;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { pickDefinedSchemas } from "../define/validators.js";
|
|
2
|
-
import { normalizeMiddlewareDefinition } from "./normalize.js";
|
|
3
|
-
import { collectReturnsFromDefinitions, hasInputSchemas, mergeReturnsMaps, withAuto422 } from "@taserjs/router-utils";
|
|
4
|
-
//#region src/builder/route.ts
|
|
5
|
-
function buildRouteReturnsWith422(args) {
|
|
6
|
-
const with422 = withAuto422(mergeReturnsMaps(args.middlewareReturns, args.routeReturns), hasInputSchemas(args.schemas));
|
|
7
|
-
return Object.keys(with422).length > 0 ? with422 : void 0;
|
|
8
|
-
}
|
|
9
|
-
function buildRouteBase(path, method, methods, middlewares) {
|
|
10
|
-
return {
|
|
11
|
-
path,
|
|
12
|
-
method,
|
|
13
|
-
...methods ? { methods: [...methods] } : {},
|
|
14
|
-
middlewares: [...middlewares]
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
var RouteBuilderImpl = class {
|
|
18
|
-
path;
|
|
19
|
-
method;
|
|
20
|
-
methods;
|
|
21
|
-
middlewares = [];
|
|
22
|
-
routeReturns = {};
|
|
23
|
-
validators = {};
|
|
24
|
-
bodyMode;
|
|
25
|
-
constructor(path, method, methods) {
|
|
26
|
-
this.path = path;
|
|
27
|
-
this.method = method;
|
|
28
|
-
this.methods = methods;
|
|
29
|
-
}
|
|
30
|
-
query(schema) {
|
|
31
|
-
this.validators.query = schema;
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
params(schema) {
|
|
35
|
-
this.validators.params = schema;
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
body(modeOrSchema, schema) {
|
|
39
|
-
if (typeof modeOrSchema === "string") {
|
|
40
|
-
this.bodyMode = modeOrSchema;
|
|
41
|
-
if (schema !== void 0) this.validators.body = schema;
|
|
42
|
-
} else {
|
|
43
|
-
this.bodyMode = "json";
|
|
44
|
-
this.validators.body = modeOrSchema;
|
|
45
|
-
}
|
|
46
|
-
return this;
|
|
47
|
-
}
|
|
48
|
-
returns(map) {
|
|
49
|
-
Object.assign(this.routeReturns, map);
|
|
50
|
-
return this;
|
|
51
|
-
}
|
|
52
|
-
use(definition) {
|
|
53
|
-
this.middlewares.push(normalizeMiddlewareDefinition(definition));
|
|
54
|
-
return this;
|
|
55
|
-
}
|
|
56
|
-
handler(fn) {
|
|
57
|
-
const routeSchemas = pickDefinedSchemas(this.validators);
|
|
58
|
-
const base = buildRouteBase(this.path, this.method, this.methods, this.middlewares);
|
|
59
|
-
const returns = buildRouteReturnsWith422({
|
|
60
|
-
middlewareReturns: collectReturnsFromDefinitions(this.middlewares),
|
|
61
|
-
routeReturns: this.routeReturns,
|
|
62
|
-
schemas: {
|
|
63
|
-
...this.validators,
|
|
64
|
-
middlewares: this.middlewares
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
return {
|
|
68
|
-
...base,
|
|
69
|
-
handler: fn,
|
|
70
|
-
...routeSchemas,
|
|
71
|
-
...this.bodyMode ? { bodyMode: this.bodyMode } : {},
|
|
72
|
-
...returns ? { returns } : {}
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
/** Shared internal builder — not part of the public `@taserjs/router` API. */
|
|
77
|
-
function createRouteBuilder(path, method, methods) {
|
|
78
|
-
return new RouteBuilderImpl(path, method, methods);
|
|
79
|
-
}
|
|
80
|
-
//#endregion
|
|
81
|
-
export { createRouteBuilder };
|
|
82
|
-
|
|
83
|
-
//# sourceMappingURL=route.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","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\";\nimport { normalizeMiddlewareDefinition } from \"./normalize.js\";\n\nfunction buildRouteReturnsWith422(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 args.middlewareReturns as Record<number, StandardSchemaV1>,\n args.routeReturns as Record<number, StandardSchemaV1>,\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\nclass RouteBuilderImpl {\n readonly path: string;\n readonly method: HttpMethod | \"ANY\" | \"ALL\";\n readonly methods: readonly HttpMethod[] | undefined;\n private readonly middlewares: MiddlewareDefinition[] = [];\n private readonly routeReturns: Record<number, StandardSchemaV1> = {};\n private readonly validators: SchemaValidators = {};\n private bodyMode: BodyMode | undefined;\n\n constructor(path: string, method: HttpMethod | \"ANY\" | \"ALL\", methods?: readonly HttpMethod[]) {\n this.path = path;\n this.method = method;\n this.methods = methods;\n }\n\n query(schema: Schema<unknown>): this {\n this.validators.query = schema;\n return this;\n }\n\n params(schema: Schema<unknown>): this {\n this.validators.params = schema;\n return this;\n }\n\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>): this {\n if (typeof modeOrSchema === \"string\") {\n this.bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n this.validators.body = schema;\n }\n } else {\n this.bodyMode = \"json\";\n this.validators.body = modeOrSchema;\n }\n return this;\n }\n\n returns(map: ReturnsMap): this {\n Object.assign(this.routeReturns, map);\n return this;\n }\n\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)): this {\n this.middlewares.push(normalizeMiddlewareDefinition(definition));\n return this;\n }\n\n handler(fn: (ctx: unknown) => Response | Promise<Response>) {\n const routeSchemas = pickDefinedSchemas(this.validators);\n const base = buildRouteBase(this.path, this.method, this.methods, this.middlewares);\n\n const returns = buildRouteReturnsWith422({\n middlewareReturns: collectReturnsFromDefinitions(this.middlewares),\n routeReturns: this.routeReturns,\n schemas: {\n ...this.validators,\n middlewares: this.middlewares,\n },\n });\n\n return {\n ...base,\n handler: fn,\n ...routeSchemas,\n ...(this.bodyMode ? { bodyMode: this.bodyMode } : {}),\n ...(returns ? { returns } : {}),\n };\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 return new RouteBuilderImpl(path, method, methods) as unknown as RouteBuilder<\n RoutePath,\n Method,\n readonly [],\n ValidatorParts\n >;\n}\n"],"mappings":";;;;AAqBA,SAAS,yBAAyB,MASe;CAK/C,MAAM,UAAU,YAJD,iBACb,KAAK,mBACL,KAAK,YAEqB,GAAQ,gBAAgB,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;AAEA,IAAM,mBAAN,MAAuB;CACrB;CACA;CACA;CACA,cAAuD,CAAC;CACxD,eAAkE,CAAC;CACnE,aAAgD,CAAC;CACjD;CAEA,YAAY,MAAc,QAAoC,SAAiC;EAC7F,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,KAAK,UAAU;CACjB;CAEA,MAAM,QAA+B;EACnC,KAAK,WAAW,QAAQ;EACxB,OAAO;CACT;CAEA,OAAO,QAA+B;EACpC,KAAK,WAAW,SAAS;EACzB,OAAO;CACT;CAEA,KAAK,cAA0C,QAAgC;EAC7E,IAAI,OAAO,iBAAiB,UAAU;GACpC,KAAK,WAAW;GAChB,IAAI,WAAW,KAAA,GACb,KAAK,WAAW,OAAO;EAE3B,OAAO;GACL,KAAK,WAAW;GAChB,KAAK,WAAW,OAAO;EACzB;EACA,OAAO;CACT;CAEA,QAAQ,KAAuB;EAC7B,OAAO,OAAO,KAAK,cAAc,GAAG;EACpC,OAAO;CACT;CAEA,IAAI,YAAyE;EAC3E,KAAK,YAAY,KAAK,8BAA8B,UAAU,CAAC;EAC/D,OAAO;CACT;CAEA,QAAQ,IAAoD;EAC1D,MAAM,eAAe,mBAAmB,KAAK,UAAU;EACvD,MAAM,OAAO,eAAe,KAAK,MAAM,KAAK,QAAQ,KAAK,SAAS,KAAK,WAAW;EAElF,MAAM,UAAU,yBAAyB;GACvC,mBAAmB,8BAA8B,KAAK,WAAW;GACjE,cAAc,KAAK;GACnB,SAAS;IACP,GAAG,KAAK;IACR,aAAa,KAAK;GACpB;EACF,CAAC;EAED,OAAO;GACL,GAAG;GACH,SAAS;GACT,GAAG;GACH,GAAI,KAAK,WAAW,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC;GACnD,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;EAC/B;CACF;AACF;;AAGA,SAAgB,mBACd,MACA,QACA,SAC8D;CAC9D,OAAO,IAAI,iBAAiB,MAAM,QAAQ,OAAO;AAMnD"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { NotFoundHandler, OnErrorHandler, RouteManifestShape } from '@taserjs/router-core';
|
|
2
|
-
import { TaserApp } from './app.js';
|
|
3
|
-
import { ContextDefinition, CreateTaserAppOptions, OnErrorOptions } from '../types/app.js';
|
|
4
|
-
import { EmptyAppContext } from '../types/units.js';
|
|
5
|
-
import { ReturnsMap } from '../types/returns.js';
|
|
6
|
-
type RouterState = {
|
|
7
|
-
options: CreateTaserAppOptions;
|
|
8
|
-
contextDef: ContextDefinition<Record<string, unknown>, Record<string, unknown>>;
|
|
9
|
-
onError?: OnErrorHandler;
|
|
10
|
-
notFound?: NotFoundHandler;
|
|
11
|
-
};
|
|
12
|
-
export declare class TaserRouter<TAppContext extends Record<string, unknown> = EmptyAppContext, THasNotFound extends boolean = false> {
|
|
13
|
-
private readonly state;
|
|
14
|
-
readonly $Infer: {
|
|
15
|
-
Context: TAppContext;
|
|
16
|
-
};
|
|
17
|
-
constructor(options?: CreateTaserAppOptions, state?: Partial<Omit<RouterState, "options">>);
|
|
18
|
-
context<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>>(definition: ContextDefinition<TBoot, TReq>): TaserRouter<TBoot & TReq, THasNotFound>;
|
|
19
|
-
onError<TResponses extends ReturnsMap = ReturnsMap>(options: OnErrorOptions<TResponses> | OnErrorOptions<TResponses>["handle"]): this;
|
|
20
|
-
notFound(handler: (ctx: unknown) => Response | Promise<Response> | unknown): TaserRouter<TAppContext, true>;
|
|
21
|
-
create<const TManifest extends RouteManifestShape>(manifest: TManifest, runtimeOptions?: {
|
|
22
|
-
basePath?: string;
|
|
23
|
-
}): TaserApp<TManifest, THasNotFound>;
|
|
24
|
-
}
|
|
25
|
-
export declare function createTaserApp(options?: CreateTaserAppOptions): TaserRouter<EmptyAppContext, false>;
|
|
26
|
-
export {};
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { TaserApp } from "./app.js";
|
|
2
|
-
import { isPromise, normalizeOnError } from "@taserjs/router-utils";
|
|
3
|
-
import { createTaserRuntime } from "@taserjs/router-core";
|
|
4
|
-
//#region src/builder/router.ts
|
|
5
|
-
function toOnErrorHandler(onErrorOptions) {
|
|
6
|
-
return normalizeOnError(onErrorOptions);
|
|
7
|
-
}
|
|
8
|
-
var emptyContext = {};
|
|
9
|
-
var TaserRouter = class {
|
|
10
|
-
state;
|
|
11
|
-
$Infer;
|
|
12
|
-
constructor(options = {}, state) {
|
|
13
|
-
this.state = {
|
|
14
|
-
options,
|
|
15
|
-
contextDef: state?.contextDef ?? emptyContext,
|
|
16
|
-
...state?.onError !== void 0 ? { onError: state.onError } : {},
|
|
17
|
-
...state?.notFound !== void 0 ? { notFound: state.notFound } : {}
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
context(definition) {
|
|
21
|
-
this.state.contextDef = definition;
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
onError(options) {
|
|
25
|
-
this.state.onError = toOnErrorHandler(options);
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
notFound(handler) {
|
|
29
|
-
this.state.notFound = (ctx) => handler(ctx);
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
create(manifest, runtimeOptions) {
|
|
33
|
-
const definition = this.state.contextDef;
|
|
34
|
-
const validateResponse = this.state.options.response?.validate ?? true;
|
|
35
|
-
const onValidationFailure = this.state.options.response?.onValidationFailure;
|
|
36
|
-
const basePath = runtimeOptions?.basePath;
|
|
37
|
-
const hasCustomContext = definition.boot !== void 0 || definition.request !== void 0;
|
|
38
|
-
let bootContextResolved;
|
|
39
|
-
let bootPromise;
|
|
40
|
-
if (definition.boot !== void 0) {
|
|
41
|
-
const bootResult = definition.boot();
|
|
42
|
-
if (isPromise(bootResult)) bootPromise = bootResult.then((ctx) => {
|
|
43
|
-
bootContextResolved = ctx ?? {};
|
|
44
|
-
return bootContextResolved;
|
|
45
|
-
});
|
|
46
|
-
else bootContextResolved = bootResult ?? {};
|
|
47
|
-
} else if (hasCustomContext) bootContextResolved = {};
|
|
48
|
-
return new TaserApp(createTaserRuntime(manifest, hasCustomContext ? (req) => {
|
|
49
|
-
if (bootPromise !== void 0 && bootContextResolved === void 0) return bootPromise.then(async (bootContext) => {
|
|
50
|
-
if (!definition.request) return { ...bootContext };
|
|
51
|
-
const requestResult = definition.request(req);
|
|
52
|
-
const requestContext = isPromise(requestResult) ? await requestResult : requestResult;
|
|
53
|
-
return {
|
|
54
|
-
...bootContext,
|
|
55
|
-
...requestContext
|
|
56
|
-
};
|
|
57
|
-
});
|
|
58
|
-
const bootContext = bootContextResolved ?? {};
|
|
59
|
-
if (!definition.request) return { ...bootContext };
|
|
60
|
-
const requestResult = definition.request(req);
|
|
61
|
-
if (isPromise(requestResult)) return requestResult.then((requestContext) => ({
|
|
62
|
-
...bootContext,
|
|
63
|
-
...requestContext
|
|
64
|
-
}));
|
|
65
|
-
return {
|
|
66
|
-
...bootContext,
|
|
67
|
-
...requestResult
|
|
68
|
-
};
|
|
69
|
-
} : () => ({}), {
|
|
70
|
-
...basePath !== void 0 ? { basePath } : {},
|
|
71
|
-
response: {
|
|
72
|
-
validate: validateResponse,
|
|
73
|
-
...onValidationFailure !== void 0 ? { onValidationFailure } : {}
|
|
74
|
-
},
|
|
75
|
-
...this.state.onError !== void 0 ? { onError: this.state.onError } : {},
|
|
76
|
-
...this.state.notFound !== void 0 ? { notFound: this.state.notFound } : {},
|
|
77
|
-
...this.state.options.cookies !== void 0 ? { cookies: this.state.options.cookies } : {}
|
|
78
|
-
}), manifest);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
function createTaserApp(options = {}) {
|
|
82
|
-
return new TaserRouter(options);
|
|
83
|
-
}
|
|
84
|
-
//#endregion
|
|
85
|
-
export { TaserRouter, createTaserApp };
|
|
86
|
-
|
|
87
|
-
//# sourceMappingURL=router.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","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,OAAO,iBAAiB,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,IAAI,UAAU,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,SAXK,mBAAmB,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,iBAAiB,UAAU,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,IAAI,UAAU,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,23 +0,0 @@
|
|
|
1
|
-
import { AppContext, LayoutBuilder, RouteBuilder, RoutePath } from '../types/index.js';
|
|
2
|
-
import { HttpMethod } from '../types/units.js';
|
|
3
|
-
import { MiddlewareFn } from '../define/middleware.js';
|
|
4
|
-
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>;
|
|
5
|
-
export type CreateWithBodyRoute<M extends "POST" | "PUT" | "PATCH" | "QUERY", TAppContext extends Record<string, unknown> = AppContext> = <const Path extends RoutePath>(path: Path) => RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
|
|
6
|
-
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>;
|
|
7
|
-
export type CreateAllRoute<TAppContext extends Record<string, unknown> = AppContext> = <const Path extends RoutePath>(path: Path) => RouteBuilder<Path, HttpMethod, readonly [], {}, {}, TAppContext>;
|
|
8
|
-
export type TaserNamespace<TAppContext extends Record<string, unknown> = AppContext> = {
|
|
9
|
-
readonly get: CreateWithoutBodyRoute<"GET", TAppContext>;
|
|
10
|
-
readonly post: CreateWithBodyRoute<"POST", TAppContext>;
|
|
11
|
-
readonly put: CreateWithBodyRoute<"PUT", TAppContext>;
|
|
12
|
-
readonly patch: CreateWithBodyRoute<"PATCH", TAppContext>;
|
|
13
|
-
readonly delete: CreateWithoutBodyRoute<"DELETE", TAppContext>;
|
|
14
|
-
readonly options: CreateWithoutBodyRoute<"OPTIONS", TAppContext>;
|
|
15
|
-
readonly head: CreateWithoutBodyRoute<"HEAD", TAppContext>;
|
|
16
|
-
readonly query: CreateWithBodyRoute<"QUERY", TAppContext>;
|
|
17
|
-
readonly any: CreateAnyRoute<TAppContext>;
|
|
18
|
-
readonly all: CreateAllRoute<TAppContext>;
|
|
19
|
-
readonly layout: LayoutBuilder<TAppContext>;
|
|
20
|
-
readonly middleware: MiddlewareFn<TAppContext>;
|
|
21
|
-
};
|
|
22
|
-
export declare const middleware: MiddlewareFn<AppContext>;
|
|
23
|
-
export declare const t: TaserNamespace<AppContext>;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { createRouteBuilder } from "./route.js";
|
|
2
|
-
import { createMiddleware } from "./middleware.js";
|
|
3
|
-
import { middleware as middleware$1 } from "../define/middleware.js";
|
|
4
|
-
//#region src/builder/standalone.ts
|
|
5
|
-
function createWithoutBodyRoute(method) {
|
|
6
|
-
return ((path) => createRouteBuilder(path, method));
|
|
7
|
-
}
|
|
8
|
-
function createWithBodyRoute(method) {
|
|
9
|
-
return ((path) => createRouteBuilder(path, method));
|
|
10
|
-
}
|
|
11
|
-
var middleware = middleware$1;
|
|
12
|
-
var t = {
|
|
13
|
-
get: createWithoutBodyRoute("GET"),
|
|
14
|
-
post: createWithBodyRoute("POST"),
|
|
15
|
-
put: createWithBodyRoute("PUT"),
|
|
16
|
-
patch: createWithBodyRoute("PATCH"),
|
|
17
|
-
delete: createWithoutBodyRoute("DELETE"),
|
|
18
|
-
options: createWithoutBodyRoute("OPTIONS"),
|
|
19
|
-
head: createWithoutBodyRoute("HEAD"),
|
|
20
|
-
query: createWithBodyRoute("QUERY"),
|
|
21
|
-
any: ((path, methods) => createRouteBuilder(path, "ANY", methods)),
|
|
22
|
-
all: ((path) => createRouteBuilder(path, "ALL")),
|
|
23
|
-
layout: createMiddleware,
|
|
24
|
-
middleware
|
|
25
|
-
};
|
|
26
|
-
//#endregion
|
|
27
|
-
export { middleware, t };
|
|
28
|
-
|
|
29
|
-
//# sourceMappingURL=standalone.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.js","names":[],"sources":["../../../src/builder/standalone.ts"],"sourcesContent":["import type { AppContext, LayoutBuilder, RouteBuilder, RoutePath } from \"../types/index.js\";\nimport type { HttpMethod } from \"../types/units.js\";\nimport { createRouteBuilder } from \"./route.js\";\nimport { createMiddleware } from \"./middleware.js\";\nimport { middleware as createMiddlewareFn, type MiddlewareFn } from \"../define/middleware.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\" | \"QUERY\",\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\" | \"QUERY\">(\n method: M,\n): CreateWithBodyRoute<M> {\n return ((path: string) => createRouteBuilder(path, method)) as unknown as CreateWithBodyRoute<M>;\n}\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 query: CreateWithBodyRoute<\"QUERY\", 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 middleware: MiddlewareFn<AppContext> = createMiddlewareFn as MiddlewareFn<AppContext>;\n\nexport const t: TaserNamespace<AppContext> = {\n get: createWithoutBodyRoute(\"GET\"),\n post: createWithBodyRoute(\"POST\"),\n put: createWithBodyRoute(\"PUT\"),\n patch: createWithBodyRoute(\"PATCH\"),\n delete: createWithoutBodyRoute(\"DELETE\"),\n options: createWithoutBodyRoute(\"OPTIONS\"),\n head: createWithoutBodyRoute(\"HEAD\"),\n query: createWithBodyRoute(\"QUERY\"),\n any: ((path: string, methods: readonly HttpMethod[]) =>\n createRouteBuilder(path, \"ANY\", methods)) as unknown as CreateAnyRoute<AppContext>,\n all: ((path: string) => createRouteBuilder(path, \"ALL\")) as unknown as CreateAllRoute<AppContext>,\n layout: createMiddleware as LayoutBuilder<AppContext>,\n middleware,\n};\n"],"mappings":";;;;AAkCA,SAAS,uBACP,QAC2B;CAC3B,SAAS,SACP,mBAAmB,MAAM,MAAM;AACnC;AAEA,SAAS,oBACP,QACwB;CACxB,SAAS,SAAiB,mBAAmB,MAAM,MAAM;AAC3D;AAiBA,IAAa,aAAuC;AAEpD,IAAa,IAAgC;CAC3C,KAAK,uBAAuB,KAAK;CACjC,MAAM,oBAAoB,MAAM;CAChC,KAAK,oBAAoB,KAAK;CAC9B,OAAO,oBAAoB,OAAO;CAClC,QAAQ,uBAAuB,QAAQ;CACvC,SAAS,uBAAuB,SAAS;CACzC,MAAM,uBAAuB,MAAM;CACnC,OAAO,oBAAoB,OAAO;CAClC,OAAO,MAAc,YACnB,mBAAmB,MAAM,OAAO,OAAO;CACzC,OAAO,SAAiB,mBAAmB,MAAM,KAAK;CACtD,QAAQ;CACR;AACF"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { ReservedContextKey } from '@taserjs/router-core';
|
|
2
|
-
import { ContextDefinition } from '../types/app.js';
|
|
3
|
-
type NoReservedKeysConstraint<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>> = Extract<keyof TBoot | keyof TReq, ReservedContextKey> extends never ? unknown : never;
|
|
4
|
-
export declare function createContext<TBoot extends Record<string, unknown> = Record<string, never>, TReq extends Record<string, unknown> = Record<string, never>>(definition: ContextDefinition<TBoot, TReq> & NoReservedKeysConstraint<TBoot, TReq>): ContextDefinition<TBoot, TReq>;
|
|
5
|
-
export type { ContextDefinition, InferAppContext } from '../types/app.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-context.js","names":[],"sources":["../../../src/context/create-context.ts"],"sourcesContent":["import type { ReservedContextKey } from \"@taserjs/router-core\";\n\nimport type { ContextDefinition } from \"../types/app.js\";\n\ntype NoReservedKeysConstraint<\n TBoot extends Record<string, unknown>,\n TReq extends Record<string, unknown>,\n> = Extract<keyof TBoot | keyof TReq, ReservedContextKey> extends never ? unknown : never;\n\nexport function createContext<\n TBoot extends Record<string, unknown> = Record<string, never>,\n TReq extends Record<string, unknown> = Record<string, never>,\n>(\n definition: ContextDefinition<TBoot, TReq> & NoReservedKeysConstraint<TBoot, TReq>,\n): ContextDefinition<TBoot, TReq> {\n return definition;\n}\n\nexport type { ContextDefinition, InferAppContext } from \"../types/app.js\";\n"],"mappings":";AASA,SAAgB,cAId,YACgC;CAChC,OAAO;AACT"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { DefineMiddlewareResult, ExtractState, IsUnknown, MiddlewareRequirements, MiddlewareUnitBuilder, NextFn, StandaloneMiddlewareContext } from '../types/units.js';
|
|
2
|
-
import { AppContext, LayoutId, LayoutParams, ResolveLayoutMiddlewaresState, ResolveLayoutsState } from '../types/index.js';
|
|
3
|
-
export interface MiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {
|
|
4
|
-
/**
|
|
5
|
-
* Defines a standalone, unscoped middleware using a short function signature.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```ts
|
|
9
|
-
* const auth = middleware((ctx, next) => {
|
|
10
|
-
* return next({ user: "alice" });
|
|
11
|
-
* });
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
<TState = unknown, TRequires extends MiddlewareRequirements = {}, 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>;
|
|
15
|
-
/**
|
|
16
|
-
* Constructs a fluent unscoped middleware builder, with optional explicit State generic.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```ts
|
|
20
|
-
* const auth = middleware<{ user: string }>()
|
|
21
|
-
* .query(z.object({ token: z.string() }))
|
|
22
|
-
* .body("form", z.object({ file: z.instanceof(File) }))
|
|
23
|
-
* .returns({ 401: z.string() })
|
|
24
|
-
* .handler(async (ctx, next) => next({ user: "alice" }));
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
<TState = unknown>(): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, null, {}, TAppContext, {}, unknown, unknown, unknown, TState>;
|
|
28
|
-
/**
|
|
29
|
-
* Defines a standalone middleware scoped to a single layout branch using a short function signature.
|
|
30
|
-
*/
|
|
31
|
-
<const Layout extends LayoutId, TState = unknown, TRequires extends MiddlewareRequirements = {}, R = unknown>(layout: Layout, fn: (ctx: StandaloneMiddlewareContext<unknown, LayoutParams<Layout>, 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>;
|
|
32
|
-
/**
|
|
33
|
-
* Defines a standalone middleware scoped to multiple layout branches using a short function signature.
|
|
34
|
-
*/
|
|
35
|
-
<const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown, TRequires extends MiddlewareRequirements = {}, R = unknown>(layouts: Layouts, fn: (ctx: StandaloneMiddlewareContext<unknown, LayoutParams<Layouts[number]>, 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>;
|
|
36
|
-
/**
|
|
37
|
-
* Constructs a fluent middleware builder scoped to a single layout branch, with optional explicit State generic.
|
|
38
|
-
*/
|
|
39
|
-
<const Layout extends LayoutId, TState = unknown>(layout: Layout): MiddlewareUnitBuilder<unknown, LayoutParams<Layout>, unknown, {}, Layout, {}, TAppContext, ResolveLayoutMiddlewaresState<Layout>, unknown, unknown, unknown, TState>;
|
|
40
|
-
/**
|
|
41
|
-
* Constructs a fluent middleware builder scoped to multiple layout branches (branch union), with optional explicit State generic.
|
|
42
|
-
*/
|
|
43
|
-
<const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown>(layouts: Layouts): MiddlewareUnitBuilder<unknown, LayoutParams<Layouts[number]>, unknown, {}, Layouts, {}, TAppContext, ResolveLayoutsState<Layouts>, unknown, unknown, unknown, TState>;
|
|
44
|
-
}
|
|
45
|
-
export declare const middleware: MiddlewareFn<AppContext>;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { createMiddlewareUnitBuilder } from "../builder/middleware-unit.js";
|
|
2
|
-
//#region src/define/middleware.ts
|
|
3
|
-
var middleware = function middleware(first, second) {
|
|
4
|
-
if (first === void 0) return createMiddlewareUnitBuilder();
|
|
5
|
-
if (typeof first === "string" || Array.isArray(first)) {
|
|
6
|
-
if (typeof second === "function") return {
|
|
7
|
-
handler: second,
|
|
8
|
-
__middlewareAcc: void 0,
|
|
9
|
-
__requiredLayouts: first
|
|
10
|
-
};
|
|
11
|
-
return createMiddlewareUnitBuilder(first);
|
|
12
|
-
}
|
|
13
|
-
if (typeof first === "function") return {
|
|
14
|
-
handler: first,
|
|
15
|
-
__middlewareAcc: void 0
|
|
16
|
-
};
|
|
17
|
-
return createMiddlewareUnitBuilder();
|
|
18
|
-
};
|
|
19
|
-
//#endregion
|
|
20
|
-
export { middleware };
|
|
21
|
-
|
|
22
|
-
//# sourceMappingURL=middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import { createMiddlewareUnitBuilder } from \"../builder/middleware-unit.js\";\nimport type {\n DefineMiddlewareResult,\n ExtractState,\n IsUnknown,\n MiddlewareRequirements,\n MiddlewareUnitBuilder,\n NextFn,\n StandaloneMiddlewareContext,\n} from \"../types/units.js\";\nimport type {\n AppContext,\n LayoutId,\n LayoutParams,\n ResolveLayoutMiddlewaresState,\n ResolveLayoutsState,\n} from \"../types/index.js\";\n\nexport interface MiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {\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 extends MiddlewareRequirements = {}, 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 /**\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 * Defines a standalone middleware scoped to a single layout branch using a short function signature.\n */\n <\n const Layout extends LayoutId,\n TState = unknown,\n TRequires extends MiddlewareRequirements = {},\n R = unknown,\n >(\n layout: Layout,\n fn: (\n ctx: StandaloneMiddlewareContext<\n unknown,\n LayoutParams<Layout>,\n unknown,\n TAppContext,\n ResolveLayoutMiddlewaresState<Layout>,\n 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 extends MiddlewareRequirements = {},\n R = unknown,\n >(\n layouts: Layouts,\n fn: (\n ctx: StandaloneMiddlewareContext<\n unknown,\n LayoutParams<Layouts[number]>,\n unknown,\n TAppContext,\n ResolveLayoutsState<Layouts>,\n 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 * 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 LayoutParams<Layout>,\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 LayoutParams<Layouts[number]>,\n unknown,\n {},\n Layouts,\n {},\n TAppContext,\n ResolveLayoutsState<Layouts>,\n unknown,\n unknown,\n unknown,\n TState\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":";;AA0LA,IAAa,aAAuC,SAAS,WAC3D,OACA,QACK;CACL,IAAI,UAAU,KAAA,GACZ,OAAO,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,4BAA4B,KAAK;CAC1C;CAEA,IAAI,OAAO,UAAU,YACnB,OAAO;EACL,SAAS;EACT,iBAAiB,KAAA;CACnB;CAGF,OAAO,4BAA4B;AACrC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Schema } from '../types/schema.js';
|
|
2
|
-
import { SchemaKey } from '../builder/constants.js';
|
|
3
|
-
export type SchemaValidators = {
|
|
4
|
-
query?: Schema<unknown>;
|
|
5
|
-
params?: Schema<unknown>;
|
|
6
|
-
body?: Schema<unknown>;
|
|
7
|
-
};
|
|
8
|
-
export declare function pickDefinedSchemas(source: SchemaValidators, keyMap?: Partial<Record<SchemaKey, string>>): Record<string, Schema<unknown>>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { SCHEMA_KEYS } from "../builder/constants.js";
|
|
2
|
-
//#region src/define/validators.ts
|
|
3
|
-
function pickDefinedSchemas(source, keyMap) {
|
|
4
|
-
const result = {};
|
|
5
|
-
for (const key of SCHEMA_KEYS) {
|
|
6
|
-
const value = source[key];
|
|
7
|
-
if (value !== void 0) result[keyMap?.[key] ?? key] = value;
|
|
8
|
-
}
|
|
9
|
-
return result;
|
|
10
|
-
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { pickDefinedSchemas };
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","names":[],"sources":["../../../src/define/validators.ts"],"sourcesContent":["import type { Schema } from \"../types/schema.js\";\nimport { SCHEMA_KEYS, type SchemaKey } from \"../builder/constants.js\";\n\nexport type SchemaValidators = {\n query?: Schema<unknown>;\n params?: Schema<unknown>;\n body?: Schema<unknown>;\n};\n\nexport function pickDefinedSchemas(\n source: SchemaValidators,\n keyMap?: Partial<Record<SchemaKey, string>>,\n): Record<string, Schema<unknown>> {\n const result: Record<string, Schema<unknown>> = {};\n for (const key of SCHEMA_KEYS) {\n const value = source[key];\n if (value !== undefined) {\n result[keyMap?.[key] ?? key] = value;\n }\n }\n return result;\n}\n"],"mappings":";;AASA,SAAgB,mBACd,QACA,QACiC;CACjC,MAAM,SAA0C,CAAC;CACjD,KAAK,MAAM,OAAO,aAAa;EAC7B,MAAM,QAAQ,OAAO;EACrB,IAAI,UAAU,KAAA,GACZ,OAAO,SAAS,QAAQ,OAAO;CAEnC;CACA,OAAO;AACT"}
|
package/dist/esm/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface RouterRegister {
|
|
2
|
-
}
|
|
3
|
-
export interface RouterMiddlewaresRegister {
|
|
4
|
-
}
|
|
5
|
-
export interface RouterRoutesRegister {
|
|
6
|
-
}
|
|
7
|
-
export type { AppContext, EmptyAppContext, HttpMethod, InferInput, InferOutput, InferRouteContext, InferRouteInput, InferRouteInputFromPath, InferRouteOutput, LayoutBuilder, LayoutId, LayoutMiddlewaresMap, LayoutParams, LayoutTree, Method, MiddlewareBuilder, MiddlewareDefinition, MiddlewareUnit, MiddlewareUnitBuilder, PathParams, ReturnsMap, RouteByPathMethod, RouteDefinition, RouteExport, RoutePath, Schema, Simplify, StatusCode, } from './types/index.js';
|
|
8
|
-
export type { ContextDefinition, CreateTaserAppOptions, InferAppContext, InferAppManifest, OnErrorOptions, RouteManifestShape, } from './types/app.js';
|
|
9
|
-
export { ValidationError, validationErrorSchema } from '@taserjs/router-utils';
|
|
10
|
-
export type { ResponseValidationFailureHandler, SuccessStatusCode } from '@taserjs/router-utils';
|
|
11
|
-
export { middleware, t, type TaserNamespace } from './builder/standalone.js';
|
|
12
|
-
export { createTaserApp, TaserRouter } from './builder/router.js';
|
|
13
|
-
export { TaserApp } from './builder/app.js';
|
|
14
|
-
export { createContext } from './context/create-context.js';
|
|
15
|
-
export { honoMw } from './middleware/hono-mw.js';
|
|
16
|
-
export type { MiddlewareFn } from './define/middleware.js';
|
|
17
|
-
export type { TaserCookieJar, TaserCookieOptions, TaserHeaders } from '@taserjs/router-core';
|
package/dist/esm/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { middleware, t } from "./builder/standalone.js";
|
|
2
|
-
import { TaserApp } from "./builder/app.js";
|
|
3
|
-
import { TaserRouter, createTaserApp } from "./builder/router.js";
|
|
4
|
-
import { createContext } from "./context/create-context.js";
|
|
5
|
-
import { honoMw } from "./middleware/hono-mw.js";
|
|
6
|
-
import { ValidationError, validationErrorSchema } from "@taserjs/router-utils";
|
|
7
|
-
export { TaserApp, TaserRouter, ValidationError, createContext, createTaserApp, honoMw, middleware, t, validationErrorSchema };
|
|
@@ -1,3 +0,0 @@
|
|
|
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, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
|
|
3
|
-
export type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { middleware } from "../define/middleware.js";
|
|
2
|
-
import { honoMw } from "./hono-mw.js";
|
|
3
|
-
import { bodyLimit as bodyLimit$1 } from "hono/body-limit";
|
|
4
|
-
//#region src/middleware/body-limit.ts
|
|
5
|
-
function bodyLimit(...args) {
|
|
6
|
-
return middleware(honoMw(bodyLimit$1(...args)));
|
|
7
|
-
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { bodyLimit };
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=body-limit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"body-limit.js","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,WAAW,OAAO,YAAc,GAAG,IAAI,CAAC,CAAC;AAClD"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { compress as honoCompress } from 'hono/compress';
|
|
2
|
-
export declare function compress(...args: Parameters<typeof honoCompress>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
|
|
3
|
-
export type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;
|