@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,188 @@
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 LocalBus$ReventlessLocal from "../../../src/adapter/LocalBus.res.mjs";
6
+ import * as TestRunner$ReventlessLocal from "../../../src/test/TestRunner.res.mjs";
7
+ import * as TestFixtures$ReventlessLocal from "../../TestFixtures.res.mjs";
8
+ import * as ExtensionPointMapping$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/ExtensionPointMapping.res.mjs";
9
+ import * as ExtensionPoint_Builder$ReventlessLocal from "../../../src/components/ExtensionPoint_Builder.res.mjs";
10
+
11
+ S.enableJson();
12
+
13
+ let Bus = LocalBus$ReventlessLocal.Make({});
14
+
15
+ TestRunner$ReventlessLocal.setup();
16
+
17
+ let name = "TestEP";
18
+
19
+ let commandSchema = S.schema(s => ({
20
+ TAG: "Forward",
21
+ targetId: s.m(S.string)
22
+ }));
23
+
24
+ let eventSchema = S.literal("TEPNoEvent");
25
+
26
+ let directiveSchema = S.literal("TEPNoDirective");
27
+
28
+ let moduleUrl = import.meta.url;
29
+
30
+ function commandAuthorization(param) {
31
+ return "AllowAuthenticated";
32
+ }
33
+
34
+ let TestEPSpec = {
35
+ name: name,
36
+ commandSchema: commandSchema,
37
+ eventSchema: eventSchema,
38
+ directiveSchema: directiveSchema,
39
+ moduleUrl: moduleUrl,
40
+ commandAuthorization: commandAuthorization
41
+ };
42
+
43
+ let name$1 = "TargetAgg";
44
+
45
+ let commandSchema$1 = S.schema(s => ({
46
+ TAG: "Execute",
47
+ targetId: s.m(S.string)
48
+ }));
49
+
50
+ let eventSchema$1 = S.schema(s => ({
51
+ TAG: "Executed",
52
+ targetId: s.m(S.string)
53
+ }));
54
+
55
+ let errorSchema = S.literal("TEAggNoError");
56
+
57
+ let moduleUrl$1 = import.meta.url;
58
+
59
+ function commandAuthorization$1(param) {
60
+ return "AllowAuthenticated";
61
+ }
62
+
63
+ let DelegateAggSpec = {
64
+ Id: undefined,
65
+ name: name$1,
66
+ commandSchema: commandSchema$1,
67
+ eventSchema: eventSchema$1,
68
+ errorSchema: errorSchema,
69
+ moduleUrl: moduleUrl$1,
70
+ commandAuthorization: commandAuthorization$1
71
+ };
72
+
73
+ let moduleUrl$2 = "test:ExtensionPointFixtures:ForwardMapping";
74
+
75
+ function mapIncomingCommand(_id, cmd, _meta) {
76
+ let targetId = cmd.targetId;
77
+ let execCmd = {
78
+ TAG: "Execute",
79
+ targetId: targetId
80
+ };
81
+ return [{
82
+ TAG: "PublishCommand",
83
+ _0: targetId,
84
+ _1: execCmd
85
+ }];
86
+ }
87
+
88
+ let ForwardMapping = {
89
+ ExtensionPoint: undefined,
90
+ Delegate: undefined,
91
+ moduleUrl: moduleUrl$2,
92
+ mapIncomingCommand: mapIncomingCommand,
93
+ mapOutgoingEvent: undefined
94
+ };
95
+
96
+ let TestEPMapping1 = ExtensionPointMapping$ReventlessInfra.Make({
97
+ ExtensionPoint: {
98
+ name: name,
99
+ moduleUrl: moduleUrl,
100
+ commandSchema: commandSchema,
101
+ eventSchema: eventSchema,
102
+ directiveSchema: directiveSchema
103
+ },
104
+ Delegate: {
105
+ Id: {
106
+ schema: Id$Reventless.StringPure.schema,
107
+ make: prim => prim,
108
+ makeFromString: prim => prim,
109
+ toString: prim => prim,
110
+ cmp: Id$Reventless.StringPure.cmp
111
+ },
112
+ name: name$1,
113
+ eventSchema: eventSchema$1,
114
+ errorSchema: errorSchema,
115
+ commandSchema: commandSchema$1,
116
+ moduleUrl: moduleUrl$1,
117
+ commandAuthorization: commandAuthorization$1
118
+ },
119
+ moduleUrl: moduleUrl$2,
120
+ mapIncomingCommand: mapIncomingCommand,
121
+ mapOutgoingEvent: undefined
122
+ });
123
+
124
+ let name$2 = "TestEPMappings";
125
+
126
+ let moduleUrl$3 = import.meta.url;
127
+
128
+ let mappings = [TestEPMapping1];
129
+
130
+ let TestEPMappings = {
131
+ Spec: undefined,
132
+ name: name$2,
133
+ moduleUrl: moduleUrl$3,
134
+ mappings: mappings
135
+ };
136
+
137
+ let EPBuilderWithBus = ExtensionPoint_Builder$ReventlessLocal.Make(Bus);
138
+
139
+ let TestEP = EPBuilderWithBus.Make({
140
+ name: name,
141
+ moduleUrl: moduleUrl,
142
+ commandSchema: commandSchema,
143
+ eventSchema: eventSchema,
144
+ directiveSchema: directiveSchema
145
+ })({
146
+ name: name$2,
147
+ moduleUrl: moduleUrl$3,
148
+ mappings: mappings
149
+ });
150
+
151
+ let capturedCmds = {
152
+ contents: []
153
+ };
154
+
155
+ async function mockPublishFn(cmds) {
156
+ capturedCmds.contents = capturedCmds.contents.concat(cmds);
157
+ }
158
+
159
+ let ep = TestEP.make(Object.fromEntries([[
160
+ "TargetAgg",
161
+ []
162
+ ]]), Object.fromEntries([[
163
+ "TargetAgg",
164
+ mockPublishFn
165
+ ]]), TestFixtures$ReventlessLocal.mockScheduler, TestFixtures$ReventlessLocal.mockQueryEngine, TestFixtures$ReventlessLocal.mockResourceNaming, undefined);
166
+
167
+ let testMeta = TestFixtures$ReventlessLocal.makeTestMeta("TestEP");
168
+
169
+ function resetMocks() {
170
+ capturedCmds.contents = [];
171
+ }
172
+
173
+ export {
174
+ Bus,
175
+ TestEPSpec,
176
+ DelegateAggSpec,
177
+ ForwardMapping,
178
+ TestEPMapping1,
179
+ TestEPMappings,
180
+ EPBuilderWithBus,
181
+ TestEP,
182
+ capturedCmds,
183
+ mockPublishFn,
184
+ ep,
185
+ testMeta,
186
+ resetMocks,
187
+ }
188
+ /* Not a pure module */
@@ -0,0 +1,62 @@
1
+ // Integration tests for ExtensionPoint builder (in-memory).
2
+ // Dispatches a command to the EP channel and verifies that publishToAggregates is called.
3
+
4
+ open JestGlobals
5
+ open ExtensionPointFixtures
6
+
7
+ // ─────────────────────────────────────────────────────────────
8
+ // Resolve Output chain before tests run.
9
+ //
10
+ // Two resolves are needed:
11
+ // 1. commandTopic resolve — triggers commandTopicResources->flatMap which calls
12
+ // forCommandTopic → RuntimeEnvironment.make (starts handler chain) → connect
13
+ // (registers Bus command handler).
14
+ // 2. eventTopic resolve — drains additional microtask ticks so the inner
15
+ // handler->Output.apply(setHandlerRef) completes before any test dispatches.
16
+ // ─────────────────────────────────────────────────────────────
17
+
18
+ let _ = beforeAllAsync(async () => {
19
+ let epOutputs = ep->TestEP.outputs
20
+ let _ = await epOutputs.commandTopic->TestRunner.resolve
21
+ let _ = await epOutputs.eventTopic->TestRunner.resolve
22
+ })
23
+
24
+ describe("ExtensionPoint (in-memory)", () => {
25
+ let _ = beforeEach(() => resetMocks())
26
+
27
+ testPromise(
28
+ "dispatching Forward command calls publishToAggregates with Execute command",
29
+ async () => {
30
+ // Build the full command body: {id, meta, command}
31
+ let forwardCmdJson =
32
+ TestEPSpec.Forward({targetId: "target-1"})
33
+ ->S.reverseConvertToJsonOrThrow(TestEPSpec.commandSchema)
34
+ let body = JSON.Encode.object(
35
+ Dict.fromArray([
36
+ ("id", JSON.Encode.string("ep-id-1")),
37
+ ("meta", testMeta->S.reverseConvertToJsonOrThrow(Reventless.Message.metaSchema)),
38
+ ("command", forwardCmdJson),
39
+ ]),
40
+ )
41
+ // Dispatch to the EP's CommandTopic channel: Spec.name + "ExtPoint" + "CmdTopic"
42
+ await Bus.dispatchCommand("TestEPExtPointCmdTopic", body)
43
+
44
+ // publishToAggregates["TargetAgg"] should have been called once
45
+ expect(capturedCmds.contents->Array.length)->toBe(1)
46
+
47
+ let cmd = capturedCmds.contents->Array.getUnsafe(0)
48
+ // The aggregate command id comes from PublishCommand(targetId, ...) = "target-1"
49
+ expect(cmd.id)->toBe("target-1")
50
+
51
+ // commandJson should decode to Execute({targetId: "target-1"})
52
+ let decoded = cmd.commandJson->S.parseJsonOrThrow(DelegateAggSpec.commandSchema)
53
+ expect(decoded)->toEqual(DelegateAggSpec.Execute({targetId: "target-1"}))
54
+ },
55
+ )
56
+
57
+ testPromise("unknown channel dispatch does not throw or call publishToAggregates", async () => {
58
+ let body = JSON.Encode.object(Dict.fromArray([("id", JSON.Encode.string("x"))]))
59
+ await Bus.dispatchCommand("UnknownChannel", body)
60
+ expect(capturedCmds.contents->Array.length)->toBe(0)
61
+ })
62
+ })
@@ -0,0 +1,55 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as S from "sury/src/S.res.mjs";
4
+ import * as Message$Reventless from "@reventlessdev/reventless-spec/src/types/Message.res.mjs";
5
+ import * as TestRunner$ReventlessLocal from "../../../src/test/TestRunner.res.mjs";
6
+ import * as ExtensionPointFixtures$ReventlessLocal from "./ExtensionPointFixtures.res.mjs";
7
+
8
+ globalThis.beforeAll(async () => {
9
+ let epOutputs = ExtensionPointFixtures$ReventlessLocal.TestEP.outputs(ExtensionPointFixtures$ReventlessLocal.ep);
10
+ await TestRunner$ReventlessLocal.resolve(epOutputs.commandTopic);
11
+ await TestRunner$ReventlessLocal.resolve(epOutputs.eventTopic);
12
+ });
13
+
14
+ globalThis.describe("ExtensionPoint (in-memory)", () => {
15
+ globalThis.beforeEach(() => ExtensionPointFixtures$ReventlessLocal.resetMocks());
16
+ globalThis.test("dispatching Forward command calls publishToAggregates with Execute command", async () => {
17
+ let forwardCmdJson = S.reverseConvertToJsonOrThrow({
18
+ TAG: "Forward",
19
+ targetId: "target-1"
20
+ }, ExtensionPointFixtures$ReventlessLocal.TestEPSpec.commandSchema);
21
+ let body = Object.fromEntries([
22
+ [
23
+ "id",
24
+ "ep-id-1"
25
+ ],
26
+ [
27
+ "meta",
28
+ S.reverseConvertToJsonOrThrow(ExtensionPointFixtures$ReventlessLocal.testMeta, Message$Reventless.metaSchema)
29
+ ],
30
+ [
31
+ "command",
32
+ forwardCmdJson
33
+ ]
34
+ ]);
35
+ await ExtensionPointFixtures$ReventlessLocal.Bus.dispatchCommand("TestEPExtPointCmdTopic", body);
36
+ globalThis.expect(ExtensionPointFixtures$ReventlessLocal.capturedCmds.contents.length).toBe(1);
37
+ let cmd = ExtensionPointFixtures$ReventlessLocal.capturedCmds.contents[0];
38
+ globalThis.expect(cmd.id).toBe("target-1");
39
+ let decoded = S.parseJsonOrThrow(cmd.commandJson, ExtensionPointFixtures$ReventlessLocal.DelegateAggSpec.commandSchema);
40
+ globalThis.expect(decoded).toEqual({
41
+ TAG: "Execute",
42
+ targetId: "target-1"
43
+ });
44
+ });
45
+ globalThis.test("unknown channel dispatch does not throw or call publishToAggregates", async () => {
46
+ let body = Object.fromEntries([[
47
+ "id",
48
+ "x"
49
+ ]]);
50
+ await ExtensionPointFixtures$ReventlessLocal.Bus.dispatchCommand("UnknownChannel", body);
51
+ globalThis.expect(ExtensionPointFixtures$ReventlessLocal.capturedCmds.contents.length).toBe(0);
52
+ });
53
+ });
54
+
55
+ /* Not a pure module */
@@ -0,0 +1,48 @@
1
+ // Fixtures for Heartbeat component integration tests.
2
+ // Uses LocalHeartbeatRunner and fake timers to verify the handler fires on schedule.
3
+
4
+ open TestFixtures
5
+ open JestGlobals
6
+
7
+ // Activate Pulumi mock mode (must be called before any Component.make)
8
+ let _ = TestRunner.setup()
9
+
10
+ // ─────────────────────────────────────────────────────────────
11
+ // Build the Heartbeat component maker
12
+ // ─────────────────────────────────────────────────────────────
13
+
14
+ module HeartbeatMaker = ReventlessCore.Heartbeat_Builder.Make(LocalHeartbeatRunner)
15
+
16
+ let _ = beforeAll(() => {
17
+ jest->useFakeTimers
18
+ })
19
+
20
+ let _ = afterAll(() => {
21
+ LocalHeartbeatRunner.reset()
22
+ jest->useRealTimers
23
+ })
24
+
25
+ // ─────────────────────────────────────────────────────────────
26
+ // Shared state — reset in beforeEach inside describe
27
+ // ─────────────────────────────────────────────────────────────
28
+
29
+ let capturedCount: ref<int> = ref(0)
30
+
31
+ let mockPublish: ReventlessInfra.CommandTopic.publishJsons = async cmds => {
32
+ capturedCount := capturedCount.contents + cmds->Array.length
33
+ }
34
+
35
+ // resolvedHandler populated in beforeAllAsync before tests run.
36
+ // makeHandler returns eventHandler<unit, 'ctx, unit> = (unit, ctx) => promise<unit>.
37
+ // The runtime handlerRef expects (JSON.t, unit) => promise<unit> — same in JS, safe to cast.
38
+ let resolvedHandler: ref<option<(unit, unit) => promise<unit>>> = ref(None)
39
+
40
+ let _ = beforeAllAsync(async () => {
41
+ let h =
42
+ await HeartbeatMaker.makeHandler(
43
+ ~id="hb-id-1",
44
+ ~timeout=1,
45
+ ~publishToPluginExtensionPoint=mockPublish,
46
+ )->TestRunner.resolve
47
+ resolvedHandler := Some(h)
48
+ })
@@ -0,0 +1,46 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Globals from "@jest/globals";
4
+ import * as TestRunner$ReventlessLocal from "../../../src/test/TestRunner.res.mjs";
5
+ import * as Heartbeat_Builder$ReventlessCore from "@reventlessdev/reventless-core/src/components/Heartbeat/Heartbeat_Builder.res.mjs";
6
+ import * as LocalHeartbeatRunner$ReventlessLocal from "../../../src/adapter/Heartbeat/LocalHeartbeatRunner.res.mjs";
7
+
8
+ TestRunner$ReventlessLocal.setup();
9
+
10
+ let HeartbeatMaker = Heartbeat_Builder$ReventlessCore.Make({
11
+ make: LocalHeartbeatRunner$ReventlessLocal.make
12
+ });
13
+
14
+ globalThis.beforeAll(() => {
15
+ Globals.jest.useFakeTimers();
16
+ });
17
+
18
+ globalThis.afterAll(() => {
19
+ LocalHeartbeatRunner$ReventlessLocal.reset();
20
+ Globals.jest.useRealTimers();
21
+ });
22
+
23
+ let capturedCount = {
24
+ contents: 0
25
+ };
26
+
27
+ async function mockPublish(cmds) {
28
+ capturedCount.contents = capturedCount.contents + cmds.length | 0;
29
+ }
30
+
31
+ let resolvedHandler = {
32
+ contents: undefined
33
+ };
34
+
35
+ globalThis.beforeAll(async () => {
36
+ let h = await TestRunner$ReventlessLocal.resolve(HeartbeatMaker.makeHandler("hb-id-1", 1, mockPublish));
37
+ resolvedHandler.contents = h;
38
+ });
39
+
40
+ export {
41
+ HeartbeatMaker,
42
+ capturedCount,
43
+ mockPublish,
44
+ resolvedHandler,
45
+ }
46
+ /* Not a pure module */
@@ -0,0 +1,67 @@
1
+ // Integration tests for Heartbeat_Builder (in-memory).
2
+ // Verifies that makeHandler returns a callable handler and connect wires the interval.
3
+ // Adapter-level timer tests are in adapter/HeartbeatRunnerTest.res.
4
+
5
+ open TestFixtures
6
+ open JestGlobals
7
+ open HeartbeatFixtures
8
+
9
+ describe("Heartbeat_Builder.Make:", () => {
10
+ let _ = beforeEach(() => {
11
+ capturedCount := 0
12
+ })
13
+
14
+ describe("makeHandler + connect:", () => {
15
+ testPromise("handler fires once after 1-minute interval", async () => {
16
+ let handler = resolvedHandler.contents->Option.getUnsafe
17
+ let heartbeat = HeartbeatMaker.make(~name="hb-test-1")
18
+ let handlerDeferred: Deferred.t<LocalRuntimeEnvironment.handler, unit> =
19
+ Deferred.make()->Effect.runSync
20
+ Deferred.succeed(handlerDeferred, Obj.magic(handler))->Effect.runSync->ignore
21
+ let runtime: ReventlessCore.Runtime.environment<LocalHeartbeatRunner.runtimeParts> = {
22
+ parts: {
23
+ handlerDeferred,
24
+ subscriptionLatch: Effect.makeLatch(false)->Effect.runSync,
25
+ },
26
+ resources: [],
27
+ }
28
+ HeartbeatMaker.connect(~runtime, ~remoteChannel=Obj.magic(()), ~timeout=1, heartbeat)
29
+ jest->advanceTimersByTime(1 * 60 * 1000)
30
+ // Give the Effect.runPromise microtask one tick to complete
31
+ let _ = await Promise.resolve()
32
+ expect(capturedCount.contents)->toBe(1)
33
+ LocalHeartbeatRunner.reset()
34
+ })
35
+
36
+ testPromise("handler fires twice after two interval advances", async () => {
37
+ let handler = resolvedHandler.contents->Option.getUnsafe
38
+ let heartbeat = HeartbeatMaker.make(~name="hb-test-2")
39
+ let handlerDeferred: Deferred.t<LocalRuntimeEnvironment.handler, unit> =
40
+ Deferred.make()->Effect.runSync
41
+ Deferred.succeed(handlerDeferred, Obj.magic(handler))->Effect.runSync->ignore
42
+ let runtime: ReventlessCore.Runtime.environment<LocalHeartbeatRunner.runtimeParts> = {
43
+ parts: {
44
+ handlerDeferred,
45
+ subscriptionLatch: Effect.makeLatch(false)->Effect.runSync,
46
+ },
47
+ resources: [],
48
+ }
49
+ HeartbeatMaker.connect(~runtime, ~remoteChannel=Obj.magic(()), ~timeout=1, heartbeat)
50
+ jest->advanceTimersByTime(1 * 60 * 1000)
51
+ let _ = await Promise.resolve()
52
+ jest->advanceTimersByTime(1 * 60 * 1000)
53
+ let _ = await Promise.resolve()
54
+ expect(capturedCount.contents)->toBe(2)
55
+ LocalHeartbeatRunner.reset()
56
+ })
57
+ })
58
+
59
+ describe("make:", () => {
60
+ testPromise("creates a heartbeat component without throwing", async () => {
61
+ let heartbeat = HeartbeatMaker.make(~name="hb-make-smoke")
62
+ // Just verify component creation succeeds
63
+ let _ = heartbeat
64
+ expect(true)->toBe(true)
65
+ })
66
+ })
67
+ })
@@ -0,0 +1,65 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Globals from "@jest/globals";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Deferred from "effect/Deferred";
6
+ import * as HeartbeatFixtures$ReventlessLocal from "./HeartbeatFixtures.res.mjs";
7
+ import * as LocalHeartbeatRunner$ReventlessLocal from "../../../src/adapter/Heartbeat/LocalHeartbeatRunner.res.mjs";
8
+
9
+ globalThis.describe("Heartbeat_Builder.Make:", () => {
10
+ globalThis.beforeEach(() => {
11
+ HeartbeatFixtures$ReventlessLocal.capturedCount.contents = 0;
12
+ });
13
+ globalThis.describe("makeHandler + connect:", () => {
14
+ globalThis.test("handler fires once after 1-minute interval", async () => {
15
+ let handler = HeartbeatFixtures$ReventlessLocal.resolvedHandler.contents;
16
+ let heartbeat = HeartbeatFixtures$ReventlessLocal.HeartbeatMaker.make("hb-test-1", undefined);
17
+ let handlerDeferred = Effect.runSync(Deferred.make());
18
+ Effect.runSync(Deferred.succeed(handlerDeferred, handler));
19
+ let runtime_parts = {
20
+ handlerDeferred: handlerDeferred,
21
+ subscriptionLatch: Effect.runSync(Effect.makeLatch(false))
22
+ };
23
+ let runtime_resources = [];
24
+ let runtime = {
25
+ parts: runtime_parts,
26
+ resources: runtime_resources
27
+ };
28
+ HeartbeatFixtures$ReventlessLocal.HeartbeatMaker.connect(runtime, undefined, 1, heartbeat);
29
+ Globals.jest.advanceTimersByTime(60000);
30
+ await Promise.resolve();
31
+ globalThis.expect(HeartbeatFixtures$ReventlessLocal.capturedCount.contents).toBe(1);
32
+ return LocalHeartbeatRunner$ReventlessLocal.reset();
33
+ });
34
+ globalThis.test("handler fires twice after two interval advances", async () => {
35
+ let handler = HeartbeatFixtures$ReventlessLocal.resolvedHandler.contents;
36
+ let heartbeat = HeartbeatFixtures$ReventlessLocal.HeartbeatMaker.make("hb-test-2", undefined);
37
+ let handlerDeferred = Effect.runSync(Deferred.make());
38
+ Effect.runSync(Deferred.succeed(handlerDeferred, handler));
39
+ let runtime_parts = {
40
+ handlerDeferred: handlerDeferred,
41
+ subscriptionLatch: Effect.runSync(Effect.makeLatch(false))
42
+ };
43
+ let runtime_resources = [];
44
+ let runtime = {
45
+ parts: runtime_parts,
46
+ resources: runtime_resources
47
+ };
48
+ HeartbeatFixtures$ReventlessLocal.HeartbeatMaker.connect(runtime, undefined, 1, heartbeat);
49
+ Globals.jest.advanceTimersByTime(60000);
50
+ await Promise.resolve();
51
+ Globals.jest.advanceTimersByTime(60000);
52
+ await Promise.resolve();
53
+ globalThis.expect(HeartbeatFixtures$ReventlessLocal.capturedCount.contents).toBe(2);
54
+ return LocalHeartbeatRunner$ReventlessLocal.reset();
55
+ });
56
+ });
57
+ globalThis.describe("make:", () => {
58
+ globalThis.test("creates a heartbeat component without throwing", async () => {
59
+ HeartbeatFixtures$ReventlessLocal.HeartbeatMaker.make("hb-make-smoke", undefined);
60
+ globalThis.expect(true).toBe(true);
61
+ });
62
+ });
63
+ });
64
+
65
+ /* Not a pure module */