fragment-ts 1.0.32 → 1.0.34

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.
Files changed (28) hide show
  1. package/dist/cli/commands/init.command.js +1 -1
  2. package/dist/core/decorators/exception-filter.decorator.d.ts +1 -1
  3. package/dist/core/decorators/exception-filter.decorator.d.ts.map +1 -1
  4. package/dist/core/decorators/exception-filter.decorator.js +13 -6
  5. package/dist/core/decorators/exception-filter.decorator.js.map +1 -1
  6. package/dist/core/decorators/guard.decorator.d.ts +1 -1
  7. package/dist/core/decorators/guard.decorator.d.ts.map +1 -1
  8. package/dist/core/decorators/guard.decorator.js +13 -6
  9. package/dist/core/decorators/guard.decorator.js.map +1 -1
  10. package/dist/core/decorators/interceptor.decorator.d.ts +1 -1
  11. package/dist/core/decorators/interceptor.decorator.d.ts.map +1 -1
  12. package/dist/core/decorators/interceptor.decorator.js +12 -6
  13. package/dist/core/decorators/interceptor.decorator.js.map +1 -1
  14. package/dist/core/decorators/middleware.decorator.d.ts +1 -1
  15. package/dist/core/decorators/middleware.decorator.d.ts.map +1 -1
  16. package/dist/core/decorators/middleware.decorator.js +10 -6
  17. package/dist/core/decorators/middleware.decorator.js.map +1 -1
  18. package/dist/index.d.ts +7 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -0
  21. package/dist/index.js.map +1 -1
  22. package/package.json +1 -1
  23. package/src/cli/commands/init.command.ts +1 -1
  24. package/src/core/decorators/exception-filter.decorator.ts +29 -6
  25. package/src/core/decorators/guard.decorator.ts +28 -5
  26. package/src/core/decorators/interceptor.decorator.ts +32 -6
  27. package/src/core/decorators/middleware.decorator.ts +30 -6
  28. package/src/index.ts +7 -2
@@ -180,7 +180,7 @@ class InitCommand {
180
180
  "migrate:revert": "fragment migrate:revert",
181
181
  },
182
182
  dependencies: {
183
- "fragment-ts": "^1.0.32",
183
+ "fragment-ts": "^1.0.34",
184
184
  "reflect-metadata": "^0.1.13",
185
185
  },
186
186
  devDependencies: {
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * @ExceptionFilter - Handle exceptions globally or per controller/method
3
3
  */
4
- export declare function ExceptionFilter(filterClass: new () => any): ClassDecorator & MethodDecorator;
4
+ export declare function FragmentExceptionFilter(filterClass: new () => any): ClassDecorator & MethodDecorator;
5
5
  //# sourceMappingURL=exception-filter.decorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exception-filter.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/exception-filter.decorator.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,UAAU,GAAG,GAAG,cAAc,GAAG,eAAe,CAY5F"}
1
+ {"version":3,"file":"exception-filter.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/exception-filter.decorator.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,UAAU,GAAG,GACzB,cAAc,GAAG,eAAe,CAiClC"}
@@ -1,22 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExceptionFilter = ExceptionFilter;
3
+ exports.FragmentExceptionFilter = FragmentExceptionFilter;
4
4
  const metadata_keys_1 = require("../metadata/metadata-keys");
5
5
  const metadata_storage_1 = require("../metadata/metadata-storage");
6
6
  /**
7
7
  * @ExceptionFilter - Handle exceptions globally or per controller/method
8
8
  */
9
- function ExceptionFilter(filterClass) {
9
+ function FragmentExceptionFilter(filterClass) {
10
10
  return (target, propertyKey) => {
11
11
  if (propertyKey === undefined) {
12
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_FILTERS, filterClass, target);
12
+ // Class-level
13
+ const existing = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.USE_FILTERS, target) || [];
14
+ const updated = [...existing, filterClass];
15
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_FILTERS, updated, target);
13
16
  const storage = metadata_storage_1.MetadataStorage.getInstance();
14
- storage.addClassMetadata?.(target, 'exceptionFilter', filterClass);
17
+ storage.addClassMetadata?.(target, "exceptionFilter", filterClass);
15
18
  }
16
19
  else {
17
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_FILTERS, filterClass, target, propertyKey);
20
+ // Method-level
21
+ const existing = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.USE_FILTERS, target, propertyKey) ||
22
+ [];
23
+ const updated = [...existing, filterClass];
24
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_FILTERS, updated, target, propertyKey);
18
25
  const storage = metadata_storage_1.MetadataStorage.getInstance();
