@noego/ioc 0.0.7 → 0.0.9

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 (181) hide show
  1. package/dist/framework/decorators/Component.cjs +41 -0
  2. package/dist/framework/decorators/Component.cjs.map +1 -0
  3. package/dist/framework/decorators/Component.d.cts +12 -0
  4. package/dist/framework/decorators/Component.d.ts +12 -0
  5. package/dist/framework/decorators/Component.js +17 -0
  6. package/dist/framework/decorators/Component.js.map +1 -0
  7. package/dist/framework/decorators/Inject.cjs +37 -0
  8. package/dist/framework/decorators/Inject.cjs.map +1 -0
  9. package/dist/{cjs/framework/decorators/Inject.d.ts → framework/decorators/Inject.d.cts} +3 -2
  10. package/dist/{esm/framework → framework}/decorators/Inject.d.ts +3 -2
  11. package/dist/framework/decorators/Inject.js +13 -0
  12. package/dist/framework/decorators/Inject.js.map +1 -0
  13. package/dist/framework/decorators/index.cjs +35 -0
  14. package/dist/framework/decorators/index.cjs.map +1 -0
  15. package/dist/framework/decorators/index.d.cts +4 -0
  16. package/dist/framework/decorators/index.d.ts +4 -0
  17. package/dist/framework/decorators/index.js +8 -0
  18. package/dist/framework/decorators/index.js.map +1 -0
  19. package/dist/framework/decorators/metadataKeys.cjs +35 -0
  20. package/dist/framework/decorators/metadataKeys.cjs.map +1 -0
  21. package/dist/framework/decorators/metadataKeys.d.cts +5 -0
  22. package/dist/framework/decorators/metadataKeys.d.ts +5 -0
  23. package/dist/framework/decorators/metadataKeys.js +9 -0
  24. package/dist/framework/decorators/metadataKeys.js.map +1 -0
  25. package/dist/framework/errors/ContainerErrors.cjs +61 -0
  26. package/dist/framework/errors/ContainerErrors.cjs.map +1 -0
  27. package/dist/{cjs/framework/errors/ContainerErrors.d.ts → framework/errors/ContainerErrors.d.cts} +7 -5
  28. package/dist/{esm/framework → framework}/errors/ContainerErrors.d.ts +7 -5
  29. package/dist/framework/errors/ContainerErrors.js +33 -0
  30. package/dist/framework/errors/ContainerErrors.js.map +1 -0
  31. package/dist/framework/implementation/Container.cjs +342 -0
  32. package/dist/framework/implementation/Container.cjs.map +1 -0
  33. package/dist/{cjs/framework/implementation/Container.d.ts → framework/implementation/Container.d.cts} +9 -6
  34. package/dist/{esm/framework → framework}/implementation/Container.d.ts +9 -6
  35. package/dist/framework/implementation/Container.js +320 -0
  36. package/dist/framework/implementation/Container.js.map +1 -0
  37. package/dist/framework/implementation/DecoratorSupport.cjs +92 -0
  38. package/dist/framework/implementation/DecoratorSupport.cjs.map +1 -0
  39. package/dist/framework/implementation/DecoratorSupport.d.cts +33 -0
  40. package/dist/framework/implementation/DecoratorSupport.d.ts +33 -0
  41. package/dist/framework/implementation/DecoratorSupport.js +63 -0
  42. package/dist/framework/implementation/DecoratorSupport.js.map +1 -0
  43. package/dist/framework/implementation/LoadAs.cjs +34 -0
  44. package/dist/framework/implementation/LoadAs.cjs.map +1 -0
  45. package/dist/{esm/framework/implementation/LoadAs.d.ts → framework/implementation/LoadAs.d.cts} +3 -1
  46. package/dist/{cjs/framework → framework}/implementation/LoadAs.d.ts +3 -1
  47. package/dist/framework/implementation/LoadAs.js +10 -0
  48. package/dist/framework/implementation/LoadAs.js.map +1 -0
  49. package/dist/framework/implementation/Parameter.cjs +82 -0
  50. package/dist/framework/implementation/Parameter.cjs.map +1 -0
  51. package/dist/{esm/framework/implementation/Parameter.d.ts → framework/implementation/Parameter.d.cts} +4 -2
  52. package/dist/{cjs/framework → framework}/implementation/Parameter.d.ts +4 -2
  53. package/dist/framework/implementation/Parameter.js +47 -0
  54. package/dist/framework/implementation/Parameter.js.map +1 -0
  55. package/dist/framework/interface/Container.cjs +17 -0
  56. package/dist/framework/interface/Container.cjs.map +1 -0
  57. package/dist/{esm/framework/interface/Container.d.ts → framework/interface/Container.d.cts} +10 -7
  58. package/dist/{cjs/framework → framework}/interface/Container.d.ts +10 -7
  59. package/dist/framework/interface/Container.js +1 -0
  60. package/dist/framework/interface/Container.js.map +1 -0
  61. package/dist/index.cjs +58 -0
  62. package/dist/index.cjs.map +1 -0
  63. package/dist/index.d.cts +12 -0
  64. package/dist/index.d.ts +12 -0
  65. package/dist/index.js +24 -0
  66. package/dist/index.js.map +1 -0
  67. package/package.json +18 -14
  68. package/dist/cjs/framework/decorators/Component.d.ts +0 -10
  69. package/dist/cjs/framework/decorators/Component.js +0 -25
  70. package/dist/cjs/framework/decorators/Component.js.map +0 -1
  71. package/dist/cjs/framework/decorators/Inject.js +0 -22
  72. package/dist/cjs/framework/decorators/Inject.js.map +0 -1
  73. package/dist/cjs/framework/decorators/index.d.ts +0 -3
  74. package/dist/cjs/framework/decorators/index.js +0 -24
  75. package/dist/cjs/framework/decorators/index.js.map +0 -1
  76. package/dist/cjs/framework/decorators/metadataKeys.d.ts +0 -3
  77. package/dist/cjs/framework/decorators/metadataKeys.js +0 -8
  78. package/dist/cjs/framework/decorators/metadataKeys.js.map +0 -1
  79. package/dist/cjs/framework/errors/ContainerErrors.js +0 -52
  80. package/dist/cjs/framework/errors/ContainerErrors.js.map +0 -1
  81. package/dist/cjs/framework/implementation/Container.js +0 -448
  82. package/dist/cjs/framework/implementation/Container.js.map +0 -1
  83. package/dist/cjs/framework/implementation/Container.test.d.ts +0 -1
  84. package/dist/cjs/framework/implementation/Container.test.js +0 -184
  85. package/dist/cjs/framework/implementation/Container.test.js.map +0 -1
  86. package/dist/cjs/framework/implementation/ContainerAsync.test.d.ts +0 -1
  87. package/dist/cjs/framework/implementation/ContainerAsync.test.js +0 -178
  88. package/dist/cjs/framework/implementation/ContainerAsync.test.js.map +0 -1
  89. package/dist/cjs/framework/implementation/ContainerBasic.test.d.ts +0 -1
  90. package/dist/cjs/framework/implementation/ContainerBasic.test.js +0 -101
  91. package/dist/cjs/framework/implementation/ContainerBasic.test.js.map +0 -1
  92. package/dist/cjs/framework/implementation/ContainerDecorators.test.d.ts +0 -1
  93. package/dist/cjs/framework/implementation/ContainerDecorators.test.js +0 -517
  94. package/dist/cjs/framework/implementation/ContainerDecorators.test.js.map +0 -1
  95. package/dist/cjs/framework/implementation/ContainerExtension.test.d.ts +0 -1
  96. package/dist/cjs/framework/implementation/ContainerExtension.test.js +0 -169
  97. package/dist/cjs/framework/implementation/ContainerExtension.test.js.map +0 -1
  98. package/dist/cjs/framework/implementation/ContainerLifetimes.test.d.ts +0 -1
  99. package/dist/cjs/framework/implementation/ContainerLifetimes.test.js +0 -154
  100. package/dist/cjs/framework/implementation/ContainerLifetimes.test.js.map +0 -1
  101. package/dist/cjs/framework/implementation/DecoratorSupport.d.ts +0 -31
  102. package/dist/cjs/framework/implementation/DecoratorSupport.js +0 -96
  103. package/dist/cjs/framework/implementation/DecoratorSupport.js.map +0 -1
  104. package/dist/cjs/framework/implementation/LoadAs.js +0 -10
  105. package/dist/cjs/framework/implementation/LoadAs.js.map +0 -1
  106. package/dist/cjs/framework/implementation/Parameter.js +0 -87
  107. package/dist/cjs/framework/implementation/Parameter.js.map +0 -1
  108. package/dist/cjs/framework/implementation/Parameter.test.d.ts +0 -1
  109. package/dist/cjs/framework/implementation/Parameter.test.js +0 -19
  110. package/dist/cjs/framework/implementation/Parameter.test.js.map +0 -1
  111. package/dist/cjs/framework/implementation/SimpleDecoratorTest.test.d.ts +0 -1
  112. package/dist/cjs/framework/implementation/SimpleDecoratorTest.test.js +0 -78
  113. package/dist/cjs/framework/implementation/SimpleDecoratorTest.test.js.map +0 -1
  114. package/dist/cjs/framework/implementation/SingletonTest.test.d.ts +0 -1
  115. package/dist/cjs/framework/implementation/SingletonTest.test.js +0 -85
  116. package/dist/cjs/framework/implementation/SingletonTest.test.js.map +0 -1
  117. package/dist/cjs/framework/interface/Container.js +0 -3
  118. package/dist/cjs/framework/interface/Container.js.map +0 -1
  119. package/dist/cjs/index.d.ts +0 -18
  120. package/dist/cjs/index.js +0 -24
  121. package/dist/cjs/index.js.map +0 -1
  122. package/dist/cjs/jest.config.d.ts +0 -3
  123. package/dist/cjs/jest.config.js +0 -9
  124. package/dist/cjs/jest.config.js.map +0 -1
  125. package/dist/esm/framework/decorators/Component.d.ts +0 -10
  126. package/dist/esm/framework/decorators/Component.js +0 -21
  127. package/dist/esm/framework/decorators/Component.js.map +0 -1
  128. package/dist/esm/framework/decorators/Inject.js +0 -19
  129. package/dist/esm/framework/decorators/Inject.js.map +0 -1
  130. package/dist/esm/framework/decorators/index.d.ts +0 -3
  131. package/dist/esm/framework/decorators/index.js +0 -5
  132. package/dist/esm/framework/decorators/index.js.map +0 -1
  133. package/dist/esm/framework/decorators/metadataKeys.d.ts +0 -3
  134. package/dist/esm/framework/decorators/metadataKeys.js +0 -5
  135. package/dist/esm/framework/decorators/metadataKeys.js.map +0 -1
  136. package/dist/esm/framework/errors/ContainerErrors.js +0 -44
  137. package/dist/esm/framework/errors/ContainerErrors.js.map +0 -1
  138. package/dist/esm/framework/implementation/Container.js +0 -432
  139. package/dist/esm/framework/implementation/Container.js.map +0 -1
  140. package/dist/esm/framework/implementation/Container.test.d.ts +0 -1
  141. package/dist/esm/framework/implementation/Container.test.js +0 -173
  142. package/dist/esm/framework/implementation/Container.test.js.map +0 -1
  143. package/dist/esm/framework/implementation/ContainerAsync.test.d.ts +0 -1
  144. package/dist/esm/framework/implementation/ContainerAsync.test.js +0 -151
  145. package/dist/esm/framework/implementation/ContainerAsync.test.js.map +0 -1
  146. package/dist/esm/framework/implementation/ContainerBasic.test.d.ts +0 -1
  147. package/dist/esm/framework/implementation/ContainerBasic.test.js +0 -90
  148. package/dist/esm/framework/implementation/ContainerBasic.test.js.map +0 -1
  149. package/dist/esm/framework/implementation/ContainerDecorators.test.d.ts +0 -1
  150. package/dist/esm/framework/implementation/ContainerDecorators.test.js +0 -498
  151. package/dist/esm/framework/implementation/ContainerDecorators.test.js.map +0 -1
  152. package/dist/esm/framework/implementation/ContainerExtension.test.d.ts +0 -1
  153. package/dist/esm/framework/implementation/ContainerExtension.test.js +0 -158
  154. package/dist/esm/framework/implementation/ContainerExtension.test.js.map +0 -1
  155. package/dist/esm/framework/implementation/ContainerLifetimes.test.d.ts +0 -1
  156. package/dist/esm/framework/implementation/ContainerLifetimes.test.js +0 -143
  157. package/dist/esm/framework/implementation/ContainerLifetimes.test.js.map +0 -1
  158. package/dist/esm/framework/implementation/DecoratorSupport.d.ts +0 -31
  159. package/dist/esm/framework/implementation/DecoratorSupport.js +0 -87
  160. package/dist/esm/framework/implementation/DecoratorSupport.js.map +0 -1
  161. package/dist/esm/framework/implementation/LoadAs.js +0 -7
  162. package/dist/esm/framework/implementation/LoadAs.js.map +0 -1
  163. package/dist/esm/framework/implementation/Parameter.js +0 -49
  164. package/dist/esm/framework/implementation/Parameter.js.map +0 -1
  165. package/dist/esm/framework/implementation/Parameter.test.d.ts +0 -1
  166. package/dist/esm/framework/implementation/Parameter.test.js +0 -17
  167. package/dist/esm/framework/implementation/Parameter.test.js.map +0 -1
  168. package/dist/esm/framework/implementation/SimpleDecoratorTest.test.d.ts +0 -1
  169. package/dist/esm/framework/implementation/SimpleDecoratorTest.test.js +0 -67
  170. package/dist/esm/framework/implementation/SimpleDecoratorTest.test.js.map +0 -1
  171. package/dist/esm/framework/implementation/SingletonTest.test.d.ts +0 -1
  172. package/dist/esm/framework/implementation/SingletonTest.test.js +0 -74
  173. package/dist/esm/framework/implementation/SingletonTest.test.js.map +0 -1
  174. package/dist/esm/framework/interface/Container.js +0 -2
  175. package/dist/esm/framework/interface/Container.js.map +0 -1
  176. package/dist/esm/index.d.ts +0 -18
  177. package/dist/esm/index.js +0 -15
  178. package/dist/esm/index.js.map +0 -1
  179. package/dist/esm/jest.config.d.ts +0 -3
  180. package/dist/esm/jest.config.js +0 -7
  181. package/dist/esm/jest.config.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../framework/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oBAAoB;AACpB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,iDAA+B"}
