fragment-ts 1.0.23 → 1.0.24

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 (49) hide show
  1. package/dist/cli/commands/init.command.js +1 -1
  2. package/dist/core/decorators/application.decorator.d.ts +1 -6
  3. package/dist/core/decorators/application.decorator.d.ts.map +1 -1
  4. package/dist/core/decorators/application.decorator.js +2 -7
  5. package/dist/core/decorators/application.decorator.js.map +1 -1
  6. package/dist/core/decorators/auto-configuration.decorator.d.ts.map +1 -1
  7. package/dist/core/decorators/auto-configuration.decorator.js +5 -4
  8. package/dist/core/decorators/auto-configuration.decorator.js.map +1 -1
  9. package/dist/core/decorators/conditional.decorators.d.ts +0 -4
  10. package/dist/core/decorators/conditional.decorators.d.ts.map +1 -1
  11. package/dist/core/decorators/conditional.decorators.js +0 -32
  12. package/dist/core/decorators/conditional.decorators.js.map +1 -1
  13. package/dist/core/decorators/controller.decorator.d.ts.map +1 -1
  14. package/dist/core/decorators/controller.decorator.js +2 -1
  15. package/dist/core/decorators/controller.decorator.js.map +1 -1
  16. package/dist/core/decorators/http.decorators.d.ts +0 -1
  17. package/dist/core/decorators/http.decorators.d.ts.map +1 -1
  18. package/dist/core/decorators/http.decorators.js +10 -10
  19. package/dist/core/decorators/http.decorators.js.map +1 -1
  20. package/dist/core/decorators/injectable.decorator.d.ts +0 -3
  21. package/dist/core/decorators/injectable.decorator.d.ts.map +1 -1
  22. package/dist/core/decorators/injectable.decorator.js +5 -12
  23. package/dist/core/decorators/injectable.decorator.js.map +1 -1
  24. package/dist/core/decorators/injection.decorators.d.ts +37 -2
  25. package/dist/core/decorators/injection.decorators.d.ts.map +1 -1
  26. package/dist/core/decorators/injection.decorators.js +75 -43
  27. package/dist/core/decorators/injection.decorators.js.map +1 -1
  28. package/dist/core/decorators/repository.decorator.d.ts.map +1 -1
  29. package/dist/core/decorators/repository.decorator.js +5 -4
  30. package/dist/core/decorators/repository.decorator.js.map +1 -1
  31. package/dist/core/decorators/service.decorator.d.ts.map +1 -1
  32. package/dist/core/decorators/service.decorator.js +5 -4
  33. package/dist/core/decorators/service.decorator.js.map +1 -1
  34. package/dist/core/metadata/metadata-storage.d.ts +20 -9
  35. package/dist/core/metadata/metadata-storage.d.ts.map +1 -1
  36. package/dist/core/metadata/metadata-storage.js +10 -58
  37. package/dist/core/metadata/metadata-storage.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/cli/commands/init.command.ts +1 -1
  40. package/src/core/decorators/application.decorator.ts +3 -13
  41. package/src/core/decorators/auto-configuration.decorator.ts +10 -8
  42. package/src/core/decorators/conditional.decorators.ts +1 -37
  43. package/src/core/decorators/controller.decorator.ts +3 -1
  44. package/src/core/decorators/http.decorators.ts +32 -11
  45. package/src/core/decorators/injectable.decorator.ts +8 -15
  46. package/src/core/decorators/injection.decorators.ts +103 -50
  47. package/src/core/decorators/repository.decorator.ts +10 -8
  48. package/src/core/decorators/service.decorator.ts +10 -8
  49. package/src/core/metadata/metadata-storage.ts +43 -75
@@ -180,7 +180,7 @@ class InitCommand {
180
180
  "migrate:revert": "fragment migrate:revert",
181
181
  },
182
182
  dependencies: {
183
- "fragment-ts": "^1.0.23",
183
+ "fragment-ts": "^1.0.24",
184
184
  "reflect-metadata": "^0.1.13",
185
185
  },
