elysia 0.4.13 → 0.4.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/handler.js +1 -1
- package/package.json +11 -11
- package/src/handler.ts +61 -41
package/dist/handler.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const isNotEmpty=e=>{for(let s in e)return!0;return!1};let e=(e,s)=>{e.delete("Set-Cookie");for(let r=0;r<s.length;r++){let t=s[r].indexOf("=");e.append("Set-Cookie",`${s[r].slice(0,t)}=${s[r].slice(t+1)}`)}return e};export const mapEarlyResponse=(s,r)=>{if(isNotEmpty(r.headers)||200!==r.status||r.redirect)switch(r.redirect&&(r.headers.Location=r.redirect,r.status=302),r.headers["Set-Cookie"]&&Array.isArray(r.headers["Set-Cookie"])&&(r.headers=e(new Headers(r.headers),r.headers["Set-Cookie"])),typeof s){case"string":return new Response(s,{status:r.status,headers:r.headers});case"object":switch(s
|
|
1
|
+
export const isNotEmpty=e=>{for(let s in e)return!0;return!1};let e=(e,s)=>{e.delete("Set-Cookie");for(let r=0;r<s.length;r++){let t=s[r].indexOf("=");e.append("Set-Cookie",`${s[r].slice(0,t)}=${s[r].slice(t+1)}`)}return e};export const mapEarlyResponse=(s,r)=>{if(isNotEmpty(r.headers)||200!==r.status||r.redirect)switch(r.redirect&&(r.headers.Location=r.redirect,r.status=302),r.headers["Set-Cookie"]&&Array.isArray(r.headers["Set-Cookie"])&&(r.headers=e(new Headers(r.headers),r.headers["Set-Cookie"])),typeof s){case"string":return new Response(s,{status:r.status,headers:r.headers});case"object":switch(s.constructor.name){case"Object":case"Array":case void 0:return new Response(JSON.stringify(s),{status:r.status,headers:r.headers});case"Error":return errorToResponse(s,r.headers);case"Response":for(let e in r.headers)s.headers.append(e,r.headers[e]);return s;case"Blob":default:return new Response(s,{status:r.status,headers:r.headers});case"Promise":return s.then(e=>{let s=mapEarlyResponse(e,r);if(void 0!==s)return s})}case"function":if(s instanceof Blob)return new Response(s,{status:r.status,headers:r.headers});for(let e in r.headers)s.headers.append(e,r.headers[e]);return s;case"number":case"boolean":return new Response(s.toString(),{status:r.status,headers:r.headers})}else switch(typeof s){case"string":return new Response(s);case"object":switch(s.constructor?.name){case"Object":case"Array":case void 0:return Response.json(s);case"Response":return s;case"Error":return errorToResponse(s,r.headers);case"Blob":default:return new Response(s);case"Promise":return s.then(e=>{let s=mapEarlyResponse(e,r);if(void 0!==s)return s})}case"function":if(s instanceof Blob)return new Response(s);return s;case"number":case"boolean":return new Response(s.toString())}};export const mapResponse=(s,r)=>{if(isNotEmpty(r.headers)||200!==r.status||r.redirect)switch(r.redirect&&(r.headers.Location=r.redirect,r.status=302),r.headers["Set-Cookie"]&&Array.isArray(r.headers["Set-Cookie"])&&(r.headers=e(new Headers(r.headers),r.headers["Set-Cookie"])),typeof s){case"string":return new Response(s,{status:r.status,headers:r.headers});case"object":switch(s.constructor?.name){case"Object":case"Array":case void 0:return new Response(JSON.stringify(s),{status:r.status,headers:r.headers});case"Error":return errorToResponse(s,r.headers);case"Response":for(let e in r.headers)s.headers.append(e,r.headers[e]);return s;case"Blob":default:return new Response(s,{status:r.status,headers:r.headers});case"Promise":return s.then(e=>mapResponse(e,r))}case"function":if(s instanceof Blob)return new Response(s,{status:r.status,headers:r.headers});return s();case"number":case"boolean":return new Response(s.toString(),{status:r.status,headers:r.headers});case"undefined":return new Response("",{status:r.status,headers:r.headers});default:return new Response(s,{status:r.status,headers:r.headers})}else switch(typeof s){case"string":return new Response(s);case"object":switch(s.constructor?.name){case"Object":case"Array":case void 0:return Response.json(s);case"Response":return s;case"Error":return errorToResponse(s,r.headers);case"Blob":default:return new Response(s);case"Promise":return s.then(e=>{let s=mapEarlyResponse(e,r);return void 0!==s?s:new Response("")})}case"function":if(s instanceof Blob)return new Response(s);return s();case"number":case"boolean":return new Response(s.toString());case"undefined":return new Response("");default:return new Response(s)}};export const errorToResponse=(e,s)=>new Response(JSON.stringify({name:e?.name,message:e?.message,cause:e?.cause}),{status:500,headers:s});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "elysia",
|
|
3
3
|
"description": "Fast, and friendly Bun web framework",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.14",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "saltyAom",
|
|
7
7
|
"url": "https://github.com/SaltyAom",
|
|
@@ -84,6 +84,15 @@
|
|
|
84
84
|
"server"
|
|
85
85
|
],
|
|
86
86
|
"license": "MIT",
|
|
87
|
+
"scripts": {
|
|
88
|
+
"test": "bun test",
|
|
89
|
+
"dev": "bun run --hot example/http.ts",
|
|
90
|
+
"build": "rimraf dist && swc src -d dist && tsc --project tsconfig.esm.json",
|
|
91
|
+
"release": "npm run release:test && npm run release:github && npm publish",
|
|
92
|
+
"release:test": "npm run build && npm run test",
|
|
93
|
+
"release:github": "bunx bumpp package.json --commit --push --tag",
|
|
94
|
+
"release:npm": "npm run build && npm run test && npm publish"
|
|
95
|
+
},
|
|
87
96
|
"dependencies": {
|
|
88
97
|
"@sinclair/typebox": "0.26.8",
|
|
89
98
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
@@ -119,14 +128,5 @@
|
|
|
119
128
|
"openapi-types": {
|
|
120
129
|
"optional": true
|
|
121
130
|
}
|
|
122
|
-
},
|
|
123
|
-
"scripts": {
|
|
124
|
-
"test": "bun test",
|
|
125
|
-
"dev": "bun run --hot example/http.ts",
|
|
126
|
-
"build": "rimraf dist && swc src -d dist && tsc --project tsconfig.esm.json",
|
|
127
|
-
"release": "npm run release:test && npm run release:github && npm publish",
|
|
128
|
-
"release:test": "npm run build && npm run test",
|
|
129
|
-
"release:github": "bunx bumpp package.json --commit --push --tag",
|
|
130
|
-
"release:npm": "npm run build && npm run test && npm publish"
|
|
131
131
|
}
|
|
132
|
-
}
|
|
132
|
+
}
|
package/src/handler.ts
CHANGED
|
@@ -51,11 +51,19 @@ export const mapEarlyResponse = (
|
|
|
51
51
|
})
|
|
52
52
|
|
|
53
53
|
case 'object':
|
|
54
|
-
switch (response
|
|
55
|
-
case
|
|
54
|
+
switch (response!.constructor.name) {
|
|
55
|
+
case 'Object':
|
|
56
|
+
case 'Array':
|
|
57
|
+
case undefined:
|
|
58
|
+
return new Response(JSON.stringify(response), {
|
|
59
|
+
status: set.status,
|
|
60
|
+
headers: set.headers
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
case 'Error':
|
|
56
64
|
return errorToResponse(response as Error, set.headers)
|
|
57
65
|
|
|
58
|
-
case Response:
|
|
66
|
+
case 'Response':
|
|
59
67
|
for (const key in set.headers)
|
|
60
68
|
(response as Response)!.headers.append(
|
|
61
69
|
key,
|
|
@@ -64,13 +72,13 @@ export const mapEarlyResponse = (
|
|
|
64
72
|
|
|
65
73
|
return response as Response
|
|
66
74
|
|
|
67
|
-
case Blob:
|
|
75
|
+
case 'Blob':
|
|
68
76
|
return new Response(response as Blob, {
|
|
69
77
|
status: set.status,
|
|
70
78
|
headers: set.headers
|
|
71
79
|
})
|
|
72
80
|
|
|
73
|
-
case Promise:
|
|
81
|
+
case 'Promise':
|
|
74
82
|
// @ts-ignore
|
|
75
83
|
return (response as Promise<unknown>).then((x) => {
|
|
76
84
|
const r = mapEarlyResponse(x, set)
|
|
@@ -81,10 +89,7 @@ export const mapEarlyResponse = (
|
|
|
81
89
|
})
|
|
82
90
|
|
|
83
91
|
default:
|
|
84
|
-
|
|
85
|
-
set.headers['Content-Type'] = 'application/json'
|
|
86
|
-
|
|
87
|
-
return new Response(JSON.stringify(response), {
|
|
92
|
+
return new Response(response as any, {
|
|
88
93
|
status: set.status,
|
|
89
94
|
headers: set.headers
|
|
90
95
|
})
|
|
@@ -122,17 +127,22 @@ export const mapEarlyResponse = (
|
|
|
122
127
|
return new Response(response)
|
|
123
128
|
|
|
124
129
|
case 'object':
|
|
125
|
-
switch (response?.
|
|
126
|
-
case
|
|
127
|
-
|
|
130
|
+
switch (response!.constructor?.name) {
|
|
131
|
+
case 'Object':
|
|
132
|
+
case 'Array':
|
|
133
|
+
case undefined:
|
|
134
|
+
return Response.json(response)
|
|
128
135
|
|
|
129
|
-
case Response:
|
|
136
|
+
case 'Response':
|
|
130
137
|
return response as Response
|
|
131
138
|
|
|
132
|
-
case
|
|
139
|
+
case 'Error':
|
|
140
|
+
return errorToResponse(response as Error, set.headers)
|
|
141
|
+
|
|
142
|
+
case 'Blob':
|
|
133
143
|
return new Response(response as Blob)
|
|
134
144
|
|
|
135
|
-
case Promise:
|
|
145
|
+
case 'Promise':
|
|
136
146
|
// @ts-ignore
|
|
137
147
|
return (response as Promise<unknown>).then((x) => {
|
|
138
148
|
const r = mapEarlyResponse(x, set)
|
|
@@ -143,11 +153,7 @@ export const mapEarlyResponse = (
|
|
|
143
153
|
})
|
|
144
154
|
|
|
145
155
|
default:
|
|
146
|
-
return new Response(
|
|
147
|
-
headers: {
|
|
148
|
-
'content-type': 'application/json'
|
|
149
|
-
}
|
|
150
|
-
})
|
|
156
|
+
return new Response(response as any)
|
|
151
157
|
}
|
|
152
158
|
|
|
153
159
|
// ? Maybe response or Blob
|
|
@@ -193,11 +199,19 @@ export const mapResponse = (
|
|
|
193
199
|
})
|
|
194
200
|
|
|
195
201
|
case 'object':
|
|
196
|
-
switch (response?.
|
|
197
|
-
case
|
|
202
|
+
switch (response!.constructor?.name) {
|
|
203
|
+
case 'Object':
|
|
204
|
+
case 'Array':
|
|
205
|
+
case undefined:
|
|
206
|
+
return new Response(JSON.stringify(response), {
|
|
207
|
+
status: set.status,
|
|
208
|
+
headers: set.headers
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
case 'Error':
|
|
198
212
|
return errorToResponse(response as Error, set.headers)
|
|
199
213
|
|
|
200
|
-
case Response:
|
|
214
|
+
case 'Response':
|
|
201
215
|
for (const key in set.headers)
|
|
202
216
|
(response as Response)!.headers.append(
|
|
203
217
|
key,
|
|
@@ -206,21 +220,18 @@ export const mapResponse = (
|
|
|
206
220
|
|
|
207
221
|
return response as Response
|
|
208
222
|
|
|
209
|
-
case Blob:
|
|
223
|
+
case 'Blob':
|
|
210
224
|
return new Response(response as Blob, {
|
|
211
225
|
status: set.status,
|
|
212
226
|
headers: set.headers
|
|
213
227
|
})
|
|
214
228
|
|
|
215
|
-
case Promise:
|
|
229
|
+
case 'Promise':
|
|
216
230
|
// @ts-ignore
|
|
217
231
|
return response.then((x) => mapResponse(x, set))
|
|
218
232
|
|
|
219
233
|
default:
|
|
220
|
-
|
|
221
|
-
set.headers['Content-Type'] = 'application/json'
|
|
222
|
-
|
|
223
|
-
return new Response(JSON.stringify(response), {
|
|
234
|
+
return new Response(response as any, {
|
|
224
235
|
status: set.status,
|
|
225
236
|
headers: set.headers
|
|
226
237
|
})
|
|
@@ -261,26 +272,35 @@ export const mapResponse = (
|
|
|
261
272
|
return new Response(response)
|
|
262
273
|
|
|
263
274
|
case 'object':
|
|
264
|
-
switch (response?.
|
|
265
|
-
case
|
|
266
|
-
|
|
275
|
+
switch (response!.constructor?.name) {
|
|
276
|
+
case 'Object':
|
|
277
|
+
case 'Array':
|
|
278
|
+
case undefined:
|
|
279
|
+
return Response.json(response)
|
|
267
280
|
|
|
268
|
-
case Response:
|
|
281
|
+
case 'Response':
|
|
269
282
|
return response as Response
|
|
270
283
|
|
|
271
|
-
case
|
|
284
|
+
case 'Error':
|
|
285
|
+
return errorToResponse(response as Error, set.headers)
|
|
286
|
+
|
|
287
|
+
case 'Blob':
|
|
272
288
|
return new Response(response as Blob)
|
|
273
289
|
|
|
274
|
-
case Promise:
|
|
290
|
+
case 'Promise':
|
|
275
291
|
// @ts-ignore
|
|
276
|
-
return response
|
|
292
|
+
return (response as any as Promise<unknown>).then(
|
|
293
|
+
(x) => {
|
|
294
|
+
const r = mapEarlyResponse(x, set)
|
|
277
295
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
'content-type': 'application/json'
|
|
296
|
+
if (r !== undefined) return r
|
|
297
|
+
|
|
298
|
+
return new Response('')
|
|
282
299
|
}
|
|
283
|
-
|
|
300
|
+
)
|
|
301
|
+
|
|
302
|
+
default:
|
|
303
|
+
return new Response(response as any)
|
|
284
304
|
}
|
|
285
305
|
|
|
286
306
|
// ? Maybe response or Blob
|