@@ -1,3 +0,0 @@
1
- export declare const COMPONENT_OPTIONS_METADATA_KEY: unique symbol;
2
- export declare const PARAM_TYPES_METADATA_KEY = "design:paramtypes";
3
- export declare const INJECT_TOKEN_METADATA_KEY: unique symbol;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INJECT_TOKEN_METADATA_KEY = exports.PARAM_TYPES_METADATA_KEY = exports.COMPONENT_OPTIONS_METADATA_KEY = void 0;
4
- // framework/decorators/metadataKeys.ts
5
- exports.COMPONENT_OPTIONS_METADATA_KEY = Symbol.for("ioc:component:options");
6
- exports.PARAM_TYPES_METADATA_KEY = "design:paramtypes"; // Standard key
7
- exports.INJECT_TOKEN_METADATA_KEY = Symbol.for("ioc:inject:tokens");
8
- //# sourceMappingURL=metadataKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadataKeys.js","sourceRoot":"","sources":["../../../../framework/decorators/metadataKeys.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AAC1B,QAAA,8BAA8B,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACrE,QAAA,wBAAwB,GAAG,mBAAmB,CAAC,CAAC,eAAe;AAC/D,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC"}
@@ -1,52 +0,0 @@
1
- "use strict";
2
- /**
3
- * Error types for the IOC container
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CircularDependencyError = exports.InstanceNotCreatedError = exports.DependencyNotFoundError = exports.ParameterNotFoundError = exports.NotAClassDefinitionError = void 0;
7
- /**
8
- * Thrown when a class definition is expected but not provided
9
- */
10
- class NotAClassDefinitionError extends Error {
11
- constructor(message = "Not a class definition") {
12
- super(message);
13
- }
14
- }
15
- exports.NotAClassDefinitionError = NotAClassDefinitionError;
16
- /**
17
- * Thrown when a parameter value is required but not provided
18
- */
19
- class ParameterNotFoundError extends Error {
20
- constructor(paramName = "parameter") {
21
- super(`No value found for ${paramName}`);
22
- }
23
- }
24
- exports.ParameterNotFoundError = ParameterNotFoundError;
25
- /**
26
- * Thrown when trying to resolve a dependency that is not registered
27
- */
28
- class DependencyNotFoundError extends Error {
29
- constructor(label) {
30
- super(`Dependency not found: ${label}`);
31
- }
32
- }
33
- exports.DependencyNotFoundError = DependencyNotFoundError;
34
- /**
35
- * Thrown when an instance has not been created but is being retrieved
36
- */
37
- class InstanceNotCreatedError extends Error {
38
- constructor() {
39
- super("Instance has not been created and therefore cannot be retrieved");
40
- }
41
- }
42
- exports.InstanceNotCreatedError = InstanceNotCreatedError;
43
- /**
44
- * Thrown when circular dependencies are detected
45
- */
46
- class CircularDependencyError extends Error {
47
- constructor(dependencyChain) {
48
- super(`Circular dependency detected: ${dependencyChain.join(' -> ')}`);
49
- }
50
- }
51
- exports.CircularDependencyError = CircularDependencyError;
52
- //# sourceMappingURL=ContainerErrors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContainerErrors.js","sourceRoot":"","sources":["../../../../framework/errors/ContainerErrors.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IAC/C,YAAY,OAAO,GAAG,wBAAwB;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,4DAIC;AAED;;GAEG;AACH,MAAa,sBAAuB,SAAQ,KAAK;IAC7C,YAAY,SAAS,GAAG,WAAW;QAC/B,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;CACJ;AAJD,wDAIC;AAED;;GAEG;AACH,MAAa,uBAAwB,SAAQ,KAAK;IAC9C,YAAY,KAAU;QAClB,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;CACJ;AAJD,0DAIC;AAED;;GAEG;AACH,MAAa,uBAAwB,SAAQ,KAAK;IAC9C;QACI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IAC7E,CAAC;CACJ;AAJD,0DAIC;AAED;;GAEG;AACH,MAAa,uBAAwB,SAAQ,KAAK;IAC9C,YAAY,eAAyB;QACjC,KAAK,CAAC,iCAAiC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;CACJ;AAJD,0DAIC"}
@@ -1,448 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Container = void 0;
13
- exports.isPromise = isPromise;
14
- exports.createContainer = createContainer;
15
- require("reflect-metadata"); // Ensure polyfill is loaded conceptually
16
- const LoadAs_1 = require("./LoadAs");
17
- const Parameter_1 = require("./Parameter");
18
- const ContainerErrors_1 = require("../errors/ContainerErrors");
19
- const DecoratorSupport_1 = require("./DecoratorSupport"); // Assume helpers exist or create them
20
- var ContainerRouting;
21
- (function (ContainerRouting) {
22
- ContainerRouting["FUNCTIONAL"] = "FUNCTIONAL";
23
- ContainerRouting["CLASS"] = "CLASS";
24
- // No need for COMPONENT route, just check metadata if CLASS/FUNCTIONAL fails
25
- })(ContainerRouting || (ContainerRouting = {}));
26
- class Container {
27
- constructor() {
28
- // Routing and definition maps
29
- this._routing = new Map();
30
- this._functionDefinition = new Map();
31
- this._classDefinition = new Map();
32
- // Storage maps
33
- this._functionStorageSingleton = new Map();
34
- this._functionStorageScoped = new Map();
35
- this._classStorageSingleton = new Map();
36
- this._classStorageScoped = new Map();
37
- }
38
- // Registration methods
39
- registerClass(classDefinition, options) {
40
- // Basic validation
41
- if (typeof classDefinition !== 'function' || !classDefinition.prototype) {
42
- console.warn(`[IOC] Attempted to register non-class: ${String(classDefinition)}`);
43
- // Optional: throw error instead?
44
- // throw new NotAClassDefinitionError(`Attempted to register non-class: ${String(classDefinition)}`);
45
- return; // Don't proceed if not a class constructor
46
- }
47
- // Always clear previous definitions for this exact class constructor
48
- this.clearDefinitions(classDefinition);
49
- // Always set the routing type so 'isClassDefinition' works
50
- this._routing.set(classDefinition, ContainerRouting.CLASS);
51
- // Store manual options *only if they are actually provided and have content*
52
- if (options && Object.keys(options).length > 0) {
53
- this._classDefinition.set(classDefinition, options);
54
- // console.log(`[IOC RegClass] Manually registered ${classDefinition.name} with options:`, options);
55
- }
56
- else {
57
- // console.log(`[IOC RegClass] Manually registered ${classDefinition.name} with no specific options (will use decorators if present).`);
58
- // If no options are provided, we don't store anything in _classDefinition,
59
- // effectively clearing any previous manual config and letting decorators take over if present.
60
- }
61
- }
62
- registerFunction(label, func, options = {}) {
63
- this.clearDefinitions(label);
64
- this._routing.set(label, ContainerRouting.FUNCTIONAL);
65
- this._functionDefinition.set(label, { function: func, options });
66
- // console.log(`[IOC RegFunc] Registered function with label ${String(label)} and options:`, options);
67
- }
68
- // Instance resolution methods - Simplify to just call loadInstance
69
- instance(classDefinition, params = []) {
70
- // Basic check upfront
71
- if (typeof classDefinition !== 'function' || !classDefinition.prototype) {
72
- throw new ContainerErrors_1.NotAClassDefinitionError(`Cannot resolve instance for non-class: ${String(classDefinition)}`);
73
- }
74
- return this.loadInstance(classDefinition, params);
75
- }
76
- get(label, param = []) {
77
- // Just delegate to loadInstance, which handles routing and auto-registration
78
- return this.loadInstance(label, param);
79
- }
80
- extend() {
81
- const childContainer = createContainer();
82
- // Copy routing and definition maps (share the registration knowledge)
83
- childContainer._routing = new Map(this._routing);
84
- childContainer._functionDefinition = new Map(this._functionDefinition);
85
- childContainer._classDefinition = new Map(this._classDefinition);
86
- // Share singleton storage (singletons are shared across all containers)
87
- childContainer._functionStorageSingleton = this._functionStorageSingleton;
88
- childContainer._classStorageSingleton = this._classStorageSingleton;
89
- // Do NOT share scoped storage (new container = new scope)
90
- // Child gets its own empty scoped storage
91
- // console.log('[IOC Extend] Created child container.');
92
- return childContainer;
93
- }
94
- // Private helper methods
95
- clearDefinitions(label) {
96
- this._routing.delete(label);
97
- this._functionDefinition.delete(label);
98
- // Only delete from classDefinition if the label is actually a function constructor
99
- if (typeof label === 'function') {
100
- this._classDefinition.delete(label);
101
- }
102
- }
103
- // Checks if the label is *currently* registered as a class
104
- isRegisteredAsClass(label) {
105
- return this._routing.get(label) === ContainerRouting.CLASS;
106
- }
107
- // Checks if the label is *currently* registered as a function
108
- isRegisteredAsFunction(label) {
109
- return this._routing.get(label) === ContainerRouting.FUNCTIONAL;
110
- }
111
- hasInstance(label) {
112
- const storageType = this.getStorageType(label); // This checks decorators if needed
113
- if (!storageType) {
114
- // Transient instances are never stored
115
- return false;
116
- }
117
- // Determine if it's treated as a class (registered or decorated) *after* getting type
118
- const isClass = this.isClassType(label); // Use a helper that checks routing OR decorator
119
- if (isClass) {
120
- return storageType === 'singleton'
121
- ? this._classStorageSingleton.has(label)
122
- : this._classStorageScoped.has(label);
123
- }
124
- else { // Must be a function if not a class
125
- return storageType === 'singleton'
126
- ? this._functionStorageSingleton.has(label)
127
- : this._functionStorageScoped.has(label);
128
- }
129
- }
130
- // Helper to determine if something should be treated as a class (registered or decorated)
131
- isClassType(label) {
132
- if (this.isRegisteredAsClass(label)) {
133
- return true;
134
- }
135
- // If not explicitly registered as a class, check if it's a function with @Component
136
- if (typeof label === 'function' && label.prototype && !this.isRegisteredAsFunction(label)) {
137
- return (0, DecoratorSupport_1.getComponentOptions)(label) !== null;
138
- }
139
- return false;
140
- }
141
- getInstance(label) {
142
- const storageType = this.getStorageType(label); // Checks decorators if needed
143
- if (!storageType) {
144
- // This should ideally not be reached if called after hasInstance check
145
- console.error(`[IOC GetInstance] Attempted to get instance for non-stored type: ${String(label)}`);
146
- throw new ContainerErrors_1.InstanceNotCreatedError();
147
- }
148
- const isClass = this.isClassType(label); // Check routing OR decorator
149
- if (isClass) {
150
- return storageType === 'singleton'
151
- ? this._classStorageSingleton.get(label)
152
- : this._classStorageScoped.get(label);
153
- }
154
- else { // Must be a function
155
- return storageType === 'singleton'
156
- ? this._functionStorageSingleton.get(label)
157
- : this._functionStorageScoped.get(label);
158
- }
159
- }
160
- setInstance(label, instance, storageType) {
161
- const isClass = this.isClassType(label); // Determine type based on routing OR decorator
162
- if (isClass) {
163
- if (storageType === 'singleton') {
164
- this._classStorageSingleton.set(label, instance);
165
- }
166
- else if (storageType == 'scoped') { // storageType === 'scoped'
167
- this._classStorageScoped.set(label, instance);
168
- }
169
- }
170
- else { // Must be a function
171
- if (storageType === 'singleton') {
172
- this._functionStorageSingleton.set(label, instance);
173
- }
174
- else if (storageType === "scoped") { // storageType === 'scoped'
175
- this._functionStorageScoped.set(label, instance);
176
- }
177
- }
178
- }
179
- getStorageType(label) {
180
- var _a, _b, _c, _d;
181
- let manualLoadAs;
182
- let decoratorScope;
183
- const isPotentialClass = typeof label === 'function' && label.prototype;
184
- // Get manual registration options if available
185
- if (this.isRegisteredAsClass(label)) { // Use helper
186
- manualLoadAs = (_a = this._classDefinition.get(label)) === null || _a === void 0 ? void 0 : _a.loadAs;
187
- }
188
- else if (this.isRegisteredAsFunction(label)) { // Use helper
189
- manualLoadAs = (_c = (_b = this._functionDefinition.get(label)) === null || _b === void 0 ? void 0 : _b.options) === null || _c === void 0 ? void 0 : _c.loadAs;
190
- }
191
- // Get decorator scope only if it's potentially a class *and not explicitly registered as a function*
192
- if (isPotentialClass && !this.isRegisteredAsFunction(label)) {
193
- decoratorScope = (0, DecoratorSupport_1.getScope)(label); // Uses getComponentOptions internally
194
- }
195
- // Determine final scope: Manual > Decorator > Default (Transient)
196
- const finalScope = (_d = manualLoadAs !== null && manualLoadAs !== void 0 ? manualLoadAs : decoratorScope) !== null && _d !== void 0 ? _d : LoadAs_1.LoadAs.Transient;
197
- if (finalScope === LoadAs_1.LoadAs.Singleton) {
198
- return 'singleton';
199
- }
200
- else if (finalScope === LoadAs_1.LoadAs.Scoped) {
201
- return 'scoped';
202
- }
203
- else {
204
- return 'transient'; // Transient
205
- }
206
- }
207
- // Central resolution logic
208
- loadInstance(label_1) {
209
- return __awaiter(this, arguments, void 0, function* (label, params = [], resolutionChain = [] // Track resolution path
210
- ) {
211
- // --- Circular Dependency Check ---
212
- const currentLabelStr = (typeof label === 'function' && label.name) ? label.name : String(label);
213
- if (resolutionChain.includes(currentLabelStr)) {
214
- console.error(`[IOC LoadInstance] Circular dependency detected: ${[...resolutionChain, currentLabelStr].join(' -> ')}`);
215
- throw new ContainerErrors_1.CircularDependencyError([...resolutionChain, currentLabelStr]);
216
- }
217
- const nextResolutionChain = [...resolutionChain, currentLabelStr];
218
- // --- End Circular Dependency Check ---
219
- // --- Handle Parameters ---
220
- if (label instanceof Parameter_1.Parameter) {
221
- try {
222
- // Pass a *copy* of params to avoid side effects in resolveParameterValue
223
- return Promise.resolve(this.resolveParameterValue(label, [...params]));
224
- }
225
- catch (e) {
226
- // console.error(`[IOC LoadInstance] Error resolving parameter ${param.toString()}:`, e);
227
- return Promise.reject(e);
228
- }
229
- }
230
- // --- End Handle Parameters ---
231
- // --- Check Explicit Registrations ---
232
- if (this.isRegisteredAsClass(label)) {
233
- // console.log(`[IOC LoadInstance] Resolving explicitly registered class: ${currentLabelStr}`);
234
- return this.loadClassInstance(label, params, nextResolutionChain);
235
- }
236
- if (this.isRegisteredAsFunction(label)) {
237
- // console.log(`[IOC LoadInstance] Resolving explicitly registered function: ${currentLabelStr}`);
238
- return this.loadFunctionInstance(label, params, nextResolutionChain);
239
- }
240
- // --- End Check Explicit Registrations ---
241
- // --- Attempt Auto-Registration/Resolution for Decorated Classes ---
242
- if (typeof label === 'function' && label.prototype) {
243
- const componentOptions = (0, DecoratorSupport_1.getComponentOptions)(label); // Check for @Component
244
- if (componentOptions !== null) {
245
- // console.log(`[IOC LoadInstance] Auto-resolving @Component class: ${currentLabelStr}`);
246
- // Set routing *now* so subsequent internal checks work correctly
247
- if (!this._routing.has(label)) { // Only set if not already set
248
- this._routing.set(label, ContainerRouting.CLASS);
249
- // console.log(`[IOC LoadInstance] Set routing for auto-resolved class: ${currentLabelStr}`);
250
- }
251
- // Proceed to load it as a class
252
- return this.loadClassInstance(label, params, nextResolutionChain);
253
- }
254
- }
255
- // --- End Auto-Registration ---
256
- // --- Dependency Not Found ---
257
- console.error(`[IOC LoadInstance] Dependency not found and cannot be resolved: ${currentLabelStr}`);
258
- throw new ContainerErrors_1.DependencyNotFoundError(currentLabelStr);
259
- });
260
- }
261
- resolveParameterValue(param, params) {
262
- // Find the *last* provided value for the parameter
263
- const valueContainer = [...params].reverse().find((p) => p.belongsTo(param));
264
- if (!valueContainer) {
265
- // console.error(`[IOC ResolveParam] Parameter not found: ${param.toString()}`);
266
- throw new ContainerErrors_1.ParameterNotFoundError(param.toString());
267
- }
268
- // console.log(`[IOC ResolveParam] Resolved parameter ${param.toString()}`);
269
- return valueContainer.value;
270
- }
271
- loadClassInstance(classDefinition, // Should be a class constructor here
272
- params, resolutionChain) {
273
- const storageType = this.getStorageType(classDefinition);
274
- const className = classDefinition.name || '[Anonymous Class]';
275
- // Check storage first (handle stored promises)
276
- if (storageType && this.hasInstance(classDefinition)) {
277
- const instance = this.getInstance(classDefinition);
278
- // console.log(`[IOC LoadClass] Found existing ${storageType} instance for ${className}. IsPromise: ${isPromise(instance)}`);
279
- return instance;
280
- }
281
- // console.log(`[IOC LoadClass] Creating new ${storageType || 'transient'} instance for ${className}`);
282
- // --- Determine Dependencies ---
283
- const manualOptions = this._classDefinition.get(classDefinition);
284
- let dependenciesToResolve;
285
- if ((manualOptions === null || manualOptions === void 0 ? void 0 : manualOptions.param) && Array.isArray(manualOptions.param)) {
286
- dependenciesToResolve = manualOptions.param;
287
- // console.log(`[IOC LoadClass] Using manual dependencies for ${className}`);
288
- }
289
- else {
290
- // Use decorator-derived dependencies
291
- dependenciesToResolve = (0, DecoratorSupport_1.getResolvedDependencies)(classDefinition);
292
- // console.log(`[IOC LoadClass] Using decorator/reflected dependencies for ${className}:`, dependenciesToResolve.map(d => typeof d === 'function' ? d.name : String(d)));
293
- }
294
- // --- End Determine Dependencies ---
295
- // --- Resolve Dependencies ---
296
- // Create a *copy* of params to pass down for dependency resolution
297
- const paramsCopy = [...params];
298
- const resolutionPromises = dependenciesToResolve.map(dependencyIdentifier => this.loadInstance(dependencyIdentifier, paramsCopy, resolutionChain) // Recursive call handles auto-registration
299
- );
300
- let finalInstance = Promise.all(resolutionPromises)
301
- .catch((error) => {
302
- console.error(`[IOC LoadClass] Failed to resolve one or more dependencies for ${className}:`, error);
303
- // Clean up potential partially stored promise if this was going to be singleton/scoped
304
- if (storageType && this.isRegisteredAsClass(classDefinition)) { // Check if it was actually *being* stored
305
- if (storageType === 'singleton')
306
- this._classStorageSingleton.delete(classDefinition);
307
- if (storageType === 'scoped')
308
- this._classStorageScoped.delete(classDefinition);
309
- }
310
- throw error; // Re-throw dependency resolution error
311
- }).then((resolvedDependencies) => __awaiter(this, void 0, void 0, function* () {
312
- // --- Instantiate Class ---
313
- // Store the promise *before* starting instantiation for concurrent requests
314
- let instancePromise;
315
- if (storageType && !this.hasInstance(classDefinition)) { // Check again in case of race condition?
316
- // Create the promise wrapper immediately
317
- instancePromise = (() => __awaiter(this, void 0, void 0, function* () {
318
- try {
319
- // console.log(`[IOC LoadClass] Instantiating ${className} with ${resolvedDependencies.length} args.`);
320
- const instance = new classDefinition(...resolvedDependencies);
321
- // Overwrite the stored promise with the actual instance *after* it's created
322
- this.setInstance(classDefinition, instance, storageType); // Use the correct storageType
323
- // console.log(`[IOC LoadClass] Stored actual ${storageType} instance for ${className}`);
324
- return instance;
325
- }
326
- catch (err) {
327
- console.error(`[IOC LoadClass] Error during instantiation of ${className}: ${err.message}`, err.stack);
328
- // Clean up the stored promise on failure
329
- if (storageType === 'singleton')
330
- this._classStorageSingleton.delete(classDefinition);
331
- if (storageType === 'scoped')
332
- this._classStorageScoped.delete(classDefinition);
333
- throw err; // Re-throw instantiation error
334
- }
335
- }))();
336
- // console.log(`[IOC LoadClass] Storing promise for concurrent requests (${storageType}) for ${className}`);
337
- this.setInstance(classDefinition, instancePromise, storageType);
338
- }
339
- else {
340
- // If already has instance (from storage check) or is transient, just instantiate directly
341
- instancePromise = (() => __awaiter(this, void 0, void 0, function* () {
342
- try {
343
- // console.log(`[IOC LoadClass] Instantiating transient ${className} with ${resolvedDependencies.length} args.`);
344
- const instance = new classDefinition(...resolvedDependencies);
345
- // No storing for transient
346
- return instance;
347
- }
348
- catch (err) {
349
- console.error(`[IOC LoadClass] Error during instantiation of transient ${className}: ${err.message}`, err.stack);
350
- throw err; // Re-throw instantiation error
351
- }
352
- }))();
353
- }
354
- // --- End Instantiate Class ---
355
- // Await and return the final instance (either newly created or from the stored promise)
356
- return yield instancePromise;
357
- }));
358
- if (storageType && storageType !== 'transient') {
359
- this.setInstance(classDefinition, finalInstance, storageType); // Store the promise
360
- }
361
- return finalInstance;
362
- }
363
- loadFunctionInstance(funcLabel, params, resolutionChain) {
364
- const functionConfig = this._functionDefinition.get(funcLabel); // Assumed to exist by caller
365
- const storageType = this.getStorageType(funcLabel); // Only uses manual options for functions
366
- const labelStr = String(funcLabel);
367
- // Check storage first
368
- if (storageType && this.hasInstance(funcLabel)) {
369
- const instance = this.getInstance(funcLabel);
370
- // console.log(`[IOC LoadFunc] Found existing ${storageType} instance for ${labelStr}. IsPromise: ${isPromise(instance)}`);
371
- return instance;
372
- }
373
- // console.log(`[IOC LoadFunc] Creating new ${storageType || 'transient'} instance for ${labelStr}`);
374
- const ioc_func = functionConfig.function;
375
- const options = functionConfig.options;
376
- const dependenciesToResolve = (options === null || options === void 0 ? void 0 : options.param) || [];
377
- // --- Resolve Dependencies ---
378
- const paramsCopy = [...params]; // Create a copy
379
- const resolutionPromises = dependenciesToResolve.map(dependencyIdentifier => this.loadInstance(dependencyIdentifier, paramsCopy, resolutionChain));
380
- let finalInstance = Promise.all(resolutionPromises).catch((error) => {
381
- console.error(`[IOC LoadFunc] Failed to resolve dependencies for function ${labelStr}:`, error);
382
- // Clean up potential partial storage
383
- if (storageType && this.isRegisteredAsFunction(funcLabel)) {
384
- if (storageType === 'singleton')
385
- this._functionStorageSingleton.delete(funcLabel);
386
- if (storageType === 'scoped')
387
- this._functionStorageScoped.delete(funcLabel);
388
- }
389
- throw error;
390
- }).then((resolvedArgs) => __awaiter(this, void 0, void 0, function* () {
391
- let instancePromise;
392
- if (storageType && !this.hasInstance(funcLabel)) {
393
- instancePromise = (() => __awaiter(this, void 0, void 0, function* () {
394
- try {
395
- // console.log(`[IOC LoadFunc] Invoking ${labelStr} with ${resolvedArgs.length} args.`);
396
- const result = yield ioc_func.apply(null, resolvedArgs); // Await in case function is async
397
- // Overwrite stored promise with actual result
398
- this.setInstance(funcLabel, result, storageType);
399
- // console.log(`[IOC LoadFunc] Stored actual ${storageType} instance for ${labelStr}`);
400
- return result;
401
- }
402
- catch (err) {
403
- console.error(`[IOC LoadFunc] Error executing function ${labelStr}: ${err.message}`, err.stack);
404
- // Clean up stored promise on failure
405
- if (storageType === 'singleton')
406
- this._functionStorageSingleton.delete(funcLabel);
407
- if (storageType === 'scoped')
408
- this._functionStorageScoped.delete(funcLabel);
409
- throw err;
410
- }
411
- }))();
412
- // console.log(`[IOC LoadFunc] Storing promise for concurrent requests (${storageType}) for ${labelStr}`);
413
- this.setInstance(funcLabel, instancePromise, storageType);
414
- }
415
- else {
416
- // Transient or already resolved from storage check
417
- instancePromise = (() => __awaiter(this, void 0, void 0, function* () {
418
- try {
419
- // console.log(`[IOC LoadFunc] Invoking transient ${labelStr} with ${resolvedArgs.length} args.`);
420
- const result = yield ioc_func.apply(null, resolvedArgs); // Await in case function is async
421
- // No storing for transient
422
- return result;
423
- }
424
- catch (err) {
425
- console.error(`[IOC LoadFunc] Error executing transient function ${labelStr}: ${err.message}`, err.stack);
426
- throw err;
427
- }
428
- }))();
429
- }
430
- // --- End Invoke Function ---
431
- return yield instancePromise; // Return the final (awaited) result
432
- }));
433
- if (storageType && storageType !== 'transient') {
434
- this.setInstance(funcLabel, finalInstance, storageType); // Store the promise
435
- }
436
- return finalInstance;
437
- }
438
- }
439
- exports.Container = Container;
440
- // Helper functions
441
- function isPromise(obj) {
442
- // Simplified check - more robust check might be needed depending on environment
443
- return !!obj && typeof obj.then === 'function';
444
- }
445
- function createContainer() {
446
- return new Container();
447
- }
448
- //# sourceMappingURL=Container.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../../framework/implementation/Container.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};