@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.
- package/CHANGELOG.md +14 -0
- package/package.json +14 -14
- package/src/components/ExtensionPoint/ExtensionPoint_Builder.res +5 -2
- package/src/components/ExtensionPoint/ExtensionPoint_Builder.res.mjs +3 -3
- package/src/components/Heartbeat/Heartbeat.res +2 -2
- package/src/components/Heartbeat/Heartbeat_Builder.res +2 -2
- package/src/components/Heartbeat/Heartbeat_Builder.res.mjs +2 -4
- package/src/components/Task/Task_Builder.res +6 -4
- package/src/components/Task/Task_Builder.res.mjs +4 -4
- package/src/plugin/component/Plugin_Builder.res +5 -1
- package/src/plugin/component/Plugin_Builder.res.mjs +1 -1
- package/src/plugin/component/Plugin_Helpers.res +6 -1
- package/src/plugin/connect/PluginExtensionPoint_Builder.res +2 -0
- package/src/plugin/connect/PluginExtensionPoint_Builder.res.mjs +3 -3
- package/src/plugin/connect/PluginExtensionPoint_Plugin.res +12 -5
- package/src/plugin/connect/PluginExtensionPoint_Plugin.res.mjs +8 -2
- package/tests/plugin/HeartbeatDisconnectGraceTest.res +98 -0
- package/tests/IdentityTest.res.mjs +0 -174
- package/tests/adapter/MonitoringTest.res.mjs +0 -82
- package/tests/admin/Platform_ComponentDefinitionsApiTest.res.mjs +0 -356
- package/tests/admin/Platform_UIFragmentsApiTest.res.mjs +0 -101
- package/tests/aggregate/AggregateCacheTest.res.mjs +0 -433
- package/tests/aggregate/AggregateCallbackTest.res.mjs +0 -143
- package/tests/aggregate/AggregateCausationTest.res.mjs +0 -47
- package/tests/aggregate/AggregateConflictTest.res.mjs +0 -386
- package/tests/aggregate/AggregateFixtures.res.mjs +0 -308
- package/tests/aggregate/AggregateRejectionTest.res.mjs +0 -166
- package/tests/aggregate/AggregateSnapshotTest.res.mjs +0 -645
- package/tests/api/ApiNoApiTest.res.mjs +0 -90
- package/tests/api/GraphQL_StitcherTest.res.mjs +0 -112
- package/tests/api/SimpleTest.res.mjs +0 -10
- package/tests/api/SuryToJsonSchemaTest.res.mjs +0 -674
- package/tests/commandgenerator/CommandGeneratorCallbackTest.res.mjs +0 -160
- package/tests/commandgenerator/CommandGeneratorFixtures.res.mjs +0 -197
- package/tests/commandtopic/CommandTopicCallbackFixtures.res.mjs +0 -152
- package/tests/commandtopic/CommandTopicCallbackTest.res.mjs +0 -106
- package/tests/commandtopic/CommandTopicHelpersRejectionTest.res.mjs +0 -109
- package/tests/counter/CounterCallbackTest.res.mjs +0 -140
- package/tests/counter/CounterFixtures.res.mjs +0 -67
- package/tests/dcb/DcbDecodeTest.res.mjs +0 -194
- package/tests/dcb/DcbEventLogOperationsTest.res.mjs +0 -268
- package/tests/dcb/DcbFixtures.res.mjs +0 -534
- package/tests/dcb/DcbScopeInferenceTest.res.mjs +0 -480
- package/tests/dcb/DcbStateChangeSliceTest.res.mjs +0 -540
- package/tests/dcb/DcbTagTest.res.mjs +0 -867
- package/tests/dcb/DcbValidationTest.res.mjs +0 -476
- package/tests/eventlog/EventLogFixtures.res.mjs +0 -196
- package/tests/eventlog/EventLogOperationsTest.res.mjs +0 -192
- package/tests/eventlog/EventLogRetryTest.res.mjs +0 -195
- package/tests/eventmapper/EventMapperCallbackTest.res.mjs +0 -141
- package/tests/eventmapper/EventMapperFixtures.res.mjs +0 -440
- package/tests/eventmapper/EventMapperTest.res.mjs +0 -83
- package/tests/eventtopic/EventTopicFixtures.res.mjs +0 -65
- package/tests/eventtopic/EventTopicOperationsTest.res.mjs +0 -71
- package/tests/extensionpoint/ExtensionPointCallbackTest.res.mjs +0 -94
- package/tests/extensionpoint/ExtensionPointFixtures.res.mjs +0 -205
- package/tests/extensionpoint/ExtensionPointOperationsTest.res.mjs +0 -304
- package/tests/ftp/FTPTest.res.mjs +0 -88
- package/tests/logger/LogFormatTest.res.mjs +0 -309
- package/tests/logger/LoggerLazyTest.res.mjs +0 -40
- package/tests/message/MessageTest.res.mjs +0 -218
- package/tests/message/MetaEnvelopeTest.res.mjs +0 -188
- package/tests/plugin/ManifestVisibilityTest.res.mjs +0 -215
- package/tests/plugin/PluginSpecExperiment.res.mjs +0 -31
- package/tests/plugin/PluginStructureTest.res.mjs +0 -419
- package/tests/plugin/PluginVersionTest.res.mjs +0 -30
- package/tests/plugin/SchemaWalkerTest.res.mjs +0 -160
- package/tests/plugin/StateChangeSlice/PsPlaceOrder.res.mjs +0 -62
- package/tests/plugin/StateChangeSlice/PsShipOrder.res.mjs +0 -69
- package/tests/plugin/StateViewSlice/PsAnnotatedView.res.mjs +0 -95
- package/tests/plugin/StateViewSlice/PsAvailableProductsView.res.mjs +0 -69
- package/tests/plugin/StateViewSlice/PsCustomersView.res.mjs +0 -69
- package/tests/plugin/StateViewSlice/PsOrdersView.res.mjs +0 -81
- package/tests/poc/StructuralSubtypingPoc.res.mjs +0 -61
- package/tests/projection/ProjectionOptimizeTest.res.mjs +0 -75
- package/tests/querydb/QueryDbFixtures.res.mjs +0 -135
- package/tests/querydb/QueryDbOperationsTest.res.mjs +0 -168
- package/tests/sideeffecthandler/SideEffectHandlerCallbackTest.res.mjs +0 -77
- package/tests/sideeffecthandler/SideEffectHandlerFixtures.res.mjs +0 -139
- package/tests/util/CommandPublisherTest.res.mjs +0 -78
- package/tests/util/CsvStreamTest.res.mjs +0 -51
- package/tests/util/LruTest.res.mjs +0 -105
- package/tests/util/MetricsTest.res.mjs +0 -53
|
@@ -1,268 +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_JSON from "@rescript/runtime/lib/es6/Stdlib_JSON.js";
|
|
5
|
-
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
6
|
-
import * as Stdlib_Result from "@rescript/runtime/lib/es6/Stdlib_Result.js";
|
|
7
|
-
import * as DcbTag$Reventless from "@reventlessdev/reventless-spec/src/components/DcbTag.res.mjs";
|
|
8
|
-
import * as Message$ReventlessCore from "../../src/Message.res.mjs";
|
|
9
|
-
import * as DcbFixtures$ReventlessCore from "./DcbFixtures.res.mjs";
|
|
10
|
-
import * as DcbEventLog_Operations$ReventlessCore from "../../src/components/DcbEventLog/DcbEventLog_Operations.res.mjs";
|
|
11
|
-
|
|
12
|
-
let mock = DcbFixtures$ReventlessCore.makeMockStorage();
|
|
13
|
-
|
|
14
|
-
let storage = mock.operations;
|
|
15
|
-
|
|
16
|
-
let publishJson = mock.mockPublishJson;
|
|
17
|
-
|
|
18
|
-
let TestOps = {
|
|
19
|
-
name: "TestDcbEventLog",
|
|
20
|
-
serviceName: "TestDcbEventLog",
|
|
21
|
-
storage: storage,
|
|
22
|
-
publishJson: publishJson
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
let Ops = DcbEventLog_Operations$ReventlessCore.Make(TestOps);
|
|
26
|
-
|
|
27
|
-
let storage$1 = mock.operations;
|
|
28
|
-
|
|
29
|
-
let publishJson$1 = mock.mockPublishJson;
|
|
30
|
-
|
|
31
|
-
let TestOpsAlt = {
|
|
32
|
-
name: "Catalog",
|
|
33
|
-
serviceName: "CatalogDcbEventLog",
|
|
34
|
-
storage: storage$1,
|
|
35
|
-
publishJson: publishJson$1
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
let OpsAlt = DcbEventLog_Operations$ReventlessCore.Make(TestOpsAlt);
|
|
39
|
-
|
|
40
|
-
globalThis.beforeEach(() => mock.reset());
|
|
41
|
-
|
|
42
|
-
function encodeEvent(event) {
|
|
43
|
-
let json = S.reverseConvertToJsonOrThrow(event, DcbFixtures$ReventlessCore.TestEventLogSpec.eventSchema);
|
|
44
|
-
let match = Message$ReventlessCore.splitMessage(json);
|
|
45
|
-
let tags = DcbTag$Reventless.extractTags(DcbFixtures$ReventlessCore.TestEventLogSpec.eventSchema, event);
|
|
46
|
-
let meta = Message$ReventlessCore.generateMeta("test", undefined, undefined, undefined, undefined, undefined, undefined, undefined);
|
|
47
|
-
return {
|
|
48
|
-
eventType: match[0],
|
|
49
|
-
data: match[1],
|
|
50
|
-
tags: tags,
|
|
51
|
-
meta: meta
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function decodeEvent(raw) {
|
|
56
|
-
let json = Message$ReventlessCore.combineMessage(raw.eventType, Stdlib_Option.getOr(Stdlib_JSON.Decode.object(raw.data), {}));
|
|
57
|
-
return S.parseJsonOrThrow(json, DcbFixtures$ReventlessCore.TestEventLogSpec.eventSchema);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
globalThis.describe("DcbEventLog_Operations:", () => {
|
|
61
|
-
globalThis.describe("round-trip (append then read)", () => {
|
|
62
|
-
globalThis.test("ItemCreated preserves through round-trip", async () => {
|
|
63
|
-
let event = {
|
|
64
|
-
TAG: "ItemCreated",
|
|
65
|
-
itemId: "item-1",
|
|
66
|
-
name: "Test"
|
|
67
|
-
};
|
|
68
|
-
let rawEvent = encodeEvent(event);
|
|
69
|
-
await Ops.append([rawEvent], undefined);
|
|
70
|
-
let result = await Ops.read([{}], undefined);
|
|
71
|
-
globalThis.expect([
|
|
72
|
-
result.events.length,
|
|
73
|
-
Stdlib_Option.map(result.events[0], decodeEvent)
|
|
74
|
-
]).toEqual([
|
|
75
|
-
1,
|
|
76
|
-
event
|
|
77
|
-
]);
|
|
78
|
-
});
|
|
79
|
-
globalThis.test("CountUpdated with int tag preserves through round-trip", async () => {
|
|
80
|
-
let event = {
|
|
81
|
-
TAG: "CountUpdated",
|
|
82
|
-
category: "electronics",
|
|
83
|
-
amount: 42
|
|
84
|
-
};
|
|
85
|
-
let rawEvent = encodeEvent(event);
|
|
86
|
-
await Ops.append([rawEvent], undefined);
|
|
87
|
-
let result = await Ops.read([{}], undefined);
|
|
88
|
-
globalThis.expect(Stdlib_Option.map(result.events[0], decodeEvent)).toEqual(event);
|
|
89
|
-
});
|
|
90
|
-
globalThis.test("multiple events in single append all read back", async () => {
|
|
91
|
-
let events = [
|
|
92
|
-
{
|
|
93
|
-
TAG: "ItemCreated",
|
|
94
|
-
itemId: "item-1",
|
|
95
|
-
name: "First"
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
TAG: "ItemRenamed",
|
|
99
|
-
itemId: "item-1",
|
|
100
|
-
newName: "Second"
|
|
101
|
-
}
|
|
102
|
-
];
|
|
103
|
-
let rawEvents = events.map(encodeEvent);
|
|
104
|
-
await Ops.append(rawEvents, undefined);
|
|
105
|
-
let result = await Ops.read([{}], undefined);
|
|
106
|
-
globalThis.expect([
|
|
107
|
-
result.events.length,
|
|
108
|
-
result.events.map(decodeEvent)
|
|
109
|
-
]).toEqual([
|
|
110
|
-
2,
|
|
111
|
-
events
|
|
112
|
-
]);
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
globalThis.describe("append", () => {
|
|
116
|
-
globalThis.test("stores events and publishes to event topic", async () => {
|
|
117
|
-
let result = await Ops.append([encodeEvent({
|
|
118
|
-
TAG: "ItemCreated",
|
|
119
|
-
itemId: "item-1",
|
|
120
|
-
name: "Test"
|
|
121
|
-
})], undefined);
|
|
122
|
-
globalThis.expect([
|
|
123
|
-
Stdlib_Result.isOk(result),
|
|
124
|
-
mock.getEvents().length,
|
|
125
|
-
mock.publishedEvents.contents.length
|
|
126
|
-
]).toEqual([
|
|
127
|
-
true,
|
|
128
|
-
1,
|
|
129
|
-
1
|
|
130
|
-
]);
|
|
131
|
-
});
|
|
132
|
-
globalThis.test("published events have correct service name", async () => {
|
|
133
|
-
await Ops.append([encodeEvent({
|
|
134
|
-
TAG: "ItemCreated",
|
|
135
|
-
itemId: "item-1",
|
|
136
|
-
name: "Test"
|
|
137
|
-
})], undefined);
|
|
138
|
-
globalThis.expect(Stdlib_Option.map(mock.publishedEvents.contents[0], pe => pe.service)).toEqual("TestDcbEventLog");
|
|
139
|
-
});
|
|
140
|
-
globalThis.test("service comes from Ops.serviceName, not Ops.name", async () => {
|
|
141
|
-
await OpsAlt.append([encodeEvent({
|
|
142
|
-
TAG: "ItemCreated",
|
|
143
|
-
itemId: "item-1",
|
|
144
|
-
name: "Test"
|
|
145
|
-
})], undefined);
|
|
146
|
-
globalThis.expect(Stdlib_Option.map(mock.publishedEvents.contents[0], pe => pe.service)).toEqual("CatalogDcbEventLog");
|
|
147
|
-
});
|
|
148
|
-
globalThis.test("error from storage does not publish to event topic", async () => {
|
|
149
|
-
mock.failNextAppends.contents = 1;
|
|
150
|
-
let result = await Ops.append([encodeEvent({
|
|
151
|
-
TAG: "ItemCreated",
|
|
152
|
-
itemId: "item-1",
|
|
153
|
-
name: "Test"
|
|
154
|
-
})], undefined);
|
|
155
|
-
globalThis.expect([
|
|
156
|
-
Stdlib_Result.isError(result),
|
|
157
|
-
mock.publishedEvents.contents.length
|
|
158
|
-
]).toEqual([
|
|
159
|
-
true,
|
|
160
|
-
0
|
|
161
|
-
]);
|
|
162
|
-
});
|
|
163
|
-
globalThis.test("with condition (no conflict) succeeds", async () => {
|
|
164
|
-
await Ops.append([encodeEvent({
|
|
165
|
-
TAG: "ItemCreated",
|
|
166
|
-
itemId: "item-1",
|
|
167
|
-
name: "Test"
|
|
168
|
-
})], undefined);
|
|
169
|
-
let condition_query = [{
|
|
170
|
-
eventTypes: ["ItemCreated"],
|
|
171
|
-
tags: [{
|
|
172
|
-
key: "itemId",
|
|
173
|
-
value: "item-1"
|
|
174
|
-
}]
|
|
175
|
-
}];
|
|
176
|
-
let condition_after = "1";
|
|
177
|
-
let condition = {
|
|
178
|
-
query: condition_query,
|
|
179
|
-
after: condition_after
|
|
180
|
-
};
|
|
181
|
-
let result = await Ops.append([encodeEvent({
|
|
182
|
-
TAG: "ItemRenamed",
|
|
183
|
-
itemId: "item-1",
|
|
184
|
-
newName: "Updated"
|
|
185
|
-
})], condition);
|
|
186
|
-
globalThis.expect(Stdlib_Result.isOk(result)).toBe(true);
|
|
187
|
-
});
|
|
188
|
-
globalThis.test("multiple events all stored and published", async () => {
|
|
189
|
-
let events = [
|
|
190
|
-
{
|
|
191
|
-
TAG: "ItemCreated",
|
|
192
|
-
itemId: "item-1",
|
|
193
|
-
name: "First"
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
TAG: "ItemCreated",
|
|
197
|
-
itemId: "item-2",
|
|
198
|
-
name: "Second"
|
|
199
|
-
}
|
|
200
|
-
];
|
|
201
|
-
await Ops.append(events.map(encodeEvent), undefined);
|
|
202
|
-
globalThis.expect([
|
|
203
|
-
mock.getEvents().length,
|
|
204
|
-
mock.publishedEvents.contents.length
|
|
205
|
-
]).toEqual([
|
|
206
|
-
2,
|
|
207
|
-
2
|
|
208
|
-
]);
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
globalThis.describe("read", () => {
|
|
212
|
-
globalThis.test("returns headPosition from storage", async () => {
|
|
213
|
-
await Ops.append([encodeEvent({
|
|
214
|
-
TAG: "ItemCreated",
|
|
215
|
-
itemId: "item-1",
|
|
216
|
-
name: "Test"
|
|
217
|
-
})], undefined);
|
|
218
|
-
let result = await Ops.read([{}], undefined);
|
|
219
|
-
globalThis.expect(result.headPosition).toEqual("1");
|
|
220
|
-
});
|
|
221
|
-
globalThis.test("with ~after parameter filters out earlier events", async () => {
|
|
222
|
-
await Ops.append([encodeEvent({
|
|
223
|
-
TAG: "ItemCreated",
|
|
224
|
-
itemId: "item-1",
|
|
225
|
-
name: "First"
|
|
226
|
-
})], undefined);
|
|
227
|
-
await Ops.append([encodeEvent({
|
|
228
|
-
TAG: "ItemRenamed",
|
|
229
|
-
itemId: "item-1",
|
|
230
|
-
newName: "Second"
|
|
231
|
-
})], undefined);
|
|
232
|
-
let result = await Ops.read([{}], "1");
|
|
233
|
-
globalThis.expect([
|
|
234
|
-
result.events.length,
|
|
235
|
-
Stdlib_Option.map(result.events[0], decodeEvent)
|
|
236
|
-
]).toEqual([
|
|
237
|
-
1,
|
|
238
|
-
{
|
|
239
|
-
TAG: "ItemRenamed",
|
|
240
|
-
itemId: "item-1",
|
|
241
|
-
newName: "Second"
|
|
242
|
-
}
|
|
243
|
-
]);
|
|
244
|
-
});
|
|
245
|
-
globalThis.test("no matching events returns empty array", async () => {
|
|
246
|
-
await Ops.append([encodeEvent({
|
|
247
|
-
TAG: "ItemCreated",
|
|
248
|
-
itemId: "item-1",
|
|
249
|
-
name: "Test"
|
|
250
|
-
})], undefined);
|
|
251
|
-
let result = await Ops.read([{
|
|
252
|
-
eventTypes: ["NonExistent"]
|
|
253
|
-
}], undefined);
|
|
254
|
-
globalThis.expect(result.events.length).toEqual(0);
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
export {
|
|
260
|
-
mock,
|
|
261
|
-
TestOps,
|
|
262
|
-
Ops,
|
|
263
|
-
TestOpsAlt,
|
|
264
|
-
OpsAlt,
|
|
265
|
-
encodeEvent,
|
|
266
|
-
decodeEvent,
|
|
267
|
-
}
|
|
268
|
-
/* mock Not a pure module */
|