@reventlessdev/reventless-aws 3.0.0-alpha.219 → 3.0.0-alpha.220
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 +7 -0
- package/package.json +4 -4
- package/src/adapter/Api/AppSync_SourceApiAssociation_Retrying.res +26 -1
- package/src/adapter/Api/AppSync_SourceApiAssociation_Retrying.res.mjs +12 -1
- package/tests/AppSync_SourceApiAssociation_RetryingTest.res +26 -0
- package/tests/AppSync_SourceApiAssociation_RetryingTest.res.mjs +20 -0
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.220 (2026-07-21)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **aws:** declare output-only props on the retrying SourceApiAssociation ([5e1cdcc](https://github.com/ReventlessDev/reventless-core/commit/5e1cdcc8612d717649afa520285f854060d1e276))
|
|
11
|
+
|
|
12
|
+
|
|
6
13
|
# 3.0.0-alpha.219 (2026-07-21)
|
|
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.220",
|
|
4
4
|
"description": "AWS adapters for Reventless",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"dependencies": {
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
"@reventlessdev/rescript-aws-sdk": "2.2.0-alpha.24",
|
|
12
12
|
"@reventlessdev/rescript-effect": "0.1.0-alpha.29",
|
|
13
13
|
"@reventlessdev/rescript-jest": "1.0.0-alpha.9",
|
|
14
|
-
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.17",
|
|
15
14
|
"@reventlessdev/rescript-pulumi-aws": "2.4.0-alpha.56",
|
|
15
|
+
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.17",
|
|
16
16
|
"@reventlessdev/rescript-uuid": "1.1.0-alpha.17",
|
|
17
17
|
"@reventlessdev/reventless-core": "3.0.0-alpha.174",
|
|
18
|
-
"@reventlessdev/reventless-infra": "3.0.0-alpha.102",
|
|
19
18
|
"@reventlessdev/reventless-interop": "3.0.0-alpha.28",
|
|
19
|
+
"@reventlessdev/reventless-spec": "3.0.0-alpha.79",
|
|
20
20
|
"@reventlessdev/reventless-postgres": "3.0.0-alpha.38",
|
|
21
|
-
"@reventlessdev/reventless-
|
|
21
|
+
"@reventlessdev/reventless-infra": "3.0.0-alpha.102"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"rescript": "12.3.0",
|
|
@@ -410,6 +410,31 @@ type constructorProps = {
|
|
|
410
410
|
mergeType: Pulumi.Input.t<string>,
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
+
/** What is actually handed to `pulumi.dynamic.Resource`. The base constructor
|
|
414
|
+
defines a resource property for every KEY of `props` (it walks
|
|
415
|
+
`Object.keys`), so an output-only field that is not declared here never
|
|
416
|
+
materialises on the resource — `association.associationId` reads a plain
|
|
417
|
+
`undefined` instead of an Output, and `mergeStatusGateWith` then calls
|
|
418
|
+
GetSourceApiAssociation with no id ("No value provided for input HTTP
|
|
419
|
+
label: associationId"). Declaring them `undefined` is Pulumi's documented
|
|
420
|
+
way to register output-only properties; undefined values are dropped from
|
|
421
|
+
the inputs RPC, so `create` still receives only the three real inputs. */
|
|
422
|
+
type resourceProps = {
|
|
423
|
+
mergedApiIdentifier: Pulumi.Input.t<string>,
|
|
424
|
+
sourceApiIdentifier: Pulumi.Input.t<string>,
|
|
425
|
+
mergeType: Pulumi.Input.t<string>,
|
|
426
|
+
arn: Nullable.t<string>,
|
|
427
|
+
associationId: Nullable.t<string>,
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
let resourcePropsOf = (props: constructorProps): resourceProps => {
|
|
431
|
+
mergedApiIdentifier: props.mergedApiIdentifier,
|
|
432
|
+
sourceApiIdentifier: props.sourceApiIdentifier,
|
|
433
|
+
mergeType: props.mergeType,
|
|
434
|
+
arn: Nullable.undefined,
|
|
435
|
+
associationId: Nullable.undefined,
|
|
436
|
+
}
|
|
437
|
+
|
|
413
438
|
// pulumi.dynamic.Resource constructor: (provider, name, props, opts). Explicit
|
|
414
439
|
// /index.js path because @pulumi/pulumi/dynamic is a directory import not
|
|
415
440
|
// resolvable in ESM mode.
|
|
@@ -432,5 +457,5 @@ let make = (
|
|
|
432
457
|
| Some(o) => {...o, aliases: [migrationAlias]}
|
|
433
458
|
| None => {aliases: [migrationAlias]}
|
|
434
459
|
}
|
|
435
|
-
_newResource(provider, name, props, finalOpts)
|
|
460
|
+
_newResource(provider, name, props->resourcePropsOf, finalOpts)
|
|
436
461
|
}
|
|
@@ -295,6 +295,16 @@ let provider = {
|
|
|
295
295
|
read: read_
|
|
296
296
|
};
|
|
297
297
|
|
|
298
|
+
function resourcePropsOf(props) {
|
|
299
|
+
return {
|
|
300
|
+
mergedApiIdentifier: props.mergedApiIdentifier,
|
|
301
|
+
sourceApiIdentifier: props.sourceApiIdentifier,
|
|
302
|
+
mergeType: props.mergeType,
|
|
303
|
+
arn: undefined,
|
|
304
|
+
associationId: undefined
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
|
|
298
308
|
function make(name, props, opts) {
|
|
299
309
|
let migrationAlias = Alias$Pulumi.make(name, "aws:appsync/sourceApiAssociation:SourceApiAssociation", undefined);
|
|
300
310
|
let finalOpts;
|
|
@@ -307,7 +317,7 @@ function make(name, props, opts) {
|
|
|
307
317
|
aliases: [migrationAlias]
|
|
308
318
|
};
|
|
309
319
|
}
|
|
310
|
-
return new IndexJs.Resource(provider, name, props, finalOpts);
|
|
320
|
+
return new IndexJs.Resource(provider, name, resourcePropsOf(props), finalOpts);
|
|
311
321
|
}
|
|
312
322
|
|
|
313
323
|
export {
|
|
@@ -335,6 +345,7 @@ export {
|
|
|
335
345
|
diff_,
|
|
336
346
|
read_,
|
|
337
347
|
provider,
|
|
348
|
+
resourcePropsOf,
|
|
338
349
|
make,
|
|
339
350
|
}
|
|
340
351
|
/* log Not a pure module */
|
|
@@ -110,3 +110,29 @@ describe("AppSync_SourceApiAssociation_Retrying.idsFromComposite", () => {
|
|
|
110
110
|
expect(Assoc.idsFromComposite("just-one-value")->Option.isNone)->toBe(true)
|
|
111
111
|
})
|
|
112
112
|
})
|
|
113
|
+
|
|
114
|
+
// pulumi.dynamic.Resource defines a resource property per KEY of the props
|
|
115
|
+
// object, so the output-only fields must be present (with an undefined value)
|
|
116
|
+
// or `association.associationId` is a bare `undefined` and the merge gate
|
|
117
|
+
// calls GetSourceApiAssociation without an id.
|
|
118
|
+
describe("AppSync_SourceApiAssociation_Retrying.resourcePropsOf", () => {
|
|
119
|
+
let keysOf: Assoc.resourceProps => array<string> = p => Object.keysToArray(Obj.magic(p))
|
|
120
|
+
let props = Assoc.resourcePropsOf({
|
|
121
|
+
mergedApiIdentifier: Obj.magic("merged-arn"),
|
|
122
|
+
sourceApiIdentifier: Obj.magic("src123"),
|
|
123
|
+
mergeType: Obj.magic("AUTO_MERGE"),
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
testSync("declares arn + associationId as output-only keys", () => {
|
|
127
|
+
expect(props->keysOf->Array.includes("arn"))->toBe(true)
|
|
128
|
+
expect(props->keysOf->Array.includes("associationId"))->toBe(true)
|
|
129
|
+
expect(props.arn->Nullable.toOption->Option.isNone)->toBe(true)
|
|
130
|
+
expect(props.associationId->Nullable.toOption->Option.isNone)->toBe(true)
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
testSync("passes the three real inputs through", () => {
|
|
134
|
+
expect((props.mergedApiIdentifier->Obj.magic: string))->toBe("merged-arn")
|
|
135
|
+
expect((props.sourceApiIdentifier->Obj.magic: string))->toBe("src123")
|
|
136
|
+
expect((props.mergeType->Obj.magic: string))->toBe("AUTO_MERGE")
|
|
137
|
+
})
|
|
138
|
+
})
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as JestGlobals from "@reventlessdev/rescript-jest/src/JestGlobals.res.mjs";
|
|
4
4
|
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
5
|
+
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
5
6
|
import * as AppSync_SourceApiAssociation_Retrying$ReventlessAws from "../src/adapter/Api/AppSync_SourceApiAssociation_Retrying.res.mjs";
|
|
6
7
|
|
|
7
8
|
function mkErr(name, message) {
|
|
@@ -124,6 +125,25 @@ globalThis.describe("AppSync_SourceApiAssociation_Retrying.idsFromComposite", ()
|
|
|
124
125
|
});
|
|
125
126
|
});
|
|
126
127
|
|
|
128
|
+
globalThis.describe("AppSync_SourceApiAssociation_Retrying.resourcePropsOf", () => {
|
|
129
|
+
let props = AppSync_SourceApiAssociation_Retrying$ReventlessAws.resourcePropsOf({
|
|
130
|
+
mergedApiIdentifier: "merged-arn",
|
|
131
|
+
sourceApiIdentifier: "src123",
|
|
132
|
+
mergeType: "AUTO_MERGE"
|
|
133
|
+
});
|
|
134
|
+
globalThis.test("declares arn + associationId as output-only keys", () => {
|
|
135
|
+
globalThis.expect(Object.keys(props).includes("arn")).toBe(true);
|
|
136
|
+
globalThis.expect(Object.keys(props).includes("associationId")).toBe(true);
|
|
137
|
+
globalThis.expect(Stdlib_Option.isNone(Primitive_option.fromNullable(props.arn))).toBe(true);
|
|
138
|
+
globalThis.expect(Stdlib_Option.isNone(Primitive_option.fromNullable(props.associationId))).toBe(true);
|
|
139
|
+
});
|
|
140
|
+
globalThis.test("passes the three real inputs through", () => {
|
|
141
|
+
globalThis.expect(props.mergedApiIdentifier).toBe("merged-arn");
|
|
142
|
+
globalThis.expect(props.sourceApiIdentifier).toBe("src123");
|
|
143
|
+
globalThis.expect(props.mergeType).toBe("AUTO_MERGE");
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
127
147
|
let Assoc;
|
|
128
148
|
|
|
129
149
|
export {
|