@heliosjs/middlewares 2.0.1 → 3.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.
package/dist/catch.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ErrorCB } from './types/core';
1
+ import { ErorrHandler } from './types/core';
2
2
  /**
3
3
  * Decorator to register a global or controller-level error handler.
4
4
  *
@@ -7,7 +7,7 @@ import { ErrorCB } from './types/core';
7
7
  * It attaches the handler as metadata on the target class, allowing the framework to
8
8
  * retrieve and execute the error handler appropriately during runtime.
9
9
  *
10
- * @param {ErrorCB} handler - The error callback function to handle errors.
10
+ * @param {ErorrHandler} handler - The error callback function to handle errors.
11
11
  *
12
12
  * @returns {Function} A class decorator function that defines the error handler metadata.
13
13
  *
@@ -26,4 +26,4 @@ import { ErrorCB } from './types/core';
26
26
  * This metadata is accessible via Reflect API and used internally by the framework
27
27
  * to invoke the registered error handler when errors occur.
28
28
  */
29
- export declare function Catch(handler: ErrorCB): (target: any) => any;
29
+ export declare function Catch(handler: ErorrHandler): (target: any) => any;
package/dist/catch.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Catch = Catch;
4
4
  const constants_1 = require("./constants");
5
+ const shared_1 = require("./utils/shared");
5
6
  /**
6
7
  * Decorator to register a global or controller-level error handler.
7
8
  *
@@ -10,7 +11,7 @@ const constants_1 = require("./constants");
10
11
  * It attaches the handler as metadata on the target class, allowing the framework to
11
12
  * retrieve and execute the error handler appropriately during runtime.
12
13
  *
13
- * @param {ErrorCB} handler - The error callback function to handle errors.
14
+ * @param {ErorrHandler} handler - The error callback function to handle errors.
14
15
  *
15
16
  * @returns {Function} A class decorator function that defines the error handler metadata.
16
17
  *
@@ -31,7 +32,9 @@ const constants_1 = require("./constants");
31
32
  */
32
33
  function Catch(handler) {
33
34
  return function (target) {
34
- Reflect.defineMetadata(constants_1.CATCH, handler, target);
35
+ const meta = (0, shared_1.reflectMeta)(target, 'sub');
36
+ meta.catch.push(handler);
37
+ Reflect.defineMetadata(constants_1.CONTROLLER_CONFIG, meta, target);
35
38
  return target;
36
39
  };
37
40
  }
package/dist/catch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"catch.js","sourceRoot":"","sources":["../src/catch.ts"],"names":[],"mappings":";;AA8BA,sBAMC;AApCD,2CAAoC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,KAAK,CAAC,OAAgB;IACpC,OAAO,UAAU,MAAW;QAC1B,OAAO,CAAC,cAAc,CAAC,iBAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE/C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"catch.js","sourceRoot":"","sources":["../src/catch.ts"],"names":[],"mappings":";;AA+BA,sBAQC;AAvCD,2CAAgD;AAGhD,2CAA6C;AAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,KAAK,CAAC,OAAqB;IACzC,OAAO,UAAU,MAAW;QAC1B,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAExD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -12,7 +12,7 @@ export declare const USE_MIDDLEWARE = "controller:usemiddleware";
12
12
  export declare const WS_HANDLER = "websocket:handler";
13
13
  export declare const WS_TOPIC_KEY = "websocket:topic";
14
14
  export declare const WS_SERVICE_KEY = "websocket:service";
15
- export declare const INTECEPT = "server:intercept";
15
+ export declare const INTERCEPT = "server:intercept";
16
16
  export declare const CATCH = "server:catch";
17
17
  export declare const SANITIZE = "action:sanitize";
18
18
  export declare const STOPPED = "\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\u2551 \uD83D\uDC4B Server stopped \u2551\n\u2551 \uD83D\uDCCA Status: STOPPED \u2551\n\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n ";
@@ -23,3 +23,4 @@ export declare const SSE_METADATA_KEY = "sse:handlers";
23
23
  export declare const SSE_TOPIC_KEY = "sse:topics";
