@reventlessdev/reventless-core 3.0.0-alpha.170 → 3.0.0-alpha.171

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 (74) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +14 -14
  3. package/src/components/ExtensionPoint/ExtensionPoint_Builder.res +5 -2
  4. package/src/components/ExtensionPoint/ExtensionPoint_Builder.res.mjs +3 -3
  5. package/src/components/Task/Task_Builder.res +6 -4
  6. package/src/components/Task/Task_Builder.res.mjs +4 -4
  7. package/src/plugin/connect/PluginExtensionPoint_Builder.res +2 -0
  8. package/src/plugin/connect/PluginExtensionPoint_Builder.res.mjs +3 -3
  9. package/tests/IdentityTest.res.mjs +0 -174
  10. package/tests/adapter/MonitoringTest.res.mjs +0 -82
  11. package/tests/admin/Platform_ComponentDefinitionsApiTest.res.mjs +0 -356
  12. package/tests/admin/Platform_UIFragmentsApiTest.res.mjs +0 -101
  13. package/tests/aggregate/AggregateCacheTest.res.mjs +0 -433
  14. package/tests/aggregate/AggregateCallbackTest.res.mjs +0 -143
  15. package/tests/aggregate/AggregateCausationTest.res.mjs +0 -47
  16. package/tests/aggregate/AggregateConflictTest.res.mjs +0 -386
  17. package/tests/aggregate/AggregateFixtures.res.mjs +0 -308
  18. package/tests/aggregate/AggregateRejectionTest.res.mjs +0 -166
  19. package/tests/aggregate/AggregateSnapshotTest.res.mjs +0 -645
  20. package/tests/api/ApiNoApiTest.res.mjs +0 -90
  21. package/tests/api/GraphQL_StitcherTest.res.mjs +0 -112
  22. package/tests/api/SimpleTest.res.mjs +0 -10
  23. package/tests/api/SuryToJsonSchemaTest.res.mjs +0 -674
  24. package/tests/commandgenerator/CommandGeneratorCallbackTest.res.mjs +0 -160
  25. package/tests/commandgenerator/CommandGeneratorFixtures.res.mjs +0 -197
  26. package/tests/commandtopic/CommandTopicCallbackFixtures.res.mjs +0 -152
  27. package/tests/commandtopic/CommandTopicCallbackTest.res.mjs +0 -106
  28. package/tests/commandtopic/CommandTopicHelpersRejectionTest.res.mjs +0 -109
  29. package/tests/counter/CounterCallbackTest.res.mjs +0 -140
  30. package/tests/counter/CounterFixtures.res.mjs +0 -67
  31. package/tests/dcb/DcbDecodeTest.res.mjs +0 -194
  32. package/tests/dcb/DcbEventLogOperationsTest.res.mjs +0 -268
  33. package/tests/dcb/DcbFixtures.res.mjs +0 -534
  34. package/tests/dcb/DcbScopeInferenceTest.res.mjs +0 -480
  35. package/tests/dcb/DcbStateChangeSliceTest.res.mjs +0 -540
  36. package/tests/dcb/DcbTagTest.res.mjs +0 -867
  37. package/tests/dcb/DcbValidationTest.res.mjs +0 -476
  38. package/tests/eventlog/EventLogFixtures.res.mjs +0 -196
  39. package/tests/eventlog/EventLogOperationsTest.res.mjs +0 -192
  40. package/tests/eventlog/EventLogRetryTest.res.mjs +0 -195
  41. package/tests/eventmapper/EventMapperCallbackTest.res.mjs +0 -141
  42. package/tests/eventmapper/EventMapperFixtures.res.mjs +0 -440
  43. package/tests/eventmapper/EventMapperTest.res.mjs +0 -83
  44. package/tests/eventtopic/EventTopicFixtures.res.mjs +0 -65
  45. package/tests/eventtopic/EventTopicOperationsTest.res.mjs +0 -71
  46. package/tests/extensionpoint/ExtensionPointCallbackTest.res.mjs +0 -94
  47. package/tests/extensionpoint/ExtensionPointFixtures.res.mjs +0 -205
  48. package/tests/extensionpoint/ExtensionPointOperationsTest.res.mjs +0 -304
  49. package/tests/ftp/FTPTest.res.mjs +0 -88
  50. package/tests/logger/LogFormatTest.res.mjs +0 -309
  51. package/tests/logger/LoggerLazyTest.res.mjs +0 -40
  52. package/tests/message/MessageTest.res.mjs +0 -218
  53. package/tests/message/MetaEnvelopeTest.res.mjs +0 -188
  54. package/tests/plugin/ManifestVisibilityTest.res.mjs +0 -215
  55. package/tests/plugin/PluginSpecExperiment.res.mjs +0 -31
  56. package/tests/plugin/PluginStructureTest.res.mjs +0 -419
  57. package/tests/plugin/PluginVersionTest.res.mjs +0 -30
  58. package/tests/plugin/SchemaWalkerTest.res.mjs +0 -160
  59. package/tests/plugin/StateChangeSlice/PsPlaceOrder.res.mjs +0 -62
  60. package/tests/plugin/StateChangeSlice/PsShipOrder.res.mjs +0 -69
  61. package/tests/plugin/StateViewSlice/PsAnnotatedView.res.mjs +0 -95
  62. package/tests/plugin/StateViewSlice/PsAvailableProductsView.res.mjs +0 -69
  63. package/tests/plugin/StateViewSlice/PsCustomersView.res.mjs +0 -69
  64. package/tests/plugin/StateViewSlice/PsOrdersView.res.mjs +0 -81
  65. package/tests/poc/StructuralSubtypingPoc.res.mjs +0 -61
  66. package/tests/projection/ProjectionOptimizeTest.res.mjs +0 -75
  67. package/tests/querydb/QueryDbFixtures.res.mjs +0 -135
  68. package/tests/querydb/QueryDbOperationsTest.res.mjs +0 -168
  69. package/tests/sideeffecthandler/SideEffectHandlerCallbackTest.res.mjs +0 -77
  70. package/tests/sideeffecthandler/SideEffectHandlerFixtures.res.mjs +0 -139
  71. package/tests/util/CommandPublisherTest.res.mjs +0 -78
  72. package/tests/util/CsvStreamTest.res.mjs +0 -51
  73. package/tests/util/LruTest.res.mjs +0 -105
  74. package/tests/util/MetricsTest.res.mjs +0 -53