19
- storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), 'exceptionFilter', filterClass);
26
+ storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), "exceptionFilter", filterClass);
20
27
  }
21
28
  };
22
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exception-filter.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/exception-filter.decorator.ts"],"names":[],"mappings":";;AAOA,0CAYC;AAlBD,6DAA0D;AAC1D,mEAA+D;AAE/D;;GAEG;AACH,SAAgB,eAAe,CAAC,WAA0B;IACxD,OAAO,CAAC,MAAW,EAAE,WAA6B,EAAE,EAAE;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACpF,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"exception-filter.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/exception-filter.decorator.ts"],"names":[],"mappings":";;AAOA,0DAmCC;AAzCD,6DAA0D;AAC1D,mEAA+D;AAE/D;;GAEG;AACH,SAAgB,uBAAuB,CACrC,WAA0B;IAE1B,OAAO,CAAC,MAAW,EAAE,WAA6B,EAAE,EAAE;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc;YACd,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,6BAAa,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC3C,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAEnE,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,eAAe;YACf,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,6BAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC;gBACnE,EAAE,CAAC;YACL,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC3C,OAAO,CAAC,cAAc,CACpB,6BAAa,CAAC,WAAW,EACzB,OAAO,EACP,MAAM,EACN,WAAW,CACZ,CAAC;YAEF,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,iBAAiB,EAAE,CACzB,MAAM,CAAC,WAAW,EAClB,WAAW,CAAC,QAAQ,EAAE,EACtB,iBAAiB,EACjB,WAAW,CACZ,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * @Guard - Apply authorization/activation guard
3
3
  */
4
- export declare function Guard(guardClass: new () => any): ClassDecorator & MethodDecorator;
4
+ export declare function FragmentGuard(guardClass: new () => any): ClassDecorator & MethodDecorator;
5
5
  //# sourceMappingURL=guard.decorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guard.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/guard.decorator.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,GAAG,cAAc,GAAG,eAAe,CAYjF"}
1
+ {"version":3,"file":"guard.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/guard.decorator.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,UAAU,GAAG,GACxB,cAAc,GAAG,eAAe,CAiClC"}
@@ -1,22 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Guard = Guard;
3
+ exports.FragmentGuard = FragmentGuard;
4
4
  const metadata_keys_1 = require("../metadata/metadata-keys");
5
5
  const metadata_storage_1 = require("../metadata/metadata-storage");
6
6
  /**
7
7
  * @Guard - Apply authorization/activation guard
8
8
  */
9
- function Guard(guardClass) {
9
+ function FragmentGuard(guardClass) {
10
10
  return (target, propertyKey) => {
11
11
  if (propertyKey === undefined) {
12
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_GUARDS, guardClass, target);
12
+ // Class-level
13
+ const existing = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.USE_GUARDS, target) || [];
14
+ const updated = [...existing, guardClass];
15
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_GUARDS, updated, target);
13
16
  const storage = metadata_storage_1.MetadataStorage.getInstance();
14
- storage.addClassMetadata?.(target, 'guard', guardClass);
17
+ storage.addClassMetadata?.(target, "guard", guardClass);
15
18
  }
16
19
  else {
17
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_GUARDS, guardClass, target, propertyKey);
20
+ // Method-level
21
+ const existing = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.USE_GUARDS, target, propertyKey) ||
22
+ [];
23
+ const updated = [...existing, guardClass];
24
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_GUARDS, updated, target, propertyKey);
18
25
  const storage = metadata_storage_1.MetadataStorage.getInstance();
19
- storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), 'guard', guardClass);
26
+ storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), "guard", guardClass);
20
27
  }
21
28
  };
