@reventlessdev/reventless-local 3.0.0-alpha.318 → 3.0.0-alpha.320

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 (59) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/package.json +11 -11
  3. package/src/LocalPlatformRegistry.res +7 -1
  4. package/src/LocalPlatformRegistry.res.mjs +7 -5
  5. package/src/Platform.res +16 -0
  6. package/src/Platform.res.mjs +16 -2
  7. package/src/adapter/Api/LocalEvents_Server.res +34 -3
  8. package/src/adapter/Api/LocalEvents_Server.res.mjs +31 -3
  9. package/src/adapter/CommandOutcomeLog/CommandOutcomeLogEntry.res +24 -0
  10. package/src/adapter/CommandOutcomeLog/CommandOutcomeLogEntry.res.mjs +28 -0
  11. package/src/adapter/CommandOutcomeLog/CommandOutcomeLogStorage_InMemory.res +26 -0
  12. package/src/adapter/CommandOutcomeLog/CommandOutcomeLogStorage_InMemory.res.mjs +35 -0
  13. package/src/adapter/CommandOutcomeLog/CommandOutcomeLogStorage_Sqlite.res +61 -0
  14. package/src/adapter/CommandOutcomeLog/CommandOutcomeLogStorage_Sqlite.res.mjs +75 -0
  15. package/src/adapter/CommandOutcomeLog/LocalCommandOutcomeLog.res +88 -0
  16. package/src/adapter/CommandOutcomeLog/LocalCommandOutcomeLog.res.mjs +112 -0
  17. package/src/adapter/DomainGraphQL_Server.res +2 -1
  18. package/src/adapter/DomainGraphQL_Server.res.mjs +3 -1
  19. package/src/adapter/LocalFeed.res +16 -2
  20. package/src/adapter/LocalFeed.res.mjs +19 -2
  21. package/src/adapter/LocalIdleExit.res +71 -0
  22. package/src/adapter/LocalIdleExit.res.mjs +96 -0
  23. package/src/adapter/LocalMetrics.res +29 -0
  24. package/src/adapter/LocalMetrics.res.mjs +61 -0
  25. package/src/adapter/LocalPlatformObserve.res +129 -5
  26. package/src/adapter/LocalPlatformObserve.res.mjs +144 -2
  27. package/src/adapter/LocalRequestLog.res +62 -0
  28. package/src/adapter/LocalRequestLog.res.mjs +80 -0
  29. package/src/adapter/LocalTapLines.res +2 -0
  30. package/src/adapter/LocalTapLines.res.mjs +4 -1
  31. package/src/adapter/ProjectionCheckpoint.res.mjs +3 -3
  32. package/src/adapter/QueryDb/QueryDbResolvers_GraphQL.res +11 -3
  33. package/src/adapter/QueryDb/QueryDbResolvers_GraphQL.res.mjs +10 -3
  34. package/src/adapter/ViewChangeLog/LocalViewChangeLog.res +95 -0
  35. package/src/adapter/ViewChangeLog/LocalViewChangeLog.res.mjs +116 -0
  36. package/src/adapter/ViewChangeLog/ViewChangeLogEntry.res +33 -0
  37. package/src/adapter/ViewChangeLog/ViewChangeLogEntry.res.mjs +30 -0
  38. package/src/adapter/ViewChangeLog/ViewChangeLogStorage_InMemory.res +28 -0
  39. package/src/adapter/ViewChangeLog/ViewChangeLogStorage_InMemory.res.mjs +40 -0
  40. package/src/adapter/ViewChangeLog/ViewChangeLogStorage_Sqlite.res +76 -0
  41. package/src/adapter/ViewChangeLog/ViewChangeLogStorage_Sqlite.res.mjs +88 -0
  42. package/src/components/AutomationSlice_Builder.res.mjs +1 -1
  43. package/src/components/LocalAutomationSchedules.res.mjs +1 -1
  44. package/src/components/LocalAutomationSweep.res.mjs +1 -1
  45. package/tests/LocalPlatformRegistryTest.res +17 -0
  46. package/tests/LocalPlatformRegistryTest.res.mjs +14 -2
  47. package/tests/LocalPlatformStartTest.res.mjs +1 -1
  48. package/tests/adapter/GraphQL_SchemaInspectorTest.res +3 -2
  49. package/tests/adapter/GraphQL_SchemaInspectorTest.res.mjs +1 -1
  50. package/tests/adapter/LocalEvents_ServerTest.res +11 -0
  51. package/tests/adapter/LocalEvents_ServerTest.res.mjs +7 -1
  52. package/tests/adapter/LocalIdleExitTest.res +57 -0
  53. package/tests/adapter/LocalIdleExitTest.res.mjs +62 -0
  54. package/tests/adapter/LocalPlatformObserveTest.res +183 -0
  55. package/tests/adapter/LocalPlatformObserveTest.res.mjs +181 -0
  56. package/tests/adapter/LocalRequestLogTest.res +46 -0
  57. package/tests/adapter/LocalRequestLogTest.res.mjs +61 -0
  58. package/tests/adapter/LocalTapLinesTest.res +25 -0
  59. package/tests/adapter/LocalTapLinesTest.res.mjs +35 -3