24
24
  export declare const SSE_SERVICE_KEY = "sse:service";
25
25
  export declare const STATIC_METADATA_KEY = "static:config";
26
+ export declare const CONTROLLER_CONFIG = "CONTROLLER_CONFIG";
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STATIC_METADATA_KEY = exports.SSE_SERVICE_KEY = exports.SSE_TOPIC_KEY = exports.SSE_METADATA_KEY = exports.CORS_METADATA = exports.TO_VALIDATE = exports.OK_STATUSES = exports.STOPPED = exports.SANITIZE = exports.CATCH = exports.INTECEPT = exports.WS_SERVICE_KEY = exports.WS_TOPIC_KEY = exports.WS_HANDLER = exports.USE_MIDDLEWARE = exports.SERVER_CONFIG_KEY = exports.OK_METADATA_KEY = exports.ENDPOINT = exports.INTERCEPTOR = exports.CONTROLLERS = exports.MIDDLEWARES = exports.ROUTE_MIDDLEWARES = exports.ROUTE_PREFIX = exports.APP_METADATA_KEY = exports.PARAM_METADATA_KEY = void 0;
3
+ exports.CONTROLLER_CONFIG = exports.STATIC_METADATA_KEY = exports.SSE_SERVICE_KEY = exports.SSE_TOPIC_KEY = exports.SSE_METADATA_KEY = exports.CORS_METADATA = exports.TO_VALIDATE = exports.OK_STATUSES = exports.STOPPED = exports.SANITIZE = exports.CATCH = exports.INTERCEPT = exports.WS_SERVICE_KEY = exports.WS_TOPIC_KEY = exports.WS_HANDLER = exports.USE_MIDDLEWARE = exports.SERVER_CONFIG_KEY = exports.OK_METADATA_KEY = exports.ENDPOINT = exports.INTERCEPTOR = exports.CONTROLLERS = exports.MIDDLEWARES = exports.ROUTE_MIDDLEWARES = exports.ROUTE_PREFIX = exports.APP_METADATA_KEY = exports.PARAM_METADATA_KEY = void 0;
4
4
  exports.PARAM_METADATA_KEY = 'design:parameters';
5
5
  exports.APP_METADATA_KEY = 'app:configuration';
6
6
  exports.ROUTE_PREFIX = 'route:prefix';
@@ -15,7 +15,7 @@ exports.USE_MIDDLEWARE = 'controller:usemiddleware';
15
15
  exports.WS_HANDLER = 'websocket:handler';
16
16
  exports.WS_TOPIC_KEY = 'websocket:topic';
17
17
  exports.WS_SERVICE_KEY = 'websocket:service';
18
- exports.INTECEPT = 'server:intercept';
18
+ exports.INTERCEPT = 'server:intercept';
19
19
  exports.CATCH = 'server:catch';
20
20
  exports.SANITIZE = 'action:sanitize';