@@ -1,419 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Stdlib_JSON from "@rescript/runtime/lib/es6/Stdlib_JSON.js";
4
- import * as Id$Reventless from "@reventlessdev/reventless-spec/src/types/Id.res.mjs";
5
- import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
6
- import * as PsShipOrder$ReventlessCore from "./StateChangeSlice/PsShipOrder.res.mjs";
7
- import * as PsOrdersView$ReventlessCore from "./StateViewSlice/PsOrdersView.res.mjs";
8
- import * as PsPlaceOrder$ReventlessCore from "./StateChangeSlice/PsPlaceOrder.res.mjs";
9
- import * as PsAnnotatedView$ReventlessCore from "./StateViewSlice/PsAnnotatedView.res.mjs";
10
- import * as PsCustomersView$ReventlessCore from "./StateViewSlice/PsCustomersView.res.mjs";
11
- import * as Plugin_Structure$ReventlessCore from "../../src/plugin/component/Plugin_Structure.res.mjs";
12
- import * as PsAvailableProductsView$ReventlessCore from "./StateViewSlice/PsAvailableProductsView.res.mjs";
13
-
14
- let Behavior = {
15
- initialState: false,
16
- evolve: PsPlaceOrder$ReventlessCore.evolve,
17
- decide: PsPlaceOrder$ReventlessCore.decide,
18
- moduleUrl: PsPlaceOrder$ReventlessCore.moduleUrl
19
- };
20
-
21
- function make(param, param$1, param$2, param$3, param$4, param$5) {
22
- return 0;
23
- }
24
-
25
- let PsPlaceOrderSlice_Spec = {
26
- name: PsPlaceOrder$ReventlessCore.name,
27
- moduleUrl: PsPlaceOrder$ReventlessCore.moduleUrl,
28
- Id: Id$Reventless.$$String,
29
- consumedEventSchema: PsPlaceOrder$ReventlessCore.consumedEventSchema,
30
- errorSchema: PsPlaceOrder$ReventlessCore.errorSchema,
31
- eventSchema: PsPlaceOrder$ReventlessCore.eventSchema,
32
- commandSchema: PsPlaceOrder$ReventlessCore.commandSchema,
33
- commandAuthorization: PsPlaceOrder$ReventlessCore.commandAuthorization,
34
- readConsistency: PsPlaceOrder$ReventlessCore.readConsistency
35
- };
36
-
37
- let PsPlaceOrderSlice = {
38
- Spec: PsPlaceOrderSlice_Spec,
39
- Behavior: Behavior,
40
- isAsync: false,
41
- make: make
42
- };
43
-
44
- let Behavior$1 = {
45
- initialState: false,
46
- evolve: PsShipOrder$ReventlessCore.evolve,
47
- decide: PsShipOrder$ReventlessCore.decide,
48
- moduleUrl: PsShipOrder$ReventlessCore.moduleUrl
49
- };
50
-
51
- function make$1(param, param$1, param$2, param$3, param$4, param$5) {
52
- return 0;
53
- }
54
-
55
- let PsShipOrderSlice_Spec = {
56
- name: PsShipOrder$ReventlessCore.name,
57
- moduleUrl: PsShipOrder$ReventlessCore.moduleUrl,
58
- Id: Id$Reventless.$$String,
59
- consumedEventSchema: PsShipOrder$ReventlessCore.consumedEventSchema,
60
- errorSchema: PsShipOrder$ReventlessCore.errorSchema,
61
- eventSchema: PsShipOrder$ReventlessCore.eventSchema,
62
- commandSchema: PsShipOrder$ReventlessCore.commandSchema,
63
- commandAuthorization: PsShipOrder$ReventlessCore.commandAuthorization,
64
- readConsistency: PsShipOrder$ReventlessCore.readConsistency
65
- };
66
-
67
- let PsShipOrderSlice = {
68
- Spec: PsShipOrderSlice_Spec,
69
- Behavior: Behavior$1,
70
- isAsync: false,
71
- make: make$1
72
- };
73
-
74
- let Projection = {
75
- project: PsOrdersView$ReventlessCore.project,
76
- moduleUrl: PsOrdersView$ReventlessCore.moduleUrl
77
- };
78
-
79
- function make$2(param, param$1, param$2) {
80
- return 0;
81
- }
82
-
83
- let PsOrdersViewSlice_Spec = {
84
- name: PsOrdersView$ReventlessCore.name,
85
- moduleUrl: PsOrdersView$ReventlessCore.moduleUrl,
86
- stateSchema: PsOrdersView$ReventlessCore.stateSchema,
87
- consumedEventSchema: PsOrdersView$ReventlessCore.consumedEventSchema,
88
- config: PsOrdersView$ReventlessCore.config,
89
- subIdConfig: undefined,
90
- authorization: PsOrdersView$ReventlessCore.authorization,
91
- visibility: PsOrdersView$ReventlessCore.visibility
92
- };
93
-
94
- let PsOrdersViewSlice = {
95
- Spec: PsOrdersViewSlice_Spec,
96
- Projection: Projection,
97
- make: make$2
98
- };
99
-
100
- let Projection$1 = {
101
- project: PsAvailableProductsView$ReventlessCore.project,
102
- moduleUrl: PsAvailableProductsView$ReventlessCore.moduleUrl
103
- };
104
-
105
- function make$3(param, param$1, param$2) {
106
- return 0;
107
- }
108
-
109
- let PsAvailableProductsViewSlice_Spec = {
110
- name: PsAvailableProductsView$ReventlessCore.name,
111
- moduleUrl: PsAvailableProductsView$ReventlessCore.moduleUrl,
112
- stateSchema: PsAvailableProductsView$ReventlessCore.stateSchema,
113
- consumedEventSchema: PsAvailableProductsView$ReventlessCore.consumedEventSchema,
114
- config: PsAvailableProductsView$ReventlessCore.config,
115
- subIdConfig: undefined,
116
- authorization: PsAvailableProductsView$ReventlessCore.authorization,
117
- visibility: PsAvailableProductsView$ReventlessCore.visibility
118
- };
119
-
120
- let PsAvailableProductsViewSlice = {
121
- Spec: PsAvailableProductsViewSlice_Spec,
122
- Projection: Projection$1,
123
- make: make$3
124
- };
125
-
126
- let Projection$2 = {
127
- project: PsCustomersView$ReventlessCore.project,
128
- moduleUrl: PsCustomersView$ReventlessCore.moduleUrl
129
- };
130
-
131
- function make$4(param, param$1, param$2) {
132
- return 0;
133
- }
134
-
135
- let PsCustomersViewSlice_Spec = {
136
- name: PsCustomersView$ReventlessCore.name,
137
- moduleUrl: PsCustomersView$ReventlessCore.moduleUrl,
138
- stateSchema: PsCustomersView$ReventlessCore.stateSchema,
139
- consumedEventSchema: PsCustomersView$ReventlessCore.consumedEventSchema,
140
- config: PsCustomersView$ReventlessCore.config,
141
- subIdConfig: undefined,
142
- authorization: PsCustomersView$ReventlessCore.authorization,
143
- visibility: PsCustomersView$ReventlessCore.visibility
144
- };
145
-
146
- let PsCustomersViewSlice = {
147
- Spec: PsCustomersViewSlice_Spec,
148
- Projection: Projection$2,
149
- make: make$4
150
- };
151
-
152
- let Projection$3 = {
153
- project: PsAnnotatedView$ReventlessCore.project,
154
- moduleUrl: PsAnnotatedView$ReventlessCore.moduleUrl
155
- };
156
-
157
- function make$5(param, param$1, param$2) {
158
- return 0;
159
- }
160
-
161
- let PsAnnotatedViewSlice_Spec = {
162
- name: PsAnnotatedView$ReventlessCore.name,
163
- moduleUrl: PsAnnotatedView$ReventlessCore.moduleUrl,
164
- stateSchema: PsAnnotatedView$ReventlessCore.stateSchema,
165
- consumedEventSchema: PsAnnotatedView$ReventlessCore.consumedEventSchema,
166
- config: PsAnnotatedView$ReventlessCore.config,
167
- subIdConfig: PsAnnotatedView$ReventlessCore.subIdConfig,
168
- authorization: PsAnnotatedView$ReventlessCore.authorization,
169
- visibility: PsAnnotatedView$ReventlessCore.visibility
170
- };
171
-
172
- let PsAnnotatedViewSlice = {
173
- Spec: PsAnnotatedViewSlice_Spec,
174
- Projection: Projection$3,
175
- make: make$5
176
- };
177
-
178
- let structure = Plugin_Structure$ReventlessCore.make("TestPlugin", undefined, undefined, [
179
- PsOrdersViewSlice,
180
- PsAvailableProductsViewSlice,
181
- PsCustomersViewSlice,
182
- PsAnnotatedViewSlice
183
- ], [
184
- PsPlaceOrderSlice,
185
- PsShipOrderSlice
186
- ], undefined, undefined, undefined, undefined, undefined, undefined);
187
-
188
- globalThis.describe("Plugin_Structure.make — Phase 2 graph fields", () => {
189
- globalThis.describe("stateChangeSlices", () => {
190
- globalThis.test("produces two SCS entries in declaration order", () => {
191
- globalThis.expect(structure.stateChangeSlices.length).toBe(2);
192
- });
193
- globalThis.test("PlaceOrder: producedEventTypes contains OrderPlaced (qualified)", () => {
194
- let placeOrder = structure.stateChangeSlices[0];
195
- globalThis.expect(placeOrder.producedEventTypes).toEqual(["TestPlugin.OrderPlaced"]);
196
- });
197
- globalThis.test("PlaceOrder: consumedEventTypes contains CatalogProductSynced qualified (payload-less variants excluded)", () => {
198
- let placeOrder = structure.stateChangeSlices[0];
199
- globalThis.expect(placeOrder.consumedEventTypes).toEqual(["TestPlugin.CatalogProductSynced"]);
200
- });
201
- globalThis.test("PlaceOrder: linkedViews contains Orders (consumes its OrderPlaced)", () => {
202
- let placeOrder = structure.stateChangeSlices[0];
203
- globalThis.expect(placeOrder.linkedViews).toEqual(["Orders"]);
204
- });
205
- globalThis.test("PlaceOrder: consistencyRead is AvailableProducts (only SVS consuming CatalogProductSynced)", () => {
206
- let placeOrder = structure.stateChangeSlices[0];
207
- globalThis.expect(placeOrder.consistencyRead).toEqual("AvailableProducts");
208
- });
209
- globalThis.test("PlaceOrder command: level Collection (creation command), aggregateIdField orderId for UUID injection", () => {
210
- let placeOrder = structure.stateChangeSlices[0];
211
- let cmd = placeOrder.commands[0];
212
- globalThis.expect([
213
- cmd.level,
214
- cmd.aggregateIdField
215
- ]).toEqual([
216
- "Collection",
217
- "orderId"
218
- ]);
219
- });
220
- globalThis.test("ShipOrder: producedEventTypes contains OrderShipped (qualified)", () => {
221
- let shipOrder = structure.stateChangeSlices[1];
222
- globalThis.expect(shipOrder.producedEventTypes).toEqual(["TestPlugin.OrderShipped"]);
223
- });
224
- globalThis.test("ShipOrder: consumedEventTypes is empty (all consumed events are payload-less literals)", () => {
225
- let shipOrder = structure.stateChangeSlices[1];
226
- globalThis.expect(shipOrder.consumedEventTypes).toEqual([]);
227
- });
228
- globalThis.test("ShipOrder: linkedViews contains Orders (consumes its OrderShipped)", () => {
229
- let shipOrder = structure.stateChangeSlices[1];
230
- globalThis.expect(shipOrder.linkedViews).toEqual(["Orders"]);
231
- });
232
- globalThis.test("ShipOrder: consistencyRead is None (empty consumedEventTypes cannot overlap any SVS)", () => {
233
- let shipOrder = structure.stateChangeSlices[1];
234
- globalThis.expect(shipOrder.consistencyRead).toEqual(undefined);
235
- });
236
- globalThis.test("ShipOrder command: level Instance, aggregateIdField orderId", () => {
237
- let shipOrder = structure.stateChangeSlices[1];
238
- let cmd = shipOrder.commands[0];
239
- globalThis.expect([
240
- cmd.level,
241
- cmd.aggregateIdField
242
- ]).toEqual([
243
- "Instance",
244
- "orderId"
245
- ]);
246
- });
247
- globalThis.test("ShipOrder: payload-less command CancelShipment is surfaced in commands", () => {
248
- let shipOrder = structure.stateChangeSlices[1];
249
- globalThis.expect(shipOrder.commands.map(c => c.name)).toEqual([
250
- "ShipOrder",
251
- "CancelShipment"
252
- ]);
253
- });
254
- globalThis.test("ShipOrder: payload-less event ShipmentVoided is surfaced in events", () => {
255
- let shipOrder = structure.stateChangeSlices[1];
256
- globalThis.expect(shipOrder.events.map(e => e.name)).toEqual([
257
- "OrderShipped",
258
- "ShipmentVoided"
259
- ]);
260
- });
261
- globalThis.test("ShipOrder: producedEventTypes still excludes the payload-less ShipmentVoided (DCB filter intact)", () => {
262
- let shipOrder = structure.stateChangeSlices[1];
263
- globalThis.expect(shipOrder.producedEventTypes).toEqual(["TestPlugin.OrderShipped"]);
264
- });
265
- });
266
- globalThis.describe("stateViewSlices", () => {
267
- globalThis.test("produces four SVS entries in declaration order", () => {
268
- globalThis.expect(structure.stateViewSlices.length).toBe(4);
269
- });
270
- globalThis.test("OrdersView: consumedEventTypes contains the three order events (qualified)", () => {
271
- let ordersView = structure.stateViewSlices[0];
272
- globalThis.expect(ordersView.consumedEventTypes).toEqual([
273
- "TestPlugin.OrderPlaced",
274
- "TestPlugin.OrderShipped",
275
- "TestPlugin.OrderCancelled"
276
- ]);
277
- });
278
- globalThis.test("OrdersView: linkedWriteSide contains both SCS producing order events", () => {
279
- let ordersView = structure.stateViewSlices[0];
280
- globalThis.expect(ordersView.linkedWriteSide).toEqual([
281
- "PlaceOrder",
282
- "ShipOrder"
283
- ]);
284
- });
285
- globalThis.test("AvailableProductsView: consumedEventTypes contains catalog events (qualified)", () => {
286
- let apv = structure.stateViewSlices[1];
287
- globalThis.expect(apv.consumedEventTypes).toEqual([
288
- "TestPlugin.CatalogProductSynced",
289
- "TestPlugin.CatalogProductPriceChanged"
290
- ]);
291
- });
292
- globalThis.test("AvailableProductsView: linkedWriteSide is empty (no SCS produces these events)", () => {
293
- let apv = structure.stateViewSlices[1];
294
- globalThis.expect(apv.linkedWriteSide).toEqual([]);
295
- });
296
- });
297
- globalThis.describe("labelField / searchableFields", () => {
298
- globalThis.test("OrdersView: no @displayName → first non-`*Id` string field wins (customerName)", () => {
299
- let ordersView = structure.stateViewSlices[0];
300
- globalThis.expect([
301
- ordersView.labelField,
302
- ordersView.searchableFields
303
- ]).toEqual([
304
- "customerName",
305
- ["customerName"]
306
- ]);
307
- });
308
- globalThis.test("AvailableProductsView: no @displayName → first non-`*Id` string field wins (name)", () => {
309
- let apv = structure.stateViewSlices[1];
310
- globalThis.expect([
311
- apv.labelField,
312
- apv.searchableFields
313
- ]).toEqual([
314
- "name",
315
- ["name"]
316
- ]);
317
- });
318
- globalThis.test("Customers: composite @displayName → labelField=displayName, searchableFields=raw source fields in declaration order", () => {
319
- let customers = structure.stateViewSlices[2];
320
- globalThis.expect([
321
- customers.labelField,
322
- customers.searchableFields
323
- ]).toEqual([
324
- "displayName",
325
- [
326
- "firstName",
327
- "lastName"
328
- ]
329
- ]);
330
- });
331
- });
332
- globalThis.describe("queryableDef.schema propagates x-reventless-* annotations", () => {
333
- let getProperty = (json, key) => {
334
- let obj = Stdlib_JSON.Decode.object(json);
335
- if (obj !== undefined) {
336
- return obj[key];
337
- }
338
- };
339
- let getPropertyOf = (json, fieldName) => {
340
- let props = getProperty(json, "properties");
341
- if (props === undefined) {
342
- return;
343
- }
344
- let obj = Stdlib_JSON.Decode.object(props);
345
- if (obj !== undefined) {
346
- return obj[fieldName];
347
- }
348
- };
349
- let annotatedSchema = JSON.parse(structure.stateViewSlices[3].schema);
350
- globalThis.test("itemId carries x-reventless-id", () => {
351
- globalThis.expect(Stdlib_Option.flatMap(Stdlib_Option.flatMap(getPropertyOf(annotatedSchema, "itemId"), s => getProperty(s, "x-reventless-id")), Stdlib_JSON.Decode.bool)).toBe(true);
352
- });
353
- globalThis.test("version carries x-reventless-subId", () => {
354
- globalThis.expect(Stdlib_Option.flatMap(Stdlib_Option.flatMap(getPropertyOf(annotatedSchema, "version"), s => getProperty(s, "x-reventless-subId")), Stdlib_JSON.Decode.bool)).toBe(true);
355
- });
356
- globalThis.test("ownerId carries x-reventless-index = byOwner", () => {
357
- globalThis.expect(Stdlib_Option.flatMap(Stdlib_Option.flatMap(getPropertyOf(annotatedSchema, "ownerId"), s => getProperty(s, "x-reventless-index")), Stdlib_JSON.Decode.string)).toBe("byOwner");
358
- });
359
- globalThis.test("unannotated field 'name' has no x-reventless-* keys", () => {
360
- let nameField = getPropertyOf(annotatedSchema, "name");
361
- globalThis.expect([
362
- Stdlib_Option.flatMap(nameField, s => getProperty(s, "x-reventless-id")),
363
- Stdlib_Option.flatMap(nameField, s => getProperty(s, "x-reventless-subId")),
364
- Stdlib_Option.flatMap(nameField, s => getProperty(s, "x-reventless-index"))
365
- ]).toEqual([
366
- undefined,
367
- undefined,
368
- undefined
369
- ]);
370
- });
371
- globalThis.test("unannotated state-view slice (Orders) emits no x-reventless-* keys", () => {
372
- let ordersSchema = JSON.parse(structure.stateViewSlices[0].schema);
373
- let orderIdField = getPropertyOf(ordersSchema, "orderId");
374
- globalThis.expect(Stdlib_Option.flatMap(orderIdField, s => getProperty(s, "x-reventless-id"))).toBe(undefined);
375
- });
376
- });
377
- globalThis.describe("componentChapters threading", () => {
378
- let chaptered = Plugin_Structure$ReventlessCore.make("TestPlugin", undefined, undefined, [PsOrdersViewSlice], [
379
- PsPlaceOrderSlice,
380
- PsShipOrderSlice
381
- ], undefined, undefined, undefined, undefined, undefined, Object.fromEntries([
382
- [
383
- "PlaceOrder",
384
- "Order"
385
- ],
386
- [
387
- "Orders",
388
- "Order"
389
- ]
390
- ]));
391
- globalThis.test("a chaptered state-change slice carries Some(chapter)", () => {
392
- let placeOrder = chaptered.stateChangeSlices[0];
393
- globalThis.expect(placeOrder.chapter).toEqual("Order");
394
- });
395
- globalThis.test("a chaptered state-view slice carries Some(chapter)", () => {
396
- let orders = chaptered.stateViewSlices[0];
397
- globalThis.expect(orders.chapter).toEqual("Order");
398
- });
399
- globalThis.test("a component absent from the map carries None", () => {
400
- let shipOrder = chaptered.stateChangeSlices[1];
401
- globalThis.expect(shipOrder.chapter).toEqual(undefined);
402
- });
403
- globalThis.test("no ~componentChapters → every def is chapterless (None)", () => {
404
- let placeOrder = structure.stateChangeSlices[0];
405
- globalThis.expect(placeOrder.chapter).toEqual(undefined);
406
- });
407
- });
408
- });
409
-
410
- export {
411
- PsPlaceOrderSlice,
412
- PsShipOrderSlice,
413
- PsOrdersViewSlice,
414
- PsAvailableProductsViewSlice,
415
- PsCustomersViewSlice,
416
- PsAnnotatedViewSlice,
417
- structure,
418
- }
419
- /* structure Not a pure module */
@@ -1,30 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Plugin$ReventlessCore from "../../src/plugin/component/Plugin.res.mjs";
4
-
5
- globalThis.describe("Plugin.version", () => {
6
- globalThis.test("extracts the version segment from name@version", () => {
7
- globalThis.expect(Plugin$ReventlessCore.version("Catalog@0.10.0-alpha.73")).toBe("0.10.0-alpha.73");
8
- });
9
- globalThis.test("returns empty string when the id carries no @", () => {
10
- globalThis.expect(Plugin$ReventlessCore.version("Platform")).toBe("");
11
- });
12
- });
13
-
14
- globalThis.describe("Plugin.compareVersions", () => {
15
- globalThis.test("equal versions compare as 0", () => {
16
- globalThis.expect(Plugin$ReventlessCore.compareVersions("0.10.0", "0.10.0")).toBe(0);
17
- });
18
- globalThis.test("higher patch is newer", () => {
19
- globalThis.expect(Plugin$ReventlessCore.compareVersions("0.10.1", "0.10.0")).toBe(1);
20
- });
21
- globalThis.test("lower minor is older", () => {
22
- globalThis.expect(Plugin$ReventlessCore.compareVersions("0.9.0", "0.10.0")).toBe(-1);
23
- });
24
- globalThis.test("orders prerelease counters numerically, not lexically", () => {
25
- globalThis.expect(Plugin$ReventlessCore.compareVersions("0.10.0-alpha.9", "0.10.0-alpha.73")).toBe(-1);
26
- globalThis.expect(Plugin$ReventlessCore.compareVersions("0.10.0-alpha.73", "0.10.0-alpha.7")).toBe(1);
27
- });
28
- });
29
-
30
- /* Not a pure module */
@@ -1,160 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as S from "sury/src/S.res.mjs";
4
- import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
5
- import * as Primitive_string from "@rescript/runtime/lib/es6/Primitive_string.js";
6
- import * as SchemaWalker$ReventlessCore from "../../src/plugin/component/SchemaWalker.res.mjs";
7
-
8
- S.enableJson();
9
-
10
- let simpleRecordSchema = S.schema(s => ({
11
- label: s.m(S.string),
12
- count: s.m(S.int),
13
- rating: s.m(S.option(S.float))
14
- }));
15
-
16
- let simpleVariantSchema = S.union([
17
- S.schema(s => ({
18
- TAG: "Added",
19
- id: s.m(S.string),
20
- name: s.m(S.string)
21
- })),
22
- S.schema(s => ({
23
- TAG: "Renamed",
24
- id: s.m(S.string),
25
- newName: s.m(S.string)
26
- })),
27
- S.literal("Removed")
28
- ]);
29
-
30
- globalThis.describe("SchemaWalker:", () => {
31
- globalThis.describe("record schema", () => {
32
- let result = SchemaWalker$ReventlessCore.walk("SimpleRecord", simpleRecordSchema);
33
- globalThis.test("kind is record", () => {
34
- globalThis.expect(result.kind).toBe("record");
35
- });
36
- globalThis.test("constructors is absent", () => {
37
- globalThis.expect(result.constructors).toEqual(undefined);
38
- });
39
- globalThis.test("fields are sorted alphabetically", () => {
40
- let names = result.fields.map(f => f.name);
41
- globalThis.expect(names).toEqual([
42
- "count",
43
- "label",
44
- "rating"
45
- ]);
46
- });
47
- globalThis.test("required string field", () => {
48
- let f = result.fields[1];
49
- globalThis.expect([
50
- f.typeDescription,
51
- f.isRequired
52
- ]).toEqual([
53
- "string",
54
- true
55
- ]);
56
- });
57
- globalThis.test("required int field typeDescription is number", () => {
58
- let f = result.fields[0];
59
- globalThis.expect([
60
- f.typeDescription,
61
- f.isRequired
62
- ]).toEqual([
63
- "number",
64
- true
65
- ]);
66
- });
67
- globalThis.test("optional float field", () => {
68
- let f = result.fields[2];
69
- globalThis.expect([
70
- f.typeDescription,
71
- f.isRequired
72
- ]).toEqual([
73
- "option<number>",
74
- false
75
- ]);
76
- });
77
- globalThis.test("structuralHash is non-empty", () => {
78
- globalThis.expect(result.structuralHash.length > 0).toBe(true);
79
- });
80
- });
81
- globalThis.describe("variant schema", () => {
82
- let result = SchemaWalker$ReventlessCore.walk("SimpleVariant", simpleVariantSchema);
83
- globalThis.test("kind is variant", () => {
84
- globalThis.expect(result.kind).toBe("variant");
85
- });
86
- globalThis.test("fields array is empty", () => {
87
- globalThis.expect(result.fields).toEqual([]);
88
- });
89
- globalThis.test("payload-less constructor Removed is excluded", () => {
90
- let ctors = Stdlib_Option.getOr(result.constructors, []);
91
- let names = ctors.map(c => c.name).toSorted(Primitive_string.compare);
92
- globalThis.expect(names).toEqual([
93
- "Added",
94
- "Renamed"
95
- ]);
96
- });
97
- globalThis.test("Added constructor has sorted fields", () => {
98
- let ctors = Stdlib_Option.getOr(result.constructors, []);
99
- let added = Stdlib_Option.getOr(ctors.find(c => c.name === "Added"), {
100
- name: "",
101
- fields: []
102
- });
103
- globalThis.expect(added.fields.map(f => f.name)).toEqual([
104
- "id",
105
- "name"
106
- ]);
107
- });
108
- globalThis.test("Renamed constructor has sorted fields", () => {
109
- let ctors = Stdlib_Option.getOr(result.constructors, []);
110
- let renamed = Stdlib_Option.getOr(ctors.find(c => c.name === "Renamed"), {
111
- name: "",
112
- fields: []
113
- });
114
- globalThis.expect(renamed.fields.map(f => f.name)).toEqual([
115
- "id",
116
- "newName"
117
- ]);
118
- });
119
- globalThis.test("structuralHash is non-empty", () => {
120
- globalThis.expect(result.structuralHash.length > 0).toBe(true);
121
- });
122
- });
123
- globalThis.describe("hash properties", () => {
124
- globalThis.test("same schema produces identical hash on repeated calls", () => {
125
- let h1 = SchemaWalker$ReventlessCore.walk("X", simpleRecordSchema).structuralHash;
126
- let h2 = SchemaWalker$ReventlessCore.walk("X", simpleRecordSchema).structuralHash;
127
- globalThis.expect(h1).toBe(h2);
128
- });
129
- globalThis.test("typeName does not affect structuralHash", () => {
130
- let h1 = SchemaWalker$ReventlessCore.walk("TypeA", simpleRecordSchema).structuralHash;
131
- let h2 = SchemaWalker$ReventlessCore.walk("TypeB", simpleRecordSchema).structuralHash;
132
- globalThis.expect(h1).toBe(h2);
133
- });
134
- globalThis.test("structurally distinct schemas produce different hashes", () => {
135
- let h1 = SchemaWalker$ReventlessCore.walk("R", simpleRecordSchema).structuralHash;
136
- let h2 = SchemaWalker$ReventlessCore.walk("V", simpleVariantSchema).structuralHash;
137
- globalThis.expect(h1 === h2).toBe(false);
138
- });
139
- });
140
- globalThis.describe("scalar / unsupported schema", () => {
141
- globalThis.test("plain string schema → kind unknown", () => {
142
- let result = SchemaWalker$ReventlessCore.walk("Scalar", S.string);
143
- globalThis.expect(result.kind).toBe("unknown");
144
- });
145
- globalThis.test("plain string schema → empty fields", () => {
146
- let result = SchemaWalker$ReventlessCore.walk("Scalar", S.string);
147
- globalThis.expect(result.fields).toEqual([]);
148
- });
149
- globalThis.test("plain string schema → empty structuralHash", () => {
150
- let result = SchemaWalker$ReventlessCore.walk("Scalar", S.string);
151
- globalThis.expect(result.structuralHash).toBe("");
152
- });
153
- });
154
- });
155
-
156
- export {
157
- simpleRecordSchema,
158
- simpleVariantSchema,
159
- }
160
- /* Not a pure module */
@@ -1,62 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as S from "sury/src/S.res.mjs";
4
- import * as DcbTag$Reventless from "@reventlessdev/reventless-spec/src/components/DcbTag.res.mjs";
5
-
6
- let consumedEventSchema = S.schema(s => ({
7
- TAG: "CatalogProductSynced",
8
- productId: s.m(DcbTag$Reventless.string)
9
- }));
10
-
11
- function evolve(_state, _event) {
12
- return true;
13
- }
14
-
15
- let commandSchema = S.schema(s => ({
16
- TAG: "PlaceOrder",
17
- orderId: s.m(DcbTag$Reventless.string)
18
- }));
19
-
20
- let errorSchema = S.literal("AlreadyPlaced");
21
-
22
- let eventSchema = S.schema(s => ({
23
- TAG: "OrderPlaced",
24
- orderId: s.m(DcbTag$Reventless.string)
25
- }));
26
-
27
- function decide(_state, _command) {
28
- return {
29
- TAG: "Ok",
30
- _0: []
31
- };
32
- }
33
-
34
- function commandAuthorization(param) {
35
- return "AllowAuthenticated";
36
- }
37
-
38
- let name = "PlaceOrder";
39
-
40
- let Id;
41
-
42
- let initialState = false;
43
-
44
- let moduleUrl = "@reventlessdev/reventless-core/tests/plugin/StateChangeSlice/PsPlaceOrder.res.mjs";
45
-
46
- let readConsistency = "EscalateOnRetry";
47
-
48
- export {
49
- name,
50
- Id,
51
- initialState,
52
- consumedEventSchema,
53
- evolve,
54
- commandSchema,
55
- errorSchema,
56
- eventSchema,
57
- decide,
58
- moduleUrl,
59
- commandAuthorization,
60
- readConsistency,
61
- }
62
- /* consumedEventSchema Not a pure module */