22
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"guard.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/guard.decorator.ts"],"names":[],"mappings":";;AAOA,sBAYC;AAlBD,6DAA0D;AAC1D,mEAA+D;AAE/D;;GAEG;AACH,SAAgB,KAAK,CAAC,UAAyB;IAC7C,OAAO,CAAC,MAAW,EAAE,WAA6B,EAAE,EAAE;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAClF,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"guard.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/guard.decorator.ts"],"names":[],"mappings":";;AAOA,sCAmCC;AAzCD,6DAA0D;AAC1D,mEAA+D;AAE/D;;GAEG;AACH,SAAgB,aAAa,CAC3B,UAAyB;IAEzB,OAAO,CAAC,MAAW,EAAE,WAA6B,EAAE,EAAE;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc;YACd,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,6BAAa,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAElE,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,eAAe;YACf,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,6BAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC;gBAClE,EAAE,CAAC;YACL,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,cAAc,CACpB,6BAAa,CAAC,UAAU,EACxB,OAAO,EACP,MAAM,EACN,WAAW,CACZ,CAAC;YAEF,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,iBAAiB,EAAE,CACzB,MAAM,CAAC,WAAW,EAClB,WAAW,CAAC,QAAQ,EAAE,EACtB,OAAO,EACP,UAAU,CACX,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * @Interceptor - Intercept and transform request/response
3
3
  */
4
- export declare function Interceptor(interceptorClass: new () => any): ClassDecorator & MethodDecorator;
4
+ export declare function FragmentInterceptor(interceptorClass: new () => any): ClassDecorator & MethodDecorator;
5
5
  //# sourceMappingURL=interceptor.decorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/interceptor.decorator.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,WAAW,CAAC,gBAAgB,EAAE,UAAU,GAAG,GAAG,cAAc,GAAG,eAAe,CAY7F"}
1
+ {"version":3,"file":"interceptor.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/interceptor.decorator.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,UAAU,GAAG,GAC9B,cAAc,GAAG,eAAe,CAoClC"}
@@ -1,22 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Interceptor = Interceptor;
3
+ exports.FragmentInterceptor = FragmentInterceptor;
4
4
  const metadata_keys_1 = require("../metadata/metadata-keys");
5
5
  const metadata_storage_1 = require("../metadata/metadata-storage");
6
6
  /**
7
7
  * @Interceptor - Intercept and transform request/response
8
8
  */
9
- function Interceptor(interceptorClass) {
9
+ function FragmentInterceptor(interceptorClass) {
10
10
  return (target, propertyKey) => {
11
11
  if (propertyKey === undefined) {
12
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_INTERCEPTORS, interceptorClass, target);
12
+ // Class-level
13
+ const existing = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.USE_INTERCEPTORS, target) || [];
14
+ const updated = [...existing, interceptorClass];
15
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_INTERCEPTORS, updated, target);
13
16
  const storage = metadata_storage_1.MetadataStorage.getInstance();
14
- storage.addClassMetadata?.(target, 'interceptor', interceptorClass);
17
+ storage.addClassMetadata?.(target, "interceptor", interceptorClass);
15
18
  }
16
19
  else {
17
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_INTERCEPTORS, interceptorClass, target, propertyKey);
20
+ // Method-level
21
+ const existing = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.USE_INTERCEPTORS, target, propertyKey) || [];
22
+ const updated = [...existing, interceptorClass];
23
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_INTERCEPTORS, updated, target, propertyKey);
18
24
  const storage = metadata_storage_1.MetadataStorage.getInstance();
19
- storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), 'interceptor', interceptorClass);
25
+ storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), "interceptor", interceptorClass);
20
26
  }
21
27
  };
22
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/interceptor.decorator.ts"],"names":[],"mappings":";;AAOA,kCAYC;AAlBD,6DAA0D;AAC1D,mEAA+D;AAE/D;;GAEG;AACH,SAAgB,WAAW,CAAC,gBAA+B;IACzD,OAAO,CAAC,MAAW,EAAE,WAA6B,EAAE,EAAE;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACjF,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC9F,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"interceptor.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/interceptor.decorator.ts"],"names":[],"mappings":";;AAOA,kDAsCC;AA5CD,6DAA0D;AAC1D,mEAA+D;AAE/D;;GAEG;AACH,SAAgB,mBAAmB,CACjC,gBAA+B;IAE/B,OAAO,CAAC,MAAW,EAAE,WAA6B,EAAE,EAAE;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc;YACd,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,6BAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YACpE,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAChD,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAExE,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,eAAe;YACf,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CACjB,6BAAa,CAAC,gBAAgB,EAC9B,MAAM,EACN,WAAW,CACZ,IAAI,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAChD,OAAO,CAAC,cAAc,CACpB,6BAAa,CAAC,gBAAgB,EAC9B,OAAO,EACP,MAAM,EACN,WAAW,CACZ,CAAC;YAEF,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,iBAAiB,EAAE,CACzB,MAAM,CAAC,WAAW,EAClB,WAAW,CAAC,QAAQ,EAAE,EACtB,aAAa,EACb,gBAAgB,CACjB,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -4,5 +4,5 @@
4
4
  * @Middleware(AuthMiddleware) class MyController { }
