@reventlessdev/reventless-core 3.0.0-alpha.134

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 (502) hide show
  1. package/CHANGELOG.md +1355 -0
  2. package/LICENSE +202 -0
  3. package/README.md +173 -0
  4. package/__mocks__/emptyModule.js +2 -0
  5. package/jest.setup.cjs +5 -0
  6. package/package.json +73 -0
  7. package/rescript.json +41 -0
  8. package/scripts/deploy.sh +6 -0
  9. package/scripts/post-deploy.sh +5 -0
  10. package/scripts/pre-deploy.sh +18 -0
  11. package/scripts/pulumi-up.sh +30 -0
  12. package/src/Behavior.res +18 -0
  13. package/src/Behavior.res.mjs +2 -0
  14. package/src/ComponentType.res +125 -0
  15. package/src/ComponentType.res.mjs +199 -0
  16. package/src/Env.res +5 -0
  17. package/src/Env.res.mjs +2 -0
  18. package/src/Mapper.res +36 -0
  19. package/src/Mapper.res.mjs +18 -0
  20. package/src/Mapper1toN.res +107 -0
  21. package/src/Mapper1toN.res.mjs +2 -0
  22. package/src/MapperNto1.res +78 -0
  23. package/src/MapperNto1.res.mjs +35 -0
  24. package/src/Message.res +353 -0
  25. package/src/Message.res.mjs +418 -0
  26. package/src/PluginRuntimeOperations.res +15 -0
  27. package/src/PluginRuntimeOperations.res.mjs +2 -0
  28. package/src/Projection.res +447 -0
  29. package/src/Projection.res.mjs +712 -0
  30. package/src/ProjectionMapper.res +44 -0
  31. package/src/ProjectionMapper.res.mjs +51 -0
  32. package/src/RequestContext.res +42 -0
  33. package/src/RequestContext.res.mjs +39 -0
  34. package/src/adapter/Adapter.res +178 -0
  35. package/src/adapter/Adapter.res.mjs +201 -0
  36. package/src/adapter/AdapterDeploytime.res +56 -0
  37. package/src/adapter/AdapterDeploytime.res.mjs +42 -0
  38. package/src/adapter/Auth/Auth_Adapter.res +42 -0
  39. package/src/adapter/Auth/Auth_Adapter.res.mjs +2 -0
  40. package/src/adapter/Runtime/AggregateRuntime_Builder.res +22 -0
  41. package/src/adapter/Runtime/AggregateRuntime_Builder.res.mjs +2 -0
  42. package/src/adapter/Runtime/AggregateRuntime_Builder_Common.res +259 -0
  43. package/src/adapter/Runtime/AggregateRuntime_Builder_Common.res.mjs +190 -0
  44. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res +92 -0
  45. package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res.mjs +59 -0
  46. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res +52 -0
  47. package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res.mjs +49 -0
  48. package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res +64 -0
  49. package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res.mjs +59 -0
  50. package/src/adapter/Runtime/EventCollectorRuntime_Builder.res +11 -0
  51. package/src/adapter/Runtime/EventCollectorRuntime_Builder.res.mjs +2 -0
  52. package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res +46 -0
  53. package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res.mjs +40 -0
  54. package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res +204 -0
  55. package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs +150 -0
  56. package/src/adapter/Runtime/ExtensionPointRuntime_Builder.res +18 -0
  57. package/src/adapter/Runtime/ExtensionPointRuntime_Builder.res.mjs +2 -0
  58. package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res +36 -0
  59. package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res.mjs +28 -0
  60. package/src/adapter/Runtime/PluginRuntime_Builder.res +23 -0
  61. package/src/adapter/Runtime/PluginRuntime_Builder.res.mjs +2 -0
  62. package/src/adapter/Runtime/PluginRuntime_Builder_Micro.res +97 -0
  63. package/src/adapter/Runtime/PluginRuntime_Builder_Micro.res.mjs +62 -0
  64. package/src/adapter/Runtime/PluginRuntime_Builder_Single.res +89 -0
  65. package/src/adapter/Runtime/PluginRuntime_Builder_Single.res.mjs +62 -0
  66. package/src/adapter/Runtime/Runtime.res +106 -0
  67. package/src/adapter/Runtime/Runtime.res.mjs +22 -0
  68. package/src/adapter/Runtime/TaskRuntime_Builder.res +32 -0
  69. package/src/adapter/Runtime/TaskRuntime_Builder.res.mjs +2 -0
  70. package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res +42 -0
  71. package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res.mjs +29 -0
  72. package/src/admin/AdminApi.res +88 -0
  73. package/src/admin/AdminApi.res.mjs +89 -0
  74. package/src/admin/Admin_Callback.res +27 -0
  75. package/src/admin/Admin_Callback.res.mjs +20 -0
  76. package/src/admin/Platform_Admin.res +402 -0
  77. package/src/admin/Platform_Admin.res.mjs +250 -0
  78. package/src/admin/Platform_Admin_Structure.res +125 -0
  79. package/src/admin/Platform_Admin_Structure.res.mjs +182 -0
  80. package/src/admin/Platform_ComponentDefinitionsApi.res +160 -0
  81. package/src/admin/Platform_ComponentDefinitionsApi.res.mjs +299 -0
  82. package/src/admin/Platform_UIFragmentsApi.res +55 -0
  83. package/src/admin/Platform_UIFragmentsApi.res.mjs +124 -0
  84. package/src/admin/UIFragmentRegistryProjection.res +43 -0
  85. package/src/admin/UIFragmentRegistryProjection.res.mjs +81 -0
  86. package/src/admin/UIFragmentRegistryReadModelSpec.res +13 -0
  87. package/src/admin/UIFragmentRegistryReadModelSpec.res.mjs +40 -0
  88. package/src/components/Aggregate/Aggregate.res +96 -0
  89. package/src/components/Aggregate/Aggregate.res.mjs +82 -0
  90. package/src/components/Aggregate/Aggregate_Builder.res +175 -0
  91. package/src/components/Aggregate/Aggregate_Builder.res.mjs +119 -0
  92. package/src/components/Aggregate/Aggregate_Callback.res +273 -0
  93. package/src/components/Aggregate/Aggregate_Callback.res.mjs +208 -0
  94. package/src/components/Api/ApiAllowedStatesHelpers.res +19 -0
  95. package/src/components/Api/ApiAllowedStatesHelpers.res.mjs +16 -0
  96. package/src/components/Api/ApiNoApiHelpers.res +13 -0
  97. package/src/components/Api/ApiNoApiHelpers.res.mjs +29 -0
  98. package/src/components/Api/Api_Builder.res +40 -0
  99. package/src/components/Api/Api_Builder.res.mjs +33 -0
  100. package/src/components/Api/Api_Naming.res +92 -0
  101. package/src/components/Api/Api_Naming.res.mjs +103 -0
  102. package/src/components/Api/Api_Operations.res +13 -0
  103. package/src/components/Api/Api_Operations.res.mjs +12 -0
  104. package/src/components/Api/GraphQL_FragmentGenerator.res +612 -0
  105. package/src/components/Api/GraphQL_FragmentGenerator.res.mjs +503 -0
  106. package/src/components/Api/GraphQL_SchemaInspector.res +156 -0
  107. package/src/components/Api/GraphQL_SchemaInspector.res.mjs +123 -0
  108. package/src/components/Api/GraphQL_Stitcher.res +271 -0
  109. package/src/components/Api/GraphQL_Stitcher.res.mjs +229 -0
  110. package/src/components/Api/MCP_SchemaGenerator.res +185 -0
  111. package/src/components/Api/MCP_SchemaGenerator.res.mjs +146 -0
  112. package/src/components/Api/SchemaType.res +126 -0
  113. package/src/components/Api/SchemaType.res.mjs +143 -0
  114. package/src/components/Api/SuryToJsonSchema.res +142 -0
  115. package/src/components/Api/SuryToJsonSchema.res.mjs +210 -0
  116. package/src/components/AutomationSlice/AutomationSlice.res +39 -0
  117. package/src/components/AutomationSlice/AutomationSlice.res.mjs +24 -0
  118. package/src/components/AutomationSlice/AutomationSlice_Builder.res +207 -0
  119. package/src/components/AutomationSlice/AutomationSlice_Builder.res.mjs +123 -0
  120. package/src/components/AutomationSlice/AutomationSlice_Callback.res +212 -0
  121. package/src/components/AutomationSlice/AutomationSlice_Callback.res.mjs +189 -0
  122. package/src/components/Builder_Helpers.res +196 -0
  123. package/src/components/Builder_Helpers.res.mjs +142 -0
  124. package/src/components/Cloner.res +84 -0
  125. package/src/components/Cloner.res.mjs +88 -0
  126. package/src/components/CommandGenerator/CommandGenerator.res +54 -0
  127. package/src/components/CommandGenerator/CommandGenerator.res.mjs +15 -0
  128. package/src/components/CommandGenerator/CommandGenerator_Adapter.res +22 -0
  129. package/src/components/CommandGenerator/CommandGenerator_Adapter.res.mjs +2 -0
  130. package/src/components/CommandGenerator/CommandGenerator_Builder.res +70 -0
  131. package/src/components/CommandGenerator/CommandGenerator_Builder.res.mjs +68 -0
  132. package/src/components/CommandGenerator/CommandGenerator_Callback.res +191 -0
  133. package/src/components/CommandGenerator/CommandGenerator_Callback.res.mjs +161 -0
  134. package/src/components/CommandTopic/CommandTopic.res +79 -0
  135. package/src/components/CommandTopic/CommandTopic.res.mjs +68 -0
  136. package/src/components/CommandTopic/CommandTopic_Adapter.res +53 -0
  137. package/src/components/CommandTopic/CommandTopic_Adapter.res.mjs +2 -0
  138. package/src/components/CommandTopic/CommandTopic_Builder.res +146 -0
  139. package/src/components/CommandTopic/CommandTopic_Builder.res.mjs +127 -0
  140. package/src/components/CommandTopic/CommandTopic_Callback.res +38 -0
  141. package/src/components/CommandTopic/CommandTopic_Callback.res.mjs +49 -0
  142. package/src/components/CommandTopic/CommandTopic_Helpers.res +176 -0
  143. package/src/components/CommandTopic/CommandTopic_Helpers.res.mjs +195 -0
  144. package/src/components/CommandTopic/CommandTopic_Operations.res +40 -0
  145. package/src/components/CommandTopic/CommandTopic_Operations.res.mjs +49 -0
  146. package/src/components/Component.res +1 -0
  147. package/src/components/Component.res.mjs +34 -0
  148. package/src/components/Component.resi +1 -0
  149. package/src/components/Counter/Counter.res +47 -0
  150. package/src/components/Counter/Counter.res.mjs +55 -0
  151. package/src/components/Counter/Counter_Adapter.res +18 -0
  152. package/src/components/Counter/Counter_Adapter.res.mjs +2 -0
  153. package/src/components/Counter/Counter_Builder.res +142 -0
  154. package/src/components/Counter/Counter_Builder.res.mjs +112 -0
  155. package/src/components/Counter/Counter_Callback.res +94 -0
  156. package/src/components/Counter/Counter_Callback.res.mjs +70 -0
  157. package/src/components/Counter/Counter_Operations.res +70 -0
  158. package/src/components/Counter/Counter_Operations.res.mjs +91 -0
  159. package/src/components/Dcb/Dcb_Builder.res +971 -0
  160. package/src/components/Dcb/Dcb_Builder.res.mjs +572 -0
  161. package/src/components/DcbEventLog/DcbEventLog.res +43 -0
  162. package/src/components/DcbEventLog/DcbEventLog.res.mjs +24 -0
  163. package/src/components/DcbEventLog/DcbEventLog_Adapter.res +57 -0
  164. package/src/components/DcbEventLog/DcbEventLog_Adapter.res.mjs +2 -0
  165. package/src/components/DcbEventLog/DcbEventLog_Builder.res +72 -0
  166. package/src/components/DcbEventLog/DcbEventLog_Builder.res.mjs +67 -0
  167. package/src/components/DcbEventLog/DcbEventLog_Operations.res +160 -0
  168. package/src/components/DcbEventLog/DcbEventLog_Operations.res.mjs +121 -0
  169. package/src/components/EventCollector/EventCollector.res +34 -0
  170. package/src/components/EventCollector/EventCollector.res.mjs +9 -0
  171. package/src/components/EventCollector/EventCollector_Adapter.res +45 -0
  172. package/src/components/EventCollector/EventCollector_Adapter.res.mjs +2 -0
  173. package/src/components/EventCollector/EventCollector_Builder.res +91 -0
  174. package/src/components/EventCollector/EventCollector_Builder.res.mjs +64 -0
  175. package/src/components/EventLog/EventLog.res +27 -0
  176. package/src/components/EventLog/EventLog.res.mjs +13 -0
  177. package/src/components/EventLog/EventLog_Adapter.res +15 -0
  178. package/src/components/EventLog/EventLog_Adapter.res.mjs +2 -0
  179. package/src/components/EventLog/EventLog_Builder.res +65 -0
  180. package/src/components/EventLog/EventLog_Builder.res.mjs +57 -0
  181. package/src/components/EventLog/EventLog_Operations.res +209 -0
  182. package/src/components/EventLog/EventLog_Operations.res.mjs +202 -0
  183. package/src/components/EventLog/EventPublish_Callback.res +29 -0
  184. package/src/components/EventLog/EventPublish_Callback.res.mjs +32 -0
  185. package/src/components/EventMapper/EventMapper.res +72 -0
  186. package/src/components/EventMapper/EventMapper.res.mjs +54 -0
  187. package/src/components/EventMapper/EventMapper_Builder.res +128 -0
  188. package/src/components/EventMapper/EventMapper_Builder.res.mjs +81 -0
  189. package/src/components/EventMapper/EventMapper_Callback.res +323 -0
  190. package/src/components/EventMapper/EventMapper_Callback.res.mjs +231 -0
  191. package/src/components/EventTopic/EventTopic.res +69 -0
  192. package/src/components/EventTopic/EventTopic.res.mjs +50 -0
  193. package/src/components/EventTopic/EventTopic_Adapter.res +15 -0
  194. package/src/components/EventTopic/EventTopic_Adapter.res.mjs +2 -0
  195. package/src/components/EventTopic/EventTopic_Builder.res +53 -0
  196. package/src/components/EventTopic/EventTopic_Builder.res.mjs +46 -0
  197. package/src/components/EventTopic/EventTopic_Operations.res +37 -0
  198. package/src/components/EventTopic/EventTopic_Operations.res.mjs +39 -0
  199. package/src/components/Extension/Extension.res +32 -0
  200. package/src/components/Extension/Extension.res.mjs +9 -0
  201. package/src/components/Extension/Extension_Builder.res +82 -0
  202. package/src/components/Extension/Extension_Builder.res.mjs +57 -0
  203. package/src/components/Extension/Extension_Operations.res +203 -0
  204. package/src/components/Extension/Extension_Operations.res.mjs +154 -0
  205. package/src/components/ExtensionPoint/ExtensionPoint.res +49 -0
  206. package/src/components/ExtensionPoint/ExtensionPoint.res.mjs +25 -0
  207. package/src/components/ExtensionPoint/ExtensionPoint_Builder.res +163 -0
  208. package/src/components/ExtensionPoint/ExtensionPoint_Builder.res.mjs +113 -0
  209. package/src/components/ExtensionPoint/ExtensionPoint_Callback.res +110 -0
  210. package/src/components/ExtensionPoint/ExtensionPoint_Callback.res.mjs +76 -0
  211. package/src/components/ExtensionPoint/ExtensionPoint_Operations.res +146 -0
  212. package/src/components/ExtensionPoint/ExtensionPoint_Operations.res.mjs +122 -0
  213. package/src/components/Heartbeat/Heartbeat.res +25 -0
  214. package/src/components/Heartbeat/Heartbeat.res.mjs +9 -0
  215. package/src/components/Heartbeat/Heartbeat_Adapter.res +14 -0
  216. package/src/components/Heartbeat/Heartbeat_Adapter.res.mjs +2 -0
  217. package/src/components/Heartbeat/Heartbeat_Builder.res +43 -0
  218. package/src/components/Heartbeat/Heartbeat_Builder.res.mjs +47 -0
  219. package/src/components/Heartbeat/Heartbeat_Callback.res +32 -0
  220. package/src/components/Heartbeat/Heartbeat_Callback.res.mjs +40 -0
  221. package/src/components/InboundTranslationSlice/InboundTranslationSlice.res +34 -0
  222. package/src/components/InboundTranslationSlice/InboundTranslationSlice.res.mjs +24 -0
  223. package/src/components/InboundTranslationSlice/InboundTranslationSlice_Builder.res +98 -0
  224. package/src/components/InboundTranslationSlice/InboundTranslationSlice_Builder.res.mjs +87 -0
  225. package/src/components/InboundTranslationSlice/InboundTranslationSlice_Callback.res +191 -0
  226. package/src/components/InboundTranslationSlice/InboundTranslationSlice_Callback.res.mjs +175 -0
  227. package/src/components/OutboundTranslationSlice/OutboundTranslationSlice.res +35 -0
  228. package/src/components/OutboundTranslationSlice/OutboundTranslationSlice.res.mjs +24 -0
  229. package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Builder.res +181 -0
  230. package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Builder.res.mjs +137 -0
  231. package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Callback.res +173 -0
  232. package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Callback.res.mjs +173 -0
  233. package/src/components/QueryDb/QueryDb.res +74 -0
  234. package/src/components/QueryDb/QueryDb.res.mjs +37 -0
  235. package/src/components/QueryDb/QueryDb_Adapter.res +78 -0
  236. package/src/components/QueryDb/QueryDb_Adapter.res.mjs +17 -0
  237. package/src/components/QueryDb/QueryDb_Builder.res +76 -0
  238. package/src/components/QueryDb/QueryDb_Builder.res.mjs +53 -0
  239. package/src/components/QueryDb/QueryDb_Callback.res +18 -0
  240. package/src/components/QueryDb/QueryDb_Callback.res.mjs +21 -0
  241. package/src/components/QueryDb/QueryDb_Operations.res +116 -0
  242. package/src/components/QueryDb/QueryDb_Operations.res.mjs +165 -0
  243. package/src/components/ReadModel/ReadModel.res +42 -0
  244. package/src/components/ReadModel/ReadModel.res.mjs +27 -0
  245. package/src/components/ReadModel/ReadModel_Builder.res +155 -0
  246. package/src/components/ReadModel/ReadModel_Builder.res.mjs +101 -0
  247. package/src/components/ReadModel/ReadModel_Callback.res +48 -0
  248. package/src/components/ReadModel/ReadModel_Callback.res.mjs +48 -0
  249. package/src/components/Scheduler/Scheduler.res +13 -0
  250. package/src/components/Scheduler/Scheduler.res.mjs +9 -0
  251. package/src/components/Scheduler/Scheduler_Adapter.res +13 -0
  252. package/src/components/Scheduler/Scheduler_Adapter.res.mjs +2 -0
  253. package/src/components/Scheduler/Scheduler_Builder.res +19 -0
  254. package/src/components/Scheduler/Scheduler_Builder.res.mjs +29 -0
  255. package/src/components/SideEffectHandler/SideEffectHandler.res +30 -0
  256. package/src/components/SideEffectHandler/SideEffectHandler.res.mjs +12 -0
  257. package/src/components/SideEffectHandler/SideEffectHandler_Builder.res +117 -0
  258. package/src/components/SideEffectHandler/SideEffectHandler_Builder.res.mjs +64 -0
  259. package/src/components/SideEffectHandler/SideEffectHandler_Callback.res +116 -0
  260. package/src/components/SideEffectHandler/SideEffectHandler_Callback.res.mjs +95 -0
  261. package/src/components/StateChangeSlice/StateChangeSlice.res +38 -0
  262. package/src/components/StateChangeSlice/StateChangeSlice.res.mjs +17 -0
  263. package/src/components/StateChangeSlice/StateChangeSlice_Builder.res +91 -0
  264. package/src/components/StateChangeSlice/StateChangeSlice_Builder.res.mjs +81 -0
  265. package/src/components/StateChangeSlice/StateChangeSlice_Callback.res +412 -0
  266. package/src/components/StateChangeSlice/StateChangeSlice_Callback.res.mjs +299 -0
  267. package/src/components/StateTopic.res +91 -0
  268. package/src/components/StateTopic.res.mjs +41 -0
  269. package/src/components/StateViewSlice/StateViewSlice.res +33 -0
  270. package/src/components/StateViewSlice/StateViewSlice.res.mjs +24 -0
  271. package/src/components/StateViewSlice/StateViewSlice_Builder.res +176 -0
  272. package/src/components/StateViewSlice/StateViewSlice_Builder.res.mjs +134 -0
  273. package/src/components/StateViewSlice/StateViewSlice_Callback.res +64 -0
  274. package/src/components/StateViewSlice/StateViewSlice_Callback.res.mjs +56 -0
  275. package/src/components/Task/Task.res +81 -0
  276. package/src/components/Task/Task.res.mjs +51 -0
  277. package/src/components/Task/Task_Adapter.res +31 -0
  278. package/src/components/Task/Task_Adapter.res.mjs +2 -0
  279. package/src/components/Task/Task_Builder.res +223 -0
  280. package/src/components/Task/Task_Builder.res.mjs +115 -0
  281. package/src/plugin/api/PluginBaseFragment.res +104 -0
  282. package/src/plugin/api/PluginBaseFragment.res.mjs +64 -0
  283. package/src/plugin/component/Plugin.res +100 -0
  284. package/src/plugin/component/Plugin.res.mjs +61 -0
  285. package/src/plugin/component/Plugin_Builder.res +1017 -0
  286. package/src/plugin/component/Plugin_Builder.res.mjs +608 -0
  287. package/src/plugin/component/Plugin_BuiltHook.res +141 -0
  288. package/src/plugin/component/Plugin_BuiltHook.res.mjs +39 -0
  289. package/src/plugin/component/Plugin_Callback.res +98 -0
  290. package/src/plugin/component/Plugin_Callback.res.mjs +55 -0
  291. package/src/plugin/component/Plugin_Helpers.res +1730 -0
  292. package/src/plugin/component/Plugin_Helpers.res.mjs +1010 -0
  293. package/src/plugin/component/Plugin_ResolverError.res +27 -0
  294. package/src/plugin/component/Plugin_ResolverError.res.mjs +21 -0
  295. package/src/plugin/component/Plugin_Structure.res +570 -0
  296. package/src/plugin/component/Plugin_Structure.res.mjs +458 -0
  297. package/src/plugin/component/Plugin_SubscriptionSchema.res +103 -0
  298. package/src/plugin/component/Plugin_SubscriptionSchema.res.mjs +71 -0
  299. package/src/plugin/component/SchemaWalker.res +164 -0
  300. package/src/plugin/component/SchemaWalker.res.mjs +183 -0
  301. package/src/plugin/connect/PluginConnectExtension_Builder.res +14 -0
  302. package/src/plugin/connect/PluginConnectExtension_Builder.res.mjs +36 -0
  303. package/src/plugin/connect/PluginConnectExtension_Mapping.res +76 -0
  304. package/src/plugin/connect/PluginConnectExtension_Mapping.res.mjs +89 -0
  305. package/src/plugin/connect/PluginExtensionPoint_Builder.res +39 -0
  306. package/src/plugin/connect/PluginExtensionPoint_Builder.res.mjs +33 -0
  307. package/src/plugin/connect/PluginExtensionPoint_Plugin.res +231 -0
  308. package/src/plugin/connect/PluginExtensionPoint_Plugin.res.mjs +353 -0
  309. package/src/plugin/lifecycle/PluginBehavior.res +250 -0
  310. package/src/plugin/lifecycle/PluginBehavior.res.mjs +391 -0
  311. package/src/plugin/lifecycle/PluginSpec.res +84 -0
  312. package/src/plugin/lifecycle/PluginSpec.res.mjs +148 -0
  313. package/src/plugin/lifecycle/PluginsProjection.res +154 -0
  314. package/src/plugin/lifecycle/PluginsProjection.res.mjs +230 -0
  315. package/src/plugin/lifecycle/PluginsReadModelSpec.res +66 -0
  316. package/src/plugin/lifecycle/PluginsReadModelSpec.res.mjs +58 -0
  317. package/src/util/AWS.res +7 -0
  318. package/src/util/AWS.res.mjs +20 -0
  319. package/src/util/CSV.res +27 -0
  320. package/src/util/CSV.res.mjs +56 -0
  321. package/src/util/CommandPublisher.res +133 -0
  322. package/src/util/CommandPublisher.res.mjs +161 -0
  323. package/src/util/CsvStream.res +39 -0
  324. package/src/util/CsvStream.res.mjs +42 -0
  325. package/src/util/EffectLogger.res +178 -0
  326. package/src/util/EffectLogger.res.mjs +171 -0
  327. package/src/util/FTP.res +69 -0
  328. package/src/util/FTP.res.mjs +101 -0
  329. package/src/util/FTPHandler.res +142 -0
  330. package/src/util/FTPHandler.res.mjs +136 -0
  331. package/src/util/Hash.res +1 -0
  332. package/src/util/Hash.res.mjs +10 -0
  333. package/src/util/Interstack.res +74 -0
  334. package/src/util/Interstack.res.mjs +126 -0
  335. package/src/util/Interstack.resi +25 -0
  336. package/src/util/LogFormat.res +222 -0
  337. package/src/util/LogFormat.res.mjs +257 -0
  338. package/src/util/Logger.res +196 -0
  339. package/src/util/Logger.res.mjs +238 -0
  340. package/src/util/Lru.res +51 -0
  341. package/src/util/Lru.res.mjs +59 -0
  342. package/src/util/Lru.resi +32 -0
  343. package/src/util/Metrics.res +32 -0
  344. package/src/util/Metrics.res.mjs +42 -0
  345. package/src/util/OutputFailsafeDeploytime.res +16 -0
  346. package/src/util/OutputFailsafeDeploytime.res.mjs +20 -0
  347. package/src/util/OutputFailsafeRuntime.res +6 -0
  348. package/src/util/OutputFailsafeRuntime.res.mjs +15 -0
  349. package/src/util/OutputLogger.res +9 -0
  350. package/src/util/OutputLogger.res.mjs +19 -0
  351. package/src/util/ResourceQuery.res +14 -0
  352. package/src/util/ResourceQuery.res.mjs +17 -0
  353. package/src/util/ResourceQueryRuntime.res +17 -0
  354. package/src/util/ResourceQueryRuntime.res.mjs +18 -0
  355. package/src/util/ScheduleOps.res +124 -0
  356. package/src/util/ScheduleOps.res.mjs +132 -0
  357. package/src/util/Util.res +12 -0
  358. package/src/util/Util.res.mjs +42 -0
  359. package/src/util/Util_Adapter.res +97 -0
  360. package/src/util/Util_Adapter.res.mjs +82 -0
  361. package/src/util/Util_AdapterRuntime.res +39 -0
  362. package/src/util/Util_AdapterRuntime.res.mjs +42 -0
  363. package/src/util/Util_Array.res +2 -0
  364. package/src/util/Util_Array.res.mjs +12 -0
  365. package/src/util/Util_Error.res +16 -0
  366. package/src/util/Util_Error.res.mjs +19 -0
  367. package/src/util/Util_Promise.res +67 -0
  368. package/src/util/Util_Promise.res.mjs +105 -0
  369. package/src/util/Util_Pulumi.res +35 -0
  370. package/src/util/Util_Pulumi.res.mjs +55 -0
  371. package/src/util/Util_Pulumi.resi +21 -0
  372. package/src/util/Util_QueryDb.res +14 -0
  373. package/src/util/Util_QueryDb.res.mjs +21 -0
  374. package/src/util/Util_QueryDbRuntime.res +11 -0
  375. package/src/util/Util_QueryDbRuntime.res.mjs +19 -0
  376. package/src/util/Util_ReadModel.res +2 -0
  377. package/src/util/Util_ReadModel.res.mjs +10 -0
  378. package/src/util/Util_StackRefs.res +24 -0
  379. package/src/util/Util_StackRefs.res.mjs +39 -0
  380. package/src/util/Validation.res +75 -0
  381. package/src/util/Validation.res.mjs +181 -0
  382. package/tests/.gitkeep +0 -0
  383. package/tests/IdentityTest.res +155 -0
  384. package/tests/IdentityTest.res.mjs +174 -0
  385. package/tests/admin/Platform_ComponentDefinitionsApiTest.res +237 -0
  386. package/tests/admin/Platform_ComponentDefinitionsApiTest.res.mjs +298 -0
  387. package/tests/admin/Platform_UIFragmentsApiTest.res +96 -0
  388. package/tests/admin/Platform_UIFragmentsApiTest.res.mjs +101 -0
  389. package/tests/aggregate/AggregateCallbackTest.res +81 -0
  390. package/tests/aggregate/AggregateCallbackTest.res.mjs +140 -0
  391. package/tests/aggregate/AggregateCausationTest.res +49 -0
  392. package/tests/aggregate/AggregateCausationTest.res.mjs +44 -0
  393. package/tests/aggregate/AggregateConflictTest.res +212 -0
  394. package/tests/aggregate/AggregateConflictTest.res.mjs +363 -0
  395. package/tests/aggregate/AggregateFixtures.res +177 -0
  396. package/tests/aggregate/AggregateFixtures.res.mjs +285 -0
  397. package/tests/aggregate/AggregateRejectionTest.res +139 -0
  398. package/tests/aggregate/AggregateRejectionTest.res.mjs +163 -0
  399. package/tests/api/ApiNoApiTest.res +62 -0
  400. package/tests/api/ApiNoApiTest.res.mjs +90 -0
  401. package/tests/api/GraphQL_StitcherTest.res +107 -0
  402. package/tests/api/GraphQL_StitcherTest.res.mjs +99 -0
  403. package/tests/api/SimpleTest.res +7 -0
  404. package/tests/api/SimpleTest.res.mjs +10 -0
  405. package/tests/api/SuryToJsonSchemaTest.res +405 -0
  406. package/tests/api/SuryToJsonSchemaTest.res.mjs +623 -0
  407. package/tests/commandgenerator/CommandGeneratorCallbackTest.res +128 -0
  408. package/tests/commandgenerator/CommandGeneratorCallbackTest.res.mjs +160 -0
  409. package/tests/commandgenerator/CommandGeneratorFixtures.res +139 -0
  410. package/tests/commandgenerator/CommandGeneratorFixtures.res.mjs +197 -0
  411. package/tests/commandtopic/CommandTopicCallbackFixtures.res +87 -0
  412. package/tests/commandtopic/CommandTopicCallbackFixtures.res.mjs +152 -0
  413. package/tests/commandtopic/CommandTopicCallbackTest.res +66 -0
  414. package/tests/commandtopic/CommandTopicCallbackTest.res.mjs +106 -0
  415. package/tests/commandtopic/CommandTopicHelpersRejectionTest.res +83 -0
  416. package/tests/commandtopic/CommandTopicHelpersRejectionTest.res.mjs +109 -0
  417. package/tests/counter/CounterCallbackTest.res +83 -0
  418. package/tests/counter/CounterCallbackTest.res.mjs +140 -0
  419. package/tests/counter/CounterFixtures.res +57 -0
  420. package/tests/counter/CounterFixtures.res.mjs +67 -0
  421. package/tests/dcb/DcbDecodeTest.res +122 -0
  422. package/tests/dcb/DcbDecodeTest.res.mjs +194 -0
  423. package/tests/dcb/DcbEventLogOperationsTest.res +195 -0
  424. package/tests/dcb/DcbEventLogOperationsTest.res.mjs +268 -0
  425. package/tests/dcb/DcbFixtures.res +422 -0
  426. package/tests/dcb/DcbFixtures.res.mjs +534 -0
  427. package/tests/dcb/DcbScopeInferenceTest.res +242 -0
  428. package/tests/dcb/DcbScopeInferenceTest.res.mjs +480 -0
  429. package/tests/dcb/DcbStateChangeSliceTest.res +362 -0
  430. package/tests/dcb/DcbStateChangeSliceTest.res.mjs +546 -0
  431. package/tests/dcb/DcbTagTest.res +978 -0
  432. package/tests/dcb/DcbTagTest.res.mjs +867 -0
  433. package/tests/dcb/DcbValidationTest.res +349 -0
  434. package/tests/dcb/DcbValidationTest.res.mjs +476 -0
  435. package/tests/eventlog/EventLogFixtures.res +113 -0
  436. package/tests/eventlog/EventLogFixtures.res.mjs +166 -0
  437. package/tests/eventlog/EventLogOperationsTest.res +96 -0
  438. package/tests/eventlog/EventLogOperationsTest.res.mjs +192 -0
  439. package/tests/eventlog/EventLogRetryTest.res +121 -0
  440. package/tests/eventlog/EventLogRetryTest.res.mjs +171 -0
  441. package/tests/eventmapper/EventMapperCallbackTest.res +134 -0
  442. package/tests/eventmapper/EventMapperCallbackTest.res.mjs +141 -0
  443. package/tests/eventmapper/EventMapperFixtures.res +255 -0
  444. package/tests/eventmapper/EventMapperFixtures.res.mjs +440 -0
  445. package/tests/eventmapper/EventMapperTest.res +53 -0
  446. package/tests/eventmapper/EventMapperTest.res.mjs +83 -0
  447. package/tests/eventtopic/EventTopicFixtures.res +36 -0
  448. package/tests/eventtopic/EventTopicFixtures.res.mjs +65 -0
  449. package/tests/eventtopic/EventTopicOperationsTest.res +48 -0
  450. package/tests/eventtopic/EventTopicOperationsTest.res.mjs +71 -0
  451. package/tests/extensionpoint/ExtensionPointCallbackTest.res +84 -0
  452. package/tests/extensionpoint/ExtensionPointCallbackTest.res.mjs +94 -0
  453. package/tests/extensionpoint/ExtensionPointFixtures.res +173 -0
  454. package/tests/extensionpoint/ExtensionPointFixtures.res.mjs +205 -0
  455. package/tests/extensionpoint/ExtensionPointOperationsTest.res +261 -0
  456. package/tests/extensionpoint/ExtensionPointOperationsTest.res.mjs +304 -0
  457. package/tests/ftp/FTPTest.res +64 -0
  458. package/tests/ftp/FTPTest.res.mjs +88 -0
  459. package/tests/logger/LogFormatTest.res +348 -0
  460. package/tests/logger/LogFormatTest.res.mjs +309 -0
  461. package/tests/message/MessageTest.res +95 -0
  462. package/tests/message/MessageTest.res.mjs +93 -0
  463. package/tests/message/MetaEnvelopeTest.res +200 -0
  464. package/tests/message/MetaEnvelopeTest.res.mjs +188 -0
  465. package/tests/plugin/ManifestVisibilityTest.res +137 -0
  466. package/tests/plugin/ManifestVisibilityTest.res.mjs +205 -0
  467. package/tests/plugin/PluginSpecExperiment.res +13 -0
  468. package/tests/plugin/PluginSpecExperiment.res.mjs +31 -0
  469. package/tests/plugin/PluginStructureTest.res +298 -0
  470. package/tests/plugin/PluginStructureTest.res.mjs +388 -0
  471. package/tests/plugin/PluginVersionTest.res +34 -0
  472. package/tests/plugin/PluginVersionTest.res.mjs +30 -0
  473. package/tests/plugin/SchemaWalkerTest.res +115 -0
  474. package/tests/plugin/SchemaWalkerTest.res.mjs +160 -0
  475. package/tests/plugin/StateChangeSlice/PsPlaceOrder.res +24 -0
  476. package/tests/plugin/StateChangeSlice/PsPlaceOrder.res.mjs +62 -0
  477. package/tests/plugin/StateChangeSlice/PsShipOrder.res +29 -0
  478. package/tests/plugin/StateChangeSlice/PsShipOrder.res.mjs +69 -0
  479. package/tests/plugin/StateViewSlice/PsAnnotatedView.res +24 -0
  480. package/tests/plugin/StateViewSlice/PsAnnotatedView.res.mjs +94 -0
  481. package/tests/plugin/StateViewSlice/PsAvailableProductsView.res +18 -0
  482. package/tests/plugin/StateViewSlice/PsAvailableProductsView.res.mjs +69 -0
  483. package/tests/plugin/StateViewSlice/PsCustomersView.res +22 -0
  484. package/tests/plugin/StateViewSlice/PsCustomersView.res.mjs +69 -0
  485. package/tests/plugin/StateViewSlice/PsOrdersView.res +20 -0
  486. package/tests/plugin/StateViewSlice/PsOrdersView.res.mjs +81 -0
  487. package/tests/poc/StructuralSubtypingPoc.res +211 -0
  488. package/tests/poc/StructuralSubtypingPoc.res.mjs +61 -0
  489. package/tests/querydb/QueryDbFixtures.res +65 -0
  490. package/tests/querydb/QueryDbFixtures.res.mjs +135 -0
  491. package/tests/querydb/QueryDbOperationsTest.res +94 -0
  492. package/tests/querydb/QueryDbOperationsTest.res.mjs +168 -0
  493. package/tests/sideeffecthandler/SideEffectHandlerCallbackTest.res +56 -0
  494. package/tests/sideeffecthandler/SideEffectHandlerCallbackTest.res.mjs +77 -0
  495. package/tests/sideeffecthandler/SideEffectHandlerFixtures.res +96 -0
  496. package/tests/sideeffecthandler/SideEffectHandlerFixtures.res.mjs +139 -0
  497. package/tests/util/CsvStreamTest.res +54 -0
  498. package/tests/util/CsvStreamTest.res.mjs +51 -0
  499. package/tests/util/LruTest.res +73 -0
  500. package/tests/util/LruTest.res.mjs +105 -0
  501. package/tests/util/MetricsTest.res +36 -0
  502. package/tests/util/MetricsTest.res.mjs +53 -0
