@wooksjs/event-http 0.4.35 → 0.4.37

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.cjs CHANGED
@@ -579,7 +579,7 @@ class HttpErrorRenderer extends BaseHttpResponseRenderer {
579
579
  `<head><title>${data.statusCode} ${httpStatusCodes[data.statusCode]}</title></head>` +
580
580
  `<body><center><h1>${data.statusCode} ${httpStatusCodes[data.statusCode]}</h1></center>` +
581
581
  `<center><h4>${data.message}</h1></center><hr color="#666">` +
582
- `<center style="color: #666;"> Wooks v${"0.4.35"} </center>` +
582
+ `<center style="color: #666;"> Wooks v${"0.4.37"} </center>` +
583
583
  `${keys.length > 0
584
584
  ? `<pre style="${preStyles}">${JSON.stringify({
585
585
  ...data,
@@ -769,6 +769,7 @@ class BaseHttpResponse {
769
769
  throw error;
770
770
  }
771
771
  async respond() {
772
+ const { endEvent } = useHttpContext();
772
773
  const { rawResponse, hasResponded } = useResponse();
773
774
  const { method, rawRequest } = useRequest();
774
775
  const logger = eventCore.useEventLogger('http-response') || console;
@@ -787,17 +788,20 @@ class BaseHttpResponse {
787
788
  stream.destroy();
788
789
  });
789
790
  if (method === 'HEAD') {
791
+ endEvent();
790
792
  stream.destroy();
791
793
  res.end();
792
794
  }
793
795
  else {
794
796
  return new Promise((resolve, reject) => {
795
797
  stream.on('error', e => {
798
+ endEvent();
796
799
  stream.destroy();
797
800
  res.end();
798
801
  reject(e);
799
802
  });
800
803
  stream.on('close', () => {
804
+ endEvent();
801
805
  stream.destroy();
802
806
  resolve(undefined);
803
807
  });
@@ -808,6 +812,7 @@ class BaseHttpResponse {
808
812
  else if (globalThis.Response && this.body instanceof Response) {
809
813
  this.mergeFetchStatus(this.body.status);
810
814
  if (method === 'HEAD') {
815
+ endEvent();
811
816
  res.end();
812
817
  }
813
818
  else {
@@ -818,6 +823,7 @@ class BaseHttpResponse {
818
823
  if (this.body.headers.get('content-type')) {
819
824
  additionalHeaders['content-type'] = this.body.headers.get('content-type');
820
825
  }
826
+ endEvent();
821
827
  res.writeHead(this.status, {
822
828
  ...additionalHeaders,
823
829
  ...this._headers,
@@ -828,6 +834,7 @@ class BaseHttpResponse {
828
834
  else {
829
835
  const renderedBody = this.renderer.render(this);
830
836
  this.mergeStatus(renderedBody);
837
+ endEvent();
831
838
  res
832
839
  .writeHead(this.status, {
833
840
  'content-length': Buffer.byteLength(renderedBody),
@@ -944,13 +951,17 @@ class WooksHttp extends wooks.WooksAdapterBase {
944
951
  this.server = server;
945
952
  }
946
953
  respond(data) {
947
- void this.responder.respond(data)?.catch(e => {
954
+ const { endEvent } = useHttpContext();
955
+ void this.responder
956
+ .respond(data)
957
+ ?.catch(e => {
948
958
  this.logger.error('Uncought response exception', e);
949
- });
959
+ })
960
+ .finally(() => endEvent());
950
961
  }
951
962
  getServerCb() {
952
963
  return async (req, res) => {
953
- const { restoreCtx, clearCtx } = createHttpContext({ req, res }, this.mergeEventOptions(this.opts?.eventOptions));
964
+ const { restoreCtx } = createHttpContext({ req, res }, this.mergeEventOptions(this.opts?.eventOptions));
954
965
  const { handlers } = this.wooks.lookup(req.method, req.url);
955
966
  if (handlers || this.opts?.onNotFound) {
956
967
  try {
@@ -960,13 +971,11 @@ class WooksHttp extends wooks.WooksAdapterBase {
960
971
  this.logger.error('Internal error, please report', error);
961
972
  restoreCtx();
962
973
  this.respond(error);
963
- clearCtx();
964
974
  }
965
975
  }
966
976
  else {
967
977
  this.logger.debug(`404 Not found (${req.method})${req.url}`);
968
978
  this.respond(new HttpError(404));
969
- clearCtx();
970
979
  }
971
980
  };
972
981
  }
@@ -981,7 +990,6 @@ class WooksHttp extends wooks.WooksAdapterBase {
981
990
  const result = await promise;
982
991
  restoreCtx();
983
992
  this.respond(result);
984
- clearCtx();
985
993
  break;
986
994
  }
987
995
  catch (error) {
@@ -994,7 +1002,6 @@ class WooksHttp extends wooks.WooksAdapterBase {
994
1002
  if (isLastHandler) {
995
1003
  restoreCtx();
996
1004
  this.respond(error);
997
- clearCtx();
998
1005
  }
999
1006
  }
1000
1007
  }
package/dist/index.d.ts CHANGED
@@ -383,6 +383,7 @@ declare function createHttpContext(data: THttpEventData, options: TEventOptions)
383
383
  getCtx: () => THttpContextStore & _wooksjs_event_core.TGenericContextStore<THttpEventData>;
384
384
  restoreCtx: () => _wooksjs_event_core.TGenericContextStore<TEmpty>;
385
385
  clearCtx: () => null;
386
+ endEvent: (abortReason?: string | undefined) => void;
386
387
  store: <K extends keyof THttpContextStore | keyof _wooksjs_event_core.TGenericContextStore<THttpEventData>>(key: K) => {
387
388
  value: (THttpContextStore & _wooksjs_event_core.TGenericContextStore<THttpEventData>)[K];
388
389
  hook: <K2 extends keyof Required<THttpContextStore & _wooksjs_event_core.TGenericContextStore<THttpEventData>>[K]>(key2: K2) => {
@@ -410,6 +411,7 @@ declare function useHttpContext<T extends TEmpty>(): {
410
411
  getCtx: () => THttpContextStore & T & _wooksjs_event_core.TGenericContextStore<THttpEventData>;
411
412
  restoreCtx: () => _wooksjs_event_core.TGenericContextStore<TEmpty>;
412
413
  clearCtx: () => null;
414
+ endEvent: (abortReason?: string | undefined) => void;
413
415
  store: <K extends keyof THttpContextStore | keyof _wooksjs_event_core.TGenericContextStore<THttpEventData> | keyof T>(key: K) => {
414
416
  value: (THttpContextStore & T & _wooksjs_event_core.TGenericContextStore<THttpEventData>)[K];
415
417
  hook: <K2 extends keyof Required<THttpContextStore & T & _wooksjs_event_core.TGenericContextStore<THttpEventData>>[K]>(key2: K2) => {
package/dist/index.mjs CHANGED
@@ -577,7 +577,7 @@ class HttpErrorRenderer extends BaseHttpResponseRenderer {
577
577
  `<head><title>${data.statusCode} ${httpStatusCodes[data.statusCode]}</title></head>` +
578
578
  `<body><center><h1>${data.statusCode} ${httpStatusCodes[data.statusCode]}</h1></center>` +
579
579
  `<center><h4>${data.message}</h1></center><hr color="#666">` +
580
- `<center style="color: #666;"> Wooks v${"0.4.35"} </center>` +
580
+ `<center style="color: #666;"> Wooks v${"0.4.37"} </center>` +
581
581
  `${keys.length > 0
582
582
  ? `<pre style="${preStyles}">${JSON.stringify({
583
583
  ...data,
@@ -767,6 +767,7 @@ class BaseHttpResponse {
767
767
  throw error;
768
768
  }
769
769
  async respond() {
770
+ const { endEvent } = useHttpContext();
770
771
  const { rawResponse, hasResponded } = useResponse();
771
772
  const { method, rawRequest } = useRequest();
772
773
  const logger = useEventLogger('http-response') || console;
@@ -785,17 +786,20 @@ class BaseHttpResponse {
785
786
  stream.destroy();
786
787
  });
787
788
  if (method === 'HEAD') {
789
+ endEvent();
788
790
  stream.destroy();
789
791
  res.end();
790
792
  }
791
793
  else {
792
794
  return new Promise((resolve, reject) => {
793
795
  stream.on('error', e => {
796
+ endEvent();
794
797
  stream.destroy();
795
798
  res.end();
796
799
  reject(e);
797
800
  });
798
801
  stream.on('close', () => {
802
+ endEvent();
799
803
  stream.destroy();
800
804
  resolve(undefined);
801
805
  });
@@ -806,6 +810,7 @@ class BaseHttpResponse {
806
810
  else if (globalThis.Response && this.body instanceof Response) {
807
811
  this.mergeFetchStatus(this.body.status);
808
812
  if (method === 'HEAD') {
813
+ endEvent();
809
814
  res.end();
810
815
  }
811
816
  else {
@@ -816,6 +821,7 @@ class BaseHttpResponse {
816
821
  if (this.body.headers.get('content-type')) {
817
822
  additionalHeaders['content-type'] = this.body.headers.get('content-type');
818
823
  }
824
+ endEvent();
819
825
  res.writeHead(this.status, {
820
826
  ...additionalHeaders,
821
827
  ...this._headers,
@@ -826,6 +832,7 @@ class BaseHttpResponse {
826
832
  else {
827
833
  const renderedBody = this.renderer.render(this);
828
834
  this.mergeStatus(renderedBody);
835
+ endEvent();
829
836
  res
830
837
  .writeHead(this.status, {
831
838
  'content-length': Buffer.byteLength(renderedBody),
@@ -942,13 +949,17 @@ class WooksHttp extends WooksAdapterBase {
942
949
  this.server = server;
943
950
  }
944
951
  respond(data) {
945
- void this.responder.respond(data)?.catch(e => {
952
+ const { endEvent } = useHttpContext();
953
+ void this.responder
954
+ .respond(data)
955
+ ?.catch(e => {
946
956
  this.logger.error('Uncought response exception', e);
947
- });
957
+ })
958
+ .finally(() => endEvent());
948
959
  }
949
960
  getServerCb() {
950
961
  return async (req, res) => {
951
- const { restoreCtx, clearCtx } = createHttpContext({ req, res }, this.mergeEventOptions(this.opts?.eventOptions));
962
+ const { restoreCtx } = createHttpContext({ req, res }, this.mergeEventOptions(this.opts?.eventOptions));
952
963
  const { handlers } = this.wooks.lookup(req.method, req.url);
953
964
  if (handlers || this.opts?.onNotFound) {
954
965
  try {
@@ -958,13 +969,11 @@ class WooksHttp extends WooksAdapterBase {
958
969
  this.logger.error('Internal error, please report', error);
959
970
  restoreCtx();
960
971
  this.respond(error);
961
- clearCtx();
962
972
  }
963
973
  }
964
974
  else {
965
975
  this.logger.debug(`404 Not found (${req.method})${req.url}`);
966
976
  this.respond(new HttpError(404));
967
- clearCtx();
968
977
  }
969
978
  };
970
979
  }
@@ -979,7 +988,6 @@ class WooksHttp extends WooksAdapterBase {
979
988
  const result = await promise;
980
989
  restoreCtx();
981
990
  this.respond(result);
982
- clearCtx();
983
991
  break;
984
992
  }
985
993
  catch (error) {
@@ -992,7 +1000,6 @@ class WooksHttp extends WooksAdapterBase {
992
1000
  if (isLastHandler) {
993
1001
  restoreCtx();
994
1002
  this.respond(error);
995
- clearCtx();
996
1003
  }
997
1004
  }
998
1005
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wooksjs/event-http",
3
- "version": "0.4.35",
3
+ "version": "0.4.37",
4
4
  "description": "@wooksjs/event-http",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
@@ -39,9 +39,9 @@
39
39
  "url": "https://github.com/wooksjs/wooksjs/issues"
40
40
  },
41
41
  "peerDependencies": {
42
- "wooks": "0.4.35",
42
+ "wooks": "0.4.37",
43
43
  "@prostojs/router": "^0.2.1",
44
- "@wooksjs/event-core": "0.4.35"
44
+ "@wooksjs/event-core": "0.4.37"
45
45
  },
46
46
  "dependencies": {
47
47
  "@prostojs/logger": "^0.4.0"