elysia 1.3.20 → 1.3.21

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/index.mjs CHANGED
@@ -2250,22 +2250,26 @@ var handleFile = (response, set2) => {
2250
2250
  try {
2251
2251
  for await (let chunk of generator) {
2252
2252
  if (end) break;
2253
- if (chunk != null) {
2253
+ if (chunk != null)
2254
2254
  if (chunk.toSSE)
2255
2255
  controller.enqueue(chunk.toSSE());
2256
- else if (typeof chunk == "object")
2257
- try {
2258
- controller.enqueue(
2259
- format(JSON.stringify(chunk))
2260
- );
2261
- } catch {
2256
+ else {
2257
+ if (typeof chunk == "object")
2258
+ try {
2259
+ controller.enqueue(
2260
+ format(JSON.stringify(chunk))
2261
+ );
2262
+ } catch {
2263
+ controller.enqueue(
2264
+ format(chunk.toString())
2265
+ );
2266
+ }
2267
+ else
2262
2268
  controller.enqueue(format(chunk.toString()));
2263
- }
2264
- else controller.enqueue(format(chunk.toString()));
2265
- await new Promise(
2266
- (resolve) => setTimeout(() => resolve(), 0)
2267
- );
2268
- }
2269
+ isSSE || await new Promise(
2270
+ (resolve) => setTimeout(() => resolve(), 0)
2271
+ );
2272
+ }
2269
2273
  }
2270
2274
  } catch (error2) {
2271
2275
  console.warn(error2);
@@ -4365,11 +4369,16 @@ try{a${index}.push(JSON.parse(value))}catch{a${index}.push(value)}if(deepMemory=
4365
4369
  }
4366
4370
  }
4367
4371
  let isAsyncHandler = typeof handler == "function" && isAsync(handler), saveResponse = hasTrace || hooks.afterResponse?.length ? "c.response= " : "", maybeAsync = hasCookie || hasBody || isAsyncHandler || !!hooks.parse?.length || !!hooks.afterHandle?.some(isAsync) || !!hooks.beforeHandle?.some(isAsync) || !!hooks.transform?.some(isAsync) || !!hooks.mapResponse?.some(isAsync), maybeStream = (typeof handler == "function" ? isGenerator(handler) : !1) || !!hooks.beforeHandle?.some(isGenerator) || !!hooks.afterHandle?.some(isGenerator) || !!hooks.transform?.some(isGenerator), responseKeys = Object.keys(validator.response ?? {}), hasMultipleResponses = responseKeys.length > 1, hasSingle200 = responseKeys.length === 0 || responseKeys.length === 1 && responseKeys[0] === "200", hasSet = inference.cookie || inference.set || hasHeaders || hasTrace || hasMultipleResponses || !hasSingle200 || isHandleFn && hasDefaultHeaders || maybeStream, afterResponse = () => {
4368
- if (!hooks.afterResponse?.length) return "";
4372
+ if (!hooks.afterResponse?.length && !hasTrace) return "";
4369
4373
  let afterResponse2 = "", prefix = hooks.afterResponse?.some(isAsync) ? "async " : "";
4370
4374
  afterResponse2 += `
4371
4375
  setImmediate(${prefix}()=>{`;
4372
- let reporter = report("afterResponse", {
4376
+ let reporter = createReport({
4377
+ trace: hooks.trace,
4378
+ addFn: (word) => {
4379
+ afterResponse2 += word;
4380
+ }
4381
+ })("afterResponse", {
4373
4382
  total: hooks.afterResponse?.length
4374
4383
  });
4375
4384
  if (hooks.afterResponse?.length && hooks.afterResponse)
@@ -4386,7 +4395,7 @@ ${prefix2}e.afterResponse[${i}](c)
4386
4395
  }, mapResponse3 = (r = "r") => {
4387
4396
  let after = afterResponse(), response = `${hasSet ? "mapResponse" : "mapCompactResponse"}(${saveResponse}${r}${hasSet ? ",c.set" : ""}${mapResponseContext})
4388
4397
  `;
4389
- return after || `${response}`, `const _res=${response}` + after + "return _res";
4398
+ return after ? `const _res=${response}` + after + "return _res" : `return ${response}`;
4390
4399
  }, mapResponseContext = maybeStream || adapter.mapResponseContext ? `,${adapter.mapResponseContext}` : "";
4391
4400
  (hasTrace || inference.route) && (fnLiteral += `c.route=\`${path}\`
4392
4401
  `);
@@ -4540,15 +4549,16 @@ delete c.contentType`);
4540
4549
  }
4541
4550
  fnLiteral += "}catch(error){throw new ParseError(error)}";
4542
4551
  }
4543
- if (parseReporter.resolve(), hooks?.transform) {
4552
+ if (parseReporter.resolve(), hooks?.transform || hasTrace) {
4544
4553
  let reporter = report("transform", {
4545
- total: hooks.transform.length
4554
+ total: hooks.transform?.length
4546
4555
  });
4547
- hooks.transform.length && (fnLiteral += `let transformed
4548
- `);
4549
- for (let i = 0; i < hooks.transform.length; i++) {
4550
- let transform = hooks.transform[i], endUnit = reporter.resolveChild(transform.fn.name);
4551
- fnLiteral += isAsync(transform) ? `transformed=await e.transform[${i}](c)
4556
+ if (hooks.transform?.length) {
4557
+ fnLiteral += `let transformed
4558
+ `;
4559
+ for (let i = 0; i < hooks.transform.length; i++) {
4560
+ let transform = hooks.transform[i], endUnit = reporter.resolveChild(transform.fn.name);
4561
+ fnLiteral += isAsync(transform) ? `transformed=await e.transform[${i}](c)
4552
4562
  ` : `transformed=e.transform[${i}](c)
4553
4563
  `, transform.subType === "mapDerive" ? fnLiteral += "if(transformed instanceof ElysiaCustomStatusResponse){" + mapResponse3("transformed") + `}else{transformed.request=c.request
4554
4564
  transformed.store=c.store
@@ -4560,6 +4570,7 @@ transformed.set=c.set
4560
4570
  transformed.error=c.error
4561
4571
  c=transformed}` : fnLiteral += "if(transformed instanceof ElysiaCustomStatusResponse){" + mapResponse3("transformed") + `}else Object.assign(c,transformed)
4562
4572
  `, endUnit();
4573
+ }
4563
4574
  }
4564
4575
  reporter.resolve();
4565
4576
  }
@@ -4747,14 +4758,15 @@ for(const [key,value] of Object.entries(c.cookie))cookieValue[key]=value.value
4747
4758
  )), cookieValidator.isOptional && (fnLiteral += "}");
