@reventlessdev/reventless-gwt 1.0.0-alpha.74

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 (172) hide show
  1. package/CHANGELOG.md +698 -0
  2. package/LICENSE +202 -0
  3. package/bin/reventless-dev.mjs +21 -0
  4. package/package.json +54 -0
  5. package/rescript.json +36 -0
  6. package/src/.gwtignore +10 -0
  7. package/src/Automation_GWT.res +207 -0
  8. package/src/Automation_GWT.res.mjs +160 -0
  9. package/src/Behavior_GWT.res +603 -0
  10. package/src/Behavior_GWT.res.mjs +426 -0
  11. package/src/Bind.res +29 -0
  12. package/src/Bind.res.mjs +22 -0
  13. package/src/BuildClassifier.res +137 -0
  14. package/src/BuildClassifier.res.mjs +136 -0
  15. package/src/Cancellation.res +31 -0
  16. package/src/Cancellation.res.mjs +45 -0
  17. package/src/ChildProcess.res +84 -0
  18. package/src/ChildProcess.res.mjs +92 -0
  19. package/src/Cli.res +671 -0
  20. package/src/Cli.res.mjs +754 -0
  21. package/src/Collector.res +201 -0
  22. package/src/Collector.res.mjs +215 -0
  23. package/src/ComponentMeta.res +104 -0
  24. package/src/ComponentMeta.res.mjs +120 -0
  25. package/src/ComponentScan.res +103 -0
  26. package/src/ComponentScan.res.mjs +105 -0
  27. package/src/Delegate_GWT.res +303 -0
  28. package/src/Delegate_GWT.res.mjs +372 -0
  29. package/src/Diff.res +91 -0
  30. package/src/Diff.res.mjs +98 -0
  31. package/src/Discovery.res +105 -0
  32. package/src/Discovery.res.mjs +103 -0
  33. package/src/DomainDeadCode.res +93 -0
  34. package/src/DomainDeadCode.res.mjs +69 -0
  35. package/src/DomainGraph.res +0 -0
  36. package/src/DomainGraph.res.mjs +0 -0
  37. package/src/EventMapping_GWT.res +29 -0
  38. package/src/EventMapping_GWT.res.mjs +44 -0
  39. package/src/Filter.res +36 -0
  40. package/src/Filter.res.mjs +40 -0
  41. package/src/Flow_GWT.res +664 -0
  42. package/src/Flow_GWT.res.mjs +604 -0
  43. package/src/FormatterHuman.res +138 -0
  44. package/src/FormatterHuman.res.mjs +122 -0
  45. package/src/FormatterJson.res +257 -0
  46. package/src/FormatterJson.res.mjs +320 -0
  47. package/src/FormatterJunit.res +93 -0
  48. package/src/FormatterJunit.res.mjs +90 -0
  49. package/src/FormatterTap.res +139 -0
  50. package/src/FormatterTap.res.mjs +149 -0
  51. package/src/FormatterVsCode.res +362 -0
  52. package/src/FormatterVsCode.res.mjs +564 -0
  53. package/src/Hint.res +119 -0
  54. package/src/Hint.res.mjs +124 -0
  55. package/src/InboundTranslation_GWT.res +83 -0
  56. package/src/InboundTranslation_GWT.res.mjs +94 -0
  57. package/src/JestBind.res +70 -0
  58. package/src/JestBind.res.mjs +63 -0
  59. package/src/Loader.res +24 -0
  60. package/src/Loader.res.mjs +23 -0
  61. package/src/LocalHost.res +135 -0
  62. package/src/LocalHost.res.mjs +127 -0
  63. package/src/Mapping_GWT.res +474 -0
  64. package/src/Mapping_GWT.res.mjs +322 -0
  65. package/src/MultiSourceProjection_GWT.res +316 -0
  66. package/src/MultiSourceProjection_GWT.res.mjs +354 -0
  67. package/src/OutboundTranslation_GWT.res +238 -0
  68. package/src/OutboundTranslation_GWT.res.mjs +186 -0
  69. package/src/Outcome.res +161 -0
  70. package/src/Outcome.res.mjs +140 -0
  71. package/src/PackageScan.res +80 -0
  72. package/src/PackageScan.res.mjs +81 -0
  73. package/src/PlatformRunner.res +160 -0
  74. package/src/PlatformRunner.res.mjs +155 -0
  75. package/src/PlatformScan.res +138 -0
  76. package/src/PlatformScan.res.mjs +131 -0
  77. package/src/ProcessManager.res +91 -0
  78. package/src/ProcessManager.res.mjs +80 -0
  79. package/src/Projection_GWT.res +312 -0
  80. package/src/Projection_GWT.res.mjs +332 -0
  81. package/src/Query_GWT.res +379 -0
  82. package/src/Query_GWT.res.mjs +367 -0
  83. package/src/RenderRescript.res +125 -0
  84. package/src/RenderRescript.res.mjs +141 -0
  85. package/src/RunnerTypes.res +68 -0
  86. package/src/RunnerTypes.res.mjs +60 -0
  87. package/src/SideEffect_GWT.res +157 -0
  88. package/src/SideEffect_GWT.res.mjs +113 -0
  89. package/src/StateChange/ExternalAddCategorySlice.res +25 -0
  90. package/src/StateChange/ExternalAddCategorySlice.res.mjs +34 -0
  91. package/src/StateChange/ExternalAddCategorySlice_Behavior.res +19 -0
  92. package/src/StateChange/ExternalAddCategorySlice_Behavior.res.mjs +46 -0
  93. package/src/StateChange/WithFixtures.res +22 -0
  94. package/src/StateChange/WithFixtures.res.mjs +31 -0
  95. package/src/StateChange/WithFixtures_Behavior.res +17 -0
  96. package/src/StateChange/WithFixtures_Behavior.res.mjs +37 -0
  97. package/src/StateChange/WithManualOpen.res +23 -0
  98. package/src/StateChange/WithManualOpen.res.mjs +31 -0
  99. package/src/StateChange/WithManualOpen_Behavior.res +17 -0
  100. package/src/StateChange/WithManualOpen_Behavior.res.mjs +37 -0
  101. package/src/StubRuntime.res +53 -0
  102. package/src/StubRuntime.res.mjs +54 -0
  103. package/src/TestFixtures.res +16 -0
  104. package/src/TestFixtures.res.mjs +34 -0
  105. package/src/Watch.res +92 -0
  106. package/src/Watch.res.mjs +83 -0
  107. package/src/WatcherProbe.res +48 -0
  108. package/src/WatcherProbe.res.mjs +46 -0
  109. package/tests/AutomationGwtTest.res +71 -0
  110. package/tests/AutomationGwtTest.res.mjs +189 -0
  111. package/tests/BuildClassifierTest.res +94 -0
  112. package/tests/BuildClassifierTest.res.mjs +132 -0
  113. package/tests/ComponentMetaTest.res +52 -0
  114. package/tests/ComponentMetaTest.res.mjs +57 -0
  115. package/tests/DelegateGwtTest.res +487 -0
  116. package/tests/DelegateGwtTest.res.mjs +891 -0
  117. package/tests/DiscoveryTest.res +42 -0
  118. package/tests/DiscoveryTest.res.mjs +43 -0
  119. package/tests/DomainDeadCodeTest.res +116 -0
  120. package/tests/DomainDeadCodeTest.res.mjs +155 -0
  121. package/tests/DomainGraphTest.res +365 -0
  122. package/tests/DomainGraphTest.res.mjs +413 -0
  123. package/tests/FlowAggregateGwtTest.res +169 -0
  124. package/tests/FlowAggregateGwtTest.res.mjs +269 -0
  125. package/tests/FlowCrossPluginGwtTest.res +340 -0
  126. package/tests/FlowCrossPluginGwtTest.res.mjs +798 -0
  127. package/tests/FlowGwtTest.res +222 -0
  128. package/tests/FlowGwtTest.res.mjs +432 -0
  129. package/tests/FormatterVsCodeMessageTest.res +41 -0
  130. package/tests/FormatterVsCodeMessageTest.res.mjs +42 -0
  131. package/tests/InboundTranslationGwtTest.res +34 -0
  132. package/tests/InboundTranslationGwtTest.res.mjs +98 -0
  133. package/tests/LocalHostIntegration.res +70 -0
  134. package/tests/LocalHostIntegration.res.mjs +64 -0
  135. package/tests/LocalHostTest.res +71 -0
  136. package/tests/LocalHostTest.res.mjs +63 -0
  137. package/tests/MappingGwtTest.res +348 -0
  138. package/tests/MappingGwtTest.res.mjs +592 -0
  139. package/tests/OutboundTranslationGwtTest.res +59 -0
  140. package/tests/OutboundTranslationGwtTest.res.mjs +138 -0
  141. package/tests/PlatformRunnerTest.res +66 -0
  142. package/tests/PlatformRunnerTest.res.mjs +85 -0
  143. package/tests/PlatformScanTest.res +61 -0
  144. package/tests/PlatformScanTest.res.mjs +56 -0
  145. package/tests/QueryGwtTest.res +161 -0
  146. package/tests/QueryGwtTest.res.mjs +314 -0
  147. package/tests/QueryResolverGwtTest.res +71 -0
  148. package/tests/QueryResolverGwtTest.res.mjs +136 -0
  149. package/tests/RunnerUnitTest.res +219 -0
  150. package/tests/RunnerUnitTest.res.mjs +244 -0
  151. package/tests/SideEffect/FakeOrderNotification.res +23 -0
  152. package/tests/SideEffect/FakeOrderNotification.res.mjs +36 -0
  153. package/tests/SideEffect/FakeOrderNotificationGwtTest.res +35 -0
  154. package/tests/SideEffect/FakeOrderNotificationGwtTest.res.mjs +73 -0
  155. package/tests/SideEffect/MockEmail.res +18 -0
  156. package/tests/SideEffect/MockEmail.res.mjs +47 -0
  157. package/tests/StateChange/ExternalAddCategorySlice_GWT.res +27 -0
  158. package/tests/StateChange/ExternalAddCategorySlice_GWT.res.mjs +70 -0
  159. package/tests/StateChange/WithFixtures_Fixtures.res +9 -0
  160. package/tests/StateChange/WithFixtures_Fixtures.res.mjs +20 -0
  161. package/tests/StateChange/WithFixtures_GWT.res +23 -0
  162. package/tests/StateChange/WithFixtures_GWT.res.mjs +56 -0
  163. package/tests/StateChange/WithManualOpen_Fixtures.res +7 -0
  164. package/tests/StateChange/WithManualOpen_Fixtures.res.mjs +20 -0
  165. package/tests/StateChange/WithManualOpen_GWT.res +17 -0
  166. package/tests/StateChange/WithManualOpen_GWT.res.mjs +56 -0
  167. package/tests/StateChangeSliceGwtTest.res +160 -0
  168. package/tests/StateChangeSliceGwtTest.res.mjs +280 -0
  169. package/tests/StateViewSliceGwtTest.res +64 -0
  170. package/tests/StateViewSliceGwtTest.res.mjs +161 -0
  171. package/tests/WatchDebounceTest.res +78 -0
  172. package/tests/WatchDebounceTest.res.mjs +97 -0