21
21
  exports.STOPPED = `
@@ -31,4 +31,5 @@ exports.SSE_METADATA_KEY = 'sse:handlers';
31
31
  exports.SSE_TOPIC_KEY = 'sse:topics';
32
32
  exports.SSE_SERVICE_KEY = 'sse:service';
33
33
  exports.STATIC_METADATA_KEY = 'static:config';
34
+ exports.CONTROLLER_CONFIG = 'CONTROLLER_CONFIG';
34
35
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,mBAAmB,CAAC;AACzC,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,WAAW,GAAG,wBAAwB,CAAC;AACvC,QAAA,WAAW,GAAG,iBAAiB,CAAC;AAChC,QAAA,WAAW,GAAG,kBAAkB,CAAC;AACjC,QAAA,QAAQ,GAAG,iBAAiB,CAAC;AAC7B,QAAA,eAAe,GAAG,WAAW,CAAC;AAE9B,QAAA,iBAAiB,GAAG,eAAe,CAAC;AACpC,QAAA,cAAc,GAAG,0BAA0B,CAAC;AAE5C,QAAA,UAAU,GAAG,mBAAmB,CAAC;AACjC,QAAA,YAAY,GAAG,iBAAiB,CAAC;AACjC,QAAA,cAAc,GAAG,mBAAmB,CAAC;AACrC,QAAA,QAAQ,GAAG,kBAAkB,CAAC;AAC9B,QAAA,KAAK,GAAG,cAAc,CAAC;AACvB,QAAA,QAAQ,GAAG,iBAAiB,CAAC;AAE7B,QAAA,OAAO,GAAG;;;;;WAKZ,CAAC;AAEC,QAAA,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjE,QAAA,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAElE,QAAA,aAAa,GAAG,aAAa,CAAC;AAC9B,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAClC,QAAA,aAAa,GAAG,YAAY,CAAC;AAC7B,QAAA,eAAe,GAAG,aAAa,CAAC;AAChC,QAAA,mBAAmB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,mBAAmB,CAAC;AACzC,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,WAAW,GAAG,wBAAwB,CAAC;AACvC,QAAA,WAAW,GAAG,iBAAiB,CAAC;AAChC,QAAA,WAAW,GAAG,kBAAkB,CAAC;AACjC,QAAA,QAAQ,GAAG,iBAAiB,CAAC;AAC7B,QAAA,eAAe,GAAG,WAAW,CAAC;AAE9B,QAAA,iBAAiB,GAAG,eAAe,CAAC;AACpC,QAAA,cAAc,GAAG,0BAA0B,CAAC;AAE5C,QAAA,UAAU,GAAG,mBAAmB,CAAC;AACjC,QAAA,YAAY,GAAG,iBAAiB,CAAC;AACjC,QAAA,cAAc,GAAG,mBAAmB,CAAC;AACrC,QAAA,SAAS,GAAG,kBAAkB,CAAC;AAC/B,QAAA,KAAK,GAAG,cAAc,CAAC;AACvB,QAAA,QAAQ,GAAG,iBAAiB,CAAC;AAE7B,QAAA,OAAO,GAAG;;;;;WAKZ,CAAC;AAEC,QAAA,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjE,QAAA,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAElE,QAAA,aAAa,GAAG,aAAa,CAAC;AAC9B,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAClC,QAAA,aAAa,GAAG,YAAY,CAAC;AAC7B,QAAA,eAAe,GAAG,aAAa,CAAC;AAChC,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAEtC,QAAA,iBAAiB,GAAG,mBAAmB,CAAC"}
package/dist/cors.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Cors = Cors;
4
4
  const constants_1 = require("./constants");
5
5
  const core_1 = require("./types/core");
6
+ const shared_1 = require("./utils/shared");
6
7
  /**
7
8
  * Decorator to configure Cross-Origin Resource Sharing (CORS) settings for HTTP controllers or methods.
8
9
  *
@@ -50,7 +51,9 @@ function Cors(config = {}) {
50
51
  Reflect.defineMetadata(constants_1.CORS_METADATA, finalConfig, target, propertyKey);
51
52
  }
52
53
  else {
53
- Reflect.defineMetadata(constants_1.CORS_METADATA, finalConfig, target.prototype || target);
54
+ const meta = (0, shared_1.reflectMeta)(target, 'sub');
55
+ meta.cors.push(finalConfig);
56
+ Reflect.defineMetadata(constants_1.CONTROLLER_CONFIG, meta, target);
54
57
  }
55
58
  };
56
59
  }
package/dist/cors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":";;AAsCA,oBAgBC;AAtDD,2CAA4C;AAC5C,uCAAwD;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAgB,IAAI,CAAC,SAAqB,EAAE;IAC1C,OAAO,UAAU,MAAW,EAAE,WAAoB,EAAE,UAA+B;QACjF,MAAM,aAAa,GAAe;YAChC,MAAM,EAAE,GAAG;YACX,oBAAoB,EAAE,GAAG;YACzB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAY,CAAC;SACnC,CAAC;QAEF,MAAM,WAAW,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAEpD,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,yBAAa,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,cAAc,CAAC,yBAAa,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":";;AAuCA,oBAkBC;AAzDD,2CAA+D;AAC/D,uCAAwD;AACxD,2CAA6C;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAgB,IAAI,CAAC,SAAqB,EAAE;IAC1C,OAAO,UAAU,MAAW,EAAE,WAAoB,EAAE,UAA+B;QACjF,MAAM,aAAa,GAAe;YAChC,MAAM,EAAE,GAAG;YACX,oBAAoB,EAAE,GAAG;YACzB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAY,CAAC;SACnC,CAAC;QAEF,MAAM,WAAW,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAEpD,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,yBAAa,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const reflectMeta: (target: object) => void;
package/dist/helper.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reflectMeta = void 0;
4
+ const reflectMeta = (target) => { };
5
+ exports.reflectMeta = reflectMeta;
6
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE,GAAE,CAAC,CAAC;AAArC,QAAA,WAAW,eAA0B"}
package/dist/sanitize.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Sanitize = Sanitize;
4
4
  const constants_1 = require("./constants");
5
+ const shared_1 = require("./utils/shared");
5
6
  /**
6
7
  * Decorator to apply sanitization configurations to a controller or method.
7
8
  *
@@ -47,7 +48,9 @@ function Sanitize(sanitizeConfig) {
47
48
  Reflect.defineMetadata(constants_1.SANITIZE, configs, target, propertyKey);
48
49
  }
49
50
  else {
50
- Reflect.defineMetadata(constants_1.SANITIZE, configs, target.prototype || target);
51
+ const meta = (0, shared_1.reflectMeta)(target, 'sub');
52
+ meta.sanitizers.push(...configs);
53
+ Reflect.defineMetadata(constants_1.CONTROLLER_CONFIG, meta, target);
51
54
  }
52
55
  };
53
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":";;AAyCA,4BAUC;AAnDD,2CAAuC;AAGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,SAAgB,QAAQ,CAAC,cAAmD;IAC1E,OAAO,UAAU,MAAW,EAAE,WAAoB,EAAE,UAA+B;QACjF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAElF,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,oBAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,cAAc,CAAC,oBAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":";;AAyCA,4BAYC;AArDD,2CAA0D;AAE1D,2CAA6C;AAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,SAAgB,QAAQ,CAAC,cAAmD;IAC1E,OAAO,UAAU,MAAW,EAAE,WAAoB,EAAE,UAA+B;QACjF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAElF,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,oBAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -20,33 +20,13 @@ export type ControllerType = {
20
20
  new (...args: any[]): any;
21
21
  };
22
22
  export type ControllerInstance = InstanceType<ControllerType>;
23
- export type ControllerMetadata = {
24
- routePrefix: string;
25
- middlewares: MiddlewareCB[];
26
- interceptor?: InterceptorCB;
27
- subControllers: ControllerInstance[];
28
- errorHandler?: ErorrHandler;
29
- cors?: CORSConfig;
30
- sanitizers: SanitizerConfig[];
31
- };
32
23
  export interface ControllerConfig {
33
24
  prefix: string;
34
25
  middlewares?: Array<MiddlewareCB>;
35
26
  controllers?: ControllerInstance[];
36
27
  interceptor?: InterceptorCB;
28
+ cors?: CORSConfig;
37
29
  }
38
- export type RouteContext = {
39
- controllerInstance: any;
40
- controllerMeta: ControllerMetadata;
41
- path: string;
42
- method: string;
43
- middlewareChain: MiddlewareCB[];
44
- interceptorChain: InterceptorCB[];
45
- corsChain: CORSConfig[];
46
- errorHandlerChain: ErorrHandler[];
47
- subPath: string;
48
- sanitizersChain: SanitizerConfig[];
49
- };
50
30
  export type SSE_HANDLER_META = {
51
31
  type: string;
52
32
  method: string;
@@ -104,3 +84,17 @@ export type ControllerMeta = {
104
84
  }[];
105
85
  children?: ControllerMeta[];
106
86
  };
87
+ export type ControllerMetadata = {
88
+ prefix: string;
89
+ name: string;
90
+ middlewares: MiddlewareCB[];
91
+ interceptor?: InterceptorCB;
92
+ controllers: ControllerInstance[];
93
+ cors?: CORSConfig;
94
+ };
95
+ export type ControllerSubMetadata = {
96
+ use: MiddlewareCB[];
97
+ catch: ErorrHandler[];
98
+ cors: CORSConfig[];
99
+ sanitizers: SanitizerConfig[];
100
+ };
package/dist/use.js CHANGED
@@ -2,10 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Use = Use;
4
4
  const constants_1 = require("./constants");
5
+ const shared_1 = require("./utils/shared");
5
6
  function Use(middleware) {
6
7
  return function (target) {
7
- const existed = Reflect.getMetadata(constants_1.USE_MIDDLEWARE, target) || [];
8
- Reflect.defineMetadata(constants_1.USE_MIDDLEWARE, existed.concat(middleware).reverse(), target);
8
+ const middlewares = Array.isArray(middleware) ? middleware : [middleware];
9
+ const meta = (0, shared_1.reflectMeta)(target, 'sub');
10
+ meta.use.push(...middlewares);
11
+ Reflect.defineMetadata(constants_1.CONTROLLER_CONFIG, meta, target);
9
12
  return target;
10
13
  };
11
14
  }
package/dist/use.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../src/use.ts"],"names":[],"mappings":";;AAGA,kBAQC;AAXD,2CAA6C;AAG7C,SAAgB,GAAG,CAAC,UAAyC;IAC3D,OAAO,UAAU,MAAW;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,0BAAc,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAElE,OAAO,CAAC,cAAc,CAAC,0BAAc,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAErF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../src/use.ts"],"names":[],"mappings":";;AAIA,kBAUC;AAdD,2CAAgD;AAEhD,2CAA6C;AAE7C,SAAgB,GAAG,CAAC,UAAyC;IAC3D,OAAO,UAAU,MAAW;QAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAE1E,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC9B,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAExD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1,5 @@
1
+ import 'reflect-metadata';
2
+ import { ControllerMetadata, ControllerSubMetadata } from '../../types/core/controller';
1
3
  export declare const generateUniqueId: () => string;
4
+ export declare function reflectMeta(target: object, type?: 'direct'): ControllerMetadata;
5
+ export declare function reflectMeta(target: object, type: 'sub'): ControllerSubMetadata;
@@ -1,8 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateUniqueId = void 0;
4
+ exports.reflectMeta = reflectMeta;
5
+ require("reflect-metadata");
6
+ const constants_1 = require("../../constants");
4
7
  const generateUniqueId = () => {
5
8
  return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
6
9
  };
7
10
  exports.generateUniqueId = generateUniqueId;
11
+ function reflectMeta(target, type = 'direct') {
12
+ const data = Reflect.getMetadata(constants_1.CONTROLLER_CONFIG, target) ?? {};
13
+ if (type === 'sub') {
14
+ ['use', 'catch', 'cors', 'sanitizers'].forEach((prop) => {
15
+ if (!data[prop]?.length) {
16
+ data[prop] = [];
17
+ }
18
+ });
19
+ return data;
20
+ }
21
+ ['middlewares', 'controllers'].forEach((prop) => {
22
+ if (!data[prop]?.length) {
23
+ data[prop] = [];
24
+ }
25
+ });
26
+ return data;
27
+ }
8
28
  //# sourceMappingURL=helpers.js.map
@@ -1 +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
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/shared/helpers.ts"],"names":[],"mappings":";;;AAUA,kCAsBC;AAhCD,4BAA0B;AAC1B,+CAAoD;AAG7C,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;AAIF,SAAgB,WAAW,CACzB,MAAc,EACd,OAAyB,QAAQ;IAEjC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,6BAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAElE,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heliosjs/middlewares",
3
- "version": "2.0.1",
3
+ "version": "3.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.4.1",
33
+ "@heliosjs/core": "^2.0.0",
34
34
  "typescript": ">=4.0.0"
35
35
  }
36
36
  }