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

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 (83) hide show
  1. package/CHANGELOG.md +14 -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/Heartbeat/Heartbeat.res +2 -2
  6. package/src/components/Heartbeat/Heartbeat_Builder.res +2 -2
  7. package/src/components/Heartbeat/Heartbeat_Builder.res.mjs +2 -4
  8. package/src/components/Task/Task_Builder.res +6 -4
  9. package/src/components/Task/Task_Builder.res.mjs +4 -4
  10. package/src/plugin/component/Plugin_Builder.res +5 -1
  11. package/src/plugin/component/Plugin_Builder.res.mjs +1 -1
  12. package/src/plugin/component/Plugin_Helpers.res +6 -1
  13. package/src/plugin/connect/PluginExtensionPoint_Builder.res +2 -0
  14. package/src/plugin/connect/PluginExtensionPoint_Builder.res.mjs +3 -3
  15. package/src/plugin/connect/PluginExtensionPoint_Plugin.res +12 -5
  16. package/src/plugin/connect/PluginExtensionPoint_Plugin.res.mjs +8 -2
  17. package/tests/plugin/HeartbeatDisconnectGraceTest.res +98 -0
  18. package/tests/IdentityTest.res.mjs +0 -174
  19. package/tests/adapter/MonitoringTest.res.mjs +0 -82
  20. package/tests/admin/Platform_ComponentDefinitionsApiTest.res.mjs +0 -356
  21. package/tests/admin/Platform_UIFragmentsApiTest.res.mjs +0 -101
  22. package/tests/aggregate/AggregateCacheTest.res.mjs +0 -433
  23. package/tests/aggregate/AggregateCallbackTest.res.mjs +0 -143
  24. package/tests/aggregate/AggregateCausationTest.res.mjs +0 -47
  25. package/tests/aggregate/AggregateConflictTest.res.mjs +0 -386
  26. package/tests/aggregate/AggregateFixtures.res.mjs +0 -308
  27. package/tests/aggregate/AggregateRejectionTest.res.mjs +0 -166
  28. package/tests/aggregate/AggregateSnapshotTest.res.mjs +0 -645
  29. package/tests/api/ApiNoApiTest.res.mjs +0 -90
  30. package/tests/api/GraphQL_StitcherTest.res.mjs +0 -112
  31. package/tests/api/SimpleTest.res.mjs +0 -10
  32. package/tests/api/SuryToJsonSchemaTest.res.mjs +0 -674
  33. package/tests/commandgenerator/CommandGeneratorCallbackTest.res.mjs +0 -160
  34. package/tests/commandgenerator/CommandGeneratorFixtures.res.mjs +0 -197
  35. package/tests/commandtopic/CommandTopicCallbackFixtures.res.mjs +0 -152
  36. package/tests/commandtopic/CommandTopicCallbackTest.res.mjs +0 -106
  37. package/tests/commandtopic/CommandTopicHelpersRejectionTest.res.mjs +0 -109
  38. package/tests/counter/CounterCallbackTest.res.mjs +0 -140
  39. package/tests/counter/CounterFixtures.res.mjs +0 -67
  40. package/tests/dcb/DcbDecodeTest.res.mjs +0 -194
  41. package/tests/dcb/DcbEventLogOperationsTest.res.mjs +0 -268
  42. package/tests/dcb/DcbFixtures.res.mjs +0 -534
  43. package/tests/dcb/DcbScopeInferenceTest.res.mjs +0 -480
  44. package/tests/dcb/DcbStateChangeSliceTest.res.mjs +0 -540
  45. package/tests/dcb/DcbTagTest.res.mjs +0 -867
  46. package/tests/dcb/DcbValidationTest.res.mjs +0 -476
  47. package/tests/eventlog/EventLogFixtures.res.mjs +0 -196
  48. package/tests/eventlog/EventLogOperationsTest.res.mjs +0 -192
  49. package/tests/eventlog/EventLogRetryTest.res.mjs +0 -195
  50. package/tests/eventmapper/EventMapperCallbackTest.res.mjs +0 -141
  51. package/tests/eventmapper/EventMapperFixtures.res.mjs +0 -440
  52. package/tests/eventmapper/EventMapperTest.res.mjs +0 -83
  53. package/tests/eventtopic/EventTopicFixtures.res.mjs +0 -65
  54. package/tests/eventtopic/EventTopicOperationsTest.res.mjs +0 -71
  55. package/tests/extensionpoint/ExtensionPointCallbackTest.res.mjs +0 -94
  56. package/tests/extensionpoint/ExtensionPointFixtures.res.mjs +0 -205
  57. package/tests/extensionpoint/ExtensionPointOperationsTest.res.mjs +0 -304
  58. package/tests/ftp/FTPTest.res.mjs +0 -88
  59. package/tests/logger/LogFormatTest.res.mjs +0 -309
  60. package/tests/logger/LoggerLazyTest.res.mjs +0 -40
  61. package/tests/message/MessageTest.res.mjs +0 -218
  62. package/tests/message/MetaEnvelopeTest.res.mjs +0 -188
  63. package/tests/plugin/ManifestVisibilityTest.res.mjs +0 -215
  64. package/tests/plugin/PluginSpecExperiment.res.mjs +0 -31
  65. package/tests/plugin/PluginStructureTest.res.mjs +0 -419
  66. package/tests/plugin/PluginVersionTest.res.mjs +0 -30
  67. package/tests/plugin/SchemaWalkerTest.res.mjs +0 -160
  68. package/tests/plugin/StateChangeSlice/PsPlaceOrder.res.mjs +0 -62
  69. package/tests/plugin/StateChangeSlice/PsShipOrder.res.mjs +0 -69
  70. package/tests/plugin/StateViewSlice/PsAnnotatedView.res.mjs +0 -95
  71. package/tests/plugin/StateViewSlice/PsAvailableProductsView.res.mjs +0 -69
  72. package/tests/plugin/StateViewSlice/PsCustomersView.res.mjs +0 -69
  73. package/tests/plugin/StateViewSlice/PsOrdersView.res.mjs +0 -81
  74. package/tests/poc/StructuralSubtypingPoc.res.mjs +0 -61
  75. package/tests/projection/ProjectionOptimizeTest.res.mjs +0 -75
  76. package/tests/querydb/QueryDbFixtures.res.mjs +0 -135
  77. package/tests/querydb/QueryDbOperationsTest.res.mjs +0 -168
  78. package/tests/sideeffecthandler/SideEffectHandlerCallbackTest.res.mjs +0 -77
  79. package/tests/sideeffecthandler/SideEffectHandlerFixtures.res.mjs +0 -139
  80. package/tests/util/CommandPublisherTest.res.mjs +0 -78
  81. package/tests/util/CsvStreamTest.res.mjs +0 -51
  82. package/tests/util/LruTest.res.mjs +0 -105
  83. package/tests/util/MetricsTest.res.mjs +0 -53