186
186
  devDependencies: {
@@ -4,10 +4,5 @@ export interface ApplicationOptions {
4
4
  configPath?: string;
5
5
  autoScan?: boolean;
6
6
  }
7
- export declare function FragmentApplication(options?: {
8
- port?: number;
9
- host?: string;
10
- configPath?: string;
11
- autoScan?: boolean;
12
- }): ClassDecorator;
7
+ export declare function FragmentApplication(options?: ApplicationOptions): ClassDecorator;
13
8
  //# sourceMappingURL=application.decorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/application.decorator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACf,GACL,cAAc,CAkBhB"}
1
+ {"version":3,"file":"application.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/application.decorator.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,kBAAuB,GAC/B,cAAc,CAchB"}
@@ -2,20 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FragmentApplication = FragmentApplication;
4
4
  const metadata_keys_1 = require("../metadata/metadata-keys");
5
- const metadata_storage_1 = require("../metadata/metadata-storage");
6
5
  function FragmentApplication(options = {}) {
7
6
  return (target) => {
8
7
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.APPLICATION, {
8
+ ...options,
9
9
  port: options.port || 3000,
10
10
  host: options.host || "0.0.0.0",
11
11
  configPath: options.configPath || "fragment.json",
12
- autoScan: options.autoScan ?? true,
12
+ autoScan: options.autoScan || true,
13
13
  }, target);
14
- metadata_storage_1.MetadataStorage.getInstance().addClass({
15
- target,
16
- type: "injectable",
17
- scope: "singleton",
18
- });
19
14
  };
20
15
  }
21
16
  //# sourceMappingURL=application.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/application.decorator.ts"],"names":[],"mappings":";;AAUA,kDAyBC;AAnCD,6DAA0D;AAC1D,mEAA+D;AAS/D,SAAgB,mBAAmB,CACjC,UAKI,EAAE;IAEN,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CACpB,6BAAa,CAAC,WAAW,EACzB;YACE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;YAC/B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,eAAe;YACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;SACnC,EACD,MAAM,CACP,CAAC;QACF,kCAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YACrC,MAAM;YACN,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"application.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/application.decorator.ts"],"names":[],"mappings":";;AASA,kDAgBC;AAzBD,6DAA0D;AAS1D,SAAgB,mBAAmB,CACjC,UAA8B,EAAE;IAEhC,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CACpB,6BAAa,CAAC,WAAW,EACzB;YACE,GAAG,OAAO;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;YAC/B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,eAAe;YACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;SACnC,EACD,MAAM,CACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-configuration.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/auto-configuration.decorator.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,IAAI,cAAc,CAUlD"}
1
+ {"version":3,"file":"auto-configuration.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/auto-configuration.decorator.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,IAAI,cAAc,CAYlD"}
@@ -6,12 +6,13 @@ const metadata_keys_1 = require("../metadata/metadata-keys");
6
6
  const metadata_storage_1 = require("../metadata/metadata-storage");
7
7
  function AutoConfiguration() {
8
8
  return (target) => {
9
- (0, injectable_decorator_1.Injectable)("singleton")(target);
9
+ (0, injectable_decorator_1.Injectable)('singleton')(target);
10
10
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.AUTO_CONFIGURATION, true, target);
11
- metadata_storage_1.MetadataStorage.getInstance().addClass({
11
+ const storage = metadata_storage_1.MetadataStorage.getInstance();
12
+ storage.addClass({
12
13
  target,
13
- type: "auto-configuration",
14
- scope: "singleton",
14
+ type: 'auto-configuration',
15
+ scope: 'singleton'
15
16
  });
16
17
  };
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auto-configuration.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/auto-configuration.decorator.ts"],"names":[],"mappings":";;AAIA,8CAUC;AAdD,iEAAoD;AACpD,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAgB,iBAAiB;IAC/B,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAA,iCAAU,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,kBAAkB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACvE,kCAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YACrC,MAAM;YACN,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"auto-configuration.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/auto-configuration.decorator.ts"],"names":[],"mappings":";;AAIA,8CAYC;AAhBD,iEAAoD;AACpD,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAgB,iBAAiB;IAC/B,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAA,iCAAU,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,kBAAkB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,CAAC;YACf,MAAM;YACN,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,7 +1,3 @@
1
- /**
2
- * Conditional decorators
3
- * Ensures the class is registered in MetadataStorage
4
- */
5
1
  export declare function ConditionalOnClass(classRef: any): ClassDecorator;
6
2
  export declare function ConditionalOnMissingBean(token: any): ClassDecorator;
7
3
  export declare function ConditionalOnProperty(key: string, expectedValue?: any): ClassDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"conditional.decorators.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/conditional.decorators.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,cAAc,CAchE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,cAAc,CAcnE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,cAAc,CActF"}
1
+ {"version":3,"file":"conditional.decorators.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/conditional.decorators.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,cAAc,CAIhE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,cAAc,CAInE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,cAAc,CAItF"}
@@ -4,51 +4,19 @@ exports.ConditionalOnClass = ConditionalOnClass;
4
4
  exports.ConditionalOnMissingBean = ConditionalOnMissingBean;
5
5
  exports.ConditionalOnProperty = ConditionalOnProperty;
6
6
  const metadata_keys_1 = require("../metadata/metadata-keys");
