@elsikora/cladi 1.0.1

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 (213) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +325 -0
  3. package/dist/cjs/domain/enum/index.d.ts +3 -0
  4. package/dist/cjs/domain/enum/index.d.ts.map +1 -0
  5. package/dist/cjs/domain/enum/logger-log-level.enum.d.ts +11 -0
  6. package/dist/cjs/domain/enum/logger-log-level.enum.d.ts.map +1 -0
  7. package/dist/cjs/domain/enum/logger-log-level.enum.js +14 -0
  8. package/dist/cjs/domain/enum/logger-log-level.enum.js.map +1 -0
  9. package/dist/cjs/domain/enum/service-token.enum.d.ts +10 -0
  10. package/dist/cjs/domain/enum/service-token.enum.d.ts.map +1 -0
  11. package/dist/cjs/domain/enum/service-token.enum.js +13 -0
  12. package/dist/cjs/domain/enum/service-token.enum.js.map +1 -0
  13. package/dist/cjs/domain/index.d.ts +3 -0
  14. package/dist/cjs/domain/index.d.ts.map +1 -0
  15. package/dist/cjs/domain/interface/container.interface.d.ts +55 -0
  16. package/dist/cjs/domain/interface/container.interface.d.ts.map +1 -0
  17. package/dist/cjs/domain/interface/error.interface.d.ts +18 -0
  18. package/dist/cjs/domain/interface/error.interface.d.ts.map +1 -0
  19. package/dist/cjs/domain/interface/factory.interface.d.ts +19 -0
  20. package/dist/cjs/domain/interface/factory.interface.d.ts.map +1 -0
  21. package/dist/cjs/domain/interface/index.d.ts +6 -0
  22. package/dist/cjs/domain/interface/index.d.ts.map +1 -0
  23. package/dist/cjs/domain/interface/logger/index.d.ts +3 -0
  24. package/dist/cjs/domain/interface/logger/index.d.ts.map +1 -0
  25. package/dist/cjs/domain/interface/logger/interface.d.ts +37 -0
  26. package/dist/cjs/domain/interface/logger/interface.d.ts.map +1 -0
  27. package/dist/cjs/domain/interface/logger/method-options.interface.d.ts +14 -0
  28. package/dist/cjs/domain/interface/logger/method-options.interface.d.ts.map +1 -0
  29. package/dist/cjs/domain/interface/registry.interface.d.ts +54 -0
  30. package/dist/cjs/domain/interface/registry.interface.d.ts.map +1 -0
  31. package/dist/cjs/index.d.ts +4 -0
  32. package/dist/cjs/index.d.ts.map +1 -0
  33. package/dist/cjs/index.js +38 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/infrastructure/class/base/container.class.d.ts +67 -0
  36. package/dist/cjs/infrastructure/class/base/container.class.d.ts.map +1 -0
  37. package/dist/cjs/infrastructure/class/base/container.class.js +193 -0
  38. package/dist/cjs/infrastructure/class/base/container.class.js.map +1 -0
  39. package/dist/cjs/infrastructure/class/base/error.class.d.ts +18 -0
  40. package/dist/cjs/infrastructure/class/base/error.class.d.ts.map +1 -0
  41. package/dist/cjs/infrastructure/class/base/error.class.js +30 -0
  42. package/dist/cjs/infrastructure/class/base/error.class.js.map +1 -0
  43. package/dist/cjs/infrastructure/class/base/factory.class.d.ts +38 -0
  44. package/dist/cjs/infrastructure/class/base/factory.class.d.ts.map +1 -0
  45. package/dist/cjs/infrastructure/class/base/factory.class.js +79 -0
  46. package/dist/cjs/infrastructure/class/base/factory.class.js.map +1 -0
  47. package/dist/cjs/infrastructure/class/base/index.d.ts +5 -0
  48. package/dist/cjs/infrastructure/class/base/index.d.ts.map +1 -0
  49. package/dist/cjs/infrastructure/class/base/registry.class.d.ts +73 -0
  50. package/dist/cjs/infrastructure/class/base/registry.class.d.ts.map +1 -0
  51. package/dist/cjs/infrastructure/class/base/registry.class.js +221 -0
  52. package/dist/cjs/infrastructure/class/base/registry.class.js.map +1 -0
  53. package/dist/cjs/infrastructure/constant/console-logger-default-options.constant.d.ts +6 -0
  54. package/dist/cjs/infrastructure/constant/console-logger-default-options.constant.d.ts.map +1 -0
  55. package/dist/cjs/infrastructure/constant/console-logger-default-options.constant.js +12 -0
  56. package/dist/cjs/infrastructure/constant/console-logger-default-options.constant.js.map +1 -0
  57. package/dist/cjs/infrastructure/constant/index.d.ts +2 -0
  58. package/dist/cjs/infrastructure/constant/index.d.ts.map +1 -0
  59. package/dist/cjs/infrastructure/factory/core.factory.d.ts +51 -0
  60. package/dist/cjs/infrastructure/factory/core.factory.d.ts.map +1 -0
  61. package/dist/cjs/infrastructure/factory/core.factory.js +85 -0
  62. package/dist/cjs/infrastructure/factory/core.factory.js.map +1 -0
  63. package/dist/cjs/infrastructure/factory/index.d.ts +2 -0
  64. package/dist/cjs/infrastructure/factory/index.d.ts.map +1 -0
  65. package/dist/cjs/infrastructure/index.d.ts +6 -0
  66. package/dist/cjs/infrastructure/index.d.ts.map +1 -0
  67. package/dist/cjs/infrastructure/interface/base/container-options.interface.d.ts +11 -0
  68. package/dist/cjs/infrastructure/interface/base/container-options.interface.d.ts.map +1 -0
  69. package/dist/cjs/infrastructure/interface/base/error-options.interface.d.ts +22 -0
  70. package/dist/cjs/infrastructure/interface/base/error-options.interface.d.ts.map +1 -0
  71. package/dist/cjs/infrastructure/interface/base/factory-options.interface.d.ts +21 -0
  72. package/dist/cjs/infrastructure/interface/base/factory-options.interface.d.ts.map +1 -0
  73. package/dist/cjs/infrastructure/interface/base/index.d.ts +5 -0
  74. package/dist/cjs/infrastructure/interface/base/index.d.ts.map +1 -0
  75. package/dist/cjs/infrastructure/interface/base/registry-options.interface.d.ts +11 -0
  76. package/dist/cjs/infrastructure/interface/base/registry-options.interface.d.ts.map +1 -0
  77. package/dist/cjs/infrastructure/interface/console-logger-options.interface.d.ts +15 -0
  78. package/dist/cjs/infrastructure/interface/console-logger-options.interface.d.ts.map +1 -0
  79. package/dist/cjs/infrastructure/interface/core-factory-options.interface.d.ts +11 -0
  80. package/dist/cjs/infrastructure/interface/core-factory-options.interface.d.ts.map +1 -0
  81. package/dist/cjs/infrastructure/interface/index.d.ts +4 -0
  82. package/dist/cjs/infrastructure/interface/index.d.ts.map +1 -0
  83. package/dist/cjs/infrastructure/service/console-logger.service.d.ts +71 -0
  84. package/dist/cjs/infrastructure/service/console-logger.service.d.ts.map +1 -0
  85. package/dist/cjs/infrastructure/service/console-logger.service.js +130 -0
  86. package/dist/cjs/infrastructure/service/console-logger.service.js.map +1 -0
  87. package/dist/cjs/infrastructure/service/index.d.ts +2 -0
  88. package/dist/cjs/infrastructure/service/index.d.ts.map +1 -0
  89. package/dist/cjs/package.json +3 -0
  90. package/dist/cjs/presentation/utility/create/container.utility.d.ts +9 -0
  91. package/dist/cjs/presentation/utility/create/container.utility.d.ts.map +1 -0
  92. package/dist/cjs/presentation/utility/create/container.utility.js +18 -0
  93. package/dist/cjs/presentation/utility/create/container.utility.js.map +1 -0
  94. package/dist/cjs/presentation/utility/create/factory.utility.d.ts +10 -0
  95. package/dist/cjs/presentation/utility/create/factory.utility.d.ts.map +1 -0
  96. package/dist/cjs/presentation/utility/create/factory.utility.js +19 -0
  97. package/dist/cjs/presentation/utility/create/factory.utility.js.map +1 -0
  98. package/dist/cjs/presentation/utility/create/index.d.ts +5 -0
  99. package/dist/cjs/presentation/utility/create/index.d.ts.map +1 -0
  100. package/dist/cjs/presentation/utility/create/logger.utility.d.ts +9 -0
  101. package/dist/cjs/presentation/utility/create/logger.utility.d.ts.map +1 -0
  102. package/dist/cjs/presentation/utility/create/logger.utility.js +16 -0
  103. package/dist/cjs/presentation/utility/create/logger.utility.js.map +1 -0
  104. package/dist/cjs/presentation/utility/create/registry.utility.d.ts +12 -0
  105. package/dist/cjs/presentation/utility/create/registry.utility.d.ts.map +1 -0
  106. package/dist/cjs/presentation/utility/create/registry.utility.js +19 -0
  107. package/dist/cjs/presentation/utility/create/registry.utility.js.map +1 -0
  108. package/dist/esm/domain/enum/index.d.ts +3 -0
  109. package/dist/esm/domain/enum/index.d.ts.map +1 -0
  110. package/dist/esm/domain/enum/logger-log-level.enum.d.ts +11 -0
  111. package/dist/esm/domain/enum/logger-log-level.enum.d.ts.map +1 -0
  112. package/dist/esm/domain/enum/logger-log-level.enum.js +14 -0
  113. package/dist/esm/domain/enum/logger-log-level.enum.js.map +1 -0
  114. package/dist/esm/domain/enum/service-token.enum.d.ts +10 -0
  115. package/dist/esm/domain/enum/service-token.enum.d.ts.map +1 -0
  116. package/dist/esm/domain/enum/service-token.enum.js +13 -0
  117. package/dist/esm/domain/enum/service-token.enum.js.map +1 -0
  118. package/dist/esm/domain/index.d.ts +3 -0
  119. package/dist/esm/domain/index.d.ts.map +1 -0
  120. package/dist/esm/domain/interface/container.interface.d.ts +55 -0
  121. package/dist/esm/domain/interface/container.interface.d.ts.map +1 -0
  122. package/dist/esm/domain/interface/error.interface.d.ts +18 -0
  123. package/dist/esm/domain/interface/error.interface.d.ts.map +1 -0
  124. package/dist/esm/domain/interface/factory.interface.d.ts +19 -0
  125. package/dist/esm/domain/interface/factory.interface.d.ts.map +1 -0
  126. package/dist/esm/domain/interface/index.d.ts +6 -0
  127. package/dist/esm/domain/interface/index.d.ts.map +1 -0
  128. package/dist/esm/domain/interface/logger/index.d.ts +3 -0
  129. package/dist/esm/domain/interface/logger/index.d.ts.map +1 -0
  130. package/dist/esm/domain/interface/logger/interface.d.ts +37 -0
  131. package/dist/esm/domain/interface/logger/interface.d.ts.map +1 -0
  132. package/dist/esm/domain/interface/logger/method-options.interface.d.ts +14 -0
  133. package/dist/esm/domain/interface/logger/method-options.interface.d.ts.map +1 -0
  134. package/dist/esm/domain/interface/registry.interface.d.ts +54 -0
  135. package/dist/esm/domain/interface/registry.interface.d.ts.map +1 -0
  136. package/dist/esm/index.d.ts +4 -0
  137. package/dist/esm/index.d.ts.map +1 -0
  138. package/dist/esm/index.js +14 -0
  139. package/dist/esm/index.js.map +1 -0
  140. package/dist/esm/infrastructure/class/base/container.class.d.ts +67 -0
  141. package/dist/esm/infrastructure/class/base/container.class.d.ts.map +1 -0
  142. package/dist/esm/infrastructure/class/base/container.class.js +191 -0
  143. package/dist/esm/infrastructure/class/base/container.class.js.map +1 -0
  144. package/dist/esm/infrastructure/class/base/error.class.d.ts +18 -0
  145. package/dist/esm/infrastructure/class/base/error.class.d.ts.map +1 -0
  146. package/dist/esm/infrastructure/class/base/error.class.js +28 -0
  147. package/dist/esm/infrastructure/class/base/error.class.js.map +1 -0
  148. package/dist/esm/infrastructure/class/base/factory.class.d.ts +38 -0
  149. package/dist/esm/infrastructure/class/base/factory.class.d.ts.map +1 -0
  150. package/dist/esm/infrastructure/class/base/factory.class.js +77 -0
  151. package/dist/esm/infrastructure/class/base/factory.class.js.map +1 -0
  152. package/dist/esm/infrastructure/class/base/index.d.ts +5 -0
  153. package/dist/esm/infrastructure/class/base/index.d.ts.map +1 -0
  154. package/dist/esm/infrastructure/class/base/registry.class.d.ts +73 -0
  155. package/dist/esm/infrastructure/class/base/registry.class.d.ts.map +1 -0
  156. package/dist/esm/infrastructure/class/base/registry.class.js +219 -0
  157. package/dist/esm/infrastructure/class/base/registry.class.js.map +1 -0
  158. package/dist/esm/infrastructure/constant/console-logger-default-options.constant.d.ts +6 -0
  159. package/dist/esm/infrastructure/constant/console-logger-default-options.constant.d.ts.map +1 -0
  160. package/dist/esm/infrastructure/constant/console-logger-default-options.constant.js +10 -0
  161. package/dist/esm/infrastructure/constant/console-logger-default-options.constant.js.map +1 -0
  162. package/dist/esm/infrastructure/constant/index.d.ts +2 -0
  163. package/dist/esm/infrastructure/constant/index.d.ts.map +1 -0
  164. package/dist/esm/infrastructure/factory/core.factory.d.ts +51 -0
  165. package/dist/esm/infrastructure/factory/core.factory.d.ts.map +1 -0
  166. package/dist/esm/infrastructure/factory/core.factory.js +83 -0
  167. package/dist/esm/infrastructure/factory/core.factory.js.map +1 -0
  168. package/dist/esm/infrastructure/factory/index.d.ts +2 -0
  169. package/dist/esm/infrastructure/factory/index.d.ts.map +1 -0
  170. package/dist/esm/infrastructure/index.d.ts +6 -0
  171. package/dist/esm/infrastructure/index.d.ts.map +1 -0
  172. package/dist/esm/infrastructure/interface/base/container-options.interface.d.ts +11 -0
  173. package/dist/esm/infrastructure/interface/base/container-options.interface.d.ts.map +1 -0
  174. package/dist/esm/infrastructure/interface/base/error-options.interface.d.ts +22 -0
  175. package/dist/esm/infrastructure/interface/base/error-options.interface.d.ts.map +1 -0
  176. package/dist/esm/infrastructure/interface/base/factory-options.interface.d.ts +21 -0
  177. package/dist/esm/infrastructure/interface/base/factory-options.interface.d.ts.map +1 -0
  178. package/dist/esm/infrastructure/interface/base/index.d.ts +5 -0
  179. package/dist/esm/infrastructure/interface/base/index.d.ts.map +1 -0
  180. package/dist/esm/infrastructure/interface/base/registry-options.interface.d.ts +11 -0
  181. package/dist/esm/infrastructure/interface/base/registry-options.interface.d.ts.map +1 -0
  182. package/dist/esm/infrastructure/interface/console-logger-options.interface.d.ts +15 -0
  183. package/dist/esm/infrastructure/interface/console-logger-options.interface.d.ts.map +1 -0
  184. package/dist/esm/infrastructure/interface/core-factory-options.interface.d.ts +11 -0
  185. package/dist/esm/infrastructure/interface/core-factory-options.interface.d.ts.map +1 -0
  186. package/dist/esm/infrastructure/interface/index.d.ts +4 -0
  187. package/dist/esm/infrastructure/interface/index.d.ts.map +1 -0
  188. package/dist/esm/infrastructure/service/console-logger.service.d.ts +71 -0
  189. package/dist/esm/infrastructure/service/console-logger.service.d.ts.map +1 -0
  190. package/dist/esm/infrastructure/service/console-logger.service.js +128 -0
  191. package/dist/esm/infrastructure/service/console-logger.service.js.map +1 -0
  192. package/dist/esm/infrastructure/service/index.d.ts +2 -0
  193. package/dist/esm/infrastructure/service/index.d.ts.map +1 -0
  194. package/dist/esm/package.json +3 -0
  195. package/dist/esm/presentation/utility/create/container.utility.d.ts +9 -0
  196. package/dist/esm/presentation/utility/create/container.utility.d.ts.map +1 -0
  197. package/dist/esm/presentation/utility/create/container.utility.js +16 -0
  198. package/dist/esm/presentation/utility/create/container.utility.js.map +1 -0
  199. package/dist/esm/presentation/utility/create/factory.utility.d.ts +10 -0
  200. package/dist/esm/presentation/utility/create/factory.utility.d.ts.map +1 -0
  201. package/dist/esm/presentation/utility/create/factory.utility.js +17 -0
  202. package/dist/esm/presentation/utility/create/factory.utility.js.map +1 -0
  203. package/dist/esm/presentation/utility/create/index.d.ts +5 -0
  204. package/dist/esm/presentation/utility/create/index.d.ts.map +1 -0
  205. package/dist/esm/presentation/utility/create/logger.utility.d.ts +9 -0
  206. package/dist/esm/presentation/utility/create/logger.utility.d.ts.map +1 -0
  207. package/dist/esm/presentation/utility/create/logger.utility.js +14 -0
  208. package/dist/esm/presentation/utility/create/logger.utility.js.map +1 -0
  209. package/dist/esm/presentation/utility/create/registry.utility.d.ts +12 -0
  210. package/dist/esm/presentation/utility/create/registry.utility.d.ts.map +1 -0
  211. package/dist/esm/presentation/utility/create/registry.utility.js +17 -0
  212. package/dist/esm/presentation/utility/create/registry.utility.js.map +1 -0
  213. package/package.json +89 -0
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Generic registry interface for managing items by name.
3
+ * @template T The type of items stored in the registry.
4
+ */
5
+ export interface IRegistry<T> {
6
+ /**
7
+ * Clear the registry.
8
+ */
9
+ clear(): void;
10
+ /**
11
+ * Get a single item from the registry by name.
12
+ * @param name The name of the item to get.
13
+ * @returns The item or undefined if it doesn't exist.
14
+ */
15
+ get(name: string): T | undefined;
16
+ /**
17
+ * Get all items from the registry.
18
+ * @returns An array of all items.
19
+ */
20
+ getAll(): Array<T>;
21
+ /**
22
+ * Get multiple items from the registry by their names.
23
+ * @param names The names of the items to get.
24
+ * @returns An array of items.
25
+ */
26
+ getMany(names: Array<string>): Array<T>;
27
+ /**
28
+ * Check if an item exists in the registry by name.
29
+ * @param name The name of the item to check.
30
+ * @returns True if the item exists, false otherwise.
31
+ */
32
+ has(name: string): boolean;
33
+ /**
34
+ * Register a single item in the registry.
35
+ * @param item The item to register.
36
+ */
37
+ register(item: T): void;
38
+ /**
39
+ * Register multiple items in the registry.
40
+ * @param items The items to register.
41
+ */
42
+ registerMany(items: Array<T>): void;
43
+ /**
44
+ * Unregister a single item from the registry by name.
45
+ * @param name The name of the item to unregister.
46
+ */
47
+ unregister(name: string): void;
48
+ /**
49
+ * Unregister multiple items from the registry by their names.
50
+ * @param names The names of the items to unregister.
51
+ */
52
+ unregisterMany(names: Array<string>): void;
53
+ }
54
+ //# sourceMappingURL=registry.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.interface.d.ts","sourceRoot":"","sources":["../../../../src/domain/interface/registry.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC3B;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEjC;;;OAGG;IACH,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnB;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExC;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEpC;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC3C"}
@@ -0,0 +1,4 @@
1
+ export * from "./domain";
2
+ export * from "./infrastructure";
3
+ export * from "./presentation/utility/create";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var loggerLogLevel_enum = require('./domain/enum/logger-log-level.enum.js');
4
+ var serviceToken_enum = require('./domain/enum/service-token.enum.js');
5
+ var container_class = require('./infrastructure/class/base/container.class.js');
6
+ var error_class = require('./infrastructure/class/base/error.class.js');
7
+ var factory_class = require('./infrastructure/class/base/factory.class.js');
8
+ var registry_class = require('./infrastructure/class/base/registry.class.js');
9
+ var consoleLoggerDefaultOptions_constant = require('./infrastructure/constant/console-logger-default-options.constant.js');
10
+ var core_factory = require('./infrastructure/factory/core.factory.js');
11
+ var consoleLogger_service = require('./infrastructure/service/console-logger.service.js');
12
+ var container_utility = require('./presentation/utility/create/container.utility.js');
13
+ var factory_utility = require('./presentation/utility/create/factory.utility.js');
14
+ var logger_utility = require('./presentation/utility/create/logger.utility.js');
15
+ var registry_utility = require('./presentation/utility/create/registry.utility.js');
16
+
17
+
18
+
19
+ Object.defineProperty(exports, "ELoggerLogLevel", {
20
+ enumerable: true,
21
+ get: function () { return loggerLogLevel_enum.ELoggerLogLevel; }
22
+ });
23
+ Object.defineProperty(exports, "EServiceToken", {
24
+ enumerable: true,
25
+ get: function () { return serviceToken_enum.EServiceToken; }
26
+ });
27
+ exports.BaseContainer = container_class.BaseContainer;
28
+ exports.BaseError = error_class.BaseError;
29
+ exports.BaseFactory = factory_class.BaseFactory;
30
+ exports.BaseRegistry = registry_class.BaseRegistry;
31
+ exports.CONSOLE_LOGGER_DEFAULT_OPTIONS = consoleLoggerDefaultOptions_constant.CONSOLE_LOGGER_DEFAULT_OPTIONS;
32
+ exports.CoreFactory = core_factory.CoreFactory;
33
+ exports.ConsoleLoggerService = consoleLogger_service.ConsoleLoggerService;
34
+ exports.createContainer = container_utility.createContainer;
35
+ exports.createFactory = factory_utility.createFactory;
36
+ exports.createLogger = logger_utility.createLogger;
37
+ exports.createRegistry = registry_utility.createRegistry;
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,67 @@
1
+ import type { IContainer } from '../../../src/domain/interface/container.interface';
2
+ import type { IBaseContainerOptions } from '../../../src/infrastructure/interface/index';
3
+ /**
4
+ * Simple dependency injection container implementation.
5
+ */
6
+ export declare class BaseContainer implements IContainer {
7
+ private readonly DEPENDENCIES;
8
+ private readonly LOGGER;
9
+ /**
10
+ * Create a new container.
11
+ * @param {IBaseContainerOptions} options - The options to use for the container.
12
+ */
13
+ constructor(options: IBaseContainerOptions);
14
+ /**
15
+ * Clear all dependencies from the container.
16
+ */
17
+ clear(): void;
18
+ /**
19
+ * Get a dependency from the container.
20
+ * @param {symbol} token Token that identifies the dependency.
21
+ * @returns {T | undefined} The dependency, or undefined if it doesn't exist.
22
+ * @template T The type of the dependency.
23
+ */
24
+ get<T>(token: symbol): T | undefined;
25
+ /**
26
+ * Get all dependencies from the container.
27
+ * @returns {Array<unknown>} An array of all dependencies.
28
+ */
29
+ getAll(): Array<unknown>;
30
+ /**
31
+ * Get multiple dependencies from the container.
32
+ * @param {Array<symbol>} tokens Tokens that identify the dependencies.
33
+ * @returns {Array<unknown>} An array of dependencies.
34
+ */
35
+ getMany<T>(tokens: Array<symbol>): Array<T>;
36
+ /**
37
+ * Check if a dependency exists in the container.
38
+ * @param {symbol} token Token that identifies the dependency.
39
+ * @returns {boolean} True if the dependency exists, false otherwise.
40
+ */
41
+ has(token: symbol): boolean;
42
+ /**
43
+ * Register a dependency in the container.
44
+ * @param {symbol} token Token that identifies the dependency.
45
+ * @param {T} implementation Implementation of the dependency.
46
+ * @template T The type of the dependency.
47
+ */
48
+ register(token: symbol, implementation: unknown): void;
49
+ /**
50
+ * Register multiple dependencies in the container.
51
+ * @param {Array<symbol>} tokens Tokens that identify the dependencies.
52
+ * @param {Array<T>} implementations Implementations of the dependencies.
53
+ * @template T The type of the dependencies.
54
+ */
55
+ registerMany(tokens: Array<symbol>, implementations: Record<symbol, unknown>): void;
56
+ /**
57
+ * Remove a dependency from the container.
58
+ * @param {symbol} token Token that identifies the dependency.
59
+ */
60
+ unregister(token: symbol): void;
61
+ /**
62
+ * Remove multiple dependencies from the container.
63
+ * @param {Array<symbol>} tokens Tokens that identify the dependencies.
64
+ */
65
+ unregisterMany(tokens: Array<symbol>): void;
66
+ }
67
+ //# sourceMappingURL=container.class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.class.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/class/base/container.class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMvE;;GAEG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAEpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC;;;OAGG;gBACS,OAAO,EAAE,qBAAqB;IAK1C;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;;;;OAKG;IAEI,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAoB3C;;;OAGG;IACI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;IAQ/B;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAwBlD;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAclC;;;;;OAKG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IAsB7D;;;;;OAKG;IAEI,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAyB1F;;;OAGG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAmBtC;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;CAwBlD"}
@@ -0,0 +1,193 @@
1
+ 'use strict';
2
+
3
+ var consoleLogger_service = require('../../service/console-logger.service.js');
4
+ var error_class = require('./error.class.js');
5
+
6
+ /**
7
+ * Simple dependency injection container implementation.
8
+ */
9
+ class BaseContainer {
10
+ DEPENDENCIES;
11
+ LOGGER;
12
+ /**
13
+ * Create a new container.
14
+ * @param {IBaseContainerOptions} options - The options to use for the container.
15
+ */
16
+ constructor(options) {
17
+ this.DEPENDENCIES = new Map();
18
+ this.LOGGER = options.logger ?? new consoleLogger_service.ConsoleLoggerService();
19
+ }
20
+ /**
21
+ * Clear all dependencies from the container.
22
+ */
23
+ clear() {
24
+ this.LOGGER.debug("Clearing all dependencies from container", { source: "Container" });
25
+ this.DEPENDENCIES.clear();
26
+ this.LOGGER.debug("Container cleared successfully", { source: "Container" });
27
+ }
28
+ /**
29
+ * Get a dependency from the container.
30
+ * @param {symbol} token Token that identifies the dependency.
31
+ * @returns {T | undefined} The dependency, or undefined if it doesn't exist.
32
+ * @template T The type of the dependency.
33
+ */
34
+ // eslint-disable-next-line @elsikora/typescript/no-unnecessary-type-parameters
35
+ get(token) {
36
+ if (!token) {
37
+ this.LOGGER.warn("Attempted to get dependency with empty token", { source: "Container" });
38
+ return undefined;
39
+ }
40
+ this.LOGGER.debug(`Getting dependency with token: ${String(token.description)}`, { source: "Container" });
41
+ const dependency = this.DEPENDENCIES.get(token);
42
+ if (dependency) {
43
+ this.LOGGER.debug(`Dependency found: ${String(token.description)}`, { source: "Container" });
44
+ }
45
+ else {
46
+ this.LOGGER.debug(`Dependency not found: ${String(token.description)}`, { source: "Container" });
47
+ }
48
+ return dependency;
49
+ }
50
+ /**
51
+ * Get all dependencies from the container.
52
+ * @returns {Array<unknown>} An array of all dependencies.
53
+ */
54
+ getAll() {
55
+ this.LOGGER.debug("Getting all dependencies", { source: "Container" });
56
+ const dependencies = [...this.DEPENDENCIES.values()];
57
+ this.LOGGER.debug(`Retrieved ${String(dependencies.length)} dependencies`, { source: "Container" });
58
+ return dependencies;
59
+ }
60
+ /**
61
+ * Get multiple dependencies from the container.
62
+ * @param {Array<symbol>} tokens Tokens that identify the dependencies.
63
+ * @returns {Array<unknown>} An array of dependencies.
64
+ */
65
+ getMany(tokens) {
66
+ if (!tokens) {
67
+ throw new error_class.BaseError("Tokens cannot be null or undefined", {
68
+ code: "CONTAINER_TOKENS_NOT_NULL_OR_UNDEFINED",
69
+ source: "Container",
70
+ });
71
+ }
72
+ if (!Array.isArray(tokens)) {
73
+ throw new error_class.BaseError("Tokens must be an array", {
74
+ code: "CONTAINER_TOKENS_NOT_ARRAY",
75
+ source: "Container",
76
+ });
77
+ }
78
+ this.LOGGER.debug(`Getting ${String(tokens.length)} dependencies by token`, { source: "Container" });
79
+ const result = tokens.map((token) => this.get(token)).filter((item) => item !== undefined);
80
+ this.LOGGER.debug(`Retrieved ${String(result.length)} dependencies`, { source: "Container" });
81
+ return result;
82
+ }
83
+ /**
84
+ * Check if a dependency exists in the container.
85
+ * @param {symbol} token Token that identifies the dependency.
86
+ * @returns {boolean} True if the dependency exists, false otherwise.
87
+ */
88
+ has(token) {
89
+ if (!token) {
90
+ return false;
91
+ }
92
+ this.LOGGER.debug(`Checking if dependency exists: ${String(token.description)}`, { source: "Container" });
93
+ const isExists = this.DEPENDENCIES.has(token);
94
+ this.LOGGER.debug(`Dependency ${isExists ? "exists" : "does not exist"}: ${String(token.description)}`, { source: "Container" });
95
+ return isExists;
96
+ }
97
+ /**
98
+ * Register a dependency in the container.
99
+ * @param {symbol} token Token that identifies the dependency.
100
+ * @param {T} implementation Implementation of the dependency.
101
+ * @template T The type of the dependency.
102
+ */
103
+ register(token, implementation) {
104
+ if (!token) {
105
+ throw new error_class.BaseError("Token cannot be null or undefined", {
106
+ code: "CONTAINER_TOKEN_NOT_NULL_OR_UNDEFINED",
107
+ source: "Container",
108
+ });
109
+ }
110
+ this.LOGGER.debug(`Registering dependency with token: ${String(token.description)}`, { source: "Container" });
111
+ if (this.has(token)) {
112
+ throw new error_class.BaseError("Dependency already exists in container", {
113
+ code: "CONTAINER_DEPENDENCY_ALREADY_EXISTS",
114
+ source: "Container",
115
+ });
116
+ }
117
+ this.DEPENDENCIES.set(token, implementation);
118
+ this.LOGGER.debug(`Dependency registered successfully: ${String(token.description)}`, { source: "Container" });
119
+ }
120
+ /**
121
+ * Register multiple dependencies in the container.
122
+ * @param {Array<symbol>} tokens Tokens that identify the dependencies.
123
+ * @param {Array<T>} implementations Implementations of the dependencies.
124
+ * @template T The type of the dependencies.
125
+ */
126
+ registerMany(tokens, implementations) {
127
+ if (!tokens) {
128
+ throw new error_class.BaseError("Tokens cannot be null or undefined", {
129
+ code: "CONTAINER_TOKENS_NOT_NULL_OR_UNDEFINED",
130
+ source: "Container",
131
+ });
132
+ }
133
+ if (!Array.isArray(tokens)) {
134
+ throw new error_class.BaseError("Tokens must be an array", {
135
+ code: "CONTAINER_TOKENS_NOT_ARRAY",
136
+ source: "Container",
137
+ });
138
+ }
139
+ this.LOGGER.debug(`Registering ${String(tokens.length)} dependencies`, { source: "Container" });
140
+ // eslint-disable-next-line @elsikora/no-secrets/no-pattern-match
141
+ for (const token of tokens) {
142
+ this.register(token, implementations[token]);
143
+ }
144
+ this.LOGGER.debug(`${String(tokens.length)} dependencies registered successfully`, { source: "Container" });
145
+ }
146
+ /**
147
+ * Remove a dependency from the container.
148
+ * @param {symbol} token Token that identifies the dependency.
149
+ */
150
+ unregister(token) {
151
+ if (!token) {
152
+ throw new error_class.BaseError("Token cannot be null or undefined", {
153
+ code: "CONTAINER_TOKEN_NOT_NULL_OR_UNDEFINED",
154
+ source: "Container",
155
+ });
156
+ }
157
+ this.LOGGER.debug(`Unregistering dependency with token: ${String(token.description)}`, { source: "Container" });
158
+ const wasDeleted = this.DEPENDENCIES.delete(token);
159
+ if (wasDeleted) {
160
+ this.LOGGER.debug(`Dependency unregistered successfully: ${String(token.description)}`, { source: "Container" });
161
+ }
162
+ else {
163
+ this.LOGGER.debug(`Dependency not found for unregistering: ${String(token.description)}`, { source: "Container" });
164
+ }
165
+ }
166
+ /**
167
+ * Remove multiple dependencies from the container.
168
+ * @param {Array<symbol>} tokens Tokens that identify the dependencies.
169
+ */
170
+ unregisterMany(tokens) {
171
+ if (!tokens) {
172
+ throw new error_class.BaseError("Tokens cannot be null or undefined", {
173
+ code: "CONTAINER_TOKENS_NOT_NULL_OR_UNDEFINED",
174
+ source: "Container",
175
+ });
176
+ }
177
+ if (!Array.isArray(tokens)) {
178
+ throw new error_class.BaseError("Tokens must be an array", {
179
+ code: "CONTAINER_TOKENS_NOT_ARRAY",
180
+ source: "Container",
181
+ });
182
+ }
183
+ this.LOGGER.debug(`Unregistering ${String(tokens.length)} dependencies`, { source: "Container" });
184
+ // eslint-disable-next-line @elsikora/no-secrets/no-pattern-match
185
+ for (const token of tokens) {
186
+ this.unregister(token);
187
+ }
188
+ this.LOGGER.debug(`${String(tokens.length)} dependencies unregistered`, { source: "Container" });
189
+ }
190
+ }
191
+
192
+ exports.BaseContainer = BaseContainer;
193
+ //# sourceMappingURL=container.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.class.js","sources":["../../../../../../src/infrastructure/class/base/container.class.ts"],"sourcesContent":[null],"names":["ConsoleLoggerService","BaseError"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { IError } from '../../../src/domain/interface/index';
2
+ import type { IBaseErrorOptions } from '../../../src/infrastructure/interface/base/index';
3
+ /**
4
+ * Base error class.
5
+ */
6
+ export declare class BaseError extends Error implements IError {
7
+ readonly CAUSE?: Error;
8
+ readonly CODE: string;
9
+ readonly CONTEXT?: Record<string, unknown>;
10
+ readonly SOURCE?: string;
11
+ /**
12
+ * Creates a new base error.
13
+ * @param {string} message Error message.
14
+ * @param {IBaseErrorOptions} options Error options.
15
+ */
16
+ constructor(message: string, options: IBaseErrorOptions);
17
+ }
18
+ //# sourceMappingURL=error.class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.class.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/class/base/error.class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAM,YAAW,MAAM;IACrD,SAAgB,KAAK,CAAC,EAAE,KAAK,CAAC;IAE9B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElD,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB;CAYvD"}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Base error class.
5
+ */
6
+ class BaseError extends Error {
7
+ CAUSE;
8
+ CODE;
9
+ CONTEXT;
10
+ SOURCE;
11
+ /**
12
+ * Creates a new base error.
13
+ * @param {string} message Error message.
14
+ * @param {IBaseErrorOptions} options Error options.
15
+ */
16
+ constructor(message, options) {
17
+ super(message);
18
+ this.name = this.constructor.name;
19
+ this.CAUSE = options.cause;
20
+ this.CODE = options.code;
21
+ this.CONTEXT = options.context;
22
+ this.SOURCE = options.source;
23
+ if (typeof Error.captureStackTrace === "function") {
24
+ Error.captureStackTrace(this, this.constructor);
25
+ }
26
+ }
27
+ }
28
+
29
+ exports.BaseError = BaseError;
30
+ //# sourceMappingURL=error.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.class.js","sources":["../../../../../../src/infrastructure/class/base/error.class.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA;;AAEG;AACG,MAAO,SAAU,SAAQ,KAAK,CAAA;AACnB,IAAA,KAAK;AAEL,IAAA,IAAI;AAEJ,IAAA,OAAO;AAEP,IAAA,MAAM;AAEtB;;;;AAIG;IACH,WAAY,CAAA,OAAe,EAAE,OAA0B,EAAA;QACtD,KAAK,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AAE5B,QAAA,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE;YAClD,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;;;AAGjD;;;;"}
@@ -0,0 +1,38 @@
1
+ import type { IFactory } from '../../../src/domain/interface/factory.interface';
2
+ import type { IRegistry } from '../../../src/domain/interface/registry.interface';
3
+ import type { IBaseFactoryOptions } from '../../../src/infrastructure/interface/base/index';
4
+ /**
5
+ * Generic factory implementation that creates items by name using a registry as data source.
6
+ * @template T The type of items created by the factory.
7
+ */
8
+ export declare class BaseFactory<T> implements IFactory<T> {
9
+ private readonly CACHE;
10
+ private readonly LOGGER;
11
+ private readonly REGISTRY;
12
+ private readonly TRANSFORMER?;
13
+ /**
14
+ * Creates a new factory instance.
15
+ * @param {IBaseFactoryOptions<T>} options Factory creation options including registry, optional transformer, and logger.
16
+ */
17
+ constructor(options: IBaseFactoryOptions<T>);
18
+ /**
19
+ * Clear the factory's item cache.
20
+ * This should be called when the registry changes to ensure the factory
21
+ * doesn't return stale items.
22
+ * @param {string} [name] Optional name of the item to clear from cache. If not provided, all items are cleared.
23
+ */
24
+ clearCache(name?: string): void;
25
+ /**
26
+ * Create an item by name.
27
+ * @param {string} name The name of the item to create.
28
+ * @returns {T} The created item.
29
+ * @throws RegistryItemNotFoundError if no item with the given name exists in the registry.
30
+ */
31
+ create(name: string): T;
32
+ /**
33
+ * Get the registry associated with this factory.
34
+ * @returns {IRegistry<T>} The registry instance.
35
+ */
36
+ getRegistry(): IRegistry<T>;
37
+ }
38
+ //# sourceMappingURL=factory.class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.class.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/class/base/factory.class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAM1E;;;GAGG;AACH,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IAEvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAqB;IAElD;;;OAGG;gBACS,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAO3C;;;;;OAKG;IACI,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAUtC;;;;;OAKG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC;IAgC9B;;;OAGG;IACI,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC;CAGlC"}
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ var consoleLogger_service = require('../../service/console-logger.service.js');
4
+ var error_class = require('./error.class.js');
5
+
6
+ /**
7
+ * Generic factory implementation that creates items by name using a registry as data source.
8
+ * @template T The type of items created by the factory.
9
+ */
10
+ class BaseFactory {
11
+ CACHE;
12
+ LOGGER;
13
+ REGISTRY;
14
+ TRANSFORMER;
15
+ /**
16
+ * Creates a new factory instance.
17
+ * @param {IBaseFactoryOptions<T>} options Factory creation options including registry, optional transformer, and logger.
18
+ */
19
+ constructor(options) {
20
+ this.REGISTRY = options.registry;
21
+ this.TRANSFORMER = options.transformer;
22
+ this.LOGGER = options.logger ?? new consoleLogger_service.ConsoleLoggerService();
23
+ this.CACHE = new Map();
24
+ }
25
+ /**
26
+ * Clear the factory's item cache.
27
+ * This should be called when the registry changes to ensure the factory
28
+ * doesn't return stale items.
29
+ * @param {string} [name] Optional name of the item to clear from cache. If not provided, all items are cleared.
30
+ */
31
+ clearCache(name) {
32
+ if (name) {
33
+ this.CACHE.delete(name);
34
+ this.LOGGER.debug(`Cache cleared for item: ${name}`, { source: "Factory" });
35
+ }
36
+ else {
37
+ this.CACHE.clear();
38
+ this.LOGGER.debug("Factory cache cleared", { source: "Factory" });
39
+ }
40
+ }
41
+ /**
42
+ * Create an item by name.
43
+ * @param {string} name The name of the item to create.
44
+ * @returns {T} The created item.
45
+ * @throws RegistryItemNotFoundError if no item with the given name exists in the registry.
46
+ */
47
+ create(name) {
48
+ this.LOGGER.debug(`Creating item: ${name}`, { source: "Factory" });
49
+ const cachedItem = this.CACHE.get(name);
50
+ if (cachedItem) {
51
+ this.LOGGER.debug(`Retrieved item from cache: ${name}`, { source: "Factory" });
52
+ // eslint-disable-next-line @elsikora/node/no-unsupported-features/node-builtins
53
+ return structuredClone(cachedItem);
54
+ }
55
+ const template = this.REGISTRY.get(name);
56
+ if (!template) {
57
+ throw new error_class.BaseError("Template not found", {
58
+ code: "TEMPLATE_NOT_FOUND",
59
+ source: "Factory",
60
+ });
61
+ }
62
+ // eslint-disable-next-line @elsikora/node/no-unsupported-features/node-builtins
63
+ const result = this.TRANSFORMER ? this.TRANSFORMER(template) : structuredClone(template);
64
+ this.CACHE.set(name, result);
65
+ this.LOGGER.debug(`Created item: ${name}`, { source: "Factory" });
66
+ // eslint-disable-next-line @elsikora/node/no-unsupported-features/node-builtins
67
+ return structuredClone(result);
68
+ }
69
+ /**
70
+ * Get the registry associated with this factory.
71
+ * @returns {IRegistry<T>} The registry instance.
72
+ */
73
+ getRegistry() {
74
+ return this.REGISTRY;
75
+ }
76
+ }
77
+
78
+ exports.BaseFactory = BaseFactory;
79
+ //# sourceMappingURL=factory.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.class.js","sources":["../../../../../../src/infrastructure/class/base/factory.class.ts"],"sourcesContent":[null],"names":["ConsoleLoggerService","BaseError"],"mappings":";;;;;AASA;;;AAGG;MACU,WAAW,CAAA;AACN,IAAA,KAAK;AAEL,IAAA,MAAM;AAEN,IAAA,QAAQ;AAER,IAAA,WAAW;AAE5B;;;AAGG;AACH,IAAA,WAAA,CAAY,OAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAIA,0CAAoB,EAAE;AAC1D,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAa;;AAGlC;;;;;AAKG;AACI,IAAA,UAAU,CAAC,IAAa,EAAA;QAC9B,IAAI,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA2B,wBAAA,EAAA,IAAI,CAAE,CAAA,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;aACrE;AACN,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;;AAInE;;;;;AAKG;AACI,IAAA,MAAM,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAkB,eAAA,EAAA,IAAI,CAAE,CAAA,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAElE,MAAM,UAAU,GAAkB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAEtD,IAAI,UAAU,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA8B,2BAAA,EAAA,IAAI,CAAE,CAAA,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;AAG9E,YAAA,OAAO,eAAe,CAAI,UAAU,CAAC;;QAGtC,MAAM,QAAQ,GAAkB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAEvD,IAAI,CAAC,QAAQ,EAAE;AACd,YAAA,MAAM,IAAIC,qBAAS,CAAC,oBAAoB,EAAE;AACzC,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,MAAM,EAAE,SAAS;AACjB,aAAA,CAAC;;;QAIH,MAAM,MAAM,GAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAI,QAAQ,CAAC;QAE9F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAE5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAiB,cAAA,EAAA,IAAI,CAAE,CAAA,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;AAGjE,QAAA,OAAO,eAAe,CAAI,MAAM,CAAC;;AAGlC;;;AAGG;IACI,WAAW,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ;;AAErB;;;;"}
@@ -0,0 +1,5 @@
1
+ export { BaseContainer } from "./container.class";
2
+ export { BaseError } from "./error.class";
3
+ export { BaseFactory } from "./factory.class";
4
+ export { BaseRegistry } from "./registry.class";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/class/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}