@@ -1,308 +0,0 @@
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 Stream from "effect/Stream";
6
- import * as Aggregate_Callback$ReventlessCore from "../../src/components/Aggregate/Aggregate_Callback.res.mjs";
7
-
8
- S.enableJson();
9
-
10
- let name = "TestAggregate";
11
-
12
- let commandSchema = S.union([
13
- S.schema(s => ({
14
- TAG: "Create",
15
- name: s.m(S.string)
16
- })),
17
- S.schema(s => ({
18
- TAG: "Rename",
19
- newName: s.m(S.string)
20
- }))
21
- ]);
22
-
23
- let eventSchema = S.union([
24
- S.schema(s => ({
25
- TAG: "Created",
26
- name: s.m(S.string)
27
- })),
28
- S.schema(s => ({
29
- TAG: "Renamed",
30
- newName: s.m(S.string)
31
- }))
32
- ]);
33
-
34
- let errorSchema = S.union([
35
- S.literal("AlreadyExists"),
36
- S.literal("NotFound")
37
- ]);
38
-
39
- let moduleUrl = import.meta.url;
40
-
41
- function commandAuthorization(param) {
42
- return "AllowAuthenticated";
43
- }
44
-
45
- let AggSpec = {
46
- Id: undefined,
47
- name: name,
48
- commandSchema: commandSchema,
49
- eventSchema: eventSchema,
50
- errorSchema: errorSchema,
51
- moduleUrl: moduleUrl,
52
- commandAuthorization: commandAuthorization
53
- };
54
-
55
- let stateSchema = S.union([
56
- S.literal("NotCreated"),
57
- S.schema(s => ({
58
- TAG: "Created",
59
- name: s.m(S.string)
60
- }))
61
- ]);
62
-
63
- let moduleUrl$1 = import.meta.url;
64
-
65
- function evolve(_state, event) {
66
- if (event.TAG === "Created") {
67
- return {
68
- TAG: "Created",
69
- name: event.name
70
- };
71
- } else {
72
- return {
73
- TAG: "Created",
74
- name: event.newName
75
- };
76
- }
77
- }
78
-
79
- function decide(state, command) {
80
- if (typeof state !== "object") {
81
- if (command.TAG === "Create") {
82
- return {
83
- TAG: "Ok",
84
- _0: [{
85
- TAG: "Created",
86
- name: command.name
87
- }]
88
- };
89
- } else {
90
- return {
91
- TAG: "Error",
92
- _0: "NotFound"
93
- };
94
- }
95
- } else if (command.TAG === "Create") {
96
- return {
97
- TAG: "Error",
98
- _0: "AlreadyExists"
99
- };
100
- } else {
101
- return {
102
- TAG: "Ok",
103
- _0: [{
104
- TAG: "Renamed",
105
- newName: command.newName
106
- }]
107
- };
108
- }
109
- }
110
-
111
- let TestBehavior = {
112
- Spec: undefined,
113
- stateSchema: stateSchema,
114
- initialState: "NotCreated",
115
- snapshot: undefined,
116
- moduleUrl: moduleUrl$1,
117
- evolve: evolve,
118
- decide: decide
119
- };
120
-
121
- function makeMockEL() {
122
- let storedRef = {
123
- contents: []
124
- };
125
- let failRef = {
126
- contents: false
127
- };
128
- let appendFn = async (_seqNr, _id, newEvents) => {
129
- if (failRef.contents) {
130
- failRef.contents = false;
131
- return {
132
- TAG: "Error",
133
- _0: {
134
- TAG: "StorageFailure",
135
- _0: "append failed"
136
- }
137
- };
138
- } else {
139
- storedRef.contents = storedRef.contents.concat(newEvents);
140
- return {
141
- TAG: "Ok",
142
- _0: undefined
143
- };
144
- }
145
- };
146
- let replayFn = async id => storedRef.contents.filter(e => e.id === id).map(e => e.event);
147
- let replayStreamFn = id => Stream.fromIterable(storedRef.contents.filter(e => e.id === id).map(e => e.event));
148
- return {
149
- appendFn: appendFn,
150
- replayFn: replayFn,
151
- replayStreamFn: replayStreamFn,
152
- getAll: () => storedRef.contents,
153
- failNextAppend: failRef,
154
- reset: () => {
155
- storedRef.contents = [];
156
- failRef.contents = false;
157
- }
158
- };
159
- }
160
-
161
- let mock = makeMockEL();
162
-
163
- let name$1 = "MockEventLog";
164
-
165
- let Spec = {
166
- Id: undefined,
167
- name: name$1,
168
- eventSchema: eventSchema
169
- };
170
-
171
- function make(param, param$1) {
172
- return 0;
173
- }
174
-
175
- let EventLog = {
176
- Spec: Spec,
177
- make: make
178
- };
179
-
180
- let eventLog_append = mock.appendFn;
181
-
182
- let eventLog_replay = mock.replayFn;
183
-
184
- function eventLog_replayStream(id, param) {
185
- return mock.replayStreamFn(id);
186
- }
187
-
188
- function eventLog_appendStream(_startingSeqNr, _id, stream) {
189
- return Stream.runDrain(stream);
190
- }
191
-
192
- async function eventLog_latestSnapshot(param) {
193
- return {
194
- TAG: "Ok",
195
- _0: undefined
196
- };
197
- }
198
-
199
- async function eventLog_writeSnapshot(param, param$1) {
200
- return {
201
- TAG: "Ok",
202
- _0: undefined
203
- };
204
- }
205
-
206
- let eventLog = {
207
- append: eventLog_append,
208
- replay: eventLog_replay,
209
- replayStream: eventLog_replayStream,
210
- appendStream: eventLog_appendStream,
211
- latestSnapshot: eventLog_latestSnapshot,
212
- writeSnapshot: eventLog_writeSnapshot
213
- };
214
-
215
- let TestOps = {
216
- Spec: undefined,
217
- EventLog: EventLog,
218
- eventLog: eventLog
219
- };
220
-
221
- let TestHandler = Aggregate_Callback$ReventlessCore.Make({
222
- Id: {
223
- schema: Id$Reventless.StringPure.schema,
224
- make: prim => prim,
225
- makeFromString: prim => prim,
226
- toString: prim => prim,
227
- cmp: Id$Reventless.StringPure.cmp
228
- },
229
- name: name,
230
- eventSchema: eventSchema,
231
- errorSchema: errorSchema,
232
- commandSchema: commandSchema,
233
- moduleUrl: moduleUrl,
234
- commandAuthorization: commandAuthorization
235
- })({
236
- initialState: "NotCreated",
237
- evolve: evolve,
238
- decide: decide,
239
- snapshot: undefined,
240
- moduleUrl: moduleUrl$1
241
- })({
242
- Spec: {
243
- Id: {
244
- schema: Id$Reventless.StringPure.schema,
245
- make: prim => prim,
246
- makeFromString: prim => prim,
247
- toString: prim => prim,
248
- cmp: Id$Reventless.StringPure.cmp
249
- },
250
- name: name,
251
- eventSchema: eventSchema,
252
- errorSchema: errorSchema,
253
- commandSchema: commandSchema,
254
- moduleUrl: moduleUrl,
255
- commandAuthorization: commandAuthorization
256
- },
257
- EventLog: {
258
- Spec: {
259
- Id: {
260
- schema: Id$Reventless.StringPure.schema,
261
- make: prim => prim,
262
- makeFromString: prim => prim,
263
- toString: prim => prim,
264
- cmp: Id$Reventless.StringPure.cmp
265
- },
266
- name: name$1,
267
- eventSchema: eventSchema
268
- },
269
- make: make
270
- },
271
- eventLog: eventLog
272
- });
273
-
274
- let testMeta = {
275
- service: "TestAggregate",
276
- time: "2024-01-01T00:00:00Z",
277
- ip: "127.0.0.1",
278
- user: "test-user",
279
- msgId: "msg-1",
280
- correlationId: "corr-1"
281
- };
282
-
283
- function makeTopicItem(aggIdOpt, reference, command) {
284
- let aggId = aggIdOpt !== undefined ? aggIdOpt : "agg-1";
285
- return {
286
- command: {
287
- id: aggId,
288
- meta: testMeta,
289
- command: command
290
- },
291
- reference: reference
292
- };
293
- }
294
-
295
- let OuterEventLog;
296
-
297
- export {
298
- AggSpec,
299
- TestBehavior,
300
- makeMockEL,
301
- mock,
302
- OuterEventLog,
303
- TestOps,
304
- TestHandler,
305
- testMeta,
306
- makeTopicItem,
307
- }
308
- /* Not a pure module */
@@ -1,166 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Effect from "effect/Effect";
4
- import * as Stream from "effect/Stream";
5
- import * as AggregateFixtures$ReventlessCore from "./AggregateFixtures.res.mjs";
6
- import * as CommandTopic_Helpers$ReventlessCore from "../../src/components/CommandTopic/CommandTopic_Helpers.res.mjs";
7
-
8
- globalThis.beforeEach(() => {
9
- AggregateFixtures$ReventlessCore.mock.reset();
10
- AggregateFixtures$ReventlessCore.TestHandler.resetCache();
11
- });
12
-
13
- let capturedRejections = {
14
- contents: []
15
- };
16
-
17
- let capturedAccepts = {
18
- contents: []
19
- };
20
-
21
- function installChannels() {
22
- capturedRejections.contents = [];
23
- capturedAccepts.contents = [];
24
- CommandTopic_Helpers$ReventlessCore.rejectedResultChannel.contents = (ref, info) => {
25
- capturedRejections.contents = capturedRejections.contents.concat([[
26
- ref,
27
- info
28
- ]]);
29
- };
30
- CommandTopic_Helpers$ReventlessCore.acceptedResultChannel.contents = (ref, info) => {
31
- capturedAccepts.contents = capturedAccepts.contents.concat([[
32
- ref,
33
- info
34
- ]]);
35
- };
36
- }
37
-
38
- function uninstallChannels() {
39
- CommandTopic_Helpers$ReventlessCore.rejectedResultChannel.contents = undefined;
40
- CommandTopic_Helpers$ReventlessCore.acceptedResultChannel.contents = undefined;
41
- }
42
-
43
- globalThis.describe("Aggregate decide-rejection propagation:", () => {
44
- globalThis.describe("single rejected command", () => {
45
- globalThis.test("Create on existing aggregate reports Rejected with errorCode", async () => {
46
- await Effect.runPromise(AggregateFixtures$ReventlessCore.TestHandler.handleCommands(Stream.fromIterable([AggregateFixtures$ReventlessCore.makeTopicItem(undefined, "ref-seed", {
47
- TAG: "Create",
48
- name: "Widget"
49
- })])));
50
- installChannels();
51
- let results = await Effect.runPromise(AggregateFixtures$ReventlessCore.TestHandler.handleCommands(Stream.fromIterable([AggregateFixtures$ReventlessCore.makeTopicItem(undefined, "ref-1", {
52
- TAG: "Create",
53
- name: "Widget"
54
- })])));
55
- uninstallChannels();
56
- globalThis.expect(results).toEqual([{
57
- TAG: "Ok",
58
- _0: "ref-1"
59
- }]);
60
- globalThis.expect(capturedRejections.contents.length).toBe(1);
61
- let match = capturedRejections.contents[0];
62
- globalThis.expect(match[0]).toEqual("ref-1");
63
- globalThis.expect(match[1].errorCode).toEqual("AlreadyExists");
64
- globalThis.expect(AggregateFixtures$ReventlessCore.mock.getAll().length).toBe(1);
65
- });
66
- });
67
- globalThis.describe("mixed batch", () => {
68
- globalThis.test("rejected command does not cancel surviving commands", async () => {
69
- await Effect.runPromise(AggregateFixtures$ReventlessCore.TestHandler.handleCommands(Stream.fromIterable([AggregateFixtures$ReventlessCore.makeTopicItem("agg-1", "ref-seed", {
70
- TAG: "Create",
71
- name: "Widget"
72
- })])));
73
- installChannels();
74
- let results = await Effect.runPromise(AggregateFixtures$ReventlessCore.TestHandler.handleCommands(Stream.fromIterable([
75
- AggregateFixtures$ReventlessCore.makeTopicItem("agg-1", "ref-1", {
76
- TAG: "Rename",
77
- newName: "First"
78
- }),
79
- AggregateFixtures$ReventlessCore.makeTopicItem("agg-1", "ref-2", {
80
- TAG: "Create",
81
- name: "Boom"
82
- }),
83
- AggregateFixtures$ReventlessCore.makeTopicItem("agg-1", "ref-3", {
84
- TAG: "Rename",
85
- newName: "Last"
86
- })
87
- ])));
88
- uninstallChannels();
89
- globalThis.expect(results.length).toBe(3);
90
- results.forEach(r => {
91
- if (r.TAG === "Ok") {
92
- return;
93
- }
94
- globalThis.expect("expected all Ok").toEqual("got Error");
95
- });
96
- globalThis.expect(AggregateFixtures$ReventlessCore.mock.getAll().length).toBe(3);
97
- let rejected = capturedRejections.contents;
98
- globalThis.expect(rejected.length).toBe(1);
99
- let match = rejected[0];
100
- globalThis.expect(match[0]).toEqual("ref-2");
101
- globalThis.expect(match[1].errorCode).toEqual("AlreadyExists");
102
- let accepted = capturedAccepts.contents;
103
- globalThis.expect(accepted.length).toBe(2);
104
- });
105
- });
106
- globalThis.describe("all-reject batch", () => {
107
- globalThis.test("3 rejecting commands → no append, all reported Rejected, no Accepted", async () => {
108
- installChannels();
109
- let results = await Effect.runPromise(AggregateFixtures$ReventlessCore.TestHandler.handleCommands(Stream.fromIterable([
110
- AggregateFixtures$ReventlessCore.makeTopicItem("agg-x", "ref-1", {
111
- TAG: "Rename",
112
- newName: "A"
113
- }),
114
- AggregateFixtures$ReventlessCore.makeTopicItem("agg-x", "ref-2", {
115
- TAG: "Rename",
116
- newName: "B"
117
- }),
118
- AggregateFixtures$ReventlessCore.makeTopicItem("agg-x", "ref-3", {
119
- TAG: "Rename",
120
- newName: "C"
121
- })
122
- ])));
123
- uninstallChannels();
124
- globalThis.expect(results).toEqual([
125
- {
126
- TAG: "Ok",
127
- _0: "ref-1"
128
- },
129
- {
130
- TAG: "Ok",
131
- _0: "ref-2"
132
- },
133
- {
134
- TAG: "Ok",
135
- _0: "ref-3"
136
- }
137
- ]);
138
- globalThis.expect(AggregateFixtures$ReventlessCore.mock.getAll().length).toBe(0);
139
- globalThis.expect(capturedRejections.contents.length).toBe(3);
140
- capturedRejections.contents.forEach(param => {
141
- globalThis.expect(param[1].errorCode).toEqual("NotFound");
142
- });
143
- globalThis.expect(capturedAccepts.contents.length).toBe(0);
144
- });
145
- });
146
- globalThis.describe("payload-less variant errors", () => {
147
- globalThis.test("errorDetail is empty string for unit-payload variants", async () => {
148
- installChannels();
149
- await Effect.runPromise(AggregateFixtures$ReventlessCore.TestHandler.handleCommands(Stream.fromIterable([AggregateFixtures$ReventlessCore.makeTopicItem(undefined, "ref-1", {
150
- TAG: "Rename",
151
- newName: "X"
152
- })])));
153
- uninstallChannels();
154
- let match = capturedRejections.contents[0];
155
- globalThis.expect(match[1].errorDetail).toEqual("");
156
- });
157
- });
158
- });
159
-
160
- export {
161
- capturedRejections,
162
- capturedAccepts,
163
- installChannels,
164
- uninstallChannels,
165
- }
166
- /* Not a pure module */