7
- const metadata_storage_1 = require("../metadata/metadata-storage");
8
- /**
9
- * Conditional decorators
10
- * Ensures the class is registered in MetadataStorage
11
- */
12
7
  function ConditionalOnClass(classRef) {
13
8
  return (target) => {
14
9
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.CONDITIONAL_ON_CLASS, classRef, target);
15
- // Register in MetadataStorage if not already
16
- const storage = metadata_storage_1.MetadataStorage.getInstance();
17
- if (!storage.getClass(target)) {
18
- storage.addClass({
19
- target,
20
- type: 'injectable', // default type
21
- scope: 'singleton',
22
- });
23
- }
24
10
  };
25
11
  }
26
12
  function ConditionalOnMissingBean(token) {
27
13
  return (target) => {
28
14
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.CONDITIONAL_ON_MISSING_BEAN, token, target);
29
- // Register in MetadataStorage if not already
30
- const storage = metadata_storage_1.MetadataStorage.getInstance();
31
- if (!storage.getClass(target)) {
32
- storage.addClass({
33
- target,
34
- type: 'injectable',
35
- scope: 'singleton',
36
- });
37
- }
38
15
  };
39
16
  }
40
17
  function ConditionalOnProperty(key, expectedValue) {
41
18
  return (target) => {
42
19
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.CONDITIONAL_ON_PROPERTY, { key, expectedValue }, target);
43
- // Register in MetadataStorage if not already
44
- const storage = metadata_storage_1.MetadataStorage.getInstance();
45
- if (!storage.getClass(target)) {
46
- storage.addClass({
47
- target,
48
- type: 'injectable',
49
- scope: 'singleton',
50
- });
51
- }
52
20
  };
53
21
  }
54
22
  //# sourceMappingURL=conditional.decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditional.decorators.js","sourceRoot":"","sources":["../../../src/core/decorators/conditional.decorators.ts"],"names":[],"mappings":";;AAQA,gDAcC;AAED,4DAcC;AAED,sDAcC;AAtDD,6DAA0D;AAC1D,mEAA+D;AAE/D;;;GAGG;AAEH,SAAgB,kBAAkB,CAAC,QAAa;IAC9C,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,oBAAoB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE7E,6CAA6C;QAC7C,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC;gBACf,MAAM;gBACN,IAAI,EAAE,YAAY,EAAE,eAAe;gBACnC,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB,CAAC,KAAU;IACjD,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,2BAA2B,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEjF,6CAA6C;QAC7C,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC;gBACf,MAAM;gBACN,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAW,EAAE,aAAmB;IACpE,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,uBAAuB,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;QAE9F,6CAA6C;QAC7C,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC;gBACf,MAAM;gBACN,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"conditional.decorators.js","sourceRoot":"","sources":["../../../src/core/decorators/conditional.decorators.ts"],"names":[],"mappings":";;AAEA,gDAIC;AAED,4DAIC;AAED,sDAIC;AAlBD,6DAA0D;AAE1D,SAAgB,kBAAkB,CAAC,QAAa;IAC9C,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,oBAAoB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB,CAAC,KAAU;IACjD,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,2BAA2B,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAW,EAAE,aAAmB;IACpE,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,uBAAuB,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;IAChG,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"controller.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/controller.decorator.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,GAAG,cAAc,CAW5D"}
