@adaas/a-concept 0.0.64 → 0.1.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 (416) hide show
  1. package/dist/index.d.ts +24 -32
  2. package/dist/index.js +35 -52
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/constants/env.constants.d.ts +15 -8
  5. package/dist/src/constants/env.constants.js +17 -10
  6. package/dist/src/constants/env.constants.js.map +1 -1
  7. package/dist/src/global/A-Abstraction/A-Abstraction-Extend.decorator.d.ts +23 -0
  8. package/dist/src/global/A-Abstraction/A-Abstraction-Extend.decorator.js +69 -0
  9. package/dist/src/global/A-Abstraction/A-Abstraction-Extend.decorator.js.map +1 -0
  10. package/dist/src/global/A-Abstraction/A-Abstraction.class.d.ts +47 -20
  11. package/dist/src/global/A-Abstraction/A-Abstraction.class.js +55 -48
  12. package/dist/src/global/A-Abstraction/A-Abstraction.class.js.map +1 -1
  13. package/dist/src/global/A-Abstraction/A-Abstraction.error.d.ts +7 -0
  14. package/dist/src/global/A-Abstraction/A-Abstraction.error.js +12 -0
  15. package/dist/src/global/A-Abstraction/A-Abstraction.error.js.map +1 -0
  16. package/dist/src/global/A-Abstraction/A-Abstraction.types.d.ts +27 -12
  17. package/dist/src/global/A-Abstraction/A-Abstraction.types.js +0 -8
  18. package/dist/src/global/A-Abstraction/A-Abstraction.types.js.map +1 -1
  19. package/dist/src/global/A-Caller/A_Caller.class.d.ts +33 -0
  20. package/dist/src/global/A-Caller/A_Caller.class.js +44 -0
  21. package/dist/src/global/A-Caller/A_Caller.class.js.map +1 -0
  22. package/dist/src/global/A-Caller/A_Caller.error.d.ts +7 -0
  23. package/dist/src/global/A-Caller/A_Caller.error.js +12 -0
  24. package/dist/src/global/A-Caller/A_Caller.error.js.map +1 -0
  25. package/dist/src/global/A-Caller/A_Caller.types.d.ts +18 -0
  26. package/dist/src/{base/A-Errors/A-Errors.types.js → global/A-Caller/A_Caller.types.js} +1 -1
  27. package/dist/src/global/A-Caller/A_Caller.types.js.map +1 -0
  28. package/dist/src/global/A-Component/A-Component.class.d.ts +20 -3
  29. package/dist/src/global/A-Component/A-Component.class.js +35 -19
  30. package/dist/src/global/A-Component/A-Component.class.js.map +1 -1
  31. package/dist/src/global/A-Component/A-Component.constants.d.ts +6 -0
  32. package/dist/src/global/A-Component/A-Component.constants.js +11 -0
  33. package/dist/src/global/A-Component/A-Component.constants.js.map +1 -0
  34. package/dist/src/global/A-Component/A-Component.meta.d.ts +4 -4
  35. package/dist/src/global/A-Component/A-Component.meta.js +6 -8
  36. package/dist/src/global/A-Component/A-Component.meta.js.map +1 -1
  37. package/dist/src/global/A-Component/A-Component.types.d.ts +40 -22
  38. package/dist/src/global/A-Component/A-Component.types.js +1 -8
  39. package/dist/src/global/A-Component/A-Component.types.js.map +1 -1
  40. package/dist/src/global/A-Concept/A-Concept.class.d.ts +153 -0
  41. package/dist/src/global/A-Concept/A-Concept.class.js +260 -0
  42. package/dist/src/global/A-Concept/A-Concept.class.js.map +1 -0
  43. package/dist/src/global/A-Concept/A-Concept.constants.d.ts +33 -0
  44. package/dist/src/global/A-Concept/A-Concept.constants.js +39 -0
  45. package/dist/src/global/A-Concept/A-Concept.constants.js.map +1 -0
  46. package/dist/src/global/A-Concept/{A_Concept.meta.js → A-Concept.meta.js} +1 -2
  47. package/dist/src/global/A-Concept/A-Concept.meta.js.map +1 -0
  48. package/dist/src/global/A-Concept/A-Concept.types.d.ts +83 -0
  49. package/dist/src/global/{A-Channel/A-Channel.types.js → A-Concept/A-Concept.types.js} +1 -1
  50. package/dist/src/global/A-Concept/A-Concept.types.js.map +1 -0
  51. package/dist/src/global/A-Container/A-Container.class.d.ts +31 -35
  52. package/dist/src/global/A-Container/A-Container.class.js +34 -55
  53. package/dist/src/global/A-Container/A-Container.class.js.map +1 -1
  54. package/dist/src/global/A-Container/A-Container.constants.d.ts +5 -0
  55. package/dist/src/global/A-Container/A-Container.constants.js +10 -0
  56. package/dist/src/global/A-Container/A-Container.constants.js.map +1 -0
  57. package/dist/src/global/A-Container/A-Container.meta.d.ts +6 -6
  58. package/dist/src/global/A-Container/A-Container.meta.js +5 -6
  59. package/dist/src/global/A-Container/A-Container.meta.js.map +1 -1
  60. package/dist/src/global/A-Container/A-Container.types.d.ts +31 -25
  61. package/dist/src/global/A-Container/A-Container.types.js +1 -7
  62. package/dist/src/global/A-Container/A-Container.types.js.map +1 -1
  63. package/dist/src/global/A-Context/A-Context.class.d.ts +302 -76
  64. package/dist/src/global/A-Context/A-Context.class.js +436 -244
  65. package/dist/src/global/A-Context/A-Context.class.js.map +1 -1
  66. package/dist/src/global/A-Context/A-Context.error.d.ts +20 -0
  67. package/dist/src/global/A-Context/A-Context.error.js +25 -0
  68. package/dist/src/global/A-Context/A-Context.error.js.map +1 -0
  69. package/dist/src/global/A-Context/A-Context.types.d.ts +5 -0
  70. package/dist/src/global/A-Context/A-Context.types.js +1 -0
  71. package/dist/src/global/A-Entity/A-Entity.class.d.ts +18 -18
  72. package/dist/src/global/A-Entity/A-Entity.class.js +36 -43
  73. package/dist/src/global/A-Entity/A-Entity.class.js.map +1 -1
  74. package/dist/src/global/A-Entity/A-Entity.constants.d.ts +11 -0
  75. package/dist/src/global/A-Entity/A-Entity.constants.js +17 -0
  76. package/dist/src/global/A-Entity/A-Entity.constants.js.map +1 -0
  77. package/dist/src/global/A-Entity/A-Entity.error.d.ts +7 -0
  78. package/dist/src/global/A-Entity/A-Entity.error.js +12 -0
  79. package/dist/src/global/A-Entity/A-Entity.error.js.map +1 -0
  80. package/dist/src/global/A-Entity/A-Entity.meta.d.ts +2 -2
  81. package/dist/src/global/A-Entity/A-Entity.meta.js +2 -2
  82. package/dist/src/global/A-Entity/A-Entity.meta.js.map +1 -1
  83. package/dist/src/global/A-Entity/A-Entity.types.d.ts +24 -29
  84. package/dist/src/global/A-Entity/A-Entity.types.js +1 -13
  85. package/dist/src/global/A-Entity/A-Entity.types.js.map +1 -1
  86. package/dist/src/global/A-Error/A_Error.class.d.ts +219 -0
  87. package/dist/src/global/A-Error/A_Error.class.js +267 -0
  88. package/dist/src/global/A-Error/A_Error.class.js.map +1 -0
  89. package/dist/src/global/A-Error/A_Error.constants.d.ts +5 -0
  90. package/dist/src/global/A-Error/A_Error.constants.js +9 -0
  91. package/dist/src/global/A-Error/A_Error.constants.js.map +1 -0
  92. package/dist/src/global/A-Error/A_Error.types.d.ts +89 -0
  93. package/dist/src/{decorators/A-Inject/A-Inject.decorator.types.js → global/A-Error/A_Error.types.js} +1 -1
  94. package/dist/src/global/A-Error/A_Error.types.js.map +1 -0
  95. package/dist/src/global/A-Feature/A-Feature-Define.decorator.d.ts +15 -0
  96. package/dist/src/{decorators → global}/A-Feature/A-Feature-Define.decorator.js +21 -27
  97. package/dist/src/global/A-Feature/A-Feature-Define.decorator.js.map +1 -0
  98. package/dist/src/{decorators → global}/A-Feature/A-Feature-Extend.decorator.d.ts +26 -3
  99. package/dist/src/global/A-Feature/A-Feature-Extend.decorator.js +97 -0
  100. package/dist/src/global/A-Feature/A-Feature-Extend.decorator.js.map +1 -0
  101. package/dist/src/global/A-Feature/A-Feature.class.d.ts +120 -30
  102. package/dist/src/global/A-Feature/A-Feature.class.js +205 -73
  103. package/dist/src/global/A-Feature/A-Feature.class.js.map +1 -1
  104. package/dist/src/global/A-Feature/A-Feature.error.d.ts +25 -0
  105. package/dist/src/global/A-Feature/A-Feature.error.js +33 -0
  106. package/dist/src/global/A-Feature/A-Feature.error.js.map +1 -0
  107. package/dist/src/global/A-Feature/A-Feature.types.d.ts +241 -18
  108. package/dist/src/global/A-Feature/A-Feature.types.js +16 -22
  109. package/dist/src/global/A-Feature/A-Feature.types.js.map +1 -1
  110. package/dist/src/global/A-Fragment/A-Fragment.class.d.ts +19 -27
  111. package/dist/src/global/A-Fragment/A-Fragment.class.js +21 -91
  112. package/dist/src/global/A-Fragment/A-Fragment.class.js.map +1 -1
  113. package/dist/src/global/A-Fragment/A-Fragment.types.d.ts +19 -1
  114. package/dist/src/global/A-Fragment/A-Fragment.types.js +3 -0
  115. package/dist/src/global/A-Fragment/A-Fragment.types.js.map +1 -1
  116. package/dist/src/global/A-Inject/A-Inject.decorator.d.ts +80 -0
  117. package/dist/src/global/A-Inject/A-Inject.decorator.js +49 -0
  118. package/dist/src/global/A-Inject/A-Inject.decorator.js.map +1 -0
  119. package/dist/src/global/A-Inject/A-Inject.error.d.ts +5 -0
  120. package/dist/src/global/A-Inject/A-Inject.error.js +10 -0
  121. package/dist/src/global/A-Inject/A-Inject.error.js.map +1 -0
  122. package/dist/src/global/A-Inject/A-Inject.types.d.ts +42 -0
  123. package/dist/src/{decorators/A-Entity/A-Entity.decorator.types.js → global/A-Inject/A-Inject.types.js} +1 -1
  124. package/dist/src/global/A-Inject/A-Inject.types.js.map +1 -0
  125. package/dist/src/global/A-Meta/A-Meta.class.d.ts +1 -1
  126. package/dist/src/global/A-Meta/A-Meta.types.d.ts +14 -0
  127. package/dist/src/global/A-Meta/A-Meta.types.js +1 -0
  128. package/dist/src/global/A-Scope/A-Scope.class.d.ts +124 -142
  129. package/dist/src/global/A-Scope/A-Scope.class.js +163 -209
  130. package/dist/src/global/A-Scope/A-Scope.class.js.map +1 -1
  131. package/dist/src/global/A-Scope/A-Scope.error.d.ts +6 -0
  132. package/dist/src/global/A-Scope/A-Scope.error.js +11 -0
  133. package/dist/src/global/A-Scope/A-Scope.error.js.map +1 -0
  134. package/dist/src/global/A-Scope/A-Scope.types.d.ts +48 -13
  135. package/dist/src/global/A-Stage/A-Stage.class.d.ts +31 -23
  136. package/dist/src/global/A-Stage/A-Stage.class.js +100 -68
  137. package/dist/src/global/A-Stage/A-Stage.class.js.map +1 -1
  138. package/dist/src/global/A-Stage/A-Stage.error.d.ts +2 -1
  139. package/dist/src/global/A-Stage/A-Stage.error.js +5 -2
  140. package/dist/src/global/A-Stage/A-Stage.error.js.map +1 -1
  141. package/dist/src/global/A-Stage/A-Stage.types.d.ts +4 -16
  142. package/dist/src/global/A-Stage/A-Stage.types.js +0 -16
  143. package/dist/src/global/A-Stage/A-Stage.types.js.map +1 -1
  144. package/dist/src/global/ASEID/ASEID.class.d.ts +130 -0
  145. package/dist/src/global/ASEID/ASEID.class.js +167 -0
  146. package/dist/src/global/ASEID/ASEID.class.js.map +1 -0
  147. package/dist/src/global/ASEID/ASEID.constants.js +2 -0
  148. package/dist/src/global/ASEID/ASEID.constants.js.map +1 -0
  149. package/dist/src/global/ASEID/ASEID.error.d.ts +5 -0
  150. package/dist/src/global/ASEID/ASEID.error.js +10 -0
  151. package/dist/src/global/ASEID/ASEID.error.js.map +1 -0
  152. package/dist/src/global/ASEID/ASEID.types.d.ts +65 -0
  153. package/dist/src/global/ASEID/ASEID.types.js +5 -0
  154. package/dist/src/global/ASEID/ASEID.types.js.map +1 -0
  155. package/dist/src/helpers/A_Common.helper.d.ts +28 -0
  156. package/dist/src/helpers/A_Common.helper.js +170 -0
  157. package/dist/src/helpers/A_Common.helper.js.map +1 -0
  158. package/dist/src/helpers/A_Formatter.helper.d.ts +35 -0
  159. package/dist/src/helpers/A_Formatter.helper.js +62 -0
  160. package/dist/src/helpers/A_Formatter.helper.js.map +1 -0
  161. package/dist/src/helpers/A_Identity.helper.d.ts +29 -0
  162. package/dist/src/helpers/A_Identity.helper.js +43 -0
  163. package/dist/src/helpers/A_Identity.helper.js.map +1 -0
  164. package/dist/src/helpers/{StepsManager.class.d.ts → A_StepsManager.class.d.ts} +4 -2
  165. package/dist/src/helpers/{StepsManager.class.js → A_StepsManager.class.js} +10 -5
  166. package/dist/src/helpers/A_StepsManager.class.js.map +1 -0
  167. package/dist/src/helpers/A_TypeGuards.helper.d.ts +205 -0
  168. package/dist/src/helpers/A_TypeGuards.helper.js +288 -0
  169. package/dist/src/helpers/A_TypeGuards.helper.js.map +1 -0
  170. package/dist/src/types/A_Common.types.d.ts +36 -0
  171. package/dist/src/types/A_Common.types.js +3 -0
  172. package/dist/src/types/A_Common.types.js.map +1 -0
  173. package/index.ts +27 -51
  174. package/jest.config.ts +1 -0
  175. package/package.json +1 -2
  176. package/src/constants/env.constants.ts +18 -11
  177. package/src/global/A-Abstraction/A-Abstraction-Extend.decorator.ts +103 -0
  178. package/src/global/A-Abstraction/A-Abstraction.class.ts +71 -65
  179. package/src/global/A-Abstraction/A-Abstraction.error.ts +9 -0
  180. package/src/global/A-Abstraction/A-Abstraction.types.ts +52 -13
  181. package/src/global/A-Caller/A_Caller.class.ts +61 -0
  182. package/src/global/A-Caller/A_Caller.error.ts +10 -0
  183. package/src/global/A-Caller/A_Caller.types.ts +25 -0
  184. package/src/global/A-Component/A-Component.class.ts +26 -15
  185. package/src/global/A-Component/A-Component.constants.ts +9 -0
  186. package/src/global/A-Component/A-Component.meta.ts +6 -16
  187. package/src/global/A-Component/A-Component.types.ts +53 -28
  188. package/src/global/A-Concept/A-Concept.class.ts +316 -0
  189. package/src/global/A-Concept/A-Concept.constants.ts +36 -0
  190. package/src/global/A-Concept/A-Concept.meta.ts +17 -0
  191. package/src/global/A-Concept/A-Concept.types.ts +100 -0
  192. package/src/global/A-Container/A-Container.class.ts +42 -83
  193. package/src/global/A-Container/A-Container.constants.ts +5 -0
  194. package/src/global/A-Container/A-Container.meta.ts +7 -11
  195. package/src/global/A-Container/A-Container.types.ts +38 -34
  196. package/src/global/A-Context/A-Context.class.ts +648 -412
  197. package/src/global/A-Context/A-Context.error.ts +44 -0
  198. package/src/global/A-Context/A-Context.types.ts +14 -0
  199. package/src/global/A-Entity/A-Entity.class.ts +39 -52
  200. package/src/global/A-Entity/A-Entity.constants.ts +12 -0
  201. package/src/global/A-Entity/A-Entity.error.ts +12 -0
  202. package/src/global/A-Entity/A-Entity.meta.ts +4 -4
  203. package/src/global/A-Entity/A-Entity.types.ts +31 -36
  204. package/src/global/A-Error/A_Error.class.ts +408 -0
  205. package/src/global/A-Error/A_Error.constants.ts +11 -0
  206. package/src/global/A-Error/A_Error.types.ts +96 -0
  207. package/src/{decorators → global}/A-Feature/A-Feature-Define.decorator.ts +31 -37
  208. package/src/global/A-Feature/A-Feature-Extend.decorator.ts +187 -0
  209. package/src/global/A-Feature/A-Feature.class.ts +279 -122
  210. package/src/global/A-Feature/A-Feature.error.ts +33 -0
  211. package/src/global/A-Feature/A-Feature.types.ts +278 -40
  212. package/src/global/A-Fragment/A-Fragment.class.ts +29 -100
  213. package/src/global/A-Fragment/A-Fragment.types.ts +25 -3
  214. package/src/global/A-Inject/A-Inject.decorator.ts +167 -0
  215. package/src/global/A-Inject/A-Inject.error.ts +8 -0
  216. package/src/global/A-Inject/A-Inject.types.ts +75 -0
  217. package/src/global/A-Meta/A-Meta.class.ts +1 -1
  218. package/src/global/A-Meta/A-Meta.types.ts +21 -0
  219. package/src/global/A-Scope/A-Scope.class.ts +288 -299
  220. package/src/global/A-Scope/A-Scope.error.ts +13 -0
  221. package/src/global/A-Scope/A-Scope.types.ts +61 -27
  222. package/src/global/A-Stage/A-Stage.class.ts +142 -80
  223. package/src/global/A-Stage/A-Stage.error.ts +4 -2
  224. package/src/global/A-Stage/A-Stage.types.ts +4 -25
  225. package/src/global/ASEID/ASEID.class.ts +275 -0
  226. package/src/global/ASEID/ASEID.error.ts +12 -0
  227. package/src/global/ASEID/ASEID.types.ts +79 -0
  228. package/src/helpers/A_Common.helper.ts +204 -0
  229. package/src/helpers/A_Formatter.helper.ts +58 -0
  230. package/src/helpers/A_Identity.helper.ts +53 -0
  231. package/src/helpers/{StepsManager.class.ts → A_StepsManager.class.ts} +19 -3
  232. package/src/helpers/A_TypeGuards.helper.ts +318 -0
  233. package/src/types/A_Common.types.ts +79 -0
  234. package/tests/A-Common.test.ts +117 -0
  235. package/tests/A-Component.test.ts +11 -6
  236. package/tests/A-Concept.test.ts +19 -22
  237. package/tests/A-Entity.test.ts +24 -24
  238. package/tests/A-Error.test.ts +129 -0
  239. package/tests/A-Feature.test.ts +34 -25
  240. package/tests/A-Scope.test.ts +50 -22
  241. package/tests/ASEID.test.ts +74 -0
  242. package/tsconfig.build.json +2 -1
  243. package/tsconfig.json +3 -2
  244. package/dist/src/base/A-Config/A-Config.container.d.ts +0 -9
  245. package/dist/src/base/A-Config/A-Config.container.js +0 -69
  246. package/dist/src/base/A-Config/A-Config.container.js.map +0 -1
  247. package/dist/src/base/A-Config/A-Config.context.d.ts +0 -30
  248. package/dist/src/base/A-Config/A-Config.context.js +0 -60
  249. package/dist/src/base/A-Config/A-Config.context.js.map +0 -1
  250. package/dist/src/base/A-Config/A-Config.types.d.ts +0 -20
  251. package/dist/src/base/A-Config/A-Config.types.js +0 -7
  252. package/dist/src/base/A-Config/A-Config.types.js.map +0 -1
  253. package/dist/src/base/A-Config/components/ConfigReader.component.d.ts +0 -29
  254. package/dist/src/base/A-Config/components/ConfigReader.component.js +0 -84
  255. package/dist/src/base/A-Config/components/ConfigReader.component.js.map +0 -1
  256. package/dist/src/base/A-Config/components/ENVConfigReader.component.d.ts +0 -10
  257. package/dist/src/base/A-Config/components/ENVConfigReader.component.js +0 -37
  258. package/dist/src/base/A-Config/components/ENVConfigReader.component.js.map +0 -1
  259. package/dist/src/base/A-Config/components/FileConfigReader.component.d.ts +0 -11
  260. package/dist/src/base/A-Config/components/FileConfigReader.component.js +0 -48
  261. package/dist/src/base/A-Config/components/FileConfigReader.component.js.map +0 -1
  262. package/dist/src/base/A-Errors/A-Error.entity.d.ts +0 -3
  263. package/dist/src/base/A-Errors/A-Error.entity.js +0 -8
  264. package/dist/src/base/A-Errors/A-Error.entity.js.map +0 -1
  265. package/dist/src/base/A-Errors/A-Errors.component.d.ts +0 -19
  266. package/dist/src/base/A-Errors/A-Errors.component.js +0 -87
  267. package/dist/src/base/A-Errors/A-Errors.component.js.map +0 -1
  268. package/dist/src/base/A-Errors/A-Errors.context.d.ts +0 -27
  269. package/dist/src/base/A-Errors/A-Errors.context.js +0 -50
  270. package/dist/src/base/A-Errors/A-Errors.context.js.map +0 -1
  271. package/dist/src/base/A-Errors/A-Errors.types.d.ts +0 -5
  272. package/dist/src/base/A-Errors/A-Errors.types.js.map +0 -1
  273. package/dist/src/base/A-Logger/A-Logger.component.d.ts +0 -31
  274. package/dist/src/base/A-Logger/A-Logger.component.js +0 -155
  275. package/dist/src/base/A-Logger/A-Logger.component.js.map +0 -1
  276. package/dist/src/base/A-Logger/A-Logger.types.js +0 -2
  277. package/dist/src/base/A-Logger/A-Logger.types.js.map +0 -1
  278. package/dist/src/base/A-Polyfill/A-Polyfill.component.d.ts +0 -5
  279. package/dist/src/base/A-Polyfill/A-Polyfill.component.js +0 -34
  280. package/dist/src/base/A-Polyfill/A-Polyfill.component.js.map +0 -1
  281. package/dist/src/decorators/A-Abstraction/A-Abstraction-Extend.decorator.d.ts +0 -14
  282. package/dist/src/decorators/A-Abstraction/A-Abstraction-Extend.decorator.js +0 -53
  283. package/dist/src/decorators/A-Abstraction/A-Abstraction-Extend.decorator.js.map +0 -1
  284. package/dist/src/decorators/A-Abstraction/A-Abstraction.decorator.types.d.ts +0 -2
  285. package/dist/src/decorators/A-Abstraction/A-Abstraction.decorator.types.js +0 -3
  286. package/dist/src/decorators/A-Abstraction/A-Abstraction.decorator.types.js.map +0 -1
  287. package/dist/src/decorators/A-Connect/A-Connect.decorator.d.ts +0 -19
  288. package/dist/src/decorators/A-Connect/A-Connect.decorator.js +0 -31
  289. package/dist/src/decorators/A-Connect/A-Connect.decorator.js.map +0 -1
  290. package/dist/src/decorators/A-Connect/A-Connect.decorator.types.d.ts +0 -1
  291. package/dist/src/decorators/A-Connect/A-Connect.decorator.types.js +0 -3
  292. package/dist/src/decorators/A-Connect/A-Connect.decorator.types.js.map +0 -1
  293. package/dist/src/decorators/A-Entity/A-Entity-List.decorator.d.ts +0 -1
  294. package/dist/src/decorators/A-Entity/A-Entity-List.decorator.js +0 -8
  295. package/dist/src/decorators/A-Entity/A-Entity-List.decorator.js.map +0 -1
  296. package/dist/src/decorators/A-Entity/A-Entity.decorator.types.d.ts +0 -14
  297. package/dist/src/decorators/A-Entity/A-Entity.decorator.types.js.map +0 -1
  298. package/dist/src/decorators/A-Feature/A-Feature-Define.decorator.d.ts +0 -19
  299. package/dist/src/decorators/A-Feature/A-Feature-Define.decorator.js.map +0 -1
  300. package/dist/src/decorators/A-Feature/A-Feature-Extend.decorator.js +0 -81
  301. package/dist/src/decorators/A-Feature/A-Feature-Extend.decorator.js.map +0 -1
  302. package/dist/src/decorators/A-Feature/A-Feature.decorator.types.d.ts +0 -96
  303. package/dist/src/decorators/A-Feature/A-Feature.decorator.types.js +0 -3
  304. package/dist/src/decorators/A-Feature/A-Feature.decorator.types.js.map +0 -1
  305. package/dist/src/decorators/A-Inject/A-Inject.decorator.d.ts +0 -30
  306. package/dist/src/decorators/A-Inject/A-Inject.decorator.js +0 -47
  307. package/dist/src/decorators/A-Inject/A-Inject.decorator.js.map +0 -1
  308. package/dist/src/decorators/A-Inject/A-Inject.decorator.types.d.ts +0 -48
  309. package/dist/src/decorators/A-Inject/A-Inject.decorator.types.js.map +0 -1
  310. package/dist/src/global/A-Channel/A-Channel.class.d.ts +0 -16
  311. package/dist/src/global/A-Channel/A-Channel.class.js +0 -59
  312. package/dist/src/global/A-Channel/A-Channel.class.js.map +0 -1
  313. package/dist/src/global/A-Channel/A-Channel.types.d.ts +0 -68
  314. package/dist/src/global/A-Channel/A-Channel.types.js.map +0 -1
  315. package/dist/src/global/A-Command/A-Command.class.d.ts +0 -187
  316. package/dist/src/global/A-Command/A-Command.class.js +0 -349
  317. package/dist/src/global/A-Command/A-Command.class.js.map +0 -1
  318. package/dist/src/global/A-Command/A-Command.constants.d.ts +0 -17
  319. package/dist/src/global/A-Command/A-Command.constants.js +0 -22
  320. package/dist/src/global/A-Command/A-Command.constants.js.map +0 -1
  321. package/dist/src/global/A-Command/A-Command.meta.d.ts +0 -11
  322. package/dist/src/global/A-Command/A-Command.meta.js +0 -18
  323. package/dist/src/global/A-Command/A-Command.meta.js.map +0 -1
  324. package/dist/src/global/A-Command/A-Command.types.d.ts +0 -43
  325. package/dist/src/global/A-Command/A-Command.types.js +0 -10
  326. package/dist/src/global/A-Command/A-Command.types.js.map +0 -1
  327. package/dist/src/global/A-Command/context/A_Command.context.d.ts +0 -64
  328. package/dist/src/global/A-Command/context/A_Command.context.js +0 -85
  329. package/dist/src/global/A-Command/context/A_Command.context.js.map +0 -1
  330. package/dist/src/global/A-Concept/A_Concept.class.d.ts +0 -104
  331. package/dist/src/global/A-Concept/A_Concept.class.js +0 -217
  332. package/dist/src/global/A-Concept/A_Concept.class.js.map +0 -1
  333. package/dist/src/global/A-Concept/A_Concept.meta.js.map +0 -1
  334. package/dist/src/global/A-Concept/A_Concept.types.d.ts +0 -103
  335. package/dist/src/global/A-Concept/A_Concept.types.js +0 -28
  336. package/dist/src/global/A-Concept/A_Concept.types.js.map +0 -1
  337. package/dist/src/global/A-Feature/A-FeatureCaller.class.d.ts +0 -22
  338. package/dist/src/global/A-Feature/A-FeatureCaller.class.js +0 -26
  339. package/dist/src/global/A-Feature/A-FeatureCaller.class.js.map +0 -1
  340. package/dist/src/global/A-Scope/A-Scope.constants.d.ts +0 -2
  341. package/dist/src/global/A-Scope/A-Scope.constants.js +0 -11
  342. package/dist/src/global/A-Scope/A-Scope.constants.js.map +0 -1
  343. package/dist/src/helpers/StepsManager.class.js.map +0 -1
  344. package/dist/src/types/A_Module.types.d.ts +0 -17
  345. package/dist/src/types/A_Module.types.js +0 -22
  346. package/dist/src/types/A_Module.types.js.map +0 -1
  347. package/examples/entity/concept.ts +0 -68
  348. package/examples/entity/entities/Task.entity.ts +0 -110
  349. package/examples/entity/entities/User.entity.ts +0 -62
  350. package/examples/fe-be/channels/Test.channel.ts +0 -27
  351. package/examples/fe-be/components/BE-Controller.component.ts +0 -20
  352. package/examples/fe-be/components/FE.component.ts +0 -13
  353. package/examples/fe-be/containers/ServerApp.container.ts +0 -8
  354. package/examples/fe-be/containers/WebApp.container.ts +0 -13
  355. package/examples/multi-container/channels/Direct.channel.ts +0 -39
  356. package/examples/multi-container/concept.ts +0 -0
  357. package/examples/multi-container/containers/Command.container.ts +0 -41
  358. package/examples/multi-container/containers/Schedule.container.ts +0 -52
  359. package/examples/simple/components/A.component.ts +0 -71
  360. package/examples/simple/components/B.component.ts +0 -68
  361. package/examples/simple/concept.ts +0 -87
  362. package/examples/simple/containers/Main.container.ts +0 -88
  363. package/examples/simple/containers/Secondary.container.ts +0 -26
  364. package/examples/simple/context/Fragment_A.context.ts +0 -25
  365. package/examples/simple/context/Fragment_B.context.ts +0 -19
  366. package/examples/simple/entities/EntityA.entity.ts +0 -32
  367. package/examples/simple-http-server/components/http-error-handler.component.ts +0 -47
  368. package/examples/simple-http-server/components/http-request-handler.component.ts +0 -13
  369. package/examples/simple-http-server/concept.ts +0 -35
  370. package/examples/simple-http-server/containers/http-server.container.ts +0 -57
  371. package/examples/simple-http-server/contexts/http-request.context.ts +0 -59
  372. package/examples/simple-http-server/contexts/http-server.context.types.ts +0 -0
  373. package/examples/simple-http-server/controllers/orders.controller.ts +0 -20
  374. package/examples/simple-http-server/controllers/users.controller.ts +0 -104
  375. package/examples/simple-http-server/test.ts +0 -290
  376. package/src/base/A-Config/A-Config.container.ts +0 -68
  377. package/src/base/A-Config/A-Config.context.ts +0 -114
  378. package/src/base/A-Config/A-Config.types.ts +0 -28
  379. package/src/base/A-Config/components/ConfigReader.component.ts +0 -68
  380. package/src/base/A-Config/components/ENVConfigReader.component.ts +0 -31
  381. package/src/base/A-Config/components/FileConfigReader.component.ts +0 -41
  382. package/src/base/A-Errors/A-Error.entity.ts +0 -10
  383. package/src/base/A-Errors/A-Errors.component.ts +0 -103
  384. package/src/base/A-Errors/A-Errors.context.ts +0 -90
  385. package/src/base/A-Errors/A-Errors.types.ts +0 -6
  386. package/src/base/A-Logger/A-Logger.component.ts +0 -192
  387. package/src/base/A-Logger/A-Logger.types.ts +0 -0
  388. package/src/base/A-Polyfill/A-Polyfill.component.ts +0 -18
  389. package/src/decorators/A-Abstraction/A-Abstraction-Extend.decorator.ts +0 -81
  390. package/src/decorators/A-Abstraction/A-Abstraction.decorator.types.ts +0 -21
  391. package/src/decorators/A-Connect/A-Connect.decorator.ts +0 -71
  392. package/src/decorators/A-Connect/A-Connect.decorator.types.ts +0 -6
  393. package/src/decorators/A-Entity/A-Entity-List.decorator.ts +0 -12
  394. package/src/decorators/A-Entity/A-Entity.decorator.types.ts +0 -18
  395. package/src/decorators/A-Feature/A-Feature-Extend.decorator.ts +0 -151
  396. package/src/decorators/A-Feature/A-Feature.decorator.types.ts +0 -142
  397. package/src/decorators/A-Inject/A-Inject.decorator.ts +0 -119
  398. package/src/decorators/A-Inject/A-Inject.decorator.types.ts +0 -85
  399. package/src/global/A-Channel/A-Channel.class.ts +0 -111
  400. package/src/global/A-Channel/A-Channel.types.ts +0 -114
  401. package/src/global/A-Command/A-Command.class.ts +0 -419
  402. package/src/global/A-Command/A-Command.constants.ts +0 -27
  403. package/src/global/A-Command/A-Command.meta.ts +0 -22
  404. package/src/global/A-Command/A-Command.types.ts +0 -73
  405. package/src/global/A-Command/context/A_Command.context.ts +0 -114
  406. package/src/global/A-Concept/A_Concept.class.ts +0 -298
  407. package/src/global/A-Concept/A_Concept.meta.ts +0 -32
  408. package/src/global/A-Concept/A_Concept.types.ts +0 -143
  409. package/src/global/A-Feature/A-FeatureCaller.class.ts +0 -38
  410. package/src/global/A-Scope/A-Scope.constants.ts +0 -9
  411. package/src/types/A_Module.types.ts +0 -23
  412. package/tests/A-Command.test.ts +0 -133
  413. package/tests/A-Config.test.ts +0 -172
  414. /package/dist/src/global/A-Concept/{A_Concept.meta.d.ts → A-Concept.meta.d.ts} +0 -0
  415. /package/dist/src/{base/A-Logger/A-Logger.types.d.ts → global/ASEID/ASEID.constants.d.ts} +0 -0
  416. /package/{examples/fe-be/concept.ts → src/global/ASEID/ASEID.constants.ts} +0 -0
