@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
package/README.md
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# @taserjs/router
|
|
2
2
|
|
|
3
|
-
Type-safe
|
|
3
|
+
Type-safe route builder and middleware composition for Taser.js.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
-
**npm:**
|
|
8
|
-
|
|
9
7
|
```bash
|
|
10
8
|
npm install @taserjs/router
|
|
9
|
+
# or
|
|
10
|
+
pnpm add @taserjs/router
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
## Documentation
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Guides and API reference: [taserjs.dev](https://taserjs.dev)
|
|
16
16
|
|
|
17
17
|
## License
|
|
18
18
|
|
|
19
|
-
ISC
|
|
19
|
+
[ISC](https://github.com/taserjs/taserjs/blob/main/LICENSE)
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { t as hono } from "./hono-kDZSomjd.js";
|
|
2
|
+
//#region src/taser.ts
|
|
3
|
+
var TaserBuilder = class {
|
|
4
|
+
_context;
|
|
5
|
+
options;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.options = options ? { ...options } : {};
|
|
8
|
+
}
|
|
9
|
+
basePath(path) {
|
|
10
|
+
this.options.basePath = path;
|
|
11
|
+
return this;
|
|
12
|
+
}
|
|
13
|
+
response(options) {
|
|
14
|
+
this.options.response = {
|
|
15
|
+
...this.options.response,
|
|
16
|
+
...options
|
|
17
|
+
};
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
context(ctxDef) {
|
|
21
|
+
this.options.context = ctxDef;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
notFound(fn) {
|
|
25
|
+
this.options.notFound = fn;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
onError(fn) {
|
|
29
|
+
this.options.onError = fn;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
function defineTaser(options) {
|
|
34
|
+
return new TaserBuilder(options);
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/builder.ts
|
|
38
|
+
function toMiddlewareDefinition(input) {
|
|
39
|
+
if (typeof input === "function") return {
|
|
40
|
+
kind: "middleware",
|
|
41
|
+
handler: input
|
|
42
|
+
};
|
|
43
|
+
return input;
|
|
44
|
+
}
|
|
45
|
+
var MiddlewareBuilder = class {
|
|
46
|
+
kind = "middleware";
|
|
47
|
+
schemas = {};
|
|
48
|
+
layoutId;
|
|
49
|
+
_services;
|
|
50
|
+
_state;
|
|
51
|
+
_params;
|
|
52
|
+
_query;
|
|
53
|
+
_body;
|
|
54
|
+
_layoutId;
|
|
55
|
+
_requires;
|
|
56
|
+
constructor(layoutId) {
|
|
57
|
+
this.layoutId = layoutId;
|
|
58
|
+
this.handler = this.handler.bind(this);
|
|
59
|
+
}
|
|
60
|
+
requires() {
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
params(schema) {
|
|
64
|
+
this.schemas.params = schema;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
query(schema) {
|
|
68
|
+
this.schemas.query = schema;
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
body(schema, mode) {
|
|
72
|
+
this.schemas.body = {
|
|
73
|
+
schema,
|
|
74
|
+
mode
|
|
75
|
+
};
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
handler(arg1, arg2) {
|
|
79
|
+
if (typeof arg1 === "function" && arg2 === void 0) return {
|
|
80
|
+
kind: "middleware",
|
|
81
|
+
layoutId: this.layoutId,
|
|
82
|
+
handler: arg1,
|
|
83
|
+
schemas: Object.keys(this.schemas).length > 0 ? { ...this.schemas } : void 0
|
|
84
|
+
};
|
|
85
|
+
if (typeof arg2 === "function") return Promise.resolve(arg2());
|
|
86
|
+
return async (_args, next) => next();
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
function middleware(arg1, arg2) {
|
|
90
|
+
if (typeof arg1 === "string") {
|
|
91
|
+
if (typeof arg2 === "function") return {
|
|
92
|
+
kind: "middleware",
|
|
93
|
+
layoutId: arg1,
|
|
94
|
+
handler: arg2
|
|
95
|
+
};
|
|
96
|
+
return new MiddlewareBuilder(arg1);
|
|
97
|
+
}
|
|
98
|
+
if (typeof arg1 === "function") return {
|
|
99
|
+
kind: "middleware",
|
|
100
|
+
handler: arg1
|
|
101
|
+
};
|
|
102
|
+
return new MiddlewareBuilder();
|
|
103
|
+
}
|
|
104
|
+
var LayoutBuilder = class {
|
|
105
|
+
kind = "layout";
|
|
106
|
+
path;
|
|
107
|
+
middlewares = [];
|
|
108
|
+
_services;
|
|
109
|
+
_state;
|
|
110
|
+
_params;
|
|
111
|
+
_query;
|
|
112
|
+
_body;
|
|
113
|
+
schemas = {};
|
|
114
|
+
constructor(path) {
|
|
115
|
+
this.path = path;
|
|
116
|
+
}
|
|
117
|
+
pushSchemaMiddleware(schemas) {
|
|
118
|
+
this.middlewares.push({
|
|
119
|
+
kind: "middleware",
|
|
120
|
+
handler: async (_args, next) => next(),
|
|
121
|
+
schemas
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
params(schema) {
|
|
125
|
+
this.schemas.params = schema;
|
|
126
|
+
this.pushSchemaMiddleware({ params: schema });
|
|
127
|
+
return this;
|
|
128
|
+
}
|
|
129
|
+
query(schema) {
|
|
130
|
+
this.schemas.query = schema;
|
|
131
|
+
this.pushSchemaMiddleware({ query: schema });
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
body(schema, mode) {
|
|
135
|
+
this.schemas.body = {
|
|
136
|
+
schema,
|
|
137
|
+
mode
|
|
138
|
+
};
|
|
139
|
+
this.pushSchemaMiddleware({ body: {
|
|
140
|
+
schema,
|
|
141
|
+
mode
|
|
142
|
+
} });
|
|
143
|
+
return this;
|
|
144
|
+
}
|
|
145
|
+
use(middleware) {
|
|
146
|
+
this.middlewares.push(toMiddlewareDefinition(middleware));
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
function layout(path) {
|
|
151
|
+
return new LayoutBuilder(path);
|
|
152
|
+
}
|
|
153
|
+
var RouteValidationBuilder = class {
|
|
154
|
+
method;
|
|
155
|
+
path;
|
|
156
|
+
methods;
|
|
157
|
+
middlewares = [];
|
|
158
|
+
schemas = {};
|
|
159
|
+
constructor(method, path, methods) {
|
|
160
|
+
this.method = method;
|
|
161
|
+
this.path = path;
|
|
162
|
+
this.methods = methods;
|
|
163
|
+
}
|
|
164
|
+
params(schema) {
|
|
165
|
+
this.schemas.params = schema;
|
|
166
|
+
return this;
|
|
167
|
+
}
|
|
168
|
+
query(schema) {
|
|
169
|
+
this.schemas.query = schema;
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
body(schema, mode) {
|
|
173
|
+
this.schemas.body = {
|
|
174
|
+
schema,
|
|
175
|
+
mode
|
|
176
|
+
};
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
returns(map) {
|
|
180
|
+
this.schemas.returns = {
|
|
181
|
+
...this.schemas.returns,
|
|
182
|
+
...map
|
|
183
|
+
};
|
|
184
|
+
return this;
|
|
185
|
+
}
|
|
186
|
+
handler(fn) {
|
|
187
|
+
return {
|
|
188
|
+
kind: "route",
|
|
189
|
+
method: this.method,
|
|
190
|
+
methods: this.methods,
|
|
191
|
+
path: this.path,
|
|
192
|
+
middlewares: [...this.middlewares],
|
|
193
|
+
handler: fn,
|
|
194
|
+
schemas: { ...this.schemas },
|
|
195
|
+
returns: this.schemas.returns ? { ...this.schemas.returns } : void 0
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
var RouteBuilder = class extends RouteValidationBuilder {
|
|
200
|
+
constructor(method, path, methods) {
|
|
201
|
+
super(method, path, methods);
|
|
202
|
+
}
|
|
203
|
+
use(middleware) {
|
|
204
|
+
this.middlewares.push(toMiddlewareDefinition(middleware));
|
|
205
|
+
return this;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
const t = {
|
|
209
|
+
get: (path) => new RouteBuilder("GET", path),
|
|
210
|
+
post: (path) => new RouteBuilder("POST", path),
|
|
211
|
+
put: (path) => new RouteBuilder("PUT", path),
|
|
212
|
+
delete: (path) => new RouteBuilder("DELETE", path),
|
|
213
|
+
patch: (path) => new RouteBuilder("PATCH", path),
|
|
214
|
+
options: (path) => new RouteBuilder("OPTIONS", path),
|
|
215
|
+
query: (path) => new RouteBuilder("QUERY", path),
|
|
216
|
+
all: (path) => new RouteBuilder("ALL", path),
|
|
217
|
+
any: (path, methods) => new RouteBuilder("ANY", path, methods.map((m) => m.toUpperCase())),
|
|
218
|
+
layout,
|
|
219
|
+
middleware,
|
|
220
|
+
hono,
|
|
221
|
+
app: defineTaser
|
|
222
|
+
};
|
|
223
|
+
//#endregion
|
|
224
|
+
export { layout as a, toMiddlewareDefinition as c, RouteValidationBuilder as i, TaserBuilder as l, MiddlewareBuilder as n, middleware as o, RouteBuilder as r, t as s, LayoutBuilder as t, defineTaser as u };
|
|
225
|
+
|
|
226
|
+
//# sourceMappingURL=builder-DYfjARJF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder-DYfjARJF.js","names":[],"sources":["../src/taser.ts","../src/builder.ts"],"sourcesContent":["import type {\n ContextDefinition,\n NotFoundHandler,\n OnErrorHandler,\n ResponseOptions,\n Simplify,\n TaserAppOptions,\n TaserDefinition,\n} from \"./types.js\";\n\nexport class TaserBuilder<TContext = {}> implements TaserDefinition<TContext> {\n readonly _context?: TContext;\n declare readonly $Infer: {\n Context: TContext;\n };\n public readonly options: TaserAppOptions<any>;\n\n constructor(options?: TaserAppOptions<any>) {\n this.options = options ? { ...options } : {};\n }\n\n basePath(path: string): this {\n this.options.basePath = path;\n return this;\n }\n\n response(options: ResponseOptions): this {\n this.options.response = { ...this.options.response, ...options };\n return this;\n }\n\n context<\n TBoot extends Record<string, unknown> = {},\n TRequest extends Record<string, unknown> = {},\n >(ctxDef: ContextDefinition<TBoot, TRequest>): TaserBuilder<Simplify<TBoot & TRequest>> {\n this.options.context = ctxDef;\n return this as unknown as TaserBuilder<Simplify<TBoot & TRequest>>;\n }\n\n notFound(fn: NotFoundHandler<TContext>): this {\n this.options.notFound = fn;\n return this;\n }\n\n onError(fn: OnErrorHandler): this {\n this.options.onError = fn;\n return this;\n }\n}\n\nexport function defineTaser<TContext = {}>(\n options?: TaserAppOptions<TContext>,\n): TaserBuilder<TContext> {\n return new TaserBuilder<TContext>(options);\n}\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { hono } from \"./hono.js\";\nimport { defineTaser } from \"./taser.js\";\nimport type {\n BodyMode,\n ExtractBodyFromMiddleware,\n ExtractLayoutIdFromMiddleware,\n ExtractParamsFromMiddleware,\n ExtractPreconditionsFromMiddleware,\n ExtractQueryFromMiddleware,\n HttpMethod,\n HttpNoBodyMethod,\n InferEffectiveBody,\n InferEffectiveParams,\n InferEffectiveQuery,\n InferLayoutBody,\n InferLayoutBranchParams,\n InferLayoutBranchServices,\n InferLayoutBranchState,\n InferLayoutParams,\n InferLayoutQuery,\n InferLayoutServices,\n InferLayoutState,\n InferMiddlewareArgs,\n InferReturnsResponse,\n InferRouteServices,\n InferRouteState,\n InferServicesFromMw,\n InferStateFromMw,\n LayoutDefinition,\n MiddlewareArgs,\n MiddlewareDefinition,\n MiddlewareHandler,\n MiddlewarePreconditions,\n MiddlewareResponse,\n NextFunction,\n Overwrite,\n RegisteredRoutePath,\n RegisteredLayoutId,\n RouteDefaultParams,\n RouteDefinition,\n RouteHandler,\n RouteSchemas,\n StatusCode,\n ValidateLayoutMiddlewareUse,\n ValidateRouteMiddlewareUse,\n} from \"./types.js\";\n\nexport function toMiddlewareDefinition<TMw>(\n input: TMw,\n): TMw extends MiddlewareDefinition<any, any, any, any, any, any, any>\n ? TMw\n : MiddlewareDefinition<\n InferServicesFromMw<TMw>,\n InferStateFromMw<TMw>,\n ExtractParamsFromMiddleware<TMw>,\n ExtractQueryFromMiddleware<TMw>,\n ExtractBodyFromMiddleware<TMw>,\n ExtractLayoutIdFromMiddleware<TMw>,\n ExtractPreconditionsFromMiddleware<TMw>\n > {\n if (typeof input === \"function\") {\n return {\n kind: \"middleware\",\n handler: input as MiddlewareHandler,\n } as any;\n }\n return input as any;\n}\n\nexport class MiddlewareBuilder<\n TParams = unknown,\n TQuery = unknown,\n TBody = unknown,\n TServices = {},\n TState = {},\n TLayoutId extends string | undefined = undefined,\n TRequires extends MiddlewarePreconditions = {},\n> implements MiddlewareDefinition<TServices, TState, TParams, TQuery, TBody, TLayoutId, TRequires> {\n public readonly kind = \"middleware\" as const;\n public readonly schemas: RouteSchemas = {};\n public readonly layoutId?: string | undefined;\n\n readonly _services?: TServices;\n readonly _state?: TState;\n readonly _params?: TParams;\n readonly _query?: TQuery;\n readonly _body?: TBody;\n readonly _layoutId?: TLayoutId;\n readonly _requires?: TRequires;\n\n constructor(layoutId?: string | undefined) {\n this.layoutId = layoutId;\n this.handler = this.handler.bind(this);\n }\n\n requires<TPreconditions extends MiddlewarePreconditions>(): MiddlewareBuilder<\n TParams,\n TQuery,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires & TPreconditions\n > {\n return this as unknown as MiddlewareBuilder<\n TParams,\n TQuery,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires & TPreconditions\n >;\n }\n\n params<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): MiddlewareBuilder<\n StandardSchemaV1.InferOutput<TSchema>,\n TQuery,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires\n > {\n this.schemas.params = schema;\n return this as unknown as MiddlewareBuilder<\n StandardSchemaV1.InferOutput<TSchema>,\n TQuery,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires\n >;\n }\n\n query<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): MiddlewareBuilder<\n TParams,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires\n > {\n this.schemas.query = schema;\n return this as unknown as MiddlewareBuilder<\n TParams,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires\n >;\n }\n\n body<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n mode?: BodyMode,\n ): MiddlewareBuilder<\n TParams,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>,\n TServices,\n TState,\n TLayoutId,\n TRequires\n > {\n this.schemas.body = { schema, mode };\n return this as unknown as MiddlewareBuilder<\n TParams,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>,\n TServices,\n TState,\n TLayoutId,\n TRequires\n >;\n }\n\n handler(\n args: MiddlewareArgs<any, any, any, any, any>,\n next: NextFunction,\n ):\n | Response\n | Promise<Response>\n | MiddlewareResponse<any, any>\n | Promise<MiddlewareResponse<any, any>>;\n handler<\n F extends (\n args: InferMiddlewareArgs<TLayoutId, TParams, TQuery, TBody, TRequires>,\n next: NextFunction,\n ) => any,\n >(\n fn: F,\n ): MiddlewareDefinition<\n InferServicesFromMw<F>,\n InferStateFromMw<F>,\n TParams,\n TQuery,\n TBody,\n TLayoutId,\n TRequires\n >;\n handler(arg1?: any, arg2?: any): any {\n if (typeof arg1 === \"function\" && arg2 === undefined) {\n return {\n kind: \"middleware\",\n layoutId: this.layoutId,\n handler: arg1 as unknown as MiddlewareHandler,\n schemas: Object.keys(this.schemas).length > 0 ? { ...this.schemas } : undefined,\n };\n }\n if (typeof arg2 === \"function\") {\n return Promise.resolve(arg2());\n }\n return async (_args: any, next: NextFunction) => next();\n }\n}\n\nexport function middleware<\n TLayoutId extends RegisteredLayoutId,\n F extends (\n args: MiddlewareArgs<\n InferLayoutBranchServices<TLayoutId>,\n InferLayoutBranchState<TLayoutId>,\n InferLayoutBranchParams<TLayoutId>\n >,\n next: NextFunction,\n ) => any,\n>(\n layoutId: TLayoutId,\n fn: F,\n): MiddlewareDefinition<\n InferServicesFromMw<F>,\n InferStateFromMw<F>,\n InferLayoutBranchParams<TLayoutId>,\n unknown,\n unknown,\n TLayoutId,\n {}\n>;\nexport function middleware<TLayoutId extends RegisteredLayoutId>(\n layoutId: TLayoutId,\n): MiddlewareBuilder<InferLayoutBranchParams<TLayoutId>, unknown, unknown, {}, {}, TLayoutId, {}>;\nexport function middleware<F extends (args: MiddlewareArgs<{}, {}>, next: NextFunction) => any>(\n fn: F,\n): MiddlewareDefinition<\n InferServicesFromMw<F>,\n InferStateFromMw<F>,\n unknown,\n unknown,\n unknown,\n undefined,\n {}\n>;\nexport function middleware(): MiddlewareBuilder<unknown, unknown, unknown, {}, {}, undefined, {}>;\nexport function middleware(\n arg1?: any,\n arg2?: any,\n):\n | MiddlewareBuilder<any, any, any, any, any, any, any>\n | MiddlewareDefinition<any, any, any, any, any, any, any> {\n if (typeof arg1 === \"string\") {\n if (typeof arg2 === \"function\") {\n return {\n kind: \"middleware\",\n layoutId: arg1,\n handler: arg2 as MiddlewareHandler,\n };\n }\n return new MiddlewareBuilder(arg1);\n }\n if (typeof arg1 === \"function\") {\n return {\n kind: \"middleware\",\n handler: arg1 as MiddlewareHandler,\n };\n }\n return new MiddlewareBuilder();\n}\n\nexport class LayoutBuilder<\n TPath extends string = string,\n TParams = RouteDefaultParams<TPath>,\n TServices = {},\n TState = {},\n TQuery = {},\n TBody = {},\n> implements LayoutDefinition<TPath, TServices, TState, TParams, TQuery, TBody> {\n readonly kind = \"layout\" as const;\n public readonly path: TPath;\n public readonly middlewares: MiddlewareDefinition<any, any, any, any, any>[] = [];\n\n readonly _services?: TServices;\n readonly _state?: TState;\n readonly _params?: TParams;\n readonly _query?: TQuery;\n readonly _body?: TBody;\n\n public readonly schemas: RouteSchemas = {};\n\n constructor(path: TPath) {\n this.path = path;\n }\n\n private pushSchemaMiddleware(schemas: RouteSchemas): void {\n this.middlewares.push({\n kind: \"middleware\",\n handler: async (_args, next) => next(),\n schemas,\n });\n }\n\n params<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): LayoutBuilder<\n TPath,\n Overwrite<TParams, StandardSchemaV1.InferOutput<TSchema>>,\n TServices,\n TState,\n TQuery,\n TBody\n > {\n this.schemas.params = schema;\n this.pushSchemaMiddleware({ params: schema });\n return this as unknown as LayoutBuilder<\n TPath,\n Overwrite<TParams, StandardSchemaV1.InferOutput<TSchema>>,\n TServices,\n TState,\n TQuery,\n TBody\n >;\n }\n\n query<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): LayoutBuilder<\n TPath,\n TParams,\n TServices,\n TState,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody\n > {\n this.schemas.query = schema;\n this.pushSchemaMiddleware({ query: schema });\n return this as unknown as LayoutBuilder<\n TPath,\n TParams,\n TServices,\n TState,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody\n >;\n }\n\n body<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n mode?: BodyMode,\n ): LayoutBuilder<\n TPath,\n TParams,\n TServices,\n TState,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>\n > {\n this.schemas.body = { schema, mode };\n this.pushSchemaMiddleware({ body: { schema, mode } });\n return this as unknown as LayoutBuilder<\n TPath,\n TParams,\n TServices,\n TState,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>\n >;\n }\n\n use<\n TMw extends\n | MiddlewareDefinition<any, any, any, any, any, any, any>\n | ((\n args: MiddlewareArgs<\n InferLayoutServices<TPath> & TServices,\n InferLayoutState<TPath> & TState,\n [keyof InferLayoutParams<TPath>] extends [never]\n ? TParams\n : Overwrite<InferLayoutParams<TPath>, TParams>,\n Overwrite<InferLayoutQuery<TPath>, TQuery>,\n Overwrite<InferLayoutBody<TPath>, TBody>\n >,\n next: NextFunction,\n ) => any),\n >(\n middleware: ValidateLayoutMiddlewareUse<\n TPath,\n [keyof InferLayoutParams<TPath>] extends [never]\n ? TParams\n : Overwrite<InferLayoutParams<TPath>, TParams>,\n Overwrite<InferLayoutQuery<TPath>, TQuery>,\n Overwrite<InferLayoutBody<TPath>, TBody>,\n TServices,\n TState,\n TMw\n >,\n ): LayoutBuilder<\n TPath,\n Overwrite<TParams, ExtractParamsFromMiddleware<TMw>>,\n TServices & InferServicesFromMw<TMw>,\n TState & InferStateFromMw<TMw>,\n Overwrite<TQuery, ExtractQueryFromMiddleware<TMw>>,\n Overwrite<TBody, ExtractBodyFromMiddleware<TMw>>\n > {\n this.middlewares.push(toMiddlewareDefinition(middleware));\n return this as unknown as LayoutBuilder<\n TPath,\n Overwrite<TParams, ExtractParamsFromMiddleware<TMw>>,\n TServices & InferServicesFromMw<TMw>,\n TState & InferStateFromMw<TMw>,\n Overwrite<TQuery, ExtractQueryFromMiddleware<TMw>>,\n Overwrite<TBody, ExtractBodyFromMiddleware<TMw>>\n >;\n }\n}\n\nexport function layout<TPath extends string>(\n path: TPath,\n): LayoutBuilder<TPath, RouteDefaultParams<TPath>> {\n return new LayoutBuilder<TPath, RouteDefaultParams<TPath>>(path);\n}\n\nexport class RouteValidationBuilder<\n TMethod extends HttpMethod = HttpMethod,\n TPath extends string = string,\n TParams = RouteDefaultParams<TPath>,\n TQuery = {},\n TBody = [TMethod] extends [HttpNoBodyMethod] ? never : {},\n TRouteServices = {},\n TRouteState = {},\n TReturns = undefined,\n TParamsIn = TParams,\n TQueryIn = TQuery,\n TBodyIn = TBody,\n> {\n public readonly middlewares: MiddlewareDefinition<any, any, any, any, any, any, any>[] = [];\n public readonly schemas: RouteSchemas = {};\n\n constructor(\n public readonly method: TMethod,\n public readonly path: TPath,\n public readonly methods?: readonly string[] | undefined,\n ) {}\n\n params<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): RouteValidationBuilder<\n TMethod,\n TPath,\n StandardSchemaV1.InferOutput<TSchema>,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n StandardSchemaV1.InferInput<TSchema>,\n TQueryIn,\n TBodyIn\n > {\n this.schemas.params = schema;\n return this as unknown as RouteValidationBuilder<\n TMethod,\n TPath,\n StandardSchemaV1.InferOutput<TSchema>,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n StandardSchemaV1.InferInput<TSchema>,\n TQueryIn,\n TBodyIn\n >;\n }\n\n query<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n StandardSchemaV1.InferInput<TSchema>,\n TBodyIn\n > {\n this.schemas.query = schema;\n return this as unknown as RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n StandardSchemaV1.InferInput<TSchema>,\n TBodyIn\n >;\n }\n\n body<TSchema extends StandardSchemaV1>(\n this: [TMethod] extends [HttpNoBodyMethod] ? never : any,\n schema: TSchema,\n mode?: BodyMode,\n ): RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n TQueryIn,\n StandardSchemaV1.InferInput<TSchema>\n > {\n (this as any).schemas.body = { schema, mode };\n return this as unknown as RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n TQueryIn,\n StandardSchemaV1.InferInput<TSchema>\n >;\n }\n\n returns<const TMap extends Record<StatusCode, StandardSchemaV1>>(\n map: TMap,\n ): RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns extends Record<StatusCode, StandardSchemaV1> ? TReturns & TMap : TMap,\n TParamsIn,\n TQueryIn,\n TBodyIn\n > {\n this.schemas.returns = { ...this.schemas.returns, ...map };\n return this as unknown as RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns extends Record<StatusCode, StandardSchemaV1> ? TReturns & TMap : TMap,\n TParamsIn,\n TQueryIn,\n TBodyIn\n >;\n }\n\n handler<\n TReturn extends ([TReturns] extends [undefined]\n ? any\n : [TReturns] extends [never]\n ? any\n : unknown extends TReturns\n ? any\n : InferReturnsResponse<TReturns> | Promise<InferReturnsResponse<TReturns>>),\n >(\n fn: RouteHandler<\n InferEffectiveParams<TPath, TMethod, TParams>,\n InferEffectiveQuery<TPath, TMethod, TQuery>,\n InferEffectiveBody<TPath, TMethod, TBody>,\n InferRouteServices<TPath, TMethod> & TRouteServices,\n InferRouteState<TPath, TMethod> & TRouteState,\n TReturn\n >,\n ): RouteDefinition<\n TPath,\n TParams,\n TQuery,\n TBody,\n TReturns,\n TReturn,\n TParamsIn,\n TQueryIn,\n TBodyIn\n > {\n return {\n kind: \"route\",\n method: this.method,\n methods: this.methods,\n path: this.path,\n middlewares: [...this.middlewares],\n handler: fn as RouteHandler<any, any, any, any, any>,\n schemas: { ...this.schemas },\n returns: this.schemas.returns ? { ...this.schemas.returns } : undefined,\n } as unknown as RouteDefinition<\n TPath,\n TParams,\n TQuery,\n TBody,\n TReturns,\n TReturn,\n TParamsIn,\n TQueryIn,\n TBodyIn\n >;\n }\n}\n\nexport class RouteBuilder<\n TMethod extends HttpMethod = HttpMethod,\n TPath extends string = string,\n TParams = RouteDefaultParams<TPath>,\n TQuery = {},\n TBody = [TMethod] extends [HttpNoBodyMethod] ? never : {},\n TRouteServices = {},\n TRouteState = {},\n TReturns = undefined,\n TParamsIn = TParams,\n TQueryIn = TQuery,\n TBodyIn = TBody,\n> extends RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n TQueryIn,\n TBodyIn\n> {\n constructor(method: TMethod, path: TPath, methods?: readonly string[] | undefined) {\n super(method, path, methods);\n }\n\n use<\n TMw extends\n | MiddlewareDefinition<any, any, any, any, any, any, any>\n | ((\n args: MiddlewareArgs<\n InferRouteServices<TPath, TMethod> & TRouteServices,\n InferRouteState<TPath, TMethod> & TRouteState,\n InferEffectiveParams<TPath, TMethod, TParams>,\n InferEffectiveQuery<TPath, TMethod, TQuery>,\n InferEffectiveBody<TPath, TMethod, TBody>\n >,\n next: NextFunction,\n ) => any),\n >(\n middleware: ValidateRouteMiddlewareUse<\n TPath,\n TMethod,\n InferEffectiveParams<TPath, TMethod, TParams>,\n InferEffectiveQuery<TPath, TMethod, TQuery>,\n InferEffectiveBody<TPath, TMethod, TBody>,\n TRouteServices,\n TRouteState,\n TMw\n >,\n ): RouteBuilder<\n TMethod,\n TPath,\n Overwrite<TParams, ExtractParamsFromMiddleware<TMw>>,\n Overwrite<TQuery, ExtractQueryFromMiddleware<TMw>>,\n Overwrite<TBody, ExtractBodyFromMiddleware<TMw>>,\n TRouteServices & InferServicesFromMw<TMw>,\n TRouteState & InferStateFromMw<TMw>,\n TReturns,\n TParamsIn,\n TQueryIn,\n TBodyIn\n > {\n this.middlewares.push(toMiddlewareDefinition(middleware));\n return this as unknown as RouteBuilder<\n TMethod,\n TPath,\n Overwrite<TParams, ExtractParamsFromMiddleware<TMw>>,\n Overwrite<TQuery, ExtractQueryFromMiddleware<TMw>>,\n Overwrite<TBody, ExtractBodyFromMiddleware<TMw>>,\n TRouteServices & InferServicesFromMw<TMw>,\n TRouteState & InferStateFromMw<TMw>,\n TReturns,\n TParamsIn,\n TQueryIn,\n TBodyIn\n >;\n }\n}\n\nexport const t = {\n get: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"GET\", TPath>(\"GET\", path),\n post: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"POST\", TPath>(\"POST\", path),\n put: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"PUT\", TPath>(\"PUT\", path),\n delete: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"DELETE\", TPath>(\"DELETE\", path),\n patch: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"PATCH\", TPath>(\"PATCH\", path),\n options: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"OPTIONS\", TPath>(\"OPTIONS\", path),\n query: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"QUERY\", TPath>(\"QUERY\", path),\n all: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"ALL\", TPath>(\"ALL\", path),\n any: <TPath extends RegisteredRoutePath, const TMethods extends readonly string[]>(\n path: TPath,\n methods: TMethods,\n ) =>\n new RouteBuilder<\"ANY\", TPath>(\n \"ANY\",\n path,\n methods.map((m) => m.toUpperCase()),\n ),\n layout,\n middleware,\n hono,\n app: defineTaser,\n};\n"],"mappings":";;AAUA,IAAa,eAAb,MAA8E;CAC5E;CAIA;CAEA,YAAY,SAAgC;EAC1C,KAAK,UAAU,UAAU,EAAE,GAAG,QAAQ,IAAI,CAAC;CAC7C;CAEA,SAAS,MAAoB;EAC3B,KAAK,QAAQ,WAAW;EACxB,OAAO;CACT;CAEA,SAAS,SAAgC;EACvC,KAAK,QAAQ,WAAW;GAAE,GAAG,KAAK,QAAQ;GAAU,GAAG;EAAQ;EAC/D,OAAO;CACT;CAEA,QAGE,QAAsF;EACtF,KAAK,QAAQ,UAAU;EACvB,OAAO;CACT;CAEA,SAAS,IAAqC;EAC5C,KAAK,QAAQ,WAAW;EACxB,OAAO;CACT;CAEA,QAAQ,IAA0B;EAChC,KAAK,QAAQ,UAAU;EACvB,OAAO;CACT;AACF;AAEA,SAAgB,YACd,SACwB;CACxB,OAAO,IAAI,aAAuB,OAAO;AAC3C;;;ACNA,SAAgB,uBACd,OAWI;CACJ,IAAI,OAAO,UAAU,YACnB,OAAO;EACL,MAAM;EACN,SAAS;CACX;CAEF,OAAO;AACT;AAEA,IAAa,oBAAb,MAQmG;CACjG,OAAuB;CACvB,UAAwC,CAAC;CACzC;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,UAA+B;EACzC,KAAK,WAAW;EAChB,KAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;CACvC;CAEA,WAQE;EACA,OAAO;CAST;CAEA,OACE,QASA;EACA,KAAK,QAAQ,SAAS;EACtB,OAAO;CAST;CAEA,MACE,QASA;EACA,KAAK,QAAQ,QAAQ;EACrB,OAAO;CAST;CAEA,KACE,QACA,MASA;EACA,KAAK,QAAQ,OAAO;GAAE;GAAQ;EAAK;EACnC,OAAO;CAST;CA0BA,QAAQ,MAAY,MAAiB;EACnC,IAAI,OAAO,SAAS,cAAc,SAAS,KAAA,GACzC,OAAO;GACL,MAAM;GACN,UAAU,KAAK;GACf,SAAS;GACT,SAAS,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,SAAS,IAAI,EAAE,GAAG,KAAK,QAAQ,IAAI,KAAA;EACxE;EAEF,IAAI,OAAO,SAAS,YAClB,OAAO,QAAQ,QAAQ,KAAK,CAAC;EAE/B,OAAO,OAAO,OAAY,SAAuB,KAAK;CACxD;AACF;AAuCA,SAAgB,WACd,MACA,MAG0D;CAC1D,IAAI,OAAO,SAAS,UAAU;EAC5B,IAAI,OAAO,SAAS,YAClB,OAAO;GACL,MAAM;GACN,UAAU;GACV,SAAS;EACX;EAEF,OAAO,IAAI,kBAAkB,IAAI;CACnC;CACA,IAAI,OAAO,SAAS,YAClB,OAAO;EACL,MAAM;EACN,SAAS;CACX;CAEF,OAAO,IAAI,kBAAkB;AAC/B;AAEA,IAAa,gBAAb,MAOgF;CAC9E,OAAgB;CAChB;CACA,cAA+E,CAAC;CAEhF;CACA;CACA;CACA;CACA;CAEA,UAAwC,CAAC;CAEzC,YAAY,MAAa;EACvB,KAAK,OAAO;CACd;CAEA,qBAA6B,SAA6B;EACxD,KAAK,YAAY,KAAK;GACpB,MAAM;GACN,SAAS,OAAO,OAAO,SAAS,KAAK;GACrC;EACF,CAAC;CACH;CAEA,OACE,QAQA;EACA,KAAK,QAAQ,SAAS;EACtB,KAAK,qBAAqB,EAAE,QAAQ,OAAO,CAAC;EAC5C,OAAO;CAQT;CAEA,MACE,QAQA;EACA,KAAK,QAAQ,QAAQ;EACrB,KAAK,qBAAqB,EAAE,OAAO,OAAO,CAAC;EAC3C,OAAO;CAQT;CAEA,KACE,QACA,MAQA;EACA,KAAK,QAAQ,OAAO;GAAE;GAAQ;EAAK;EACnC,KAAK,qBAAqB,EAAE,MAAM;GAAE;GAAQ;EAAK,EAAE,CAAC;EACpD,OAAO;CAQT;CAEA,IAgBE,YAkBA;EACA,KAAK,YAAY,KAAK,uBAAuB,UAAU,CAAC;EACxD,OAAO;CAQT;AACF;AAEA,SAAgB,OACd,MACiD;CACjD,OAAO,IAAI,cAAgD,IAAI;AACjE;AAEA,IAAa,yBAAb,MAYE;CAKkB;CACA;CACA;CANlB,cAAyF,CAAC;CAC1F,UAAwC,CAAC;CAEzC,YACE,QACA,MACA,SACA;EAHgB,KAAA,SAAA;EACA,KAAA,OAAA;EACA,KAAA,UAAA;CACf;CAEH,OACE,QAaA;EACA,KAAK,QAAQ,SAAS;EACtB,OAAO;CAaT;CAEA,MACE,QAaA;EACA,KAAK,QAAQ,QAAQ;EACrB,OAAO;CAaT;CAEA,KAEE,QACA,MAaA;EACA,KAAc,QAAQ,OAAO;GAAE;GAAQ;EAAK;EAC5C,OAAO;CAaT;CAEA,QACE,KAaA;EACA,KAAK,QAAQ,UAAU;GAAE,GAAG,KAAK,QAAQ;GAAS,GAAG;EAAI;EACzD,OAAO;CAaT;CAEA,QASE,IAkBA;EACA,OAAO;GACL,MAAM;GACN,QAAQ,KAAK;GACb,SAAS,KAAK;GACd,MAAM,KAAK;GACX,aAAa,CAAC,GAAG,KAAK,WAAW;GACjC,SAAS;GACT,SAAS,EAAE,GAAG,KAAK,QAAQ;GAC3B,SAAS,KAAK,QAAQ,UAAU,EAAE,GAAG,KAAK,QAAQ,QAAQ,IAAI,KAAA;EAChE;CAWF;AACF;AAEA,IAAa,eAAb,cAYU,uBAYR;CACA,YAAY,QAAiB,MAAa,SAAyC;EACjF,MAAM,QAAQ,MAAM,OAAO;CAC7B;CAEA,IAcE,YAsBA;EACA,KAAK,YAAY,KAAK,uBAAuB,UAAU,CAAC;EACxD,OAAO;CAaT;AACF;AAEA,MAAa,IAAI;CACf,MAAyC,SACvC,IAAI,aAA2B,OAAO,IAAI;CAC5C,OAA0C,SACxC,IAAI,aAA4B,QAAQ,IAAI;CAC9C,MAAyC,SACvC,IAAI,aAA2B,OAAO,IAAI;CAC5C,SAA4C,SAC1C,IAAI,aAA8B,UAAU,IAAI;CAClD,QAA2C,SACzC,IAAI,aAA6B,SAAS,IAAI;CAChD,UAA6C,SAC3C,IAAI,aAA+B,WAAW,IAAI;CACpD,QAA2C,SACzC,IAAI,aAA6B,SAAS,IAAI;CAChD,MAAyC,SACvC,IAAI,aAA2B,OAAO,IAAI;CAC5C,MACE,MACA,YAEA,IAAI,aACF,OACA,MACA,QAAQ,KAAK,MAAM,EAAE,YAAY,CAAC,CACpC;CACF;CACA;CACA;CACA,KAAK;AACP"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
const require_hono = require("./hono-Ddk3waH-.cjs");
|
|
2
|
+
//#region src/taser.ts
|
|
3
|
+
var TaserBuilder = class {
|
|
4
|
+
_context;
|
|
5
|
+
options;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.options = options ? { ...options } : {};
|
|
8
|
+
}
|
|
9
|
+
basePath(path) {
|
|
10
|
+
this.options.basePath = path;
|
|
11
|
+
return this;
|
|
12
|
+
}
|
|
13
|
+
response(options) {
|
|
14
|
+
this.options.response = {
|
|
15
|
+
...this.options.response,
|
|
16
|
+
...options
|
|
17
|
+
};
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
context(ctxDef) {
|
|
21
|
+
this.options.context = ctxDef;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
notFound(fn) {
|
|
25
|
+
this.options.notFound = fn;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
onError(fn) {
|
|
29
|
+
this.options.onError = fn;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
function defineTaser(options) {
|
|
34
|
+
return new TaserBuilder(options);
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/builder.ts
|
|
38
|
+
function toMiddlewareDefinition(input) {
|
|
39
|
+
if (typeof input === "function") return {
|
|
40
|
+
kind: "middleware",
|
|
41
|
+
handler: input
|
|
42
|
+
};
|
|
43
|
+
return input;
|
|
44
|
+
}
|
|
45
|
+
var MiddlewareBuilder = class {
|
|
46
|
+
kind = "middleware";
|
|
47
|
+
schemas = {};
|
|
48
|
+
layoutId;
|
|
49
|
+
_services;
|
|
50
|
+
_state;
|
|
51
|
+
_params;
|
|
52
|
+
_query;
|
|
53
|
+
_body;
|
|
54
|
+
_layoutId;
|
|
55
|
+
_requires;
|
|
56
|
+
constructor(layoutId) {
|
|
57
|
+
this.layoutId = layoutId;
|
|
58
|
+
this.handler = this.handler.bind(this);
|
|
59
|
+
}
|
|
60
|
+
requires() {
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
params(schema) {
|
|
64
|
+
this.schemas.params = schema;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
query(schema) {
|
|
68
|
+
this.schemas.query = schema;
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
body(schema, mode) {
|
|
72
|
+
this.schemas.body = {
|
|
73
|
+
schema,
|
|
74
|
+
mode
|
|
75
|
+
};
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
handler(arg1, arg2) {
|
|
79
|
+
if (typeof arg1 === "function" && arg2 === void 0) return {
|
|
80
|
+
kind: "middleware",
|
|
81
|
+
layoutId: this.layoutId,
|
|
82
|
+
handler: arg1,
|
|
83
|
+
schemas: Object.keys(this.schemas).length > 0 ? { ...this.schemas } : void 0
|
|
84
|
+
};
|
|
85
|
+
if (typeof arg2 === "function") return Promise.resolve(arg2());
|
|
86
|
+
return async (_args, next) => next();
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
function middleware(arg1, arg2) {
|
|
90
|
+
if (typeof arg1 === "string") {
|
|
91
|
+
if (typeof arg2 === "function") return {
|
|
92
|
+
kind: "middleware",
|
|
93
|
+
layoutId: arg1,
|
|
94
|
+
handler: arg2
|
|
95
|
+
};
|
|
96
|
+
return new MiddlewareBuilder(arg1);
|
|
97
|
+
}
|
|
98
|
+
if (typeof arg1 === "function") return {
|
|
99
|
+
kind: "middleware",
|
|
100
|
+
handler: arg1
|
|
101
|
+
};
|
|
102
|
+
return new MiddlewareBuilder();
|
|
103
|
+
}
|
|
104
|
+
var LayoutBuilder = class {
|
|
105
|
+
kind = "layout";
|
|
106
|
+
path;
|
|
107
|
+
middlewares = [];
|
|
108
|
+
_services;
|
|
109
|
+
_state;
|
|
110
|
+
_params;
|
|
111
|
+
_query;
|
|
112
|
+
_body;
|
|
113
|
+
schemas = {};
|
|
114
|
+
constructor(path) {
|
|
115
|
+
this.path = path;
|
|
116
|
+
}
|
|
117
|
+
pushSchemaMiddleware(schemas) {
|
|
118
|
+
this.middlewares.push({
|
|
119
|
+
kind: "middleware",
|
|
120
|
+
handler: async (_args, next) => next(),
|
|
121
|
+
schemas
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
params(schema) {
|
|
125
|
+
this.schemas.params = schema;
|
|
126
|
+
this.pushSchemaMiddleware({ params: schema });
|
|
127
|
+
return this;
|
|
128
|
+
}
|
|
129
|
+
query(schema) {
|
|
130
|
+
this.schemas.query = schema;
|
|
131
|
+
this.pushSchemaMiddleware({ query: schema });
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
body(schema, mode) {
|
|
135
|
+
this.schemas.body = {
|
|
136
|
+
schema,
|
|
137
|
+
mode
|
|
138
|
+
};
|
|
139
|
+
this.pushSchemaMiddleware({ body: {
|
|
140
|
+
schema,
|
|
141
|
+
mode
|
|
142
|
+
} });
|
|
143
|
+
return this;
|
|
144
|
+
}
|
|
145
|
+
use(middleware) {
|
|
146
|
+
this.middlewares.push(toMiddlewareDefinition(middleware));
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
function layout(path) {
|
|
151
|
+
return new LayoutBuilder(path);
|
|
152
|
+
}
|
|
153
|
+
var RouteValidationBuilder = class {
|
|
154
|
+
method;
|
|
155
|
+
path;
|
|
156
|
+
methods;
|
|
157
|
+
middlewares = [];
|
|
158
|
+
schemas = {};
|
|
159
|
+
constructor(method, path, methods) {
|
|
160
|
+
this.method = method;
|
|
161
|
+
this.path = path;
|
|
162
|
+
this.methods = methods;
|
|
163
|
+
}
|
|
164
|
+
params(schema) {
|
|
165
|
+
this.schemas.params = schema;
|
|
166
|
+
return this;
|
|
167
|
+
}
|
|
168
|
+
query(schema) {
|
|
169
|
+
this.schemas.query = schema;
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
body(schema, mode) {
|
|
173
|
+
this.schemas.body = {
|
|
174
|
+
schema,
|
|
175
|
+
mode
|
|
176
|
+
};
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
returns(map) {
|
|
180
|
+
this.schemas.returns = {
|
|
181
|
+
...this.schemas.returns,
|
|
182
|
+
...map
|
|
183
|
+
};
|
|
184
|
+
return this;
|
|
185
|
+
}
|
|
186
|
+
handler(fn) {
|
|
187
|
+
return {
|
|
188
|
+
kind: "route",
|
|
189
|
+
method: this.method,
|
|
190
|
+
methods: this.methods,
|
|
191
|
+
path: this.path,
|
|
192
|
+
middlewares: [...this.middlewares],
|
|
193
|
+
handler: fn,
|
|
194
|
+
schemas: { ...this.schemas },
|
|
195
|
+
returns: this.schemas.returns ? { ...this.schemas.returns } : void 0
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
var RouteBuilder = class extends RouteValidationBuilder {
|
|
200
|
+
constructor(method, path, methods) {
|
|
201
|
+
super(method, path, methods);
|
|
202
|
+
}
|
|
203
|
+
use(middleware) {
|
|
204
|
+
this.middlewares.push(toMiddlewareDefinition(middleware));
|
|
205
|
+
return this;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
const t = {
|
|
209
|
+
get: (path) => new RouteBuilder("GET", path),
|
|
210
|
+
post: (path) => new RouteBuilder("POST", path),
|
|
211
|
+
put: (path) => new RouteBuilder("PUT", path),
|
|
212
|
+
delete: (path) => new RouteBuilder("DELETE", path),
|
|
213
|
+
patch: (path) => new RouteBuilder("PATCH", path),
|
|
214
|
+
options: (path) => new RouteBuilder("OPTIONS", path),
|
|
215
|
+
query: (path) => new RouteBuilder("QUERY", path),
|
|
216
|
+
all: (path) => new RouteBuilder("ALL", path),
|
|
217
|
+
any: (path, methods) => new RouteBuilder("ANY", path, methods.map((m) => m.toUpperCase())),
|
|
218
|
+
layout,
|
|
219
|
+
middleware,
|
|
220
|
+
hono: require_hono.hono,
|
|
221
|
+
app: defineTaser
|
|
222
|
+
};
|
|
223
|
+
//#endregion
|
|
224
|
+
Object.defineProperty(exports, "LayoutBuilder", {
|
|
225
|
+
enumerable: true,
|
|
226
|
+
get: function() {
|
|
227
|
+
return LayoutBuilder;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
Object.defineProperty(exports, "MiddlewareBuilder", {
|
|
231
|
+
enumerable: true,
|
|
232
|
+
get: function() {
|
|
233
|
+
return MiddlewareBuilder;
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
Object.defineProperty(exports, "RouteBuilder", {
|
|
237
|
+
enumerable: true,
|
|
238
|
+
get: function() {
|
|
239
|
+
return RouteBuilder;
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
Object.defineProperty(exports, "RouteValidationBuilder", {
|
|
243
|
+
enumerable: true,
|
|
244
|
+
get: function() {
|
|
245
|
+
return RouteValidationBuilder;
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
Object.defineProperty(exports, "TaserBuilder", {
|
|
249
|
+
enumerable: true,
|
|
250
|
+
get: function() {
|
|
251
|
+
return TaserBuilder;
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
Object.defineProperty(exports, "defineTaser", {
|
|
255
|
+
enumerable: true,
|
|
256
|
+
get: function() {
|
|
257
|
+
return defineTaser;
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
Object.defineProperty(exports, "layout", {
|
|
261
|
+
enumerable: true,
|
|
262
|
+
get: function() {
|
|
263
|
+
return layout;
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
Object.defineProperty(exports, "middleware", {
|
|
267
|
+
enumerable: true,
|
|
268
|
+
get: function() {
|
|
269
|
+
return middleware;
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
Object.defineProperty(exports, "t", {
|
|
273
|
+
enumerable: true,
|
|
274
|
+
get: function() {
|
|
275
|
+
return t;
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
Object.defineProperty(exports, "toMiddlewareDefinition", {
|
|
279
|
+
enumerable: true,
|
|
280
|
+
get: function() {
|
|
281
|
+
return toMiddlewareDefinition;
|
|
282
|
+
}
|
|
283
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
let hono = require("hono");
|
|
2
|
+
let _taserjs_utils = require("@taserjs/utils");
|
|
3
|
+
//#region src/hono.ts
|
|
4
|
+
function hono$1(honoMw, refine) {
|
|
5
|
+
return {
|
|
6
|
+
kind: "middleware",
|
|
7
|
+
handler: async (args, next) => {
|
|
8
|
+
let c = args.ctx.context;
|
|
9
|
+
if (!c) {
|
|
10
|
+
c = new hono.Context(args.req.raw);
|
|
11
|
+
args.ctx.context = c;
|
|
12
|
+
}
|
|
13
|
+
let nextCalled = false;
|
|
14
|
+
let downstreamResponse;
|
|
15
|
+
const honoNext = async () => {
|
|
16
|
+
nextCalled = true;
|
|
17
|
+
c.res;
|
|
18
|
+
downstreamResponse = refine ? await refine(c, next) : await next();
|
|
19
|
+
(0, _taserjs_utils.mergeResponseCookies)(c, downstreamResponse);
|
|
20
|
+
};
|
|
21
|
+
let result;
|
|
22
|
+
try {
|
|
23
|
+
result = await honoMw(c, honoNext);
|
|
24
|
+
} catch (err) {
|
|
25
|
+
if (typeof err?.getResponse === "function") return err.getResponse();
|
|
26
|
+
if (err?.res instanceof Response) return err.res;
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
29
|
+
if (result instanceof Response) return result;
|
|
30
|
+
if (nextCalled) return c.res ?? downstreamResponse;
|
|
31
|
+
if (c.res instanceof Response) return c.res;
|
|
32
|
+
throw new Error("Hono middleware did not call next() or return a Response");
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
Object.defineProperty(exports, "hono", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function() {
|
|
40
|
+
return hono$1;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Context } from "hono";
|
|
2
|
+
import { mergeResponseCookies } from "@taserjs/utils";
|
|
3
|
+
//#region src/hono.ts
|
|
4
|
+
function hono(honoMw, refine) {
|
|
5
|
+
return {
|
|
6
|
+
kind: "middleware",
|
|
7
|
+
handler: async (args, next) => {
|
|
8
|
+
let c = args.ctx.context;
|
|
9
|
+
if (!c) {
|
|
10
|
+
c = new Context(args.req.raw);
|
|
11
|
+
args.ctx.context = c;
|
|
12
|
+
}
|
|
13
|
+
let nextCalled = false;
|
|
14
|
+
let downstreamResponse;
|
|
15
|
+
const honoNext = async () => {
|
|
16
|
+
nextCalled = true;
|
|
17
|
+
c.res;
|
|
18
|
+
downstreamResponse = refine ? await refine(c, next) : await next();
|
|
19
|
+
mergeResponseCookies(c, downstreamResponse);
|
|
20
|
+
};
|
|
21
|
+
let result;
|
|
22
|
+
try {
|
|
23
|
+
result = await honoMw(c, honoNext);
|
|
24
|
+
} catch (err) {
|
|
25
|
+
if (typeof err?.getResponse === "function") return err.getResponse();
|
|
26
|
+
if (err?.res instanceof Response) return err.res;
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
29
|
+
if (result instanceof Response) return result;
|
|
30
|
+
if (nextCalled) return c.res ?? downstreamResponse;
|
|
31
|
+
if (c.res instanceof Response) return c.res;
|
|
32
|
+
throw new Error("Hono middleware did not call next() or return a Response");
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { hono as t };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=hono-kDZSomjd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-kDZSomjd.js","names":[],"sources":["../src/hono.ts"],"sourcesContent":["import { Context } from \"hono\";\nimport type { MiddlewareHandler as HonoMiddlewareHandler, Next as HonoNext } from \"hono\";\nimport { mergeResponseCookies } from \"@taserjs/utils\";\nimport type {\n DistributeServices,\n DistributeState,\n MiddlewareDefinition,\n MiddlewareResponse,\n NextFunction,\n} from \"./types.js\";\n\nexport function hono<\n R extends\n | Response\n | Promise<Response>\n | MiddlewareResponse<any, any>\n | Promise<MiddlewareResponse<any, any>> = Promise<Response>,\n>(\n honoMw: HonoMiddlewareHandler,\n refine?: (c: Context, next: NextFunction) => R,\n): MiddlewareDefinition<\n DistributeServices<Awaited<R>>,\n DistributeState<Awaited<R>>,\n unknown,\n unknown,\n unknown\n> {\n return {\n kind: \"middleware\",\n handler: async (args, next) => {\n let c = (args.ctx as Record<string, unknown>).context as Context | undefined;\n if (!c) {\n c = new Context(args.req.raw);\n (args.ctx as Record<string, unknown>).context = c;\n }\n\n let nextCalled = false;\n let downstreamResponse: Response | undefined;\n\n const honoNext: HonoNext = async () => {\n nextCalled = true;\n void c.res;\n downstreamResponse = refine ? await refine(c, next) : await next();\n mergeResponseCookies(c, downstreamResponse);\n };\n\n let result: Response | void;\n try {\n result = await honoMw(c, honoNext);\n } catch (err: any) {\n if (typeof err?.getResponse === \"function\") {\n return err.getResponse();\n }\n if (err?.res instanceof Response) {\n return err.res;\n }\n throw err;\n }\n\n if (result instanceof Response) {\n return result;\n }\n\n if (nextCalled) {\n return c.res ?? downstreamResponse!;\n }\n\n if (c.res instanceof Response) {\n return c.res;\n }\n\n throw new Error(\"Hono middleware did not call next() or return a Response\");\n },\n };\n}\n"],"mappings":";;;AAWA,SAAgB,KAOd,QACA,QAOA;CACA,OAAO;EACL,MAAM;EACN,SAAS,OAAO,MAAM,SAAS;GAC7B,IAAI,IAAK,KAAK,IAAgC;GAC9C,IAAI,CAAC,GAAG;IACN,IAAI,IAAI,QAAQ,KAAK,IAAI,GAAG;IAC5B,KAAM,IAAgC,UAAU;GAClD;GAEA,IAAI,aAAa;GACjB,IAAI;GAEJ,MAAM,WAAqB,YAAY;IACrC,aAAa;IACb,EAAO;IACP,qBAAqB,SAAS,MAAM,OAAO,GAAG,IAAI,IAAI,MAAM,KAAK;IACjE,qBAAqB,GAAG,kBAAkB;GAC5C;GAEA,IAAI;GACJ,IAAI;IACF,SAAS,MAAM,OAAO,GAAG,QAAQ;GACnC,SAAS,KAAU;IACjB,IAAI,OAAO,KAAK,gBAAgB,YAC9B,OAAO,IAAI,YAAY;IAEzB,IAAI,KAAK,eAAe,UACtB,OAAO,IAAI;IAEb,MAAM;GACR;GAEA,IAAI,kBAAkB,UACpB,OAAO;GAGT,IAAI,YACF,OAAO,EAAE,OAAO;GAGlB,IAAI,EAAE,eAAe,UACnB,OAAO,EAAE;GAGX,MAAM,IAAI,MAAM,0DAA0D;EAC5E;CACF;AACF"}
|