1
+ {"version":3,"file":"controller.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/controller.decorator.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,GAAG,cAAc,CAa5D"}
@@ -8,7 +8,8 @@ function Controller(path = "") {
8
8
  return (target) => {
9
9
  (0, injectable_decorator_1.Injectable)("singleton")(target);
10
10
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.CONTROLLER, path, target);
11
- metadata_storage_1.MetadataStorage.getInstance().addClass({
11
+ const storage = metadata_storage_1.MetadataStorage.getInstance();
12
+ storage.addClass({
12
13
  target,
13
14
  type: "controller",
14
15
  scope: "singleton",
@@ -1 +1 @@
1
- {"version":3,"file":"controller.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/controller.decorator.ts"],"names":[],"mappings":";;AAIA,gCAWC;AAfD,iEAAoD;AACpD,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAgB,UAAU,CAAC,OAAe,EAAE;IAC1C,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAA,iCAAU,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,kCAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YACrC,MAAM;YACN,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,WAAW;YAClB,IAAI;SACL,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"controller.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/controller.decorator.ts"],"names":[],"mappings":";;AAIA,gCAaC;AAjBD,iEAAoD;AACpD,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAgB,UAAU,CAAC,OAAe,EAAE;IAC1C,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAA,iCAAU,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,CAAC;YACf,MAAM;YACN,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,WAAW;YAClB,IAAI;SACL,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,4 +1,3 @@
1
- import "reflect-metadata";
2
1
  export declare const Get: (path?: string) => MethodDecorator;
3
2
  export declare const Post: (path?: string) => MethodDecorator;
4
3
  export declare const Put: (path?: string) => MethodDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"http.decorators.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/http.decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAsB1B,eAAO,MAAM,GAAG,UAjBA,MAAM,KAAQ,eAiBqB,CAAC;AACpD,eAAO,MAAM,IAAI,UAlBD,MAAM,KAAQ,eAkBuB,CAAC;AACtD,eAAO,MAAM,GAAG,UAnBA,MAAM,KAAQ,eAmBqB,CAAC;AACpD,eAAO,MAAM,MAAM,UApBH,MAAM,KAAQ,eAoB2B,CAAC;AAC1D,eAAO,MAAM,KAAK,UArBF,MAAM,KAAQ,eAqByB,CAAC;AAkBxD,eAAO,MAAM,IAAI,eAdK,MAAM,KAAG,kBAciB,CAAC;AACjD,eAAO,MAAM,KAAK,eAfI,MAAM,KAAG,kBAemB,CAAC;AACnD,eAAO,MAAM,KAAK,eAhBI,MAAM,KAAG,kBAgBmB,CAAC;AACnD,eAAO,MAAM,MAAM,eAjBG,MAAM,KAAG,kBAiBqB,CAAC;AACrD,eAAO,MAAM,GAAG,QAAO,kBAAmD,CAAC;AAC3E,eAAO,MAAM,GAAG,QAAO,kBAAmD,CAAC"}
1
+ {"version":3,"file":"http.decorators.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/http.decorators.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,GAAG,UA/BA,MAAM,KAAQ,eA+BqB,CAAC;AACpD,eAAO,MAAM,IAAI,UAhCD,MAAM,KAAQ,eAgCuB,CAAC;AACtD,eAAO,MAAM,GAAG,UAjCA,MAAM,KAAQ,eAiCqB,CAAC;AACpD,eAAO,MAAM,MAAM,UAlCH,MAAM,KAAQ,eAkC2B,CAAC;AAC1D,eAAO,MAAM,KAAK,UAnCF,MAAM,KAAQ,eAmCyB,CAAC;AA0BxD,eAAO,MAAM,IAAI,eAvBK,MAAM,KAAG,kBAuBiB,CAAC;AACjD,eAAO,MAAM,KAAK,eAxBI,MAAM,KAAG,kBAwBmB,CAAC;AACnD,eAAO,MAAM,KAAK,eAzBI,MAAM,KAAG,kBAyBmB,CAAC;AACnD,eAAO,MAAM,MAAM,eA1BG,MAAM,KAAG,kBA0BqB,CAAC;AACrD,eAAO,MAAM,GAAG,QAAO,kBAAmD,CAAC;AAC3E,eAAO,MAAM,GAAG,QAAO,kBAAmD,CAAC"}
@@ -1,21 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Res = exports.Req = exports.Header = exports.Query = exports.Param = exports.Body = exports.Patch = exports.Delete = exports.Put = exports.Post = exports.Get = void 0;
4
- require("reflect-metadata");
5
4
  const metadata_keys_1 = require("../metadata/metadata-keys");
6
5
  const metadata_storage_1 = require("../metadata/metadata-storage");
7
6
  function createHttpMethodDecorator(method) {
8
7
  return (path = "") => {
9
- return (target, propertyKey) => {
8
+ return (target, propertyKey, descriptor) => {
10
9
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.HTTP_METHOD, method, target, propertyKey);
11
10
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.ROUTE_PATH, path, target, propertyKey);
12
11
  const storage = metadata_storage_1.MetadataStorage.getInstance();
13
12
  storage.addMethod({
14
13
  target: target.constructor,
15
- propertyKey: propertyKey.toString(),
14
+ propertyKey: propertyKey,
16
15
  method,
17
16
  path,
18
- paramMetadata: storage.getParams(target, propertyKey.toString()),
17
+ paramMetadata: storage.getParams(target, propertyKey),
19
18
  });
20
19
  };
21
20
  };
@@ -25,16 +24,17 @@ exports.Post = createHttpMethodDecorator("POST");
25
24
  exports.Put = createHttpMethodDecorator("PUT");
26
25
  exports.Delete = createHttpMethodDecorator("DELETE");
27
26
  exports.Patch = createHttpMethodDecorator("PATCH");
28
- // Parameter decorators
29
27
  function createParamDecorator(type) {
30
28
  return (paramName) => {
31
- return (target, propertyKey, index) => {
32
- if (!propertyKey)
33
- throw new Error(`@${type} cannot be used on constructor params`);
34
- metadata_storage_1.MetadataStorage.getInstance().addParam({
29
+ return (target, propertyKey, parameterIndex) => {
30
+ if (!propertyKey) {
31
+ throw new Error(`@${type}() cannot be used on constructor parameters`);
32
+ }
33
+ const storage = metadata_storage_1.MetadataStorage.getInstance();
34
+ storage.addParam({
35
35
  target,
36
36
  propertyKey: propertyKey.toString(),
37
- index,
37
+ index: parameterIndex,
38
38
  type: type,
39
39
  paramName,
40
40
  });
@@ -1 +1 @@
1
- {"version":3,"file":"http.decorators.js","sourceRoot":"","sources":["../../../src/core/decorators/http.decorators.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAS,yBAAyB,CAAC,MAAc;IAC/C,OAAO,CAAC,OAAe,EAAE,EAAmB,EAAE;QAC5C,OAAO,CAAC,MAAW,EAAE,WAA4B,EAAE,EAAE;YACnD,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC/E,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE5E,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,SAAS,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,WAAW;gBAC1B,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;gBACnC,MAAM;gBACN,IAAI;gBACJ,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;aACjE,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAEY,QAAA,GAAG,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,IAAI,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACzC,QAAA,GAAG,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAA,KAAK,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAExD,uBAAuB;AACvB,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,CAAC,SAAkB,EAAsB,EAAE;QAChD,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;YACpC,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,uCAAuC,CAAC,CAAC;YACnF,kCAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBACrC,MAAM;gBACN,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;gBACnC,KAAK;gBACL,IAAI,EAAE,IAAW;gBACjB,SAAS;aACV,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAEY,QAAA,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACtC,QAAA,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACtC,QAAA,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,GAAG,GAAG,GAAuB,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AAA9D,QAAA,GAAG,OAA2D;AACpE,MAAM,GAAG,GAAG,GAAuB,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AAA9D,QAAA,GAAG,OAA2D"}
1
+ {"version":3,"file":"http.decorators.js","sourceRoot":"","sources":["../../../src/core/decorators/http.decorators.ts"],"names":[],"mappings":";;;AAAA,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAS,yBAAyB,CAAC,MAAc;IAC/C,OAAO,CAAC,OAAe,EAAE,EAAmB,EAAE;QAC5C,OAAO,CACL,MAAW,EACX,WAA4B,EAC5B,UAA8B,EAC9B,EAAE;YACF,OAAO,CAAC,cAAc,CACpB,6BAAa,CAAC,WAAW,EACzB,MAAM,EACN,MAAM,EACN,WAAW,CACZ,CAAC;YACF,OAAO,CAAC,cAAc,CACpB,6BAAa,CAAC,UAAU,EACxB,IAAI,EACJ,MAAM,EACN,WAAW,CACZ,CAAC;YAEF,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,SAAS,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,WAAW;gBAC1B,WAAW,EAAE,WAAqB;gBAClC,MAAM;gBACN,IAAI;gBACJ,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,WAAqB,CAAC;aAChE,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAEY,QAAA,GAAG,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,IAAI,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACzC,QAAA,GAAG,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAA,KAAK,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAExD,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,CAAC,SAAkB,EAAsB,EAAE;QAChD,OAAO,CACL,MAAc,EACd,WAAwC,EACxC,cAAsB,EAChB,EAAE;YACR,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,6CAA6C,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;YAE9C,OAAO,CAAC,QAAQ,CAAC;gBACf,MAAM;gBACN,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;gBACnC,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,IAAW;gBACjB,SAAS;aACV,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAEY,QAAA,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACtC,QAAA,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACtC,QAAA,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,GAAG,GAAG,GAAuB,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AAA9D,QAAA,GAAG,OAA2D;AACpE,MAAM,GAAG,GAAG,GAAuB,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AAA9D,QAAA,GAAG,OAA2D"}
@@ -1,6 +1,3 @@
1
1
  export type Scope = 'singleton' | 'request' | 'transient';
2
- /**
3
- * @Injectable - Marks a class as injectable with a scope
4
- */
5
2
  export declare function Injectable(scope?: Scope): ClassDecorator;
6
3
  //# sourceMappingURL=injectable.decorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectable.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/injectable.decorator.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE1D;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAmB,GAAG,cAAc,CAgBrE"}
1
+ {"version":3,"file":"injectable.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/injectable.decorator.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE1D,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAmB,GAAG,cAAc,CAYrE"}
@@ -3,23 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Injectable = Injectable;
4
4
  const metadata_keys_1 = require("../metadata/metadata-keys");
5
5
  const metadata_storage_1 = require("../metadata/metadata-storage");
6
- /**
7
- * @Injectable - Marks a class as injectable with a scope
8
- */
9
6
  function Injectable(scope = 'singleton') {
10
7
  return (target) => {
11
- // Define Reflect metadata
12
8
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.INJECTABLE, true, target);
13
9
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.SCOPE, scope, target);
14
- // Register in MetadataStorage if not already
15
10
  const storage = metadata_storage_1.MetadataStorage.getInstance();
16
- if (!storage.getClass(target)) {
17
- storage.addClass({
18
- target,
19
- type: 'injectable',
20
- scope
21
- });
22
- }
11
+ storage.addClass({
12
+ target,
13
+ type: 'injectable',
14
+ scope
15
+ });
23
16
  };
24
17
  }
25
18
  //# sourceMappingURL=injectable.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectable.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/injectable.decorator.ts"],"names":[],"mappings":";;AAQA,gCAgBC;AAxBD,6DAA0D;AAC1D,mEAA+D;AAI/D;;GAEG;AACH,SAAgB,UAAU,CAAC,QAAe,WAAW;IACnD,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,0BAA0B;QAC1B,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3D,6CAA6C;QAC7C,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC;gBACf,MAAM;gBACN,IAAI,EAAE,YAAY;gBAClB,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"injectable.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/injectable.decorator.ts"],"names":[],"mappings":";;AAKA,gCAYC;AAjBD,6DAA0D;AAC1D,mEAA+D;AAI/D,SAAgB,UAAU,CAAC,QAAe,WAAW;IACnD,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,CAAC;YACf,MAAM;YACN,IAAI,EAAE,YAAY;YAClB,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,13 +1,48 @@
1
- import "reflect-metadata";
1
+ /**
2
+ * @Autowired - Automatically inject dependencies by type
3
+ * Usage: @Autowired() private myService: MyService;
4
+ */
2
5
  export declare function Autowired(): PropertyDecorator;
6
+ /**
7
+ * @Inject - Inject dependency by token (string or class)
8
+ * Usage: @Inject('MyService') private service: MyService;
9
+ * or: @Inject(MyService) private service: MyService;
10
+ */
3
11
  export declare function Inject(token: string | Function): PropertyDecorator;
12
+ /**
13
+ * @InjectRepository - Inject TypeORM repository for an entity
14
+ * Usage: @InjectRepository(User) private userRepo: Repository<User>;
15
+ */
4
16
  export declare function InjectRepository(entity: Function): PropertyDecorator;
5
- export declare function Value(expression: string): PropertyDecorator;
6
17
  /**
7
18
  * @Qualifier - Specify which bean to inject when multiple exist
8
19
  * Usage: @Qualifier('primary') @Autowired() private service: MyService;
9
20
  */
10
21
  export declare function Qualifier(name: string): PropertyDecorator;
22
+ /**
23
+ * @Value - Inject configuration value from environment or config
24
+ * Usage: @Value('${PORT}') private port: number;
25
+ * or: @Value('${DB_HOST:localhost}') private host: string;
26
+ */
27
+ export declare function Value(expression: string): PropertyDecorator;
28
+ /**
29
+ * @Optional - Mark dependency as optional (won't throw if not found)
30
+ * Usage: @Optional() @Autowired() private service?: MyService;
31
+ */
11
32
  export declare function Optional(): PropertyDecorator;
33
+ /**
34
+ * @Lazy - Lazy load dependency (create on first access)
35
+ * Usage: @Lazy() @Autowired() private service: MyService;
36
+ */
12
37
  export declare function Lazy(): PropertyDecorator;
38
+ /**
39
+ * @PostConstruct - Method called after dependency injection is complete
40
+ * Usage: @PostConstruct() init() { ... }
41
+ */
42
+ export declare function PostConstruct(): MethodDecorator;
43
+ /**
44
+ * @PreDestroy - Method called before bean is destroyed
45
+ * Usage: @PreDestroy() cleanup() { ... }
46
+ */
47
+ export declare function PreDestroy(): MethodDecorator;
13
48
  //# sourceMappingURL=injection.decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"injection.decorators.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/injection.decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B,wBAAgB,SAAS,IAAI,iBAAiB,CAc7C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAWlE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB,CAepE;AAED,wBAAgB,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAe3D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAazD;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C;AAED,wBAAgB,IAAI,IAAI,iBAAiB,CAIxC"}
1
+ {"version":3,"file":"injection.decorators.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/injection.decorators.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,SAAS,IAAI,iBAAiB,CAe7C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAIlE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB,CASpE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAIzD;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAS3D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C;AAED;;;GAGG;AACH,wBAAgB,IAAI,IAAI,iBAAiB,CAwBxC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,eAAe,CAY/C;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAY5C"}
@@ -3,59 +3,46 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Autowired = Autowired;
4
4
  exports.Inject = Inject;
5
5
  exports.InjectRepository = InjectRepository;
6
- exports.Value = Value;
7
6
  exports.Qualifier = Qualifier;
7
+ exports.Value = Value;
8
8
  exports.Optional = Optional;
9
9
  exports.Lazy = Lazy;
10
- require("reflect-metadata");
10
+ exports.PostConstruct = PostConstruct;
11
+ exports.PreDestroy = PreDestroy;
11
12
  const metadata_keys_1 = require("../metadata/metadata-keys");
12
- const metadata_storage_1 = require("../metadata/metadata-storage");
13
+ /**
14
+ * @Autowired - Automatically inject dependencies by type
15
+ * Usage: @Autowired() private myService: MyService;
16
+ */
13
17
  function Autowired() {
14
18
  return (target, propertyKey) => {
19
+ // Get the design type from TypeScript metadata
15
20
  const type = Reflect.getMetadata("design:type", target, propertyKey);
16
- if (!type)
17
- throw new Error(`Cannot use @Autowired on ${String(propertyKey)}`);
21
+ if (!type || type === Object) {
22
+ throw new Error(`Cannot use @Autowired on property "${String(propertyKey)}" in ${target.constructor.name}. ` +
23
+ `Make sure TypeScript emitDecoratorMetadata is enabled and the type is explicitly declared.`);
24
+ }
25
+ // Store the type in metadata so DI container can resolve it
18
26
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.AUTOWIRED, type, target, propertyKey);
19
- metadata_storage_1.MetadataStorage.getInstance().addParam({
20
- target,
21
- propertyKey: propertyKey.toString(),
22
- index: -1,
23
- type: "autowired",
24
- });
25
27
  };
26
28
  }
29
+ /**
30
+ * @Inject - Inject dependency by token (string or class)
31
+ * Usage: @Inject('MyService') private service: MyService;
32
+ * or: @Inject(MyService) private service: MyService;
33
+ */
27
34
  function Inject(token) {
28
35
  return (target, propertyKey) => {
29
36
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.INJECT, token, target, propertyKey);
30
- metadata_storage_1.MetadataStorage.getInstance().addParam({
31
- target,
32
- propertyKey: propertyKey.toString(),
33
- index: -1,
34
- type: "inject",
35
- paramName: typeof token === "string" ? token : undefined,
36
- });
37
37
  };
38
38
  }
39
+ /**
40
+ * @InjectRepository - Inject TypeORM repository for an entity
41
+ * Usage: @InjectRepository(User) private userRepo: Repository<User>;
42
+ */
39
43
  function InjectRepository(entity) {
40
44
  return (target, propertyKey) => {
41
45
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.INJECT_REPOSITORY, entity, target, propertyKey);
42
- metadata_storage_1.MetadataStorage.getInstance().addParam({
43
- target,
44
- propertyKey: propertyKey.toString(),
45
- index: -1,
46
- type: "inject-repo",
47
- });
48
- };
49
- }
50
- function Value(expression) {
51
- return (target, propertyKey) => {
52
- Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.VALUE, expression, target, propertyKey);
53
- metadata_storage_1.MetadataStorage.getInstance().addParam({
54
- target,
55
- propertyKey: propertyKey.toString(),
56
- index: -1,
57
- type: "value",
58
- });
59
46
  };
60
47
  }
61
48
  /**
@@ -64,25 +51,70 @@ function Value(expression) {
64
51
  */
65
52
  function Qualifier(name) {
66
53
  return (target, propertyKey) => {
67
- if (!propertyKey)
68
- return;
69
54
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.QUALIFIER, name, target, propertyKey);
70
- metadata_storage_1.MetadataStorage.getInstance().addParam({
71
- target,
72
- propertyKey: propertyKey.toString(),
73
- index: -1,
74
- type: "qualifier",
75
- });
76
55
  };
77
56
  }
57
+ /**
58
+ * @Value - Inject configuration value from environment or config
59
+ * Usage: @Value('${PORT}') private port: number;
60
+ * or: @Value('${DB_HOST:localhost}') private host: string;
61
+ */
62
+ function Value(expression) {
63
+ return (target, propertyKey) => {
64
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.VALUE, expression, target, propertyKey);
65
+ };
66
+ }
67
+ /**
68
+ * @Optional - Mark dependency as optional (won't throw if not found)
69
+ * Usage: @Optional() @Autowired() private service?: MyService;
70
+ */
78
71
  function Optional() {
79
72
  return (target, propertyKey) => {
80
73
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.OPTIONAL, true, target, propertyKey);
81
74
  };
82
75
  }
76
+ /**
77
+ * @Lazy - Lazy load dependency (create on first access)
78
+ * Usage: @Lazy() @Autowired() private service: MyService;
79
+ */
83
80
  function Lazy() {
84
81
  return (target, propertyKey) => {
85
82
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.LAZY, true, target, propertyKey);
83
+ const type = Reflect.getMetadata("design:type", target, propertyKey);
84
+ // Create a getter that resolves on first access
85
+ let cached = null;
86
+ let resolved = false;
87
+ Object.defineProperty(target, propertyKey, {
88
+ get() {
89
+ if (!resolved) {
90
+ const { DIContainer } = require("../container/di-container");
91
+ const container = DIContainer.getInstance();
92
+ cached = container.resolve(type);
93
+ resolved = true;
94
+ }
95
+ return cached;
96
+ },
97
+ enumerable: true,
98
+ configurable: true,
99
+ });
100
+ };
101
+ }
102
+ /**
103
+ * @PostConstruct - Method called after dependency injection is complete
104
+ * Usage: @PostConstruct() init() { ... }
105
+ */
106
+ function PostConstruct() {
107
+ return (target, propertyKey, descriptor) => {
108
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.POST_CONSTRUCT, propertyKey, target.constructor);
109
+ };
110
+ }
111
+ /**
112
+ * @PreDestroy - Method called before bean is destroyed
113
+ * Usage: @PreDestroy() cleanup() { ... }
114
+ */
115
+ function PreDestroy() {
116
+ return (target, propertyKey, descriptor) => {
117
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.PRE_DESTROY, propertyKey, target.constructor);
86
118
  };