@@ -0,0 +1,316 @@
1
+ import { A_Container } from "../A-Container/A-Container.class";
2
+ import { A_Abstraction } from "../A-Abstraction/A-Abstraction.class";
3
+ import { A_Abstraction_Extend } from "@adaas/a-concept/global/A-Abstraction/A-Abstraction-Extend.decorator";
4
+ import { A_Scope } from "../A-Scope/A-Scope.class";
5
+ import { A_Context } from "../A-Context/A-Context.class";
6
+ import { A_TYPES__ConceptAbstractions } from "./A-Concept.constants";
7
+ import { A_TYPES__Concept_Init } from "./A-Concept.types";
8
+ import { A_TYPES__AbstractionDecoratorConfig } from "../A-Abstraction/A-Abstraction.types";
9
+ import { A_Feature } from "../A-Feature/A-Feature.class";
10
+
11
+
12
+
13
+ export class A_Concept<
14
+ _Imports extends A_Container[] = A_Container[]
15
+ > {
16
+
17
+ // ==============================================================================
18
+ // ==================== STATIC LIFECYCLE DECORATORS ===========================
19
+ // ==============================================================================
20
+ /**
21
+ * Load the concept. This step runs before any other steps to ensure that all components are loaded.
22
+ */
23
+ static Load(
24
+ /**
25
+ * provide additional configuration for the abstraction extension to make it dependent on other factors
26
+ */
27
+ config?: Partial<A_TYPES__AbstractionDecoratorConfig>
28
+ ): ReturnType<typeof A_Abstraction_Extend> {
29
+ return A_Abstraction.Extend(A_TYPES__ConceptAbstractions.Load, config);
30
+ }
31
+
32
+ /**
33
+ * Publish the concept to ADAAS platform. (Or any other place defined in the concept)
34
+ *
35
+ * [!] To extend the logic just create a custom containers and override the default behavior.
36
+ */
37
+ static Publish(
38
+ /**
39
+ * provide additional configuration for the abstraction extension to make it dependent on other factors
40
+ */
41
+ config?: Partial<A_TYPES__AbstractionDecoratorConfig>
42
+ ): ReturnType<typeof A_Abstraction_Extend> {
43
+ return A_Abstraction.Extend(A_TYPES__ConceptAbstractions.Publish);
44
+ }
45
+
46
+ /**
47
+ * Deploy the concept to the environment.
48
+ */
49
+ static Deploy(
50
+ /**
51
+ * provide additional configuration for the abstraction extension to make it dependent on other factors
52
+ */
53
+ config?: Partial<A_TYPES__AbstractionDecoratorConfig>
54
+ ) {
55
+ return A_Abstraction.Extend(A_TYPES__ConceptAbstractions.Deploy, config);
56
+ }
57
+
58
+ /**
59
+ * Compiles the Concept in case there are some containers that require that.
60
+ *
61
+ * Can be used for static websites or any other concept that requires a build step.
62
+ *
63
+ */
64
+ static Build(
65
+ /**
66
+ * provide additional configuration for the abstraction extension to make it dependent on other factors
67
+ */
68
+ config?: Partial<A_TYPES__AbstractionDecoratorConfig>
69
+ ) {
70
+ return A_Abstraction.Extend(A_TYPES__ConceptAbstractions.Build, config);
71
+ }
72
+
73
+ /**
74
+ * Main execution of the concept.
75
+ */
76
+ static Run(
77
+ /**
78
+ * provide additional configuration for the abstraction extension to make it dependent on other factors
79
+ */
80
+ config?: Partial<A_TYPES__AbstractionDecoratorConfig>
81
+ ) {
82
+ return A_Abstraction.Extend(A_TYPES__ConceptAbstractions.Run, config);
83
+ }
84
+
85
+ /**
86
+ * Start the concept. Uses for servers or any other background services.
87
+ */
88
+ static Start(
89
+ /**
90
+ * provide additional configuration for the abstraction extension to make it dependent on other factors
91
+ */
92
+ config?: Partial<A_TYPES__AbstractionDecoratorConfig>
93
+ ) {
94
+ return A_Abstraction.Extend(A_TYPES__ConceptAbstractions.Start, config);
95
+ }
96
+
97
+ /**
98
+ * Stop the concept. Uses for servers or any other background services.
99
+ */
100
+ static Stop(
101
+ /**
102
+ * provide additional configuration for the abstraction extension to make it dependent on other factors
103
+ */
104
+ config?: Partial<A_TYPES__AbstractionDecoratorConfig>
105
+ ) {
106
+ return A_Abstraction.Extend(A_TYPES__ConceptAbstractions.Stop, config);
107
+ }
108
+
109
+
110
+ /**
111
+ * Name of the concept
112
+ *
113
+ * By default, the name of the Concept is 'a-concept'
114
+ */
115
+ private _name!: string;
116
+ /**
117
+ * A list of internally defined containers that the concept uses.
118
+ */
119
+ protected _containers!: A_Container[];
120
+
121
+
122
+
123
+ // ==============================================================================
124
+ // ========================== MAIN Methods ======================================
125
+ // ==============================================================================
126
+
127
+
128
+ /**
129
+ * A-Concept is a placeholder for the concept of the any program.
130
+ *
131
+ * Concept - could be any Program regardless environment and it's goal.
132
+ * It could be mobile, web or simple html page.
133
+ * All depends on Containers and Components installed and provided in the Concept.
134
+ *
135
+ *
136
+ * [!] Concept operates ONLY with all Components and Containers provided to achieve the goal.
137
+ *
138
+ *
139
+ * @param props - Initialization properties for the Concept
140
+ */
141
+ constructor(
142
+ protected props: A_TYPES__Concept_Init<_Imports>
143
+ ) {
144
+ this._name = props.name || A_Context.root.name;
145
+
146
+ if (props.components && props.components.length)
147
+ props.components.forEach(component => this.scope.register(component))
148
+
149
+ if (props.fragments && props.fragments.length)
150
+ props.fragments.forEach(fragment => this.scope.register(fragment))
151
+
152
+ if (props.entities && props.entities.length)
153
+ props.entities.forEach(entity => this.scope.register(entity as any))
154
+
155
+
156
+ this._containers = props.containers || [];
157
+ }
158
+
159
+ /**
160
+ * Name of the concept
161
+ */
162
+ get name() {
163
+ return A_Context.root.name;
164
+ }
165
+ /**
166
+ * The primary Root scope of the concept.
167
+ */
168
+ get scope() {
169
+ return A_Context.root;
170
+ }
171
+
172
+ /**
173
+ * Register a class or value in the concept scope.
174
+ */
175
+ get register(): A_Scope['register'] {
176
+ return this.scope.register.bind(this.scope);
177
+ }
178
+
179
+ /**
180
+ * Resolve a class or value from the concept scope.
181
+ */
182
+ get resolve(): A_Scope['resolve'] {
183
+ return this.scope.resolve.bind(this.scope);
184
+ }
185
+
186
+
187
+ // =======================================================================
188
+ // ========================== LIFECYCLE ================================
189
+ // =======================================================================
190
+ /**
191
+ * Load the concept.
192
+ */
193
+ async load(
194
+ scope?: A_Scope,
195
+ ) {
196
+ const abstraction = new A_Abstraction({
197
+ name: A_TYPES__ConceptAbstractions.Load,
198
+ containers: this._containers,
199
+ });
200
+
201
+ await abstraction.process(scope);
202
+ }
203
+ /**
204
+ * Run the concept.
205
+ */
206
+ async run(
207
+ scope?: A_Scope,
208
+ ) {
209
+ const abstraction = new A_Abstraction({
210
+ name: A_TYPES__ConceptAbstractions.Run,
211
+ containers: this._containers,
212
+ });
213
+
214
+ await abstraction.process(scope);
215
+ }
216
+ /**
217
+ * Start the concept.
218
+ *
219
+ * @param params
220
+ */
221
+ async start(
222
+ scope?: A_Scope,
223
+ ) {
224
+ const abstraction = new A_Abstraction({
225
+ name: A_TYPES__ConceptAbstractions.Start,
226
+ containers: this._containers,
227
+ });
228
+
229
+ await abstraction.process(scope);
230
+ }
231
+ /**
232
+ * Stop the concept.
233
+ *
234
+ * @param params
235
+ */
236
+ async stop(
237
+ scope?: A_Scope,
238
+ ) {
239
+ const abstraction = new A_Abstraction({
240
+ name: A_TYPES__ConceptAbstractions.Stop,
241
+ containers: this._containers,
242
+ });
243
+
244
+ await abstraction.process(scope);
245
+ }
246
+ /**
247
+ * Build the concept.
248
+ */
249
+ async build(
250
+ scope?: A_Scope,
251
+ ) {
252
+ const abstraction = new A_Abstraction({
253
+ name: A_TYPES__ConceptAbstractions.Build,
254
+ containers: this._containers,
255
+ });
256
+
257
+ await abstraction.process(scope);
258
+ }
259
+ /**
260
+ * Deploy the concept.
261
+ */
262
+ async deploy(
263
+ scope?: A_Scope,
264
+ ) {
265
+ const abstraction = new A_Abstraction({
266
+ name: A_TYPES__ConceptAbstractions.Deploy,
267
+ containers: this._containers,
268
+ });
269
+
270
+ await abstraction.process(scope);
271
+
272
+ }
273
+ /**
274
+ * Publish the concept.
275
+ */
276
+ async publish(
277
+ scope?: A_Scope,
278
+ ) {
279
+ const abstraction = new A_Abstraction({
280
+ name: A_TYPES__ConceptAbstractions.Publish,
281
+ containers: this._containers,
282
+ });
283
+
284
+ await abstraction.process(scope);
285
+ }
286
+
287
+
288
+ // =======================================================================
289
+ // ========================== CALL =====================================
290
+ // =======================================================================
291
+
292
+
293
+ /**
294
+ * Call the specific method of the concept or included modules.
295
+ */
296
+ async call<
297
+ K extends Record<_Imports[number]['name'], string>
298
+ >(
299
+ /**
300
+ * Name of the method to call
301
+ */
302
+ method: K[keyof K],
303
+ /**
304
+ * Container in which the method is located
305
+ */
306
+ container: _Imports[number],
307
+ ) {
308
+ const feature = new A_Feature({ name: method, component: container });
309
+
310
+ return await feature.process();
311
+ }
312
+ }
313
+
314
+
315
+
316
+
@@ -0,0 +1,36 @@
1
+ export enum A_TYPES__ConceptAbstractions {
2
+ /**
3
+ * Run the concept.
4
+ */
5
+ Run = 'run',
6
+ /**
7
+ * Build the concept.
8
+ */
9
+ Build = 'build',
10
+ /**
11
+ * Publish the concept.
12
+ */
13
+ Publish = 'publish',
14
+ /**
15
+ * Deploy the concept.
16
+ */
17
+ Deploy = 'deploy',
18
+ /**
19
+ * Load the concept.
20
+ */
21
+ Load = 'load',
22
+ /**
23
+ * Start the concept.
24
+ */
25
+ Start = 'start',
26
+ /**
27
+ * Stop the concept.
28
+ */
29
+ Stop = 'stop',
30
+ }
31
+
32
+
33
+
34
+ export enum A_TYPES__ConceptMetaKey {
35
+ LIFECYCLE = 'a-component-extensions',
36
+ }
@@ -0,0 +1,17 @@
1
+
2
+ import { A_Container } from "@adaas/a-concept/global/A-Container/A-Container.class";
3
+ import { A_Meta } from "../A-Meta/A-Meta.class";
4
+
5
+
6
+
7
+ export class A_ConceptMeta extends A_Meta<any> {
8
+
9
+
10
+ constructor(
11
+ private containers: Array<A_Container>,
12
+ ) {
13
+ super();
14
+ }
15
+
16
+
17
+ }
@@ -0,0 +1,100 @@
1
+ import { A_TYPES__A_InjectDecorator_Meta } from "@adaas/a-concept/global/A-Inject/A-Inject.types";
2
+ import { A_Container } from "../A-Container/A-Container.class";
3
+ import { A_Concept } from "./A-Concept.class";
4
+ import { A_TYPES__FeatureExtendDecoratorBehaviorConfig } from "../A-Feature/A-Feature.types";
5
+ import { A_TYPES__Component_Constructor } from "../A-Component/A-Component.types";
6
+ import { A_TYPES__Fragment_Constructor } from "../A-Fragment/A-Fragment.types";
7
+ import { A_TYPES__Entity_Constructor } from "../A-Entity/A-Entity.types";
8
+
9
+
10
+ // ============================================================================
11
+ // --------------------------- Primary Types ----------------------------------
12
+ // ============================================================================
13
+ /**
14
+ * Concept constructor type
15
+ * Uses the generic type T to specify the type of the concept
16
+ */
17
+ export type A_TYPES__Concept_Constructor<T = A_Concept> = new (...args: any[]) => T;
18
+ /**
19
+ * Concept initialization type
20
+ * Uses the generic type T to specify the type of containers that the concept will use
21
+ */
22
+ export type A_TYPES__Concept_Init<
23
+ T extends Array<A_Container>
24
+ > = {
25
+ /**
26
+ * The name of the Concept
27
+ * If name is not provided, will be used from environment variable A_CONCEPT_NAME
28
+ *
29
+ * By default, the name of the Concept is 'a-concept'
30
+ *
31
+ */
32
+ name?: string,
33
+ /**
34
+ * A set of Context Fragments to register globally for the concept.
35
+ * These fragments will be available in the global context.
36
+ *
37
+ */
38
+ fragments?: Array<InstanceType<A_TYPES__Fragment_Constructor>>,
39
+ /**
40
+ * A set of Containers that the concept depends on.
41
+ * These containers will create a new Container for the concept.
42
+ */
43
+ containers?: T,
44
+ /**
45
+ * A set of Entities that the concept can use.
46
+ * These components will be used in the concept.
47
+ */
48
+ entities?: Array<InstanceType<A_TYPES__Entity_Constructor> | A_TYPES__Entity_Constructor>
49
+ /**
50
+ * A set of Components available for all containers and fragments in the concept.
51
+ * These components will be registered in the root scope of the concept.
52
+ *
53
+ * [!] Note that these components will be available in all containers and fragments in the concept.
54
+ */
55
+ components?: Array<A_TYPES__Component_Constructor>
56
+ }
57
+ /**
58
+ * Concept serialized type
59
+ */
60
+ export type A_TYPES__Concept_Serialized = {
61
+
62
+ };
63
+
64
+
65
+ // ============================================================================
66
+ // --------------------------- Meta Types -------------------------------------
67
+ // ============================================================================
68
+ /**
69
+ * Uses as a transfer object to pass configurations to Feature constructor
70
+ */
71
+ export type A_TYPES__ConceptAbstractionMeta = {
72
+ /**
73
+ * The name of original Extension Definition
74
+ */
75
+ name: string,
76
+ /**
77
+ * The name of the handler that will be used to apply the extension
78
+ */
79
+ handler: string,
80
+ /**
81
+ * The arguments that will be passed to the handler
82
+ */
83
+ args: A_TYPES__A_InjectDecorator_Meta
84
+ } & A_TYPES__FeatureExtendDecoratorBehaviorConfig
85
+
86
+
87
+
88
+ /**
89
+ * Uses to define the extension that will be applied to the Concept
90
+ */
91
+ export type A_TYPES__ConceptAbstraction = {
92
+ /**
93
+ * The name of original Extension Definition
94
+ */
95
+ name: string,
96
+ /**
97
+ * The name of the handler that will be used to apply the extension
98
+ */
99
+ handler: string,
100
+ } & A_TYPES__FeatureExtendDecoratorBehaviorConfig
@@ -1,120 +1,79 @@
1
- import { A_TYPES__ContainerConstructor } from "./A-Container.types";
2
- import { A_TYPES__Required } from "@adaas/a-utils";
3
1
  import { A_Context } from "../A-Context/A-Context.class";
