@reventlessdev/reventless-local 3.0.0-alpha.113

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 (334) hide show
  1. package/CHANGELOG.md +1197 -0
  2. package/LICENSE +202 -0
  3. package/__mocks__/emptyModule.js +2 -0
  4. package/__mocks__/nodeSqlite.mjs +6 -0
  5. package/package.json +67 -0
  6. package/rescript.json +39 -0
  7. package/src/Platform.res +2162 -0
  8. package/src/Platform.res.mjs +3389 -0
  9. package/src/adapter/Api/LocalGraphQL_Adapter.res +29 -0
  10. package/src/adapter/Api/LocalGraphQL_Adapter.res.mjs +26 -0
  11. package/src/adapter/Api/LocalGraphQL_SubscriptionResolvers.res +146 -0
  12. package/src/adapter/Api/LocalGraphQL_SubscriptionResolvers.res.mjs +88 -0
  13. package/src/adapter/Auth/Auth_GraphqlContext.res +83 -0
  14. package/src/adapter/Auth/Auth_GraphqlContext.res.mjs +76 -0
  15. package/src/adapter/Auth/LocalAuth.res +239 -0
  16. package/src/adapter/Auth/LocalAuth.res.mjs +247 -0
  17. package/src/adapter/Auth/UserStore.res +134 -0
  18. package/src/adapter/Auth/UserStore.res.mjs +146 -0
  19. package/src/adapter/Backend.res +46 -0
  20. package/src/adapter/Backend.res.mjs +66 -0
  21. package/src/adapter/BackendState.res +34 -0
  22. package/src/adapter/BackendState.res.mjs +42 -0
  23. package/src/adapter/Cloner/LocalClonerRunner.res +13 -0
  24. package/src/adapter/Cloner/LocalClonerRunner.res.mjs +12 -0
  25. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_GraphQL.res +329 -0
  26. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_GraphQL.res.mjs +301 -0
  27. package/src/adapter/CommandGenerator/InboundTranslationResolvers_GraphQL.res +76 -0
  28. package/src/adapter/CommandGenerator/InboundTranslationResolvers_GraphQL.res.mjs +57 -0
  29. package/src/adapter/CommandGenerator/LocalCommandGeneratorResolvers.res +19 -0
  30. package/src/adapter/CommandGenerator/LocalCommandGeneratorResolvers.res.mjs +19 -0
  31. package/src/adapter/CommandTopic/LocalCommandTopicChannel.res +104 -0
  32. package/src/adapter/CommandTopic/LocalCommandTopicChannel.res.mjs +82 -0
  33. package/src/adapter/CommandTopic/LocalCommandTopicRemoteChannel.res +32 -0
  34. package/src/adapter/CommandTopic/LocalCommandTopicRemoteChannel.res.mjs +38 -0
  35. package/src/adapter/Counter/LocalCounterHandler.res +42 -0
  36. package/src/adapter/Counter/LocalCounterHandler.res.mjs +45 -0
  37. package/src/adapter/DcbEventLog/DcbEventLogStorage_InMemory.res +131 -0
  38. package/src/adapter/DcbEventLog/DcbEventLogStorage_InMemory.res.mjs +140 -0
  39. package/src/adapter/DcbEventLog/DcbEventLogStorage_Sqlite.res +334 -0
  40. package/src/adapter/DcbEventLog/DcbEventLogStorage_Sqlite.res.mjs +299 -0
  41. package/src/adapter/DomainGraphQL_Server.res +565 -0
  42. package/src/adapter/DomainGraphQL_Server.res.mjs +576 -0
  43. package/src/adapter/DomainMCP_Server.res +369 -0
  44. package/src/adapter/DomainMCP_Server.res.mjs +358 -0
  45. package/src/adapter/EventCollector/LocalEventCollectorChannel.res +87 -0
  46. package/src/adapter/EventCollector/LocalEventCollectorChannel.res.mjs +45 -0
  47. package/src/adapter/EventLog/EventLogStorage_InMemory.res +105 -0
  48. package/src/adapter/EventLog/EventLogStorage_InMemory.res.mjs +117 -0
  49. package/src/adapter/EventLog/EventLogStorage_Sqlite.res +145 -0
  50. package/src/adapter/EventLog/EventLogStorage_Sqlite.res.mjs +155 -0
  51. package/src/adapter/EventTopic/LocalEventTopicPublisher.res +36 -0
  52. package/src/adapter/EventTopic/LocalEventTopicPublisher.res.mjs +31 -0
  53. package/src/adapter/GraphQL_Server.res +6 -0
  54. package/src/adapter/GraphQL_Server.res.mjs +154 -0
  55. package/src/adapter/GraphQL_ServerInstance.res +310 -0
  56. package/src/adapter/GraphQL_ServerInstance.res.mjs +257 -0
  57. package/src/adapter/Heartbeat/LocalHeartbeatRunner.res +57 -0
  58. package/src/adapter/Heartbeat/LocalHeartbeatRunner.res.mjs +34 -0
  59. package/src/adapter/LocalBus.res +498 -0
  60. package/src/adapter/LocalBus.res.mjs +1011 -0
  61. package/src/adapter/LocalPluginSpec.res +16 -0
  62. package/src/adapter/LocalPluginSpec.res.mjs +33 -0
  63. package/src/adapter/LocalSideEffectHandler.res +44 -0
  64. package/src/adapter/LocalSideEffectHandler.res.mjs +34 -0
  65. package/src/adapter/MCP_Server.res +4 -0
  66. package/src/adapter/MCP_Server.res.mjs +67 -0
  67. package/src/adapter/MCP_ServerInstance.res +362 -0
  68. package/src/adapter/MCP_ServerInstance.res.mjs +313 -0
  69. package/src/adapter/PlatformGraphQL_Server.res +75 -0
  70. package/src/adapter/PlatformGraphQL_Server.res.mjs +84 -0
  71. package/src/adapter/PlatformMCP_Server.res +23 -0
  72. package/src/adapter/PlatformMCP_Server.res.mjs +46 -0
  73. package/src/adapter/QueryDb/QueryDbResolvers_GraphQL.res +793 -0
  74. package/src/adapter/QueryDb/QueryDbResolvers_GraphQL.res.mjs +569 -0
  75. package/src/adapter/QueryDb/QueryDbStorage_InMemory.res +242 -0
  76. package/src/adapter/QueryDb/QueryDbStorage_InMemory.res.mjs +241 -0
  77. package/src/adapter/QueryDb/QueryDbStorage_Sqlite.res +339 -0
  78. package/src/adapter/QueryDb/QueryDbStorage_Sqlite.res.mjs +318 -0
  79. package/src/adapter/QueryDb/SortKey_Filter.res +48 -0
  80. package/src/adapter/QueryDb/SortKey_Filter.res.mjs +46 -0
  81. package/src/adapter/QueryEngine/LocalQueryEngine.res +57 -0
  82. package/src/adapter/QueryEngine/LocalQueryEngine.res.mjs +56 -0
  83. package/src/adapter/Runtime/LocalAggregateRuntime_Builder.res +91 -0
  84. package/src/adapter/Runtime/LocalAggregateRuntime_Builder.res.mjs +50 -0
  85. package/src/adapter/Runtime/LocalEventCollectorRuntime_Builder.res +47 -0
  86. package/src/adapter/Runtime/LocalEventCollectorRuntime_Builder.res.mjs +37 -0
  87. package/src/adapter/Runtime/LocalPluginRuntime_Builder.res +11 -0
  88. package/src/adapter/Runtime/LocalPluginRuntime_Builder.res.mjs +30 -0
  89. package/src/adapter/Runtime/LocalRuntimeEnvironment.res +54 -0
  90. package/src/adapter/Runtime/LocalRuntimeEnvironment.res.mjs +40 -0
  91. package/src/adapter/Scheduler/LocalScheduledPublisher.res +102 -0
  92. package/src/adapter/Scheduler/LocalScheduledPublisher.res.mjs +84 -0
  93. package/src/adapter/SqliteDriver.res +52 -0
  94. package/src/adapter/SqliteDriver.res.mjs +76 -0
  95. package/src/adapter/SqliteDriver.resi +31 -0
  96. package/src/adapter/Task/LocalTaskBucket.res +75 -0
  97. package/src/adapter/Task/LocalTaskBucket.res.mjs +48 -0
  98. package/src/adapter/Task/TaskBucket_Sqlite.res +47 -0
  99. package/src/adapter/Task/TaskBucket_Sqlite.res.mjs +40 -0
  100. package/src/components/Aggregate_Builder.res +55 -0
  101. package/src/components/Aggregate_Builder.res.mjs +140 -0
  102. package/src/components/AutomationSlice_Builder.res +41 -0
  103. package/src/components/AutomationSlice_Builder.res.mjs +57 -0
  104. package/src/components/Counter_Builder.res +14 -0
  105. package/src/components/Counter_Builder.res.mjs +32 -0
  106. package/src/components/DcbEventLog_Builder.res +18 -0
  107. package/src/components/DcbEventLog_Builder.res.mjs +24 -0
  108. package/src/components/ExtensionPoint_Builder.res +25 -0
  109. package/src/components/ExtensionPoint_Builder.res.mjs +44 -0
  110. package/src/components/InboundTranslationSlice_Builder.res +34 -0
  111. package/src/components/InboundTranslationSlice_Builder.res.mjs +45 -0
  112. package/src/components/OutboundTranslationSlice_Builder.res +43 -0
  113. package/src/components/OutboundTranslationSlice_Builder.res.mjs +59 -0
  114. package/src/components/Plugin_Builder.res +37 -0
  115. package/src/components/Plugin_Builder.res.mjs +67 -0
  116. package/src/components/ReadModel_Builder.res +47 -0
  117. package/src/components/ReadModel_Builder.res.mjs +54 -0
  118. package/src/components/StateChangeSlice_Builder.res +19 -0
  119. package/src/components/StateChangeSlice_Builder.res.mjs +21 -0
  120. package/src/components/StateViewSlice_Builder.res +42 -0
  121. package/src/components/StateViewSlice_Builder.res.mjs +58 -0
  122. package/src/components/Task_Builder.res +28 -0
  123. package/src/components/Task_Builder.res.mjs +41 -0
  124. package/src/reexport/CommandTopic.res +3 -0
  125. package/src/reexport/CommandTopic.res.mjs +55 -0
  126. package/src/test/Mocks/MockDcbEventLogStorage.res +136 -0
  127. package/src/test/Mocks/MockDcbEventLogStorage.res.mjs +146 -0
  128. package/src/test/Mocks/MockEventLogStorage.res +57 -0
  129. package/src/test/Mocks/MockEventLogStorage.res.mjs +65 -0
  130. package/src/test/Mocks/MockPublisher.res +29 -0
  131. package/src/test/Mocks/MockPublisher.res.mjs +28 -0
  132. package/src/test/Mocks/MockQueryDbStorage.res +104 -0
  133. package/src/test/Mocks/MockQueryDbStorage.res.mjs +136 -0
  134. package/src/test/TestRunner.res +96 -0
  135. package/src/test/TestRunner.res.mjs +71 -0
  136. package/tests/SplitApiFixtures.res +84 -0
  137. package/tests/SplitApiFixtures.res.mjs +88 -0
  138. package/tests/SplitApiTest.res +102 -0
  139. package/tests/SplitApiTest.res.mjs +82 -0
  140. package/tests/TestFixtures.res +54 -0
  141. package/tests/TestFixtures.res.mjs +65 -0
  142. package/tests/adapter/BackendParityTest.res +94 -0
  143. package/tests/adapter/BackendParityTest.res.mjs +96 -0
  144. package/tests/adapter/CollectNEventsTest.res +82 -0
  145. package/tests/adapter/CollectNEventsTest.res.mjs +83 -0
  146. package/tests/adapter/CommandAuthorizationTest.res +200 -0
  147. package/tests/adapter/CommandAuthorizationTest.res.mjs +190 -0
  148. package/tests/adapter/CommandTopicChannelTest.res +174 -0
  149. package/tests/adapter/CommandTopicChannelTest.res.mjs +170 -0
  150. package/tests/adapter/CounterHandlerTest.res +113 -0
  151. package/tests/adapter/CounterHandlerTest.res.mjs +96 -0
  152. package/tests/adapter/DcbEventLogStorageSqliteTest.res +157 -0
  153. package/tests/adapter/DcbEventLogStorageSqliteTest.res.mjs +165 -0
  154. package/tests/adapter/DcbEventLogStorageTest.res +187 -0
  155. package/tests/adapter/DcbEventLogStorageTest.res.mjs +195 -0
  156. package/tests/adapter/EventCollectorChannelTest.res +166 -0
  157. package/tests/adapter/EventCollectorChannelTest.res.mjs +178 -0
  158. package/tests/adapter/EventLogStorageSqliteTest.res +105 -0
  159. package/tests/adapter/EventLogStorageSqliteTest.res.mjs +116 -0
  160. package/tests/adapter/EventTapTest.res +102 -0
  161. package/tests/adapter/EventTapTest.res.mjs +94 -0
  162. package/tests/adapter/EventTopicPublisherTest.res +76 -0
  163. package/tests/adapter/EventTopicPublisherTest.res.mjs +86 -0
  164. package/tests/adapter/GraphQL_SchemaInspectorTest.res +763 -0
  165. package/tests/adapter/GraphQL_SchemaInspectorTest.res.mjs +578 -0
  166. package/tests/adapter/GraphQL_SubscriptionResolversTest.res +161 -0
  167. package/tests/adapter/GraphQL_SubscriptionResolversTest.res.mjs +134 -0
  168. package/tests/adapter/HeartbeatRunnerTest.res +136 -0
  169. package/tests/adapter/HeartbeatRunnerTest.res.mjs +96 -0
  170. package/tests/adapter/LocalAuthHttpTest.res +224 -0
  171. package/tests/adapter/LocalAuthHttpTest.res.mjs +237 -0
  172. package/tests/adapter/LocalAuthLoginTest.res +180 -0
  173. package/tests/adapter/LocalAuthLoginTest.res.mjs +207 -0
  174. package/tests/adapter/LocalAuthTest.res +106 -0
  175. package/tests/adapter/LocalAuthTest.res.mjs +145 -0
  176. package/tests/adapter/LocalAuthUserStoreTest.res +172 -0
  177. package/tests/adapter/LocalAuthUserStoreTest.res.mjs +208 -0
  178. package/tests/adapter/LocalBusBoundedTest.res +157 -0
  179. package/tests/adapter/LocalBusBoundedTest.res.mjs +168 -0
  180. package/tests/adapter/LocalBusPubSubTest.res +81 -0
  181. package/tests/adapter/LocalBusPubSubTest.res.mjs +81 -0
  182. package/tests/adapter/QueryDbGsiTtlTest.res +268 -0
  183. package/tests/adapter/QueryDbGsiTtlTest.res.mjs +209 -0
  184. package/tests/adapter/QueryDbListResolverTest.res +361 -0
  185. package/tests/adapter/QueryDbListResolverTest.res.mjs +426 -0
  186. package/tests/adapter/QueryDbStorageSqliteTest.res +159 -0
  187. package/tests/adapter/QueryDbStorageSqliteTest.res.mjs +126 -0
  188. package/tests/adapter/QueryDbStorageTest.res +171 -0
  189. package/tests/adapter/QueryDbStorageTest.res.mjs +170 -0
  190. package/tests/adapter/QueryEngineTest.res +152 -0
  191. package/tests/adapter/QueryEngineTest.res.mjs +148 -0
  192. package/tests/adapter/ScheduledPublisherTest.res +199 -0
  193. package/tests/adapter/ScheduledPublisherTest.res.mjs +203 -0
  194. package/tests/adapter/SortKey_FilterTest.res +103 -0
  195. package/tests/adapter/SortKey_FilterTest.res.mjs +135 -0
  196. package/tests/adapter/SqliteDriverTest.res +86 -0
  197. package/tests/adapter/SqliteDriverTest.res.mjs +101 -0
  198. package/tests/adapter/TaskBucketSqliteTest.res +44 -0
  199. package/tests/adapter/TaskBucketSqliteTest.res.mjs +40 -0
  200. package/tests/adapter/TaskBucketTest.res +106 -0
  201. package/tests/adapter/TaskBucketTest.res.mjs +118 -0
  202. package/tests/components/aggregate/AggregateFixtures.res +78 -0
  203. package/tests/components/aggregate/AggregateFixtures.res.mjs +109 -0
  204. package/tests/components/aggregate/AggregateTest.res +129 -0
  205. package/tests/components/aggregate/AggregateTest.res.mjs +129 -0
  206. package/tests/components/automationslice/AutomationSliceCallbackTest.res +212 -0
  207. package/tests/components/automationslice/AutomationSliceCallbackTest.res.mjs +233 -0
  208. package/tests/components/automationslice/AutomationSliceFixtures.res +189 -0
  209. package/tests/components/automationslice/AutomationSliceFixtures.res.mjs +276 -0
  210. package/tests/components/automationslice/AutomationSliceSelfDeadlockFixtures.res +289 -0
  211. package/tests/components/automationslice/AutomationSliceSelfDeadlockFixtures.res.mjs +453 -0
  212. package/tests/components/automationslice/AutomationSliceSelfDeadlockTest.res +47 -0
  213. package/tests/components/automationslice/AutomationSliceSelfDeadlockTest.res.mjs +31 -0
  214. package/tests/components/automationslice/MixedSourceAutomationSliceFixtures.res +213 -0
  215. package/tests/components/automationslice/MixedSourceAutomationSliceFixtures.res.mjs +268 -0
  216. package/tests/components/automationslice/MixedSourceAutomationSliceTest.res +118 -0
  217. package/tests/components/automationslice/MixedSourceAutomationSliceTest.res.mjs +99 -0
  218. package/tests/components/commandgenerator/CommandGeneratorFixtures.res +73 -0
  219. package/tests/components/commandgenerator/CommandGeneratorFixtures.res.mjs +109 -0
  220. package/tests/components/commandgenerator/CommandGeneratorTest.res +43 -0
  221. package/tests/components/commandgenerator/CommandGeneratorTest.res.mjs +46 -0
  222. package/tests/components/commandtopic/CommandTopicFixtures.res +37 -0
  223. package/tests/components/commandtopic/CommandTopicFixtures.res.mjs +68 -0
  224. package/tests/components/commandtopic/CommandTopicStreamFixtures.res +43 -0
  225. package/tests/components/commandtopic/CommandTopicStreamFixtures.res.mjs +91 -0
  226. package/tests/components/commandtopic/CommandTopicStreamTest.res +30 -0
  227. package/tests/components/commandtopic/CommandTopicStreamTest.res.mjs +35 -0
  228. package/tests/components/commandtopic/CommandTopicTest.res +55 -0
  229. package/tests/components/commandtopic/CommandTopicTest.res.mjs +62 -0
  230. package/tests/components/counter/CounterFixtures.res +42 -0
  231. package/tests/components/counter/CounterFixtures.res.mjs +34 -0
  232. package/tests/components/counter/CounterTest.res +46 -0
  233. package/tests/components/counter/CounterTest.res.mjs +61 -0
  234. package/tests/components/dcb/DcbCrossPartitionFixtures.res +170 -0
  235. package/tests/components/dcb/DcbCrossPartitionFixtures.res.mjs +276 -0
  236. package/tests/components/dcb/DcbCrossPartitionReadTest.res +68 -0
  237. package/tests/components/dcb/DcbCrossPartitionReadTest.res.mjs +78 -0
  238. package/tests/components/dcb/DcbEventLogAppendStreamTest.res +72 -0
  239. package/tests/components/dcb/DcbEventLogAppendStreamTest.res.mjs +82 -0
  240. package/tests/components/dcb/DcbEventLogStreamTest.res +103 -0
  241. package/tests/components/dcb/DcbEventLogStreamTest.res.mjs +91 -0
  242. package/tests/components/dcb/DcbFixtures.res +145 -0
  243. package/tests/components/dcb/DcbFixtures.res.mjs +221 -0
  244. package/tests/components/dcb/DcbTest.res +55 -0
  245. package/tests/components/dcb/DcbTest.res.mjs +55 -0
  246. package/tests/components/eventcollector/EventCollectorFixtures.res +42 -0
  247. package/tests/components/eventcollector/EventCollectorFixtures.res.mjs +49 -0
  248. package/tests/components/eventcollector/EventCollectorTest.res +37 -0
  249. package/tests/components/eventcollector/EventCollectorTest.res.mjs +36 -0
  250. package/tests/components/eventlog/EventLogAppendStreamTest.res +93 -0
  251. package/tests/components/eventlog/EventLogAppendStreamTest.res.mjs +113 -0
  252. package/tests/components/eventlog/EventLogConflictTest.res +86 -0
  253. package/tests/components/eventlog/EventLogConflictTest.res.mjs +81 -0
  254. package/tests/components/eventlog/EventLogFixtures.res +52 -0
  255. package/tests/components/eventlog/EventLogFixtures.res.mjs +80 -0
  256. package/tests/components/eventlog/EventLogStreamTest.res +98 -0
  257. package/tests/components/eventlog/EventLogStreamTest.res.mjs +142 -0
  258. package/tests/components/eventlog/EventLogTest.res +53 -0
  259. package/tests/components/eventlog/EventLogTest.res.mjs +74 -0
  260. package/tests/components/eventtopic/EventTopicFixtures.res +47 -0
  261. package/tests/components/eventtopic/EventTopicFixtures.res.mjs +77 -0
  262. package/tests/components/eventtopic/EventTopicStreamFixtures.res +27 -0
  263. package/tests/components/eventtopic/EventTopicStreamFixtures.res.mjs +62 -0
  264. package/tests/components/eventtopic/EventTopicStreamTest.res +35 -0
  265. package/tests/components/eventtopic/EventTopicStreamTest.res.mjs +44 -0
  266. package/tests/components/eventtopic/EventTopicTest.res +35 -0
  267. package/tests/components/eventtopic/EventTopicTest.res.mjs +43 -0
  268. package/tests/components/extensionpoint/ExtensionPointFixtures.res +145 -0
  269. package/tests/components/extensionpoint/ExtensionPointFixtures.res.mjs +188 -0
  270. package/tests/components/extensionpoint/ExtensionPointTest.res +62 -0
  271. package/tests/components/extensionpoint/ExtensionPointTest.res.mjs +55 -0
  272. package/tests/components/heartbeat/HeartbeatFixtures.res +48 -0
  273. package/tests/components/heartbeat/HeartbeatFixtures.res.mjs +46 -0
  274. package/tests/components/heartbeat/HeartbeatTest.res +67 -0
  275. package/tests/components/heartbeat/HeartbeatTest.res.mjs +65 -0
  276. package/tests/components/inboundtranslationslice/InboundTranslationSliceCallbackTest.res +241 -0
  277. package/tests/components/inboundtranslationslice/InboundTranslationSliceCallbackTest.res.mjs +239 -0
  278. package/tests/components/inboundtranslationslice/InboundTranslationSliceFixtures.res +36 -0
  279. package/tests/components/inboundtranslationslice/InboundTranslationSliceFixtures.res.mjs +73 -0
  280. package/tests/components/outboundtranslationslice/OutboundTranslationSliceCallbackTest.res +191 -0
  281. package/tests/components/outboundtranslationslice/OutboundTranslationSliceCallbackTest.res.mjs +297 -0
  282. package/tests/components/outboundtranslationslice/OutboundTranslationSliceFixtures.res +78 -0
  283. package/tests/components/outboundtranslationslice/OutboundTranslationSliceFixtures.res.mjs +137 -0
  284. package/tests/components/querydb/QueryDbFixtures.res +39 -0
  285. package/tests/components/querydb/QueryDbFixtures.res.mjs +73 -0
  286. package/tests/components/querydb/QueryDbSubIdFixtures.res +44 -0
  287. package/tests/components/querydb/QueryDbSubIdFixtures.res.mjs +80 -0
  288. package/tests/components/querydb/QueryDbSubIdTest.res +104 -0
  289. package/tests/components/querydb/QueryDbSubIdTest.res.mjs +104 -0
  290. package/tests/components/querydb/QueryDbTest.res +81 -0
  291. package/tests/components/querydb/QueryDbTest.res.mjs +126 -0
  292. package/tests/components/readmodel/DcbReadModelE2EFixtures.res +215 -0
  293. package/tests/components/readmodel/DcbReadModelE2EFixtures.res.mjs +308 -0
  294. package/tests/components/readmodel/DcbReadModelE2ETest.res +45 -0
  295. package/tests/components/readmodel/DcbReadModelE2ETest.res.mjs +37 -0
  296. package/tests/components/readmodel/DcbReadModelTypoFailFastTest.res +88 -0
  297. package/tests/components/readmodel/DcbReadModelTypoFailFastTest.res.mjs +152 -0
  298. package/tests/components/readmodel/MixedSourceReadModelFixtures.res +181 -0
  299. package/tests/components/readmodel/MixedSourceReadModelFixtures.res.mjs +277 -0
  300. package/tests/components/readmodel/MixedSourceReadModelTest.res +61 -0
  301. package/tests/components/readmodel/MixedSourceReadModelTest.res.mjs +68 -0
  302. package/tests/components/readmodel/ReadModelFixtures.res +138 -0
  303. package/tests/components/readmodel/ReadModelFixtures.res.mjs +169 -0
  304. package/tests/components/readmodel/ReadModelTest.res +46 -0
  305. package/tests/components/readmodel/ReadModelTest.res.mjs +36 -0
  306. package/tests/components/scheduler/SchedulerFixtures.res +59 -0
  307. package/tests/components/scheduler/SchedulerFixtures.res.mjs +63 -0
  308. package/tests/components/scheduler/SchedulerTest.res +76 -0
  309. package/tests/components/scheduler/SchedulerTest.res.mjs +86 -0
  310. package/tests/components/sideeffecthandler/SideEffectHandlerFixtures.res +133 -0
  311. package/tests/components/sideeffecthandler/SideEffectHandlerFixtures.res.mjs +149 -0
  312. package/tests/components/sideeffecthandler/SideEffectHandlerTest.res +39 -0
  313. package/tests/components/sideeffecthandler/SideEffectHandlerTest.res.mjs +28 -0
  314. package/tests/components/stateviewslice/StateViewSliceFixtures.res +117 -0
  315. package/tests/components/stateviewslice/StateViewSliceFixtures.res.mjs +188 -0
  316. package/tests/components/stateviewslice/StateViewSliceSubIdFixtures.res +117 -0
  317. package/tests/components/stateviewslice/StateViewSliceSubIdFixtures.res.mjs +183 -0
  318. package/tests/components/stateviewslice/StateViewSliceSubIdTest.res +78 -0
  319. package/tests/components/stateviewslice/StateViewSliceSubIdTest.res.mjs +107 -0
  320. package/tests/components/stateviewslice/StateViewSliceTest.res +59 -0
  321. package/tests/components/stateviewslice/StateViewSliceTest.res.mjs +72 -0
  322. package/tests/components/task/TaskFixtures.res +87 -0
  323. package/tests/components/task/TaskFixtures.res.mjs +82 -0
  324. package/tests/components/task/TaskTest.res +98 -0
  325. package/tests/components/task/TaskTest.res.mjs +46 -0
  326. package/tests/plugin/PluginBehavior_GWT.res +146 -0
  327. package/tests/plugin/PluginBehavior_GWT.res.mjs +281 -0
  328. package/tests/plugin/Plugin_Fixtures.res +61 -0
  329. package/tests/plugin/Plugin_Fixtures.res.mjs +105 -0
  330. package/tests/plugin/PluginsProjection_GWT.res +95 -0
  331. package/tests/plugin/PluginsProjection_GWT.res.mjs +120 -0
  332. package/tests/plugin/UIFragmentRegistryProjection_GWT.res +72 -0
  333. package/tests/plugin/UIFragmentRegistryProjection_GWT.res.mjs +117 -0
  334. package/tests/setup/sqliteGlobal.cjs +12 -0