@@ -0,0 +1,2 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
@@ -0,0 +1,53 @@
1
+ module Make = (Spec: ReventlessInfra.EventTopic.T, Publisher: EventTopic_Adapter.Publisher): (
2
+ EventTopic.T with module Spec = Spec
3
+ ) => {
4
+ module Spec = Spec
5
+
6
+ type publish = EventTopic.publish<Spec.Id.t, Spec.event>
7
+ type operations = {
8
+ publish: publish,
9
+ publishJson: EventTopic.publishJson,
10
+ publishJsonStream: EventTopic.publishJsonStream,
11
+ }
12
+
13
+ type component = Component.t<EventTopic.t, EventTopic.outputs, operations>
14
+
15
+ let construct = (~storageResources, self, name) => {
16
+ let opts = {Pulumi.CustomResourceOptions.parent: self->Component.toPulumiResource}
17
+
18
+ let publisher = Publisher.make(
19
+ ~name=name->ComponentType.name(EventTopic.componentType),
20
+ ~storageResources,
21
+ ~opts,
22
+ )
23
+
24
+ self->Component.setOperations(
25
+ (publisher.publishJson, publisher.publishJsonStream)
26
+ ->Pulumi.Output.all2
27
+ ->Pulumi.Output.apply(((publishJson, publishJsonStream)) => {
28
+ module Operations = EventTopic_Operations.Make(
29
+ Spec,
30
+ {
31
+ let publishJson = publishJson
32
+ },
33
+ )
34
+ {
35
+ publishJson,
36
+ publish: Operations.publish,
37
+ publishJsonStream: publishJsonStream,
38
+ }
39
+ }),
40
+ )
41
+
42
+ let outputs: EventTopic.outputs = {resources: publisher.resources}
43
+ self->Component.setOutputs(outputs)
44
+ }
45
+
46
+ let make = (~name, ~storageResources, ~opts=?): component =>
47
+ Component.make(
48
+ ~componentType=EventTopic.componentType->ComponentType.toString,
49
+ ~name,
50
+ ~construct=construct(~storageResources, ...),
51
+ ~opts,
52
+ )
53
+ }
@@ -0,0 +1,46 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Pulumi from "@pulumi/pulumi";
4
+ import * as Component$ReventlessCore from "../Component.res.mjs";
5
+ import * as EventTopic$ReventlessCore from "./EventTopic.res.mjs";
6
+ import * as ComponentType$ReventlessCore from "../../ComponentType.res.mjs";
7
+ import * as EventTopic_Operations$ReventlessCore from "./EventTopic_Operations.res.mjs";
8
+
9
+ function Make(Spec) {
10
+ return Publisher => {
11
+ let make = (name, storageResources, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(EventTopic$ReventlessCore.componentType), name, (extra, extra$1) => {
12
+ let opts_parent = Component$ReventlessCore.toPulumiResource(extra);
13
+ let opts = {
14
+ parent: opts_parent
15
+ };
16
+ let publisher = Publisher.make(ComponentType$ReventlessCore.name(extra$1, EventTopic$ReventlessCore.componentType), storageResources, opts);
17
+ Component$ReventlessCore.setOperations(extra, Pulumi.all([
18
+ publisher.publishJson,
19
+ publisher.publishJsonStream
20
+ ]).apply(param => {
21
+ let publishJson = param[0];
22
+ let Operations = EventTopic_Operations$ReventlessCore.Make(Spec)({
23
+ publishJson: publishJson
24
+ });
25
+ return {
26
+ publish: Operations.publish,
27
+ publishJson: publishJson,
28
+ publishJsonStream: param[1]
29
+ };
30
+ }));
31
+ let outputs = {
32
+ resources: publisher.resources
33
+ };
34
+ return Component$ReventlessCore.setOutputs(extra, outputs);
35
+ }, opts);
36
+ return {
37
+ Spec: Spec,
38
+ make: make
39
+ };
40
+ };
41
+ }
42
+
43
+ export {
44
+ Make,
45
+ }
46
+ /* @pulumi/pulumi Not a pure module */
@@ -0,0 +1,37 @@
1
+ module type Ops = {
2
+ let publishJson: EventTopic.publishJson
3
+ }
4
+
5
+ module Make = (Spec: ReventlessInfra.EventTopic.T, Ops: Ops) => {
6
+ let comp = `EventTopic(${Spec.name})`
7
+
8
+ let publish = async events' => {
9
+ let eventCount = events'->Array.length
10
+ await events'
11
+ ->Array.mapWithIndex(async (event', idx) => {
12
+ let eventJson' = event'->Message.encodeEvent'(Spec.Id.schema, Spec.eventSchema)
13
+
14
+ let id = event'.id
15
+ let idx = idx + 1
16
+
17
+ let idxStr = `${idx->Int.toString}/${eventCount->Int.toString}`
18
+ switch await Ops.publishJson(id->Spec.Id.toString, event'.meta, eventJson') {
19
+ | exception e =>
20
+ EffectLogger.logError(
21
+ ~comp,
22
+ ~detail=eventJson',
23
+ `publish failed ${idxStr}: ${LogFormat.eventDetail(eventJson')}`,
24
+ )->Effect.runSync
25
+ throw(e)
26
+ | _ =>
27
+ EffectLogger.logInfo(
28
+ ~comp,
29
+ ~detail=eventJson',
30
+ `published event ${idxStr}: ${LogFormat.eventDetail(eventJson')}`,
31
+ )->Effect.runSync
32
+ }
33
+ })
34
+ ->Promise.all
35
+ ->Util.Promise.toUnit
36
+ }
37
+ }
@@ -0,0 +1,39 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Effect from "effect/Effect";
4
+ import * as Message$ReventlessCore from "../../Message.res.mjs";
5
+ import * as LogFormat$ReventlessCore from "../../util/LogFormat.res.mjs";
6
+ import * as EffectLogger$ReventlessCore from "../../util/EffectLogger.res.mjs";
7
+ import * as Util_Promise$ReventlessCore from "../../util/Util_Promise.res.mjs";
8
+
9
+ function Make(Spec) {
10
+ return Ops => {
11
+ let comp = `EventTopic(` + Spec.name + `)`;
12
+ let publish = async events$p => {
13
+ let eventCount = events$p.length;
14
+ return await Util_Promise$ReventlessCore.toUnit(Promise.all(events$p.map(async (event$p, idx) => {
15
+ let eventJson$p = Message$ReventlessCore.encodeEvent$p(event$p, Spec.Id.schema, Spec.eventSchema);
16
+ let id = event$p.id;
17
+ let idx$1 = idx + 1 | 0;
18
+ let idxStr = idx$1.toString() + `/` + eventCount.toString();
19
+ let val;
20
+ try {
21
+ val = await Ops.publishJson(Spec.Id.toString(id), event$p.meta, eventJson$p);
22
+ } catch (e) {
23
+ Effect.runSync(EffectLogger$ReventlessCore.logError(comp, eventJson$p, `publish failed ` + idxStr + `: ` + LogFormat$ReventlessCore.eventDetail(eventJson$p)));
24
+ throw e;
25
+ }
26
+ return Effect.runSync(EffectLogger$ReventlessCore.logInfo(comp, eventJson$p, `published event ` + idxStr + `: ` + LogFormat$ReventlessCore.eventDetail(eventJson$p)));
27
+ })));
28
+ };
29
+ return {
30
+ comp: comp,
31
+ publish: publish
32
+ };
33
+ };
34
+ }
35
+
36
+ export {
37
+ Make,
38
+ }
39
+ /* effect/Effect Not a pure module */
@@ -0,0 +1,32 @@
1
+ let componentType = ComponentType.Extension
2
+
3
+ type outputs = ReventlessInfra.Extension.outputs
4
+ type t
5
+
6
+ type jsonEventsHandler = (JSON.t, Reventless.Plugin.pluginDefinition) => promise<unit>
7
+ type operations = {incomingJsonEventsHandler: jsonEventsHandler, outgoingJsonEventsHandler: jsonEventsHandler}
8
+ type component = Component.t<t, outputs, operations>
9
+
10
+ module type T = {
11
+ type operations = operations
12
+ type component = component
13
+
14
+ let make: (
15
+ ~publishToPluginExtensionPoint: CommandTopic.publishJsons,
16
+ ~publishToAggregates: dict<CommandTopic.publishJsons>,
17
+ ~readModelNamesForSourceName: dict<array<string>>,
18
+ ~publishToReadModels: dict<EventCollector.enqueueEvent>,
19
+ ~queryEngine: Reventless.QueryEngine.operations,
20
+ ~opts: option<Pulumi.ComponentResource.options>,
21
+ ) => component
22
+ let outputs: component => outputs
23
+ let operations: component => Pulumi.Output.t<operations>
24
+ }
25
+
26
+ module type Mappings = {
27
+ module Spec: ReventlessInfra.ExtensionMapping.Spec
28
+ module type Mapping = ReventlessInfra.ExtensionMapping.T with module ExtensionPoint := Spec
29
+ let name: string
30
+ let moduleUrl: string
31
+ let mappings: array<module(Mapping)>
32
+ }
@@ -0,0 +1,9 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+
4
+ let componentType = "Extension";
5
+
6
+ export {
7
+ componentType,
8
+ }
9
+ /* No side effect */
@@ -0,0 +1,82 @@
1
+ module Make = (
2
+ Spec: ReventlessInfra.ExtensionMapping.Spec,
3
+ Mappings: Extension.Mappings with module Spec := Spec,
4
+ ): Extension.T => {
5
+ type operations = Extension.operations
6
+ type component = Extension.component
7
+
8
+ let construct = (
9
+ ~publishToPluginExtensionPoint: CommandTopic.publishJsons,
10
+ ~publishToAggregates: dict<CommandTopic.publishJsons>,
11
+ ~readModelNamesForSourceName: dict<array<string>>,
12
+ ~publishToReadModels: dict<EventCollector.enqueueEvent>,
13
+ ~queryEngine,
14
+ self,
15
+ name,
16
+ ) => {
17
+ module Operations = Extension_Operations.Make(
18
+ Spec,
19
+ Mappings,
20
+ {
21
+ let publishToAggregates = publishToAggregates
22
+ let publishToPluginExtensionPoint = publishToPluginExtensionPoint
23
+ let readModelNamesForSourceName = readModelNamesForSourceName
24
+ let publishToReadModels = publishToReadModels
25
+ let queryEngine = queryEngine
26
+ },
27
+ )
28
+ let operations: Extension.operations = {
29
+ incomingJsonEventsHandler: Operations.incomingJsonEventsHandler,
30
+ outgoingJsonEventsHandler: Operations.outgoingJsonEventsHandler,
31
+ }
32
+
33
+ self->Component.setOperations(operations->Pulumi.Output.make)
34
+ let extOutputs: Extension.outputs = {
35
+ name,
36
+ extensionPointName: Spec.name,
37
+ // `aggregateNames` lists the Delegate command-topic targets this
38
+ // extension publishes to — used by PluginRuntime_Builder to compile
39
+ // the per-extension publishToAggregates dict in HANDLER_CONFIG. An
40
+ // extension publishes commands from EITHER mapIncomingEvent (incoming
41
+ // EP event → PublishAggregateCommand / PublishStateChangeSliceCommand)
42
+ // OR mapOutgoingEvent (outgoing local event → cross-plugin command),
43
+ // so include Delegate.name whenever a real Delegate exists. Filtering
44
+ // on mapOutgoingEvent alone leaves incoming-only extensions (like
45
+ // ordering's Products_Extension that turns ProductBecameAvailable
46
+ // into SyncCatalogProduct.SyncNewProduct) with `aggregateNames: []`,
47
+ // which crashes the runtime with "Option.getOrThrow called for None"
48
+ // at the publishToAggregates lookup.
49
+ aggregateNames: Mappings.mappings->Array.filterMap((module(Mapping)) =>
50
+ Mapping.delegateName == ReventlessInfra.ExtensionMapping.NoDelegate.name
51
+ ? None
52
+ : Some(Mapping.delegateName)
53
+ ),
54
+ }
55
+ self->Component.setOutputs(extOutputs)
56
+ }
57
+
58
+ let make = (
59
+ ~publishToPluginExtensionPoint,
60
+ ~publishToAggregates,
61
+ ~readModelNamesForSourceName,
62
+ ~publishToReadModels,
63
+ ~queryEngine,
64
+ ~opts,
65
+ ) =>
66
+ Component.make(
67
+ ~componentType=Extension.componentType->ComponentType.toString,
68
+ ~name=Spec.name ++ ("." ++ Mappings.name),
69
+ ~construct=construct(
70
+ ~publishToPluginExtensionPoint,
71
+ ~publishToAggregates,
72
+ ~readModelNamesForSourceName,
73
+ ~publishToReadModels,
74
+ ~queryEngine,
75
+ ...
76
+ ),
77
+ ~opts,
78
+ )
79
+
80
+ let outputs = Component.outputs
81
+ let operations = Component.operations
82
+ }
@@ -0,0 +1,57 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
4
+ import * as Pulumi from "@pulumi/pulumi";
5
+ import * as Component$ReventlessCore from "../Component.res.mjs";
6
+ import * as Extension$ReventlessCore from "./Extension.res.mjs";
7
+ import * as ComponentType$ReventlessCore from "../../ComponentType.res.mjs";
8
+ import * as ExtensionMapping$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/ExtensionMapping.res.mjs";
9
+ import * as Extension_Operations$ReventlessCore from "./Extension_Operations.res.mjs";
10
+
11
+ function Make(Spec) {
12
+ return Mappings => {
13
+ let make = (publishToPluginExtensionPoint, publishToAggregates, readModelNamesForSourceName, publishToReadModels, queryEngine, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(Extension$ReventlessCore.componentType), Spec.name + ("." + Mappings.name), (extra, extra$1) => {
14
+ let Operations = Extension_Operations$ReventlessCore.Make(Spec)({
15
+ name: Mappings.name,
16
+ mappings: Mappings.mappings
17
+ })({
18
+ publishToAggregates: publishToAggregates,
19
+ publishToPluginExtensionPoint: publishToPluginExtensionPoint,
20
+ readModelNamesForSourceName: readModelNamesForSourceName,
21
+ publishToReadModels: publishToReadModels,
22
+ queryEngine: queryEngine
23
+ });
24
+ let operations_incomingJsonEventsHandler = Operations.incomingJsonEventsHandler;
25
+ let operations_outgoingJsonEventsHandler = Operations.outgoingJsonEventsHandler;
26
+ let operations = {
27
+ incomingJsonEventsHandler: operations_incomingJsonEventsHandler,
28
+ outgoingJsonEventsHandler: operations_outgoingJsonEventsHandler
29
+ };
30
+ Component$ReventlessCore.setOperations(extra, Pulumi.output(operations));
31
+ let extOutputs_extensionPointName = Spec.name;
32
+ let extOutputs_aggregateNames = Stdlib_Array.filterMap(Mappings.mappings, Mapping => {
33
+ if (Mapping.delegateName === ExtensionMapping$ReventlessInfra.NoDelegate.name) {
34
+ return;
35
+ } else {
36
+ return Mapping.delegateName;
37
+ }
38
+ });
39
+ let extOutputs = {
40
+ name: extra$1,
41
+ extensionPointName: extOutputs_extensionPointName,
42
+ aggregateNames: extOutputs_aggregateNames
43
+ };
44
+ return Component$ReventlessCore.setOutputs(extra, extOutputs);
45
+ }, opts);
46
+ return {
47
+ make: make,
48
+ outputs: Component$ReventlessCore.outputs,
49
+ operations: Component$ReventlessCore.operations
50
+ };
51
+ };
52
+ }
53
+
54
+ export {
55
+ Make,
56
+ }
57
+ /* @pulumi/pulumi Not a pure module */
@@ -0,0 +1,203 @@
1
+ module PluginExtensionPointSpec = ReventlessInfra.PluginExtensionPointSpec
2
+ module ExtensionMapping = ReventlessInfra.ExtensionMapping
3
+
4
+ module type Mappings = {
5
+ module Spec: ReventlessInfra.ExtensionMapping.Spec
6
+ module type Mapping = ExtensionMapping.T with module ExtensionPoint := Spec
7
+ let name: string
8
+ let mappings: array<module(Mapping)>
9
+ }
10
+
11
+ module type Ops = {
12
+ let publishToAggregates: dict<CommandTopic.publishJsons>
13
+ let publishToPluginExtensionPoint: CommandTopic.publishJsons
14
+ let readModelNamesForSourceName: dict<array<string>>
15
+ let publishToReadModels: dict<EventCollector.enqueueEvent>
16
+ let queryEngine: Reventless.QueryEngine.operations
17
+ }
18
+
19
+ module type T = {
20
+ let incomingJsonEventsHandler: Extension.jsonEventsHandler
21
+ let outgoingJsonEventsHandler: Extension.jsonEventsHandler
22
+ }
23
+
24
+ module Make = (
25
+ MappingSpec: ReventlessInfra.ExtensionMapping.Spec,
26
+ Mappings: Mappings with module Spec := MappingSpec,
27
+ Ops: Ops,
28
+ ): T => {
29
+ let comp = `Extension(${MappingSpec.name}.${Mappings.name})`
30
+
31
+ let findOutgoingMapping = (delegateNameOpt, mappings) =>
32
+ delegateNameOpt->Option.flatMap(delegateName =>
33
+ mappings->Array.find((module(Mapping: Mappings.Mapping)) =>
34
+ Mapping.delegateName == delegateName
35
+ )
36
+ ) // TODO: handle multiple mappings for same Target name
37
+
38
+ let mapIncomingEvent = (
39
+ event': Message.event'<string, MappingSpec.event>,
40
+ pluginDef,
41
+ queryEngine,
42
+ ) =>
43
+ Mappings.mappings
44
+ ->Array.map((module(Mapping: Mappings.Mapping)) =>
45
+ Mapping.mapIncomingEvent(event', pluginDef, queryEngine)
46
+ )
47
+ ->Array.flat
48
+
49
+ let mapOutgoingEvent = (eventJson', pluginDef) =>
50
+ switch eventJson'->Message.serviceNameOfMsg->findOutgoingMapping(Mappings.mappings) {
51
+ | Some(module(Mapping)) =>
52
+ switch Mapping.mapOutgoingEvent {
53
+ | Some(mapOutgoingEvent) => mapOutgoingEvent(eventJson', pluginDef)
54
+ | None =>
55
+ EffectLogger.logError(
56
+ ~comp,
57
+ "mapOutgoingEvent: shouldn't be called, because Plugin EventCollector shouldn't subscribe to EventLog stream not having mapOutgoingEvent() !",
58
+ )->Effect.runSync
59
+ []
60
+ }
61
+ | None =>
62
+ JsError.throwWithMessage(
63
+ "ExtensionPoint.Mapping: Missing mapping for " ++ eventJson'->JSON.stringify,
64
+ )
65
+ }
66
+
67
+ let publishAggregateCommand = async (aggregateName, cmdJson: Message.commandJson) => {
68
+ EffectLogger.logInfo(
69
+ ~comp,
70
+ `EP→${aggregateName}: ${cmdJson.commandJson->Message.variantNameOfJson->LogFormat.bold}(${cmdJson.id})`,
71
+ )->Effect.runSync
72
+ let pub = Ops.publishToAggregates->Dict.get(aggregateName)->Option.getOrThrow
73
+ try await pub([cmdJson]) catch {
74
+ | err =>
75
+ let errMsg = err->JsExn.fromException->Option.flatMap(JsExn.message)->Option.getOr("unknown")
76
+ EffectLogger.logError(
77
+ ~comp,
78
+ `Error on publish command to aggregate ${aggregateName}: ${errMsg}`,
79
+ )->Effect.runSync
80
+ }
81
+ }
82
+
83
+ let publishPluginExtensionPointCommand = async cmdJson =>
84
+ try await Ops.publishToPluginExtensionPoint([cmdJson]) catch {
85
+ | err =>
86
+ let errMsg = err->JsExn.fromException->Option.flatMap(JsExn.message)->Option.getOr("unknown")
87
+ EffectLogger.logError(
88
+ ~comp,
89
+ `Error on publish command to Plugin ExtensionPoint: ${errMsg}`,
90
+ )->Effect.runSync
91
+ }
92
+
93
+ let forwardCommand = (extensionPointName, commandJson: Message.commandJson) => {
94
+ let command: PluginExtensionPointSpec.command = ForwardCommand({
95
+ extensionPointName,
96
+ id: commandJson.id,
97
+ command: commandJson->Message.toMessageBody,
98
+ })
99
+ publishPluginExtensionPointCommand({
100
+ Message.id: "",
101
+ // ForwardCommand wraps the original command — derive meta so this hop carries
102
+ // causation (causationId = original command's msgId) and inherits the rest.
103
+ meta: Message.deriveMeta(~parent=commandJson.meta),
104
+ commandJson: command->Message.encode(PluginExtensionPointSpec.commandSchema),
105
+ })
106
+ }
107
+
108
+ let handleDirective = async handler =>
109
+ try await handler() catch {
110
+ | err =>
111
+ let errMsg = err->JsExn.fromException->Option.flatMap(JsExn.message)->Option.getOr("unknown")
112
+ EffectLogger.logError(~comp, `Error on handling directive: ${errMsg}`)->Effect.runSync
113
+ }
114
+
115
+ let applyIncomingCommandAction = async action =>
116
+ await (
117
+ switch action {
118
+ | ExtensionMapping.AbstractPublishAggregateCommand(aggregateName, commandJson) =>
119
+ publishAggregateCommand(aggregateName, commandJson)
120
+ | AbstractPublishAggregateCommandAsync(promise) => {
121
+ let (aggregateName, commandJson) = await promise
122
+ publishAggregateCommand(aggregateName, commandJson)
123
+ }
124
+ | AbstractPublishAggregateCommandsAsync(promise) =>
125
+ let publish = async promise => {
126
+ await promise
127
+ ->Util.Promise.mapOk(arr =>
128
+ arr
129
+ ->Array.map(((aggregateName, commandJson)) =>
130
+ publishAggregateCommand(aggregateName, commandJson)
131
+ )
132
+ ->Promise.all
133
+ )
134
+ ->Util.Promise.toUnit
135
+ }
136
+ promise->publish
137
+ | AbstractPublishPluginExtensionPointCommand(commandJson) =>
138
+ publishPluginExtensionPointCommand(commandJson)
139
+ | AbstractPublishExtensionPointCommand(extensionPointName, commandJson) =>
140
+ forwardCommand(extensionPointName, commandJson)
141
+ | AbstractHandleDirective(handler) => handler->handleDirective
142
+ }
143
+ )
144
+
145
+ let applyOutgoingCommandAction = async action =>
146
+ switch action {
147
+ | ExtensionMapping.AbstractPublishPluginExtensionPointCommand(commandJson) =>
148
+ publishPluginExtensionPointCommand(commandJson)
149
+ | AbstractPublishExtensionPointCommand(extensionPointName, commandJson) =>
150
+ forwardCommand(extensionPointName, commandJson)
151
+ | AbstractHandleDirective(handler) => handler->handleDirective
152
+ }
153
+
154
+ let incomingJsonEventsHandler = async (eventJson', pluginDef) => {
155
+ EffectLogger.logInfo(~comp=comp, `incoming EP event: ${LogFormat.eventSummary(eventJson')}`)->Effect.runSync
156
+ switch eventJson'->Message.decodeEvent'(
157
+ Reventless.Id.StringPure.schema,
158
+ MappingSpec.eventSchema,
159
+ ) {
160
+ | event' =>
161
+ let commandActions = mapIncomingEvent(event', pluginDef, Ops.queryEngine)
162
+ let apply = async commandActions => {
163
+ await commandActions
164
+ ->Array.map(applyIncomingCommandAction)
165
+ ->Promise.all
166
+ ->Util.Promise.toUnit
167
+ }
168
+ await commandActions->apply
169
+
170
+ switch Ops.readModelNamesForSourceName
171
+ ->Dict.get(event'.meta.service)
172
+ ->Option.map(readModelNames =>
173
+ readModelNames
174
+ ->Array.filterMap(readModelName =>
175
+ Ops.publishToReadModels
176
+ ->Dict.get(readModelName)
177
+ ->Option.map(enqueueEvent => enqueueEvent(0, event'.id, eventJson'->JSON.stringify))
178
+ ) // FIXME Error handling
179
+ ->Promise.all
180
+ ) {
181
+ | Some(p) =>
182
+ let _ = await p
183
+ | None => ()
184
+ }
185
+
186
+ | exception err =>
187
+ let errMsg = err->JsExn.fromException->Option.flatMap(JsExn.message)->Option.getOr("unknown")
188
+ EffectLogger.logError(
189
+ ~comp,
190
+ `Could not decode event': ${eventJson'->JSON.stringify} ${errMsg}`,
191
+ )->Effect.runSync
192
+ }
193
+ }
194
+
195
+ let outgoingJsonEventsHandler = (eventJson', pluginDef) => {
196
+ EffectLogger.logInfo(~comp=comp, `outgoing delegate event: ${LogFormat.eventSummary(eventJson')}`)->Effect.runSync
197
+ let commandActions = mapOutgoingEvent(eventJson', pluginDef)
198
+ commandActions
199
+ ->Array.map(applyOutgoingCommandAction)
200
+ ->Promise.all
201
+ ->Util.Promise.toUnit
202
+ }
203
+ }