@adaas/a-concept 0.0.64 → 0.1.2

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 +13 -39
  72. package/dist/src/global/A-Entity/A-Entity.class.js +30 -73
  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 +33 -88
  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
@@ -1,8 +1,9 @@
1
1
  import { A_Feature } from "../global/A-Feature/A-Feature.class";
2
+ import { A_TYPES__FeatureDefineDecoratorTemplateItem } from "../global/A-Feature/A-Feature.types";
2
3
  import { A_Stage } from "../global/A-Stage/A-Stage.class";
3
4
  import { A_TYPES__A_StageStep } from "../global/A-Stage/A-Stage.types";
4
5
 
5
- export class StepsManager {
6
+ export class A_StepsManager {
6
7
 
7
8
  public entities: A_TYPES__A_StageStep[];
8
9
  public graph: Map<string, Set<string>>;
@@ -11,8 +12,9 @@ export class StepsManager {
11
12
  public sortedEntities: string[];
12
13
 
13
14
 
14
- constructor(entities: A_TYPES__A_StageStep[]) {
15
- this.entities = entities;
15
+ constructor(entities: Array<A_TYPES__FeatureDefineDecoratorTemplateItem>) {
16
+ this.entities = this.prepareSteps(entities);
17
+
16
18
  this.graph = new Map();
17
19
  this.visited = new Set();
18
20
  this.tempMark = new Set();
@@ -20,6 +22,20 @@ export class StepsManager {
20
22
 
21
23
  }
22
24
 
25
+ private prepareSteps(
26
+ entities: Array<A_TYPES__FeatureDefineDecoratorTemplateItem>
27
+ ): Array<A_TYPES__A_StageStep> {
28
+ return entities.map(step => {
29
+ return {
30
+ ...step,
31
+
32
+ behavior: step.behavior || 'sync',
33
+ before: step.before || [],
34
+ after: step.after || [],
35
+ };
36
+ });
37
+ }
38
+
23
39
  private ID(step: A_TYPES__A_StageStep) {
24
40
  return `${typeof step.component === 'string' ? step.component : step.component.name}.${step.handler}`;
25
41
  }
@@ -0,0 +1,318 @@
1
+ import {
2
+ A_TYPES__Feature_Constructor,
3
+ A_TYPES__FeatureAvailableComponents,
4
+ A_TYPES__FeatureExtendDecoratorTarget
5
+ } from "../global/A-Feature/A-Feature.types";
6
+ import {
7
+ A_TYPES__Error_Constructor,
8
+ A_TYPES__Error_Init
9
+ } from "../global/A-Error/A_Error.types";
10
+ import { A_Component } from "../global/A-Component/A-Component.class";
11
+ import { A_ComponentMeta } from "../global/A-Component/A-Component.meta";
12
+ import { A_TYPES__Component_Constructor } from "../global/A-Component/A-Component.types";
13
+ import { A_Container } from "../global/A-Container/A-Container.class";
14
+ import { A_ContainerMeta } from "../global/A-Container/A-Container.meta";
15
+ import { A_TYPES__Container_Constructor } from "../global/A-Container/A-Container.types";
16
+ import { A_Entity } from "../global/A-Entity/A-Entity.class";
17
+ import { A_EntityMeta } from "../global/A-Entity/A-Entity.meta";
18
+ import { A_TYPES__Entity_Constructor } from "../global/A-Entity/A-Entity.types";
19
+ import { A_Feature } from "../global/A-Feature/A-Feature.class";
20
+ import { A_Fragment } from "../global/A-Fragment/A-Fragment.class";
21
+ import { A_TYPES__Fragment_Constructor } from "../global/A-Fragment/A-Fragment.types";
22
+ import { A_Scope } from "../global/A-Scope/A-Scope.class";
23
+ import { A_Caller } from "../global/A-Caller/A_Caller.class";
24
+ import { A_TYPES__Caller_Constructor } from "../global/A-Caller/A_Caller.types";
25
+ import { A_Error } from "../global/A-Error/A_Error.class";
26
+ import { A_CommonHelper } from "./A_Common.helper";
27
+ import { A_TYPES__AbstractionAvailableComponents } from "../global/A-Abstraction/A-Abstraction.types";
28
+ import { A_TYPES__Scope_Constructor } from "../global/A-Scope/A-Scope.types";
29
+ import { A_TYPES__InjectableTargets } from "../global/A-Inject/A-Inject.types";
30
+
31
+
32
+
33
+ export class A_TypeGuards {
34
+ // ===========================================================================
35
+ // ============================= BASE Type Guards ============================
36
+ // ===========================================================================
37
+ /**
38
+ * Check if value is a string
39
+ *
40
+ * @param value
41
+ * @returns
42
+ */
43
+ static isString(value: any): value is string {
44
+ return typeof value === 'string' || value instanceof String;
45
+ }
46
+ /**
47
+ * Check if value is a number
48
+ *
49
+ * @param value
50
+ * @returns
51
+ */
52
+ static isNumber(value: any): value is number {
53
+ return typeof value === 'number' && isFinite(value);
54
+ }
55
+ /**
56
+ * Check if value is a boolean
57
+ *
58
+ * @param value
59
+ * @returns
60
+ */
61
+ static isBoolean(value: any): value is boolean {
62
+ return typeof value === 'boolean';
63
+ }
64
+ /**
65
+ * Check if value is an array
66
+ *
67
+ * @param value
68
+ * @returns
69
+ */
70
+ static isArray(value: any): value is Array<any> {
71
+ return Array.isArray(value);
72
+ }
73
+ /**
74
+ * Check if value is an object
75
+ *
76
+ * @param value
77
+ * @returns
78
+ */
79
+ static isObject<T extends Object = Object>(value: any): value is T {
80
+ return value && typeof value === 'object' && !Array.isArray(value);
81
+ }
82
+ /**
83
+ * Check if value is a function
84
+ *
85
+ * @param value
86
+ * @returns
87
+ */
88
+ static isFunction(value: any): value is Function {
89
+ return typeof value === 'function';
90
+ }
91
+
92
+ static isUndefined(value: any): value is undefined {
93
+ return typeof value === 'undefined';
94
+ }
95
+
96
+ static isRegExp(value: any): value is RegExp {
97
+ return value instanceof RegExp;
98
+ }
99
+
100
+
101
+ // ===========================================================================
102
+ // ==========================A-Concept Type Guards ===========================
103
+ // ===========================================================================
104
+ /**
105
+ * Type guard to check if the constructor is of type A_Container
106
+ *
107
+ * @param ctor
108
+ * @returns
109
+ */
110
+ static isContainerConstructor(ctor: any): ctor is A_TYPES__Container_Constructor {
111
+ return typeof ctor === 'function' && A_CommonHelper.isInheritedFrom(ctor, A_Container);
112
+ }
113
+ /**
114
+ * Type guard to check if the constructor is of type A_Component
115
+ *
116
+ * @param ctor
117
+ * @returns
118
+ */
119
+ static isComponentConstructor(ctor: any): ctor is A_TYPES__Component_Constructor {
120
+ return typeof ctor === 'function' && A_CommonHelper.isInheritedFrom(ctor, A_Component);
121
+ }
122
+ /**
123
+ * Type guard to check if the constructor is of type A_Fragment
124
+ *
125
+ * @param ctor
126
+ * @returns
127
+ */
128
+ static isFragmentConstructor(ctor: any): ctor is A_TYPES__Fragment_Constructor {
129
+ return typeof ctor === 'function' && A_CommonHelper.isInheritedFrom(ctor, A_Fragment);
130
+ }
131
+ /**
132
+ * Type guard to check if the constructor is of type A_Entity
133
+ *
134
+ * @param ctor
135
+ * @returns
136
+ */
137
+ static isEntityConstructor(ctor: any): ctor is A_TYPES__Entity_Constructor {
138
+ return typeof ctor === 'function' && A_CommonHelper.isInheritedFrom(ctor, A_Entity);
139
+ }
140
+ /**
141
+ * Type guard to check if the constructor is of type A_Scope
142
+ *
143
+ * @param ctor
144
+ * @returns
145
+ */
146
+ static isScopeConstructor(ctor: any): ctor is A_TYPES__Scope_Constructor {
147
+ return typeof ctor === 'function' && A_CommonHelper.isInheritedFrom(ctor, A_Scope);
148
+ }
149
+ /**
150
+ * Type guard to check if the constructor is of type A_Scope
151
+ *
152
+ * @param ctor
153
+ * @returns
154
+ */
155
+ static isErrorConstructor(ctor: any): ctor is A_TYPES__Error_Constructor {
156
+ return typeof ctor === 'function' && A_CommonHelper.isInheritedFrom(ctor, A_Error);
157
+ }
158
+ /**
159
+ * Type guard to check if the constructor is of type A_Feature
160
+ *
161
+ * @param ctor
162
+ * @returns
163
+ */
164
+ static isFeatureConstructor(ctor: any): ctor is A_TYPES__Feature_Constructor {
165
+ return typeof ctor === 'function' && A_CommonHelper.isInheritedFrom(ctor, A_Feature);
166
+ }
167
+ /**
168
+ * Type guard to check if the constructor is of type A_Caller
169
+ *
170
+ * @param ctor
171
+ * @returns
172
+ */
173
+ static isCallerConstructor(ctor: any): ctor is A_TYPES__Caller_Constructor {
174
+ return typeof ctor === 'function' && A_CommonHelper.isInheritedFrom(ctor, A_Caller);
175
+ }
176
+ // ----------------------------------------------------------------------------
177
+ // Instance type guards
178
+ // ----------------------------------------------------------------------------
179
+ /**
180
+ * Type guard to check if the instance is of type A_Container
181
+ *
182
+ * @param instance
183
+ * @returns
184
+ */
185
+ static isContainerInstance(instance: any): instance is A_Container {
186
+ return instance instanceof A_Container;
187
+ }
188
+ /**
189
+ * Type guard to check if the instance is of type A_Component
190
+ *
191
+ * @param instance
192
+ * @returns
193
+ */
194
+ static isComponentInstance(instance: any): instance is A_Component {
195
+ return instance instanceof A_Component;
196
+ }
197
+
198
+ /**
199
+ * Type guard to check if the instance is of type A_Feature
200
+ *
201
+ * @param instance
202
+ * @returns
203
+ */
204
+ static isFeatureInstance(instance: any): instance is A_Feature {
205
+ return instance instanceof A_Feature;
206
+ }
207
+ /**
208
+ * Type guard to check if the instance is of type A_Fragment
209
+ *
210
+ * @param instance
211
+ * @returns
212
+ */
213
+ static isFragmentInstance(instance: any): instance is A_Fragment {
214
+ return instance instanceof A_Fragment;
215
+ }
216
+ /**
217
+ * Type guard to check if the instance is of type A_Entity
218
+ *
219
+ * @param instance
220
+ * @returns
221
+ */
222
+ static isEntityInstance(instance: any): instance is A_Entity {
223
+ return instance instanceof A_Entity;
224
+ }
225
+ /**
226
+ * Type guard to check if the instance is of type A_Scope
227
+ *
228
+ * @param instance
229
+ * @returns
230
+ */
231
+ static isScopeInstance(instance: any): instance is A_Scope {
232
+ return instance instanceof A_Scope;
233
+ }
234
+ /**
235
+ * Type guard to check if the instance is of type A_Error
236
+ *
237
+ * @param instance
238
+ * @returns
239
+ */
240
+ static isErrorInstance(instance: any): instance is A_Error {
241
+ return instance instanceof A_Error;
242
+ }
243
+ /**
244
+ * Type guard to check if the instance is of type A_ComponentMeta
245
+ *
246
+ * @param instance
247
+ * @returns
248
+ */
249
+ static isComponentMetaInstance(instance: any): instance is A_ComponentMeta {
250
+ return instance instanceof A_ComponentMeta;
251
+ }
252
+ /**
253
+ * Type guard to check if the instance is of type A_ContainerMeta
254
+ *
255
+ * @param instance
256
+ * @returns
257
+ */
258
+ static isContainerMetaInstance(instance: any): instance is A_ContainerMeta {
259
+ return instance instanceof A_ContainerMeta;
260
+ }
261
+ /**
262
+ * Type guard to check if the instance is of type A_EntityMeta
263
+ *
264
+ * @param instance
265
+ * @returns
266
+ */
267
+ static isEntityMetaInstance(instance: any): instance is A_EntityMeta {
268
+ return instance instanceof A_EntityMeta;
269
+ }
270
+
271
+
272
+
273
+ // ==========================================================================
274
+ // ========================= SPECIAL Type Guards =============================
275
+ // ===========================================================================
276
+ static isConstructorAvailableForAbstraction(target: any): target is A_TYPES__AbstractionAvailableComponents {
277
+ return A_TypeGuards.isContainerConstructor(target)
278
+ || A_TypeGuards.isComponentConstructor(target);
279
+ }
280
+
281
+
282
+ static isTargetAvailableForInjection(target: any): target is A_TYPES__InjectableTargets {
283
+ return A_TypeGuards.isComponentConstructor(target)
284
+ || A_TypeGuards.isComponentInstance(target)
285
+ || A_TypeGuards.isContainerInstance(target);
286
+ }
287
+
288
+ static isAllowedForFeatureCall(param: any): param is A_TYPES__FeatureAvailableComponents {
289
+ return A_TypeGuards.isContainerInstance(param)
290
+ || A_TypeGuards.isComponentInstance(param)
291
+ || A_TypeGuards.isEntityInstance(param);
292
+ }
293
+
294
+ static isAllowedForFeatureDefinition(param: any): param is A_TYPES__FeatureAvailableComponents {
295
+ return A_TypeGuards.isContainerInstance(param)
296
+ || A_TypeGuards.isComponentInstance(param)
297
+ || A_TypeGuards.isEntityInstance(param);
298
+ }
299
+
300
+ static isAllowedForFeatureExtension(param: any): param is A_TYPES__FeatureExtendDecoratorTarget {
301
+ return A_TypeGuards.isComponentInstance(param);
302
+ }
303
+
304
+ static isAllowedForAbstractionDefinition(param: any): param is A_TYPES__AbstractionAvailableComponents {
305
+ return A_TypeGuards.isContainerInstance(param)
306
+ || A_TypeGuards.isComponentInstance(param);
307
+ }
308
+
309
+ /**
310
+ * Allows to check if the provided param is of constructor type.
311
+ *
312
+ * @param param
313
+ * @returns
314
+ */
315
+ static isConstructorType<T extends A_TYPES__Error_Init>(param: any): param is T {
316
+ return !!param && A_TypeGuards.isObject(param) && !(param instanceof Error) && "message" in param;
317
+ }
318
+ }
@@ -0,0 +1,79 @@
1
+ type Primitive = string | number | boolean | bigint | symbol | null | undefined;
2
+ type Decrement = [never, 0, 1, 2, 3, 4, 5];
3
+
4
+ export type A_TYPES__DeepPartial<T, D extends number = 5> = {
5
+ [P in keyof Required<T>]?:
6
+ [D] extends [never] ? any :
7
+
8
+ Required<T>[P] extends Array<infer U>
9
+ ? Array<A_TYPES__DeepPartial<U, Decrement[D]>>
10
+
11
+ : Required<T>[P] extends Function
12
+ ? Required<T>[P]
13
+
14
+ : Required<T>[P] extends object
15
+ ? A_TYPES__DeepPartial<T[P], Decrement[D]>
16
+ : T[P]
17
+ };
18
+
19
+
20
+ // export type A_TYPES__DeepPartial<T> = {
21
+ // [P in keyof Required<T>]?: Required<T>[P] extends object ? A_TYPES__DeepPartial<T[P]> : T[P];
22
+ // };
23
+
24
+ export type A_TYPES__ObjectKeyEnum<T, E> = {
25
+ [P in keyof Required<T>]?: T[P] extends object ? A_TYPES__ObjectKeyEnum<T[P], E> : E;
26
+ };
27
+
28
+
29
+ export type A_TYPES__Dictionary<T> = {
30
+ [Key: string]: T;
31
+ }
32
+
33
+
34
+ export type A_TYPES__NonObjectPaths<T> = T extends object ? { [K in keyof T]:
35
+ `${Exclude<K, symbol>}${""}`
36
+ }[keyof T] : never
37
+
38
+
39
+
40
+
41
+ export type A_TYPES__Paths<T, D extends number = 5> = [D] extends [never] ? never : (
42
+ T extends object ? { [K in keyof T]:
43
+ `${Exclude<K, symbol>}${"" | `.${A_TYPES__Paths<T[K], Decrement[D]>}`}`
44
+ }[keyof T] : never
45
+ );
46
+
47
+ export type A_TYPES__UnionToIntersection<U> =
48
+ (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
49
+
50
+
51
+ export type A_TYPES__PathsToObject<_Obj, T extends readonly string[]> = A_TYPES__UnionToIntersection<
52
+ {
53
+ [K in keyof T]: T[K] extends `${infer Key}.${infer Rest}`
54
+ ? { [P in Key]: P extends keyof _Obj
55
+ ? A_TYPES__PathsToObject<Required<_Obj>[P], [Rest]>
56
+ : any
57
+
58
+ }
59
+ : { [P in T[K]]:
60
+ `${T[K]}` extends keyof Required<_Obj> ? Required<_Obj>[`${T[K]}`] : never
61
+ };
62
+ }[number]
63
+ >;
64
+
65
+ export type A_TYPES__Required<T, arr extends (A_TYPES__Paths<T>)[] = (A_TYPES__Paths<T>)[]> = A_TYPES__PathsToObject<T, arr> & T;
66
+
67
+
68
+ export type A_TYPES__ExtractNested<T, P extends string> = P extends `${infer K}.${infer Rest}`
69
+ ? K extends keyof T
70
+ ? { [Key in K]: A_TYPES__ExtractNested<T[K], Rest> }
71
+ : never
72
+ : P extends keyof T
73
+ ? { [Key in P]: T[P] }
74
+ : never;
75
+
76
+
77
+ export type A_TYPES__ExtractProperties<T, P extends A_TYPES__Paths<T>[]> = A_TYPES__UnionToIntersection<{
78
+ [K in keyof P]: P[K] extends string ? A_TYPES__ExtractNested<T, P[K]> : never
79
+ }[number]>;
@@ -0,0 +1,117 @@
1
+ import { A_CommonHelper } from "@adaas/a-concept/helpers/A_Common.helper";
2
+ import { A_IdentityHelper } from "@adaas/a-concept/helpers/A_Identity.helper";
3
+ import { A_TYPES__DeepPartial } from "@adaas/a-concept/types/A_Common.types";
4
+ jest.retryTimes(0);
5
+
6
+ describe('CommonHelper Tests', () => {
7
+ it('Deep Clone and Merge ', async () => {
8
+
9
+ type TestType = {
10
+ a: string,
11
+ b: string,
12
+ c: {
13
+ d: string
14
+ },
15
+ f: (name: string) => string
16
+ s: Date
17
+ }
18
+
19
+ const t: TestType = {
20
+ a: 'a',
21
+ b: 'b',
22
+ c: {
23
+ d: 'd'
24
+ },
25
+ f: (name: string) => { return name },
26
+ s: new Date()
27
+ }
28
+
29
+ const t2: A_TYPES__DeepPartial<TestType> = {
30
+ a: 'aa',
31
+ c: {
32
+ d: 'dd'
33
+ },
34
+ f: (name: string) => { return name + '2' }
35
+ }
36
+
37
+ const merged = A_CommonHelper.deepCloneAndMerge(t2, t);
38
+
39
+
40
+ const name = merged.f('names');
41
+
42
+
43
+ expect(merged.a).toBe('aa');
44
+ expect(merged.b).toBe('b');
45
+ expect(merged.c.d).toBe('dd');
46
+ expect(name).toBe('names2');
47
+ expect(t).not.toEqual(merged);
48
+ expect(t2).not.toEqual(merged);
49
+ });
50
+
51
+ it('Deep Clone Different Types', async () => {
52
+
53
+ type TestType = {
54
+ a: string,
55
+ b: string,
56
+ c: {
57
+ d: string
58
+ },
59
+ bool:{
60
+ a: boolean
61
+ },
62
+ f: (name: string) => string
63
+ s: Date
64
+ }
65
+
66
+ const t: TestType = {
67
+ a: 'a',
68
+ b: 'b',
69
+ c: {
70
+ d: 'd'
71
+ },
72
+ bool:{
73
+ a: true
74
+ },
75
+ f: (name: string) => { return name },
76
+ s: new Date()
77
+ }
78
+
79
+ const t2: any = {
80
+ e: 'foo',
81
+ b: 'bb',
82
+ c:{
83
+ d: 'ddd'
84
+ },
85
+ bool:{
86
+ a: false
87
+ },
88
+ some: {
89
+ d: 'dd'
90
+ },
91
+ }
92
+
93
+ const merged = A_CommonHelper.deepCloneAndMerge(t2, t);
94
+
95
+ expect(merged.a).toBe('a');
96
+ expect(merged.b).toBe('bb');
97
+ expect(merged.c.d).toBe('ddd');
98
+ expect(merged.bool.a).toBe(false);
99
+ expect((merged as any).e).toBe('foo');
100
+ expect((merged as any).some.d).toBe('dd');
101
+ expect(merged.f('names')).toBe('names');
102
+ });
103
+ it('should generate and then parse Unique time based IDs', async () => {
104
+ const id = A_IdentityHelper.generateTimeId();
105
+ const parts = A_IdentityHelper.parseTimeId(id);
106
+
107
+ expect(id).toBeDefined();
108
+ expect(parts.timestamp).toBeInstanceOf(Date);
109
+ expect(parts.random).toHaveLength(6);
110
+
111
+ // Check that the timestamp is recent (within the last minute)
112
+ const now = Date.now();
113
+ const timestamp = parts.timestamp.getTime();
114
+ expect(timestamp).toBeLessThanOrEqual(now);
115
+ expect(timestamp).toBeGreaterThan(now - 60000); // within the last minute
116
+ });
117
+ });
@@ -1,6 +1,8 @@
1
+ import { A_Inject } from '@adaas/a-concept/global/A-Inject/A-Inject.decorator';
1
2
  import './test.setup';
2
3
 
3
4
  import { A_Component } from "@adaas/a-concept/global/A-Component/A-Component.class";
5
+ import { A_Context } from '@adaas/a-concept/global/A-Context/A-Context.class';
4
6
 
5
7
  jest.retryTimes(0);
6
8
 
@@ -10,18 +12,21 @@ describe('A-Component tests', () => {
10
12
  const component = new A_Component();
11
13
  });
12
14
  it('Should Allow to create a component with dependencies', async () => {
15
+ class MyComponent extends A_Component { }
16
+
13
17
  class DependentComponent extends A_Component {
14
18
  constructor(
15
- public dependency: A_Component
19
+ @A_Inject(MyComponent) public dependency: MyComponent
16
20
  ) {
17
21
  super();
18
22
  }
19
23
  }
20
24
 
21
- const component = new A_Component();
22
- const dependentComponent = new DependentComponent(component);
23
- expect(dependentComponent.dependency).toBe(component);
24
- });
25
-
25
+ A_Context.root.register(MyComponent);
26
+ A_Context.root.register(DependentComponent);
26
27
 
28
+ const dependentComponent = A_Context.root.resolve(DependentComponent);
29
+
30
+ expect(dependentComponent.dependency).toBeInstanceOf(MyComponent);
31
+ });
27
32
  });