5
5
  * @Middleware(AuthMiddleware) @Get('/') handler() { }
6
6
  */
7
- export declare function Middleware(middlewareClass: new () => any): ClassDecorator & MethodDecorator;
7
+ export declare function FragmentMiddleware(middlewareClass: new () => any): ClassDecorator & MethodDecorator;
8
8
  //# sourceMappingURL=middleware.decorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/middleware.decorator.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,eAAe,EAAE,UAAU,GAAG,GAAG,cAAc,GAAG,eAAe,CAc3F"}
1
+ {"version":3,"file":"middleware.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/middleware.decorator.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,UAAU,GAAG,GAC7B,cAAc,GAAG,eAAe,CAoClC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Middleware = Middleware;
3
+ exports.FragmentMiddleware = FragmentMiddleware;
4
4
  const metadata_keys_1 = require("../metadata/metadata-keys");
5
5
  const metadata_storage_1 = require("../metadata/metadata-storage");
6
6
  /**
@@ -9,19 +9,23 @@ const metadata_storage_1 = require("../metadata/metadata-storage");
9
9
  * @Middleware(AuthMiddleware) class MyController { }
10
10
  * @Middleware(AuthMiddleware) @Get('/') handler() { }
11
11
  */
12
- function Middleware(middlewareClass) {
12
+ function FragmentMiddleware(middlewareClass) {
13
13
  return (target, propertyKey) => {
14
14
  if (propertyKey === undefined) {
15
15
  // Class-level
16
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_MIDDLEWARE, middlewareClass, target);
16
+ const existing = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.USE_MIDDLEWARE, target) || [];
17
+ const updated = [...existing, middlewareClass];
18
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_MIDDLEWARE, updated, target);
17
19
  const storage = metadata_storage_1.MetadataStorage.getInstance();
18
- storage.addClassMetadata?.(target, 'middleware', middlewareClass);
20
+ storage.addClassMetadata?.(target, "middleware", middlewareClass);
19
21
  }
20
22
  else {
21
23
  // Method-level
22
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_MIDDLEWARE, middlewareClass, target, propertyKey);
24
+ const existing = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.USE_MIDDLEWARE, target, propertyKey) || [];
25
+ const updated = [...existing, middlewareClass];
26
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.USE_MIDDLEWARE, updated, target, propertyKey);
23
27
  const storage = metadata_storage_1.MetadataStorage.getInstance();
24
- storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), 'middleware', middlewareClass);
28
+ storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), "middleware", middlewareClass);
25
29
  }
26
30
  };
27
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/middleware.decorator.ts"],"names":[],"mappings":";;AAUA,gCAcC;AAvBD,6DAA0D;AAC1D,mEAA+D;AAE/D;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,eAA8B;IACvD,OAAO,CAAC,MAAW,EAAE,WAA6B,EAAE,EAAE;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc;YACd,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,eAAe;YACf,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC3F,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACzG,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"middleware.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/middleware.decorator.ts"],"names":[],"mappings":";;AAUA,gDAsCC;AA/CD,6DAA0D;AAC1D,mEAA+D;AAE/D;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,eAA8B;IAE9B,OAAO,CAAC,MAAW,EAAE,WAA6B,EAAE,EAAE;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc;YACd,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,6BAAa,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAClE,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,eAAe,CAAC,CAAC;YAC/C,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAEtE,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,eAAe;YACf,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CACjB,6BAAa,CAAC,cAAc,EAC5B,MAAM,EACN,WAAW,CACZ,IAAI,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,eAAe,CAAC,CAAC;YAC/C,OAAO,CAAC,cAAc,CACpB,6BAAa,CAAC,cAAc,EAC5B,OAAO,EACP,MAAM,EACN,WAAW,CACZ,CAAC;YAEF,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,iBAAiB,EAAE,CACzB,MAAM,CAAC,WAAW,EAClB,WAAW,CAAC,QAAQ,EAAE,EACtB,YAAY,EACZ,eAAe,CAChB,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,10 @@ export * from "./core/decorators/auto-configuration.decorator";
8
8
  export * from "./core/decorators/conditional.decorators";
