@heliosjs/middlewares 1.5.2 → 2.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.
@@ -1,4 +1,4 @@
1
- import { ServerResponse } from 'http';
1
+ import { ServerResponse } from 'node:http';
2
2
  import { HeliosError } from './error';
3
3
  import { Request } from './request';
4
4
  import { Response } from './response';
@@ -1,7 +1,8 @@
1
- import { ServerResponse } from 'http';
2
- import { ErrorCB, HTTP_METHODS, InterceptorCB, MiddlewareCB } from './common';
1
+ import { HTTP_METHODS, InterceptorCB, MiddlewareCB, ParamMetadata } from './common';
3
2
  import { CORSConfig } from './cors';
3
+ import { ErorrHandler } from './error';
4
4
  import { Request } from './request';
5
+ import { Response } from './response';
5
6
  import { SanitizerConfig } from './sanitize';
6
7
  export type ControllerClass = {
7
8
  new (...args: any[]): any;
@@ -13,7 +14,7 @@ export type ControllerMethods = Array<{
13
14
  middlewares?: MiddlewareCB[];
14
15
  }>;
15
16
  export type ControllerType = {
16
- handleRequest?(request: Request, response: ServerResponse): Promise<any>;
17
+ handleRequest?(request: Request, response: Response): Promise<any>;
17
18
  ws?: WsControllerHandlers;
18
19
  sse?: SeeControllerHandlers;
19
20
  new (...args: any[]): any;
@@ -24,7 +25,7 @@ export type ControllerMetadata = {
24
25
  middlewares: MiddlewareCB[];
25
26
  interceptor?: InterceptorCB;
26
27
  subControllers: ControllerInstance[];
27
- errorHandler?: ErrorCB;
28
+ errorHandler?: ErorrHandler;
28
29
  cors?: CORSConfig;
29
30
  sanitizers: SanitizerConfig[];
30
31
  };
@@ -42,7 +43,7 @@ export type RouteContext = {
42
43
  middlewareChain: MiddlewareCB[];
43
44
  interceptorChain: InterceptorCB[];
44
45
  corsChain: CORSConfig[];
45
- errorHandlerChain: ErrorCB[];
46
+ errorHandlerChain: ErorrHandler[];
46
47
  subPath: string;
47
48
  sanitizersChain: SanitizerConfig[];
48
49
  };
@@ -75,4 +76,31 @@ export type SeeControllerHandlers = {
75
76
  error: HandlerMeta[];
76
77
  };
77
78
  };
79
+ export type Route = {
80
+ name: string;
81
+ route: string;
82
+ method: HTTP_METHODS;
83
+ cors?: CORSConfig[];
84
+ ok: number;
85
+ paramMetadata: ParamMetadata[];
86
+ interceptors: InterceptorCB[];
87
+ functions: {
88
+ sanitizers: SanitizerConfig[];
89
+ errors: ErorrHandler[];
90
+ middlewares: MiddlewareCB[];
91
+ }[];
92
+ fn: (...args: any[]) => any;
93
+ };
78
94
  export type NextFunction = (error?: unknown) => void;
95
+ export type ControllerMeta = {
96
+ prefix: string;
97
+ routes: Route[];
98
+ interceptors: InterceptorCB[];
99
+ cors: CORSConfig[];
100
+ functions: {
101
+ sanitizers: SanitizerConfig[];
102
+ errors: ErorrHandler[];
103
+ middlewares: MiddlewareCB[];
104
+ }[];
105
+ children?: ControllerMeta[];
106
+ };
@@ -0,0 +1 @@
1
+ export declare const generateUniqueId: () => string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateUniqueId = void 0;
4
+ const generateUniqueId = () => {
5
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
6
+ };
7
+ exports.generateUniqueId = generateUniqueId;
8
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/shared/helpers.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
@@ -1,2 +1,3 @@
1
+ export * from './helpers';
1
2
  export * from './parsers';
2
3
  export * from './validate';
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./helpers"), exports);
17
18
  __exportStar(require("./parsers"), exports);
18
19
  __exportStar(require("./validate"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/shared/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/shared/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,4CAA0B;AAC1B,6CAA2B"}
@@ -1,7 +1,7 @@
1
- import { ServerResponse } from 'http';
1
+ import { ServerResponse } from 'node:http';
2
2
  import { ControllerType, ISSEServer, SSEClient, SSEMessage } from '../../types/core';
3
3
  export declare class SSEServer implements ISSEServer {
4
- private clients;
4
+ private readonly clients;
5
5
  controllers: any[];
6
6
  createConnection(res: ServerResponse): SSEClient;
7
7
  sendToClient(clientId: string, message: SSEMessage): boolean;
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SSEServer = void 0;
4
- const uuid_1 = require("uuid");
4
+ const shared_1 = require("../shared");
5
5
  class SSEServer {
6
6
  clients = new Map();
7
7
  controllers = [];
8
8
  createConnection(res) {
9
- const clientId = (0, uuid_1.v4)();
9
+ const clientId = (0, shared_1.generateUniqueId)();
10
10
  res.writeHead(200, {
11
11
  'Content-Type': 'text/event-stream',
12
12
  'Cache-Control': 'no-cache',
@@ -75,7 +75,7 @@ class SSEServer {
75
75
  for (const controller of this.controllers) {
76
76
  if (controller.sse.handlers && controller.sse.handlers[eventType]) {
77
77
  for (const handler of controller.sse.handlers[eventType]) {
78
- await handler.fn(event).catch(console.log);
78
+ await handler.fn(event).catch(console.error);
79
79
  }
80
80
  }
81
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/utils/sse/server.ts"],"names":[],"mappings":";;;AAEA,+BAAoC;AAGpC,MAAa,SAAS;IACZ,OAAO,GAA2B,IAAI,GAAG,EAAE,CAAC;IACpD,WAAW,GAAU,EAAE,CAAC;IAEjB,gBAAgB,CAAC,GAAmB;QACzC,MAAM,QAAQ,GAAG,IAAA,SAAM,GAAE,CAAC;QAE1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,UAAU,EAAE,YAAY;YACxB,6BAA6B,EAAE,GAAG;SACnC,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE7B,MAAM,MAAM,GAAc;YACxB,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,IAAI,GAAG,EAAE;YACjB,IAAI,EAAE,EAAE;YACR,WAAW,EAAE,IAAI,IAAI,EAAE;SACxB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEnC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;YACjC,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,QAAgB,EAAE,OAAmB;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,IAAI,CAAC;YACH,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,KAAK;gBAAE,UAAU,IAAI,UAAU,OAAO,CAAC,KAAK,IAAI,CAAC;YAC7D,IAAI,OAAO,CAAC,EAAE;gBAAE,UAAU,IAAI,OAAO,OAAO,CAAC,EAAE,IAAI,CAAC;YACpD,IAAI,OAAO,CAAC,KAAK;gBAAE,UAAU,IAAI,UAAU,OAAO,CAAC,KAAK,IAAI,CAAC;YAE7D,MAAM,OAAO,GACX,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEjF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,UAAU,IAAI,IAAI,CAAC;YAEnB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,SAAS,CAAC,OAAmB,EAAE,eAAwB;QAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;YACnC,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,QAAQ;QACb,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,mBAAmB,CAAC,WAA6B;QAC/C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,KAAe;QAC9D,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClE,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzD,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA3FD,8BA2FC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/utils/sse/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heliosjs/middlewares",
3
- "version": "1.5.2",
3
+ "version": "2.0.0",
4
4
  "description": "Core functionality for Quantum Flow",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -30,7 +30,7 @@
30
30
  "reflect-metadata": "^0.2.2"
31
31
  },
32
32
  "peerDependencies": {
33
- "@heliosjs/core": "^1.3.0",
33
+ "@heliosjs/core": "^1.4.0",
34
34
  "typescript": ">=4.0.0"
35
35
  }
36
36
  }