@zenofolio/hyper-decor 1.0.43 → 1.0.46

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.
@@ -3,6 +3,7 @@ export declare const KEY_TYPE_CONTROLLER = "hyper:type:controller";
3
3
  export declare const KEY_TYPE_MODULE = "hyper:type:module";
4
4
  export declare const KEY_TYPE_ROUTE = "hyper:type:route";
5
5
  export declare const KEY_TYPE_SERVICE = "hyper:type:service";
6
+ export declare const KEY_TYPE_GUARD = "hyper:type:guard";
6
7
  export type KeyTypes = typeof KEY_TYPE_APP | typeof KEY_TYPE_CONTROLLER | typeof KEY_TYPE_MODULE | typeof KEY_TYPE_SERVICE | typeof KEY_TYPE_ROUTE;
7
8
  export declare const KEY_PARAMS_APP = "hyper:type:app";
8
9
  export declare const KEY_PARAMS_CONTROLLER = "hyper:type:controller";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.METADATA_STATE_KEYS = exports.METADATA_PARAMS_KEYS = exports.METADATA_METHOD_KEYS = exports.METADATA_STORE_KEYS = exports.METADATA_KEYS = exports.METADATA_HYPER_TYPE = exports.DESIGN_TYPE = exports.DESIGN_RETURNTYPE = exports.DESIGN_PARAMTYPES = exports.KEY_STATE_BY_PASS = exports.KEY_STATE_PREPARED = exports.KEY_STATE_CREATED = exports.KEY_STATE_UPDATED = exports.KEY_PARAMS_PASS = exports.KEY_PARAMS_ROLE = exports.KEY_PARAMS_SCOPE = exports.KEY_PARAMS_MIDDLEWARES = exports.KEY_PARAMS_PARAM = exports.KEY_PARAMS_ROUTE = exports.KEY_PARAMS_MODULE = exports.KEY_PARAMS_CONTROLLER = exports.KEY_PARAMS_APP = exports.KEY_TYPE_SERVICE = exports.KEY_TYPE_ROUTE = exports.KEY_TYPE_MODULE = exports.KEY_TYPE_CONTROLLER = exports.KEY_TYPE_APP = void 0;
3
+ exports.METADATA_STATE_KEYS = exports.METADATA_PARAMS_KEYS = exports.METADATA_METHOD_KEYS = exports.METADATA_STORE_KEYS = exports.METADATA_KEYS = exports.METADATA_HYPER_TYPE = exports.DESIGN_TYPE = exports.DESIGN_RETURNTYPE = exports.DESIGN_PARAMTYPES = exports.KEY_STATE_BY_PASS = exports.KEY_STATE_PREPARED = exports.KEY_STATE_CREATED = exports.KEY_STATE_UPDATED = exports.KEY_PARAMS_PASS = exports.KEY_PARAMS_ROLE = exports.KEY_PARAMS_SCOPE = exports.KEY_PARAMS_MIDDLEWARES = exports.KEY_PARAMS_PARAM = exports.KEY_PARAMS_ROUTE = exports.KEY_PARAMS_MODULE = exports.KEY_PARAMS_CONTROLLER = exports.KEY_PARAMS_APP = exports.KEY_TYPE_GUARD = exports.KEY_TYPE_SERVICE = exports.KEY_TYPE_ROUTE = exports.KEY_TYPE_MODULE = exports.KEY_TYPE_CONTROLLER = exports.KEY_TYPE_APP = void 0;
4
4
  //////////////////////////////
5
5
  /// Types constants
6
6
  //////////////////////////////
@@ -9,6 +9,7 @@ exports.KEY_TYPE_CONTROLLER = "hyper:type:controller";
9
9
  exports.KEY_TYPE_MODULE = "hyper:type:module";
10
10
  exports.KEY_TYPE_ROUTE = "hyper:type:route";
11
11
  exports.KEY_TYPE_SERVICE = "hyper:type:service";
12
+ exports.KEY_TYPE_GUARD = "hyper:type:guard";
12
13
  //////////////////////////////
13
14
  /// Params constants
14
15
  //////////////////////////////
