@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,298 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Stdlib_JSON from "@rescript/runtime/lib/es6/Stdlib_JSON.js";
4
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
5
+ import * as Primitive_string from "@rescript/runtime/lib/es6/Primitive_string.js";
6
+ import * as Platform_ComponentDefinitionsApi$ReventlessCore from "../../src/admin/Platform_ComponentDefinitionsApi.res.mjs";
7
+
8
+ let cmd_references = [{
9
+ fieldName: "categoryId",
10
+ entity: "Category",
11
+ plugin: "Catalog"
12
+ }];
13
+
14
+ let cmd_apiExposed = true;
15
+
16
+ let cmd = {
17
+ name: "Add",
18
+ schema: "{}",
19
+ level: "Collection",
20
+ aggregateIdField: undefined,
21
+ mutationField: "AddProduct",
22
+ references: cmd_references,
23
+ allowedStates: undefined,
24
+ apiExposed: cmd_apiExposed
25
+ };
26
+
27
+ let qbl_consumedEventTypes = ["ProductAdded"];
28
+
29
+ let qbl_linkedWriteSide = ["Product"];
30
+
31
+ let qbl_searchableFields = ["displayName"];
32
+
33
+ let qbl = {
34
+ name: "Products",
35
+ queryField: "Catalog_Products",
36
+ schema: "{}",
37
+ consumedEventTypes: qbl_consumedEventTypes,
38
+ linkedWriteSide: qbl_linkedWriteSide,
39
+ labelField: "displayName",
40
+ searchableFields: qbl_searchableFields,
41
+ statusField: undefined,
42
+ visibility: undefined
43
+ };
44
+
45
+ let wbl_commands = [cmd];
46
+
47
+ let wbl_producedEventTypes = ["ProductAdded"];
48
+
49
+ let wbl_consumedEventTypes = [];
50
+
51
+ let wbl_linkedViews = ["Products"];
52
+
53
+ let wbl_events = [{
54
+ name: "ProductAdded",
55
+ schema: "{}",
56
+ references: []
57
+ }];
58
+
59
+ let wbl = {
60
+ name: "Product",
61
+ commands: wbl_commands,
62
+ producedEventTypes: wbl_producedEventTypes,
63
+ consumedEventTypes: wbl_consumedEventTypes,
64
+ linkedViews: wbl_linkedViews,
65
+ consistencyRead: undefined,
66
+ events: wbl_events
67
+ };
68
+
69
+ let structure_readModels = [qbl];
70
+
71
+ let structure_stateViewSlices = [];
72
+
73
+ let structure_stateChangeSlices = [];
74
+
75
+ let structure_aggregates = [wbl];
76
+
77
+ let structure_automationSlices = [{
78
+ name: "Restocker",
79
+ consumedEventTypes: ["StockLow"],
80
+ producedCommandTypes: ["Restock"],
81
+ targetName: "Product"
82
+ }];
83
+
84
+ let structure_outboundTranslationSlices = [{
85
+ name: "ToShipper",
86
+ consumedEventTypes: ["OrderPlaced"],
87
+ inboundCommandTypes: ["Ship"],
88
+ targetName: undefined
89
+ }];
90
+
91
+ let structure_inboundTranslationSlices = [{
92
+ name: "FromBilling",
93
+ commandTypes: ["RecordPayment"],
94
+ targetName: "Order"
95
+ }];
96
+
97
+ let structure_extensions = [{
98
+ name: "Catalog.Products.Watcher",
99
+ delegateNames: ["onAdded"],
100
+ eventTypes: ["ProductAdded"],
101
+ commandTypes: []
102
+ }];
103
+
104
+ let structure = {
105
+ readModels: structure_readModels,
106
+ stateViewSlices: structure_stateViewSlices,
107
+ stateChangeSlices: structure_stateChangeSlices,
108
+ aggregates: structure_aggregates,
109
+ automationSlices: structure_automationSlices,
110
+ outboundTranslationSlices: structure_outboundTranslationSlices,
111
+ inboundTranslationSlices: structure_inboundTranslationSlices,
112
+ extensions: structure_extensions,
113
+ extensionPoints: undefined
114
+ };
115
+
116
+ let encoded = Platform_ComponentDefinitionsApi$ReventlessCore.encodePluginStructureEntry("Catalog", structure);
117
+
118
+ let json = JSON.stringify(encoded);
119
+
120
+ globalThis.describe("encodePluginStructureEntry", () => {
121
+ globalThis.test("produces a JSON object with the expected top-level keys", () => {
122
+ let dict = Stdlib_Option.getOr(Stdlib_JSON.Decode.object(encoded), {});
123
+ let keys = Object.keys(dict).toSorted(Primitive_string.compare);
124
+ globalThis.expect(keys).toEqual([
125
+ "aggregates",
126
+ "automationSlices",
127
+ "extensions",
128
+ "inboundTranslationSlices",
129
+ "outboundTranslationSlices",
130
+ "pluginId",
131
+ "readModels",
132
+ "stateChangeSlices",
133
+ "stateViewSlices"
134
+ ]);
135
+ });
136
+ globalThis.test("encodes pluginId", () => {
137
+ globalThis.expect(json.includes("\"pluginId\":\"Catalog\"")).toEqual(true);
138
+ });
139
+ globalThis.test("encodes commandLevel as a literal string", () => {
140
+ globalThis.expect(json.includes("\"level\":\"Collection\"")).toEqual(true);
141
+ });
142
+ globalThis.test("encodes None aggregateIdField as null", () => {
143
+ globalThis.expect(json.includes("\"aggregateIdField\":null")).toEqual(true);
144
+ });
145
+ globalThis.test("encodes None consistencyRead as null", () => {
146
+ globalThis.expect(json.includes("\"consistencyRead\":null")).toEqual(true);
147
+ });
148
+ globalThis.test("encodes Some plugin reference as its inner string", () => {
149
+ globalThis.expect(json.includes("\"plugin\":\"Catalog\"")).toEqual(true);
150
+ });
151
+ globalThis.test("includes the queryableDef name", () => {
152
+ globalThis.expect(json.includes("\"name\":\"Products\"")).toEqual(true);
153
+ });
154
+ globalThis.test("includes the automation slice name", () => {
155
+ globalThis.expect(json.includes("\"name\":\"Restocker\"")).toEqual(true);
156
+ });
157
+ globalThis.test("encodes None allowedStates as null", () => {
158
+ globalThis.expect(json.includes("\"allowedStates\":null")).toEqual(true);
159
+ });
160
+ globalThis.test("encodes the command's apiExposed flag (drives the event-graph API badge)", () => {
161
+ globalThis.expect(json.includes("\"apiExposed\":true")).toEqual(true);
162
+ });
163
+ globalThis.test("encodes None statusField as null", () => {
164
+ globalThis.expect(json.includes("\"statusField\":null")).toEqual(true);
165
+ });
166
+ globalThis.test("encodes writableDef events", () => {
167
+ globalThis.expect(json.includes("\"events\":[{\"name\":\"ProductAdded\"")).toEqual(true);
168
+ });
169
+ });
170
+
171
+ globalThis.describe("visibility filtering (deployed AutoUI hides Internal)", () => {
172
+ let internalQbl_consumedEventTypes = ["CatalogProductSynced"];
173
+ let internalQbl_linkedWriteSide = [];
174
+ let internalQbl_searchableFields = ["name"];
175
+ let internalQbl_visibility = "Internal";
176
+ let internalQbl = {
177
+ name: "AvailableProducts",
178
+ queryField: "Ordering_AvailableProducts",
179
+ schema: "{}",
180
+ consumedEventTypes: internalQbl_consumedEventTypes,
181
+ linkedWriteSide: internalQbl_linkedWriteSide,
182
+ labelField: "name",
183
+ searchableFields: internalQbl_searchableFields,
184
+ statusField: undefined,
185
+ visibility: internalQbl_visibility
186
+ };
187
+ let mixed_readModels = [
188
+ qbl,
189
+ internalQbl
190
+ ];
191
+ let mixed_stateViewSlices = [internalQbl];
192
+ let mixed_stateChangeSlices = structure_stateChangeSlices;
193
+ let mixed_aggregates = structure_aggregates;
194
+ let mixed_automationSlices = structure_automationSlices;
195
+ let mixed_outboundTranslationSlices = structure_outboundTranslationSlices;
196
+ let mixed_inboundTranslationSlices = structure_inboundTranslationSlices;
197
+ let mixed_extensions = structure_extensions;
198
+ let mixed = {
199
+ readModels: mixed_readModels,
200
+ stateViewSlices: mixed_stateViewSlices,
201
+ stateChangeSlices: mixed_stateChangeSlices,
202
+ aggregates: mixed_aggregates,
203
+ automationSlices: mixed_automationSlices,
204
+ outboundTranslationSlices: mixed_outboundTranslationSlices,
205
+ inboundTranslationSlices: mixed_inboundTranslationSlices,
206
+ extensions: mixed_extensions,
207
+ extensionPoints: undefined
208
+ };
209
+ let mixedJson = JSON.stringify(Platform_ComponentDefinitionsApi$ReventlessCore.encodePluginStructureEntry("Ordering", mixed));
210
+ globalThis.test("excludes an Internal queryableDef from the encoded read-side", () => {
211
+ globalThis.expect(mixedJson.includes("AvailableProducts")).toEqual(false);
212
+ });
213
+ globalThis.test("keeps a Public queryableDef", () => {
214
+ globalThis.expect(mixedJson.includes("\"name\":\"Products\"")).toEqual(true);
215
+ });
216
+ });
217
+
218
+ globalThis.describe("allowedStates + statusField populated", () => {
219
+ let cmdWithStates_aggregateIdField = "id";
220
+ let cmdWithStates_references = [];
221
+ let cmdWithStates_allowedStates = ["Inactive"];
222
+ let cmdWithStates_apiExposed = true;
223
+ let cmdWithStates = {
224
+ name: "Activate",
225
+ schema: "{}",
226
+ level: "Instance",
227
+ aggregateIdField: cmdWithStates_aggregateIdField,
228
+ mutationField: "Platform_Plugin_Activate",
229
+ references: cmdWithStates_references,
230
+ allowedStates: cmdWithStates_allowedStates,
231
+ apiExposed: cmdWithStates_apiExposed
232
+ };
233
+ let qblWithStatus_consumedEventTypes = [];
234
+ let qblWithStatus_linkedWriteSide = ["Plugin"];
235
+ let qblWithStatus_searchableFields = ["name"];
236
+ let qblWithStatus_statusField = "status";
237
+ let qblWithStatus = {
238
+ name: "Plugin",
239
+ queryField: "Platform_Plugins",
240
+ schema: "{}",
241
+ consumedEventTypes: qblWithStatus_consumedEventTypes,
242
+ linkedWriteSide: qblWithStatus_linkedWriteSide,
243
+ labelField: "name",
244
+ searchableFields: qblWithStatus_searchableFields,
245
+ statusField: qblWithStatus_statusField,
246
+ visibility: undefined
247
+ };
248
+ let wblWithStates_commands = [cmdWithStates];
249
+ let wblWithStates_producedEventTypes = [];
250
+ let wblWithStates_consumedEventTypes = [];
251
+ let wblWithStates_linkedViews = ["Plugin"];
252
+ let wblWithStates_events = [];
253
+ let wblWithStates = {
254
+ name: "Plugin",
255
+ commands: wblWithStates_commands,
256
+ producedEventTypes: wblWithStates_producedEventTypes,
257
+ consumedEventTypes: wblWithStates_consumedEventTypes,
258
+ linkedViews: wblWithStates_linkedViews,
259
+ consistencyRead: undefined,
260
+ events: wblWithStates_events
261
+ };
262
+ let structureWithStates_readModels = [qblWithStatus];
263
+ let structureWithStates_stateViewSlices = [];
264
+ let structureWithStates_stateChangeSlices = [];
265
+ let structureWithStates_aggregates = [wblWithStates];
266
+ let structureWithStates_automationSlices = [];
267
+ let structureWithStates_outboundTranslationSlices = [];
268
+ let structureWithStates_inboundTranslationSlices = [];
269
+ let structureWithStates_extensions = [];
270
+ let structureWithStates = {
271
+ readModels: structureWithStates_readModels,
272
+ stateViewSlices: structureWithStates_stateViewSlices,
273
+ stateChangeSlices: structureWithStates_stateChangeSlices,
274
+ aggregates: structureWithStates_aggregates,
275
+ automationSlices: structureWithStates_automationSlices,
276
+ outboundTranslationSlices: structureWithStates_outboundTranslationSlices,
277
+ inboundTranslationSlices: structureWithStates_inboundTranslationSlices,
278
+ extensions: structureWithStates_extensions,
279
+ extensionPoints: undefined
280
+ };
281
+ let json = JSON.stringify(Platform_ComponentDefinitionsApi$ReventlessCore.encodePluginStructureEntry("Platform", structureWithStates));
282
+ globalThis.test("encodes populated allowedStates as a JSON array", () => {
283
+ globalThis.expect(json.includes("\"allowedStates\":[\"Inactive\"]")).toEqual(true);
284
+ });
285
+ globalThis.test("encodes populated statusField as the field name string", () => {
286
+ globalThis.expect(json.includes("\"statusField\":\"status\"")).toEqual(true);
287
+ });
288
+ });
289
+
290
+ export {
291
+ cmd,
292
+ qbl,
293
+ wbl,
294
+ structure,
295
+ encoded,
296
+ json,
297
+ }
298
+ /* encoded Not a pure module */
@@ -0,0 +1,96 @@
1
+ // Asserts the canonical JSON shape produced by encodeUIFragmentEntry — shared
2
+ // by both the in-memory and AWS adapters. If this test changes, every console
3
+ // parsing the Platform_UIFragments response is affected.
4
+
5
+ open JestGlobals
6
+ open Reventless.Plugin
7
+
8
+ let panel: panelManifestEntry = {
9
+ fragmentId: "Catalog.Categories.list",
10
+ title: "Categories",
11
+ description: "",
12
+ positions: ["platform-summary"],
13
+ requiredAccess: None,
14
+ }
15
+
16
+ let page: pageManifestEntry = {
17
+ fragmentId: "Catalog.Categories.list",
18
+ title: "Categories",
19
+ menuEntry: {
20
+ label: "Categories",
21
+ icon: None,
22
+ group: None,
23
+ sortOrder: 0,
24
+ },
25
+ requiredAccess: Some("admin"),
26
+ }
27
+
28
+ let state: UIFragmentRegistryReadModelSpec.state = {
29
+ pluginId: "Catalog",
30
+ remoteEntryUrl: "https://cdn.example.com/catalog@1.0/remoteEntry.js",
31
+ panels: [panel],
32
+ pages: [page],
33
+ registeredAt: "2026-05-14T00:00:00.000Z",
34
+ updatedAt: "2026-05-14T00:00:00.000Z",
35
+ }
36
+
37
+ let encoded = Platform_UIFragmentsApi.encodeUIFragmentEntry(state)
38
+ let json = encoded->JSON.stringify
39
+
40
+ describe("encodeUIFragmentEntry", () => {
41
+ testSync("produces a JSON object with the expected top-level keys", () => {
42
+ let dict = encoded->JSON.Decode.object->Option.getOr(Dict.make())
43
+ let keys = dict->Dict.keysToArray->Array.toSorted(String.compare)
44
+ expect(keys)->toEqual([
45
+ "pages",
46
+ "panels",
47
+ "pluginId",
48
+ "registeredAt",
49
+ "remoteEntryUrl",
50
+ "updatedAt",
51
+ ])
52
+ })
53
+
54
+ testSync("encodes pluginId", () =>
55
+ expect(json->String.includes("\"pluginId\":\"Catalog\""))->toEqual(true)
56
+ )
57
+
58
+ testSync("encodes remoteEntryUrl", () =>
59
+ expect(
60
+ json->String.includes("\"remoteEntryUrl\":\"https://cdn.example.com/catalog@1.0/remoteEntry.js\""),
61
+ )->toEqual(true)
62
+ )
63
+
64
+ testSync("encodes None requiredAccess on panel as null", () =>
65
+ expect(json->String.includes("\"requiredAccess\":null"))->toEqual(true)
66
+ )
67
+
68
+ testSync("encodes Some requiredAccess on page as its inner string", () =>
69
+ expect(json->String.includes("\"requiredAccess\":\"admin\""))->toEqual(true)
70
+ )
71
+
72
+ testSync("encodes nested menuEntry as an object with sortOrder", () =>
73
+ expect(json->String.includes("\"sortOrder\":0"))->toEqual(true)
74
+ )
75
+
76
+ testSync("encodes panel positions as an array of strings", () =>
77
+ expect(json->String.includes("\"positions\":[\"platform-summary\"]"))->toEqual(true)
78
+ )
79
+ })
80
+
81
+ describe("Platform_UIFragmentsApi.sdl", () => {
82
+ testSync("query field declares the list type", () =>
83
+ expect(Platform_UIFragmentsApi.sdlQueryField->String.includes("[Platform_UIFragmentEntry!]!"))
84
+ ->toEqual(true)
85
+ )
86
+
87
+ testSync("sdlTypes includes Platform_UIFragmentEntry", () => {
88
+ let allTypes = Platform_UIFragmentsApi.sdlTypes->Array.join("\n")
89
+ expect(allTypes->String.includes("Platform_UIFragmentEntry"))->toEqual(true)
90
+ })
91
+
92
+ testSync("sdlTypes includes Platform_UIPanel with positions field", () => {
93
+ let allTypes = Platform_UIFragmentsApi.sdlTypes->Array.join("\n")
94
+ expect(allTypes->String.includes("positions: [String!]!"))->toEqual(true)
95
+ })
96
+ })
@@ -0,0 +1,101 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Stdlib_JSON from "@rescript/runtime/lib/es6/Stdlib_JSON.js";
4
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
5
+ import * as Primitive_string from "@rescript/runtime/lib/es6/Primitive_string.js";
6
+ import * as Platform_UIFragmentsApi$ReventlessCore from "../../src/admin/Platform_UIFragmentsApi.res.mjs";
7
+
8
+ let panel_positions = ["platform-summary"];
9
+
10
+ let panel = {
11
+ fragmentId: "Catalog.Categories.list",
12
+ title: "Categories",
13
+ description: "",
14
+ positions: panel_positions,
15
+ requiredAccess: undefined
16
+ };
17
+
18
+ let page = {
19
+ fragmentId: "Catalog.Categories.list",
20
+ title: "Categories",
21
+ menuEntry: {
22
+ label: "Categories",
23
+ icon: undefined,
24
+ group: undefined,
25
+ sortOrder: 0
26
+ },
27
+ requiredAccess: "admin"
28
+ };
29
+
30
+ let state_panels = [panel];
31
+
32
+ let state_pages = [page];
33
+
34
+ let state = {
35
+ pluginId: "Catalog",
36
+ remoteEntryUrl: "https://cdn.example.com/catalog@1.0/remoteEntry.js",
37
+ panels: state_panels,
38
+ pages: state_pages,
39
+ registeredAt: "2026-05-14T00:00:00.000Z",
40
+ updatedAt: "2026-05-14T00:00:00.000Z"
41
+ };
42
+
43
+ let encoded = Platform_UIFragmentsApi$ReventlessCore.encodeUIFragmentEntry(state);
44
+
45
+ let json = JSON.stringify(encoded);
46
+
47
+ globalThis.describe("encodeUIFragmentEntry", () => {
48
+ globalThis.test("produces a JSON object with the expected top-level keys", () => {
49
+ let dict = Stdlib_Option.getOr(Stdlib_JSON.Decode.object(encoded), {});
50
+ let keys = Object.keys(dict).toSorted(Primitive_string.compare);
51
+ globalThis.expect(keys).toEqual([
52
+ "pages",
53
+ "panels",
54
+ "pluginId",
55
+ "registeredAt",
56
+ "remoteEntryUrl",
57
+ "updatedAt"
58
+ ]);
59
+ });
60
+ globalThis.test("encodes pluginId", () => {
61
+ globalThis.expect(json.includes("\"pluginId\":\"Catalog\"")).toEqual(true);
62
+ });
63
+ globalThis.test("encodes remoteEntryUrl", () => {
64
+ globalThis.expect(json.includes("\"remoteEntryUrl\":\"https://cdn.example.com/catalog@1.0/remoteEntry.js\"")).toEqual(true);
65
+ });
66
+ globalThis.test("encodes None requiredAccess on panel as null", () => {
67
+ globalThis.expect(json.includes("\"requiredAccess\":null")).toEqual(true);
68
+ });
69
+ globalThis.test("encodes Some requiredAccess on page as its inner string", () => {
70
+ globalThis.expect(json.includes("\"requiredAccess\":\"admin\"")).toEqual(true);
71
+ });
72
+ globalThis.test("encodes nested menuEntry as an object with sortOrder", () => {
73
+ globalThis.expect(json.includes("\"sortOrder\":0")).toEqual(true);
74
+ });
75
+ globalThis.test("encodes panel positions as an array of strings", () => {
76
+ globalThis.expect(json.includes("\"positions\":[\"platform-summary\"]")).toEqual(true);
77
+ });
78
+ });
79
+
80
+ globalThis.describe("Platform_UIFragmentsApi.sdl", () => {
81
+ globalThis.test("query field declares the list type", () => {
82
+ globalThis.expect(Platform_UIFragmentsApi$ReventlessCore.sdlQueryField.includes("[Platform_UIFragmentEntry!]!")).toEqual(true);
83
+ });
84
+ globalThis.test("sdlTypes includes Platform_UIFragmentEntry", () => {
85
+ let allTypes = Platform_UIFragmentsApi$ReventlessCore.sdlTypes.join("\n");
86
+ globalThis.expect(allTypes.includes("Platform_UIFragmentEntry")).toEqual(true);
87
+ });
88
+ globalThis.test("sdlTypes includes Platform_UIPanel with positions field", () => {
89
+ let allTypes = Platform_UIFragmentsApi$ReventlessCore.sdlTypes.join("\n");
90
+ globalThis.expect(allTypes.includes("positions: [String!]!")).toEqual(true);
91
+ });
92
+ });
93
+
94
+ export {
95
+ panel,
96
+ page,
97
+ state,
98
+ encoded,
99
+ json,
100
+ }
101
+ /* encoded Not a pure module */
@@ -0,0 +1,81 @@
1
+ open JestGlobals
2
+ open AggregateFixtures
3
+
4
+ let _ = beforeEach(() => mock.reset())
5
+
6
+ describe("Aggregate_Callback.handleCommands:", () => {
7
+ describe("single command — new aggregate", () => {
8
+ testPromise("Create returns Ok(reference) and stores 1 event", async () => {
9
+ let results = await Stream.fromIterable([
10
+ makeTopicItem("ref-1", AggSpec.Create({name: "Widget"})),
11
+ ])->TestHandler.handleCommands->Effect.runPromise
12
+ expect((results, mock.getAll()->Array.length))->toEqual(([Ok("ref-1")], 1))
13
+ })
14
+ })
15
+
16
+ describe("command on existing aggregate", () => {
17
+ testPromise("Rename after Create replays history and appends new event", async () => {
18
+ let _ =
19
+ await Stream.fromIterable([
20
+ makeTopicItem("ref-1", AggSpec.Create({name: "Widget"})),
21
+ ])->TestHandler.handleCommands->Effect.runPromise
22
+ let results =
23
+ await Stream.fromIterable([
24
+ makeTopicItem("ref-2", AggSpec.Rename({newName: "Gadget"})),
25
+ ])->TestHandler.handleCommands->Effect.runPromise
26
+ expect((results, mock.getAll()->Array.length))->toEqual(([Ok("ref-2")], 2))
27
+ })
28
+ })
29
+
30
+ describe("behavior returns no events", () => {
31
+ testPromise("Rename on new aggregate returns Ok with no event stored", async () => {
32
+ // Rename on empty history: Behavior.decide(NotCreated, Rename) returns Error(NotFound)
33
+ let results =
34
+ await Stream.fromIterable([
35
+ makeTopicItem("ref-1", AggSpec.Rename({newName: "Gadget"})),
36
+ ])->TestHandler.handleCommands->Effect.runPromise
37
+ expect((results, mock.getAll()->Array.length))->toEqual(([Ok("ref-1")], 0))
38
+ })
39
+ })
40
+
41
+ describe("append failure", () => {
42
+ testPromise("eventLog.append fails → reference returned Error", async () => {
43
+ mock.failNextAppend := true
44
+ let results =
45
+ await Stream.fromIterable([
46
+ makeTopicItem("ref-1", AggSpec.Create({name: "Widget"})),
47
+ ])->TestHandler.handleCommands->Effect.runPromise
48
+ expect(results)->toEqual([Error("ref-1")])
49
+ })
50
+ })
51
+
52
+ describe("multiple commands for same aggregate ID", () => {
53
+ testPromise("Create then Rename in one batch accumulate state correctly", async () => {
54
+ let results =
55
+ await Stream.fromIterable([
56
+ makeTopicItem(~aggId="agg-1", "ref-1", AggSpec.Create({name: "Widget"})),
57
+ makeTopicItem(~aggId="agg-1", "ref-2", AggSpec.Rename({newName: "Gadget"})),
58
+ ])->TestHandler.handleCommands->Effect.runPromise
59
+ // Both commands for same ID processed sequentially
60
+ expect((results, mock.getAll()->Array.length))->toEqual(([Ok("ref-1"), Ok("ref-2")], 2))
61
+ })
62
+ })
63
+
64
+ describe("commands for different aggregate IDs", () => {
65
+ testPromise("each ID processed independently", async () => {
66
+ let results =
67
+ await Stream.fromIterable([
68
+ makeTopicItem(~aggId="agg-a", "ref-a", AggSpec.Create({name: "Alpha"})),
69
+ makeTopicItem(~aggId="agg-b", "ref-b", AggSpec.Create({name: "Beta"})),
70
+ ])->TestHandler.handleCommands->Effect.runPromise
71
+ expect((results->Array.length, mock.getAll()->Array.length))->toEqual((2, 2))
72
+ })
73
+ })
74
+
75
+ describe("empty batch", () => {
76
+ testPromise("returns empty array", async () => {
77
+ let results = await Stream.fromIterable([])->TestHandler.handleCommands->Effect.runPromise
78
+ expect(results)->toEqual([])
79
+ })
80
+ })
81
+ })