87
119
  }
88
120
  //# sourceMappingURL=injection.decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injection.decorators.js","sourceRoot":"","sources":["../../../src/core/decorators/injection.decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injection.decorators.js","sourceRoot":"","sources":["../../../src/core/decorators/injection.decorators.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/repository.decorator.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,IAAI,cAAc,CAU3C"}
1
+ {"version":3,"file":"repository.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/repository.decorator.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,IAAI,cAAc,CAY3C"}
@@ -6,12 +6,13 @@ const metadata_keys_1 = require("../metadata/metadata-keys");
6
6
  const metadata_storage_1 = require("../metadata/metadata-storage");
7
7
  function Repository() {
8
8
  return (target) => {
9
- (0, injectable_decorator_1.Injectable)("singleton")(target);
9
+ (0, injectable_decorator_1.Injectable)('singleton')(target);
10
10
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.REPOSITORY, true, target);
11
- metadata_storage_1.MetadataStorage.getInstance().addClass({
11
+ const storage = metadata_storage_1.MetadataStorage.getInstance();
12
+ storage.addClass({
12
13
  target,
13
- type: "repository",
14
- scope: "singleton",
14
+ type: 'repository',
15
+ scope: 'singleton'
15
16
  });
16
17
  };
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repository.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/repository.decorator.ts"],"names":[],"mappings":";;AAIA,gCAUC;AAdD,iEAAoD;AACpD,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAgB,UAAU;IACxB,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAA,iCAAU,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,kCAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YACrC,MAAM;YACN,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"repository.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/repository.decorator.ts"],"names":[],"mappings":";;AAIA,gCAYC;AAhBD,iEAAoD;AACpD,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAgB,UAAU;IACxB,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAA,iCAAU,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,CAAC;YACf,MAAM;YACN,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/service.decorator.ts"],"names":[],"mappings":"AAIA,wBAAgB,OAAO,IAAI,cAAc,CAUxC"}
1
+ {"version":3,"file":"service.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/service.decorator.ts"],"names":[],"mappings":"AAIA,wBAAgB,OAAO,IAAI,cAAc,CAYxC"}
@@ -6,12 +6,13 @@ const metadata_keys_1 = require("../metadata/metadata-keys");
6
6
  const metadata_storage_1 = require("../metadata/metadata-storage");
7
7
  function Service() {
8
8
  return (target) => {
9
- (0, injectable_decorator_1.Injectable)("singleton")(target);
9
+ (0, injectable_decorator_1.Injectable)('singleton')(target);
10
10
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.SERVICE, true, target);
11
- metadata_storage_1.MetadataStorage.getInstance().addClass({
11
+ const storage = metadata_storage_1.MetadataStorage.getInstance();
12
+ storage.addClass({
12
13
  target,
13
- type: "service",
14
- scope: "singleton",
14
+ type: 'service',
15
+ scope: 'singleton'
15
16
  });
16
17
  };
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/service.decorator.ts"],"names":[],"mappings":";;AAIA,0BAUC;AAdD,iEAAoD;AACpD,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAgB,OAAO;IACrB,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAA,iCAAU,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,kCAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YACrC,MAAM;YACN,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"service.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/service.decorator.ts"],"names":[],"mappings":";;AAIA,0BAYC;AAhBD,iEAAoD;AACpD,6DAA0D;AAC1D,mEAA+D;AAE/D,SAAgB,OAAO;IACrB,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAA,iCAAU,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,6BAAa,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,OAAO,GAAG,kCAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,CAAC;YACf,MAAM;YACN,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}