2
+ import { A_Feature } from "../A-Feature/A-Feature.class";
4
3
  import { A_Scope } from "../A-Scope/A-Scope.class";
5
- import { A_TYPES__FeatureCallParams, A_TYPES__FeatureConstructor } from "../A-Feature/A-Feature.types";
4
+ import { A_TYPES__Container_Init } from "./A-Container.types";
6
5
 
7
6
 
8
7
 
9
- /**
10
- * This class should combine Components to achieve the goal withing Concept
11
- *
12
- * Container is a direct container that should be "run" to make Concept work.
13
- * So because of that Container can be:
14
- * - HTTP Server
15
- * - BASH Script
16
- * - Database Connection
17
- * - Microservice
18
- * - etc.
19
- */
20
8
  export class A_Container {
21
- protected readonly config!: Partial<A_TYPES__ContainerConstructor<any>>;
22
9
 
23
10
  /**
24
- * Promise that will be resolved when the container is ready to be used.
11
+ * Configuration of the container that will be used to run it.
12
+ */
13
+ protected readonly config!: Partial<A_TYPES__Container_Init>;
14
+ /**
15
+ * Name of the container
25
16
  */
26
- ready!: Promise<void>;
27
-
28
17
  get name() {
29
18
  return this.config.name || this.constructor.name;
30
19
  }
31
-
32
- get Scope(): A_Scope {
20
+ /**
21
+ * Returns the scope where the container is registered
22
+ */
23
+ get scope(): A_Scope {
33
24
  return A_Context.scope(this);
34
25
  }
35
26
 
36
27
 
37
28
  /**
38
- * Creates a new instance of A_Container
29
+ * This class should combine Components to achieve the goal withing Concept
39
30
  *
40
- * @param config
31
+ * Container is a direct container that should be "run" to make Concept work.
32
+ * So because of that Container can be:
33
+ * - HTTP Server
34
+ * - BASH Script
35
+ * - Database Connection
36
+ * - Microservice
37
+ * - etc.
38
+ *
39
+ * @param config - Configuration of the container that will be used to run it.
41
40
  */
42
41
  constructor(
43
42
  /**
44
43
  * Configuration of the container that will be used to run it.
45
44
  */
46
- config: Partial<A_TYPES__ContainerConstructor<any>>
45
+ config: Partial<A_TYPES__Container_Init>
47
46
  ) {
48
47
  this.config = config;
49
48
 
50
- A_Context.allocate(this, {
51
- name: this.name,
52
- ...config
53
- });
54
- }
55
-
56
-
57
- async call(
58
- feature: string,
59
- scope: A_Scope = this.Scope
60
- ) {
61
-
62
- if (scope && !scope.isInheritedFrom(this.Scope)) {
63
- scope = scope.inherit(this.Scope);
64
- }
65
-
66
-
67
- const newFeature = A_Context.feature(this, feature, scope);
68
-
69
- return await newFeature.process();
49
+ A_Context.allocate(this, this.config);
70
50
  }
71
51
 
72
52
 
73
53
  /**
74
- * This method allows to get a feature Definition for the future reuse with custom Feature classes
54
+ * Calls the feature with the given name in the given scope
55
+ *
56
+ * [!] Note: This method creates a new instance of the feature every time it is called
75
57
  *
76
- * @param feature
58
+ * @param feature - the name of the feature to call
59
+ * @param scope - the scope in which to call the feature
60
+ * @returns - void
77
61
  */
78
- feature(
62
+ async call(
63
+ /**
64
+ * Name of the feature to call
65
+ */
79
66
  feature: string,
80
- scope: A_Scope = this.Scope
67
+ /**
68
+ * scope in which the feature will be executed
69
+ */
70
+ scope?: A_Scope
81
71
  ) {
72
+ const newFeature = new A_Feature({
73
+ name: feature,
74
+ component: this
75
+ });
82
76
 
83
- if (scope && !scope.isInheritedFrom(this.Scope)) {
84
- scope = scope.inherit(this.Scope);
85
- }
86
-
87
- return A_Context.featureDefinition(this, feature, scope);
88
- }
89
-
90
-
91
- // ==============================================================
92
- // ======================= HOOKS ================================
93
- // ==============================================================
94
-
95
- /**
96
- * Before init hook to be used in inherited classes
97
- *
98
- * @returns
99
- */
100
- protected async onBeforeInit() {
101
- return;
102
- }
103
-
104
- /**
105
- * Main initialization method for the Container
106
- */
107
- protected async onInit() {
108
- return;
109
- }
110
-
111
- /**
112
- * After init hook to be used in inherited classes
113
- *
114
- * @returns
115
- */
116
- protected async onAfterInit() {
117
- return;
77
+ return await newFeature.process(scope);
118
78
  }
119
-
120
79
  }
@@ -0,0 +1,5 @@
1
+ export enum A_TYPES__ContainerMetaKey {
2
+ FEATURES = 'a-container-features',
3
+ INJECTIONS = 'a-container-injections',
4
+ ABSTRACTIONS = 'a-container-abstractions',
5
+ }
@@ -1,11 +1,9 @@
1
- import { A_TYPES__A_InjectDecorator_Meta } from "@adaas/a-concept/decorators/A-Inject/A-Inject.decorator.types";
2
- import { A_TYPES__ConceptAbstractionMeta, A_TYPES__ConceptStage } from "../A-Concept/A_Concept.types";
1
+ import { A_TYPES__ContainerMeta, } from "./A-Container.types";
2
+ import { A_TYPES__A_InjectDecorator_Meta } from "@adaas/a-concept/global/A-Inject/A-Inject.types";
3
+ import { A_TYPES__ConceptAbstraction, A_TYPES__ConceptAbstractionMeta } from "../A-Concept/A-Concept.types";
3
4
  import { A_Meta } from "../A-Meta/A-Meta.class";
4
- import {
5
- A_TYPES__ContainerMeta,
6
- A_TYPES__ContainerMetaKey
7
- } from "./A-Container.types";
8
- import { A_TYPES__A_DefineDecorator_Meta } from "@adaas/a-concept/decorators/A-Feature/A-Feature.decorator.types";
5
+ import { A_TYPES__ContainerMetaKey } from "./A-Container.constants";
6
+ import { A_TYPES__FeatureDefineDecoratorMeta } from "../A-Feature/A-Feature.types";
9
7
 
10
8
 
11
9
 
@@ -34,7 +32,7 @@ export class A_ContainerMeta extends A_Meta<A_TYPES__ContainerMeta> {
34
32
  *
35
33
  * @returns
36
34
  */
37
- features(): Array<A_TYPES__A_DefineDecorator_Meta> {
35
+ features(): Array<A_TYPES__FeatureDefineDecoratorMeta> {
38
36
 
39
37
  const features = this.get(A_TYPES__ContainerMetaKey.FEATURES);
40
38
 
@@ -50,15 +48,13 @@ export class A_ContainerMeta extends A_Meta<A_TYPES__ContainerMeta> {
50
48
  * @returns
51
49
  */
52
50
  abstractions(
53
- abstraction: A_TYPES__ConceptStage
51
+ abstraction: A_TYPES__ConceptAbstraction
54
52
  ): A_TYPES__ConceptAbstractionMeta[] {
55
53
  const steps: A_TYPES__ConceptAbstractionMeta[] = [];
56
54
 
57
55
  const abstractions = this.get(A_TYPES__ContainerMetaKey.ABSTRACTIONS);
58
56
  const injections = this.get(A_TYPES__ContainerMetaKey.INJECTIONS);
59
57
 
60
- // const constructor = A_Context.component(this);
61
-
62
58
 
63
59
  abstractions
64
60
  // returns all extensions that match the feature