@bett3r-dev/pv3 1.0.0

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 (393) hide show
  1. package/build/adapters/cache/index.d.ts +2 -0
  2. package/build/adapters/cache/index.d.ts.map +1 -0
  3. package/build/adapters/cache/index.js +18 -0
  4. package/build/adapters/cache/index.js.map +1 -0
  5. package/build/adapters/cache/memory/__tests__/memoryCache.test.d.ts +1 -0
  6. package/build/adapters/cache/memory/__tests__/memoryCache.test.d.ts.map +1 -0
  7. package/build/adapters/cache/memory/__tests__/memoryCache.test.js +6 -0
  8. package/build/adapters/cache/memory/__tests__/memoryCache.test.js.map +1 -0
  9. package/build/adapters/cache/memory/index.d.ts +3 -0
  10. package/build/adapters/cache/memory/index.d.ts.map +1 -0
  11. package/build/adapters/cache/memory/index.js +119 -0
  12. package/build/adapters/cache/memory/index.js.map +1 -0
  13. package/build/adapters/configuration/__tests__/dotEnv.test.d.ts +2 -0
  14. package/build/adapters/configuration/__tests__/dotEnv.test.d.ts.map +1 -0
  15. package/build/adapters/configuration/__tests__/dotEnv.test.js +43 -0
  16. package/build/adapters/configuration/__tests__/dotEnv.test.js.map +1 -0
  17. package/build/adapters/configuration/dotEnv.d.ts +3 -0
  18. package/build/adapters/configuration/dotEnv.d.ts.map +1 -0
  19. package/build/adapters/configuration/dotEnv.js +35 -0
  20. package/build/adapters/configuration/dotEnv.js.map +1 -0
  21. package/build/adapters/configuration/index.d.ts +2 -0
  22. package/build/adapters/configuration/index.d.ts.map +1 -0
  23. package/build/adapters/configuration/index.js +18 -0
  24. package/build/adapters/configuration/index.js.map +1 -0
  25. package/build/adapters/database/index.d.ts +2 -0
  26. package/build/adapters/database/index.d.ts.map +1 -0
  27. package/build/adapters/database/index.js +18 -0
  28. package/build/adapters/database/index.js.map +1 -0
  29. package/build/adapters/database/memory/__tests__/memoryDb.test.d.ts +1 -0
  30. package/build/adapters/database/memory/__tests__/memoryDb.test.d.ts.map +1 -0
  31. package/build/adapters/database/memory/__tests__/memoryDb.test.js +36 -0
  32. package/build/adapters/database/memory/__tests__/memoryDb.test.js.map +1 -0
  33. package/build/adapters/database/memory/index.d.ts +3 -0
  34. package/build/adapters/database/memory/index.d.ts.map +1 -0
  35. package/build/adapters/database/memory/index.js +241 -0
  36. package/build/adapters/database/memory/index.js.map +1 -0
  37. package/build/adapters/endpoints/addAuthUser/index.d.ts +8 -0
  38. package/build/adapters/endpoints/addAuthUser/index.d.ts.map +1 -0
  39. package/build/adapters/endpoints/addAuthUser/index.js +57 -0
  40. package/build/adapters/endpoints/addAuthUser/index.js.map +1 -0
  41. package/build/adapters/endpoints/endpointValidation/index.d.ts +4 -0
  42. package/build/adapters/endpoints/endpointValidation/index.d.ts.map +1 -0
  43. package/build/adapters/endpoints/endpointValidation/index.js +27 -0
  44. package/build/adapters/endpoints/endpointValidation/index.js.map +1 -0
  45. package/build/adapters/endpoints/index.d.ts +4 -0
  46. package/build/adapters/endpoints/index.d.ts.map +1 -0
  47. package/build/adapters/endpoints/index.js +21 -0
  48. package/build/adapters/endpoints/index.js.map +1 -0
  49. package/build/adapters/endpoints/localAuthorization/index.d.ts +1 -0
  50. package/build/adapters/endpoints/localAuthorization/index.d.ts.map +1 -0
  51. package/build/adapters/endpoints/localAuthorization/index.js +68 -0
  52. package/build/adapters/endpoints/localAuthorization/index.js.map +1 -0
  53. package/build/adapters/endpoints/tcpConsumer/index.d.ts +3 -0
  54. package/build/adapters/endpoints/tcpConsumer/index.d.ts.map +1 -0
  55. package/build/adapters/endpoints/tcpConsumer/index.js +64 -0
  56. package/build/adapters/endpoints/tcpConsumer/index.js.map +1 -0
  57. package/build/adapters/endpoints/userSession/index.d.ts +8 -0
  58. package/build/adapters/endpoints/userSession/index.d.ts.map +1 -0
  59. package/build/adapters/endpoints/userSession/index.js +43 -0
  60. package/build/adapters/endpoints/userSession/index.js.map +1 -0
  61. package/build/adapters/eventstore/database.d.ts +3 -0
  62. package/build/adapters/eventstore/database.d.ts.map +1 -0
  63. package/build/adapters/eventstore/database.js +156 -0
  64. package/build/adapters/eventstore/database.js.map +1 -0
  65. package/build/adapters/eventstore/index.d.ts +2 -0
  66. package/build/adapters/eventstore/index.d.ts.map +1 -0
  67. package/build/adapters/eventstore/index.js +18 -0
  68. package/build/adapters/eventstore/index.js.map +1 -0
  69. package/build/adapters/infrastructure/index.d.ts +2 -0
  70. package/build/adapters/infrastructure/index.d.ts.map +1 -0
  71. package/build/adapters/infrastructure/index.js +18 -0
  72. package/build/adapters/infrastructure/index.js.map +1 -0
  73. package/build/adapters/infrastructure/local/index.d.ts +4 -0
  74. package/build/adapters/infrastructure/local/index.d.ts.map +1 -0
  75. package/build/adapters/infrastructure/local/index.js +37 -0
  76. package/build/adapters/infrastructure/local/index.js.map +1 -0
  77. package/build/adapters/logger/console.d.ts +3 -0
  78. package/build/adapters/logger/console.d.ts.map +1 -0
  79. package/build/adapters/logger/console.js +38 -0
  80. package/build/adapters/logger/console.js.map +1 -0
  81. package/build/adapters/logger/index.d.ts +2 -0
  82. package/build/adapters/logger/index.d.ts.map +1 -0
  83. package/build/adapters/logger/index.js +18 -0
  84. package/build/adapters/logger/index.js.map +1 -0
  85. package/build/index.d.ts +23 -0
  86. package/build/index.d.ts.map +1 -0
  87. package/build/index.js +39 -0
  88. package/build/index.js.map +1 -0
  89. package/build/libraries/modules/fs.d.ts +12 -0
  90. package/build/libraries/modules/fs.d.ts.map +1 -0
  91. package/build/libraries/modules/fs.js +103 -0
  92. package/build/libraries/modules/fs.js.map +1 -0
  93. package/build/libraries/modules/index.d.ts +2 -0
  94. package/build/libraries/modules/index.d.ts.map +1 -0
  95. package/build/libraries/modules/index.js +18 -0
  96. package/build/libraries/modules/index.js.map +1 -0
  97. package/build/libraries/openApi/index.d.ts +2 -0
  98. package/build/libraries/openApi/index.d.ts.map +1 -0
  99. package/build/libraries/openApi/index.js +18 -0
  100. package/build/libraries/openApi/index.js.map +1 -0
  101. package/build/libraries/openApi/pruneUnusedRef.d.ts +3 -0
  102. package/build/libraries/openApi/pruneUnusedRef.d.ts.map +1 -0
  103. package/build/libraries/openApi/pruneUnusedRef.js +30 -0
  104. package/build/libraries/openApi/pruneUnusedRef.js.map +1 -0
  105. package/build/libraries/tcp/index.d.ts +8 -0
  106. package/build/libraries/tcp/index.d.ts.map +1 -0
  107. package/build/libraries/tcp/index.js +108 -0
  108. package/build/libraries/tcp/index.js.map +1 -0
  109. package/build/libraries/tcp/types.d.ts +45 -0
  110. package/build/libraries/tcp/types.d.ts.map +1 -0
  111. package/build/libraries/tcp/types.js +3 -0
  112. package/build/libraries/tcp/types.js.map +1 -0
  113. package/build/libraries/validation/__tests__/validation.test.d.ts +2 -0
  114. package/build/libraries/validation/__tests__/validation.test.d.ts.map +1 -0
  115. package/build/libraries/validation/__tests__/validation.test.js +53 -0
  116. package/build/libraries/validation/__tests__/validation.test.js.map +1 -0
  117. package/build/libraries/validation/index.d.ts +8 -0
  118. package/build/libraries/validation/index.d.ts.map +1 -0
  119. package/build/libraries/validation/index.js +51 -0
  120. package/build/libraries/validation/index.js.map +1 -0
  121. package/build/ports/authentication/index.d.ts +12 -0
  122. package/build/ports/authentication/index.d.ts.map +1 -0
  123. package/build/ports/authentication/index.js +23 -0
  124. package/build/ports/authentication/index.js.map +1 -0
  125. package/build/ports/base.d.ts +7 -0
  126. package/build/ports/base.d.ts.map +1 -0
  127. package/build/ports/base.js +25 -0
  128. package/build/ports/base.js.map +1 -0
  129. package/build/ports/cache/index.d.ts +3 -0
  130. package/build/ports/cache/index.d.ts.map +1 -0
  131. package/build/ports/cache/index.js +19 -0
  132. package/build/ports/cache/index.js.map +1 -0
  133. package/build/ports/configuration/__tests__/configurationPort.test.d.ts +2 -0
  134. package/build/ports/configuration/__tests__/configurationPort.test.d.ts.map +1 -0
  135. package/build/ports/configuration/__tests__/configurationPort.test.js +51 -0
  136. package/build/ports/configuration/__tests__/configurationPort.test.js.map +1 -0
  137. package/build/ports/configuration/args.d.ts +57 -0
  138. package/build/ports/configuration/args.d.ts.map +1 -0
  139. package/build/ports/configuration/args.js +44 -0
  140. package/build/ports/configuration/args.js.map +1 -0
  141. package/build/ports/configuration/common.d.ts +2 -0
  142. package/build/ports/configuration/common.d.ts.map +1 -0
  143. package/build/ports/configuration/common.js +19 -0
  144. package/build/ports/configuration/common.js.map +1 -0
  145. package/build/ports/configuration/index.d.ts +10 -0
  146. package/build/ports/configuration/index.d.ts.map +1 -0
  147. package/build/ports/configuration/index.js +96 -0
  148. package/build/ports/configuration/index.js.map +1 -0
  149. package/build/ports/configuration/localConfig.d.ts +3 -0
  150. package/build/ports/configuration/localConfig.d.ts.map +1 -0
  151. package/build/ports/configuration/localConfig.js +108 -0
  152. package/build/ports/configuration/localConfig.js.map +1 -0
  153. package/build/ports/database/index.d.ts +4 -0
  154. package/build/ports/database/index.d.ts.map +1 -0
  155. package/build/ports/database/index.js +27 -0
  156. package/build/ports/database/index.js.map +1 -0
  157. package/build/ports/endpoints/__tests__/endpointsCall.test.d.ts +2 -0
  158. package/build/ports/endpoints/__tests__/endpointsCall.test.d.ts.map +1 -0
  159. package/build/ports/endpoints/__tests__/endpointsCall.test.js +21 -0
  160. package/build/ports/endpoints/__tests__/endpointsCall.test.js.map +1 -0
  161. package/build/ports/endpoints/__tests__/test-client-library/base.d.ts +77 -0
  162. package/build/ports/endpoints/__tests__/test-client-library/base.d.ts.map +1 -0
  163. package/build/ports/endpoints/__tests__/test-client-library/base.js +91 -0
  164. package/build/ports/endpoints/__tests__/test-client-library/base.js.map +1 -0
  165. package/build/ports/endpoints/__tests__/test-client-library/index.d.ts +29 -0
  166. package/build/ports/endpoints/__tests__/test-client-library/index.d.ts.map +1 -0
  167. package/build/ports/endpoints/__tests__/test-client-library/index.js +43 -0
  168. package/build/ports/endpoints/__tests__/test-client-library/index.js.map +1 -0
  169. package/build/ports/endpoints/__tests__/test-client-library/services/service.d.ts +106 -0
  170. package/build/ports/endpoints/__tests__/test-client-library/services/service.d.ts.map +1 -0
  171. package/build/ports/endpoints/__tests__/test-client-library/services/service.js +62 -0
  172. package/build/ports/endpoints/__tests__/test-client-library/services/service.js.map +1 -0
  173. package/build/ports/endpoints/__tests__/utils.test.d.ts +1 -0
  174. package/build/ports/endpoints/__tests__/utils.test.d.ts.map +1 -0
  175. package/build/ports/endpoints/__tests__/utils.test.js +53 -0
  176. package/build/ports/endpoints/__tests__/utils.test.js.map +1 -0
  177. package/build/ports/endpoints/index.d.ts +29 -0
  178. package/build/ports/endpoints/index.d.ts.map +1 -0
  179. package/build/ports/endpoints/index.js +263 -0
  180. package/build/ports/endpoints/index.js.map +1 -0
  181. package/build/ports/endpoints/openApi.d.ts +16 -0
  182. package/build/ports/endpoints/openApi.d.ts.map +1 -0
  183. package/build/ports/endpoints/openApi.js +187 -0
  184. package/build/ports/endpoints/openApi.js.map +1 -0
  185. package/build/ports/endpoints/utils.d.ts +17 -0
  186. package/build/ports/endpoints/utils.d.ts.map +1 -0
  187. package/build/ports/endpoints/utils.js +31 -0
  188. package/build/ports/endpoints/utils.js.map +1 -0
  189. package/build/ports/eventsourcing/__tests__/eventhandlers.test.d.ts +2 -0
  190. package/build/ports/eventsourcing/__tests__/eventhandlers.test.d.ts.map +1 -0
  191. package/build/ports/eventsourcing/__tests__/eventhandlers.test.js +35 -0
  192. package/build/ports/eventsourcing/__tests__/eventhandlers.test.js.map +1 -0
  193. package/build/ports/eventsourcing/__tests__/invariants.test.d.ts +2 -0
  194. package/build/ports/eventsourcing/__tests__/invariants.test.d.ts.map +1 -0
  195. package/build/ports/eventsourcing/__tests__/invariants.test.js +210 -0
  196. package/build/ports/eventsourcing/__tests__/invariants.test.js.map +1 -0
  197. package/build/ports/eventsourcing/commandHandlers/index.d.ts +25 -0
  198. package/build/ports/eventsourcing/commandHandlers/index.d.ts.map +1 -0
  199. package/build/ports/eventsourcing/commandHandlers/index.js +392 -0
  200. package/build/ports/eventsourcing/commandHandlers/index.js.map +1 -0
  201. package/build/ports/eventsourcing/commandTemplates/index.d.ts +3 -0
  202. package/build/ports/eventsourcing/commandTemplates/index.d.ts.map +1 -0
  203. package/build/ports/eventsourcing/commandTemplates/index.js +19 -0
  204. package/build/ports/eventsourcing/commandTemplates/index.js.map +1 -0
  205. package/build/ports/eventsourcing/commandTemplates/multiStream.d.ts +4 -0
  206. package/build/ports/eventsourcing/commandTemplates/multiStream.d.ts.map +1 -0
  207. package/build/ports/eventsourcing/commandTemplates/multiStream.js +73 -0
  208. package/build/ports/eventsourcing/commandTemplates/multiStream.js.map +1 -0
  209. package/build/ports/eventsourcing/commandTemplates/snapshot.d.ts +9 -0
  210. package/build/ports/eventsourcing/commandTemplates/snapshot.d.ts.map +1 -0
  211. package/build/ports/eventsourcing/commandTemplates/snapshot.js +39 -0
  212. package/build/ports/eventsourcing/commandTemplates/snapshot.js.map +1 -0
  213. package/build/ports/eventsourcing/eventHandlers/index.d.ts +33 -0
  214. package/build/ports/eventsourcing/eventHandlers/index.d.ts.map +1 -0
  215. package/build/ports/eventsourcing/eventHandlers/index.js +276 -0
  216. package/build/ports/eventsourcing/eventHandlers/index.js.map +1 -0
  217. package/build/ports/eventsourcing/index.d.ts +9 -0
  218. package/build/ports/eventsourcing/index.d.ts.map +1 -0
  219. package/build/ports/eventsourcing/index.js +101 -0
  220. package/build/ports/eventsourcing/index.js.map +1 -0
  221. package/build/ports/eventsourcing/invariants/combinators.d.ts +4 -0
  222. package/build/ports/eventsourcing/invariants/combinators.d.ts.map +1 -0
  223. package/build/ports/eventsourcing/invariants/combinators.js +20 -0
  224. package/build/ports/eventsourcing/invariants/combinators.js.map +1 -0
  225. package/build/ports/eventsourcing/invariants/common.d.ts +10 -0
  226. package/build/ports/eventsourcing/invariants/common.d.ts.map +1 -0
  227. package/build/ports/eventsourcing/invariants/common.js +37 -0
  228. package/build/ports/eventsourcing/invariants/common.js.map +1 -0
  229. package/build/ports/eventsourcing/invariants/comparisons.d.ts +19 -0
  230. package/build/ports/eventsourcing/invariants/comparisons.d.ts.map +1 -0
  231. package/build/ports/eventsourcing/invariants/comparisons.js +83 -0
  232. package/build/ports/eventsourcing/invariants/comparisons.js.map +1 -0
  233. package/build/ports/eventsourcing/invariants/index.d.ts +5 -0
  234. package/build/ports/eventsourcing/invariants/index.d.ts.map +1 -0
  235. package/build/ports/eventsourcing/invariants/index.js +21 -0
  236. package/build/ports/eventsourcing/invariants/index.js.map +1 -0
  237. package/build/ports/eventsourcing/invariants/stateExistance.d.ts +4 -0
  238. package/build/ports/eventsourcing/invariants/stateExistance.d.ts.map +1 -0
  239. package/build/ports/eventsourcing/invariants/stateExistance.js +33 -0
  240. package/build/ports/eventsourcing/invariants/stateExistance.js.map +1 -0
  241. package/build/ports/eventsourcing/subscriptions/index.d.ts +2 -0
  242. package/build/ports/eventsourcing/subscriptions/index.d.ts.map +1 -0
  243. package/build/ports/eventsourcing/subscriptions/index.js +18 -0
  244. package/build/ports/eventsourcing/subscriptions/index.js.map +1 -0
  245. package/build/ports/eventsourcing/subscriptions/sseSubscriptions.d.ts +3 -0
  246. package/build/ports/eventsourcing/subscriptions/sseSubscriptions.d.ts.map +1 -0
  247. package/build/ports/eventsourcing/subscriptions/sseSubscriptions.js +81 -0
  248. package/build/ports/eventsourcing/subscriptions/sseSubscriptions.js.map +1 -0
  249. package/build/ports/eventsourcing/utils/aggregateBuilder.d.ts +4 -0
  250. package/build/ports/eventsourcing/utils/aggregateBuilder.d.ts.map +1 -0
  251. package/build/ports/eventsourcing/utils/aggregateBuilder.js +45 -0
  252. package/build/ports/eventsourcing/utils/aggregateBuilder.js.map +1 -0
  253. package/build/ports/eventsourcing/utils/commandBuilder.d.ts +3 -0
  254. package/build/ports/eventsourcing/utils/commandBuilder.d.ts.map +1 -0
  255. package/build/ports/eventsourcing/utils/commandBuilder.js +102 -0
  256. package/build/ports/eventsourcing/utils/commandBuilder.js.map +1 -0
  257. package/build/ports/eventsourcing/utils/eventHandlerBuilder.d.ts +3 -0
  258. package/build/ports/eventsourcing/utils/eventHandlerBuilder.d.ts.map +1 -0
  259. package/build/ports/eventsourcing/utils/eventHandlerBuilder.js +19 -0
  260. package/build/ports/eventsourcing/utils/eventHandlerBuilder.js.map +1 -0
  261. package/build/ports/eventsourcing/utils/externalSystemBuilder.d.ts +4 -0
  262. package/build/ports/eventsourcing/utils/externalSystemBuilder.d.ts.map +1 -0
  263. package/build/ports/eventsourcing/utils/externalSystemBuilder.js +34 -0
  264. package/build/ports/eventsourcing/utils/externalSystemBuilder.js.map +1 -0
  265. package/build/ports/eventsourcing/utils/index.d.ts +13 -0
  266. package/build/ports/eventsourcing/utils/index.d.ts.map +1 -0
  267. package/build/ports/eventsourcing/utils/index.js +45 -0
  268. package/build/ports/eventsourcing/utils/index.js.map +1 -0
  269. package/build/ports/eventsourcing/utils/policyBuilder.d.ts +3 -0
  270. package/build/ports/eventsourcing/utils/policyBuilder.d.ts.map +1 -0
  271. package/build/ports/eventsourcing/utils/policyBuilder.js +29 -0
  272. package/build/ports/eventsourcing/utils/policyBuilder.js.map +1 -0
  273. package/build/ports/eventsourcing/utils/readmodelBuilder.d.ts +5 -0
  274. package/build/ports/eventsourcing/utils/readmodelBuilder.d.ts.map +1 -0
  275. package/build/ports/eventsourcing/utils/readmodelBuilder.js +45 -0
  276. package/build/ports/eventsourcing/utils/readmodelBuilder.js.map +1 -0
  277. package/build/ports/eventstore/index.d.ts +3 -0
  278. package/build/ports/eventstore/index.d.ts.map +1 -0
  279. package/build/ports/eventstore/index.js +13 -0
  280. package/build/ports/eventstore/index.js.map +1 -0
  281. package/build/ports/infrastructure/__tests__/fixture/index.d.ts +3 -0
  282. package/build/ports/infrastructure/__tests__/fixture/index.d.ts.map +1 -0
  283. package/build/ports/infrastructure/__tests__/fixture/index.js +19 -0
  284. package/build/ports/infrastructure/__tests__/fixture/index.js.map +1 -0
  285. package/build/ports/infrastructure/__tests__/fixture/infrastructureServices.d.ts +19 -0
  286. package/build/ports/infrastructure/__tests__/fixture/infrastructureServices.d.ts.map +1 -0
  287. package/build/ports/infrastructure/__tests__/fixture/infrastructureServices.js +76 -0
  288. package/build/ports/infrastructure/__tests__/fixture/infrastructureServices.js.map +1 -0
  289. package/build/ports/infrastructure/__tests__/fixture/structureState.d.ts +177 -0
  290. package/build/ports/infrastructure/__tests__/fixture/structureState.d.ts.map +1 -0
  291. package/build/ports/infrastructure/__tests__/fixture/structureState.js +258 -0
  292. package/build/ports/infrastructure/__tests__/fixture/structureState.js.map +1 -0
  293. package/build/ports/infrastructure/__tests__/infrastructure.test.d.ts +2 -0
  294. package/build/ports/infrastructure/__tests__/infrastructure.test.d.ts.map +1 -0
  295. package/build/ports/infrastructure/__tests__/infrastructure.test.js +11 -0
  296. package/build/ports/infrastructure/__tests__/infrastructure.test.js.map +1 -0
  297. package/build/ports/infrastructure/index.d.ts +53 -0
  298. package/build/ports/infrastructure/index.d.ts.map +1 -0
  299. package/build/ports/infrastructure/index.js +149 -0
  300. package/build/ports/infrastructure/index.js.map +1 -0
  301. package/build/ports/infrastructure/utils.d.ts +14 -0
  302. package/build/ports/infrastructure/utils.d.ts.map +1 -0
  303. package/build/ports/infrastructure/utils.js +126 -0
  304. package/build/ports/infrastructure/utils.js.map +1 -0
  305. package/build/ports/logger/index.d.ts +3 -0
  306. package/build/ports/logger/index.d.ts.map +1 -0
  307. package/build/ports/logger/index.js +32 -0
  308. package/build/ports/logger/index.js.map +1 -0
  309. package/build/utils/index.d.ts +35 -0
  310. package/build/utils/index.d.ts.map +1 -0
  311. package/build/utils/index.js +190 -0
  312. package/build/utils/index.js.map +1 -0
  313. package/package.json +28 -0
  314. package/src/adapters/cache/index.ts +1 -0
  315. package/src/adapters/cache/memory/__tests__/memoryCache.test.ts +6 -0
  316. package/src/adapters/cache/memory/index.ts +142 -0
  317. package/src/adapters/configuration/__tests__/.env +4 -0
  318. package/src/adapters/configuration/__tests__/dotEnv.test.ts +38 -0
  319. package/src/adapters/configuration/dotEnv.ts +33 -0
  320. package/src/adapters/configuration/index.ts +1 -0
  321. package/src/adapters/database/index.ts +1 -0
  322. package/src/adapters/database/memory/__tests__/memoryDb.test.ts +37 -0
  323. package/src/adapters/database/memory/index.ts +279 -0
  324. package/src/adapters/endpoints/addAuthUser/index.ts +55 -0
  325. package/src/adapters/endpoints/endpointValidation/index.ts +26 -0
  326. package/src/adapters/endpoints/index.ts +4 -0
  327. package/src/adapters/endpoints/localAuthorization/index.ts +75 -0
  328. package/src/adapters/endpoints/tcpConsumer/index.ts +69 -0
  329. package/src/adapters/endpoints/userSession/index.ts +40 -0
  330. package/src/adapters/eventstore/database.ts +178 -0
  331. package/src/adapters/eventstore/index.ts +1 -0
  332. package/src/adapters/infrastructure/index.ts +1 -0
  333. package/src/adapters/infrastructure/local/index.ts +40 -0
  334. package/src/adapters/logger/console.ts +42 -0
  335. package/src/adapters/logger/index.ts +1 -0
  336. package/src/index.ts +25 -0
  337. package/src/libraries/modules/fs.ts +88 -0
  338. package/src/libraries/modules/index.ts +1 -0
  339. package/src/libraries/openApi/index.ts +1 -0
  340. package/src/libraries/openApi/pruneUnusedRef.ts +35 -0
  341. package/src/libraries/tcp/index.ts +98 -0
  342. package/src/libraries/tcp/types.ts +43 -0
  343. package/src/libraries/validation/__tests__/validation.test.ts +25 -0
  344. package/src/libraries/validation/index.ts +48 -0
  345. package/src/ports/authentication/index.ts +25 -0
  346. package/src/ports/base.ts +20 -0
  347. package/src/ports/cache/index.ts +17 -0
  348. package/src/ports/configuration/__tests__/configurationPort.test.ts +47 -0
  349. package/src/ports/configuration/args.ts +39 -0
  350. package/src/ports/configuration/common.ts +12 -0
  351. package/src/ports/configuration/index.ts +110 -0
  352. package/src/ports/configuration/localConfig.ts +117 -0
  353. package/src/ports/database/index.ts +25 -0
  354. package/src/ports/endpoints/__tests__/endpointsCall.test.ts +20 -0
  355. package/src/ports/endpoints/__tests__/test-client-library/base.ts +167 -0
  356. package/src/ports/endpoints/__tests__/test-client-library/index.ts +23 -0
  357. package/src/ports/endpoints/__tests__/test-client-library/services/service.ts +181 -0
  358. package/src/ports/endpoints/__tests__/utils.test.ts +54 -0
  359. package/src/ports/endpoints/index.ts +272 -0
  360. package/src/ports/endpoints/openApi.ts +191 -0
  361. package/src/ports/endpoints/utils.ts +31 -0
  362. package/src/ports/eventsourcing/__tests__/eventhandlers.test.ts +30 -0
  363. package/src/ports/eventsourcing/__tests__/invariants.test.ts +213 -0
  364. package/src/ports/eventsourcing/commandHandlers/index.ts +625 -0
  365. package/src/ports/eventsourcing/commandTemplates/index.ts +2 -0
  366. package/src/ports/eventsourcing/commandTemplates/multiStream.ts +70 -0
  367. package/src/ports/eventsourcing/commandTemplates/snapshot.ts +43 -0
  368. package/src/ports/eventsourcing/eventHandlers/index.ts +429 -0
  369. package/src/ports/eventsourcing/index.ts +98 -0
  370. package/src/ports/eventsourcing/invariants/combinators.ts +25 -0
  371. package/src/ports/eventsourcing/invariants/common.ts +42 -0
  372. package/src/ports/eventsourcing/invariants/comparisons.ts +90 -0
  373. package/src/ports/eventsourcing/invariants/index.ts +4 -0
  374. package/src/ports/eventsourcing/invariants/stateExistance.ts +34 -0
  375. package/src/ports/eventsourcing/subscriptions/index.ts +1 -0
  376. package/src/ports/eventsourcing/subscriptions/sseSubscriptions.ts +103 -0
  377. package/src/ports/eventsourcing/utils/aggregateBuilder.ts +49 -0
  378. package/src/ports/eventsourcing/utils/commandBuilder.ts +113 -0
  379. package/src/ports/eventsourcing/utils/eventHandlerBuilder.ts +22 -0
  380. package/src/ports/eventsourcing/utils/externalSystemBuilder.ts +42 -0
  381. package/src/ports/eventsourcing/utils/index.ts +25 -0
  382. package/src/ports/eventsourcing/utils/policyBuilder.ts +31 -0
  383. package/src/ports/eventsourcing/utils/readmodelBuilder.ts +52 -0
  384. package/src/ports/eventstore/index.ts +11 -0
  385. package/src/ports/infrastructure/__tests__/fixture/index.ts +2 -0
  386. package/src/ports/infrastructure/__tests__/fixture/infrastructureServices.ts +72 -0
  387. package/src/ports/infrastructure/__tests__/fixture/structureState.ts +254 -0
  388. package/src/ports/infrastructure/__tests__/infrastructure.test.ts +11 -0
  389. package/src/ports/infrastructure/index.ts +162 -0
  390. package/src/ports/infrastructure/utils.ts +130 -0
  391. package/src/ports/logger/index.ts +34 -0
  392. package/src/utils/index.ts +186 -0
  393. package/tsconfig.json +19 -0
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryDb = void 0;
4
+ const bett3r_utils_1 = require("@bett3r-dev/bett3r-utils");
5
+ const pv3_types_1 = require("@bett3r-dev/pv3-types");
6
+ const crypto_1 = require("crypto");
7
+ const ramda_1 = require("ramda");
8
+ const database_1 = require("../../../ports/database");
9
+ const utils_1 = require("../../../utils");
10
+ const MemoryDb = () => {
11
+ let _db = {};
12
+ const changeEmitters = {};
13
+ const uniqueIndexes = {};
14
+ const start = async () => {
15
+ };
16
+ const stop = async () => {
17
+ };
18
+ const getCollection = (collection) => {
19
+ const coll = _db[collection] ||= {};
20
+ const validateIndex = (data) => {
21
+ if (!uniqueIndexes[collection])
22
+ return;
23
+ const duplicatedIndex = Object.keys(uniqueIndexes[collection]).find(index => {
24
+ const properties = uniqueIndexes[collection][index];
25
+ const recordComparison = Object.values(coll).find((d) => {
26
+ const valueComparison = properties.every(p => {
27
+ return (0, ramda_1.path)(p.split('.'), d) === (0, ramda_1.path)(p.split('.'), data);
28
+ });
29
+ return valueComparison;
30
+ });
31
+ return recordComparison;
32
+ });
33
+ return duplicatedIndex && {
34
+ index: duplicatedIndex,
35
+ properties: uniqueIndexes[collection][duplicatedIndex]
36
+ };
37
+ };
38
+ const readById = async (id) => {
39
+ return coll[id] || null;
40
+ };
41
+ const filterData = (results, filter) => {
42
+ const shouldFilter = (row, filter) => filter.every(f => {
43
+ if (f.AND) {
44
+ return f.AND.every(andFilters => shouldFilter(row, [andFilters]));
45
+ }
46
+ if (f.OR) {
47
+ return f.OR.some(orFilters => shouldFilter(row, [orFilters]));
48
+ }
49
+ return pv3_types_1.filterOpMap[f.op]((0, ramda_1.path)([f.field], row), f.value);
50
+ });
51
+ return results.filter(row => shouldFilter(row, filter));
52
+ };
53
+ const hashId = (id) => {
54
+ let intId = Number(id);
55
+ if (!isNaN(intId))
56
+ return intId;
57
+ const factor = 2;
58
+ let hash = 0;
59
+ for (let i = 0; i < id.length; i++) {
60
+ hash = hash * factor + id.charCodeAt(i);
61
+ }
62
+ return Math.abs(hash);
63
+ };
64
+ const query = async (queryParams) => {
65
+ const { limit, filter, sort, after, select } = queryParams;
66
+ let result = Object.values(coll);
67
+ if (after) {
68
+ const sortedKeys = Object.keys(coll).map((key) => [key, hashId(key)])
69
+ .sort((a, b) => a[1] - b[1])
70
+ .map((a) => a[0]);
71
+ const index = sortedKeys.indexOf(after.toString());
72
+ result = (0, ramda_1.props)(sortedKeys.slice(index + 1), coll);
73
+ }
74
+ result = !filter ? result : filterData(result, filter);
75
+ result = !sort ? result : sort
76
+ .reduce((result, sort) => {
77
+ return result.sort((a, b) => {
78
+ return sort.direction === 'desc'
79
+ ? (a[sort.field] < b[sort.field] ? 1 : -1)
80
+ : (a[sort.field] >= b[sort.field] ? 1 : -1);
81
+ });
82
+ }, result);
83
+ result = !limit ? result : result.slice(0, limit);
84
+ result = !select ? result : result.map((0, ramda_1.pick)((0, bett3r_utils_1.ensureArray)(select)));
85
+ return result;
86
+ };
87
+ const forEach = async (queryParams, callback) => {
88
+ let shouldStop = false;
89
+ const stop = () => {
90
+ shouldStop = true;
91
+ };
92
+ await query(queryParams)
93
+ .then(async (records) => {
94
+ for (let index = 0; index < records.length; index++) {
95
+ const element = records[index];
96
+ if (shouldStop)
97
+ return;
98
+ await callback(element, stop);
99
+ }
100
+ });
101
+ };
102
+ const upsert = async (id, data) => {
103
+ const _data = (0, ramda_1.clone)(data);
104
+ const changeType = coll[id] ? 'update' : 'insert';
105
+ if (changeType === 'insert') {
106
+ const index = validateIndex(_data);
107
+ if (index)
108
+ return Promise.reject((0, utils_1.createError)((0, database_1.DuplicatedValueInIndex)(), {
109
+ details: index.properties.reduce((details, p) => {
110
+ details[p] = (0, ramda_1.path)(p.split('.'), _data);
111
+ return details;
112
+ }, {})
113
+ }));
114
+ }
115
+ const previous = (0, ramda_1.clone)(coll[id]);
116
+ const formatedData = Object.keys(_data).reduce((response, key) => {
117
+ return (0, ramda_1.assocPath)(key.split('.'), _data[key], response);
118
+ }, (0, ramda_1.clone)(coll[id]) || {});
119
+ coll[id] = { ...formatedData, id };
120
+ changeEmitters[collection]?.emit('change', { changeType, data: coll[id], previous });
121
+ return coll[id];
122
+ };
123
+ const destroyById = async (id) => {
124
+ const previous = coll[id];
125
+ changeEmitters[collection]?.emit('change', { changeType: 'delete', previous });
126
+ delete coll[id];
127
+ };
128
+ const createMany = async (documents) => {
129
+ return documents.map(data => {
130
+ const _data = (0, ramda_1.clone)(data);
131
+ validateIndex(_data);
132
+ coll[_data.id] = _data;
133
+ changeEmitters[collection]?.emit('change', { changeType: 'insert', data: _data });
134
+ return _data;
135
+ });
136
+ };
137
+ const updateMany = async (filter, data) => {
138
+ return Object.keys(coll)
139
+ .reduce((response, rowId) => {
140
+ if (filter.every(f => pv3_types_1.filterOpMap[f.op]((0, ramda_1.path)([f.field], coll[rowId]), f.value))) {
141
+ const previous = coll[rowId];
142
+ coll[rowId] = { ...coll[rowId], ...(0, ramda_1.clone)(data) };
143
+ changeEmitters[collection]?.emit('change', { changeType: 'update', previous, data: coll[rowId] });
144
+ response.push(coll[rowId]);
145
+ }
146
+ return response;
147
+ }, []);
148
+ };
149
+ const destroyMany = async (filter) => {
150
+ return Object.keys(coll)
151
+ .reduce((response, rowId) => {
152
+ if (filter.every(f => pv3_types_1.filterOpMap[f.op]((0, ramda_1.path)([f.field], coll[rowId]), f.value))) {
153
+ const previous = coll[rowId];
154
+ delete coll[rowId];
155
+ changeEmitters[collection]?.emit('change', { changeType: 'delete', previous });
156
+ response.push(rowId);
157
+ }
158
+ return response;
159
+ }, [])
160
+ .length;
161
+ };
162
+ const atomicIncrement = async (name, filter, amount = 1) => {
163
+ const fnMap = pv3_types_1.filterOpMap[filter.op];
164
+ const key = Object.keys(coll).find(id => fnMap((0, ramda_1.path)([filter.field], coll[id]), filter.value));
165
+ if (!key) {
166
+ const id = (0, crypto_1.randomUUID)();
167
+ coll[id] = {
168
+ [filter.field]: filter.value,
169
+ [name]: amount
170
+ };
171
+ changeEmitters[collection]?.emit('change', { changeType: 'insert', data: coll[id] });
172
+ return amount;
173
+ }
174
+ else {
175
+ const previous = coll[key];
176
+ coll[key][name] = (coll[key][name] || 0) + amount;
177
+ changeEmitters[collection]?.emit('change', { changeType: 'update', data: coll[key], previous });
178
+ return coll[key][name];
179
+ }
180
+ };
181
+ const ensureIndex = async (properties, options = {}) => {
182
+ if (options.isUnique === true) {
183
+ uniqueIndexes[collection] ||= {};
184
+ uniqueIndexes[collection][properties.join('_')] = properties;
185
+ }
186
+ };
187
+ const destroyIndex = async (properties) => {
188
+ if (uniqueIndexes[collection] && uniqueIndexes[collection][properties.join('_')]) {
189
+ delete uniqueIndexes[collection][properties.join('_')];
190
+ }
191
+ };
192
+ const watch = (changeTypes = ['insert'], onData, onError) => {
193
+ changeEmitters[collection] ||= new bett3r_utils_1.TypedEventEmitter();
194
+ const callback = (change) => {
195
+ if (changeTypes.includes(change.changeType))
196
+ onData(change);
197
+ };
198
+ changeEmitters[collection].on('change', callback);
199
+ return Promise.resolve({
200
+ close: () => changeEmitters[collection].off('change', callback)
201
+ });
202
+ };
203
+ return {
204
+ readById,
205
+ query,
206
+ upsert,
207
+ forEach,
208
+ destroyById,
209
+ createMany,
210
+ updateMany,
211
+ destroyMany,
212
+ atomicIncrement,
213
+ ensureIndex,
214
+ destroyIndex,
215
+ watch
216
+ };
217
+ };
218
+ const initTransaction = (operations) => {
219
+ let backupDb = (0, ramda_1.clone)(_db);
220
+ const commitTransaction = async (docs) => {
221
+ return docs || null;
222
+ };
223
+ const rollbackTransaction = async (error) => {
224
+ _db = backupDb;
225
+ return Promise.reject(error);
226
+ };
227
+ return operations(getCollection)
228
+ .then(commitTransaction)
229
+ .catch(rollbackTransaction);
230
+ };
231
+ return {
232
+ _adapter: () => _db,
233
+ name: 'memoryDb',
234
+ start,
235
+ stop,
236
+ getCollection,
237
+ initTransaction
238
+ };
239
+ };
240
+ exports.MemoryDb = MemoryDb;
241
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/database/memory/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { EndpointsAdapter } from '@bett3r-dev/pv3-types';
2
+ /**
3
+ * Adds the user object to the request context
4
+ * @param customTokenAttributes - Object with key as the path to the attribute in the token and value as the name of the attribute in the user object
5
+ * @returns
6
+ */
7
+ export declare const AddAuthUserToRequest: (customTokenAttributes: Record<string, string>) => EndpointsAdapter;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/endpoints/addAuthUser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAYzF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0BAA4B,OAAO,MAAM,EAAE,MAAM,CAAC,KAAI,gBAqCtF,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddAuthUserToRequest = void 0;
4
+ const ramda_1 = require("ramda");
5
+ const __1 = require("../../..");
6
+ const propMapper = (map, object) => {
7
+ const result = {};
8
+ Object.keys(map).forEach(key => {
9
+ result[map[key]] = (0, ramda_1.path)(key.split('.'), object);
10
+ });
11
+ return result;
12
+ };
13
+ /**
14
+ * Adds the user object to the request context
15
+ * @param customTokenAttributes - Object with key as the path to the attribute in the token and value as the name of the attribute in the user object
16
+ * @returns
17
+ */
18
+ const AddAuthUserToRequest = (customTokenAttributes) => {
19
+ const addUserToContext = async (params) => {
20
+ const token = params.context?.req?.headers?.authorization || params.query?.access_token;
21
+ if (!token)
22
+ return params;
23
+ try {
24
+ const payload = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString());
25
+ if (!params.context)
26
+ params.context = {};
27
+ params.context.token = token.slice(token.lastIndexOf(' ') + 1);
28
+ params.context.user = propMapper({
29
+ 'email': 'email',
30
+ 'realm_access.roles': 'roles',
31
+ 'app_id': 'id',
32
+ ...customTokenAttributes
33
+ }, payload);
34
+ return Promise.resolve(params);
35
+ }
36
+ catch (err) {
37
+ return Promise.reject((0, __1.createError)((0, __1.AuthenticationError)(), { description: 'Invalid Token' }));
38
+ }
39
+ };
40
+ const registerEndpoint = (endpoint) => {
41
+ const originalAction = endpoint.action;
42
+ endpoint.action = (params) => {
43
+ return addUserToContext(params)
44
+ .then(originalAction);
45
+ };
46
+ return endpoint;
47
+ };
48
+ return {
49
+ _adapter: () => { },
50
+ name: 'addAuthUser',
51
+ start: async () => { },
52
+ stop: async () => { },
53
+ registerEndpoint
54
+ };
55
+ };
56
+ exports.AddAuthUserToRequest = AddAuthUserToRequest;
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/endpoints/addAuthUser/index.ts"],"names":[],"mappings":";;;AACA,iCAA6B;AAC7B,gCAA4D;AAE5D,MAAM,UAAU,GAAG,CAAE,GAA2B,EAAE,MAA2B,EAAG,EAAE;IAChF,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE;QAChC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAA,YAAI,EAAE,GAAG,CAAC,KAAK,CAAE,GAAG,CAAE,EAAE,MAAM,CAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACI,MAAM,oBAAoB,GAAG,CAAE,qBAA6C,EAAqB,EAAE;IACxG,MAAM,gBAAgB,GAAG,KAAK,EAAG,MAA4B,EAAkC,EAAE;QAC/F,MAAM,KAAK,GAAW,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,aAAuB,IAAI,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAC1G,IAAK,CAAC,KAAK;YAAG,OAAO,MAAM,CAAC;QAC5B,IAAG;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAE,MAAM,CAAC,IAAI,CAAE,KAAK,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvF,IAAK,CAAC,MAAM,CAAC,OAAO;gBAClB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAE,KAAK,CAAC,WAAW,CAAE,GAAG,CAAE,GAAG,CAAC,CAAE,CAAC;YACnE,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;gBAC/B,OAAO,EAAE,OAAO;gBAChB,oBAAoB,EAAE,OAAO;gBAC7B,QAAQ,EAAE,IAAI;gBACd,GAAG,qBAAqB;aACzB,EAAE,OAAO,CAAE,CAAC;YACb,OAAO,OAAO,CAAC,OAAO,CAAE,MAAM,CAAE,CAAC;SAClC;QAAC,OAAQ,GAAG,EAAG;YACd,OAAO,OAAO,CAAC,MAAM,CAAE,IAAA,eAAW,EAAE,IAAA,uBAAmB,GAAE,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;SAC/F;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAE,QAAkB,EAAG,EAAE;QAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,QAAQ,CAAC,MAAM,GAAG,CAAE,MAA2C,EAAG,EAAE;YAClE,OAAO,gBAAgB,CAAE,MAAM,CAAE;iBAC9B,IAAI,CAAE,cAAc,CAAE,CAAC;QAC5B,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,KAAK,IAAE,EAAE,GAAC,CAAC;QAClB,IAAI,EAAE,KAAK,IAAE,EAAE,GAAC,CAAC;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,oBAAoB,wBAqC/B"}
@@ -0,0 +1,4 @@
1
+ import { BaseSchema } from '@bett3r-dev/jsonschema-definer';
2
+ import { Endpoint, EndpointsAdapter } from '@bett3r-dev/pv3-types';
3
+ export declare const EndpointValidation: (validateSchema: <T>(schema: BaseSchema<T, true, Readonly<import("@bett3r-dev/jsonschema-definer/dist/base").BaseJsonSchema>>) => (value: T) => T, onError?: (err: any, endpoint: Endpoint) => void) => EndpointsAdapter;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/endpoints/endpointValidation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAwB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzF,eAAO,MAAM,kBAAkB,qKAAsF,GAAG,YAAY,QAAQ,KAAM,IAAI,KAAc,gBAqBnK,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EndpointValidation = void 0;
4
+ const validation_1 = require("../../../libraries/validation");
5
+ const EndpointValidation = (validateSchema, onError = () => { }) => {
6
+ const registerEndpoint = (endpoint) => {
7
+ if (endpoint.shouldValidate === false)
8
+ return endpoint;
9
+ const originalAction = endpoint.action;
10
+ endpoint.action = (params) => (0, validation_1.validateEndpoint)(validateSchema, endpoint.schemas)(params)
11
+ .catch(e => {
12
+ onError(e, endpoint);
13
+ return Promise.reject(e);
14
+ })
15
+ .then(originalAction);
16
+ return endpoint;
17
+ };
18
+ return {
19
+ _adapter: () => { },
20
+ name: 'endpointValidation',
21
+ start: async () => { },
22
+ stop: async () => { },
23
+ registerEndpoint
24
+ };
25
+ };
26
+ exports.EndpointValidation = EndpointValidation;
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/endpoints/endpointValidation/index.ts"],"names":[],"mappings":";;;AAEA,8DAAiE;AAE1D,MAAM,kBAAkB,GAAG,CAAE,cAAgE,EAAE,UAAmD,GAAG,EAAE,GAAE,CAAC,EAAoB,EAAE;IACrL,MAAM,gBAAgB,GAAG,CAAE,QAAkB,EAAG,EAAE;QAChD,IAAK,QAAQ,CAAC,cAAc,KAAK,KAAK;YAAG,OAAO,QAAQ,CAAC;QACzD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,QAAQ,CAAC,MAAM,GAAG,CAAE,MAA4B,EAAG,EAAE,CACnD,IAAA,6BAAgB,EAAE,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAE,CAAE,MAAM,CAAE;aAC3D,KAAK,CAAE,CAAC,CAAC,EAAE;YACV,OAAO,CAAE,CAAC,EAAE,QAAQ,CAAE,CAAC;YACvB,OAAO,OAAO,CAAC,MAAM,CAAE,CAAC,CAAE,CAAC;QAC7B,CAAC,CAAC;aACD,IAAI,CAAE,cAAc,CAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,KAAK,IAAE,EAAE,GAAC,CAAC;QAClB,IAAI,EAAE,KAAK,IAAE,EAAE,GAAC,CAAC;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,kBAAkB,sBAqB7B"}
@@ -0,0 +1,4 @@
1
+ export * from './addAuthUser';
2
+ export * from './endpointValidation';
3
+ export * from './userSession';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/endpoints/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AAErC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./addAuthUser"), exports);
18
+ __exportStar(require("./endpointValidation"), exports);
19
+ // export * from './localAuthorization';
20
+ __exportStar(require("./userSession"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/endpoints/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,uDAAqC;AACrC,wCAAwC;AACxC,gDAA8B"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/endpoints/localAuthorization/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ // import S from '@bett3r-dev/jsonschema-definer';
2
+ // import { compose, mergeRight } from 'ramda';
3
+ // import { AuthenticationPort, /* EndpointMarkedAsPublicSchema, EndpointRolesUpsertedSchema, RouteManagerEndpointAuth */ } from '../../../ports/authentication';
4
+ // import { DatabasePort } from '../../../ports/database';
5
+ // import { Endpoint, EndpointActionParams, EndpointsAdapter, EndpointsPort } from '../../../ports/endpoints';
6
+ // export type LocalAuthorizationType = EndpointsAdapter & {
7
+ // registerRouteManagementEndpoints: ( endpoints: EndpointsPort ) => void;
8
+ // }
9
+ // /**
10
+ // * Performs a local authorization of the incoming request by validating the JWT and performing RBAC authorization
11
+ // * @param authentication Authentication Port
12
+ // * @returns
13
+ // */
14
+ // export const LocalAuthorization = ( authentication: AuthenticationPort, database: DatabasePort ): LocalAuthorizationType => {
15
+ // const routeManager = authentication.RouteManager( database );
16
+ // const _authorizeRequest = authentication.authorizeRequest( routeManager );
17
+ // const authorizeRequest = async ( params: EndpointActionParams<any, any, any> ) => {
18
+ // await _authorizeRequest( params.context.token!, params.context.req?.method!, params.context.req?.route! );
19
+ // return params;
20
+ // };
21
+ // const registerEndpoint = ( endpoint: Endpoint ) => {
22
+ // const originalAction = endpoint.action;
23
+ // endpoint.action = ( params: EndpointActionParams<any, any, any> ) => {
24
+ // return authorizeRequest( params )
25
+ // .then( originalAction );
26
+ // };
27
+ // return endpoint;
28
+ // };
29
+ // const registerRouteManagementEndpoints = ( endpoints: EndpointsPort ) => {
30
+ // const upsertEndpointAuth = ( patchValue?: Partial<RouteManagerEndpointAuth> ) => ({ body } : {body: {id: string}[]}) => {
31
+ // return Promise.all( body.map( compose(
32
+ // routeManager.upsertRoute,
33
+ // mergeRight( patchValue || {})
34
+ // )));
35
+ // };
36
+ // endpoints.registerEndpoint({
37
+ // module: 'Authorization',
38
+ // name: 'Mark as Public',
39
+ // description: 'Mark an endpoint as public',
40
+ // route: '/authorization/mark-as-public',
41
+ // method: 'POST',
42
+ // schemas: {
43
+ // body: S.array().items( EndpointMarkedAsPublicSchema )
44
+ // },
45
+ // action: upsertEndpointAuth({ isPublic:true })
46
+ // });
47
+ // endpoints.registerEndpoint({
48
+ // module: 'Authorization',
49
+ // name: 'Upsert Roles',
50
+ // description: 'Upsert roles for endpoint',
51
+ // route: '/authorization/upsert-roles',
52
+ // method: 'POST',
53
+ // schemas: {
54
+ // body: S.array().items( EndpointRolesUpsertedSchema )
55
+ // },
56
+ // action: upsertEndpointAuth()
57
+ // });
58
+ // };
59
+ // return {
60
+ // _adapter: () => {},
61
+ // name: 'localAuthorization',
62
+ // registerRouteManagementEndpoints,
63
+ // start: async()=>{},
64
+ // stop: async()=>{},
65
+ // registerEndpoint
66
+ // };
67
+ // };
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/endpoints/localAuthorization/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,+CAA+C;AAC/C,iKAAiK;AACjK,0DAA0D;AAC1D,8GAA8G;AAE9G,4DAA4D;AAC5D,4EAA4E;AAC5E,IAAI;AAEJ,MAAM;AACN,oHAAoH;AACpH,+CAA+C;AAC/C,cAAc;AACd,MAAM;AACN,gIAAgI;AAChI,kEAAkE;AAClE,+EAA+E;AAE/E,wFAAwF;AACxF,iHAAiH;AACjH,qBAAqB;AACrB,OAAO;AAEP,yDAAyD;AACzD,8CAA8C;AAC9C,6EAA6E;AAC7E,0CAA0C;AAC1C,mCAAmC;AACnC,SAAS;AACT,uBAAuB;AACvB,OAAO;AAEP,+EAA+E;AAC/E,gIAAgI;AAChI,+CAA+C;AAC/C,oCAAoC;AACpC,wCAAwC;AACxC,aAAa;AACb,SAAS;AAET,mCAAmC;AACnC,iCAAiC;AACjC,gCAAgC;AAChC,mDAAmD;AACnD,gDAAgD;AAChD,wBAAwB;AACxB,mBAAmB;AACnB,gEAAgE;AAChE,WAAW;AACX,sDAAsD;AACtD,UAAU;AAEV,mCAAmC;AACnC,iCAAiC;AACjC,8BAA8B;AAC9B,kDAAkD;AAClD,8CAA8C;AAC9C,wBAAwB;AACxB,mBAAmB;AACnB,+DAA+D;AAC/D,WAAW;AACX,qCAAqC;AACrC,UAAU;AACV,OAAO;AAEP,aAAa;AACb,0BAA0B;AAC1B,kCAAkC;AAClC,wCAAwC;AACxC,0BAA0B;AAC1B,yBAAyB;AACzB,uBAAuB;AACvB,OAAO;AACP,KAAK"}
@@ -0,0 +1,3 @@
1
+ import { ConfigurationPort, EndpointsAdapter, LoggerPort } from '@bett3r-dev/pv3-types';
2
+ export declare const TcpConsumer: (configuration: ConfigurationPort, loggerPort: LoggerPort) => EndpointsAdapter;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/endpoints/tcpConsumer/index.ts"],"names":[],"mappings":"AACA,OAAO,EACa,iBAAiB,EAEnC,gBAAgB,EAAE,UAAU,EAE7B,MAAM,uBAAuB,CAAC;AAS/B,eAAO,MAAM,WAAW,kBAAoB,iBAAiB,cAAc,UAAU,KAAI,gBAqDxF,CAAC"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TcpConsumer = void 0;
7
+ const jsonschema_definer_1 = __importDefault(require("@bett3r-dev/jsonschema-definer"));
8
+ const tcp_1 = require("../../../libraries/tcp");
9
+ const TcpConsumerConfigSchema = jsonschema_definer_1.default.shape({
10
+ port: jsonschema_definer_1.default.number().optional().default(9520),
11
+ });
12
+ const TcpConsumer = (configuration, loggerPort) => {
13
+ const { config } = configuration.getModuleConfig('tcpConsumer', TcpConsumerConfigSchema.optional());
14
+ const logger = loggerPort.createLoggerInstance('TcpConsumer');
15
+ const tcp = (0, tcp_1.Tcp)(loggerPort);
16
+ let server;
17
+ const endpointMap = new Map();
18
+ const registerEndpoint = (endpoint) => {
19
+ const { route, module, action } = endpoint;
20
+ logger.log('Registering TCP Consumer endpoint:', module, route);
21
+ endpointMap.set(route, action);
22
+ return endpoint;
23
+ };
24
+ const start = async (port = config.port || 9520) => {
25
+ tcp.createTCPServer(port).then(_server => {
26
+ server = _server;
27
+ let broker;
28
+ logger.info('TCP server listening on port', port);
29
+ server.connectedStream.map(({ socket }) => broker = socket);
30
+ server.dataStream.map(({ message }) => {
31
+ const { endpoint, event } = JSON.parse(message);
32
+ const action = endpointMap.get(endpoint);
33
+ if (!action)
34
+ logger.error('No endpoint found for', endpoint);
35
+ action({
36
+ body: event,
37
+ params: {},
38
+ query: {},
39
+ // TODO: Contemplar el contexto que viene del event?
40
+ context: {},
41
+ })
42
+ .then(() => {
43
+ broker.write(JSON.stringify({ id: event.id, status: 200 }));
44
+ })
45
+ .catch((e) => {
46
+ broker.write(JSON.stringify({ id: event.id, status: e.status, error: e.message }));
47
+ });
48
+ });
49
+ });
50
+ };
51
+ const stop = () => new Promise((resolve, reject) => {
52
+ return server.close();
53
+ });
54
+ return {
55
+ name: 'express',
56
+ adapterType: 'httpHandler',
57
+ _adapter: () => { },
58
+ registerEndpoint,
59
+ start,
60
+ stop,
61
+ };
62
+ };
63
+ exports.TcpConsumer = TcpConsumer;
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/endpoints/tcpConsumer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { CachePort, EndpointsAdapter, LoggerPort } from '@bett3r-dev/pv3-types';
2
+ /**
3
+ * Adds the user session object to the request context
4
+ * @param customTokenAttributes - Object with key as the path to the attribute in the token and value as the name of the attribute in the user object
5
+ * @returns
6
+ */
7
+ export declare const UserSession: (logger: LoggerPort, cache: CachePort, keyFormatter?: (user: Record<string, any>) => string) => EndpointsAdapter;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/endpoints/userSession/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkC,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEhH;;;;GAIG;AACH,eAAO,MAAM,WAAW,WAAa,UAAU,SAAS,SAAS,wBAAwB,OAAO,MAAM,EAAE,GAAG,CAAC,KAAM,MAAM,KAA0B,gBAgCjJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserSession = void 0;
4
+ /**
5
+ * Adds the user session object to the request context
6
+ * @param customTokenAttributes - Object with key as the path to the attribute in the token and value as the name of the attribute in the user object
7
+ * @returns
8
+ */
9
+ const UserSession = (logger, cache, keyFormatter = (user) => user.id) => {
10
+ const log = logger.createLoggerInstance('UserSessionEndpointsAdapter');
11
+ const addUserSessionToContext = async (params) => {
12
+ if (!params.context?.user)
13
+ return params;
14
+ try {
15
+ const key = keyFormatter(params.context.user);
16
+ const session = await cache.get(key);
17
+ if (!params.context)
18
+ params.context = {};
19
+ params.context.session = session;
20
+ }
21
+ catch (err) {
22
+ log.error(err);
23
+ }
24
+ return Promise.resolve(params);
25
+ };
26
+ const registerEndpoint = (endpoint) => {
27
+ const originalAction = endpoint.action;
28
+ endpoint.action = (params) => {
29
+ return addUserSessionToContext(params)
30
+ .then(originalAction);
31
+ };
32
+ return endpoint;
33
+ };
34
+ return {
35
+ _adapter: () => { },
36
+ name: 'addUserSessionToContext',
37
+ start: async () => { },
38
+ stop: async () => { },
39
+ registerEndpoint
40
+ };
41
+ };
42
+ exports.UserSession = UserSession;
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/endpoints/userSession/index.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAAE,MAAkB,EAAE,KAAgB,EAAE,eAAwD,CAAE,IAAI,EAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAqB,EAAE;IACnK,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAE,6BAA6B,CAAE,CAAC;IACzE,MAAM,uBAAuB,GAAG,KAAK,EAAG,MAA4B,EAAkC,EAAE;QACtG,IAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI;YAAG,OAAO,MAAM,CAAC;QAC3C,IAAG;YACD,MAAM,GAAG,GAAG,YAAY,CAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC;YACvC,IAAK,CAAC,MAAM,CAAC,OAAO;gBAClB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;SAClC;QAAC,OAAQ,GAAG,EAAG;YACd,GAAG,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC;SAClB;QACD,OAAO,OAAO,CAAC,OAAO,CAAE,MAAM,CAAE,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAE,QAAkB,EAAG,EAAE;QAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,QAAQ,CAAC,MAAM,GAAG,CAAE,MAA2C,EAAG,EAAE;YAClE,OAAO,uBAAuB,CAAE,MAAM,CAAE;iBACrC,IAAI,CAAE,cAAc,CAAE,CAAC;QAC5B,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,KAAK,IAAE,EAAE,GAAC,CAAC;QAClB,IAAI,EAAE,KAAK,IAAE,EAAE,GAAC,CAAC;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,WAAW,eAgCtB"}