9
9
  export * from "./core/decorators/injection.decorators";
10
10
  export * from "./core/decorators/http.decorators";
11
+ export * from "./core/decorators/guard.decorator";
12
+ export * from "./core/decorators/middleware.decorator";
13
+ export * from "./core/decorators/interceptor.decorator";
14
+ export * from "./core/decorators/exception-filter.decorator";
11
15
  export * from "./core/container/di-container";
12
16
  export * from "./core/metadata/metadata-storage";
13
17
  export * from "./web/application";
@@ -17,7 +21,8 @@ export * from "./auth/auth.module";
17
21
  export * from "./ai/ai.module";
18
22
  export * from "./plugins/plugin-manager";
19
23
  export * from "./shared/errors";
20
- export * from './core/scanner/component-scanner';
21
- export * from './testing/runner';
24
+ export * from "./core/scanner/component-scanner";
25
+ export * from "./testing/runner";
26
+ export { Request, Response, NextFunction } from "express";
22
27
  export { FragmentApplication, Injectable, Service, Controller, Repository, AutoConfiguration, Get, Post, Put, Delete, Patch, Body, Param, Query, Header, Req, Res, Autowired, Inject, Value, Qualifier, } from "./core";
23
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,GAAG,EACH,IAAI,EACJ,GAAG,EACH,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,EACH,SAAS,EACT,MAAM,EACN,KAAK,EACL,SAAS,GACV,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,GAAG,EACH,IAAI,EACJ,GAAG,EACH,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,EACH,SAAS,EACT,MAAM,EACN,KAAK,EACL,SAAS,GACV,MAAM,QAAQ,CAAC"}
package/dist/index.js CHANGED
@@ -25,6 +25,10 @@ __exportStar(require("./core/decorators/auto-configuration.decorator"), exports)
25
25
  __exportStar(require("./core/decorators/conditional.decorators"), exports);
26
26
  __exportStar(require("./core/decorators/injection.decorators"), exports);
27
27
  __exportStar(require("./core/decorators/http.decorators"), exports);
28
+ __exportStar(require("./core/decorators/guard.decorator"), exports);
29
+ __exportStar(require("./core/decorators/middleware.decorator"), exports);
30
+ __exportStar(require("./core/decorators/interceptor.decorator"), exports);
31
+ __exportStar(require("./core/decorators/exception-filter.decorator"), exports);
28
32
  __exportStar(require("./core/container/di-container"), exports);
29
33
  __exportStar(require("./core/metadata/metadata-storage"), exports);