@@ -180,3 +180,28 @@ describe("LocalTapLines", () => {
180
180
  await disconnect(tap)
181
181
  })
182
182
  })
183
+
184
+ describe("the outcome line names its cause", () => {
185
+ testSync("a command an automation sent says which event it acted on", () => {
186
+ let line = LocalTapLines.outcomeLine({
187
+ component: "Notice",
188
+ reference: "cmd-2",
189
+ correlationId: "flow-1",
190
+ causationId: "evt-7",
191
+ outcome: OutcomeAccepted({entityId: Some("n-1"), eventCount: 1}),
192
+ })
193
+ let d = line->JSON.parseOrThrow->JSON.Decode.object->Option.getOrThrow
194
+ expect(d->Dict.get("causationId"))->toEqual(Some(JSON.String("evt-7")))
195
+ expect(d->Dict.get("msgId"))->toEqual(Some(JSON.String("cmd-2")))
196
+ })
197
+
198
+ testSync("a command sent from outside has none", () => {
199
+ let line = LocalTapLines.outcomeLine({
200
+ component: "Order",
201
+ reference: "cmd-1",
202
+ outcome: OutcomeAccepted({entityId: None, eventCount: 1}),
203
+ })
204
+ let d = line->JSON.parseOrThrow->JSON.Decode.object->Option.getOrThrow
205
+ expect(d->Dict.get("causationId"))->toEqual(None)
206
+ })
207
+ })
@@ -93,11 +93,11 @@ async function disconnect(tap) {
93
93
  globalThis.describe("LocalTapLines", () => {
94
94
  globalThis.test("an accepted and a rejected command each appear once on the tap", async () => {
95
95
  let tap = await connectTap();
96
- CommandTopic_Helpers$ReventlessCore.reportAccepted("Order", "flow-1", "m-1", {
96
+ CommandTopic_Helpers$ReventlessCore.reportAccepted("Order", "flow-1", undefined, "m-1", {
97
97
  entityId: "o-1",
98
98
  eventCount: 2
99
99
  });
100
- CommandTopic_Helpers$ReventlessCore.reportRejected("Order", "DomainRejection", "flow-1", "m-2", {
100
+ CommandTopic_Helpers$ReventlessCore.reportRejected("Order", "DomainRejection", "flow-1", undefined, "m-2", {
101
101
  errorCode: "AlreadyExists",
102
102
  errorDetail: `{"name":"Widget"}`
103
103
  });
@@ -181,7 +181,7 @@ globalThis.describe("LocalTapLines", () => {
181
181
  });
182
182
  globalThis.test("an infrastructure failure is kept as an error", async () => {
183
183
  let tap = await connectTap();
184
- CommandTopic_Helpers$ReventlessCore.reportRejected("Order", "InfrastructureFailure", undefined, "m-3", {
184
+ CommandTopic_Helpers$ReventlessCore.reportRejected("Order", "InfrastructureFailure", undefined, undefined, "m-3", {
185
185
  errorCode: "AppendFailed",
186
186
  errorDetail: "store down"
187
187
  });
@@ -224,6 +224,38 @@ globalThis.describe("LocalTapLines", () => {
224
224
  });
225
225
  });
226
226
 
227
+ globalThis.describe("the outcome line names its cause", () => {
228
+ globalThis.test("a command an automation sent says which event it acted on", () => {
229
+ let line = LocalTapLines$ReventlessLocal.outcomeLine({
230
+ component: "Notice",
231
+ reference: "cmd-2",
232
+ correlationId: "flow-1",
233
+ causationId: "evt-7",
234
+ outcome: {
235
+ TAG: "OutcomeAccepted",
236
+ entityId: "n-1",
237
+ eventCount: 1
238
+ }
239
+ });
240
+ let d = Stdlib_Option.getOrThrow(Stdlib_JSON.Decode.object(JSON.parse(line)), undefined);
241
+ globalThis.expect(d["causationId"]).toEqual("evt-7");
242
+ globalThis.expect(d["msgId"]).toEqual("cmd-2");
243
+ });
244
+ globalThis.test("a command sent from outside has none", () => {
245
+ let line = LocalTapLines$ReventlessLocal.outcomeLine({
246
+ component: "Order",
247
+ reference: "cmd-1",
248
+ outcome: {
249
+ TAG: "OutcomeAccepted",
250
+ entityId: undefined,
251
+ eventCount: 1
252
+ }
253
+ });
254
+ let d = Stdlib_Option.getOrThrow(Stdlib_JSON.Decode.object(JSON.parse(line)), undefined);
255
+ globalThis.expect(d["causationId"]).toEqual(undefined);
256
+ });
257
+ });
258
+
227
259
  let Outcome;
228
260
 
229
261
  let ViewChange;