@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,105 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as TestFixtures$ReventlessGwt from "@reventlessdev/reventless-gwt/src/TestFixtures.res.mjs";
4
+ import * as PluginsProjection$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/lifecycle/PluginsProjection.res.mjs";
5
+
6
+ let pluginDefinition = {
7
+ id: "name@1",
8
+ name: "name",
9
+ version: "1",
10
+ extensionPoints: [],
11
+ extensions: [{
12
+ name: "Core.Plugin.Test",
13
+ extensionPointName: "Core.Plugin",
14
+ dcbSources: []
15
+ }],
16
+ eventCollector: "eventCollector",
17
+ extensionProtocols: [],
18
+ apiSchemaFragment: undefined,
19
+ apiTarget: undefined,
20
+ uiFragments: undefined,
21
+ structure: undefined,
22
+ dcbEventLog: undefined
23
+ };
24
+
25
+ let pluginDefinitionV2 = {
26
+ id: "name@2",
27
+ name: pluginDefinition.name,
28
+ version: "2",
29
+ extensionPoints: pluginDefinition.extensionPoints,
30
+ extensions: pluginDefinition.extensions,
31
+ eventCollector: pluginDefinition.eventCollector,
32
+ extensionProtocols: pluginDefinition.extensionProtocols,
33
+ apiSchemaFragment: pluginDefinition.apiSchemaFragment,
34
+ apiTarget: pluginDefinition.apiTarget,
35
+ uiFragments: pluginDefinition.uiFragments,
36
+ structure: pluginDefinition.structure,
37
+ dcbEventLog: pluginDefinition.dcbEventLog
38
+ };
39
+
40
+ function display(def, status, otherConnectedVersions) {
41
+ return PluginsProjection$ReventlessCore.displayState(def, status, TestFixtures$ReventlessGwt.statusChange, otherConnectedVersions);
42
+ }
43
+
44
+ let state = display(pluginDefinition, "Connected", []);
45
+
46
+ let uiManifest_panels = [];
47
+
48
+ let uiManifest_pages = [];
49
+
50
+ let uiManifest = {
51
+ remoteEntryUrl: "https://cdn.example.com/plugin@1.0/remoteEntry.js",
52
+ panels: uiManifest_panels,
53
+ pages: uiManifest_pages
54
+ };
55
+
56
+ let pluginDefinitionWithUI = {
57
+ id: pluginDefinition.id,
58
+ name: pluginDefinition.name,
59
+ version: pluginDefinition.version,
60
+ extensionPoints: pluginDefinition.extensionPoints,
61
+ extensions: pluginDefinition.extensions,
62
+ eventCollector: pluginDefinition.eventCollector,
63
+ extensionProtocols: pluginDefinition.extensionProtocols,
64
+ apiSchemaFragment: pluginDefinition.apiSchemaFragment,
65
+ apiTarget: pluginDefinition.apiTarget,
66
+ uiFragments: uiManifest,
67
+ structure: pluginDefinition.structure,
68
+ dcbEventLog: pluginDefinition.dcbEventLog
69
+ };
70
+
71
+ let extensionPointNames2 = ["Test.Test"];
72
+
73
+ let pluginDefinition2 = {
74
+ id: "name2@1",
75
+ name: "name2",
76
+ version: "1",
77
+ extensionPoints: extensionPointNames2.map((name, idx) => ({
78
+ name: name,
79
+ commandTopic: `commandTopic` + idx.toString(),
80
+ eventTopic: `eventTopic` + idx.toString()
81
+ })),
82
+ extensions: [],
83
+ eventCollector: "eventCollector",
84
+ extensionProtocols: [],
85
+ apiSchemaFragment: undefined,
86
+ apiTarget: undefined,
87
+ uiFragments: undefined,
88
+ structure: undefined,
89
+ dcbEventLog: undefined
90
+ };
91
+
92
+ let sc = TestFixtures$ReventlessGwt.statusChange;
93
+
94
+ export {
95
+ sc,
96
+ pluginDefinition,
97
+ pluginDefinitionV2,
98
+ display,
99
+ state,
100
+ uiManifest,
101
+ pluginDefinitionWithUI,
102
+ extensionPointNames2,
103
+ pluginDefinition2,
104
+ }
105
+ /* state Not a pure module */
@@ -0,0 +1,95 @@
1
+ open ReventlessCore
2
+ open PluginSpec
3
+ open Plugin_Fixtures
4
+ module PluginsProjectionTest = ReventlessGwt.MultiSourceProjection_GWT.Make(PluginsProjection.PluginMapping)
5
+ open PluginsProjectionTest
6
+
7
+ // Current view (one row per plugin name). The displayed row tracks the current
8
+ // version (highest Connected); `otherConnectedVersions` lists the OTHER versions
9
+ // currently Connected (own version excluded) — used to recompute current during a
10
+ // deploy overlap, pruned the moment a version stops being Connected.
11
+
12
+ let supersededV1ByV2 = VersionSuperseded({
13
+ supersededVersion: "1",
14
+ supersededDefinition: pluginDefinition,
15
+ newVersion: "2",
16
+ newDefinition: pluginDefinitionV2,
17
+ })
18
+
19
+ describe("PluginsProjection:", () => {
20
+ test("VersionDetected does not create a row", () =>
21
+ givenEvents([])->whenEvent(VersionDetected("1"))->thenNoState
22
+ )
23
+
24
+ test("VersionConnected writes the current row", () =>
25
+ givenEvents([])
26
+ ->whenEvent(VersionConnected(pluginDefinition))
27
+ ->thenState(state)
28
+ )
29
+
30
+ test("A higher VersionConnected becomes the current row (supersession)", () =>
31
+ givenEvents([VersionConnected(pluginDefinition)])
32
+ ->whenEvent(VersionConnected(pluginDefinitionV2))
33
+ ->thenState(display(pluginDefinitionV2, Connected, ["1"]))
34
+ )
35
+
36
+ test("A lower VersionConnected records status but keeps the higher current", () =>
37
+ givenEvents([VersionConnected(pluginDefinitionV2)])
38
+ ->whenEvent(VersionConnected(pluginDefinition))
39
+ ->thenState(display(pluginDefinitionV2, Connected, ["1"]))
40
+ )
41
+
42
+ test("VersionSuperseded itself does not change the row", () =>
43
+ givenEvents([VersionConnected(pluginDefinition)])->whenEvent(supersededV1ByV2)->thenState(state)
44
+ )
45
+
46
+ test("VersionDisconnected of the current flips its status", () =>
47
+ givenEvents([VersionConnected(pluginDefinition)])
48
+ ->whenEvent(VersionDisconnected(pluginDefinition))
49
+ ->thenState(display(pluginDefinition, Disconnected, []))
50
+ )
51
+
52
+ test("VersionPromoted rolls the current back to a lower live version", () =>
53
+ givenEvents([
54
+ VersionConnected(pluginDefinition),
55
+ VersionConnected(pluginDefinitionV2),
56
+ VersionDisconnected(pluginDefinitionV2),
57
+ ])
58
+ ->whenEvent(VersionPromoted(pluginDefinition))
59
+ ->thenState(display(pluginDefinition, Connected, []))
60
+ )
61
+
62
+ test("VersionDeactivated of the current yields status Inactive", () =>
63
+ givenEvents([VersionConnected(pluginDefinition)])
64
+ ->whenEvent(VersionDeactivated(pluginDefinition))
65
+ ->thenState(display(pluginDefinition, Inactive, []))
66
+ )
67
+
68
+ test("VersionRetired of the current yields status Retired", () =>
69
+ givenEvents([VersionConnected(pluginDefinition)])
70
+ ->whenEvent(VersionRetired(pluginDefinition))
71
+ ->thenState(display(pluginDefinition, Retired, []))
72
+ )
73
+
74
+ test("UIFragmentRegistered is ignored by the current view", () =>
75
+ givenEvents([VersionConnected(pluginDefinition)])
76
+ ->whenEvent(UIFragmentRegistered({pluginId: pluginDefinition.id, manifest: uiManifest}))
77
+ ->thenState(state)
78
+ )
79
+
80
+ test("UIFragmentDeregistered is ignored by the current view", () =>
81
+ givenEvents([VersionConnected(pluginDefinition)])
82
+ ->whenEvent(UIFragmentDeregistered({pluginId: pluginDefinition.id}))
83
+ ->thenState(state)
84
+ )
85
+
86
+ test("IncompatiblePluginDetected leaves a connected row unchanged", () =>
87
+ givenEvents([VersionConnected(pluginDefinition)])
88
+ ->whenEvent(IncompatiblePluginDetected(pluginDefinition))
89
+ ->thenState(state)
90
+ )
91
+
92
+ test("IncompatiblePluginDetected on a never-seen plugin creates no row", () =>
93
+ givenEvents([])->whenEvent(IncompatiblePluginDetected(pluginDefinition))->thenNoState
94
+ )
95
+ })
@@ -0,0 +1,120 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Plugin_Fixtures$ReventlessLocal from "./Plugin_Fixtures.res.mjs";
4
+ import * as PluginsProjection$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/lifecycle/PluginsProjection.res.mjs";
5
+ import * as MultiSourceProjection_GWT$ReventlessGwt from "@reventlessdev/reventless-gwt/src/MultiSourceProjection_GWT.res.mjs";
6
+
7
+ let PluginsProjectionTest = MultiSourceProjection_GWT$ReventlessGwt.Make(PluginsProjection$ReventlessCore.PluginMapping);
8
+
9
+ let supersededV1ByV2 = {
10
+ TAG: "VersionSuperseded",
11
+ _0: {
12
+ supersededVersion: "1",
13
+ supersededDefinition: Plugin_Fixtures$ReventlessLocal.pluginDefinition,
14
+ newVersion: "2",
15
+ newDefinition: Plugin_Fixtures$ReventlessLocal.pluginDefinitionV2
16
+ }
17
+ };
18
+
19
+ PluginsProjectionTest.describe("PluginsProjection:", () => {
20
+ PluginsProjectionTest.test("VersionDetected does not create a row", undefined, () => PluginsProjectionTest.thenNoState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([]), {
21
+ TAG: "VersionDetected",
22
+ _0: "1"
23
+ })));
24
+ PluginsProjectionTest.test("VersionConnected writes the current row", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([]), {
25
+ TAG: "VersionConnected",
26
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
27
+ }), Plugin_Fixtures$ReventlessLocal.state));
28
+ PluginsProjectionTest.test("A higher VersionConnected becomes the current row (supersession)", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
29
+ TAG: "VersionConnected",
30
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
31
+ }]), {
32
+ TAG: "VersionConnected",
33
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinitionV2
34
+ }), Plugin_Fixtures$ReventlessLocal.display(Plugin_Fixtures$ReventlessLocal.pluginDefinitionV2, "Connected", ["1"])));
35
+ PluginsProjectionTest.test("A lower VersionConnected records status but keeps the higher current", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
36
+ TAG: "VersionConnected",
37
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinitionV2
38
+ }]), {
39
+ TAG: "VersionConnected",
40
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
41
+ }), Plugin_Fixtures$ReventlessLocal.display(Plugin_Fixtures$ReventlessLocal.pluginDefinitionV2, "Connected", ["1"])));
42
+ PluginsProjectionTest.test("VersionSuperseded itself does not change the row", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
43
+ TAG: "VersionConnected",
44
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
45
+ }]), supersededV1ByV2), Plugin_Fixtures$ReventlessLocal.state));
46
+ PluginsProjectionTest.test("VersionDisconnected of the current flips its status", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
47
+ TAG: "VersionConnected",
48
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
49
+ }]), {
50
+ TAG: "VersionDisconnected",
51
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
52
+ }), Plugin_Fixtures$ReventlessLocal.display(Plugin_Fixtures$ReventlessLocal.pluginDefinition, "Disconnected", [])));
53
+ PluginsProjectionTest.test("VersionPromoted rolls the current back to a lower live version", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([
54
+ {
55
+ TAG: "VersionConnected",
56
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
57
+ },
58
+ {
59
+ TAG: "VersionConnected",
60
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinitionV2
61
+ },
62
+ {
63
+ TAG: "VersionDisconnected",
64
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinitionV2
65
+ }
66
+ ]), {
67
+ TAG: "VersionPromoted",
68
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
69
+ }), Plugin_Fixtures$ReventlessLocal.display(Plugin_Fixtures$ReventlessLocal.pluginDefinition, "Connected", [])));
70
+ PluginsProjectionTest.test("VersionDeactivated of the current yields status Inactive", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
71
+ TAG: "VersionConnected",
72
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
73
+ }]), {
74
+ TAG: "VersionDeactivated",
75
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
76
+ }), Plugin_Fixtures$ReventlessLocal.display(Plugin_Fixtures$ReventlessLocal.pluginDefinition, "Inactive", [])));
77
+ PluginsProjectionTest.test("VersionRetired of the current yields status Retired", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
78
+ TAG: "VersionConnected",
79
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
80
+ }]), {
81
+ TAG: "VersionRetired",
82
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
83
+ }), Plugin_Fixtures$ReventlessLocal.display(Plugin_Fixtures$ReventlessLocal.pluginDefinition, "Retired", [])));
84
+ PluginsProjectionTest.test("UIFragmentRegistered is ignored by the current view", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
85
+ TAG: "VersionConnected",
86
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
87
+ }]), {
88
+ TAG: "UIFragmentRegistered",
89
+ _0: {
90
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id,
91
+ manifest: Plugin_Fixtures$ReventlessLocal.uiManifest
92
+ }
93
+ }), Plugin_Fixtures$ReventlessLocal.state));
94
+ PluginsProjectionTest.test("UIFragmentDeregistered is ignored by the current view", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
95
+ TAG: "VersionConnected",
96
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
97
+ }]), {
98
+ TAG: "UIFragmentDeregistered",
99
+ _0: {
100
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id
101
+ }
102
+ }), Plugin_Fixtures$ReventlessLocal.state));
103
+ PluginsProjectionTest.test("IncompatiblePluginDetected leaves a connected row unchanged", undefined, () => PluginsProjectionTest.thenState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([{
104
+ TAG: "VersionConnected",
105
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
106
+ }]), {
107
+ TAG: "IncompatiblePluginDetected",
108
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
109
+ }), Plugin_Fixtures$ReventlessLocal.state));
110
+ PluginsProjectionTest.test("IncompatiblePluginDetected on a never-seen plugin creates no row", undefined, () => PluginsProjectionTest.thenNoState(PluginsProjectionTest.whenEvent(PluginsProjectionTest.givenEvents([]), {
111
+ TAG: "IncompatiblePluginDetected",
112
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
113
+ })));
114
+ });
115
+
116
+ export {
117
+ PluginsProjectionTest,
118
+ supersededV1ByV2,
119
+ }
120
+ /* PluginsProjectionTest Not a pure module */
@@ -0,0 +1,72 @@
1
+ open ReventlessCore
2
+ open PluginSpec
3
+ open Plugin_Fixtures
4
+ module UIFragmentRegistryProjectionTest = ReventlessGwt.MultiSourceProjection_GWT.Make(
5
+ UIFragmentRegistryProjection.UIFragmentRegistryMapping,
6
+ )
7
+ open UIFragmentRegistryProjectionTest
8
+
9
+ let registeredState: UIFragmentRegistryReadModelSpec.state = {
10
+ pluginId: ReventlessGwt.TestFixtures.id,
11
+ remoteEntryUrl: uiManifest.remoteEntryUrl,
12
+ panels: uiManifest.panels,
13
+ pages: uiManifest.pages,
14
+ registeredAt: ReventlessGwt.TestFixtures.meta.time,
15
+ updatedAt: ReventlessGwt.TestFixtures.meta.time,
16
+ }
17
+
18
+ let updatedManifest: Reventless.Plugin.uiFragmentManifest = {
19
+ remoteEntryUrl: "https://cdn.example.com/plugin@2.0/remoteEntry.js",
20
+ panels: [],
21
+ pages: [],
22
+ }
23
+
24
+ describe("UIFragmentRegistryProjection:", () => {
25
+ test("UIFragmentRegistered creates entry", () =>
26
+ givenEvents([])
27
+ ->whenEvent(UIFragmentRegistered({pluginId: pluginDefinition.id, manifest: uiManifest}))
28
+ ->thenState(registeredState)
29
+ )
30
+
31
+ test("UIFragmentUpdated updates manifest fields", () =>
32
+ givenEvents([UIFragmentRegistered({pluginId: pluginDefinition.id, manifest: uiManifest})])
33
+ ->whenEvent(
34
+ UIFragmentUpdated({
35
+ pluginId: pluginDefinition.id,
36
+ previousManifest: uiManifest,
37
+ newManifest: updatedManifest,
38
+ }),
39
+ )
40
+ ->thenState({
41
+ ...registeredState,
42
+ remoteEntryUrl: updatedManifest.remoteEntryUrl,
43
+ panels: updatedManifest.panels,
44
+ pages: updatedManifest.pages,
45
+ updatedAt: ReventlessGwt.TestFixtures.meta.time,
46
+ })
47
+ )
48
+
49
+ test("UIFragmentDeregistered removes entry", () =>
50
+ givenEvents([UIFragmentRegistered({pluginId: pluginDefinition.id, manifest: uiManifest})])
51
+ ->whenEvent(UIFragmentDeregistered({pluginId: pluginDefinition.id}))
52
+ ->thenNoState
53
+ )
54
+
55
+ test("VersionConnected is ignored", () =>
56
+ givenEvents([UIFragmentRegistered({pluginId: pluginDefinition.id, manifest: uiManifest})])
57
+ ->whenEvent(VersionConnected(pluginDefinition))
58
+ ->thenState(registeredState)
59
+ )
60
+
61
+ test("VersionDisconnected is ignored", () =>
62
+ givenEvents([UIFragmentRegistered({pluginId: pluginDefinition.id, manifest: uiManifest})])
63
+ ->whenEvent(VersionDisconnected(pluginDefinition))
64
+ ->thenState(registeredState)
65
+ )
66
+
67
+ test("VersionDetected is ignored", () =>
68
+ givenEvents([UIFragmentRegistered({pluginId: pluginDefinition.id, manifest: uiManifest})])
69
+ ->whenEvent(VersionDetected("1"))
70
+ ->thenState(registeredState)
71
+ )
72
+ })
@@ -0,0 +1,117 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as TestFixtures$ReventlessGwt from "@reventlessdev/reventless-gwt/src/TestFixtures.res.mjs";
4
+ import * as Plugin_Fixtures$ReventlessLocal from "./Plugin_Fixtures.res.mjs";
5
+ import * as MultiSourceProjection_GWT$ReventlessGwt from "@reventlessdev/reventless-gwt/src/MultiSourceProjection_GWT.res.mjs";
6
+ import * as UIFragmentRegistryProjection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UIFragmentRegistryProjection.res.mjs";
7
+
8
+ let UIFragmentRegistryProjectionTest = MultiSourceProjection_GWT$ReventlessGwt.Make(UIFragmentRegistryProjection$ReventlessCore.UIFragmentRegistryMapping);
9
+
10
+ let registeredState_remoteEntryUrl = Plugin_Fixtures$ReventlessLocal.uiManifest.remoteEntryUrl;
11
+
12
+ let registeredState_panels = Plugin_Fixtures$ReventlessLocal.uiManifest.panels;
13
+
14
+ let registeredState_pages = Plugin_Fixtures$ReventlessLocal.uiManifest.pages;
15
+
16
+ let registeredState_registeredAt = TestFixtures$ReventlessGwt.meta.time;
17
+
18
+ let registeredState_updatedAt = TestFixtures$ReventlessGwt.meta.time;
19
+
20
+ let registeredState = {
21
+ pluginId: TestFixtures$ReventlessGwt.id,
22
+ remoteEntryUrl: registeredState_remoteEntryUrl,
23
+ panels: registeredState_panels,
24
+ pages: registeredState_pages,
25
+ registeredAt: registeredState_registeredAt,
26
+ updatedAt: registeredState_updatedAt
27
+ };
28
+
29
+ let updatedManifest_panels = [];
30
+
31
+ let updatedManifest_pages = [];
32
+
33
+ let updatedManifest = {
34
+ remoteEntryUrl: "https://cdn.example.com/plugin@2.0/remoteEntry.js",
35
+ panels: updatedManifest_panels,
36
+ pages: updatedManifest_pages
37
+ };
38
+
39
+ UIFragmentRegistryProjectionTest.describe("UIFragmentRegistryProjection:", () => {
40
+ UIFragmentRegistryProjectionTest.test("UIFragmentRegistered creates entry", undefined, () => UIFragmentRegistryProjectionTest.thenState(UIFragmentRegistryProjectionTest.whenEvent(UIFragmentRegistryProjectionTest.givenEvents([]), {
41
+ TAG: "UIFragmentRegistered",
42
+ _0: {
43
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id,
44
+ manifest: Plugin_Fixtures$ReventlessLocal.uiManifest
45
+ }
46
+ }), registeredState));
47
+ UIFragmentRegistryProjectionTest.test("UIFragmentUpdated updates manifest fields", undefined, () => UIFragmentRegistryProjectionTest.thenState(UIFragmentRegistryProjectionTest.whenEvent(UIFragmentRegistryProjectionTest.givenEvents([{
48
+ TAG: "UIFragmentRegistered",
49
+ _0: {
50
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id,
51
+ manifest: Plugin_Fixtures$ReventlessLocal.uiManifest
52
+ }
53
+ }]), {
54
+ TAG: "UIFragmentUpdated",
55
+ _0: {
56
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id,
57
+ previousManifest: Plugin_Fixtures$ReventlessLocal.uiManifest,
58
+ newManifest: updatedManifest
59
+ }
60
+ }), {
61
+ pluginId: TestFixtures$ReventlessGwt.id,
62
+ remoteEntryUrl: "https://cdn.example.com/plugin@2.0/remoteEntry.js",
63
+ panels: updatedManifest_panels,
64
+ pages: updatedManifest_pages,
65
+ registeredAt: registeredState_registeredAt,
66
+ updatedAt: TestFixtures$ReventlessGwt.meta.time
67
+ }));
68
+ UIFragmentRegistryProjectionTest.test("UIFragmentDeregistered removes entry", undefined, () => UIFragmentRegistryProjectionTest.thenNoState(UIFragmentRegistryProjectionTest.whenEvent(UIFragmentRegistryProjectionTest.givenEvents([{
69
+ TAG: "UIFragmentRegistered",
70
+ _0: {
71
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id,
72
+ manifest: Plugin_Fixtures$ReventlessLocal.uiManifest
73
+ }
74
+ }]), {
75
+ TAG: "UIFragmentDeregistered",
76
+ _0: {
77
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id
78
+ }
79
+ })));
80
+ UIFragmentRegistryProjectionTest.test("VersionConnected is ignored", undefined, () => UIFragmentRegistryProjectionTest.thenState(UIFragmentRegistryProjectionTest.whenEvent(UIFragmentRegistryProjectionTest.givenEvents([{
81
+ TAG: "UIFragmentRegistered",
82
+ _0: {
83
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id,
84
+ manifest: Plugin_Fixtures$ReventlessLocal.uiManifest
85
+ }
86
+ }]), {
87
+ TAG: "VersionConnected",
88
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
89
+ }), registeredState));
90
+ UIFragmentRegistryProjectionTest.test("VersionDisconnected is ignored", undefined, () => UIFragmentRegistryProjectionTest.thenState(UIFragmentRegistryProjectionTest.whenEvent(UIFragmentRegistryProjectionTest.givenEvents([{
91
+ TAG: "UIFragmentRegistered",
92
+ _0: {
93
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id,
94
+ manifest: Plugin_Fixtures$ReventlessLocal.uiManifest
95
+ }
96
+ }]), {
97
+ TAG: "VersionDisconnected",
98
+ _0: Plugin_Fixtures$ReventlessLocal.pluginDefinition
99
+ }), registeredState));
100
+ UIFragmentRegistryProjectionTest.test("VersionDetected is ignored", undefined, () => UIFragmentRegistryProjectionTest.thenState(UIFragmentRegistryProjectionTest.whenEvent(UIFragmentRegistryProjectionTest.givenEvents([{
101
+ TAG: "UIFragmentRegistered",
102
+ _0: {
103
+ pluginId: Plugin_Fixtures$ReventlessLocal.pluginDefinition.id,
104
+ manifest: Plugin_Fixtures$ReventlessLocal.uiManifest
105
+ }
106
+ }]), {
107
+ TAG: "VersionDetected",
108
+ _0: "1"
109
+ }), registeredState));
110
+ });
111
+
112
+ export {
113
+ UIFragmentRegistryProjectionTest,
114
+ registeredState,
115
+ updatedManifest,
116
+ }
117
+ /* UIFragmentRegistryProjectionTest Not a pure module */
@@ -0,0 +1,12 @@
1
+ // Pre-loads node:sqlite onto globalThis so the bridge .mjs can pull it
2
+ // without going through Jest's resolver (which on Jest 27 fails for `node:` URIs).
3
+ // process.getBuiltinModule (Node 22.16+) bypasses the module loader entirely.
4
+ globalThis.__nodeSqlite = process.getBuiltinModule("node:sqlite");
5
+
6
+ // Jest 27's ESM VM context does not expose globalThis.crypto. uuid@13's
7
+ // `default` export (dist/rng.js) depends on it, so Uuid.v4() throws
8
+ // "crypto.getRandomValues() not supported". Polyfill from node:crypto.
9
+ if (!globalThis.crypto) {
10
+ globalThis.crypto = require("node:crypto").webcrypto;
11
+ }
12
+