30
34
  __exportStar(require("./web/application"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAE1B,0EAAwD;AACxD,yEAAuD;AACvD,sEAAoD;AACpD,yEAAuD;AACvD,yEAAuD;AACvD,iFAA+D;AAC/D,2EAAyD;AACzD,yEAAuD;AACvD,oEAAkD;AAClD,gEAA8C;AAC9C,mEAAiD;AACjD,oDAAkC;AAClC,mDAAiC;AACjC,2DAAyC;AACzC,qDAAmC;AACnC,iDAA+B;AAC/B,2DAAyC;AACzC,kDAAgC;AAChC,mEAAiD;AACjD,mDAAiC;AAEjC,+BAsBgB;AArBd,2GAAA,mBAAmB,OAAA;AACnB,kGAAA,UAAU,OAAA;AACV,+FAAA,OAAO,OAAA;AACP,kGAAA,UAAU,OAAA;AACV,kGAAA,UAAU,OAAA;AACV,yGAAA,iBAAiB,OAAA;AACjB,2FAAA,GAAG,OAAA;AACH,4FAAA,IAAI,OAAA;AACJ,2FAAA,GAAG,OAAA;AACH,8FAAA,MAAM,OAAA;AACN,6FAAA,KAAK,OAAA;AACL,4FAAA,IAAI,OAAA;AACJ,6FAAA,KAAK,OAAA;AACL,6FAAA,KAAK,OAAA;AACL,8FAAA,MAAM,OAAA;AACN,2FAAA,GAAG,OAAA;AACH,2FAAA,GAAG,OAAA;AACH,iGAAA,SAAS,OAAA;AACT,8FAAA,MAAM,OAAA;AACN,6FAAA,KAAK,OAAA;AACL,iGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAE1B,0EAAwD;AACxD,yEAAuD;AACvD,sEAAoD;AACpD,yEAAuD;AACvD,yEAAuD;AACvD,iFAA+D;AAC/D,2EAAyD;AACzD,yEAAuD;AACvD,oEAAkD;AAClD,oEAAkD;AAClD,yEAAuD;AACvD,0EAAwD;AACxD,+EAA6D;AAC7D,gEAA8C;AAC9C,mEAAiD;AACjD,oDAAkC;AAClC,mDAAiC;AACjC,2DAAyC;AACzC,qDAAmC;AACnC,iDAA+B;AAC/B,2DAAyC;AACzC,kDAAgC;AAChC,mEAAiD;AACjD,mDAAiC;AAGjC,+BAsBgB;AArBd,2GAAA,mBAAmB,OAAA;AACnB,kGAAA,UAAU,OAAA;AACV,+FAAA,OAAO,OAAA;AACP,kGAAA,UAAU,OAAA;AACV,kGAAA,UAAU,OAAA;AACV,yGAAA,iBAAiB,OAAA;AACjB,2FAAA,GAAG,OAAA;AACH,4FAAA,IAAI,OAAA;AACJ,2FAAA,GAAG,OAAA;AACH,8FAAA,MAAM,OAAA;AACN,6FAAA,KAAK,OAAA;AACL,4FAAA,IAAI,OAAA;AACJ,6FAAA,KAAK,OAAA;AACL,6FAAA,KAAK,OAAA;AACL,8FAAA,MAAM,OAAA;AACN,2FAAA,GAAG,OAAA;AACH,2FAAA,GAAG,OAAA;AACH,iGAAA,SAAS,OAAA;AACT,8FAAA,MAAM,OAAA;AACN,6FAAA,KAAK,OAAA;AACL,iGAAA,SAAS,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fragment-ts",
3
- "version": "1.0.32",
3
+ "version": "1.0.34",
4
4
  "description": "Spring Boot-style framework for TypeScript with Express and TypeORM",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -173,7 +173,7 @@ export class InitCommand {
173
173
  "migrate:revert": "fragment migrate:revert",
174
174
  },
175
175
  dependencies: {
176
- "fragment-ts": "^1.0.32",
176
+ "fragment-ts": "^1.0.34",
177
177
  "reflect-metadata": "^0.1.13",
178
178
  },
179
179
  devDependencies: {
@@ -5,16 +5,39 @@ import { MetadataStorage } from "../metadata/metadata-storage";
5
5
  /**
6
6
  * @ExceptionFilter - Handle exceptions globally or per controller/method
7
7
  */
8
- export function ExceptionFilter(filterClass: new () => any): ClassDecorator & MethodDecorator {
8
+ export function FragmentExceptionFilter(
9
+ filterClass: new () => any,
10
+ ): ClassDecorator & MethodDecorator {
9
11
  return (target: any, propertyKey?: string | symbol) => {
10
12
  if (propertyKey === undefined) {
11
- Reflect.defineMetadata(METADATA_KEYS.USE_FILTERS, filterClass, target);
13
+ // Class-level
14
+ const existing =
15
+ Reflect.getMetadata(METADATA_KEYS.USE_FILTERS, target) || [];
16
+ const updated = [...existing, filterClass];
17
+ Reflect.defineMetadata(METADATA_KEYS.USE_FILTERS, updated, target);
18
+
12
19
  const storage = MetadataStorage.getInstance();
13
- storage.addClassMetadata?.(target, 'exceptionFilter', filterClass);
20
+ storage.addClassMetadata?.(target, "exceptionFilter", filterClass);
14
21
  } else {
15
- Reflect.defineMetadata(METADATA_KEYS.USE_FILTERS, filterClass, target, propertyKey);
22
+ // Method-level
23
+ const existing =
24
+ Reflect.getMetadata(METADATA_KEYS.USE_FILTERS, target, propertyKey) ||
25
+ [];
26
+ const updated = [...existing, filterClass];
27
+ Reflect.defineMetadata(
28
+ METADATA_KEYS.USE_FILTERS,
29
+ updated,
30
+ target,
31
+ propertyKey,
32
+ );
33
+
16
34
  const storage = MetadataStorage.getInstance();
17
- storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), 'exceptionFilter', filterClass);
35
+ storage.addMethodMetadata?.(
36
+ target.constructor,
37
+ propertyKey.toString(),
38
+ "exceptionFilter",
39
+ filterClass,
40
+ );
18
41
  }
19
42
  };
20
- }
43
+ }
@@ -5,16 +5,39 @@ import { MetadataStorage } from "../metadata/metadata-storage";
5
5
  /**
6
6
  * @Guard - Apply authorization/activation guard
7
7
  */
8
- export function Guard(guardClass: new () => any): ClassDecorator & MethodDecorator {
8
+ export function FragmentGuard(
9
+ guardClass: new () => any,
10
+ ): ClassDecorator & MethodDecorator {
9
11
  return (target: any, propertyKey?: string | symbol) => {
10
12
  if (propertyKey === undefined) {
11
- Reflect.defineMetadata(METADATA_KEYS.USE_GUARDS, guardClass, target);
13
+ // Class-level
14
+ const existing =
15
+ Reflect.getMetadata(METADATA_KEYS.USE_GUARDS, target) || [];
16
+ const updated = [...existing, guardClass];
17
+ Reflect.defineMetadata(METADATA_KEYS.USE_GUARDS, updated, target);
18
+
12
19
  const storage = MetadataStorage.getInstance();
13
- storage.addClassMetadata?.(target, 'guard', guardClass);
20
+ storage.addClassMetadata?.(target, "guard", guardClass);
14
21
  } else {
15
- Reflect.defineMetadata(METADATA_KEYS.USE_GUARDS, guardClass, target, propertyKey);
22
+ // Method-level
23
+ const existing =
24
+ Reflect.getMetadata(METADATA_KEYS.USE_GUARDS, target, propertyKey) ||
25
+ [];
26
+ const updated = [...existing, guardClass];
27
+ Reflect.defineMetadata(
28
+ METADATA_KEYS.USE_GUARDS,
29
+ updated,
30
+ target,
31
+ propertyKey,
32
+ );
33
+
16
34
  const storage = MetadataStorage.getInstance();
17
- storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), 'guard', guardClass);
35
+ storage.addMethodMetadata?.(
36
+ target.constructor,
37
+ propertyKey.toString(),
38
+ "guard",
39
+ guardClass,
40
+ );
18
41
  }
19
42
  };
20
43
  }
