@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,115 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Stdlib_Dict from "@rescript/runtime/lib/es6/Stdlib_Dict.js";
4
+ import * as Output$Pulumi from "@reventlessdev/rescript-pulumi-pulumi/src/Output.res.mjs";
5
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
6
+ import * as Pulumi from "@pulumi/pulumi";
7
+ import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
8
+ import * as Task$ReventlessCore from "./Task.res.mjs";
9
+ import * as Logger$ReventlessCore from "../../util/Logger.res.mjs";
10
+ import * as Aggregate$ReventlessCore from "../Aggregate/Aggregate.res.mjs";
11
+ import * as Component$ReventlessCore from "../Component.res.mjs";
12
+ import * as Util_Promise$ReventlessCore from "../../util/Util_Promise.res.mjs";
13
+ import * as ComponentType$ReventlessCore from "../../ComponentType.res.mjs";
14
+
15
+ let log = Logger$ReventlessCore.fromEnv();
16
+
17
+ function pascalCase(s) {
18
+ return s.split("-").flatMap(p => p.split("_")).filter(p => p.length > 0).map(p => p.slice(0, 1).toUpperCase() + p.slice(1, p.length)).join("");
19
+ }
20
+
21
+ function Make(Spec) {
22
+ return RuntimeEnvironment => (EventCollectorChannel => (EventCollectorRuntimeBuilder => (TaskRuntimeBuilder => (TaskBucket => (SpecificSideEffectHandler => {
23
+ let make = (queryBucketName, scheduler, schedulerRoleUrn, publishToAggregates, queryEngine, resourceNaming, allAggregates, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(Task$ReventlessCore.componentType), Spec.name, (extra, extra$1) => {
24
+ let opts_parent = Component$ReventlessCore.toPulumiResource(extra);
25
+ let opts = {
26
+ parent: opts_parent
27
+ };
28
+ let allCommandTopics = Aggregate$ReventlessCore.allCommandTopics(allAggregates);
29
+ let publishToAggregatesQueueUrls = Stdlib_Dict.mapValues(allAggregates, agg => Output$Pulumi.flatMap(agg.commandTopic, ct => {
30
+ let r = ct.resources[0];
31
+ if (r !== undefined) {
32
+ return r.id;
33
+ } else {
34
+ return Pulumi.output("");
35
+ }
36
+ }));
37
+ let publishCommands = (aggregateName, cmdJsons) => Stdlib_Option.getOrThrow(publishToAggregates[aggregateName], undefined)(cmdJsons);
38
+ let config = Spec.setup(queryEngine, queryBucketName, opts);
39
+ let sideEffectHandler = Stdlib_Option.map(config.sideEffects, sideEffects => SpecificSideEffectHandler.make(extra$1, sideEffects, Aggregate$ReventlessCore.allEventTopics(allAggregates), allCommandTopics, undefined, queryEngine, scheduler, resourceNaming, undefined, undefined, opts));
40
+ let taskActionsHandler = (taskActions, operations) => Util_Promise$ReventlessCore.toUnit(Promise.all(taskActions.map(async taskAction => {
41
+ switch (taskAction.TAG) {
42
+ case "PublishCommands" :
43
+ return await publishCommands(taskAction._0, taskAction._1);
44
+ case "CreateSchedule" :
45
+ if (operations !== undefined) {
46
+ return await operations.createSchedule(taskAction._0);
47
+ } else {
48
+ return log.info("Task", undefined, "No SideEffectHandler to create schedule");
49
+ }
50
+ case "DeleteSchedule" :
51
+ if (operations !== undefined) {
52
+ return await operations.deleteSchedule(taskAction._0);
53
+ } else {
54
+ return log.info("Task", undefined, "No SideEffectHandler to delete schedule");
55
+ }
56
+ }
57
+ })));
58
+ let createHandler = (sideEffectHandler, callback) => {
59
+ let handler = TaskBucket.makeHandler(callback);
60
+ if (sideEffectHandler !== undefined) {
61
+ return Component$ReventlessCore.operations(Primitive_option.valFromOption(sideEffectHandler)).apply(operations => (async (event, context) => {
62
+ let taskActions = await handler(event, context);
63
+ return await taskActionsHandler(taskActions, operations);
64
+ }));
65
+ } else {
66
+ return Pulumi.output(async (event, context) => {
67
+ let taskActions = await handler(event, context);
68
+ return await taskActionsHandler(taskActions, undefined);
69
+ });
70
+ }
71
+ };
72
+ let schedulerConfig = Stdlib_Option.flatMap(sideEffectHandler, seh => {
73
+ let sehOutputs = Component$ReventlessCore.outputs(seh);
74
+ return Stdlib_Option.map(sehOutputs.eventCollector.resources[0], r => ({
75
+ schedulerRoleUrn: schedulerRoleUrn,
76
+ targetUrn: r.urn,
77
+ targetName: r.name
78
+ }));
79
+ });
80
+ let bucketNames = Stdlib_Option.map(config.buckets, buckets => Object.fromEntries(buckets.map(bucketSpec => {
81
+ let bucketName = Stdlib_Option.getOr(bucketSpec.bucketName, "Bucket");
82
+ let bucketStem = Stdlib_Option.mapOr(bucketSpec.bucketName, "", pascalCase);
83
+ let name = extra$1 + bucketStem + "Bucket";
84
+ let bucket = TaskBucket.make(name, opts);
85
+ let opts_parent = bucket.parts;
86
+ let opts$1 = {
87
+ parent: opts_parent
88
+ };
89
+ Stdlib_Option.forEach(bucketSpec.callback, callback => TaskRuntimeBuilder.forBucketCallback(createHandler(sideEffectHandler, callback), none => TaskBucket.connect(name, bucket, bucketSpec.bucketMode, allCommandTopics, none, opts$1), 4096, 600, bucketStem, Spec.moduleUrl, publishToAggregatesQueueUrls, schedulerConfig, extra));
90
+ return [
91
+ bucketName,
92
+ bucket.resources[0].id
93
+ ];
94
+ })));
95
+ let sideEffectSources = Stdlib_Option.map(config.sideEffects, sideEffect => sideEffect.map(SideEffect => SideEffect.Source.name));
96
+ return Component$ReventlessCore.setOutputs(extra, {
97
+ name: extra$1,
98
+ bucketNames: bucketNames,
99
+ sideEffectSources: sideEffectSources
100
+ });
101
+ }, opts);
102
+ return {
103
+ Spec: Spec,
104
+ make: make,
105
+ outputs: Component$ReventlessCore.outputs
106
+ };
107
+ })))));
108
+ }
109
+
110
+ export {
111
+ log,
112
+ pascalCase,
113
+ Make,
114
+ }
115
+ /* log Not a pure module */
@@ -0,0 +1,104 @@
1
+ open ReventlessInfra.Api
2
+
3
+ let adminAuth: Reventless.ReadModel.authorization = {
4
+ tableName: "Plugin",
5
+ group: "Admin",
6
+ }
7
+
8
+ // Fields present on `PluginsReadModelSpec.state` for projection/storage purposes
9
+ // but intentionally absent from the public GraphQL surface. Shared with
10
+ // `Platform_Admin_Structure` so the schema announced via `Platform_ComponentDefinitions`
11
+ // stays aligned with the SDL — otherwise AutoUI generates list-view queries
12
+ // for fields the server doesn't expose and every Plugin row fails to load.
13
+ let pluginExcludeFields: array<string> = [
14
+ "eventCollector",
15
+ "extensionPointNames",
16
+ "extensionNames",
17
+ ]
18
+
19
+ // Additional fields the SDL exposes but the Plugin list view should NOT
20
+ // surface — they're option-of-nested-object types (e.g. apiSchemaFragment,
21
+ // uiFragments, structure) which AutoUI currently renders as scalar columns
22
+ // and queries without a sub-selection, failing schema validation. Other
23
+ // callers (host-shell's Platform_ComponentDefinitions / Platform_UIFragments)
24
+ // keep querying them via dedicated fields and resolver paths.
25
+ let pluginUIOnlyExcludeFields: array<string> = pluginExcludeFields->Array.concat([
26
+ "apiSchemaFragment",
27
+ "uiFragments",
28
+ "structure",
29
+ ])
30
+
31
+ // Admin read-model query entries are generated from each spec the same way
32
+ // ordinary read models are (Plugin_Builder.res): `subIdField` flows from the
33
+ // spec's `subIdConfig` and `indexQueries` from `config.indexes`, so
34
+ // `GraphQL_FragmentGenerator` emits the matching `<single>Items` (composite key)
35
+ // and `<single>By<Index>` (GSI) fields automatically — in lockstep with the
36
+ // shared resolver layer (`QueryDbResolvers_{AppSync,GraphQL}`). This closes the
37
+ // admin/ordinary parity gap: an admin read model that declares a sub-id or an
38
+ // `@index` now gets the same auto-generated GraphQL surface ordinary read models
39
+ // do, instead of just `single` + `list`.
40
+ let indexQueriesOfConfig = (config: Reventless.ReadModel.config) =>
41
+ config.indexes->Array.length > 0 ? Some(config.indexes) : None
42
+
43
+ // The UIFragmentRegistry read model is queried exclusively via the explicit
44
+ // flat `Platform_UIFragments: [Platform_UIFragmentEntry!]!` field declared in
45
+ // `Platform_UIFragmentsApi.res` (and resolved by `Platform_UIFragments_Lambda.res`
46
+ // on AWS / the seeded QueryDb in-memory). Reintroducing an auto-generated
47
+ // connection field here collides with that name on SDL composition.
48
+ let queryEntries: array<querySchemaEntry> = [
49
+ {
50
+ // The read-model `Spec.name` is "Plugins" (plural — the read-model cluster
51
+ // is named after the list, see `PluginsReadModelSpec`), while the GraphQL
52
+ // return type stays singular as `Platform_Plugin`. `specName` is what
53
+ // `QueryDbResolvers_{AppSync,GraphQL}.make` looks up in
54
+ // `queryFieldNamesRegistry`, so it must match `Spec.name`, not the
55
+ // singular form derived from `returnTypeName`.
56
+ specName: PluginsReadModelSpec.name,
57
+ singleFieldName: Api_Naming.adminField(~name="Plugin"),
58
+ listFieldName: Api_Naming.adminField(~name="Plugins"),
59
+ returnTypeName: Api_Naming.adminField(~name="Plugin"),
60
+ stateSchema: PluginsReadModelSpec.stateSchema->S.castToUnknown,
61
+ authorization: Some(adminAuth),
62
+ excludeFields: pluginExcludeFields,
63
+ subIdField: ?PluginsReadModelSpec.subIdConfig->Option.map((c: Reventless.ReadModel.subIdConfig<_>) => c.subIdField),
64
+ indexQueries: ?indexQueriesOfConfig(PluginsReadModelSpec.config),
65
+ },
66
+ ]
67
+
68
+ // Plugin aggregate admin mutations — derived statically from PluginSpec.command,
69
+ // so the generated SDL contains one field per non-`@noApi` variant carrying that
70
+ // variant's command fields as args. Since the admin commands are name-keyed and
71
+ // version-scoped (`Activate(version)` / `Deactivate(version)` / `Retire(version)`),
72
+ // the fields are e.g. `Platform_Plugin_Activate(id: ID!, _0: String!): CommandResult!`
73
+ // (`id` = plugin name = aggregate instance; `_0` = target version). `Retire` is
74
+ // API-exposed (manual archive, §2.5). Internal-protocol variants (`Heartbeat`,
75
+ // `Connect`, `Disconnect`, `ReportIncompatibility`) carry `@noApi` and are filtered
76
+ // out by `ApiNoApiHelpers.filterNoApiVariants`. The same `commandSchema`-driven
77
+ // entry feeds the MCP tool generator, so the MCP tools gain the version arg and
78
+ // the `Plugin_Retire` tool automatically.
79
+ //
80
+ // The matching resolver wiring (registry population + `mutationResolverHook` /
81
+ // `mutationBindHook` firing for the in-memory and AWS auto-flow) lives in
82
+ // `Plugin_Helpers.registerAdminAggregateMutations`, invoked from
83
+ // `Platform_Admin.construct` over the `~aggregates` parameter. Both paths derive
84
+ // the same field names so the SDL and the resolvers stay aligned.
85
+ let pluginAggregateMutationEntries: array<mutationSchemaEntry> = {
86
+ let commandSchema = PluginSpec.commandSchema->S.castToUnknown
87
+ let constructorNames = Reventless.DcbTag.extractAllVariantNames(PluginSpec.commandSchema)
88
+ let filteredConstructorNames =
89
+ ApiNoApiHelpers.filterNoApiVariants(constructorNames, commandSchema)
90
+ let fieldNames =
91
+ filteredConstructorNames->Array.map(cname =>
92
+ Api_Naming.adminField(~name=PluginSpec.name ++ "_" ++ cname)
93
+ )
94
+ if fieldNames->Array.length === 0 {
95
+ []
96
+ } else {
97
+ [
98
+ {
99
+ ReventlessInfra.Api.fieldNames,
100
+ commandSchema,
101
+ },
102
+ ]
103
+ }
104
+ }
@@ -0,0 +1,64 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
4
+ import * as DcbTag$Reventless from "@reventlessdev/reventless-spec/src/components/DcbTag.res.mjs";
5
+ import * as Api_Naming$ReventlessCore from "../../components/Api/Api_Naming.res.mjs";
6
+ import * as PluginSpec$ReventlessCore from "../lifecycle/PluginSpec.res.mjs";
7
+ import * as ApiNoApiHelpers$ReventlessCore from "../../components/Api/ApiNoApiHelpers.res.mjs";
8
+ import * as PluginsReadModelSpec$ReventlessCore from "../lifecycle/PluginsReadModelSpec.res.mjs";
9
+
10
+ let adminAuth = {
11
+ tableName: "Plugin",
12
+ group: "Admin"
13
+ };
14
+
15
+ let pluginExcludeFields = [
16
+ "eventCollector",
17
+ "extensionPointNames",
18
+ "extensionNames"
19
+ ];
20
+
21
+ let pluginUIOnlyExcludeFields = pluginExcludeFields.concat([
22
+ "apiSchemaFragment",
23
+ "uiFragments",
24
+ "structure"
25
+ ]);
26
+
27
+ function indexQueriesOfConfig(config) {
28
+ if (config.indexes.length !== 0) {
29
+ return config.indexes;
30
+ }
31
+ }
32
+
33
+ let queryEntries = [{
34
+ singleFieldName: Api_Naming$ReventlessCore.adminField("Plugin"),
35
+ listFieldName: Api_Naming$ReventlessCore.adminField("Plugins"),
36
+ returnTypeName: Api_Naming$ReventlessCore.adminField("Plugin"),
37
+ stateSchema: PluginsReadModelSpec$ReventlessCore.stateSchema,
38
+ specName: PluginsReadModelSpec$ReventlessCore.name,
39
+ authorization: adminAuth,
40
+ excludeFields: pluginExcludeFields,
41
+ subIdField: Stdlib_Option.map(undefined, c => c.subIdField),
42
+ indexQueries: indexQueriesOfConfig(PluginsReadModelSpec$ReventlessCore.config)
43
+ }];
44
+
45
+ let constructorNames = DcbTag$Reventless.extractAllVariantNames(PluginSpec$ReventlessCore.commandSchema);
46
+
47
+ let filteredConstructorNames = ApiNoApiHelpers$ReventlessCore.filterNoApiVariants(constructorNames, PluginSpec$ReventlessCore.commandSchema);
48
+
49
+ let fieldNames = filteredConstructorNames.map(cname => Api_Naming$ReventlessCore.adminField(PluginSpec$ReventlessCore.name + "_" + cname));
50
+
51
+ let pluginAggregateMutationEntries = fieldNames.length === 0 ? [] : [{
52
+ fieldNames: fieldNames,
53
+ commandSchema: PluginSpec$ReventlessCore.commandSchema
54
+ }];
55
+
56
+ export {
57
+ adminAuth,
58
+ pluginExcludeFields,
59
+ pluginUIOnlyExcludeFields,
60
+ indexQueriesOfConfig,
61
+ queryEntries,
62
+ pluginAggregateMutationEntries,
63
+ }
64
+ /* pluginUIOnlyExcludeFields Not a pure module */
@@ -0,0 +1,100 @@
1
+ let componentType = ComponentType.Plugin
2
+
3
+ type outputs = ReventlessInfra.Plugin.outputs
4
+
5
+ type t
6
+ type component = Component.t<t, outputs, unit>
7
+
8
+ module type T = {
9
+ type api
10
+ type role
11
+ let make: (
12
+ ~name: string,
13
+ ~heartbeatInterval: int,
14
+ ~extensionPoints: array<module(ReventlessInfra.ExtensionPoint.T)>=?,
15
+ ~extensions: array<module(ReventlessInfra.Extension.Blueprint)>=?,
16
+ ~aggregates: array<module(ReventlessInfra.Aggregate.T with type api = api)>=?,
17
+ ~readModels: array<
18
+ module(ReventlessInfra.ReadModel.T with type api = api and type role = role),
19
+ >=?,
20
+ ~tasks: array<module(ReventlessInfra.Task.T)>=?,
21
+ ~stateChangeSlices: array<module(ReventlessInfra.StateChangeSlice.T)>=?,
22
+ ~stateViewSlices: array<module(ReventlessInfra.StateViewSlice.T)>=?,
23
+ ~automationSlices: array<module(ReventlessInfra.AutomationSlice.T)>=?,
24
+ ~outboundTranslationSlices: array<module(ReventlessInfra.OutboundTranslationSlice.T)>=?,
25
+ ~inboundTranslationSlices: array<module(ReventlessInfra.InboundTranslationSlice.T)>=?,
26
+ ~uiFragments: Reventless.Plugin.uiFragmentManifest=?,
27
+ ~pluginStructure: Reventless.Plugin.pluginStructure=?,
28
+ ~opts: Pulumi.ComponentResource.options=?,
29
+ ) => component
30
+ let makeAutoUIManifest: (
31
+ ~remoteEntryUrl: string,
32
+ ~name: string,
33
+ ~pluginStructure: Reventless.Plugin.pluginStructure,
34
+ ~readModelPositions: array<string>=?,
35
+ ~aggregatePositions: array<string>=?,
36
+ ) => Reventless.Plugin.uiFragmentManifest
37
+ let makePluginDefinition: (
38
+ ~name: string,
39
+ ~aggregates: array<module(ReventlessInfra.Aggregate.T with type api = api)>=?,
40
+ ~readModels: array<module(ReventlessInfra.ReadModel.T with type api = api and type role = role)>=?,
41
+ ~stateViewSlices: array<module(ReventlessInfra.StateViewSlice.T)>=?,
42
+ ~stateChangeSlices: array<module(ReventlessInfra.StateChangeSlice.T)>=?,
43
+ ~automationSlices: array<module(ReventlessInfra.AutomationSlice.T)>=?,
44
+ ~outboundTranslationSlices: array<module(ReventlessInfra.OutboundTranslationSlice.T)>=?,
45
+ ~inboundTranslationSlices: array<module(ReventlessInfra.InboundTranslationSlice.T)>=?,
46
+ ~extensions: array<module(ReventlessInfra.Extension.Blueprint)>=?,
47
+ ~extensionPoints: array<module(ReventlessInfra.ExtensionPointMapping.Mapping)>=?,
48
+ ) => Reventless.Plugin.pluginStructure
49
+ }
50
+
51
+ let makeId = (name, version) => `${name}@${version}`
52
+
53
+ // Inverse of `makeId` for the GraphQL boundary. Internally a plugin id is
54
+ // `name@version` so the in-memory platform's plugin store can key by it, but
55
+ // the platform invariant is one version per plugin at a time — so anything
56
+ // crossing into the UI (routes, federation remote name, subscription
57
+ // payloads) gets the bare name. If the input has no `@`, returns it as-is.
58
+ let name = (id: string): string =>
59
+ id->String.split("@")->Array.get(0)->Option.getOr(id)
60
+
61
+ // Version segment of a plugin id (`name@version`). Empty string when the id
62
+ // carries no `@` (e.g. the synthetic admin plugin id).
63
+ let version = (id: string): string =>
64
+ id->String.split("@")->Array.get(1)->Option.getOr("")
65
+
66
+ // Compare two plugin version strings (e.g. "0.10.0-alpha.73"), newest-first:
67
+ // returns 1 when `a` is newer than `b`, -1 when older, 0 when equal. Separators
68
+ // (`.`, `-`, `+`) are normalised, then segments compare numerically when both
69
+ // sides are numeric and lexically otherwise — enough to pick the latest among
70
+ // the monotonically-increasing lerna versions this platform produces. Used by
71
+ // the admin manifest resolvers to enforce the one-version-per-plugin invariant
72
+ // when more than one version lingers in `Connected` state.
73
+ let compareVersions = (a: string, b: string): int => {
74
+ let parts = s => s->String.replaceRegExp(%re("/[-+]/g"), ".")->String.split(".")
75
+ let pa = parts(a)
76
+ let pb = parts(b)
77
+ let len = pa->Array.length > pb->Array.length ? pa->Array.length : pb->Array.length
78
+ let result = ref(0)
79
+ let i = ref(0)
80
+ while result.contents == 0 && i.contents < len {
81
+ let sa = pa->Array.get(i.contents)->Option.getOr("")
82
+ let sb = pb->Array.get(i.contents)->Option.getOr("")
83
+ switch (Int.fromString(sa), Int.fromString(sb)) {
84
+ | (Some(na), Some(nb)) =>
85
+ if na > nb {
86
+ result := 1
87
+ } else if na < nb {
88
+ result := -1
89
+ }
90
+ | _ =>
91
+ if sa > sb {
92
+ result := 1
93
+ } else if sa < sb {
94
+ result := -1
95
+ }
96
+ }
97
+ i := i.contents + 1
98
+ }
99
+ result.contents
100
+ }
@@ -0,0 +1,61 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Stdlib_Int from "@rescript/runtime/lib/es6/Stdlib_Int.js";
4
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
5
+
6
+ function makeId(name, version) {
7
+ return name + `@` + version;
8
+ }
9
+
10
+ function name(id) {
11
+ return Stdlib_Option.getOr(id.split("@")[0], id);
12
+ }
13
+
14
+ function version(id) {
15
+ return Stdlib_Option.getOr(id.split("@")[1], "");
16
+ }
17
+
18
+ function compareVersions(a, b) {
19
+ let parts = s => s.replace(/[-+]/g, ".").split(".");
20
+ let pa = parts(a);
21
+ let pb = parts(b);
22
+ let len = pa.length > pb.length ? pa.length : pb.length;
23
+ let result = 0;
24
+ let i = 0;
25
+ while (result === 0 && i < len) {
26
+ let sa = Stdlib_Option.getOr(pa[i], "");
27
+ let sb = Stdlib_Option.getOr(pb[i], "");
28
+ let match = Stdlib_Int.fromString(sa, undefined);
29
+ let match$1 = Stdlib_Int.fromString(sb, undefined);
30
+ let exit = 0;
31
+ if (match !== undefined && match$1 !== undefined) {
32
+ if (match > match$1) {
33
+ result = 1;
34
+ } else if (match < match$1) {
35
+ result = -1;
36
+ }
37
+ } else {
38
+ exit = 1;
39
+ }
40
+ if (exit === 1) {
41
+ if (sa > sb) {
42
+ result = 1;
43
+ } else if (sa < sb) {
44
+ result = -1;
45
+ }
46
+ }
47
+ i = i + 1 | 0;
48
+ };
49
+ return result;
50
+ }
51
+
52
+ let componentType = "Plugin";
53
+
54
+ export {
55
+ componentType,
56
+ makeId,
57
+ name,
58
+ version,
59
+ compareVersions,
60
+ }
61
+ /* No side effect */