@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,51 @@
1
+ // Bounded in-process LRU cache — see Lru.resi for the contract.
2
+ //
3
+ // Recency is tracked via the backing JS Map's insertion order: `get`/`put`
4
+ // delete-then-set the touched key so it moves to the end, leaving the
5
+ // least-recently-used key as the first element of `Map.keys`. `put` evicts that
6
+ // first key once `size` exceeds `capacity`.
7
+
8
+ type t<'k, 'v> = {
9
+ capacity: int,
10
+ store: Map.t<'k, 'v>,
11
+ }
12
+
13
+ let make = (~capacity: int): t<'k, 'v> => {
14
+ capacity,
15
+ store: Map.make(),
16
+ }
17
+
18
+ let get = (cache: t<'k, 'v>, key: 'k): option<'v> =>
19
+ switch cache.store->Map.get(key) {
20
+ | Some(value) =>
21
+ // Touch: re-insert so this key becomes most-recently-used.
22
+ let _ = cache.store->Map.delete(key)
23
+ cache.store->Map.set(key, value)
24
+ Some(value)
25
+ | None => None
26
+ }
27
+
28
+ let put = (cache: t<'k, 'v>, key: 'k, value: 'v): unit =>
29
+ if cache.capacity <= 0 {
30
+ // Disabled cache — nothing to store.
31
+ ()
32
+ } else {
33
+ // Delete first so an update also moves the key to most-recently-used.
34
+ let _ = cache.store->Map.delete(key)
35
+ cache.store->Map.set(key, value)
36
+ if cache.store->Map.size > cache.capacity {
37
+ // Evict the least-recently-used entry = oldest insertion = first key.
38
+ switch cache.store->Map.keys->Array.fromIterator->Array.get(0) {
39
+ | Some(oldest) => let _ = cache.store->Map.delete(oldest)
40
+ | None => ()
41
+ }
42
+ }
43
+ }
44
+
45
+ let invalidate = (cache: t<'k, 'v>, key: 'k): unit => {
46
+ let _ = cache.store->Map.delete(key)
47
+ }
48
+
49
+ let clear = (cache: t<'k, 'v>): unit => cache.store->Map.clear
50
+
51
+ let size = (cache: t<'k, 'v>): int => cache.store->Map.size
@@ -0,0 +1,59 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
4
+
5
+ function make(capacity) {
6
+ return {
7
+ capacity: capacity,
8
+ store: new Map()
9
+ };
10
+ }
11
+
12
+ function get(cache, key) {
13
+ let value = cache.store.get(key);
14
+ if (value === undefined) {
15
+ return;
16
+ }
17
+ let value$1 = Primitive_option.valFromOption(value);
18
+ cache.store.delete(key);
19
+ cache.store.set(key, value$1);
20
+ return Primitive_option.some(value$1);
21
+ }
22
+
23
+ function put(cache, key, value) {
24
+ if (cache.capacity <= 0) {
25
+ return;
26
+ }
27
+ cache.store.delete(key);
28
+ cache.store.set(key, value);
29
+ if (cache.store.size <= cache.capacity) {
30
+ return;
31
+ }
32
+ let oldest = Array.from(cache.store.keys())[0];
33
+ if (oldest !== undefined) {
34
+ cache.store.delete(Primitive_option.valFromOption(oldest));
35
+ return;
36
+ }
37
+ }
38
+
39
+ function invalidate(cache, key) {
40
+ cache.store.delete(key);
41
+ }
42
+
43
+ function clear(cache) {
44
+ cache.store.clear();
45
+ }
46
+
47
+ function size(cache) {
48
+ return cache.store.size;
49
+ }
50
+
51
+ export {
52
+ make,
53
+ get,
54
+ put,
55
+ invalidate,
56
+ clear,
57
+ size,
58
+ }
59
+ /* No side effect */
@@ -0,0 +1,32 @@
1
+ /**
2
+ A bounded, in-process least-recently-used cache.
3
+
4
+ Backs the StateChangeSlice decision-model projection cache
5
+ (`docs/plans/done/dcb-decision-model-projection-cache.md`): a warm Lambda
6
+ instance keeps the `(decisionState, readHead)` it last derived per query so the
7
+ next same-entity command reads only the delta instead of folding full history.
8
+
9
+ `get` and `put` both mark the key most-recently-used. Once `size` exceeds
10
+ `capacity`, `put` evicts the least-recently-used key. A `capacity <= 0` disables
11
+ the cache entirely (`get` always misses, `put` is a no-op) so a slice can opt out.
12
+ */
13
+
14
+ type t<'k, 'v>
15
+
16
+ /** Creates an empty cache holding at most `capacity` entries (`<= 0` disables it). */
17
+ let make: (~capacity: int) => t<'k, 'v>
18
+
19
+ /** Looks up `key`, marking it most-recently-used on a hit. */
20
+ let get: (t<'k, 'v>, 'k) => option<'v>
21
+
22
+ /** Inserts/updates `key`, marking it most-recently-used and evicting the LRU entry if over capacity. */
23
+ let put: (t<'k, 'v>, 'k, 'v) => unit
24
+
25
+ /** Drops `key` if present. */
26
+ let invalidate: (t<'k, 'v>, 'k) => unit
27
+
28
+ /** Drops every entry. */
29
+ let clear: (t<'k, 'v>) => unit
30
+
31
+ /** Current number of live entries. */
32
+ let size: (t<'k, 'v>) => int
@@ -0,0 +1,32 @@
1
+ // Provider-neutral metric event emission.
2
+ //
3
+ // Emits one structured JSON line per occurrence — the same posture as `Logger`
4
+ // (generic structured stdout, no provider vocabulary). Core does NOT know about
5
+ // any provider's metric system: a collector/adapter turns these lines into real
6
+ // metrics. On AWS a CloudWatch metric filter (defined in `reventless-aws`,
7
+ // deploy-time) matches the discriminator field and extracts the `slice`
8
+ // dimension + value; another provider can match the same generic shape.
9
+ //
10
+ // Suppressed outside a JSON sink so TTY dev runs stay clean. Used by the DCB
11
+ // StateChangeSlice callback to surface append-retry / append-conflict rates per
12
+ // slice (see docs/analysis/dcb-high-contention-handling.md §6).
13
+
14
+ // Discriminator key a metric collector keys off. Stable — changing it is a
15
+ // breaking change for any configured metric filter.
16
+ let discriminator = "reventlessMetric"
17
+
18
+ // Builds the generic metric line. Pure, so the shape is unit-testable.
19
+ let metricLine = (~metric: string, ~slice: string, ~value: int=1): JSON.t =>
20
+ Dict.fromArray([
21
+ (discriminator, metric->JSON.Encode.string),
22
+ ("slice", slice->JSON.Encode.string),
23
+ ("value", value->JSON.Encode.int),
24
+ ("unit", "Count"->JSON.Encode.string),
25
+ ])->JSON.Encode.object
26
+
27
+ // Emits a single count for `metric`, dimensioned by `slice`. No-op outside a
28
+ // JSON sink. `value` defaults to 1 (one occurrence).
29
+ let emitCount = (~metric: string, ~slice: string, ~value: int=1): unit =>
30
+ if Reventless.AnsiStyle.isJsonSink() {
31
+ Console.log(metricLine(~metric, ~slice, ~value)->JSON.stringify)
32
+ }
@@ -0,0 +1,42 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as AnsiStyle$Reventless from "@reventlessdev/reventless-spec/src/AnsiStyle.res.mjs";
4
+
5
+ let discriminator = "reventlessMetric";
6
+
7
+ function metricLine(metric, slice, valueOpt) {
8
+ let value = valueOpt !== undefined ? valueOpt : 1;
9
+ return Object.fromEntries([
10
+ [
11
+ discriminator,
12
+ metric
13
+ ],
14
+ [
15
+ "slice",
16
+ slice
17
+ ],
18
+ [
19
+ "value",
20
+ value
21
+ ],
22
+ [
23
+ "unit",
24
+ "Count"
25
+ ]
26
+ ]);
27
+ }
28
+
29
+ function emitCount(metric, slice, valueOpt) {
30
+ let value = valueOpt !== undefined ? valueOpt : 1;
31
+ if (AnsiStyle$Reventless.isJsonSink()) {
32
+ console.log(JSON.stringify(metricLine(metric, slice, value)));
33
+ return;
34
+ }
35
+ }
36
+
37
+ export {
38
+ discriminator,
39
+ metricLine,
40
+ emitCount,
41
+ }
42
+ /* AnsiStyle-Reventless Not a pure module */
@@ -0,0 +1,16 @@
1
+ let apply: (Pulumi.Output.t<string>, string => string) => Pulumi.Output.t<string> = (output, f) =>
2
+ if output->typeof == #string {
3
+ output->Pulumi.Output.unwrap->Pulumi.Output.make
4
+ } else {
5
+ output
6
+ }->Pulumi.Output.apply(f)
7
+
8
+ let flatMap: (
9
+ Pulumi.Output.t<string>,
10
+ string => Pulumi.Output.t<string>,
11
+ ) => Pulumi.Output.t<string> = (output, f) =>
12
+ if output->typeof == #string {
13
+ output->Pulumi.Output.unwrap->Pulumi.Output.make
14
+ } else {
15
+ output
16
+ }->Pulumi.Output.flatMap(f)
@@ -0,0 +1,20 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Output$Pulumi from "@reventlessdev/rescript-pulumi-pulumi/src/Output.res.mjs";
4
+ import * as Pulumi from "@pulumi/pulumi";
5
+
6
+ function apply(output, f) {
7
+ return (
8
+ typeof output === "string" ? Pulumi.output(output) : output
9
+ ).apply(f);
10
+ }
11
+
12
+ function flatMap(output, f) {
13
+ return Output$Pulumi.flatMap(typeof output === "string" ? Pulumi.output(output) : output, f);
14
+ }
15
+
16
+ export {
17
+ apply,
18
+ flatMap,
19
+ }
20
+ /* Output-Pulumi Not a pure module */
@@ -0,0 +1,6 @@
1
+ let get: Pulumi.Output.t<string> => string = output =>
2
+ if output->typeof == #string {
3
+ output->Pulumi.Output.unwrap
4
+ } else {
5
+ output->Pulumi.Output.get
6
+ }
@@ -0,0 +1,15 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+
4
+ function get(output) {
5
+ if (typeof output === "string") {
6
+ return output;
7
+ } else {
8
+ return output.get();
9
+ }
10
+ }
11
+
12
+ export {
13
+ get,
14
+ }
15
+ /* No side effect */
@@ -0,0 +1,9 @@
1
+ let logOutput: (string, Pulumi.Output.t<'a>) => unit = (desc, output) =>
2
+ if output->Pulumi.Output.isOutput {
3
+ output
4
+ ->Pulumi.Output.apply(item => Console.log2(desc, item))
5
+ ->ignore
6
+ } else {
7
+ let itemType = (output->typeof :> string)
8
+ Console.error(desc ++ " ~}> was expected to be a Pulumi.Output.t, but is " ++ itemType ++ "!")
9
+ }
@@ -0,0 +1,19 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Pulumi from "@pulumi/pulumi";
4
+
5
+ function logOutput(desc, output) {
6
+ if (Pulumi.Output.isInstance(output)) {
7
+ output.apply(item => {
8
+ console.log(desc, item);
9
+ });
10
+ return;
11
+ }
12
+ let itemType = typeof output;
13
+ console.error(desc + " ~}> was expected to be a Pulumi.Output.t, but is " + itemType + "!");
14
+ }
15
+
16
+ export {
17
+ logOutput,
18
+ }
19
+ /* @pulumi/pulumi Not a pure module */
@@ -0,0 +1,14 @@
1
+ open ReventlessInfra.Adapter
2
+
3
+ type runtimeQueryExn = string => resource
4
+
5
+ type deploytimeQueryExn = string => resource
6
+
7
+ let unwrapResource = (resource, resourceType, name) =>
8
+ switch resource {
9
+ | Some(resource) => resource
10
+ | None =>
11
+ JsError.throwWithMessage(
12
+ `ResourceQuery: Couldn't find ${resourceType} for Service/Task ${name}.`,
13
+ )
14
+ }
@@ -0,0 +1,17 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
4
+ import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
5
+
6
+ function unwrapResource(resource, resourceType, name) {
7
+ if (resource !== undefined) {
8
+ return Primitive_option.valFromOption(resource);
9
+ } else {
10
+ return Stdlib_JsError.throwWithMessage(`ResourceQuery: Couldn't find ` + resourceType + ` for Service/Task ` + name + `.`);
11
+ }
12
+ }
13
+
14
+ export {
15
+ unwrapResource,
16
+ }
17
+ /* No side effect */
@@ -0,0 +1,17 @@
1
+ let bucketNameOfAllTasks: (
2
+ array<Task.outputs>,
3
+ ~taskName: string,
4
+ ~bucketName: string,
5
+ ) => option<string> = (tasks, ~taskName, ~bucketName) =>
6
+ tasks
7
+ ->Array.find(task => task.name == taskName)
8
+ ->Option.flatMap(task =>
9
+ task.bucketNames->Option.flatMap(buckets => buckets->Dict.get(bucketName))
10
+ )
11
+ ->Option.map(bucket => bucket->Pulumi.Output.get)
12
+
13
+ let bucketNameOfTaskExn = (tasks, ~taskName, ~bucketName) =>
14
+ bucketNameOfAllTasks(tasks, ~taskName, ~bucketName)->ResourceQuery.unwrapResource(
15
+ "Bucket",
16
+ taskName,
17
+ )
@@ -0,0 +1,18 @@
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 ResourceQuery$ReventlessCore from "./ResourceQuery.res.mjs";
5
+
6
+ function bucketNameOfAllTasks(tasks, taskName, bucketName) {
7
+ return Stdlib_Option.map(Stdlib_Option.flatMap(tasks.find(task => task.name === taskName), task => Stdlib_Option.flatMap(task.bucketNames, buckets => buckets[bucketName])), bucket => bucket.get());
8
+ }
9
+
10
+ function bucketNameOfTaskExn(tasks, taskName, bucketName) {
11
+ return ResourceQuery$ReventlessCore.unwrapResource(bucketNameOfAllTasks(tasks, taskName, bucketName), "Bucket", taskName);
12
+ }
13
+
14
+ export {
15
+ bucketNameOfAllTasks,
16
+ bucketNameOfTaskExn,
17
+ }
18
+ /* No side effect */
@@ -0,0 +1,124 @@
1
+ open Reventless.Schedule
2
+
3
+ module DateCalc = {
4
+ /*** Immutable functions to calculate new Dates without mutation the arguments */
5
+ @new
6
+ external dateFromDate: Date.t => Date.t = "Date"
7
+
8
+ let addMinutes: (Date.t, int) => Date.t = (date, minutes) => {
9
+ let result = date->dateFromDate
10
+ result->Date.setUTCMinutes(result->Date.getUTCMinutes + minutes)
11
+ result
12
+ }
13
+
14
+ let addDays: (Date.t, int) => Date.t = (date, days) => {
15
+ let result = date->dateFromDate
16
+ result->Date.setUTCDate(result->Date.getUTCDate + days)
17
+ result
18
+ }
19
+ }
20
+
21
+ let forChannel = (~name, ~channelId, ~resourceNaming: ReventlessInfra.ResourceNaming.operations) =>
22
+ name->resourceNaming.validateName ++ ("-" ++ channelId->String.split("-")->Array.getUnsafe(1))
23
+
24
+ let minutesFromNow = minutes => {
25
+ let m = Date.make()->DateCalc.addMinutes(minutes)
26
+ Single(
27
+ m->Date.getUTCFullYear,
28
+ m->Date.getUTCMonth + 1,
29
+ m->Date.getUTCDate,
30
+ m->Date.getUTCHours,
31
+ m->Date.getUTCMinutes,
32
+ )
33
+ }
34
+
35
+ let nextTime = (h: hour, m: minute) => {
36
+ let now = Date.make()
37
+ let today = {
38
+ let epoch = Date.make()
39
+ epoch->Date.setUTCHours(h)
40
+ epoch->Date.setUTCMinutes(m)
41
+ epoch->Date.setUTCSeconds(0)
42
+ epoch
43
+ }
44
+ let tomorrow = today->DateCalc.addDays(1)
45
+ today < now
46
+ ? Single(
47
+ tomorrow->Date.getUTCFullYear,
48
+ tomorrow->Date.getUTCMonth + 1,
49
+ tomorrow->Date.getUTCDate,
50
+ tomorrow->Date.getUTCHours,
51
+ tomorrow->Date.getUTCMinutes,
52
+ )
53
+ : Single(
54
+ today->Date.getUTCFullYear,
55
+ today->Date.getUTCMonth + 1,
56
+ today->Date.getUTCDate,
57
+ today->Date.getUTCHours,
58
+ today->Date.getUTCMinutes,
59
+ )
60
+ }
61
+
62
+ exception ScheduleNotCreated(schedule)
63
+ exception ScheduleNotDeleted(string)
64
+
65
+ let create = (
66
+ ~scheduler: Scheduler.operations,
67
+ ~channelResources,
68
+ ~resourceNaming: ReventlessInfra.ResourceNaming.operations,
69
+ ) =>
70
+ async schedule => {
71
+ let name = schedule.name->resourceNaming.validateName
72
+ let schedule = {...schedule, name}
73
+ let createSchedule = scheduler.createSchedule
74
+ let exit =
75
+ await Effect.tryPromise(
76
+ ~catch=err => Util.Error.messageFromUnknown(err, "schedule create"),
77
+ () => createSchedule(channelResources, schedule),
78
+ )
79
+ ->Effect.tap(_ =>
80
+ EffectLogger.logInfo(
81
+ ~comp=__MODULE__,
82
+ `create: created ${schedule->JSON.stringifyAny->Option.getOr("")}`,
83
+ )
84
+ )
85
+ ->Effect.runPromiseExit
86
+ if !(exit->Exit.isSuccess) {
87
+ let errMsg = exit->Exit.match(
88
+ ~onFailure=cause => cause->Cause.pretty,
89
+ ~onSuccess=_ => "unknown",
90
+ )
91
+ EffectLogger.logError(
92
+ ~comp=__MODULE__,
93
+ `create: couldn't create ${schedule
94
+ ->JSON.stringifyAny
95
+ ->Option.getOr("")}: ${errMsg}`,
96
+ )->Effect.runSync
97
+ throw(ScheduleNotCreated(schedule))
98
+ }
99
+ }
100
+
101
+ let delete = (
102
+ ~scheduler: Scheduler.operations,
103
+ ~channelResources,
104
+ ~resourceNaming: ReventlessInfra.ResourceNaming.operations,
105
+ ) =>
106
+ async name => {
107
+ let name = name->resourceNaming.validateName
108
+ let deleteSchedule = scheduler.deleteSchedule
109
+ let exit =
110
+ await Effect.tryPromise(
111
+ ~catch=err => Util.Error.messageFromUnknown(err, "schedule delete"),
112
+ () => deleteSchedule(channelResources, name),
113
+ )
114
+ ->Effect.tap(_ => EffectLogger.logInfo(~comp=__MODULE__, `delete: deleted ${name}`))
115
+ ->Effect.runPromiseExit
116
+ if !(exit->Exit.isSuccess) {
117
+ let errMsg = exit->Exit.match(
118
+ ~onFailure=cause => cause->Cause.pretty,
119
+ ~onSuccess=_ => "unknown",
120
+ )
121
+ EffectLogger.logError(~comp=__MODULE__, `delete: couldn't delete ${name}: ${errMsg}`)->Effect.runSync
122
+ throw(ScheduleNotDeleted(name))
123
+ }
124
+ }
@@ -0,0 +1,132 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Exit from "@reventlessdev/rescript-effect/src/Exit.res.mjs";
4
+ import * as Effect from "@reventlessdev/rescript-effect/src/Effect.res.mjs";
5
+ import * as Exit$1 from "effect/Exit";
6
+ import * as Cause from "effect/Cause";
7
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
8
+ import * as Effect$1 from "effect/Effect";
9
+ import * as Primitive_object from "@rescript/runtime/lib/es6/Primitive_object.js";
10
+ import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
11
+ import * as Util_Error$ReventlessCore from "./Util_Error.res.mjs";
12
+ import * as EffectLogger$ReventlessCore from "./EffectLogger.res.mjs";
13
+
14
+ function addMinutes(date, minutes) {
15
+ let result = new Date(date);
16
+ result.setUTCMinutes(result.getUTCMinutes() + minutes | 0);
17
+ return result;
18
+ }
19
+
20
+ function addDays(date, days) {
21
+ let result = new Date(date);
22
+ result.setUTCDate(result.getUTCDate() + days | 0);
23
+ return result;
24
+ }
25
+
26
+ let DateCalc = {
27
+ addMinutes: addMinutes,
28
+ addDays: addDays
29
+ };
30
+
31
+ function forChannel(name, channelId, resourceNaming) {
32
+ return resourceNaming.validateName(name) + ("-" + channelId.split("-")[1]);
33
+ }
34
+
35
+ function minutesFromNow(minutes) {
36
+ let m = addMinutes(new Date(), minutes);
37
+ return {
38
+ TAG: "Single",
39
+ _0: m.getUTCFullYear(),
40
+ _1: m.getUTCMonth() + 1 | 0,
41
+ _2: m.getUTCDate(),
42
+ _3: m.getUTCHours(),
43
+ _4: m.getUTCMinutes()
44
+ };
45
+ }
46
+
47
+ function nextTime(h, m) {
48
+ let now = new Date();
49
+ let epoch = new Date();
50
+ epoch.setUTCHours(h);
51
+ epoch.setUTCMinutes(m);
52
+ epoch.setUTCSeconds(0);
53
+ let tomorrow = addDays(epoch, 1);
54
+ if (Primitive_object.lessthan(epoch, now)) {
55
+ return {
56
+ TAG: "Single",
57
+ _0: tomorrow.getUTCFullYear(),
58
+ _1: tomorrow.getUTCMonth() + 1 | 0,
59
+ _2: tomorrow.getUTCDate(),
60
+ _3: tomorrow.getUTCHours(),
61
+ _4: tomorrow.getUTCMinutes()
62
+ };
63
+ } else {
64
+ return {
65
+ TAG: "Single",
66
+ _0: epoch.getUTCFullYear(),
67
+ _1: epoch.getUTCMonth() + 1 | 0,
68
+ _2: epoch.getUTCDate(),
69
+ _3: epoch.getUTCHours(),
70
+ _4: epoch.getUTCMinutes()
71
+ };
72
+ }
73
+ }
74
+
75
+ let ScheduleNotCreated = /* @__PURE__ */Primitive_exceptions.create("ScheduleOps-ReventlessCore.ScheduleNotCreated");
76
+
77
+ let ScheduleNotDeleted = /* @__PURE__ */Primitive_exceptions.create("ScheduleOps-ReventlessCore.ScheduleNotDeleted");
78
+
79
+ function create(scheduler, channelResources, resourceNaming) {
80
+ return async schedule => {
81
+ let name = resourceNaming.validateName(schedule.name);
82
+ let schedule_rate = schedule.rate;
83
+ let schedule_payload = schedule.payload;
84
+ let schedule$1 = {
85
+ name: name,
86
+ rate: schedule_rate,
87
+ payload: schedule_payload
88
+ };
89
+ let createSchedule = scheduler.createSchedule;
90
+ let exit = await Effect$1.runPromiseExit(Effect$1.tap(Effect.tryPromise(err => Util_Error$ReventlessCore.messageFromUnknown(err, "schedule create"), () => createSchedule(channelResources, schedule$1)), () => EffectLogger$ReventlessCore.logInfo("ScheduleOps-ReventlessCore", undefined, `create: created ` + Stdlib_Option.getOr(JSON.stringify(schedule$1), ""))));
91
+ if (Exit$1.isSuccess(exit)) {
92
+ return;
93
+ }
94
+ let errMsg = Exit.match(exit, cause => Cause.pretty(cause), () => "unknown");
95
+ Effect$1.runSync(EffectLogger$ReventlessCore.logError("ScheduleOps-ReventlessCore", undefined, `create: couldn't create ` + Stdlib_Option.getOr(JSON.stringify(schedule$1), "") + `: ` + errMsg));
96
+ throw {
97
+ RE_EXN_ID: ScheduleNotCreated,
98
+ _1: schedule$1,
99
+ Error: new Error()
100
+ };
101
+ };
102
+ }
103
+
104
+ function $$delete(scheduler, channelResources, resourceNaming) {
105
+ return async name => {
106
+ let name$1 = resourceNaming.validateName(name);
107
+ let deleteSchedule = scheduler.deleteSchedule;
108
+ let exit = await Effect$1.runPromiseExit(Effect$1.tap(Effect.tryPromise(err => Util_Error$ReventlessCore.messageFromUnknown(err, "schedule delete"), () => deleteSchedule(channelResources, name$1)), () => EffectLogger$ReventlessCore.logInfo("ScheduleOps-ReventlessCore", undefined, `delete: deleted ` + name$1)));
109
+ if (Exit$1.isSuccess(exit)) {
110
+ return;
111
+ }
112
+ let errMsg = Exit.match(exit, cause => Cause.pretty(cause), () => "unknown");
113
+ Effect$1.runSync(EffectLogger$ReventlessCore.logError("ScheduleOps-ReventlessCore", undefined, `delete: couldn't delete ` + name$1 + `: ` + errMsg));
114
+ throw {
115
+ RE_EXN_ID: ScheduleNotDeleted,
116
+ _1: name$1,
117
+ Error: new Error()
118
+ };
119
+ };
120
+ }
121
+
122
+ export {
123
+ DateCalc,
124
+ forChannel,
125
+ minutesFromNow,
126
+ nextTime,
127
+ ScheduleNotCreated,
128
+ ScheduleNotDeleted,
129
+ create,
130
+ $$delete,
131
+ }
132
+ /* Exit Not a pure module */
@@ -0,0 +1,12 @@
1
+ let baseName = name => (name->String.split("-"))[0]->Option.getOr(name)
2
+
3
+ module Adapter = Util_Adapter
4
+ module AdapterRuntime = Util_AdapterRuntime
5
+ module Array = Util_Array
6
+ module Error = Util_Error
7
+ module LogFormat = LogFormat
8
+ module Promise = Util_Promise
9
+ module Pulumi = Util_Pulumi
10
+ module QueryDb = Util_QueryDb
11
+ module QueryDbRuntime = Util_QueryDbRuntime
12
+ module ReadModel = Util_ReadModel