@reventlessdev/reventless-aws 3.0.0-alpha.261 → 3.0.0-alpha.262
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
CHANGED
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# 3.0.0-alpha.262 (2026-08-03)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **aws:** key the shared automation channel's DCB topic by convention ([fe473d5](https://github.com/ReventlessDev/reventless-core/commit/fe473d561343f39bc1d05a2afaa902459142bbd0))
|
|
11
|
+
|
|
12
|
+
|
|
6
13
|
# 3.0.0-alpha.261 (2026-08-03)
|
|
7
14
|
|
|
8
15
|
### Features
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reventlessdev/reventless-aws",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.262",
|
|
4
4
|
"description": "AWS adapters for Reventless",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,15 +13,15 @@
|
|
|
13
13
|
"uuid": "^13.0.0",
|
|
14
14
|
"@reventlessdev/rescript-aws-sdk": "3.0.0-alpha.3",
|
|
15
15
|
"@reventlessdev/rescript-jest": "1.0.0-alpha.10",
|
|
16
|
-
"@reventlessdev/rescript-effect": "0.1.0-alpha.32",
|
|
17
|
-
"@reventlessdev/rescript-node": "2.0.0-alpha.1",
|
|
18
16
|
"@reventlessdev/rescript-pulumi-aws": "2.4.0-alpha.65",
|
|
19
|
-
"@reventlessdev/rescript-
|
|
17
|
+
"@reventlessdev/rescript-node": "2.0.0-alpha.1",
|
|
18
|
+
"@reventlessdev/rescript-effect": "0.1.0-alpha.32",
|
|
20
19
|
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.18",
|
|
21
|
-
"@reventlessdev/reventless-interop": "3.0.0-alpha.30",
|
|
22
|
-
"@reventlessdev/reventless-postgres": "3.0.0-alpha.71",
|
|
23
20
|
"@reventlessdev/reventless-core": "3.0.0-alpha.207",
|
|
24
21
|
"@reventlessdev/reventless-infra": "3.0.0-alpha.124",
|
|
22
|
+
"@reventlessdev/reventless-interop": "3.0.0-alpha.30",
|
|
23
|
+
"@reventlessdev/reventless-postgres": "3.0.0-alpha.71",
|
|
24
|
+
"@reventlessdev/rescript-uuid": "2.0.0-alpha.0",
|
|
25
25
|
"@reventlessdev/reventless-spec": "3.0.0-alpha.99"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
@@ -292,8 +292,18 @@ let finishWithDcbEventLog = (dcbEventLog: ReventlessCore.DcbEventLog.component)
|
|
|
292
292
|
// into its own event-source mapping, and the entry point routes an
|
|
293
293
|
// incoming record to the handlers registered for its stream, so a slice
|
|
294
294
|
// only ever sees the sources it asked for.
|
|
295
|
+
//
|
|
296
|
+
// Keyed `<plugin>DcbEventLog`, the convention `Dcb_Builder` uses when it
|
|
297
|
+
// puts the log into `allEventTopics`. That matters because a slice naming
|
|
298
|
+
// the log explicitly (every DCB-sourced AutomationSlice does) contributes
|
|
299
|
+
// it back under that key: a different key here would leave the same topic
|
|
300
|
+
// in the dict twice, and since an event-source mapping is named after the
|
|
301
|
+
// *topic resource* rather than the key, both would render as
|
|
302
|
+
// `<plugin>DcbEventLog2AllAutomationSlices` and the deploy would fail on a
|
|
303
|
+
// duplicate URN.
|
|
304
|
+
let dcbTopicKey = dcbResource.name->Option.getOr("") ++ "DcbEventLog"
|
|
295
305
|
let eventTopics: ReventlessCore.EventTopic.allOutputs = Dict.fromArray([
|
|
296
|
-
(
|
|
306
|
+
(dcbTopicKey, dcbOutputs.eventTopic),
|
|
297
307
|
])
|
|
298
308
|
bundledInfos->Dict.forEach(info =>
|
|
299
309
|
info.sourceTopics->Dict.forEachWithKey((topic, key) => eventTopics->Dict.set(key, topic))
|
|
@@ -326,7 +336,18 @@ let finishWithDcbEventLog = (dcbEventLog: ReventlessCore.DcbEventLog.component)
|
|
|
326
336
|
->Array.forEach(topic =>
|
|
327
337
|
topic.resources->Array.forEach(resource => urns->Array.push(resource.urn)->ignore)
|
|
328
338
|
)
|
|
329
|
-
|
|
339
|
+
// Deduped after resolution, because the same stream can be reached two
|
|
340
|
+
// ways — `consumesDcbLog` and an explicit source naming the DCB log.
|
|
341
|
+
// The entry point registers the handler once per URN, so a repeat would
|
|
342
|
+
// run the slice twice for every event: no error, no log, just doubled
|
|
343
|
+
// work and doubled commands.
|
|
344
|
+
urns
|
|
345
|
+
->Pulumi.Output.all
|
|
346
|
+
->Pulumi.Output.apply(resolved =>
|
|
347
|
+
resolved->Array.reduce([], (acc, urn) =>
|
|
348
|
+
acc->Array.includes(urn) ? acc : acc->Array.concat([urn])
|
|
349
|
+
)
|
|
350
|
+
)
|
|
330
351
|
}
|
|
331
352
|
|
|
332
353
|
let dcbQueueUrl = switch dcbQueueUrlRef.contents {
|
|
@@ -161,8 +161,9 @@ function finishWithDcbEventLog(dcbEventLog) {
|
|
|
161
161
|
parent: opts_parent
|
|
162
162
|
};
|
|
163
163
|
let dcbOutputs = Component$ReventlessCore.outputs(dcbEventLog);
|
|
164
|
+
let dcbTopicKey = Stdlib_Option.getOr(dcbResource.__name, "") + "DcbEventLog";
|
|
164
165
|
let eventTopics = Object.fromEntries([[
|
|
165
|
-
|
|
166
|
+
dcbTopicKey,
|
|
166
167
|
dcbOutputs.eventTopic
|
|
167
168
|
]]);
|
|
168
169
|
Stdlib_Dict.forEach(bundledInfos, info => Stdlib_Dict.forEachWithKey(info.sourceTopics, (topic, key) => {
|
|
@@ -181,7 +182,13 @@ function finishWithDcbEventLog(dcbEventLog) {
|
|
|
181
182
|
urns.push(resource.urn);
|
|
182
183
|
});
|
|
183
184
|
});
|
|
184
|
-
return Pulumi.all(urns)
|
|
185
|
+
return Pulumi.all(urns).apply(resolved => Stdlib_Array.reduce(resolved, [], (acc, urn) => {
|
|
186
|
+
if (acc.includes(urn)) {
|
|
187
|
+
return acc;
|
|
188
|
+
} else {
|
|
189
|
+
return acc.concat([urn]);
|
|
190
|
+
}
|
|
191
|
+
}));
|
|
185
192
|
};
|
|
186
193
|
let url = dcbQueueUrlRef.contents;
|
|
187
194
|
let dcbQueueUrl = url !== undefined ? url : Pulumi.output("NOT_AVAILABLE");
|