diff --git a/dynamodb.w b/dynamodb.w index 8c3bbc4..5e2af69 100644 --- a/dynamodb.w +++ b/dynamodb.w @@ -168,8 +168,11 @@ pub class DynamoDBTableAws { } pub class DynamoDBTable { - tableSim: DynamoDBTableSim?; - tableAws: DynamoDBTableAws?; + // TODO: these fields are actually optional. workaround for: + // https://github.com/winglang/wing/issues/5636 + // https://github.com/winglang/wing/issues/5647 + tableSim: DynamoDBTableSim; + tableAws: DynamoDBTableAws; new(props: DynamoDBTableProps) { let target = util.env("WING_TARGET"); @@ -185,12 +188,12 @@ pub class DynamoDBTable { pub onLift(host: std.IInflightHost, ops: Array) { // currently simulator does not require permissions // may change with https://github.com/winglang/wing/issues/3082 - if let tableAws = this.tableAws { + if let tableAws = unsafeCast(this.tableAws) { if let host = aws.Function.from(host) { if ops.contains("putItem") { host.addPolicyStatements(aws.PolicyStatement { actions: ["dynamodb:PutItem"], - resources: [tableAws.table.arn], + resources: [tableAws?.table?.arn], effect: aws.Effect.ALLOW, }); } @@ -198,7 +201,7 @@ pub class DynamoDBTable { if ops.contains("getItem") { host.addPolicyStatements(aws.PolicyStatement { actions: ["dynamodb:GetItem"], - resources: [tableAws.table.arn], + resources: [tableAws?.table?.arn], effect: aws.Effect.ALLOW, }); } @@ -206,7 +209,7 @@ pub class DynamoDBTable { if ops.contains("scan") { host.addPolicyStatements(aws.PolicyStatement { actions: ["dynamodb:Scan"], - resources: [tableAws.table.arn], + resources: [tableAws?.table?.arn], effect: aws.Effect.ALLOW, }); } @@ -216,34 +219,29 @@ pub class DynamoDBTable { pub inflight getItem(key: Map): Map? { assert(key.size() == 1); - if let tableSim = this.tableSim { - return tableSim.getItem(key); - } - if let tableAws = this.tableAws { - return tableAws.getItem(key); + let isSim = unsafeCast(this.tableSim) != nil; + if isSim { + return this.tableSim.getItem(key); + } else { + return this.tableAws.getItem(key); } - throw("no table instance found for getItem"); } pub inflight putItem(item: Map) { - if let tableSim = this.tableSim { - tableSim.putItem(item); - return; - } - if let tableAws = this.tableAws { - tableAws.putItem(item); - return; + let isSim = unsafeCast(this.tableSim) != nil; + if isSim { + this.tableSim.putItem(item); + } else { + this.tableAws.putItem(item); } - throw("no table instance found for putItem"); } pub inflight scan(): Array> { - if let tableSim = this.tableSim { - return tableSim.scan(); - } - if let tableAws = this.tableAws { - return tableAws.scan(); + let isSim = unsafeCast(this.tableSim) != nil; + if isSim { + return this.tableSim.scan(); + } else { + return this.tableAws.scan(); } - throw("no table instance found for scan"); } } diff --git a/main.w b/main.w index 48584c6..05934f1 100644 --- a/main.w +++ b/main.w @@ -185,12 +185,11 @@ let foods = [ new cloud.OnDeploy(inflight () => { for food in foods { if !store.getEntry(food)? { - continue; + store.setEntry(Entry { + name: food, + score: 1500, + }); } - store.setEntry(Entry { - name: food, - score: 1500, - }); } }) as "InitializeTable"; diff --git a/package-lock.json b/package-lock.json index 9e506a4..73443d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "dependencies": { "@aws-sdk/client-dynamodb": "^3.369.0", - "@cdktf/provider-aws": "^16.0.2" + "@cdktf/provider-aws": "^19.4.0" } }, "node_modules/@aws-crypto/crc32": { @@ -601,15 +601,15 @@ } }, "node_modules/@cdktf/provider-aws": { - "version": "16.0.2", - "resolved": "https://registry.npmjs.org/@cdktf/provider-aws/-/provider-aws-16.0.2.tgz", - "integrity": "sha512-XEkoWpgd5QQiAERgw/AlCZhpvYlR7RKpEKwLrO+SgEtu3XChSj7gw8c3EfWkdK3EHRxbEUjV03JT3J7fiaZxeA==", + "version": "19.4.0", + "resolved": "https://registry.npmjs.org/@cdktf/provider-aws/-/provider-aws-19.4.0.tgz", + "integrity": "sha512-QX/N4yXVtbWdLjLGSe9q0LptbxTaryIVyrjV/YZEQsc/VO0H7z8yhHaC9ovIg2UDLSW9hiuGUuRZpptP9bCTNg==", "engines": { - "node": ">= 16.14.0" + "node": ">= 18.12.0" }, "peerDependencies": { - "cdktf": "^0.17.0", - "constructs": "^10.0.0" + "cdktf": "^0.20.0", + "constructs": "^10.3.0" } }, "node_modules/@smithy/abort-controller": { @@ -1107,9 +1107,9 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" }, "node_modules/cdktf": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/cdktf/-/cdktf-0.17.1.tgz", - "integrity": "sha512-Bk9Al0z+RA3/hW372tf61QCbg2zGOVXjXlXC1taD37AfXpBgqD1fKOhJ980B93VcyMil2mIkubFC9hdrn2nziQ==", + "version": "0.20.3", + "resolved": "https://registry.npmjs.org/cdktf/-/cdktf-0.20.3.tgz", + "integrity": "sha512-y8F3pjYzbMHy9ZG3yXSSerx2Yv9dr2i2j2842IKT1tpN74CBfuuPrselTNdI6QoaMvlQJQQB2l93cJmL6eIkaw==", "bundleDependencies": [ "archiver", "json-stable-stringify", @@ -1117,120 +1117,67 @@ ], "peer": true, "dependencies": { - "archiver": "5.3.1", - "json-stable-stringify": "^1.0.2", - "semver": "^7.5.3" + "archiver": "6.0.1", + "json-stable-stringify": "1.1.0", + "semver": "7.5.4" }, "peerDependencies": { "constructs": "^10.0.25" } }, "node_modules/cdktf/node_modules/archiver": { - "version": "5.3.1", + "version": "6.0.1", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", + "archiver-utils": "^4.0.1", + "async": "^3.2.4", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^5.0.1" }, "engines": { - "node": ">= 10" + "node": ">= 12.0.0" } }, "node_modules/cdktf/node_modules/archiver-utils": { - "version": "2.1.0", + "version": "4.0.1", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "glob": "^7.1.4", + "glob": "^8.0.0", "graceful-fs": "^4.2.0", "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", + "lodash": "^4.17.15", "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" + "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/cdktf/node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.7", - "inBundle": true, - "license": "MIT", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/cdktf/node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "node": ">= 12.0.0" } }, "node_modules/cdktf/node_modules/async": { - "version": "3.2.4", + "version": "3.2.5", "inBundle": true, "license": "MIT", "peer": true }, - "node_modules/cdktf/node_modules/balanced-match": { - "version": "1.0.2", + "node_modules/cdktf/node_modules/b4a": { + "version": "1.6.4", "inBundle": true, - "license": "MIT", + "license": "ISC", "peer": true }, - "node_modules/cdktf/node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/cdktf/node_modules/balanced-match": { + "version": "1.0.2", "inBundle": true, "license": "MIT", "peer": true }, - "node_modules/cdktf/node_modules/bl": { - "version": "4.1.0", - "inBundle": true, - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/cdktf/node_modules/brace-expansion": { "version": "2.0.1", "inBundle": true, @@ -1240,60 +1187,44 @@ "balanced-match": "^1.0.0" } }, - "node_modules/cdktf/node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/cdktf/node_modules/buffer-crc32": { + "version": "0.2.13", "inBundle": true, "license": "MIT", "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "engines": { + "node": "*" } }, - "node_modules/cdktf/node_modules/buffer-crc32": { - "version": "0.2.13", + "node_modules/cdktf/node_modules/call-bind": { + "version": "1.0.5", "inBundle": true, "license": "MIT", "peer": true, - "engines": { - "node": "*" + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/cdktf/node_modules/compress-commons": { - "version": "4.1.1", + "version": "5.0.1", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", + "crc-32": "^1.2.0", + "crc32-stream": "^5.0.0", "normalize-path": "^3.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 10" + "node": ">= 12.0.0" } }, - "node_modules/cdktf/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT", - "peer": true - }, "node_modules/cdktf/node_modules/core-util-is": { "version": "1.0.3", "inBundle": true, @@ -1313,7 +1244,7 @@ } }, "node_modules/cdktf/node_modules/crc32-stream": { - "version": "4.0.2", + "version": "5.0.0", "inBundle": true, "license": "MIT", "peer": true, @@ -1322,20 +1253,25 @@ "readable-stream": "^3.4.0" }, "engines": { - "node": ">= 10" + "node": ">= 12.0.0" } }, - "node_modules/cdktf/node_modules/end-of-stream": { - "version": "1.4.4", + "node_modules/cdktf/node_modules/define-data-property": { + "version": "1.1.1", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "once": "^1.4.0" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/cdktf/node_modules/fs-constants": { - "version": "1.0.0", + "node_modules/cdktf/node_modules/fast-fifo": { + "version": "1.3.2", "inBundle": true, "license": "MIT", "peer": true @@ -1346,8 +1282,32 @@ "license": "ISC", "peer": true }, + "node_modules/cdktf/node_modules/function-bind": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cdktf/node_modules/get-intrinsic": { + "version": "1.2.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/cdktf/node_modules/glob": { - "version": "7.2.3", + "version": "8.1.0", "inBundle": true, "license": "ISC", "peer": true, @@ -1355,64 +1315,81 @@ "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cdktf/node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/cdktf/node_modules/gopd": { + "version": "1.0.1", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cdktf/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/cdktf/node_modules/graceful-fs": { + "version": "4.2.11", "inBundle": true, "license": "ISC", + "peer": true + }, + "node_modules/cdktf/node_modules/has-property-descriptors": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "get-intrinsic": "^1.2.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cdktf/node_modules/has-proto": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cdktf/node_modules/graceful-fs": { - "version": "4.2.10", + "node_modules/cdktf/node_modules/has-symbols": { + "version": "1.0.3", "inBundle": true, - "license": "ISC", - "peer": true + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/cdktf/node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/cdktf/node_modules/hasown": { + "version": "2.0.0", "inBundle": true, - "license": "BSD-3-Clause", - "peer": true + "license": "MIT", + "peer": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/cdktf/node_modules/inflight": { "version": "1.0.6", @@ -1431,18 +1408,24 @@ "peer": true }, "node_modules/cdktf/node_modules/isarray": { - "version": "1.0.0", + "version": "2.0.5", "inBundle": true, "license": "MIT", "peer": true }, "node_modules/cdktf/node_modules/json-stable-stringify": { - "version": "1.0.2", + "version": "1.1.0", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "jsonify": "^0.0.1" + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1469,8 +1452,14 @@ "node": ">= 0.6.3" } }, + "node_modules/cdktf/node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, "node_modules/cdktf/node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.7", + "version": "2.3.8", "inBundle": true, "license": "MIT", "peer": true, @@ -1484,6 +1473,12 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/cdktf/node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, "node_modules/cdktf/node_modules/lazystream/node_modules/string_decoder": { "version": "1.1.1", "inBundle": true, @@ -1493,32 +1488,8 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/cdktf/node_modules/lodash.defaults": { - "version": "4.2.0", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/cdktf/node_modules/lodash.difference": { - "version": "4.5.0", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/cdktf/node_modules/lodash.flatten": { - "version": "4.4.0", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/cdktf/node_modules/lodash.isplainobject": { - "version": "4.0.6", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/cdktf/node_modules/lodash.union": { - "version": "4.6.0", + "node_modules/cdktf/node_modules/lodash": { + "version": "4.17.21", "inBundle": true, "license": "MIT", "peer": true @@ -1536,7 +1507,7 @@ } }, "node_modules/cdktf/node_modules/minimatch": { - "version": "5.1.0", + "version": "5.1.6", "inBundle": true, "license": "ISC", "peer": true, @@ -1556,6 +1527,15 @@ "node": ">=0.10.0" } }, + "node_modules/cdktf/node_modules/object-keys": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/cdktf/node_modules/once": { "version": "1.4.0", "inBundle": true, @@ -1565,23 +1545,20 @@ "wrappy": "1" } }, - "node_modules/cdktf/node_modules/path-is-absolute": { - "version": "1.0.1", + "node_modules/cdktf/node_modules/process-nextick-args": { + "version": "2.0.1", "inBundle": true, "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "peer": true }, - "node_modules/cdktf/node_modules/process-nextick-args": { - "version": "2.0.1", + "node_modules/cdktf/node_modules/queue-tick": { + "version": "1.0.1", "inBundle": true, "license": "MIT", "peer": true }, "node_modules/cdktf/node_modules/readable-stream": { - "version": "3.6.0", + "version": "3.6.2", "inBundle": true, "license": "MIT", "peer": true, @@ -1595,7 +1572,7 @@ } }, "node_modules/cdktf/node_modules/readdir-glob": { - "version": "1.1.2", + "version": "1.1.3", "inBundle": true, "license": "Apache-2.0", "peer": true, @@ -1604,13 +1581,27 @@ } }, "node_modules/cdktf/node_modules/safe-buffer": { - "version": "5.1.2", + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "inBundle": true, "license": "MIT", "peer": true }, "node_modules/cdktf/node_modules/semver": { - "version": "7.5.3", + "version": "7.5.4", "inBundle": true, "license": "ISC", "peer": true, @@ -1624,49 +1615,49 @@ "node": ">=10" } }, - "node_modules/cdktf/node_modules/string_decoder": { - "version": "1.3.0", + "node_modules/cdktf/node_modules/set-function-length": { + "version": "1.1.1", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "safe-buffer": "~5.2.0" + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/cdktf/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/cdktf/node_modules/streamx": { + "version": "2.15.6", "inBundle": true, "license": "MIT", - "peer": true + "peer": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, + "node_modules/cdktf/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } }, "node_modules/cdktf/node_modules/tar-stream": { - "version": "2.2.0", + "version": "3.1.6", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/cdktf/node_modules/util-deprecate": { @@ -1688,23 +1679,23 @@ "peer": true }, "node_modules/cdktf/node_modules/zip-stream": { - "version": "4.1.0", + "version": "5.0.1", "inBundle": true, "license": "MIT", "peer": true, "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", + "archiver-utils": "^4.0.1", + "compress-commons": "^5.0.1", "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 10" + "node": ">= 12.0.0" } }, "node_modules/constructs": { - "version": "10.2.69", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.69.tgz", - "integrity": "sha512-0AiM/uQe5Uk6JVe/62oolmSN2MjbFQkOlYrM3fFGZLKuT+g7xlAI10EebFhyCcZwI2JAcWuWCmmCAyCothxjuw==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.3.0.tgz", + "integrity": "sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==", "peer": true, "engines": { "node": ">= 16.14.0" diff --git a/package.json b/package.json index 4c4d22e..f299bca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "dependencies": { "@aws-sdk/client-dynamodb": "^3.369.0", - "@cdktf/provider-aws": "^16.0.2" + "@cdktf/provider-aws": "^19.4.0" } }