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 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?.constructor){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: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});default:return r.headers["Content-Type"]||(r.headers["Content-Type"]="application/json"),new Response(JSON.stringify(s),{status:r.status,headers:r.headers})}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){case Error:return errorToResponse(s,r.headers);case Response:return s;case Blob:return new Response(s);case Promise:return s.then(e=>{let s=mapEarlyResponse(e,r);if(void 0!==s)return s});default:return new Response(JSON.stringify(s),{headers:{"content-type":"application/json"}})}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){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:return new Response(s,{status:r.status,headers:r.headers});case Promise:return s.then(e=>mapResponse(e,r));default:return r.headers["Content-Type"]||(r.headers["Content-Type"]="application/json"),new Response(JSON.stringify(s),{status:r.status,headers:r.headers})}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){case Error:return errorToResponse(s,r.headers);case Response:return s;case Blob:return new Response(s);case Promise:return s.then(e=>mapResponse(e,r));default:return new Response(JSON.stringify(s),{headers:{"content-type":"application/json"}})}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});
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.13",
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?.constructor) {
55
- case Error:
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
- if (!set.headers['Content-Type'])
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?.constructor) {
126
- case Error:
127
- return errorToResponse(response as Error, set.headers)
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 Blob:
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(JSON.stringify(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?.constructor) {
197
- case Error:
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
- if (!set.headers['Content-Type'])
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?.constructor) {
265
- case Error:
266
- return errorToResponse(response as Error, set.headers)
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 Blob:
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.then((x) => mapResponse(x, set))
292
+ return (response as any as Promise<unknown>).then(
293
+ (x) => {
294
+ const r = mapEarlyResponse(x, set)
277
295
 
278
- default:
279
- return new Response(JSON.stringify(response), {
280
- headers: {
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