@@ -0,0 +1,798 @@
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 DcbTag$Reventless from "@reventlessdev/reventless-spec/src/components/DcbTag.res.mjs";
6
+ import * as Flow_GWT$ReventlessGwt from "../src/Flow_GWT.res.mjs";
7
+
8
+ S.enableJson();
9
+
10
+ let consumedEventSchema = S.schema(s => ({
11
+ TAG: "ProductAdded",
12
+ productId: s.m(DcbTag$Reventless.string)
13
+ }));
14
+
15
+ let commandSchema = S.schema(s => ({
16
+ TAG: "AddProduct",
17
+ productId: s.m(DcbTag$Reventless.string),
18
+ name: s.m(S.string),
19
+ price: s.m(S.float)
20
+ }));
21
+
22
+ let errorSchema = S.literal("AlreadyAdded");
23
+
24
+ let eventSchema = S.schema(s => ({
25
+ TAG: "ProductAdded",
26
+ productId: s.m(DcbTag$Reventless.string),
27
+ name: s.m(S.string),
28
+ price: s.m(S.float)
29
+ }));
30
+
31
+ function commandAuthorization(param) {
32
+ return "AllowAuthenticated";
33
+ }
34
+
35
+ let AddProductSlice = {
36
+ name: "AddProduct",
37
+ consumedEventSchema: consumedEventSchema,
38
+ commandSchema: commandSchema,
39
+ errorSchema: errorSchema,
40
+ eventSchema: eventSchema,
41
+ commandAuthorization: commandAuthorization,
42
+ readConsistency: "EscalateOnRetry"
43
+ };
44
+
45
+ let initialState = {
46
+ added: false
47
+ };
48
+
49
+ function evolve(_state, event) {
50
+ return {
51
+ added: true
52
+ };
53
+ }
54
+
55
+ function decide(state, command) {
56
+ if (state.added) {
57
+ return {
58
+ TAG: "Error",
59
+ _0: "AlreadyAdded"
60
+ };
61
+ } else {
62
+ return {
63
+ TAG: "Ok",
64
+ _0: [{
65
+ TAG: "ProductAdded",
66
+ productId: command.productId,
67
+ name: command.name,
68
+ price: command.price
69
+ }]
70
+ };
71
+ }
72
+ }
73
+
74
+ let AddProductBehavior = {
75
+ Spec: undefined,
76
+ initialState: initialState,
77
+ evolve: evolve,
78
+ decide: decide
79
+ };
80
+
81
+ let commandSchema$1 = S.literal("NoCommand");
82
+
83
+ let eventSchema$1 = S.schema(s => ({
84
+ TAG: "ProductBecameAvailable",
85
+ productId: s.m(S.string),
86
+ name: s.m(S.string),
87
+ price: s.m(S.float)
88
+ }));
89
+
90
+ let directiveSchema = S.literal("NoDirective");
91
+
92
+ function commandAuthorization$1(param) {
93
+ return "AllowAuthenticated";
94
+ }
95
+
96
+ let ProductsEpSpec = {
97
+ name: "Catalog.Products",
98
+ moduleUrl: "",
99
+ commandSchema: commandSchema$1,
100
+ eventSchema: eventSchema$1,
101
+ directiveSchema: directiveSchema,
102
+ commandAuthorization: commandAuthorization$1
103
+ };
104
+
105
+ let name = "Product";
106
+
107
+ let commandSchema$2 = S.literal("NoCommand");
108
+
109
+ let eventSchema$2 = S.schema(s => ({
110
+ TAG: "ProductAdded",
111
+ productId: s.m(S.string),
112
+ name: s.m(S.string),
113
+ price: s.m(S.float)
114
+ }));
115
+
116
+ let errorSchema$1 = S.literal("NoError");
117
+
118
+ let moduleUrl = "";
119
+
120
+ function commandAuthorization$2(param) {
121
+ return "AllowAuthenticated";
122
+ }
123
+
124
+ let ProductDelegate = {
125
+ Id: undefined,
126
+ name: name,
127
+ commandSchema: commandSchema$2,
128
+ eventSchema: eventSchema$2,
129
+ errorSchema: errorSchema$1,
130
+ moduleUrl: moduleUrl,
131
+ commandAuthorization: commandAuthorization$2
132
+ };
133
+
134
+ let moduleUrl$1 = "test:FlowCrossPluginGwtTest:ProductsEpMapping";
135
+
136
+ function mapIncomingCommand(_id, _command, _meta) {
137
+ return [];
138
+ }
139
+
140
+ let mapOutgoingEvent = (_id, event, _meta, _q) => {
141
+ let productId = event.productId;
142
+ return [{
143
+ TAG: "PublishEvent",
144
+ _0: productId,
145
+ _1: {
146
+ TAG: "ProductBecameAvailable",
147
+ productId: productId,
148
+ name: event.name,
149
+ price: event.price
150
+ }
151
+ }];
152
+ };
153
+
154
+ let ProductsEpMapping = {
155
+ ExtensionPoint: undefined,
156
+ Delegate: undefined,
157
+ moduleUrl: moduleUrl$1,
158
+ mapIncomingCommand: mapIncomingCommand,
159
+ mapOutgoingEvent: mapOutgoingEvent
160
+ };
161
+
162
+ let commandSchema$3 = S.literal("NoCommand");
163
+
164
+ let eventSchema$3 = S.schema(s => ({
165
+ TAG: "ItemOrdered",
166
+ productId: s.m(S.string),
167
+ orderId: s.m(S.string)
168
+ }));
169
+
170
+ let directiveSchema$1 = S.literal("NoDirective");
171
+
172
+ function commandAuthorization$3(param) {
173
+ return "AllowAuthenticated";
174
+ }
175
+
176
+ let OrdersEpSpec = {
177
+ name: "Ordering.Orders",
178
+ moduleUrl: "",
179
+ commandSchema: commandSchema$3,
180
+ eventSchema: eventSchema$3,
181
+ directiveSchema: directiveSchema$1,
182
+ commandAuthorization: commandAuthorization$3
183
+ };
184
+
185
+ let name$1 = "Order";
186
+
187
+ let commandSchema$4 = S.literal("NoCommand");
188
+
189
+ let eventSchema$4 = S.schema(s => ({
190
+ TAG: "OrderPlaced",
191
+ orderId: s.m(S.string),
192
+ productIds: s.m(S.array(S.string))
193
+ }));
194
+
195
+ let errorSchema$2 = S.literal("NoError");
196
+
197
+ let moduleUrl$2 = "";
198
+
199
+ function commandAuthorization$4(param) {
200
+ return "AllowAuthenticated";
201
+ }
202
+
203
+ let OrderDelegate = {
204
+ Id: undefined,
205
+ name: name$1,
206
+ commandSchema: commandSchema$4,
207
+ eventSchema: eventSchema$4,
208
+ errorSchema: errorSchema$2,
209
+ moduleUrl: moduleUrl$2,
210
+ commandAuthorization: commandAuthorization$4
211
+ };
212
+
213
+ let moduleUrl$3 = "test:FlowCrossPluginGwtTest:OrdersEpMapping";
214
+
215
+ function mapIncomingCommand$1(_id, _command, _meta) {
216
+ return [];
217
+ }
218
+
219
+ let mapOutgoingEvent$1 = (_id, event, _meta, _q) => {
220
+ let orderId = event.orderId;
221
+ return event.productIds.map(pid => ({
222
+ TAG: "PublishEvent",
223
+ _0: pid,
224
+ _1: {
225
+ TAG: "ItemOrdered",
226
+ productId: pid,
227
+ orderId: orderId
228
+ }
229
+ }));
230
+ };
231
+
232
+ let OrdersEpMapping = {
233
+ ExtensionPoint: undefined,
234
+ Delegate: undefined,
235
+ moduleUrl: moduleUrl$3,
236
+ mapIncomingCommand: mapIncomingCommand$1,
237
+ mapOutgoingEvent: mapOutgoingEvent$1
238
+ };
239
+
240
+ let name$2 = "RecordDemand";
241
+
242
+ let consumedEventSchema$1 = S.schema(s => ({
243
+ TAG: "DemandRecorded",
244
+ productId: s.m(DcbTag$Reventless.string),
245
+ orderId: s.m(S.string)
246
+ }));
247
+
248
+ let commandSchema$5 = S.schema(s => ({
249
+ TAG: "RecordDemand",
250
+ productId: s.m(DcbTag$Reventless.string),
251
+ orderId: s.m(S.string)
252
+ }));
253
+
254
+ let errorSchema$3 = S.literal("NoError");
255
+
256
+ let eventSchema$5 = S.schema(s => ({
257
+ TAG: "DemandRecorded",
258
+ productId: s.m(DcbTag$Reventless.string),
259
+ orderId: s.m(S.string)
260
+ }));
261
+
262
+ let moduleUrl$4 = "";
263
+
264
+ function commandAuthorization$5(param) {
265
+ return "AllowAuthenticated";
266
+ }
267
+
268
+ let RecordDemandSlice = {
269
+ Id: undefined,
270
+ name: name$2,
271
+ consumedEventSchema: consumedEventSchema$1,
272
+ commandSchema: commandSchema$5,
273
+ errorSchema: errorSchema$3,
274
+ eventSchema: eventSchema$5,
275
+ moduleUrl: moduleUrl$4,
276
+ commandAuthorization: commandAuthorization$5,
277
+ readConsistency: "EscalateOnRetry"
278
+ };
279
+
280
+ let initialState$1 = {
281
+ count: 0
282
+ };
283
+
284
+ function evolve$1(state, event) {
285
+ return {
286
+ count: state.count + 1 | 0
287
+ };
288
+ }
289
+
290
+ function decide$1(_state, command) {
291
+ return {
292
+ TAG: "Ok",
293
+ _0: [{
294
+ TAG: "DemandRecorded",
295
+ productId: command.productId,
296
+ orderId: command.orderId
297
+ }]
298
+ };
299
+ }
300
+
301
+ let RecordDemandBehavior = {
302
+ Spec: undefined,
303
+ initialState: initialState$1,
304
+ evolve: evolve$1,
305
+ decide: decide$1
306
+ };
307
+
308
+ let moduleUrl$5 = "";
309
+
310
+ let delegateModuleUrl = "";
311
+
312
+ function mapIncomingEvent(_id, event, _meta, _pd, _q) {
313
+ return [{
314
+ TAG: "PublishStateChangeSliceCommand",
315
+ _0: {
316
+ TAG: "RecordDemand",
317
+ productId: event.productId,
318
+ orderId: event.orderId
319
+ }
320
+ }];
321
+ }
322
+
323
+ let OrdersExtMapping = {
324
+ ExtensionPoint: undefined,
325
+ Delegate: undefined,
326
+ moduleUrl: moduleUrl$5,
327
+ delegateModuleUrl: delegateModuleUrl,
328
+ mapIncomingEvent: mapIncomingEvent,
329
+ mapOutgoingEvent: undefined
330
+ };
331
+
332
+ let name$3 = "SyncProduct";
333
+
334
+ let consumedEventSchema$2 = S.schema(s => ({
335
+ TAG: "ProductSynced",
336
+ productId: s.m(DcbTag$Reventless.string)
337
+ }));
338
+
339
+ let commandSchema$6 = S.schema(s => ({
340
+ TAG: "SyncProduct",
341
+ productId: s.m(DcbTag$Reventless.string),
342
+ name: s.m(S.string),
343
+ price: s.m(S.float)
344
+ }));
345
+
346
+ let errorSchema$4 = S.literal("NoError");
347
+
348
+ let eventSchema$6 = S.schema(s => ({
349
+ TAG: "ProductSynced",
350
+ productId: s.m(DcbTag$Reventless.string),
351
+ name: s.m(S.string),
352
+ price: s.m(S.float)
353
+ }));
354
+
355
+ let moduleUrl$6 = "";
356
+
357
+ function commandAuthorization$6(param) {
358
+ return "AllowAuthenticated";
359
+ }
360
+
361
+ let SyncProductSlice = {
362
+ Id: undefined,
363
+ name: name$3,
364
+ consumedEventSchema: consumedEventSchema$2,
365
+ commandSchema: commandSchema$6,
366
+ errorSchema: errorSchema$4,
367
+ eventSchema: eventSchema$6,
368
+ moduleUrl: moduleUrl$6,
369
+ commandAuthorization: commandAuthorization$6,
370
+ readConsistency: "EscalateOnRetry"
371
+ };
372
+
373
+ let initialState$2 = {
374
+ synced: false
375
+ };
376
+
377
+ function evolve$2(_state, event) {
378
+ return {
379
+ synced: true
380
+ };
381
+ }
382
+
383
+ function decide$2(_state, command) {
384
+ return {
385
+ TAG: "Ok",
386
+ _0: [{
387
+ TAG: "ProductSynced",
388
+ productId: command.productId,
389
+ name: command.name,
390
+ price: command.price
391
+ }]
392
+ };
393
+ }
394
+
395
+ let SyncProductBehavior = {
396
+ Spec: undefined,
397
+ initialState: initialState$2,
398
+ evolve: evolve$2,
399
+ decide: decide$2
400
+ };
401
+
402
+ let moduleUrl$7 = "";
403
+
404
+ let delegateModuleUrl$1 = "";
405
+
406
+ function mapIncomingEvent$1(_id, event, _meta, _pd, _q) {
407
+ return [{
408
+ TAG: "PublishStateChangeSliceCommand",
409
+ _0: {
410
+ TAG: "SyncProduct",
411
+ productId: event.productId,
412
+ name: event.name,
413
+ price: event.price
414
+ }
415
+ }];
416
+ }
417
+
418
+ let ProductsExtMapping = {
419
+ ExtensionPoint: undefined,
420
+ Delegate: undefined,
421
+ moduleUrl: moduleUrl$7,
422
+ delegateModuleUrl: delegateModuleUrl$1,
423
+ mapIncomingEvent: mapIncomingEvent$1,
424
+ mapOutgoingEvent: undefined
425
+ };
426
+
427
+ let consumedEventSchema$3 = S.union([
428
+ S.schema(s => ({
429
+ TAG: "OrderPlaced",
430
+ orderId: s.m(DcbTag$Reventless.string)
431
+ })),
432
+ S.schema(s => ({
433
+ TAG: "ProductSynced",
434
+ productId: s.m(DcbTag$Reventless.string)
435
+ }))
436
+ ]);
437
+
438
+ let commandSchema$7 = S.schema(s => ({
439
+ TAG: "PlaceOrder",
440
+ orderId: s.m(DcbTag$Reventless.string),
441
+ productIds: s.m(S.array(DcbTag$Reventless.stringForKey("productId")))
442
+ }));
443
+
444
+ let errorSchema$5 = S.union([
445
+ S.literal("OrderAlreadyPlaced"),
446
+ S.schema(s => ({
447
+ TAG: "ProductsNotAvailable",
448
+ missing: s.m(S.array(S.string))
449
+ }))
450
+ ]);
451
+
452
+ let eventSchema$7 = S.schema(s => ({
453
+ TAG: "OrderPlaced",
454
+ orderId: s.m(DcbTag$Reventless.string),
455
+ productIds: s.m(S.array(DcbTag$Reventless.stringForKey("productId")))
456
+ }));
457
+
458
+ function commandAuthorization$7(param) {
459
+ return "AllowAuthenticated";
460
+ }
461
+
462
+ let PlaceOrderSlice = {
463
+ name: "PlaceOrder",
464
+ consumedEventSchema: consumedEventSchema$3,
465
+ commandSchema: commandSchema$7,
466
+ errorSchema: errorSchema$5,
467
+ eventSchema: eventSchema$7,
468
+ commandAuthorization: commandAuthorization$7,
469
+ readConsistency: "EscalateOnRetry"
470
+ };
471
+
472
+ let initialState_placed = [];
473
+
474
+ let initialState_available = [];
475
+
476
+ let initialState$3 = {
477
+ placed: initialState_placed,
478
+ available: initialState_available
479
+ };
480
+
481
+ function evolve$3(state, event) {
482
+ if (event.TAG === "OrderPlaced") {
483
+ return {
484
+ placed: state.placed.concat([event.orderId]),
485
+ available: state.available
486
+ };
487
+ } else {
488
+ return {
489
+ placed: state.placed,
490
+ available: state.available.concat([event.productId])
491
+ };
492
+ }
493
+ }
494
+
495
+ function decide$3(state, command) {
496
+ let orderId = command.orderId;
497
+ if (state.placed.includes(orderId)) {
498
+ return {
499
+ TAG: "Error",
500
+ _0: "OrderAlreadyPlaced"
501
+ };
502
+ }
503
+ let productIds = command.productIds;
504
+ let missing = productIds.filter(p => !state.available.includes(p));
505
+ if (missing.length !== 0) {
506
+ return {
507
+ TAG: "Error",
508
+ _0: {
509
+ TAG: "ProductsNotAvailable",
510
+ missing: missing
511
+ }
512
+ };
513
+ } else {
514
+ return {
515
+ TAG: "Ok",
516
+ _0: [{
517
+ TAG: "OrderPlaced",
518
+ orderId: orderId,
519
+ productIds: productIds
520
+ }]
521
+ };
522
+ }
523
+ }
524
+
525
+ let PlaceOrderBehavior = {
526
+ Spec: undefined,
527
+ initialState: initialState$3,
528
+ evolve: evolve$3,
529
+ decide: decide$3
530
+ };
531
+
532
+ let AddProduct = Flow_GWT$ReventlessGwt.CommandStep(AddProductSlice)({
533
+ initialState: initialState,
534
+ evolve: evolve,
535
+ decide: decide
536
+ });
537
+
538
+ let ProductsEp = Flow_GWT$ReventlessGwt.ExtensionPointStep({
539
+ ExtensionPoint: ProductsEpSpec,
540
+ Delegate: {
541
+ Id: {
542
+ schema: Id$Reventless.StringPure.schema,
543
+ make: prim => prim,
544
+ makeFromString: prim => prim,
545
+ toString: prim => prim,
546
+ cmp: Id$Reventless.StringPure.cmp
547
+ },
548
+ name: name,
549
+ eventSchema: eventSchema$2,
550
+ errorSchema: errorSchema$1,
551
+ commandSchema: commandSchema$2,
552
+ moduleUrl: moduleUrl,
553
+ commandAuthorization: commandAuthorization$2
554
+ },
555
+ moduleUrl: moduleUrl$1,
556
+ mapIncomingCommand: mapIncomingCommand,
557
+ mapOutgoingEvent: mapOutgoingEvent
558
+ });
559
+
560
+ let ProductsExt = Flow_GWT$ReventlessGwt.ExtensionStep({
561
+ ExtensionPoint: ProductsEpSpec,
562
+ Delegate: {
563
+ Id: {
564
+ schema: Id$Reventless.StringPure.schema,
565
+ make: prim => prim,
566
+ makeFromString: prim => prim,
567
+ toString: prim => prim,
568
+ cmp: Id$Reventless.StringPure.cmp
569
+ },
570
+ name: name$3,
571
+ eventSchema: eventSchema$6,
572
+ errorSchema: errorSchema$4,
573
+ commandSchema: commandSchema$6,
574
+ moduleUrl: moduleUrl$6,
575
+ commandAuthorization: commandAuthorization$6
576
+ },
577
+ moduleUrl: moduleUrl$7,
578
+ delegateModuleUrl: delegateModuleUrl$1,
579
+ mapIncomingEvent: mapIncomingEvent$1,
580
+ mapOutgoingEvent: undefined
581
+ });
582
+
583
+ let Sync = Flow_GWT$ReventlessGwt.CommandStep({
584
+ name: name$3,
585
+ consumedEventSchema: consumedEventSchema$2,
586
+ commandSchema: commandSchema$6,
587
+ errorSchema: errorSchema$4,
588
+ eventSchema: eventSchema$6
589
+ })({
590
+ initialState: initialState$2,
591
+ evolve: evolve$2,
592
+ decide: decide$2
593
+ });
594
+
595
+ let Place = Flow_GWT$ReventlessGwt.CommandStep(PlaceOrderSlice)({
596
+ initialState: initialState$3,
597
+ evolve: evolve$3,
598
+ decide: decide$3
599
+ });
600
+
601
+ let OrdersEp = Flow_GWT$ReventlessGwt.ExtensionPointStep({
602
+ ExtensionPoint: OrdersEpSpec,
603
+ Delegate: {
604
+ Id: {
605
+ schema: Id$Reventless.StringPure.schema,
606
+ make: prim => prim,
607
+ makeFromString: prim => prim,
608
+ toString: prim => prim,
609
+ cmp: Id$Reventless.StringPure.cmp
610
+ },
611
+ name: name$1,
612
+ eventSchema: eventSchema$4,
613
+ errorSchema: errorSchema$2,
614
+ commandSchema: commandSchema$4,
615
+ moduleUrl: moduleUrl$2,
616
+ commandAuthorization: commandAuthorization$4
617
+ },
618
+ moduleUrl: moduleUrl$3,
619
+ mapIncomingCommand: mapIncomingCommand$1,
620
+ mapOutgoingEvent: mapOutgoingEvent$1
621
+ });
622
+
623
+ let OrdersExt = Flow_GWT$ReventlessGwt.ExtensionStep({
624
+ ExtensionPoint: OrdersEpSpec,
625
+ Delegate: {
626
+ Id: {
627
+ schema: Id$Reventless.StringPure.schema,
628
+ make: prim => prim,
629
+ makeFromString: prim => prim,
630
+ toString: prim => prim,
631
+ cmp: Id$Reventless.StringPure.cmp
632
+ },
633
+ name: name$2,
634
+ eventSchema: eventSchema$5,
635
+ errorSchema: errorSchema$3,
636
+ commandSchema: commandSchema$5,
637
+ moduleUrl: moduleUrl$4,
638
+ commandAuthorization: commandAuthorization$5
639
+ },
640
+ moduleUrl: moduleUrl$5,
641
+ delegateModuleUrl: delegateModuleUrl,
642
+ mapIncomingEvent: mapIncomingEvent,
643
+ mapOutgoingEvent: undefined
644
+ });
645
+
646
+ let Demand = Flow_GWT$ReventlessGwt.CommandStep({
647
+ name: name$2,
648
+ consumedEventSchema: consumedEventSchema$1,
649
+ commandSchema: commandSchema$5,
650
+ errorSchema: errorSchema$3,
651
+ eventSchema: eventSchema$5
652
+ })({
653
+ initialState: initialState$1,
654
+ evolve: evolve$1,
655
+ decide: decide$1
656
+ });
657
+
658
+ Flow_GWT$ReventlessGwt.describe("Cross-plugin flow", () => {
659
+ Flow_GWT$ReventlessGwt.test("Tier 2 — a product added in Catalog becomes orderable in Ordering via sync", undefined, () => Place.thenEvent(Place.whenCommand(Sync.thenEvent(Sync.whenCommand(ProductsExt.thenIssuesCommand(ProductsExt.whenExtensionReacts(ProductsEp.thenPublicEvent(ProductsEp.whenPublishedThrough(AddProduct.thenEvent(AddProduct.whenCommand(Flow_GWT$ReventlessGwt.start, {
660
+ TAG: "AddProduct",
661
+ productId: "p1",
662
+ name: "Book",
663
+ price: 9.99
664
+ }), {
665
+ TAG: "ProductAdded",
666
+ productId: "p1",
667
+ name: "Book",
668
+ price: 9.99
669
+ })), {
670
+ TAG: "ProductBecameAvailable",
671
+ productId: "p1",
672
+ name: "Book",
673
+ price: 9.99
674
+ })), {
675
+ TAG: "SyncProduct",
676
+ productId: "p1",
677
+ name: "Book",
678
+ price: 9.99
679
+ }), {
680
+ TAG: "SyncProduct",
681
+ productId: "p1",
682
+ name: "Book",
683
+ price: 9.99
684
+ }), {
685
+ TAG: "ProductSynced",
686
+ productId: "p1",
687
+ name: "Book",
688
+ price: 9.99
689
+ }), {
690
+ TAG: "PlaceOrder",
691
+ orderId: "o1",
692
+ productIds: ["p1"]
693
+ }), {
694
+ TAG: "OrderPlaced",
695
+ orderId: "o1",
696
+ productIds: ["p1"]
697
+ }));
698
+ Flow_GWT$ReventlessGwt.test("Tier 2 — placing an order without the cross-plugin sync is rejected", undefined, () => Place.thenError(Place.whenCommand(Flow_GWT$ReventlessGwt.start, {
699
+ TAG: "PlaceOrder",
700
+ orderId: "o1",
701
+ productIds: ["p1"]
702
+ }), {
703
+ TAG: "ProductsNotAvailable",
704
+ missing: ["p1"]
705
+ }));
706
+ Flow_GWT$ReventlessGwt.test("Tier 3 — a batch order fans out to one demand command per product across the boundary", undefined, () => Demand.thenEvent(Demand.whenCommand(OrdersExt.thenIssuesCommands(OrdersExt.whenExtensionReacts(OrdersEp.thenPublicEvents(OrdersEp.whenPublishedThrough(Place.thenEvent(Place.whenCommand(Sync.givenEvents(Flow_GWT$ReventlessGwt.start, [
707
+ {
708
+ TAG: "ProductSynced",
709
+ productId: "p1",
710
+ name: "Book",
711
+ price: 9.99
712
+ },
713
+ {
714
+ TAG: "ProductSynced",
715
+ productId: "p2",
716
+ name: "Pen",
717
+ price: 1.5
718
+ }
719
+ ]), {
720
+ TAG: "PlaceOrder",
721
+ orderId: "o1",
722
+ productIds: [
723
+ "p1",
724
+ "p2"
725
+ ]
726
+ }), {
727
+ TAG: "OrderPlaced",
728
+ orderId: "o1",
729
+ productIds: [
730
+ "p1",
731
+ "p2"
732
+ ]
733
+ })), [
734
+ {
735
+ TAG: "ItemOrdered",
736
+ productId: "p1",
737
+ orderId: "o1"
738
+ },
739
+ {
740
+ TAG: "ItemOrdered",
741
+ productId: "p2",
742
+ orderId: "o1"
743
+ }
744
+ ])), [
745
+ {
746
+ TAG: "RecordDemand",
747
+ productId: "p1",
748
+ orderId: "o1"
749
+ },
750
+ {
751
+ TAG: "RecordDemand",
752
+ productId: "p2",
753
+ orderId: "o1"
754
+ }
755
+ ]), {
756
+ TAG: "RecordDemand",
757
+ productId: "p1",
758
+ orderId: "o1"
759
+ }), {
760
+ TAG: "DemandRecorded",
761
+ productId: "p1",
762
+ orderId: "o1"
763
+ }));
764
+ });
765
+
766
+ let EPM;
767
+
768
+ let EM;
769
+
770
+ export {
771
+ EPM,
772
+ EM,
773
+ AddProductSlice,
774
+ AddProductBehavior,
775
+ ProductsEpSpec,
776
+ ProductDelegate,
777
+ ProductsEpMapping,
778
+ OrdersEpSpec,
779
+ OrderDelegate,
780
+ OrdersEpMapping,
781
+ RecordDemandSlice,
782
+ RecordDemandBehavior,
783
+ OrdersExtMapping,
784
+ SyncProductSlice,
785
+ SyncProductBehavior,
786
+ ProductsExtMapping,
787
+ PlaceOrderSlice,
788
+ PlaceOrderBehavior,
789
+ AddProduct,
790
+ ProductsEp,
791
+ ProductsExt,
792
+ Sync,
793
+ Place,
794
+ OrdersEp,
795
+ OrdersExt,
796
+ Demand,
797
+ }
798
+ /* Not a pure module */