4748
4759
  }
4749
4760
  }
4750
- if (hooks?.beforeHandle) {
4761
+ if (hooks?.beforeHandle || hasTrace) {
4751
4762
  let reporter = report("beforeHandle", {
4752
- total: hooks.beforeHandle.length
4763
+ total: hooks.beforeHandle?.length
4753
4764
  }), hasResolve = !1;
4754
- for (let i = 0; i < hooks.beforeHandle.length; i++) {
4755
- let beforeHandle = hooks.beforeHandle[i], endUnit = reporter.resolveChild(beforeHandle.fn.name), returning = hasReturn(beforeHandle);
4756
- if (beforeHandle.subType === "resolve" || beforeHandle.subType === "mapResolve")
4757
- hasResolve || (hasResolve = !0, fnLiteral += `
4765
+ if (hooks.beforeHandle?.length)
4766
+ for (let i = 0; i < hooks.beforeHandle.length; i++) {
4767
+ let beforeHandle = hooks.beforeHandle[i], endUnit = reporter.resolveChild(beforeHandle.fn.name), returning = hasReturn(beforeHandle);
4768
+ if (beforeHandle.subType === "resolve" || beforeHandle.subType === "mapResolve")
4769
+ hasResolve || (hasResolve = !0, fnLiteral += `
4758
4770
  let resolved
4759
4771
  `), fnLiteral += isAsync(beforeHandle) ? `resolved=await e.beforeHandle[${i}](c);
4760
4772
  ` : `resolved=e.beforeHandle[${i}](c);
@@ -4767,76 +4779,78 @@ resolved.redirect=c.redirect
4767
4779
  resolved.set=c.set
4768
4780
  resolved.error=c.error
4769
4781
  c=resolved}` : fnLiteral += "if(resolved instanceof ElysiaCustomStatusResponse){" + mapResponse3("resolved") + `}else Object.assign(c, resolved)
4770
- `;
4771
- else if (!returning)
4772
- fnLiteral += isAsync(beforeHandle) ? `await e.beforeHandle[${i}](c)
4782
+ `, endUnit();
4783
+ else if (!returning)
4784
+ fnLiteral += isAsync(beforeHandle) ? `await e.beforeHandle[${i}](c)
4773
4785
  ` : `e.beforeHandle[${i}](c)
4774
4786
  `, endUnit();
4775
- else {
4776
- if (fnLiteral += isAsync(beforeHandle) ? `be=await e.beforeHandle[${i}](c)
4787
+ else {
4788
+ if (fnLiteral += isAsync(beforeHandle) ? `be=await e.beforeHandle[${i}](c)
4777
4789
  ` : `be=e.beforeHandle[${i}](c)
4778
- `, endUnit("be"), fnLiteral += "if(be!==undefined){", reporter.resolve(), hooks.afterHandle?.length) {
4779
- report("handle", {
4780
- name: isHandleFn ? handler.name : void 0
4781
- }).resolve();
4782
- let reporter2 = report("afterHandle", {
4783
- total: hooks.afterHandle.length
4784
- });
4785
- for (let i2 = 0; i2 < hooks.afterHandle.length; i2++) {
4786
- let hook = hooks.afterHandle[i2], returning2 = hasReturn(hook), endUnit2 = reporter2.resolveChild(hook.fn.name);
4787
- fnLiteral += `c.response = be
4790
+ `, endUnit("be"), fnLiteral += "if(be!==undefined){", reporter.resolve(), hooks.afterHandle?.length || hasTrace) {
4791
+ report("handle", {
4792
+ name: isHandleFn ? handler.name : void 0
4793
+ }).resolve();
4794
+ let reporter2 = report("afterHandle", {
4795
+ total: hooks.afterHandle?.length
4796
+ });
4797
+ if (hooks.afterHandle?.length)
4798
+ for (let i2 = 0; i2 < hooks.afterHandle.length; i2++) {
4799
+ let hook = hooks.afterHandle[i2], returning2 = hasReturn(hook), endUnit2 = reporter2.resolveChild(hook.fn.name);
4800
+ fnLiteral += `c.response = be
4788
4801
  `, returning2 ? (fnLiteral += isAsync(hook.fn) ? `af=await e.afterHandle[${i2}](c)
4789
4802
  ` : `af=e.afterHandle[${i2}](c)
4790
4803
  `, fnLiteral += `if(af!==undefined) c.response=be=af
4791
4804
  `) : fnLiteral += isAsync(hook.fn) ? `await e.afterHandle[${i2}](c, be)
4792
4805
  ` : `e.afterHandle[${i2}](c, be)
4793
4806
  `, endUnit2("af");
4807
+ }
4808
+ reporter2.resolve();
4794
4809
  }
4795
- reporter2.resolve();
4796
- }
4797
- validator.response && (fnLiteral += validation.response("be"));
4798
- let mapResponseReporter = report("mapResponse", {
4799
- total: hooks.mapResponse?.length
4800
- });
4801
- if (hooks.mapResponse?.length) {
4802
- fnLiteral += `c.response=be
4810
+ validator.response && (fnLiteral += validation.response("be"));
4811
+ let mapResponseReporter = report("mapResponse", {
4812
+ total: hooks.mapResponse?.length
4813
+ });
4814
+ if (hooks.mapResponse?.length) {
4815
+ fnLiteral += `c.response=be
4803
4816
  `;
4804
- for (let i2 = 0; i2 < hooks.mapResponse.length; i2++) {
4805
- let mapResponse4 = hooks.mapResponse[i2], endUnit2 = mapResponseReporter.resolveChild(
4806
- mapResponse4.fn.name
4807
- );
4808
- fnLiteral += `if(mr===undefined){mr=${isAsyncName(mapResponse4) ? "await " : ""}e.mapResponse[${i2}](c)
4817
+ for (let i2 = 0; i2 < hooks.mapResponse.length; i2++) {
4818
+ let mapResponse4 = hooks.mapResponse[i2], endUnit2 = mapResponseReporter.resolveChild(
4819
+ mapResponse4.fn.name
4820
+ );
4821
+ fnLiteral += `if(mr===undefined){mr=${isAsyncName(mapResponse4) ? "await " : ""}e.mapResponse[${i2}](c)
4809
4822
  if(mr!==undefined)be=c.response=mr}`, endUnit2();
4823
+ }
4810
4824
  }
4811
- }
4812
- mapResponseReporter.resolve(), fnLiteral += encodeCookie(), fnLiteral += `return mapEarlyResponse(${saveResponse}be,c.set${mapResponseContext})}
4825
+ mapResponseReporter.resolve(), fnLiteral += encodeCookie(), fnLiteral += `return mapEarlyResponse(${saveResponse}be,c.set${mapResponseContext})}
4813
4826
  `;
4827
+ }
4814
4828
  }
4815
- }
4816
4829
  reporter.resolve();
4817
4830
  }
4818
- if (hooks.afterHandle?.length) {
4831
+ if (hooks.afterHandle?.length || hasTrace) {
4819
4832
  let handleReporter = report("handle", {
4820
4833
  name: isHandleFn ? handler.name : void 0
4821
4834
  });
4822
- hooks.afterHandle.length ? fnLiteral += isAsyncHandler ? `let r=c.response=await ${handle}
4835
+ hooks.afterHandle?.length ? fnLiteral += isAsyncHandler ? `let r=c.response=await ${handle}
4823
4836
  ` : `let r=c.response=${handle}
4824
4837
  ` : fnLiteral += isAsyncHandler ? `let r=await ${handle}
4825
4838
  ` : `let r=${handle}
4826
4839
  `, handleReporter.resolve();
4827
4840
  let reporter = report("afterHandle", {
4828
- total: hooks.afterHandle.length
4841
+ total: hooks.afterHandle?.length
4829
4842
  });
4830
- for (let i = 0; i < hooks.afterHandle.length; i++) {
4831
- let hook = hooks.afterHandle[i], returning = hasReturn(hook), endUnit = reporter.resolveChild(hook.fn.name);
4832
- returning ? (fnLiteral += isAsync(hook.fn) ? `af=await e.afterHandle[${i}](c)
4843
+ if (hooks.afterHandle?.length)
4844
+ for (let i = 0; i < hooks.afterHandle.length; i++) {
4845
+ let hook = hooks.afterHandle[i], returning = hasReturn(hook), endUnit = reporter.resolveChild(hook.fn.name);
4846
+ returning ? (fnLiteral += isAsync(hook.fn) ? `af=await e.afterHandle[${i}](c)
4833
4847
  ` : `af=e.afterHandle[${i}](c)
4834
4848
  `, endUnit("af"), validator.response ? (fnLiteral += "if(af!==undefined){", reporter.resolve(), fnLiteral += validation.response("af"), fnLiteral += "c.response=af}") : (fnLiteral += "if(af!==undefined){", reporter.resolve(), fnLiteral += "c.response=af}")) : (fnLiteral += isAsync(hook.fn) ? `await e.afterHandle[${i}](c)
4835
4849
  ` : `e.afterHandle[${i}](c)
4836
4850
  `, endUnit());
4837
- }
4838
- reporter.resolve(), fnLiteral += `r=c.response
4839
- `, validator.response && (fnLiteral += validation.response()), fnLiteral += encodeCookie();
4851
+ }
4852
+ reporter.resolve(), hooks.afterHandle?.length && (fnLiteral += `r=c.response
4853
+ `), validator.response && (fnLiteral += validation.response()), fnLiteral += encodeCookie();
4840
4854
  let mapResponseReporter = report("mapResponse", {
4841
4855
  total: hooks.mapResponse?.length
4842
4856
  });
@@ -4854,7 +4868,7 @@ if(mr!==undefined)r=c.response=mr
4854
4868
  let handleReporter = report("handle", {
4855
4869
  name: isHandleFn ? handler.name : void 0
4856
4870
  });
4857
- if (validator.response || hooks.mapResponse?.length) {
4871
+ if (validator.response || hooks.mapResponse?.length || hasTrace) {
4858
4872
  fnLiteral += isAsyncHandler ? `let r=await ${handle}
4859
4873
  ` : `let r=${handle}
4860
4874
  `, handleReporter.resolve(), validator.response && (fnLiteral += validation.response());
@@ -5174,22 +5188,29 @@ map: switch(p){
5174
5188
  fnLiteral += word;
5175
5189
  }
5176
5190
  }), afterResponse = () => {
5177
- if (!hooks.afterResponse?.length) return "";
5178
- let afterResponse2 = "", prefix = hooks.afterResponse.some(isAsync) ? "async" : "";
5191
+ if (!hooks.afterResponse?.length && !hasTrace) return "";
5192
+ let afterResponse2 = "", prefix = hooks.afterResponse?.some(isAsync) ? "async" : "";
5179
5193
  afterResponse2 += `
5180
5194
  setImmediate(${prefix}()=>{`;
5181
- let reporter = report("afterResponse", {
5195
+ let reporter = createReport({
5196
+ context: "context",
5197
+ trace: hooks.trace,
5198
+ addFn: (word) => {
5199
+ afterResponse2 += word;
5200
+ }
5201
+ })("afterResponse", {
5182
5202
  total: hooks.afterResponse?.length,
5183
5203
  name: "context"
5184
5204
  });
5185
- for (let i = 0; i < hooks.afterResponse.length; i++) {
5186
- let fn = hooks.afterResponse[i].fn, endUnit = reporter.resolveChild(fn.name);
5187
- afterResponse2 += `
5205
+ if (hooks.afterResponse?.length && hooks.afterResponse)
5206
+ for (let i = 0; i < hooks.afterResponse.length; i++) {
5207
+ let fn = hooks.afterResponse[i].fn, endUnit = reporter.resolveChild(fn.name);
5208
+ afterResponse2 += `
5188
5209
  ${isAsyncName(fn) ? "await " : ""}afterResponse[${i}](context)
5189
5210
  `, endUnit();
5190
- }
5191
- return afterResponse2 += `})
5192
- `, reporter.resolve(), afterResponse2;
5211
+ }
5212
+ return reporter.resolve(), afterResponse2 += `})
5213
+ `, afterResponse2;
5193
5214
  };
5194
5215
  fnLiteral += `const set=context.set
5195
5216
  let _r
@@ -5197,7 +5218,7 @@ if(!context.code)context.code=error.code??error[ERROR_CODE]
5197
5218
  if(!(context.error instanceof Error))context.error=error
5198
5219
  if(error instanceof ElysiaCustomStatusResponse){set.status=error.status=error.code
5199
5220
  error.message=error.response}`, adapter.declare && (fnLiteral += adapter.declare);
5200
- let saveResponse = hasTrace || hooks.afterResponse?.length || hooks.afterResponse?.length ? "context.response = " : "";
5221
+ let saveResponse = hasTrace || hooks.afterResponse?.length ? "context.response = " : "";
5201
5222
  if (app.event.error)
5202
5223
  for (let i = 0; i < app.event.error.length; i++) {
5203
5224
  let handler = app.event.error[i], response = `${isAsync(handler) ? "await " : ""}onError[${i}](context)
@@ -5624,7 +5645,9 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
5624
5645
  ),
5625
5646
  websocket: {
5626
5647
  ...app.config.websocket || {},
5627
- ...websocket || {}
5648
+ ...websocket || {},
5649
+ // @ts-expect-error not available in this variant of options type
5650
+ ...options.websocket || {}
5628
5651
  },
5629
5652
  fetch: app.fetch
5630
5653
  } : {
@@ -5730,7 +5753,7 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
5730
5753
  ...(app.event.error ?? []).map(
5731
5754
  (x) => typeof x == "function" ? x : x.fn
5732
5755
  )
5733
- ].filter((x) => x), handleErrors = errorHandlers.length ? async (ws, error2) => {
5756
+ ].filter((x) => x), hasCustomErrorHandlers = errorHandlers.length > 0, handleErrors = hasCustomErrorHandlers ? async (ws, error2) => {
5734
5757
  for (let handleError of errorHandlers) {
5735
5758
  let response2 = handleError(
5736
5759
  Object.assign(context, { error: error2 })
@@ -5767,14 +5790,14 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
5767
5790
  },
5768
5791
  message: async (ws, _message) => {
5769
5792
  let message = await parseMessage(ws, _message);
5770
- if (validateMessage?.Check(message) === !1)
5771
- return void ws.send(
5772
- new ValidationError(
5773
- "message",
5774
- validateMessage,
5775
- message
5776
- ).message
5793
+ if (validateMessage?.Check(message) === !1) {
5794
+ let validationError = new ValidationError(
5795
+ "message",
5796
+ validateMessage,
5797
+ message
5777
5798
  );
5799
+ return hasCustomErrorHandlers ? handleErrors(ws, validationError) : void ws.send(validationError.message);
5800
+ }
5778
5801
  try {
5779
5802
  await handleResponse3(
5780
5803
  ws,
@@ -7313,7 +7336,7 @@ var _Elysia = class _Elysia {
7313
7336
  if (typeof plugin2 == "function") return plugin2(this);
7314
7337
  if (plugin2 instanceof _Elysia)
7315
7338
  return this._use(plugin2).compile();
7316
- if (plugin2.constructor.name === "Elysia")
7339
+ if (plugin2.constructor?.name === "Elysia")
7317
7340
  return this._use(
7318
7341
  plugin2
7319
7342
  ).compile();
@@ -7321,9 +7344,9 @@ var _Elysia = class _Elysia {
7321
7344
  return plugin2.default(this);
7322
7345
  if (plugin2.default instanceof _Elysia)
7323
7346
  return this._use(plugin2.default);
7324
- if (plugin2.constructor.name === "Elysia")
7347
+ if (plugin2.constructor?.name === "Elysia")
7325
7348
  return this._use(plugin2.default);
7326
- if (plugin2.constructor.name === "_Elysia")
7349
+ if (plugin2.constructor?.name === "_Elysia")
7327
7350
  return this._use(plugin2.default);
7328
7351
  try {
7329
7352
  return this._use(plugin2.default);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "elysia",
3
3
  "description": "Ergonomic Framework for Human",
4
- "version": "1.3.20",
4
+ "version": "1.3.21",
5
5
  "author": {
6
6
  "name": "saltyAom",
7
7
  "url": "https://github.com/SaltyAom",