@@ -0,0 +1,453 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as S from "sury/src/S.res.mjs";
4
+ import * as Id$Reventless from "@reventlessdev/reventless-spec/src/types/Id.res.mjs";
5
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Stream from "effect/Stream";
8
+ import * as Pulumi from "@pulumi/pulumi";
9
+ import * as DcbTag$Reventless from "@reventlessdev/reventless-spec/src/components/DcbTag.res.mjs";
10
+ import * as Message$Reventless from "@reventlessdev/reventless-spec/src/types/Message.res.mjs";
11
+ import * as LocalBus$ReventlessLocal from "../../../src/adapter/LocalBus.res.mjs";
12
+ import * as Component$ReventlessInfra from "@reventlessdev/reventless-infra/src/components/Component.res.mjs";
13
+ import * as AutomationSlice$Reventless from "@reventlessdev/reventless-spec/src/components/AutomationSlice.res.mjs";
14
+ import * as TestRunner$ReventlessLocal from "../../../src/test/TestRunner.res.mjs";
15
+ import * as CommandTopic$ReventlessCore from "@reventlessdev/reventless-core/src/components/CommandTopic/CommandTopic.res.mjs";
16
+ import * as TestFixtures$ReventlessLocal from "../../TestFixtures.res.mjs";
17
+ import * as DcbEventLog_Builder$ReventlessLocal from "../../../src/components/DcbEventLog_Builder.res.mjs";
18
+ import * as AutomationSlice_Builder$ReventlessLocal from "../../../src/components/AutomationSlice_Builder.res.mjs";
19
+ import * as StateChangeSlice_Builder$ReventlessLocal from "../../../src/components/StateChangeSlice_Builder.res.mjs";
20
+
21
+ let name = "Place";
22
+
23
+ let moduleUrl = import.meta.url;
24
+
25
+ let eventSchema = S.schema(s => ({
26
+ TAG: "Placed",
27
+ orderId: s.m(DcbTag$Reventless.string)
28
+ }));
29
+
30
+ let consumedEventSchema = S.literal("Placed");
31
+
32
+ let commandSchema = S.schema(s => ({
33
+ TAG: "Place",
34
+ orderId: s.m(DcbTag$Reventless.string)
35
+ }));
36
+
37
+ let errorSchema = S.literal("AlreadyPlaced");
38
+
39
+ function commandAuthorization(param) {
40
+ return "AllowAuthenticated";
41
+ }
42
+
43
+ let PlaceSpec = {
44
+ name: name,
45
+ Id: undefined,
46
+ moduleUrl: moduleUrl,
47
+ eventSchema: eventSchema,
48
+ consumedEventSchema: consumedEventSchema,
49
+ errorSchema: errorSchema,
50
+ commandSchema: commandSchema,
51
+ commandAuthorization: commandAuthorization,
52
+ readConsistency: "EscalateOnRetry"
53
+ };
54
+
55
+ let moduleUrl$1 = import.meta.url;
56
+
57
+ function evolve(_state, _event) {
58
+ return true;
59
+ }
60
+
61
+ function decide(state, command) {
62
+ if (state) {
63
+ return {
64
+ TAG: "Error",
65
+ _0: "AlreadyPlaced"
66
+ };
67
+ } else {
68
+ return {
69
+ TAG: "Ok",
70
+ _0: [{
71
+ TAG: "Placed",
72
+ orderId: command.orderId
73
+ }]
74
+ };
75
+ }
76
+ }
77
+
78
+ let PlaceBehavior = {
79
+ Spec: undefined,
80
+ moduleUrl: moduleUrl$1,
81
+ initialState: false,
82
+ evolve: evolve,
83
+ decide: decide
84
+ };
85
+
86
+ let name$1 = "Ship";
87
+
88
+ let moduleUrl$2 = import.meta.url;
89
+
90
+ let eventSchema$1 = S.schema(s => ({
91
+ TAG: "Shipped",
92
+ orderId: s.m(DcbTag$Reventless.string)
93
+ }));
94
+
95
+ let consumedEventSchema$1 = S.union([
96
+ S.schema(s => ({
97
+ TAG: "Placed",
98
+ orderId: s.m(S.string)
99
+ })),
100
+ S.literal("Shipped")
101
+ ]);
102
+
103
+ let commandSchema$1 = S.schema(s => ({
104
+ TAG: "Ship",
105
+ orderId: s.m(DcbTag$Reventless.string)
106
+ }));
107
+
108
+ let errorSchema$1 = S.literal("NotPlaced");
109
+
110
+ function commandAuthorization$1(param) {
111
+ return "AllowAuthenticated";
112
+ }
113
+
114
+ let ShipSpec = {
115
+ name: name$1,
116
+ Id: undefined,
117
+ moduleUrl: moduleUrl$2,
118
+ eventSchema: eventSchema$1,
119
+ consumedEventSchema: consumedEventSchema$1,
120
+ errorSchema: errorSchema$1,
121
+ commandSchema: commandSchema$1,
122
+ commandAuthorization: commandAuthorization$1,
123
+ readConsistency: "EscalateOnRetry"
124
+ };
125
+
126
+ let moduleUrl$3 = import.meta.url;
127
+
128
+ let initialState = {
129
+ placed: false,
130
+ shipped: false
131
+ };
132
+
133
+ function evolve$1(state, event) {
134
+ if (typeof event !== "object") {
135
+ return {
136
+ placed: state.placed,
137
+ shipped: true
138
+ };
139
+ } else {
140
+ return {
141
+ placed: true,
142
+ shipped: state.shipped
143
+ };
144
+ }
145
+ }
146
+
147
+ function decide$1(state, command) {
148
+ if (state.placed) {
149
+ if (state.shipped) {
150
+ return {
151
+ TAG: "Ok",
152
+ _0: []
153
+ };
154
+ } else {
155
+ return {
156
+ TAG: "Ok",
157
+ _0: [{
158
+ TAG: "Shipped",
159
+ orderId: command.orderId
160
+ }]
161
+ };
162
+ }
163
+ } else {
164
+ return {
165
+ TAG: "Error",
166
+ _0: "NotPlaced"
167
+ };
168
+ }
169
+ }
170
+
171
+ let ShipBehavior = {
172
+ Spec: undefined,
173
+ moduleUrl: moduleUrl$3,
174
+ initialState: initialState,
175
+ evolve: evolve$1,
176
+ decide: decide$1
177
+ };
178
+
179
+ let name$2 = "TestLogDcbEventLog";
180
+
181
+ let eventSchema$2 = S.union([
182
+ S.schema(s => ({
183
+ TAG: "Placed",
184
+ orderId: s.m(S.string)
185
+ })),
186
+ S.schema(s => ({
187
+ TAG: "Shipped",
188
+ orderId: s.m(S.string)
189
+ }))
190
+ ]);
191
+
192
+ let DcbSource = {
193
+ Id: undefined,
194
+ name: name$2,
195
+ eventSchema: eventSchema$2
196
+ };
197
+
198
+ let name$3 = "AutoShip";
199
+
200
+ let moduleUrl$4 = import.meta.url;
201
+
202
+ let todoItemSchema = S.schema(s => ({
203
+ orderId: s.m(S.string)
204
+ }));
205
+
206
+ let commandSchema$2 = S.schema(s => ({
207
+ TAG: "Ship",
208
+ orderId: s.m(DcbTag$Reventless.string)
209
+ }));
210
+
211
+ function commandAuthorization$2(param) {
212
+ return "AllowAuthenticated";
213
+ }
214
+
215
+ let AutoShipSpec = {
216
+ name: name$3,
217
+ moduleUrl: moduleUrl$4,
218
+ todoItemSchema: todoItemSchema,
219
+ commandSchema: commandSchema$2,
220
+ maxRetries: 3,
221
+ heartbeatInterval: 60,
222
+ targetName: "Ship",
223
+ commandAuthorization: commandAuthorization$2
224
+ };
225
+
226
+ function collect(event, _ctx) {
227
+ if (event.TAG !== "Placed") {
228
+ return [];
229
+ }
230
+ let orderId = event.orderId;
231
+ return [[
232
+ orderId,
233
+ {
234
+ orderId: orderId
235
+ }
236
+ ]];
237
+ }
238
+
239
+ function resolve(event) {
240
+ if (event.TAG === "Placed") {
241
+ return;
242
+ } else {
243
+ return event.orderId;
244
+ }
245
+ }
246
+
247
+ let FromDcb = AutomationSlice$Reventless.Mapping.Make({
248
+ Id: Id$Reventless.$$String,
249
+ name: name$2,
250
+ eventSchema: eventSchema$2
251
+ })(AutoShipSpec)({
252
+ collect: collect,
253
+ resolve: resolve
254
+ });
255
+
256
+ function process(id, _item) {
257
+ return [
258
+ id,
259
+ {
260
+ TAG: "Ship",
261
+ orderId: id
262
+ }
263
+ ];
264
+ }
265
+
266
+ let moduleUrl$5 = import.meta.url;
267
+
268
+ AutomationSlice$Reventless.Mappings.Make(AutoShipSpec);
269
+
270
+ let mappings = [FromDcb];
271
+
272
+ let AutoShipAutomation = {
273
+ process: process,
274
+ moduleUrl: moduleUrl$5,
275
+ mappings: mappings
276
+ };
277
+
278
+ let Bus = LocalBus$ReventlessLocal.Make({});
279
+
280
+ TestRunner$ReventlessLocal.setup();
281
+
282
+ let DcbLogMaker = DcbEventLog_Builder$ReventlessLocal.Make(Bus);
283
+
284
+ let dcbEventLog = DcbLogMaker.make("TestLog", undefined, {
285
+ TAG: "Simple",
286
+ _0: {
287
+ key: "orderId"
288
+ }
289
+ }, undefined);
290
+
291
+ async function publishJsons(cmdJsons) {
292
+ await Promise.all(cmdJsons.map(async cmdJson => {
293
+ let dict = cmdJson.commandJson;
294
+ let typeName;
295
+ typeName = typeof dict === "object" && dict !== null && !Array.isArray(dict) ? Stdlib_Option.getOr(Stdlib_Option.flatMap(dict["TAG"], j => {
296
+ if (typeof j === "string") {
297
+ return j;
298
+ }
299
+ }), "") : "";
300
+ let fullBody = Object.fromEntries([
301
+ [
302
+ "id",
303
+ cmdJson.id
304
+ ],
305
+ [
306
+ "meta",
307
+ S.reverseConvertToJsonOrThrow(cmdJson.meta, Message$Reventless.metaSchema)
308
+ ],
309
+ [
310
+ "command",
311
+ cmdJson.commandJson
312
+ ]
313
+ ]);
314
+ let handlers = CommandTopic$ReventlessCore.getHandlers(typeName);
315
+ await Promise.all(handlers.map(async entry => {
316
+ let item_reference = cmdJson.id;
317
+ let item = {
318
+ command: fullBody,
319
+ reference: item_reference
320
+ };
321
+ await Effect.runPromise(entry.handler(Stream.fromIterable([item])));
322
+ }));
323
+ }));
324
+ }
325
+
326
+ let publishJsonsOutput = Pulumi.output(publishJsons);
327
+
328
+ let PlaceMaker = StateChangeSlice_Builder$ReventlessLocal.Make({
329
+ name: name,
330
+ moduleUrl: moduleUrl,
331
+ Id: Id$Reventless.$$String,
332
+ consumedEventSchema: consumedEventSchema,
333
+ errorSchema: errorSchema,
334
+ eventSchema: eventSchema,
335
+ commandSchema: commandSchema,
336
+ commandAuthorization: commandAuthorization,
337
+ readConsistency: "EscalateOnRetry"
338
+ })({
339
+ initialState: false,
340
+ evolve: evolve,
341
+ decide: decide,
342
+ moduleUrl: moduleUrl$1
343
+ });
344
+
345
+ let _placeSlice = PlaceMaker.make(dcbEventLog, publishJsonsOutput, undefined, undefined, undefined);
346
+
347
+ let ShipMaker = StateChangeSlice_Builder$ReventlessLocal.Make({
348
+ name: name$1,
349
+ moduleUrl: moduleUrl$2,
350
+ Id: Id$Reventless.$$String,
351
+ consumedEventSchema: consumedEventSchema$1,
352
+ errorSchema: errorSchema$1,
353
+ eventSchema: eventSchema$1,
354
+ commandSchema: commandSchema$1,
355
+ commandAuthorization: commandAuthorization$1,
356
+ readConsistency: "EscalateOnRetry"
357
+ })({
358
+ initialState: initialState,
359
+ evolve: evolve$1,
360
+ decide: decide$1,
361
+ moduleUrl: moduleUrl$3
362
+ });
363
+
364
+ let _shipSlice = ShipMaker.make(dcbEventLog, publishJsonsOutput, undefined, undefined, undefined);
365
+
366
+ let dcbTopicOutputs = Component$ReventlessInfra.outputs(dcbEventLog).eventTopic;
367
+
368
+ let allEventTopics = Object.fromEntries([[
369
+ name$2,
370
+ dcbTopicOutputs
371
+ ]]);
372
+
373
+ let testContext = {
374
+ environment: "test",
375
+ platformName: "local",
376
+ pluginName: "TestPlugin",
377
+ sliceName: name$3
378
+ };
379
+
380
+ let AutomationSliceMaker = AutomationSlice_Builder$ReventlessLocal.Make(Bus);
381
+
382
+ let AutoShip = AutomationSliceMaker.Make(AutoShipSpec)(AutoShipAutomation);
383
+
384
+ let autoShipSlice = AutoShip.make(allEventTopics, publishJsonsOutput, testContext, undefined);
385
+
386
+ function placeCmdJson(orderId) {
387
+ return {
388
+ id: orderId,
389
+ meta: TestFixtures$ReventlessLocal.testMeta,
390
+ commandJson: S.reverseConvertToJsonOrThrow({
391
+ TAG: "Place",
392
+ orderId: orderId
393
+ }, commandSchema)
394
+ };
395
+ }
396
+
397
+ async function withTimeout(p, ms) {
398
+ let timeout = new Promise((resolve, param) => {
399
+ setTimeout(() => resolve({
400
+ TAG: "Error",
401
+ _0: "timed out"
402
+ }), ms);
403
+ });
404
+ let work = p.then(v => ({
405
+ TAG: "Ok",
406
+ _0: v
407
+ }));
408
+ return await Promise.race([
409
+ work,
410
+ timeout
411
+ ]);
412
+ }
413
+
414
+ async function readEventTypes(orderId) {
415
+ let logOps = await TestRunner$ReventlessLocal.resolve(DcbLogMaker.operations(dcbEventLog));
416
+ let result = await logOps.read([{
417
+ tags: [{
418
+ key: "orderId",
419
+ value: orderId
420
+ }]
421
+ }], undefined);
422
+ return result.events.map(e => e.eventType);
423
+ }
424
+
425
+ export {
426
+ PlaceSpec,
427
+ PlaceBehavior,
428
+ ShipSpec,
429
+ ShipBehavior,
430
+ DcbSource,
431
+ AutoShipSpec,
432
+ FromDcb,
433
+ AutoShipAutomation,
434
+ Bus,
435
+ DcbLogMaker,
436
+ dcbEventLog,
437
+ publishJsons,
438
+ publishJsonsOutput,
439
+ PlaceMaker,
440
+ _placeSlice,
441
+ ShipMaker,
442
+ _shipSlice,
443
+ dcbTopicOutputs,
444
+ allEventTopics,
445
+ testContext,
446
+ AutomationSliceMaker,
447
+ AutoShip,
448
+ autoShipSlice,
449
+ placeCmdJson,
450
+ withTimeout,
451
+ readEventTypes,
452
+ }
453
+ /* moduleUrl Not a pure module */
@@ -0,0 +1,47 @@
1
+ // Regression test for the AutomationSlice self-deadlock fix.
2
+ // See AutomationSliceSelfDeadlockFixtures.res for the wiring rationale.
3
+ //
4
+ // Without the fix, `publishJsons([Place])` never returns: phase 2 publishes a
5
+ // Ship command on the originating subscriber fiber, Ship appends Shipped, and
6
+ // the bus blocks waiting for that same fiber to dequeue Shipped. The wall-clock
7
+ // timeout below catches that.
8
+
9
+ open JestGlobals
10
+ open AutomationSliceSelfDeadlockFixtures
11
+
12
+ describe("AutomationSlice self-deadlock regression:", () => {
13
+ let _ = beforeAllAsync(async () => {
14
+ let _ = await dcbEventLog->DcbLogMaker.operations->TestRunner.resolve
15
+ let _ = await autoShipSlice->ReventlessCore.Component.operations->TestRunner.resolve
16
+ // LocalEventCollectorChannel.connect registers the bus subscription
17
+ // inside a fire-and-forget Effect.runPromise; flush a couple of microtasks
18
+ // so the AutoShip subscription is in place before we publish.
19
+ let _ = await Promise.resolve()
20
+ let _ = await Promise.resolve()
21
+ let resource = dcbTopicOutputs.resources->Array.getUnsafe(0)
22
+ let _ = await resource.name->TestRunner.resolve
23
+ })
24
+
25
+ testPromise("Place → Placed → AutoShip → Ship → Shipped completes", async () => {
26
+ // The originating publish must return inside the timeout. With phase 2
27
+ // awaited inline (the pre-fix shape), this hangs until Jest times out.
28
+ let outcome = await withTimeout(publishJsons([placeCmdJson("order-1")]), ~ms=1500)
29
+ expect(
30
+ switch outcome {
31
+ | Ok(_) => "ok"
32
+ | Error(msg) => msg
33
+ },
34
+ )->toBe("ok")
35
+
36
+ // Drain microtasks so the detached phase 2 chain has a chance to publish
37
+ // Ship and the Ship slice can append Shipped.
38
+ let _ = await Promise.resolve()
39
+ let _ = await Promise.resolve()
40
+ let _ = await Promise.resolve()
41
+ let _ = await Promise.resolve()
42
+
43
+ let eventTypes = await readEventTypes("order-1")
44
+ expect(eventTypes->Array.includes("Placed"))->toBe(true)
45
+ expect(eventTypes->Array.includes("Shipped"))->toBe(true)
46
+ })
47
+ })
@@ -0,0 +1,31 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Component$ReventlessCore from "@reventlessdev/reventless-core/src/components/Component.res.mjs";
4
+ import * as TestRunner$ReventlessLocal from "../../../src/test/TestRunner.res.mjs";
5
+ import * as AutomationSliceSelfDeadlockFixtures$ReventlessLocal from "./AutomationSliceSelfDeadlockFixtures.res.mjs";
6
+
7
+ globalThis.describe("AutomationSlice self-deadlock regression:", () => {
8
+ globalThis.beforeAll(async () => {
9
+ await TestRunner$ReventlessLocal.resolve(AutomationSliceSelfDeadlockFixtures$ReventlessLocal.DcbLogMaker.operations(AutomationSliceSelfDeadlockFixtures$ReventlessLocal.dcbEventLog));
10
+ await TestRunner$ReventlessLocal.resolve(Component$ReventlessCore.operations(AutomationSliceSelfDeadlockFixtures$ReventlessLocal.autoShipSlice));
11
+ await Promise.resolve();
12
+ await Promise.resolve();
13
+ let resource = AutomationSliceSelfDeadlockFixtures$ReventlessLocal.dcbTopicOutputs.resources[0];
14
+ await TestRunner$ReventlessLocal.resolve(resource.name);
15
+ });
16
+ globalThis.test("Place → Placed → AutoShip → Ship → Shipped completes", async () => {
17
+ let outcome = await AutomationSliceSelfDeadlockFixtures$ReventlessLocal.withTimeout(AutomationSliceSelfDeadlockFixtures$ReventlessLocal.publishJsons([AutomationSliceSelfDeadlockFixtures$ReventlessLocal.placeCmdJson("order-1")]), 1500);
18
+ let tmp;
19
+ tmp = outcome.TAG === "Ok" ? "ok" : outcome._0;
20
+ globalThis.expect(tmp).toBe("ok");
21
+ await Promise.resolve();
22
+ await Promise.resolve();
23
+ await Promise.resolve();
24
+ await Promise.resolve();
25
+ let eventTypes = await AutomationSliceSelfDeadlockFixtures$ReventlessLocal.readEventTypes("order-1");
26
+ globalThis.expect(eventTypes.includes("Placed")).toBe(true);
27
+ globalThis.expect(eventTypes.includes("Shipped")).toBe(true);
28
+ });
29
+ });
30
+
31
+ /* Not a pure module */