@@ -5,16 +5,42 @@ import { MetadataStorage } from "../metadata/metadata-storage";
5
5
  /**
6
6
  * @Interceptor - Intercept and transform request/response
7
7
  */
8
- export function Interceptor(interceptorClass: new () => any): ClassDecorator & MethodDecorator {
8
+ export function FragmentInterceptor(
9
+ interceptorClass: new () => any,
10
+ ): ClassDecorator & MethodDecorator {
9
11
  return (target: any, propertyKey?: string | symbol) => {
10
12
  if (propertyKey === undefined) {
11
- Reflect.defineMetadata(METADATA_KEYS.USE_INTERCEPTORS, interceptorClass, target);
13
+ // Class-level
14
+ const existing =
15
+ Reflect.getMetadata(METADATA_KEYS.USE_INTERCEPTORS, target) || [];
16
+ const updated = [...existing, interceptorClass];
17
+ Reflect.defineMetadata(METADATA_KEYS.USE_INTERCEPTORS, updated, target);
18
+
12
19
  const storage = MetadataStorage.getInstance();
13
- storage.addClassMetadata?.(target, 'interceptor', interceptorClass);
20
+ storage.addClassMetadata?.(target, "interceptor", interceptorClass);
14
21
  } else {
15
- Reflect.defineMetadata(METADATA_KEYS.USE_INTERCEPTORS, interceptorClass, target, propertyKey);
22
+ // Method-level
23
+ const existing =
24
+ Reflect.getMetadata(
25
+ METADATA_KEYS.USE_INTERCEPTORS,
26
+ target,
27
+ propertyKey,
28
+ ) || [];
29
+ const updated = [...existing, interceptorClass];
30
+ Reflect.defineMetadata(
31
+ METADATA_KEYS.USE_INTERCEPTORS,
32
+ updated,
33
+ target,
34
+ propertyKey,
35
+ );
36
+
16
37
  const storage = MetadataStorage.getInstance();
17
- storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), 'interceptor', interceptorClass);
38
+ storage.addMethodMetadata?.(
39
+ target.constructor,
40
+ propertyKey.toString(),
41
+ "interceptor",
42
+ interceptorClass,
43
+ );
18
44
  }
19
45
  };
