@reventlessdev/reventless-core 3.0.0-alpha.173 → 3.0.0-alpha.175
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 +18 -0
- package/package.json +5 -5
- package/src/ComponentType.res +8 -1
- package/src/ComponentType.res.mjs +6 -0
- package/src/RequestContext.res +45 -1
- package/src/RequestContext.res.mjs +12 -2
- package/src/ResourceAttribution.res +133 -0
- package/src/ResourceAttribution.res.mjs +96 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_Common.res +24 -5
- package/src/adapter/Runtime/AggregateRuntime_Builder_Common.res.mjs +9 -3
- package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res +6 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res.mjs +3 -3
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res +6 -1
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res.mjs +3 -1
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res +25 -7
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs +11 -8
- package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res +2 -0
- package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res.mjs +1 -1
- package/src/adapter/Runtime/PluginRuntime_Builder_Micro.res +4 -0
- package/src/adapter/Runtime/PluginRuntime_Builder_Micro.res.mjs +2 -2
- package/src/adapter/Runtime/PluginRuntime_Builder_Single.res +4 -0
- package/src/adapter/Runtime/PluginRuntime_Builder_Single.res.mjs +2 -2
- package/src/adapter/Runtime/Runtime.res +77 -13
- package/src/adapter/Runtime/Runtime.res.mjs +24 -8
- package/src/admin/Platform_Admin.res +1 -1
- package/src/admin/Platform_Admin.res.mjs +8 -2
- package/src/components/Aggregate/Aggregate_Builder.res +10 -2
- package/src/components/Aggregate/Aggregate_Builder.res.mjs +8 -2
- package/src/components/AutomationSlice/AutomationSlice_Builder.res +12 -2
- package/src/components/AutomationSlice/AutomationSlice_Builder.res.mjs +8 -2
- package/src/components/CommandTopic/CommandTopic.res +5 -1
- package/src/components/CommandTopic/CommandTopic_Adapter.res +1 -0
- package/src/components/CommandTopic/CommandTopic_Builder.res +4 -4
- package/src/components/CommandTopic/CommandTopic_Builder.res.mjs +29 -30
- package/src/components/Counter/Counter_Builder.res +7 -1
- package/src/components/Counter/Counter_Builder.res.mjs +5 -2
- package/src/components/Dcb/Dcb_Builder.res +2 -2
- package/src/components/Dcb/Dcb_Builder.res.mjs +8 -2
- package/src/components/DcbEventLog/DcbEventLog_Builder.res +3 -0
- package/src/components/DcbEventLog/DcbEventLog_Builder.res.mjs +4 -1
- package/src/components/EventCollector/EventCollector.res +1 -0
- package/src/components/EventCollector/EventCollector_Adapter.res +1 -0
- package/src/components/EventCollector/EventCollector_Builder.res +4 -4
- package/src/components/EventCollector/EventCollector_Builder.res.mjs +2 -2
- package/src/components/EventLog/EventLog.res +5 -1
- package/src/components/EventLog/EventLog_Adapter.res +5 -1
- package/src/components/EventLog/EventLog_Builder.res +9 -4
- package/src/components/EventLog/EventLog_Builder.res.mjs +7 -8
- package/src/components/EventMapper/EventMapper_Builder.res +6 -1
- package/src/components/EventMapper/EventMapper_Builder.res.mjs +4 -1
- package/src/components/EventTopic/EventTopic.res +1 -0
- package/src/components/EventTopic/EventTopic_Adapter.res +1 -0
- package/src/components/EventTopic/EventTopic_Builder.res +4 -3
- package/src/components/EventTopic/EventTopic_Builder.res.mjs +2 -2
- package/src/components/ExtensionPoint/ExtensionPoint_Builder.res +11 -2
- package/src/components/ExtensionPoint/ExtensionPoint_Builder.res.mjs +8 -2
- package/src/components/InboundTranslationSlice/InboundTranslationSlice_Builder.res +6 -1
- package/src/components/InboundTranslationSlice/InboundTranslationSlice_Builder.res.mjs +4 -1
- package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Builder.res +12 -2
- package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Builder.res.mjs +8 -2
- package/src/components/QueryDb/QueryDb.res +1 -0
- package/src/components/QueryDb/QueryDb_Adapter.res +1 -0
- package/src/components/QueryDb/QueryDb_Builder.res +4 -3
- package/src/components/QueryDb/QueryDb_Builder.res.mjs +2 -2
- package/src/components/ReadModel/ReadModel_Builder.res +12 -2
- package/src/components/ReadModel/ReadModel_Builder.res.mjs +8 -2
- package/src/components/SideEffectHandler/SideEffectHandler_Builder.res +6 -1
- package/src/components/SideEffectHandler/SideEffectHandler_Builder.res.mjs +4 -1
- package/src/components/StateViewSlice/StateViewSlice_Builder.res +12 -2
- package/src/components/StateViewSlice/StateViewSlice_Builder.res.mjs +8 -2
- package/src/plugin/component/Plugin_Builder.res +6 -0
- package/src/plugin/component/Plugin_Builder.res.mjs +3 -0
- package/src/plugin/component/Plugin_Helpers.res +1 -1
- package/src/plugin/component/Plugin_Helpers.res.mjs +4 -1
- package/tests/ResourceAttributionTest.res +70 -0
- package/tests/aggregate/AggregateCacheTest.res +1 -1
- package/tests/aggregate/AggregateConflictTest.res +1 -1
- package/tests/aggregate/AggregateFixtures.res +1 -1
- package/tests/aggregate/AggregateSnapshotTest.res +1 -1
- package/tests/eventlog/EventLogFixtures.res +1 -1
- package/tests/logger/LogFormatTest.res +43 -0
|
@@ -57,35 +57,6 @@ function Make(Spec) {
|
|
|
57
57
|
return allResults;
|
|
58
58
|
});
|
|
59
59
|
})), prim => prim.flat());
|
|
60
|
-
let construct = (self, name) => {
|
|
61
|
-
let opts_parent = Component$ReventlessCore.toPulumiResource(self);
|
|
62
|
-
let opts = {
|
|
63
|
-
parent: opts_parent
|
|
64
|
-
};
|
|
65
|
-
let name$1 = ComponentType$ReventlessCore.name(name, CommandTopic$ReventlessCore.componentType);
|
|
66
|
-
let channel = Channel.make(name$1, opts);
|
|
67
|
-
self.channel = channel;
|
|
68
|
-
Component$ReventlessCore.setOperations(self, Pulumi.all([
|
|
69
|
-
channel.publishJsons,
|
|
70
|
-
channel.publishJsonsStream,
|
|
71
|
-
channel.publishJsonsAndWait
|
|
72
|
-
]).apply(param => {
|
|
73
|
-
let Ops = {
|
|
74
|
-
publishJsons: param[0]
|
|
75
|
-
};
|
|
76
|
-
let Operations = CommandTopic_Operations$ReventlessCore.Make(Spec)(Ops);
|
|
77
|
-
return {
|
|
78
|
-
publish: Operations.publish,
|
|
79
|
-
publishJsons: Operations.publishJsons,
|
|
80
|
-
publishJsonsStream: param[1],
|
|
81
|
-
publishJsonsAndWait: param[2]
|
|
82
|
-
};
|
|
83
|
-
}));
|
|
84
|
-
let outputs = {
|
|
85
|
-
resources: channel.resources
|
|
86
|
-
};
|
|
87
|
-
return Component$ReventlessCore.setOutputs(self, outputs);
|
|
88
|
-
};
|
|
89
60
|
let connect = (runtime, resources, commandTopic) => {
|
|
90
61
|
let commandTopicResource = Component$ReventlessCore.toPulumiResource(commandTopic);
|
|
91
62
|
let name = ComponentType$ReventlessCore.name(Stdlib_Option.getOr(commandTopicResource.__name, "Unnamed"), CommandTopic$ReventlessCore.componentType);
|
|
@@ -109,7 +80,35 @@ function Make(Spec) {
|
|
|
109
80
|
let channel = commandTopic.channel;
|
|
110
81
|
return channel.handleChannelEvent(filteringHandler);
|
|
111
82
|
};
|
|
112
|
-
let make = (name, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(CommandTopic$ReventlessCore.componentType), name,
|
|
83
|
+
let make = (name, owner, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(CommandTopic$ReventlessCore.componentType), name, (extra, extra$1) => {
|
|
84
|
+
let opts_parent = Component$ReventlessCore.toPulumiResource(extra);
|
|
85
|
+
let opts = {
|
|
86
|
+
parent: opts_parent
|
|
87
|
+
};
|
|
88
|
+
let name = ComponentType$ReventlessCore.name(extra$1, CommandTopic$ReventlessCore.componentType);
|
|
89
|
+
let channel = Channel.make(name, owner, opts);
|
|
90
|
+
extra.channel = channel;
|
|
91
|
+
Component$ReventlessCore.setOperations(extra, Pulumi.all([
|
|
92
|
+
channel.publishJsons,
|
|
93
|
+
channel.publishJsonsStream,
|
|
94
|
+
channel.publishJsonsAndWait
|
|
95
|
+
]).apply(param => {
|
|
96
|
+
let Ops = {
|
|
97
|
+
publishJsons: param[0]
|
|
98
|
+
};
|
|
99
|
+
let Operations = CommandTopic_Operations$ReventlessCore.Make(Spec)(Ops);
|
|
100
|
+
return {
|
|
101
|
+
publish: Operations.publish,
|
|
102
|
+
publishJsons: Operations.publishJsons,
|
|
103
|
+
publishJsonsStream: param[1],
|
|
104
|
+
publishJsonsAndWait: param[2]
|
|
105
|
+
};
|
|
106
|
+
}));
|
|
107
|
+
let outputs = {
|
|
108
|
+
resources: channel.resources
|
|
109
|
+
};
|
|
110
|
+
return Component$ReventlessCore.setOutputs(extra, outputs);
|
|
111
|
+
}, opts);
|
|
113
112
|
return {
|
|
114
113
|
Spec: Spec,
|
|
115
114
|
connect: connect,
|
|
@@ -63,7 +63,13 @@ module Make = (
|
|
|
63
63
|
~ttl?,
|
|
64
64
|
~opts,
|
|
65
65
|
)
|
|
66
|
-
let countsDb = CountsDb.make(
|
|
66
|
+
let countsDb = CountsDb.make(
|
|
67
|
+
~api=Api.api(),
|
|
68
|
+
~apiRole=Api.apiRole(),
|
|
69
|
+
~ttl?,
|
|
70
|
+
~owner={kind: ComponentType.Counter, name},
|
|
71
|
+
~opts,
|
|
72
|
+
)
|
|
67
73
|
|
|
68
74
|
let handler =
|
|
69
75
|
countsDb
|
|
@@ -66,8 +66,11 @@ function Make(QueryDbStorage) {
|
|
|
66
66
|
authorization: "AllowAuthenticated",
|
|
67
67
|
visibility: "Public"
|
|
68
68
|
})(QueryDbStorage)(QueryDb_Adapter$ReventlessCore.NoResolvers(QueryDbStorage));
|
|
69
|
-
let referencesDb = ReferencesDb.make(Api.api(), Api.apiRole(), ttl$1, opts);
|
|
70
|
-
let countsDb = CountsDb.make(Api.api(), Api.apiRole(), ttl$1,
|
|
69
|
+
let referencesDb = ReferencesDb.make(Api.api(), Api.apiRole(), ttl$1, undefined, opts);
|
|
70
|
+
let countsDb = CountsDb.make(Api.api(), Api.apiRole(), ttl$1, {
|
|
71
|
+
kind: "Counter",
|
|
72
|
+
name: extra$1
|
|
73
|
+
}, opts);
|
|
71
74
|
let handler = Component$ReventlessCore.operations(countsDb).apply(param => {
|
|
72
75
|
let Callback = Counter_Callback$ReventlessCore.Make({
|
|
73
76
|
name: extra$1,
|
|
@@ -353,7 +353,7 @@ module Make = (
|
|
|
353
353
|
DcbCommandTopicSpec,
|
|
354
354
|
DcbCommandTopicChannel,
|
|
355
355
|
)
|
|
356
|
-
let dcbCommandTopic = DcbCommandTopic.make(~name=`${name}Dcb`, ~opts)
|
|
356
|
+
let dcbCommandTopic = DcbCommandTopic.make(~name=`${name}Dcb`, ~owner={kind: ComponentType.Plugin, name}, ~opts)
|
|
357
357
|
|
|
358
358
|
// Notify platform hook that DCB CommandTopic was created (AWS extracts SQS queue URL)
|
|
359
359
|
HooksConfig.hooks.onDcbCommandTopicCreated->Option.forEach(hook =>
|
|
@@ -377,7 +377,7 @@ module Make = (
|
|
|
377
377
|
DcbCommandTopicChannelAsync,
|
|
378
378
|
)
|
|
379
379
|
let asyncDcbCommandTopicOpt = if asyncSlices->Array.length > 0 {
|
|
380
|
-
let t = DcbAsyncCommandTopic.make(~name=`${name}DcbAsync`, ~opts)
|
|
380
|
+
let t = DcbAsyncCommandTopic.make(~name=`${name}DcbAsync`, ~owner={kind: ComponentType.Plugin, name}, ~opts)
|
|
381
381
|
HooksConfig.hooks.onDcbCommandTopicCreated->Option.forEach(hook => hook(t->Obj.magic))
|
|
382
382
|
Some(t)
|
|
383
383
|
} else {
|
|
@@ -190,7 +190,10 @@ function Make(DcbEventLogStorage) {
|
|
|
190
190
|
name: childName,
|
|
191
191
|
commandSchema: S.json
|
|
192
192
|
})(DcbCommandTopicChannel);
|
|
193
|
-
let dcbCommandTopic = DcbCommandTopic.make(name + `Dcb`,
|
|
193
|
+
let dcbCommandTopic = DcbCommandTopic.make(name + `Dcb`, {
|
|
194
|
+
kind: "Plugin",
|
|
195
|
+
name: name
|
|
196
|
+
}, opts);
|
|
194
197
|
Stdlib_Option.forEach(HooksConfig.hooks.onDcbCommandTopicCreated, hook => hook(dcbCommandTopic));
|
|
195
198
|
let publishJsons = Component$ReventlessCore.operations(dcbCommandTopic).apply(ops => ops.publishJsons);
|
|
196
199
|
let name$1 = childName + "Async";
|
|
@@ -201,7 +204,10 @@ function Make(DcbEventLogStorage) {
|
|
|
201
204
|
})(DcbCommandTopicChannelAsync);
|
|
202
205
|
let asyncDcbCommandTopicOpt;
|
|
203
206
|
if (asyncSlices.length !== 0) {
|
|
204
|
-
let t = DcbAsyncCommandTopic.make(name + `DcbAsync`,
|
|
207
|
+
let t = DcbAsyncCommandTopic.make(name + `DcbAsync`, {
|
|
208
|
+
kind: "Plugin",
|
|
209
|
+
name: name
|
|
210
|
+
}, opts);
|
|
205
211
|
Stdlib_Option.forEach(HooksConfig.hooks.onDcbCommandTopicCreated, hook => hook(t));
|
|
206
212
|
asyncDcbCommandTopicOpt = Primitive_option.some(t);
|
|
207
213
|
} else {
|
|
@@ -28,6 +28,9 @@ module Make = (
|
|
|
28
28
|
let eventTopic = SpecificEventTopic.make(
|
|
29
29
|
~name,
|
|
30
30
|
~storageResources=storage.resources,
|
|
31
|
+
// The DCB event log is shared across the plugin's slices, so the plugin
|
|
32
|
+
// owns it — not any one component.
|
|
33
|
+
~owner={kind: ComponentType.Plugin, name},
|
|
31
34
|
~opts=opts->Util.Pulumi.ComponentResourceOptions.ofCustomResourceOptions,
|
|
32
35
|
)
|
|
33
36
|
|
|
@@ -26,7 +26,10 @@ function Make(Storage) {
|
|
|
26
26
|
name: "DcbEventLog",
|
|
27
27
|
eventSchema: S.json
|
|
28
28
|
})(EventTopicPublisher);
|
|
29
|
-
let eventTopic = SpecificEventTopic.make(extra$1, storage.resources,
|
|
29
|
+
let eventTopic = SpecificEventTopic.make(extra$1, storage.resources, {
|
|
30
|
+
kind: "Plugin",
|
|
31
|
+
name: extra$1
|
|
32
|
+
}, Util_Pulumi$ReventlessCore.ComponentResourceOptions.ofCustomResourceOptions(opts));
|
|
30
33
|
Component$ReventlessCore.setOperations(extra, Pulumi.all([
|
|
31
34
|
storage.operations,
|
|
32
35
|
Component$ReventlessCore.operations(eventTopic)
|
|
@@ -23,6 +23,7 @@ type connect<'callbackEvent, 'context, 'channelParts, 'runtimeParts> = (
|
|
|
23
23
|
type channelMaker<'callbackEvent, 'context, 'channelParts> = (
|
|
24
24
|
~name: string,
|
|
25
25
|
~eventTopics: EventTopic.allOutputs,
|
|
26
|
+
~owner: option<ResourceAttribution.owner>,
|
|
26
27
|
~opts: Pulumi.ComponentResource.options,
|
|
27
28
|
) => channel<'callbackEvent, 'context, 'channelParts>
|
|
28
29
|
|
|
@@ -30,11 +30,11 @@ module Make = (
|
|
|
30
30
|
type callbackEvent = Channel.callbackEvent
|
|
31
31
|
type runtimeParts = RuntimeEnvironment.parts
|
|
32
32
|
|
|
33
|
-
let construct = (~eventTopics, self, name) => {
|
|
33
|
+
let construct = (~eventTopics, ~owner=?, self, name) => {
|
|
34
34
|
let opts = {Pulumi.ComponentResource.parent: self->Component.toPulumiResource}
|
|
35
35
|
let name = name->ComponentType.name(EventCollector.componentType)
|
|
36
36
|
|
|
37
|
-
let channel = Channel.make(~name, ~eventTopics, ~opts)
|
|
37
|
+
let channel = Channel.make(~name, ~eventTopics, ~owner, ~opts)
|
|
38
38
|
self->EventCollector_Adapter.setChannel(channel)
|
|
39
39
|
|
|
40
40
|
self->Component.setOperations(
|
|
@@ -81,11 +81,11 @@ module Make = (
|
|
|
81
81
|
channel.handleChannelEvent(jsonEventsHandler)
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
let make = (~name, ~eventTopics, ~opts): EventCollector.component =>
|
|
84
|
+
let make = (~name, ~eventTopics, ~owner=?, ~opts): EventCollector.component =>
|
|
85
85
|
Component.make(
|
|
86
86
|
~componentType=EventCollector.componentType->ComponentType.toString,
|
|
87
87
|
~name,
|
|
88
|
-
~construct=construct(~eventTopics, ...),
|
|
88
|
+
~construct=construct(~eventTopics, ~owner?, ...),
|
|
89
89
|
~opts=Some(opts),
|
|
90
90
|
)
|
|
91
91
|
}
|
|
@@ -31,13 +31,13 @@ function Make(RuntimeEnvironment) {
|
|
|
31
31
|
let channel = eventCollector.channel;
|
|
32
32
|
return channel.handleChannelEvent(jsonEventsHandler);
|
|
33
33
|
};
|
|
34
|
-
let make = (name, eventTopics, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(EventCollector$ReventlessCore.componentType), name, (extra, extra$1) => {
|
|
34
|
+
let make = (name, eventTopics, owner, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(EventCollector$ReventlessCore.componentType), name, (extra, extra$1) => {
|
|
35
35
|
let opts_parent = Component$ReventlessCore.toPulumiResource(extra);
|
|
36
36
|
let opts = {
|
|
37
37
|
parent: opts_parent
|
|
38
38
|
};
|
|
39
39
|
let name = ComponentType$ReventlessCore.name(extra$1, EventCollector$ReventlessCore.componentType);
|
|
40
|
-
let channel = Channel.make(name, eventTopics, opts);
|
|
40
|
+
let channel = Channel.make(name, eventTopics, owner, opts);
|
|
41
41
|
extra.channel = channel;
|
|
42
42
|
Component$ReventlessCore.setOperations(extra, channel.enqueueEvent.apply(enqueueEvent => ({
|
|
43
43
|
enqueueEvent: enqueueEvent
|
|
@@ -54,5 +54,9 @@ module type T = {
|
|
|
54
54
|
}
|
|
55
55
|
type component = component<operations>
|
|
56
56
|
|
|
57
|
-
let make: (
|
|
57
|
+
let make: (
|
|
58
|
+
~name: string,
|
|
59
|
+
~owner: ResourceAttribution.owner=?,
|
|
60
|
+
~opts: Pulumi.ComponentResource.options=?,
|
|
61
|
+
) => component
|
|
58
62
|
}
|
|
@@ -10,7 +10,11 @@ type storage = {
|
|
|
10
10
|
resources: array<ReventlessInfra.Adapter.resource>,
|
|
11
11
|
operations: Pulumi.Output.t<operations>,
|
|
12
12
|
}
|
|
13
|
-
type storageMaker = (
|
|
13
|
+
type storageMaker = (
|
|
14
|
+
~name: string,
|
|
15
|
+
~owner: option<ResourceAttribution.owner>,
|
|
16
|
+
~opts: Pulumi.CustomResourceOptions.t,
|
|
17
|
+
) => storage
|
|
14
18
|
|
|
15
19
|
module type Storage = {
|
|
16
20
|
let make: storageMaker
|
|
@@ -15,15 +15,20 @@ module Make = (
|
|
|
15
15
|
}
|
|
16
16
|
type component = Component.t<EventLog.t, EventLog.outputs, operations>
|
|
17
17
|
|
|
18
|
-
let construct = (self, name) => {
|
|
18
|
+
let construct = (~owner=?, self, name) => {
|
|
19
19
|
let opts = {Pulumi.CustomResourceOptions.parent: self->Component.toPulumiResource}
|
|
20
20
|
|
|
21
|
-
let storage = Storage.make(
|
|
21
|
+
let storage = Storage.make(
|
|
22
|
+
~name=name->ComponentType.name(EventLog.componentType),
|
|
23
|
+
~owner,
|
|
24
|
+
~opts,
|
|
25
|
+
)
|
|
22
26
|
|
|
23
27
|
module SpecificEventTopic = EventTopic_Builder.Make(Spec, EventTopicPublisher)
|
|
24
28
|
let eventTopic = SpecificEventTopic.make(
|
|
25
29
|
~name,
|
|
26
30
|
~storageResources=storage.resources,
|
|
31
|
+
~owner?,
|
|
27
32
|
~opts=opts->Util.Pulumi.ComponentResourceOptions.ofCustomResourceOptions,
|
|
28
33
|
)
|
|
29
34
|
|
|
@@ -59,11 +64,11 @@ module Make = (
|
|
|
59
64
|
self->Component.setOutputs(outputs)
|
|
60
65
|
}
|
|
61
66
|
|
|
62
|
-
let make = (~name, ~opts=?): component =>
|
|
67
|
+
let make = (~name, ~owner=?, ~opts=?): component =>
|
|
63
68
|
Component.make(
|
|
64
69
|
~componentType=EventLog.componentType->ComponentType.toString,
|
|
65
70
|
~name,
|
|
66
|
-
~construct,
|
|
71
|
+
~construct=construct(~owner?, ...),
|
|
67
72
|
~opts,
|
|
68
73
|
)
|
|
69
74
|
}
|
|
@@ -10,15 +10,15 @@ import * as EventLog_Operations$ReventlessCore from "./EventLog_Operations.res.m
|
|
|
10
10
|
|
|
11
11
|
function Make(Spec) {
|
|
12
12
|
return Storage => (EventTopicPublisher => {
|
|
13
|
-
let
|
|
14
|
-
let opts_parent = Component$ReventlessCore.toPulumiResource(
|
|
13
|
+
let make = (name, owner, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(EventLog$ReventlessCore.componentType), name, (extra, extra$1) => {
|
|
14
|
+
let opts_parent = Component$ReventlessCore.toPulumiResource(extra);
|
|
15
15
|
let opts = {
|
|
16
16
|
parent: opts_parent
|
|
17
17
|
};
|
|
18
|
-
let storage = Storage.make(ComponentType$ReventlessCore.name(
|
|
18
|
+
let storage = Storage.make(ComponentType$ReventlessCore.name(extra$1, EventLog$ReventlessCore.componentType), owner, opts);
|
|
19
19
|
let SpecificEventTopic = EventTopic_Builder$ReventlessCore.Make(Spec)(EventTopicPublisher);
|
|
20
|
-
let eventTopic = SpecificEventTopic.make(
|
|
21
|
-
Component$ReventlessCore.setOperations(
|
|
20
|
+
let eventTopic = SpecificEventTopic.make(extra$1, storage.resources, owner, Util_Pulumi$ReventlessCore.ComponentResourceOptions.ofCustomResourceOptions(opts));
|
|
21
|
+
Component$ReventlessCore.setOperations(extra, Pulumi.all([
|
|
22
22
|
storage.operations,
|
|
23
23
|
Component$ReventlessCore.operations(eventTopic)
|
|
24
24
|
]).apply(param => {
|
|
@@ -43,9 +43,8 @@ function Make(Spec) {
|
|
|
43
43
|
resources: outputs_resources,
|
|
44
44
|
eventTopic: outputs_eventTopic
|
|
45
45
|
};
|
|
46
|
-
return Component$ReventlessCore.setOutputs(
|
|
47
|
-
};
|
|
48
|
-
let make = (name, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(EventLog$ReventlessCore.componentType), name, construct, opts);
|
|
46
|
+
return Component$ReventlessCore.setOutputs(extra, outputs);
|
|
47
|
+
}, opts);
|
|
49
48
|
return {
|
|
50
49
|
Spec: Spec,
|
|
51
50
|
make: make
|
|
@@ -69,7 +69,12 @@ module Make = (
|
|
|
69
69
|
let eventCollector = counterOperations->Pulumi.Output.apply(({count, addToCounterTarget}) =>
|
|
70
70
|
{
|
|
71
71
|
let eventTopics = allEventTopics->EventTopic.filter(aggregateNames)
|
|
72
|
-
let eventCollector = SpecificEventCollector.make(
|
|
72
|
+
let eventCollector = SpecificEventCollector.make(
|
|
73
|
+
~name,
|
|
74
|
+
~eventTopics,
|
|
75
|
+
~owner={kind: ComponentType.EventMapper, name},
|
|
76
|
+
~opts,
|
|
77
|
+
)
|
|
73
78
|
|
|
74
79
|
module EventCollectorHandler = EventMapper_Callback.MakeEventCollectorHandler({
|
|
75
80
|
let publishJsons = publishJsons
|
|
@@ -49,7 +49,10 @@ function Make(Target) {
|
|
|
49
49
|
}));
|
|
50
50
|
let eventCollector = match[0].apply(param => {
|
|
51
51
|
let eventTopics = EventTopic$ReventlessCore.filter(allEventTopics, aggregateNames);
|
|
52
|
-
let eventCollector = SpecificEventCollector.make(name, eventTopics,
|
|
52
|
+
let eventCollector = SpecificEventCollector.make(name, eventTopics, {
|
|
53
|
+
kind: "EventMapper",
|
|
54
|
+
name: name
|
|
55
|
+
}, opts);
|
|
53
56
|
let EventCollectorHandler = EventMapper_Callback$ReventlessCore.MakeEventCollectorHandler({
|
|
54
57
|
publishJsons: publishJsons,
|
|
55
58
|
count: param.count,
|
|
@@ -12,12 +12,13 @@ module Make = (Spec: ReventlessInfra.EventTopic.T, Publisher: EventTopic_Adapter
|
|
|
12
12
|
|
|
13
13
|
type component = Component.t<EventTopic.t, EventTopic.outputs, operations>
|
|
14
14
|
|
|
15
|
-
let construct = (~storageResources, self, name) => {
|
|
15
|
+
let construct = (~storageResources, ~owner=?, self, name) => {
|
|
16
16
|
let opts = {Pulumi.CustomResourceOptions.parent: self->Component.toPulumiResource}
|
|
17
17
|
|
|
18
18
|
let publisher = Publisher.make(
|
|
19
19
|
~name=name->ComponentType.name(EventTopic.componentType),
|
|
20
20
|
~storageResources,
|
|
21
|
+
~owner,
|
|
21
22
|
~opts,
|
|
22
23
|
)
|
|
23
24
|
|
|
@@ -43,11 +44,11 @@ module Make = (Spec: ReventlessInfra.EventTopic.T, Publisher: EventTopic_Adapter
|
|
|
43
44
|
self->Component.setOutputs(outputs)
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
let make = (~name, ~storageResources, ~opts=?): component =>
|
|
47
|
+
let make = (~name, ~storageResources, ~owner=?, ~opts=?): component =>
|
|
47
48
|
Component.make(
|
|
48
49
|
~componentType=EventTopic.componentType->ComponentType.toString,
|
|
49
50
|
~name,
|
|
50
|
-
~construct=construct(~storageResources, ...),
|
|
51
|
+
~construct=construct(~storageResources, ~owner?, ...),
|
|
51
52
|
~opts,
|
|
52
53
|
)
|
|
53
54
|
}
|
|
@@ -8,12 +8,12 @@ import * as EventTopic_Operations$ReventlessCore from "./EventTopic_Operations.r
|
|
|
8
8
|
|
|
9
9
|
function Make(Spec) {
|
|
10
10
|
return Publisher => {
|
|
11
|
-
let make = (name, storageResources, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(EventTopic$ReventlessCore.componentType), name, (extra, extra$1) => {
|
|
11
|
+
let make = (name, storageResources, owner, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(EventTopic$ReventlessCore.componentType), name, (extra, extra$1) => {
|
|
12
12
|
let opts_parent = Component$ReventlessCore.toPulumiResource(extra);
|
|
13
13
|
let opts = {
|
|
14
14
|
parent: opts_parent
|
|
15
15
|
};
|
|
16
|
-
let publisher = Publisher.make(ComponentType$ReventlessCore.name(extra$1, EventTopic$ReventlessCore.componentType), storageResources, opts);
|
|
16
|
+
let publisher = Publisher.make(ComponentType$ReventlessCore.name(extra$1, EventTopic$ReventlessCore.componentType), storageResources, owner, opts);
|
|
17
17
|
Component$ReventlessCore.setOperations(extra, Pulumi.all([
|
|
18
18
|
publisher.publishJson,
|
|
19
19
|
publisher.publishJsonStream
|
|
@@ -47,7 +47,11 @@ module Make = (
|
|
|
47
47
|
let childName = name->String.replace(".", "")->ComponentType.name(ExtensionPoint.componentType)
|
|
48
48
|
|
|
49
49
|
module SpecificCommandTopic = CommandTopic_Builder.Make(SpecWithId, CommandTopicChannel)
|
|
50
|
-
let commandTopic = SpecificCommandTopic.make(
|
|
50
|
+
let commandTopic = SpecificCommandTopic.make(
|
|
51
|
+
~name=childName,
|
|
52
|
+
~owner={kind: ComponentType.ExtensionPoint, name: Spec.name},
|
|
53
|
+
~opts,
|
|
54
|
+
)
|
|
51
55
|
|
|
52
56
|
let aggregateNames =
|
|
53
57
|
Mappings.mappings->Array.filterMap((module(Mapping)) =>
|
|
@@ -103,7 +107,12 @@ module Make = (
|
|
|
103
107
|
)
|
|
104
108
|
|
|
105
109
|
module SpecificEventTopic = EventTopic_Builder.Make(SpecWithId, EventTopicAdapter)
|
|
106
|
-
let eventTopic = SpecificEventTopic.make(
|
|
110
|
+
let eventTopic = SpecificEventTopic.make(
|
|
111
|
+
~name=childName,
|
|
112
|
+
~storageResources=[],
|
|
113
|
+
~owner={kind: ComponentType.ExtensionPoint, name: Spec.name},
|
|
114
|
+
~opts,
|
|
115
|
+
)
|
|
107
116
|
|
|
108
117
|
eventTopic
|
|
109
118
|
->Component.operations
|
|
@@ -36,7 +36,10 @@ function Make(Spec) {
|
|
|
36
36
|
name: name,
|
|
37
37
|
commandSchema: commandSchema
|
|
38
38
|
})(CommandTopicChannel);
|
|
39
|
-
let commandTopic = SpecificCommandTopic.make(childName,
|
|
39
|
+
let commandTopic = SpecificCommandTopic.make(childName, {
|
|
40
|
+
kind: "ExtensionPoint",
|
|
41
|
+
name: Spec.name
|
|
42
|
+
}, opts);
|
|
40
43
|
let aggregateNames = Stdlib_Array.filterMap(Mappings.mappings, Mapping => Stdlib_Option.map(Mapping.mapOutgoingEvent, param => Mapping.delegateName));
|
|
41
44
|
let commandTopicResources = Adapter$ReventlessCore.resourcesToResolvedOutput(commandTopic.channel.resources);
|
|
42
45
|
let match = Output$Pulumi.unzip3(Output$Pulumi.flatMap(commandTopicResources, commandTopicResources => {
|
|
@@ -65,7 +68,10 @@ function Make(Spec) {
|
|
|
65
68
|
name: name,
|
|
66
69
|
eventSchema: eventSchema
|
|
67
70
|
})(EventTopicAdapter);
|
|
68
|
-
let eventTopic = SpecificEventTopic.make(childName, [],
|
|
71
|
+
let eventTopic = SpecificEventTopic.make(childName, [], {
|
|
72
|
+
kind: "ExtensionPoint",
|
|
73
|
+
name: Spec.name
|
|
74
|
+
}, opts);
|
|
69
75
|
return Component$ReventlessCore.operations(eventTopic).apply(param => {
|
|
70
76
|
let Ops = ExtensionPoint_Operations$ReventlessCore.Make(Spec)({
|
|
71
77
|
mappings: Mappings.mappings
|
|
@@ -57,7 +57,12 @@ module Make = (
|
|
|
57
57
|
let construct = (~publishJsons, self, _name) => {
|
|
58
58
|
let opts = {Pulumi.ComponentResource.parent: self->Component.toPulumiResource}
|
|
59
59
|
|
|
60
|
-
let queryDb = SpecificQueryDb.make(
|
|
60
|
+
let queryDb = SpecificQueryDb.make(
|
|
61
|
+
~api=Api.api(),
|
|
62
|
+
~apiRole=Api.apiRole(),
|
|
63
|
+
~owner={kind: ComponentType.InboundTranslationSlice, name: Spec.name},
|
|
64
|
+
~opts,
|
|
65
|
+
)
|
|
61
66
|
|
|
62
67
|
// Resolve publishJsons so it's available for receive
|
|
63
68
|
let publishJsonsRef: ref<option<ReventlessInfra.CommandTopic.publishJsons>> = ref(None)
|
|
@@ -39,7 +39,10 @@ function Make(QueryDbStorage) {
|
|
|
39
39
|
let opts = {
|
|
40
40
|
parent: opts_parent
|
|
41
41
|
};
|
|
42
|
-
let queryDb = SpecificQueryDb.make(Api.api(), Api.apiRole(), undefined,
|
|
42
|
+
let queryDb = SpecificQueryDb.make(Api.api(), Api.apiRole(), undefined, {
|
|
43
|
+
kind: "InboundTranslationSlice",
|
|
44
|
+
name: Spec.name
|
|
45
|
+
}, opts);
|
|
43
46
|
let publishJsonsRef = {
|
|
44
47
|
contents: undefined
|
|
45
48
|
};
|
|
@@ -72,7 +72,12 @@ module Make = (
|
|
|
72
72
|
let memorySize = ReventlessInfra.RuntimeHints.resolveMemory(runtime, ~default=1024)
|
|
73
73
|
let timeout = ReventlessInfra.RuntimeHints.resolveTimeout(runtime, ~default=30)
|
|
74
74
|
|
|
75
|
-
let queryDb = SpecificQueryDb.make(
|
|
75
|
+
let queryDb = SpecificQueryDb.make(
|
|
76
|
+
~api=Api.api(),
|
|
77
|
+
~apiRole=Api.apiRole(),
|
|
78
|
+
~owner={kind: ComponentType.OutboundTranslationSlice, name: Spec.name},
|
|
79
|
+
~opts,
|
|
80
|
+
)
|
|
76
81
|
|
|
77
82
|
let dcbEventTopicOutputs: EventTopic.outputs = (dcbEventLog->Component.outputs).eventTopic
|
|
78
83
|
let allEventTopics = Dict.fromArray([(Spec.name, dcbEventTopicOutputs)])
|
|
@@ -87,7 +92,12 @@ module Make = (
|
|
|
87
92
|
queryDb
|
|
88
93
|
->Component.operations
|
|
89
94
|
->Pulumi.Output.apply(queryDbOps => {
|
|
90
|
-
let ec = SpecificEventCollector.make(
|
|
95
|
+
let ec = SpecificEventCollector.make(
|
|
96
|
+
~name=Spec.name,
|
|
97
|
+
~eventTopics=allEventTopics,
|
|
98
|
+
~owner={kind: ComponentType.OutboundTranslationSlice, name: Spec.name},
|
|
99
|
+
~opts,
|
|
100
|
+
)
|
|
91
101
|
|
|
92
102
|
let jsonEventsHandler: EventCollector.jsonEventsHandler = stream =>
|
|
93
103
|
stream
|
|
@@ -59,7 +59,10 @@ function Make(RuntimeEnvironment) {
|
|
|
59
59
|
};
|
|
60
60
|
let memorySize = RuntimeHints$ReventlessInfra.resolveMemory(runtime, 1024);
|
|
61
61
|
let timeout = RuntimeHints$ReventlessInfra.resolveTimeout(runtime, 30);
|
|
62
|
-
let queryDb = SpecificQueryDb.make(Api.api(), Api.apiRole(), undefined,
|
|
62
|
+
let queryDb = SpecificQueryDb.make(Api.api(), Api.apiRole(), undefined, {
|
|
63
|
+
kind: "OutboundTranslationSlice",
|
|
64
|
+
name: Spec.name
|
|
65
|
+
}, opts);
|
|
63
66
|
let dcbEventTopicOutputs = Component$ReventlessCore.outputs(dcbEventLog).eventTopic;
|
|
64
67
|
let allEventTopics = Object.fromEntries([[
|
|
65
68
|
Spec.name,
|
|
@@ -72,7 +75,10 @@ function Make(RuntimeEnvironment) {
|
|
|
72
75
|
publishJsonsRef.contents = pj;
|
|
73
76
|
});
|
|
74
77
|
let eventCollector = Component$ReventlessCore.operations(queryDb).apply(queryDbOps => {
|
|
75
|
-
let ec = SpecificEventCollector.make(Spec.name, allEventTopics,
|
|
78
|
+
let ec = SpecificEventCollector.make(Spec.name, allEventTopics, {
|
|
79
|
+
kind: "OutboundTranslationSlice",
|
|
80
|
+
name: Spec.name
|
|
81
|
+
}, opts);
|
|
76
82
|
let jsonEventsHandler = stream => Effect.flatMap(Stream.runCollect(Stream$1.flatMap(Stream$1.mapEffect(stream, json => Effect.sync(() => {
|
|
77
83
|
let match = Message$ReventlessCore.splitMessage(json);
|
|
78
84
|
let event = decoder.decode(match[0], match[1]);
|
|
@@ -10,7 +10,7 @@ module Make = (
|
|
|
10
10
|
type operations = QueryDb.operations<Spec.Id.t, Spec.state>
|
|
11
11
|
type component = Component.t<QueryDb.t, QueryDb.outputs, operations>
|
|
12
12
|
|
|
13
|
-
let construct = (self, name, ~api, ~apiRole, ~ttl=?) => {
|
|
13
|
+
let construct = (self, name, ~api, ~apiRole, ~ttl=?, ~owner=?) => {
|
|
14
14
|
let opts = {Pulumi.CustomResourceOptions.parent: self->Component.toPulumiResource}
|
|
15
15
|
|
|
16
16
|
let subIdField = Spec.subIdConfig->Option.map(config => config.subIdField)
|
|
@@ -22,6 +22,7 @@ module Make = (
|
|
|
22
22
|
~ttl?,
|
|
23
23
|
~api,
|
|
24
24
|
~apiRole,
|
|
25
|
+
~owner,
|
|
25
26
|
~opts,
|
|
26
27
|
)
|
|
27
28
|
|
|
@@ -66,11 +67,11 @@ module Make = (
|
|
|
66
67
|
self->Component.setOutputs(outputs)
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
let make = (~api: Storage.api, ~apiRole: Storage.role, ~ttl=?, ~opts=?): component =>
|
|
70
|
+
let make = (~api: Storage.api, ~apiRole: Storage.role, ~ttl=?, ~owner=?, ~opts=?): component =>
|
|
70
71
|
Component.make(
|
|
71
72
|
~componentType=QueryDb.componentType->ComponentType.toString,
|
|
72
73
|
~name=Spec.name,
|
|
73
|
-
~construct=construct(~api, ~apiRole, ~ttl?, ...),
|
|
74
|
+
~construct=construct(~api, ~apiRole, ~ttl?, ~owner?, ...),
|
|
74
75
|
~opts,
|
|
75
76
|
)
|
|
76
77
|
}
|
|
@@ -8,13 +8,13 @@ import * as QueryDb_Operations$ReventlessCore from "./QueryDb_Operations.res.mjs
|
|
|
8
8
|
|
|
9
9
|
function Make(Spec) {
|
|
10
10
|
return Storage => (Resolvers => {
|
|
11
|
-
let make = (api, apiRole, ttl, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(QueryDb$ReventlessCore.componentType), Spec.name, (none, none$1) => {
|
|
11
|
+
let make = (api, apiRole, ttl, owner, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(QueryDb$ReventlessCore.componentType), Spec.name, (none, none$1) => {
|
|
12
12
|
let opts_parent = Component$ReventlessCore.toPulumiResource(none);
|
|
13
13
|
let opts = {
|
|
14
14
|
parent: opts_parent
|
|
15
15
|
};
|
|
16
16
|
let subIdField = Stdlib_Option.map(Spec.subIdConfig, config => config.subIdField);
|
|
17
|
-
let storage = Storage.make(none$1, Spec.config.indexes, subIdField, ttl, api, apiRole, opts);
|
|
17
|
+
let storage = Storage.make(none$1, Spec.config.indexes, subIdField, ttl, api, apiRole, owner, opts);
|
|
18
18
|
Component$ReventlessCore.setOperations(none, storage.operations.apply(jsonOps => {
|
|
19
19
|
let Operations = QueryDb_Operations$ReventlessCore.Make(Spec)({
|
|
20
20
|
jsonOps: jsonOps
|