@@ -1,3 +1,21 @@
1
+ import { MiddlewareHandler } from "hyper-express";
2
+ import { RoleType, ScopeType } from "../decorators";
3
+ interface HyperAppStoreItemBase {
4
+ middlewares: Set<MiddlewareHandler>;
5
+ roles: Set<RoleType>;
6
+ scopes: Set<ScopeType>;
7
+ }
8
+ interface HyperAppStoreRoute extends HyperAppStoreItemBase {
9
+ method: string;
10
+ path: string;
11
+ handler: string;
12
+ }
13
+ export interface HyperAppStoreController extends HyperAppStoreItemBase {
14
+ routes: Map<string, HyperAppStoreRoute>;
15
+ }
16
+ export interface HyperAppStoreModule {
17
+ controllers: Map<string, string>;
18
+ }
1
19
  export default class HyperAppStore {
2
20
  private roles;
3
21
  private scopes;
@@ -8,3 +26,4 @@ export default class HyperAppStore {
8
26
  addRole(role: string): void;
9
27
  addModuleRole(module: string, role: string): void;
10
28
  }
29
+ export {};
@@ -0,0 +1,3 @@
1
+ import { MiddlewareHandler } from "hyper-express";
2
+ import { MiddlewareType } from "../../decorators";
3
+ export default function middlewareTransformer(list: MiddlewareType[]): MiddlewareHandler[];
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = middlewareTransformer;
4
+ const tsyringe_1 = require("tsyringe");
5
+ function middlewareTransformer(list) {
6
+ return list
7
+ .map((middleware) => {
8
+ if (isClass(middleware)) {
9
+ const instance = tsyringe_1.container.resolve(middleware);
10
+ return instance.handle.bind(instance);
11
+ }
12
+ if (typeof middleware === "function") {
13
+ return middleware;
14
+ }
15
+ return null;
16
+ })
17
+ .filter((middleware) => !!middleware);
18
+ }
19
+ const isClass = (fn) => typeof fn === "function" && `${fn}`.indexOf("class") === 0;
@@ -16,8 +16,8 @@ export declare const getScopes: (request: Request) => string[] | undefined;
16
16
  /**
17
17
  * Check if request has required scopes
18
18
  *
19
- * @param request
20
- * @param scopes
21
- * @returns
19
+ * @param request - The incoming request
20
+ * @param scopes - Required scopes to check
21
+ * @returns `true` if the request has all required scopes, otherwise `false`
22
22
  */
23
23
  export declare const hasScopes: (request: Request, scopes: HyperScopeOptions) => boolean;
@@ -33,15 +33,14 @@ exports.getScopes = getScopes;
33
33
  /**
34
34
  * Check if request has required scopes
35
35
  *
36
- * @param request
37
- * @param scopes
38
- * @returns
36
+ * @param request - The incoming request
37
+ * @param scopes - Required scopes to check
38
+ * @returns `true` if the request has all required scopes, otherwise `false`
39
39
  */
40
40
  const hasScopes = (request, scopes) => {
41
- const requestScopes = (0, exports.getScopes)(request);
42
- if (!requestScopes) {
43
- return false;
44
- }
45
- return (0, object_util_1.$array)(scopes).every((scope) => requestScopes.includes(scope));
41
+ const requestScopes = new Set((0, exports.getScopes)(request) || []);
42
+ if (requestScopes.has("*"))
43
+ return true;
44
+ return (0, object_util_1.$array)(scopes).every(scope => requestScopes.has(scope));
46
45
  };
47
46
  exports.hasScopes = hasScopes;
@@ -14,8 +14,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.HyperApp = void 0;
16
16
  require("reflect-metadata");
17
- const constants_1 = require("../__internals/constants");
18
17
  const hyper_express_1 = require("hyper-express");
18
+ const constants_1 = require("../__internals/constants");
19
19
  const decorator_base_1 = require("../__internals/decorator-base");
20
20
  const path_util_1 = require("../__internals/utils/path.util");
21
21
  const scope_transfrom_1 = __importDefault(require("../__internals/transform/scope.transfrom"));
@@ -24,6 +24,7 @@ const object_util_1 = require("../__internals/utils/object.util");
24
24
  const merge_metadata_1 = require("../__internals/helpers/merge-metadata");
25
25
  const tsyringe_1 = require("tsyringe");
26
26
  const collectors_1 = require("../collectors");
27
+ const middleware_transform_1 = __importDefault(require("../__internals/transform/middleware.transform"));
27
28
  /**
28
29
  * Decorator to define the main application class with assigned modules.
29
30
  * @param modules - List of modules to be used in the application.
@@ -107,7 +108,7 @@ function getData(target) {
107
108
  const app = (0, decorator_base_1.getDecorData)(constants_1.KEY_PARAMS_APP, target);
108
109
  const module = (0, decorator_base_1.getDecorData)(constants_1.KEY_PARAMS_MODULE, target);
109
110
  const controller = (0, decorator_base_1.getDecorData)(constants_1.KEY_TYPE_CONTROLLER, target);
110
- const middlewares = (_a = (0, decorator_base_1.getDecorData)(constants_1.KEY_PARAMS_MIDDLEWARES, target)) !== null && _a !== void 0 ? _a : [];
111
+ const middlewares = (0, middleware_transform_1.default)((_a = (0, decorator_base_1.getDecorData)(constants_1.KEY_PARAMS_MIDDLEWARES, target)) !== null && _a !== void 0 ? _a : []);
111
112
  const scopes = (_b = (0, decorator_base_1.getDecorData)(constants_1.KEY_PARAMS_SCOPE, target)) !== null && _b !== void 0 ? _b : [];
112
113
  const roles = (_c = (0, decorator_base_1.getDecorData)(constants_1.KEY_PARAMS_ROLE, target)) !== null && _c !== void 0 ? _c : [];
113
114
  const routes = (_d = (0, decorator_base_1.getDecorData)(constants_1.KEY_PARAMS_ROUTE, target)) !== null && _d !== void 0 ? _d : {
@@ -1,10 +1,11 @@
1
1
  import "reflect-metadata";
2
2
  import { MiddlewareHandler } from "hyper-express";
3
+ import { MiddlewareType } from "./types";
3
4
  /**
4
5
  * Middleware decorator to attach middleware to controllers, modules, and routes.
5
6
  */
6
7
  export declare const Middleware: {
7
- (...middleware: MiddlewareHandler[]): ClassDecorator & MethodDecorator;
8
+ (...middleware: MiddlewareType[]): ClassDecorator & MethodDecorator;
8
9
  /**
9
10
  * Exclude middleware from matching paths.
10
11
  *
@@ -1,4 +1,4 @@
1
- import type { MiddlewareHandler, Request, Response, ServerConstructorOptions } from "hyper-express";
1
+ import type { MiddlewareHandler, MiddlewareNext, Request, Response, ServerConstructorOptions } from "hyper-express";
2
2
  export type Constructor<R extends any = any> = new (...args: any[]) => R;
3
3
  export type ConstructorDecorator = (target: Constructor, kay?: any, descriptor?: PropertyDescriptor) => Constructor;
4
4
  export type HyperClassDecorator<T> = (options?: T) => ConstructorDecorator;
@@ -84,8 +84,14 @@ export interface RouteMetadata {
84
84
  propertyKey: string;
85
85
  handler: (...args: any[]) => any;
86
86
  }
87
+ export declare abstract class MiddlewareClass {
88
+ abstract handle(req: Request, res: Response, next: MiddlewareNext): void;
89
+ }
90
+ export interface MiddlewareClassConstructor {
91
+ new (...args: any[]): MiddlewareClass;
92
+ }
87
93
  /**
88
94
  * Type definition for Middleware.
89
95
  * Middleware can be a single handler or an array of handlers.
90
96
  */
91
- export type MiddlewareType = MiddlewareHandler | MiddlewareHandler[];
97
+ export type MiddlewareType = MiddlewareHandler | MiddlewareClassConstructor;
@@ -1,3 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
3
+ exports.MiddlewareClass = void 0;
4
+ class MiddlewareClass {
5
+ }
6
+ exports.MiddlewareClass = MiddlewareClass;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenofolio/hyper-decor",
3
- "version": "1.0.43",
3
+ "version": "1.0.46",
4
4
  "description": "Project core with utilities and features",
5
5
  "main": "dist/index.js",
6
6
  "author": "zenozaga",
@@ -24,10 +24,8 @@
24
24
  "typescript": "5.6.2"
25
25
  },
26
26
  "dependencies": {
27
- "@zenofolio/hyper-decor": "file:",
28
27
  "core-decorators": "^0.20.0",
29
28
  "file-type": "^19.5.0",
30
- "hyper-express-decorators": "file:",
31
29
  "reflect-metadata": "^0.2.2",
32
30
  "tsyringe": "^4.8.0"
33
31
  },
@@ -58,4 +56,4 @@
58
56
  "default": "./src/extension.ts"
59
57
  }
60
58
  }
61
- }
59
+ }