20
- }
46
+ }
@@ -8,18 +8,42 @@ import { MetadataStorage } from "../metadata/metadata-storage";
8
8
  * @Middleware(AuthMiddleware) class MyController { }
9
9
  * @Middleware(AuthMiddleware) @Get('/') handler() { }
10
10
  */
11
- export function Middleware(middlewareClass: new () => any): ClassDecorator & MethodDecorator {
11
+ export function FragmentMiddleware(
12
+ middlewareClass: new () => any,
13
+ ): ClassDecorator & MethodDecorator {
12
14
  return (target: any, propertyKey?: string | symbol) => {
13
15
  if (propertyKey === undefined) {
14
16
  // Class-level
15
- Reflect.defineMetadata(METADATA_KEYS.USE_MIDDLEWARE, middlewareClass, target);
17
+ const existing =
18
+ Reflect.getMetadata(METADATA_KEYS.USE_MIDDLEWARE, target) || [];
19
+ const updated = [...existing, middlewareClass];
20
+ Reflect.defineMetadata(METADATA_KEYS.USE_MIDDLEWARE, updated, target);
21
+
16
22
  const storage = MetadataStorage.getInstance();
17
- storage.addClassMetadata?.(target, 'middleware', middlewareClass);
23
+ storage.addClassMetadata?.(target, "middleware", middlewareClass);
18
24
  } else {
19
25
  // Method-level
20
- Reflect.defineMetadata(METADATA_KEYS.USE_MIDDLEWARE, middlewareClass, target, propertyKey);
26
+ const existing =
27
+ Reflect.getMetadata(
28
+ METADATA_KEYS.USE_MIDDLEWARE,
29
+ target,
30
+ propertyKey,
31
+ ) || [];
32
+ const updated = [...existing, middlewareClass];
33
+ Reflect.defineMetadata(
34
+ METADATA_KEYS.USE_MIDDLEWARE,
35
+ updated,
36
+ target,
37
+ propertyKey,
38
+ );
39
+
21
40
  const storage = MetadataStorage.getInstance();
22
- storage.addMethodMetadata?.(target.constructor, propertyKey.toString(), 'middleware', middlewareClass);
41
+ storage.addMethodMetadata?.(
42
+ target.constructor,
43
+ propertyKey.toString(),
44
+ "middleware",
45
+ middlewareClass,
46
+ );
23
47
  }
24
48
  };
25
- }
49
+ }
package/src/index.ts CHANGED
@@ -9,6 +9,10 @@ export * from "./core/decorators/auto-configuration.decorator";
9
9
  export * from "./core/decorators/conditional.decorators";
10
10
  export * from "./core/decorators/injection.decorators";
11
11
  export * from "./core/decorators/http.decorators";
12
+ export * from "./core/decorators/guard.decorator";
13
+ export * from "./core/decorators/middleware.decorator";
14
+ export * from "./core/decorators/interceptor.decorator";
15
+ export * from "./core/decorators/exception-filter.decorator";
12
16
  export * from "./core/container/di-container";
13
17
  export * from "./core/metadata/metadata-storage";
14
18
  export * from "./web/application";
@@ -18,8 +22,9 @@ export * from "./auth/auth.module";
18
22
  export * from "./ai/ai.module";
19
23
  export * from "./plugins/plugin-manager";
20
24
  export * from "./shared/errors";
21
- export * from './core/scanner/component-scanner';
22
- export * from './testing/runner';
25
+ export * from "./core/scanner/component-scanner";
26
+ export * from "./testing/runner";
27
+ export { Request, Response, NextFunction } from "express";
23
28
 
24
29
  export {
25
30
  FragmentApplication,