@asenajs/hono-adapter 3.1.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/lib/HonoContextWrapper.d.ts +17 -1
- package/dist/lib/HonoContextWrapper.js +47 -3
- package/dist/lib/HonoContextWrapper.js.map +1 -1
- package/dist/lib/middlewares/CorsMiddleware.d.ts +7 -0
- package/dist/lib/middlewares/CorsMiddleware.js +14 -1
- package/dist/lib/middlewares/CorsMiddleware.js.map +1 -1
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Asena Hono Adapter
|
|
2
2
|
|
|
3
|
-
[](https://github.com/AsenaJs/hono-adapter)
|
|
4
|
+
[](https://bun.sh)
|
|
5
5
|
|
|
6
6
|
HTTP and WebSocket adapter implementation based on Hono web framework for Asena.js.
|
|
7
7
|
|
|
@@ -17,8 +17,8 @@ HTTP and WebSocket adapter implementation based on Hono web framework for Asena.
|
|
|
17
17
|
|
|
18
18
|
## Requirements
|
|
19
19
|
|
|
20
|
-
- [Bun](https://bun.sh) v1.
|
|
21
|
-
- [@asenajs/asena](https://github.com/AsenaJs/Asena) v0.
|
|
20
|
+
- [Bun](https://bun.sh) v1.4 or higher
|
|
21
|
+
- [@asenajs/asena](https://github.com/AsenaJs/Asena) v0.11.0 or higher (peer dependency)
|
|
22
22
|
- [Hono](https://hono.dev) v4.12.9 or higher (peer dependency)
|
|
23
23
|
- [Zod](https://zod.dev) v4.3.6 or higher (peer dependency)
|
|
24
24
|
- TypeScript v5.8.2 or above
|
|
@@ -12,6 +12,14 @@ export declare class HonoContextWrapper implements AsenaContext<HonoRequest<any,
|
|
|
12
12
|
get routePattern(): string | undefined;
|
|
13
13
|
get headers(): Record<string, string>;
|
|
14
14
|
getArrayBuffer(): Promise<ArrayBuffer>;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the validated form data when the route declares a `form` validator, the raw parsed
|
|
17
|
+
* body otherwise.
|
|
18
|
+
*
|
|
19
|
+
* Same reasoning as {@link getBody}, one representation over: `zValidator` collapses repeated
|
|
20
|
+
* keys into arrays and applies coercions into `req.valid('form')`, while `parseBody()` without
|
|
21
|
+
* options is last-value-wins - so the handler read a shape the schema had already replaced.
|
|
22
|
+
*/
|
|
15
23
|
getParseBody(): Promise<any>;
|
|
16
24
|
getBlob(): Promise<Blob>;
|
|
17
25
|
getFormData(): Promise<FormData>;
|
|
@@ -29,7 +37,7 @@ export declare class HonoContextWrapper implements AsenaContext<HonoRequest<any,
|
|
|
29
37
|
* Routes without a validator are unaffected - `valid('json')` is undefined and we fall through.
|
|
30
38
|
*/
|
|
31
39
|
getBody<T>(): Promise<T>;
|
|
32
|
-
getQuery(query: string): Promise<string>;
|
|
40
|
+
getQuery(query: string): Promise<string | undefined>;
|
|
33
41
|
getQueryAll(query: string): Promise<string[]>;
|
|
34
42
|
getAllQueries(): Record<string, string | string[]>;
|
|
35
43
|
send(data: string | any, statusOrOptions?: SendOptions | number): Response;
|
|
@@ -37,7 +45,15 @@ export declare class HonoContextWrapper implements AsenaContext<HonoRequest<any,
|
|
|
37
45
|
setCookie(name: string, value: string, options?: CookieExtra<CookieOptions>): Promise<void>;
|
|
38
46
|
deleteCookie(name: string, options?: CookieExtra<CookieOptions>): Promise<void>;
|
|
39
47
|
getRequestIp(): string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Replaces any value already set for the header - the core contract's semantics. To keep
|
|
50
|
+
* existing values (`Vary`, `Link`, …) use {@link appendResponseHeader}.
|
|
51
|
+
*/
|
|
40
52
|
setResponseHeader(key: string, value: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Appends the value, keeping any value(s) already set for the header.
|
|
55
|
+
*/
|
|
56
|
+
appendResponseHeader(key: string, value: string): void;
|
|
41
57
|
redirect(url: string): Response & import("hono").TypedResponse<undefined, 302, "redirect">;
|
|
42
58
|
getValue<K extends keyof AsenaVariables>(key: K): AsenaVariables[K];
|
|
43
59
|
getValue<T = any>(key: string): T;
|
|
@@ -28,8 +28,21 @@ export class HonoContextWrapper {
|
|
|
28
28
|
getArrayBuffer() {
|
|
29
29
|
return this._context.req.arrayBuffer();
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Returns the validated form data when the route declares a `form` validator, the raw parsed
|
|
33
|
+
* body otherwise.
|
|
34
|
+
*
|
|
35
|
+
* Same reasoning as {@link getBody}, one representation over: `zValidator` collapses repeated
|
|
36
|
+
* keys into arrays and applies coercions into `req.valid('form')`, while `parseBody()` without
|
|
37
|
+
* options is last-value-wins - so the handler read a shape the schema had already replaced.
|
|
38
|
+
*/
|
|
39
|
+
async getParseBody() {
|
|
40
|
+
// Not `??`: a schema may legitimately parse to `null`, which would fall back to the raw body.
|
|
41
|
+
const validated = this._context.req.valid?.('form');
|
|
42
|
+
if (validated !== undefined) {
|
|
43
|
+
return validated;
|
|
44
|
+
}
|
|
45
|
+
return await this._context.req.parseBody();
|
|
33
46
|
}
|
|
34
47
|
getBlob() {
|
|
35
48
|
return this._context.req.blob();
|
|
@@ -117,7 +130,17 @@ export class HonoContextWrapper {
|
|
|
117
130
|
}
|
|
118
131
|
return this._requestIp;
|
|
119
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Replaces any value already set for the header - the core contract's semantics. To keep
|
|
135
|
+
* existing values (`Vary`, `Link`, …) use {@link appendResponseHeader}.
|
|
136
|
+
*/
|
|
120
137
|
setResponseHeader(key, value) {
|
|
138
|
+
this._context.res.headers.set(key, value);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Appends the value, keeping any value(s) already set for the header.
|
|
142
|
+
*/
|
|
143
|
+
appendResponseHeader(key, value) {
|
|
121
144
|
this._context.res.headers.append(key, value);
|
|
122
145
|
}
|
|
123
146
|
redirect(url) {
|
|
@@ -197,7 +220,28 @@ export class HonoContextWrapper {
|
|
|
197
220
|
wrapSSEStreamingApi(honoStream) {
|
|
198
221
|
return {
|
|
199
222
|
...this.wrapStreamingApi(honoStream),
|
|
200
|
-
writeSSE: (message) =>
|
|
223
|
+
writeSSE: async (message) => {
|
|
224
|
+
if (message.data === undefined && message.comment === undefined) {
|
|
225
|
+
throw new Error('writeSSE: message needs data or comment');
|
|
226
|
+
}
|
|
227
|
+
// Hono's writeSSE has no comment field, so comments are written by hand: one
|
|
228
|
+
// `: <line>` per line, closed with a blank line. Comment first, then the event.
|
|
229
|
+
if (message.comment !== undefined) {
|
|
230
|
+
const lines = message.comment
|
|
231
|
+
.split(/\r\n|\r|\n/)
|
|
232
|
+
.map((line) => `: ${line}`)
|
|
233
|
+
.join('\n');
|
|
234
|
+
await honoStream.write(`${lines}\n\n`);
|
|
235
|
+
}
|
|
236
|
+
if (message.data !== undefined) {
|
|
237
|
+
await honoStream.writeSSE({
|
|
238
|
+
data: message.data,
|
|
239
|
+
event: message.event,
|
|
240
|
+
id: message.id,
|
|
241
|
+
retry: message.retry,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
},
|
|
201
245
|
};
|
|
202
246
|
}
|
|
203
247
|
get context() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HonoContextWrapper.js","sourceRoot":"","sources":["../../lib/HonoContextWrapper.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC,CAAC,oBAAoB;AACxH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,SAAS,IAAI,aAAa,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhH,MAAM,OAAO,kBAAkB;IACrB,QAAQ,CAAU;IAElB,OAAO,CAAiB;IAExB,UAAU,CAAiB;IAEnC,YAAmB,OAAgB,EAAE,MAAsB;QACzD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC3B,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC3B,CAAC;IAED,IAAW,YAAY;QACrB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"HonoContextWrapper.js","sourceRoot":"","sources":["../../lib/HonoContextWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -141,6 +141,13 @@ export declare class CorsMiddleware extends MiddlewareService {
|
|
|
141
141
|
* @returns Response for preflight, or result of next() for actual requests
|
|
142
142
|
*/
|
|
143
143
|
handle(context: Context, next: () => Promise<void>): Promise<any>;
|
|
144
|
+
/**
|
|
145
|
+
* Appends `Origin` to `Vary` without clobbering values an earlier middleware already pinned
|
|
146
|
+
* (`Accept-Encoding`, …) and without listing `Origin` twice when this middleware runs more
|
|
147
|
+
* than once: comma-split the existing value, trim, compare case-insensitively, append only
|
|
148
|
+
* when missing.
|
|
149
|
+
*/
|
|
150
|
+
private appendVaryOrigin;
|
|
144
151
|
/**
|
|
145
152
|
* Determines the allowed origin value for the response
|
|
146
153
|
*
|
|
@@ -115,7 +115,7 @@ export class CorsMiddleware extends MiddlewareService {
|
|
|
115
115
|
// Non-'*' configs make the response depend on the Origin, refusals included; a shared cache
|
|
116
116
|
// that does not key on it hands one origin's response to another.
|
|
117
117
|
if (this.origin !== '*') {
|
|
118
|
-
|
|
118
|
+
this.appendVaryOrigin(context);
|
|
119
119
|
}
|
|
120
120
|
if (allowedOrigin) {
|
|
121
121
|
context.setResponseHeader('Access-Control-Allow-Origin', allowedOrigin);
|
|
@@ -139,6 +139,19 @@ export class CorsMiddleware extends MiddlewareService {
|
|
|
139
139
|
// For actual requests, continue to handler
|
|
140
140
|
return await next();
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Appends `Origin` to `Vary` without clobbering values an earlier middleware already pinned
|
|
144
|
+
* (`Accept-Encoding`, …) and without listing `Origin` twice when this middleware runs more
|
|
145
|
+
* than once: comma-split the existing value, trim, compare case-insensitively, append only
|
|
146
|
+
* when missing.
|
|
147
|
+
*/
|
|
148
|
+
appendVaryOrigin(context) {
|
|
149
|
+
const existing = context.res.headers.get('Vary');
|
|
150
|
+
if (existing?.split(',').some((value) => value.trim().toLowerCase() === 'origin')) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
context.appendResponseHeader?.('Vary', 'Origin');
|
|
154
|
+
}
|
|
142
155
|
/**
|
|
143
156
|
* Determines the allowed origin value for the response
|
|
144
157
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CorsMiddleware.js","sourceRoot":"","sources":["../../../lib/middlewares/CorsMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAgB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqD9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,cAAe,SAAQ,iBAAiB;IAClC,MAAM,CAA0D;IAEhE,OAAO,CAAS;IAEhB,cAAc,CAAS;IAEvB,cAAc,CAAS;IAEvB,WAAW,CAAU;IAErB,MAAM,CAAS;IAEhC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAmB,UAAuB,EAAE;QAC1C,KAAK,EAAE,CAAC;QAER,iEAAiE;QACjE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpG,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,mBAAmB;IACpE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,IAAyB;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE5C,yDAAyD;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;QAED,kBAAkB;QAClB,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEpD,4FAA4F;QAC5F,kEAAkE;QAClE,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxB,
|
|
1
|
+
{"version":3,"file":"CorsMiddleware.js","sourceRoot":"","sources":["../../../lib/middlewares/CorsMiddleware.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"README.md",
|
|
10
10
|
"LICENSE"
|
|
11
11
|
],
|
|
12
|
-
"version": "
|
|
12
|
+
"version": "4.0.0",
|
|
13
13
|
"author": "LibirSoft",
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"engines": {
|
|
20
|
-
"bun": ">=1.
|
|
20
|
+
"bun": ">=1.4.0"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"test": "bun test",
|
|
@@ -41,21 +41,21 @@
|
|
|
41
41
|
"release": "bun run build && changeset publish"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@asenajs/asena": "^0.
|
|
45
|
-
"@changesets/cli": "^2.
|
|
44
|
+
"@asenajs/asena": "^0.11.0",
|
|
45
|
+
"@changesets/cli": "^2.31.1",
|
|
46
46
|
"@types/bun": "latest",
|
|
47
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
48
|
-
"@typescript-eslint/parser": "^8.
|
|
49
|
-
"eslint": "^9.39.
|
|
47
|
+
"@typescript-eslint/eslint-plugin": "^8.68.0",
|
|
48
|
+
"@typescript-eslint/parser": "^8.68.0",
|
|
49
|
+
"eslint": "^9.39.5",
|
|
50
50
|
"eslint-config-prettier": "^9.1.2",
|
|
51
|
-
"hono": "^4.
|
|
52
|
-
"prettier": "^3.
|
|
51
|
+
"hono": "^4.13.4",
|
|
52
|
+
"prettier": "^3.9.6",
|
|
53
53
|
"typescript": "^5.9.3",
|
|
54
|
-
"typescript-eslint": "^8.
|
|
55
|
-
"zod": "^4.3
|
|
54
|
+
"typescript-eslint": "^8.68.0",
|
|
55
|
+
"zod": "^4.4.3"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
|
-
"@asenajs/asena": "^0.
|
|
58
|
+
"@asenajs/asena": "^0.11.0",
|
|
59
59
|
"hono": ">=4.12.9",
|
|
60
60
|
"typescript": "^5.8.2",
|
|
61
61
|
"zod": "^4.3.6"
|