diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/StateMachineJsonataDefaultTestDeployAssertF616C932.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/StateMachineJsonataDefaultTestDeployAssertF616C932.assets.json index dac159734ddce..e96c1684ba915 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/StateMachineJsonataDefaultTestDeployAssertF616C932.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/StateMachineJsonataDefaultTestDeployAssertF616C932.assets.json @@ -1,28 +1,29 @@ { - "version": "39.0.0", + "version": "48.0.0", "files": { - "bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981": { + "ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515": { "source": { - "path": "asset.bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981.bundle", + "path": "asset.ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515.bundle", "packaging": "zip" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-1c53d0df": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981.zip", + "objectKey": "ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "e62edc4e5a984f27be83f2ef8db0b7b4efb254db011313085081ecca7ce0fe07": { + "79005db68c917d873add7b863ed0c2bf0c52ed081170a7ecb1a3282969916d7c": { + "displayName": "StateMachineJsonataDefaultTestDeployAssertF616C932 Template", "source": { "path": "StateMachineJsonataDefaultTestDeployAssertF616C932.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-563e061b": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "e62edc4e5a984f27be83f2ef8db0b7b4efb254db011313085081ecca7ce0fe07.json", + "objectKey": "79005db68c917d873add7b863ed0c2bf0c52ed081170a7ecb1a3282969916d7c.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/StateMachineJsonataDefaultTestDeployAssertF616C932.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/StateMachineJsonataDefaultTestDeployAssertF616C932.template.json index cca91838b0e9f..50f2d686b627e 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/StateMachineJsonataDefaultTestDeployAssertF616C932.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/StateMachineJsonataDefaultTestDeployAssertF616C932.template.json @@ -30,7 +30,7 @@ "outputPaths": [ "executionArn" ], - "salt": "1737534967674" + "salt": "1762818467928" }, "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" @@ -97,20 +97,12 @@ "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F": { "Type": "AWS::Lambda::Function", "Properties": { - "Runtime": { - "Fn::FindInMap": [ - "LatestNodeRuntimeMap", - { - "Ref": "AWS::Region" - }, - "value" - ] - }, + "Runtime": "nodejs22.x", "Code": { "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981.zip" + "S3Key": "ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515.zip" }, "Timeout": 120, "Handler": "index.handler", @@ -155,7 +147,7 @@ } }, "flattenResponse": "false", - "salt": "1737534967675" + "salt": "1762818467929" }, "DependsOn": [ "AwsApiCallawssdkclientsfnStartExecutiond599fddec07a36a53e2a32316433d2e1" @@ -334,20 +326,12 @@ "SingletonFunction76b3e830a873425f8453eddd85c86925Handler81461ECE": { "Type": "AWS::Lambda::Function", "Properties": { - "Runtime": { - "Fn::FindInMap": [ - "LatestNodeRuntimeMap", - { - "Ref": "AWS::Region" - }, - "value" - ] - }, + "Runtime": "nodejs22.x", "Code": { "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981.zip" + "S3Key": "ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515.zip" }, "Timeout": 120, "Handler": "index.isComplete", @@ -384,20 +368,12 @@ "SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41aHandlerADF3E6EA": { "Type": "AWS::Lambda::Function", "Properties": { - "Runtime": { - "Fn::FindInMap": [ - "LatestNodeRuntimeMap", - { - "Ref": "AWS::Region" - }, - "value" - ] - }, + "Runtime": "nodejs22.x", "Code": { "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981.zip" + "S3Key": "ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515.zip" }, "Timeout": 120, "Handler": "index.onTimeout", @@ -410,130 +386,6 @@ } } }, - "Mappings": { - "LatestNodeRuntimeMap": { - "af-south-1": { - "value": "nodejs20.x" - }, - "ap-east-1": { - "value": "nodejs20.x" - }, - "ap-northeast-1": { - "value": "nodejs20.x" - }, - "ap-northeast-2": { - "value": "nodejs20.x" - }, - "ap-northeast-3": { - "value": "nodejs20.x" - }, - "ap-south-1": { - "value": "nodejs20.x" - }, - "ap-south-2": { - "value": "nodejs20.x" - }, - "ap-southeast-1": { - "value": "nodejs20.x" - }, - "ap-southeast-2": { - "value": "nodejs20.x" - }, - "ap-southeast-3": { - "value": "nodejs20.x" - }, - "ap-southeast-4": { - "value": "nodejs20.x" - }, - "ap-southeast-5": { - "value": "nodejs20.x" - }, - "ap-southeast-7": { - "value": "nodejs20.x" - }, - "ca-central-1": { - "value": "nodejs20.x" - }, - "ca-west-1": { - "value": "nodejs20.x" - }, - "cn-north-1": { - "value": "nodejs18.x" - }, - "cn-northwest-1": { - "value": "nodejs18.x" - }, - "eu-central-1": { - "value": "nodejs20.x" - }, - "eu-central-2": { - "value": "nodejs20.x" - }, - "eu-isoe-west-1": { - "value": "nodejs18.x" - }, - "eu-north-1": { - "value": "nodejs20.x" - }, - "eu-south-1": { - "value": "nodejs20.x" - }, - "eu-south-2": { - "value": "nodejs20.x" - }, - "eu-west-1": { - "value": "nodejs20.x" - }, - "eu-west-2": { - "value": "nodejs20.x" - }, - "eu-west-3": { - "value": "nodejs20.x" - }, - "il-central-1": { - "value": "nodejs20.x" - }, - "me-central-1": { - "value": "nodejs20.x" - }, - "me-south-1": { - "value": "nodejs20.x" - }, - "mx-central-1": { - "value": "nodejs20.x" - }, - "sa-east-1": { - "value": "nodejs20.x" - }, - "us-east-1": { - "value": "nodejs20.x" - }, - "us-east-2": { - "value": "nodejs20.x" - }, - "us-gov-east-1": { - "value": "nodejs18.x" - }, - "us-gov-west-1": { - "value": "nodejs18.x" - }, - "us-iso-east-1": { - "value": "nodejs18.x" - }, - "us-iso-west-1": { - "value": "nodejs18.x" - }, - "us-isob-east-1": { - "value": "nodejs18.x" - }, - "us-west-1": { - "value": "nodejs20.x" - }, - "us-west-2": { - "value": "nodejs20.x" - } - } - }, "Outputs": { "AssertionResultsAwsApiCallawssdkclientsfnDescribeExecutionac88b279f453a1dced8aef702c638a0f": { "Value": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/asset.bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981.bundle/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/asset.ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515.bundle/index.js similarity index 90% rename from packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/asset.bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981.bundle/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/asset.ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515.bundle/index.js index 60e59701bc0e1..2ed47ba2ab00a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/asset.bfcf4228d6660f50e81f19efdb64c6388dda6796296eb239decdff1dbc2f4981.bundle/index.js +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/asset.ca235e6258b11c240506ff06f79037eca461b8d0d9464a947a386d38d8163515.bundle/index.js @@ -64,14 +64,18 @@ var init_matcher = __esm({ } }; MatchResult = class { + /** + * The target for which this result was generated. + */ + target; + failuresHere = /* @__PURE__ */ new Map(); + captures = /* @__PURE__ */ new Map(); + finalized = false; + innerMatchFailures = /* @__PURE__ */ new Map(); + _hasFailed = false; + _failCount = 0; + _cost = 0; constructor(target) { - this.failuresHere = /* @__PURE__ */ new Map(); - this.captures = /* @__PURE__ */ new Map(); - this.finalized = false; - this.innerMatchFailures = /* @__PURE__ */ new Map(); - this._hasFailed = false; - this._failCount = 0; - this._cost = 0; this.target = target; } /** @@ -317,6 +321,34 @@ ${indents.join("")}`)); } }); +// ../../aws-cdk-lib/assertions/lib/private/error.ts +var ASSERTION_ERROR_SYMBOL, AssertionError; +var init_error = __esm({ + "../../aws-cdk-lib/assertions/lib/private/error.ts"() { + "use strict"; + ASSERTION_ERROR_SYMBOL = Symbol.for("@aws-cdk/assertions.AssertionError"); + AssertionError = class _AssertionError extends Error { + #time; + /** + * The time the error was thrown. + */ + get time() { + return this.#time; + } + get type() { + return "assertion"; + } + constructor(msg) { + super(msg); + Object.setPrototypeOf(this, _AssertionError.prototype); + Object.defineProperty(this, ASSERTION_ERROR_SYMBOL, { value: true }); + this.name = new.target.name; + this.#time = (/* @__PURE__ */ new Date()).toISOString(); + } + }; + } +}); + // ../../aws-cdk-lib/assertions/lib/private/matchers/absent.ts var AbsentMatch; var init_absent = __esm({ @@ -376,9 +408,7 @@ var init_sparse_matrix = __esm({ "../../aws-cdk-lib/assertions/lib/private/sparse-matrix.ts"() { "use strict"; SparseMatrix = class { - constructor() { - this.matrix = /* @__PURE__ */ new Map(); - } + matrix = /* @__PURE__ */ new Map(); get(row, col) { return this.matrix.get(row)?.get(col); } @@ -417,6 +447,7 @@ var init_match = __esm({ "../../aws-cdk-lib/assertions/lib/match.ts"() { "use strict"; init_matcher(); + init_error(); init_absent(); init_sorting(); init_sparse_matrix(); @@ -501,9 +532,10 @@ var init_match = __esm({ this.pattern = pattern; this.partialObjects = options.partialObjects ?? false; if (Matcher.isMatcher(this.pattern)) { - throw new Error("LiteralMatch cannot directly contain another matcher. Remove the top-level matcher or nest it more deeply."); + throw new AssertionError("LiteralMatch cannot directly contain another matcher. Remove the top-level matcher or nest it more deeply."); } } + partialObjects; test(actual) { if (Array.isArray(this.pattern)) { return new ArrayMatch(this.name, this.pattern, { subsequence: false, partialObjects: this.partialObjects }).test(actual); @@ -538,6 +570,8 @@ var init_match = __esm({ this.subsequence = options.subsequence ?? true; this.partialObjects = options.partialObjects ?? false; } + subsequence; + partialObjects; test(actual) { if (!Array.isArray(actual)) { return new MatchResult(actual).recordFailure({ @@ -583,7 +617,7 @@ var init_match = __esm({ const matcher = Matcher.isMatcher(patternElement) ? patternElement : new LiteralMatch(this.name, patternElement, { partialObjects: this.partialObjects }); const matcherName = matcher.name; if (matcherName == "absent" || matcherName == "anyValue") { - throw new Error(`The Matcher ${matcherName}() cannot be nested within arrayWith()`); + throw new AssertionError(`The Matcher ${matcherName}() cannot be nested within arrayWith()`); } const innerResult = matcher.test(actual[actualIdx]); matches.set(patternIdx, actualIdx, innerResult); @@ -638,6 +672,7 @@ var init_match = __esm({ this.pattern = pattern; this.partial = options.partial ?? true; } + partial; test(actual) { if (typeof actual !== "object" || Array.isArray(actual)) { return new MatchResult(actual).recordFailure({ @@ -784,7 +819,7 @@ var init_match = __esm({ var require_helpers_internal = __commonJS({ "../../aws-cdk-lib/assertions/lib/helpers-internal/index.js"(exports2) { "use strict"; - var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); @@ -794,11 +829,11 @@ var require_helpers_internal = __commonJS({ } }; } Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { + }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; - }); + })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) @@ -807,11 +842,23 @@ var require_helpers_internal = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); var _noFold; exports2.Match = void 0; - Object.defineProperty(exports2, _noFold = "Match", { enumerable: true, configurable: true, get: () => (init_match(), __toCommonJS(match_exports)).Match }); + Object.defineProperty(exports2, _noFold = "Match", { enumerable: true, configurable: true, get: () => { + var value = (init_match(), __toCommonJS(match_exports)).Match; + Object.defineProperty(exports2, _noFold = "Match", { enumerable: true, configurable: true, value }); + return value; + } }); exports2.Matcher = void 0; - Object.defineProperty(exports2, _noFold = "Matcher", { enumerable: true, configurable: true, get: () => (init_matcher(), __toCommonJS(matcher_exports)).Matcher }); + Object.defineProperty(exports2, _noFold = "Matcher", { enumerable: true, configurable: true, get: () => { + var value = (init_matcher(), __toCommonJS(matcher_exports)).Matcher; + Object.defineProperty(exports2, _noFold = "Matcher", { enumerable: true, configurable: true, value }); + return value; + } }); exports2.MatchResult = void 0; - Object.defineProperty(exports2, _noFold = "MatchResult", { enumerable: true, configurable: true, get: () => (init_matcher(), __toCommonJS(matcher_exports)).MatchResult }); + Object.defineProperty(exports2, _noFold = "MatchResult", { enumerable: true, configurable: true, get: () => { + var value = (init_matcher(), __toCommonJS(matcher_exports)).MatchResult; + Object.defineProperty(exports2, _noFold = "MatchResult", { enumerable: true, configurable: true, value }); + return value; + } }); } }); @@ -3303,13 +3350,17 @@ var require_dist_cjs19 = __commonJS({ } return transformedHeaders; }, "getTransformedHeaders"); + var timing = { + setTimeout: (cb, ms) => setTimeout(cb, ms), + clearTimeout: (timeoutId) => clearTimeout(timeoutId) + }; var DEFER_EVENT_LISTENER_TIME = 1e3; var setConnectionTimeout = /* @__PURE__ */ __name((request2, reject, timeoutInMs = 0) => { if (!timeoutInMs) { return -1; } const registerTimeout = /* @__PURE__ */ __name((offset) => { - const timeoutId = setTimeout(() => { + const timeoutId = timing.setTimeout(() => { request2.destroy(); reject( Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), { @@ -3320,10 +3371,10 @@ var require_dist_cjs19 = __commonJS({ const doWithSocket = /* @__PURE__ */ __name((socket) => { if (socket == null ? void 0 : socket.connecting) { socket.on("connect", () => { - clearTimeout(timeoutId); + timing.clearTimeout(timeoutId); }); } else { - clearTimeout(timeoutId); + timing.clearTimeout(timeoutId); } }, "doWithSocket"); if (request2.socket) { @@ -3336,7 +3387,7 @@ var require_dist_cjs19 = __commonJS({ registerTimeout(0); return 0; } - return setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); + return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); }, "setConnectionTimeout"); var DEFER_EVENT_LISTENER_TIME2 = 3e3; var setSocketKeepAlive = /* @__PURE__ */ __name((request2, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME2) => { @@ -3356,21 +3407,27 @@ var require_dist_cjs19 = __commonJS({ registerListener(); return 0; } - return setTimeout(registerListener, deferTimeMs); + return timing.setTimeout(registerListener, deferTimeMs); }, "setSocketKeepAlive"); var DEFER_EVENT_LISTENER_TIME3 = 3e3; var setSocketTimeout = /* @__PURE__ */ __name((request2, reject, timeoutInMs = 0) => { const registerTimeout = /* @__PURE__ */ __name((offset) => { - request2.setTimeout(timeoutInMs - offset, () => { + const timeout = timeoutInMs - offset; + const onTimeout2 = /* @__PURE__ */ __name(() => { request2.destroy(); reject(Object.assign(new Error(`Connection timed out after ${timeoutInMs} ms`), { name: "TimeoutError" })); - }); + }, "onTimeout"); + if (request2.socket) { + request2.socket.setTimeout(timeout, onTimeout2); + } else { + request2.setTimeout(timeout, onTimeout2); + } }, "registerTimeout"); if (0 < timeoutInMs && timeoutInMs < 6e3) { registerTimeout(0); return 0; } - return setTimeout( + return timing.setTimeout( registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME3), DEFER_EVENT_LISTENER_TIME3 ); @@ -3381,26 +3438,29 @@ var require_dist_cjs19 = __commonJS({ const headers = request2.headers ?? {}; const expect = headers["Expect"] || headers["expect"]; let timeoutId = -1; - let hasError = false; + let sendBody = true; if (expect === "100-continue") { - await Promise.race([ + sendBody = await Promise.race([ new Promise((resolve) => { - timeoutId = Number(setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); + timeoutId = Number(timing.setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); }), new Promise((resolve) => { httpRequest.on("continue", () => { - clearTimeout(timeoutId); - resolve(); + timing.clearTimeout(timeoutId); + resolve(true); + }); + httpRequest.on("response", () => { + timing.clearTimeout(timeoutId); + resolve(false); }); httpRequest.on("error", () => { - hasError = true; - clearTimeout(timeoutId); - resolve(); + timing.clearTimeout(timeoutId); + resolve(false); }); }) ]); } - if (!hasError) { + if (sendBody) { writeBody(httpRequest, request2.body); } } @@ -3522,12 +3582,12 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf const timeouts = []; const resolve = /* @__PURE__ */ __name(async (arg) => { await writeRequestBodyPromise; - timeouts.forEach(clearTimeout); + timeouts.forEach(timing.clearTimeout); _resolve(arg); }, "resolve"); const reject = /* @__PURE__ */ __name(async (arg) => { await writeRequestBodyPromise; - timeouts.forEach(clearTimeout); + timeouts.forEach(timing.clearTimeout); _reject(arg); }, "reject"); if (!this.config) { @@ -3542,7 +3602,7 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf const isSSL = request2.protocol === "https:"; const agent = isSSL ? this.config.httpsAgent : this.config.httpAgent; timeouts.push( - setTimeout( + timing.setTimeout( () => { this.socketWarningTimestamp = _NodeHttpHandler2.checkSocketUsage( agent, @@ -3628,7 +3688,7 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf ); } writeRequestBodyPromise = writeRequestBody(req, request2, this.config.requestTimeout).catch((e) => { - timeouts.forEach(clearTimeout); + timeouts.forEach(timing.clearTimeout); return _reject(e); }); }); @@ -3761,7 +3821,7 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf } } setMaxConcurrentStreams(maxConcurrentStreams) { - if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) { + if (maxConcurrentStreams && maxConcurrentStreams <= 0) { throw new RangeError("maxConcurrentStreams must be greater than zero."); } this.config.maxConcurrency = maxConcurrentStreams; @@ -4031,6 +4091,10 @@ var require_dist_cjs20 = __commonJS({ module2.exports = __toCommonJS2(src_exports); var import_protocol_http8 = require_dist_cjs2(); var import_querystring_builder = require_dist_cjs18(); + function createRequest(url2, requestOptions) { + return new Request(url2, requestOptions); + } + __name(createRequest, "createRequest"); function requestTimeout(timeoutInMs = 0) { return new Promise((resolve, reject) => { if (timeoutInMs) { @@ -4066,7 +4130,7 @@ var require_dist_cjs20 = __commonJS({ } if (keepAliveSupport.supported === void 0) { keepAliveSupport.supported = Boolean( - typeof Request !== "undefined" && "keepalive" in new Request("https://[::1]") + typeof Request !== "undefined" && "keepalive" in createRequest("https://[::1]") ); } } @@ -4125,7 +4189,7 @@ var require_dist_cjs20 = __commonJS({ } let removeSignalEventListener = /* @__PURE__ */ __name(() => { }, "removeSignalEventListener"); - const fetchRequest = new Request(url2, requestOptions); + const fetchRequest = createRequest(url2, requestOptions); const raceOfPromises = [ fetch(fetchRequest).then((response) => { const fetchHeaders = response.headers; @@ -4188,12 +4252,23 @@ var require_dist_cjs20 = __commonJS({ }; __name(_FetchHttpHandler, "FetchHttpHandler"); var FetchHttpHandler = _FetchHttpHandler; + var import_util_base64 = require_dist_cjs16(); var streamCollector = /* @__PURE__ */ __name(async (stream) => { - if (typeof Blob === "function" && stream instanceof Blob) { - return new Uint8Array(await stream.arrayBuffer()); + var _a; + if (typeof Blob === "function" && stream instanceof Blob || ((_a = stream.constructor) == null ? void 0 : _a.name) === "Blob") { + if (Blob.prototype.arrayBuffer !== void 0) { + return new Uint8Array(await stream.arrayBuffer()); + } + return collectBlob(stream); } return collectStream(stream); }, "streamCollector"); + async function collectBlob(blob) { + const base64 = await readToBase64(blob); + const arrayBuffer = (0, import_util_base64.fromBase64)(base64); + return new Uint8Array(arrayBuffer); + } + __name(collectBlob, "collectBlob"); async function collectStream(stream) { const chunks = []; const reader = stream.getReader(); @@ -4216,6 +4291,24 @@ var require_dist_cjs20 = __commonJS({ return collected; } __name(collectStream, "collectStream"); + function readToBase64(blob) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => { + if (reader.readyState !== 2) { + return reject(new Error("Reader aborted too early")); + } + const result = reader.result ?? ""; + const commaIndex = result.indexOf(","); + const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length; + resolve(result.substring(dataOffset)); + }; + reader.onabort = () => reject(new Error("Read aborted")); + reader.onerror = () => reject(reader.error); + reader.readAsDataURL(blob); + }); + } + __name(readToBase64, "readToBase64"); } }); @@ -4288,12 +4381,17 @@ var require_stream_type_check = __commonJS({ "../../../node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.isReadableStream = void 0; + exports2.isBlob = exports2.isReadableStream = void 0; var isReadableStream2 = (stream) => { var _a; return typeof ReadableStream === "function" && (((_a = stream === null || stream === void 0 ? void 0 : stream.constructor) === null || _a === void 0 ? void 0 : _a.name) === ReadableStream.name || stream instanceof ReadableStream); }; exports2.isReadableStream = isReadableStream2; + var isBlob2 = (blob) => { + var _a; + return typeof Blob === "function" && (((_a = blob === null || blob === void 0 ? void 0 : blob.constructor) === null || _a === void 0 ? void 0 : _a.name) === Blob.name || blob instanceof Blob); + }; + exports2.isBlob = isBlob2; } }); @@ -4374,7 +4472,6 @@ var require_sdk_stream_mixin = __commonJS({ var node_http_handler_1 = require_dist_cjs19(); var util_buffer_from_1 = require_dist_cjs14(); var stream_1 = require("stream"); - var util_1 = require("util"); var sdk_stream_mixin_browser_1 = require_sdk_stream_mixin_browser(); var ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; var sdkStreamMixin2 = (stream) => { @@ -4402,7 +4499,7 @@ var require_sdk_stream_mixin = __commonJS({ if (encoding === void 0 || Buffer.isEncoding(encoding)) { return (0, util_buffer_from_1.fromArrayBuffer)(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding); } else { - const decoder2 = new util_1.TextDecoder(encoding); + const decoder2 = new TextDecoder(encoding); return decoder2.decode(buf); } }, @@ -4452,7 +4549,7 @@ var require_splitStream = __commonJS({ var splitStream_browser_1 = require_splitStream_browser(); var stream_type_check_1 = require_stream_type_check(); async function splitStream2(stream) { - if ((0, stream_type_check_1.isReadableStream)(stream)) { + if ((0, stream_type_check_1.isReadableStream)(stream) || (0, stream_type_check_1.isBlob)(stream)) { return (0, splitStream_browser_1.splitStream)(stream); } const stream1 = new stream_1.PassThrough(); @@ -4801,6 +4898,26 @@ var init_extended_encode_uri_component = __esm({ } }); +// ../../../node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js +var resolvedPath2; +var init_resolve_path = __esm({ + "../../../node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js"() { + init_extended_encode_uri_component(); + resolvedPath2 = (resolvedPath3, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { + if (input != null && input[memberName] !== void 0) { + const labelValue = labelValueProvider(); + if (labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: " + memberName + "."); + } + resolvedPath3 = resolvedPath3.replace(uriLabel, isGreedyLabel ? labelValue.split("/").map((segment) => extendedEncodeURIComponent2(segment)).join("/") : extendedEncodeURIComponent2(labelValue)); + } else { + throw new Error("No value provided for input HTTP label: " + memberName + "."); + } + return resolvedPath3; + }; + } +}); + // ../../../node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js function requestBuilder(input, context) { return new RequestBuilder(input, context); @@ -4808,8 +4925,8 @@ function requestBuilder(input, context) { var import_protocol_http2, RequestBuilder; var init_requestBuilder = __esm({ "../../../node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js"() { - init_protocols(); import_protocol_http2 = __toESM(require_dist_cjs2()); + init_resolve_path(); RequestBuilder = class { constructor(input, context) { this.input = input; @@ -4875,26 +4992,6 @@ var init_requestBuilder = __esm({ } }); -// ../../../node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js -var resolvedPath2; -var init_resolve_path = __esm({ - "../../../node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js"() { - init_extended_encode_uri_component(); - resolvedPath2 = (resolvedPath3, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { - if (input != null && input[memberName] !== void 0) { - const labelValue = labelValueProvider(); - if (labelValue.length <= 0) { - throw new Error("Empty value provided for input HTTP label: " + memberName + "."); - } - resolvedPath3 = resolvedPath3.replace(uriLabel, isGreedyLabel ? labelValue.split("/").map((segment) => extendedEncodeURIComponent2(segment)).join("/") : extendedEncodeURIComponent2(labelValue)); - } else { - throw new Error("No value provided for input HTTP label: " + memberName + "."); - } - return resolvedPath3; - }; - } -}); - // ../../../node_modules/@smithy/core/dist-es/submodules/protocols/index.js var protocols_exports = {}; __export(protocols_exports, { @@ -5352,9 +5449,9 @@ var require_dist_cjs24 = __commonJS({ } }); -// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js +// ../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js var require_getHomeDir = __commonJS({ - "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports2) { + "../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getHomeDir = void 0; @@ -5384,9 +5481,9 @@ var require_getHomeDir = __commonJS({ } }); -// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js +// ../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js var require_getSSOTokenFilepath = __commonJS({ - "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports2) { + "../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getSSOTokenFilepath = void 0; @@ -5402,9 +5499,9 @@ var require_getSSOTokenFilepath = __commonJS({ } }); -// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js +// ../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js var require_getSSOTokenFromFile = __commonJS({ - "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports2) { + "../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getSSOTokenFromFile = void 0; @@ -5420,9 +5517,9 @@ var require_getSSOTokenFromFile = __commonJS({ } }); -// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js +// ../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js var require_slurpFile = __commonJS({ - "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports2) { + "../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.slurpFile = void 0; @@ -5439,9 +5536,9 @@ var require_slurpFile = __commonJS({ } }); -// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +// ../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js var require_dist_cjs25 = __commonJS({ - "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports2, module2) { + "../../../node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; var __getOwnPropNames2 = Object.getOwnPropertyNames; @@ -5690,114 +5787,96 @@ var require_dist_cjs26 = __commonJS({ } }); -// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js -var require_getEndpointUrlConfig = __commonJS({ - "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js"(exports2) { +// ../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js +var require_getHomeDir2 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.getEndpointUrlConfig = void 0; - var shared_ini_file_loader_1 = require_dist_cjs25(); - var ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; - var CONFIG_ENDPOINT_URL = "endpoint_url"; - var getEndpointUrlConfig = (serviceId) => ({ - environmentVariableSelector: (env) => { - const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); - const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; - if (serviceEndpointUrl) - return serviceEndpointUrl; - const endpointUrl = env[ENV_ENDPOINT_URL]; - if (endpointUrl) - return endpointUrl; - return void 0; - }, - configFileSelector: (profile, config) => { - if (config && profile.services) { - const servicesSection = config[["services", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; - if (servicesSection) { - const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); - const endpointUrl2 = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; - if (endpointUrl2) - return endpointUrl2; - } - } - const endpointUrl = profile[CONFIG_ENDPOINT_URL]; - if (endpointUrl) - return endpointUrl; - return void 0; - }, - default: void 0 - }); - exports2.getEndpointUrlConfig = getEndpointUrlConfig; + exports2.getHomeDir = void 0; + var os_1 = require("os"); + var path_1 = require("path"); + var homeDirCache = {}; + var getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; + }; + var getHomeDir2 = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = (0, os_1.homedir)(); + return homeDirCache[homeDirCacheKey]; + }; + exports2.getHomeDir = getHomeDir2; } }); -// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js -var require_getEndpointFromConfig = __commonJS({ - "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js"(exports2) { +// ../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js +var require_getSSOTokenFilepath2 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.getEndpointFromConfig = void 0; - var node_config_provider_1 = require_dist_cjs26(); - var getEndpointUrlConfig_1 = require_getEndpointUrlConfig(); - var getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId !== null && serviceId !== void 0 ? serviceId : ""))(); - exports2.getEndpointFromConfig = getEndpointFromConfig; + exports2.getSSOTokenFilepath = void 0; + var crypto_1 = require("crypto"); + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir2(); + var getSSOTokenFilepath2 = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); + }; + exports2.getSSOTokenFilepath = getSSOTokenFilepath2; } }); -// ../../../node_modules/@smithy/querystring-parser/dist-cjs/index.js -var require_dist_cjs27 = __commonJS({ - "../../../node_modules/@smithy/querystring-parser/dist-cjs/index.js"(exports2, module2) { - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); - var __export2 = (target, all) => { - for (var name in all) - __defProp2(target, name, { get: all[name], enumerable: true }); +// ../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js +var require_getSSOTokenFromFile2 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFromFile = void 0; + var fs_1 = require("fs"); + var getSSOTokenFilepath_1 = require_getSSOTokenFilepath2(); + var { readFile } = fs_1.promises; + var getSSOTokenFromFile2 = async (id) => { + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); }; - var __copyProps2 = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + exports2.getSSOTokenFromFile = getSSOTokenFromFile2; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js +var require_slurpFile2 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.slurpFile = void 0; + var fs_1 = require("fs"); + var { readFile } = fs_1.promises; + var filePromisesHash = {}; + var slurpFile = (path, options) => { + if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) { + filePromisesHash[path] = readFile(path, "utf8"); } - return to; + return filePromisesHash[path]; }; - var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); - var src_exports = {}; - __export2(src_exports, { - parseQueryString: () => parseQueryString - }); - module2.exports = __toCommonJS2(src_exports); - function parseQueryString(querystring) { - const query = {}; - querystring = querystring.replace(/^\?/, ""); - if (querystring) { - for (const pair of querystring.split("&")) { - let [key, value = null] = pair.split("="); - key = decodeURIComponent(key); - if (value) { - value = decodeURIComponent(value); - } - if (!(key in query)) { - query[key] = value; - } else if (Array.isArray(query[key])) { - query[key].push(value); - } else { - query[key] = [query[key], value]; - } - } - } - return query; - } - __name(parseQueryString, "parseQueryString"); + exports2.slurpFile = slurpFile; } }); -// ../../../node_modules/@smithy/url-parser/dist-cjs/index.js -var require_dist_cjs28 = __commonJS({ - "../../../node_modules/@smithy/url-parser/dist-cjs/index.js"(exports2, module2) { +// ../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +var require_dist_cjs27 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; var __getOwnPropNames2 = Object.getOwnPropertyNames; @@ -5815,20 +5894,290 @@ var require_dist_cjs28 = __commonJS({ } return to; }; + var __reExport = (target, mod, secondTarget) => (__copyProps2(target, mod, "default"), secondTarget && __copyProps2(secondTarget, mod, "default")); var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); var src_exports = {}; __export2(src_exports, { - parseUrl: () => parseUrl + CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR, + DEFAULT_PROFILE: () => DEFAULT_PROFILE, + ENV_PROFILE: () => ENV_PROFILE, + getProfileName: () => getProfileName, + loadSharedConfigFiles: () => loadSharedConfigFiles, + loadSsoSessionData: () => loadSsoSessionData, + parseKnownFiles: () => parseKnownFiles }); module2.exports = __toCommonJS2(src_exports); - var import_querystring_parser = require_dist_cjs27(); - var parseUrl = /* @__PURE__ */ __name((url2) => { - if (typeof url2 === "string") { - return parseUrl(new URL(url2)); + __reExport(src_exports, require_getHomeDir2(), module2.exports); + var ENV_PROFILE = "AWS_PROFILE"; + var DEFAULT_PROFILE = "default"; + var getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, "getProfileName"); + __reExport(src_exports, require_getSSOTokenFilepath2(), module2.exports); + __reExport(src_exports, require_getSSOTokenFromFile2(), module2.exports); + var import_types5 = require_dist_cjs(); + var getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; } - const { hostname, pathname, port, protocol, search } = url2; - let query; - if (search) { + return Object.values(import_types5.IniSectionType).includes(key.substring(0, indexOfSeparator)); + }).reduce( + (acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === import_types5.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; + }, + { + // Populate default profile, if present. + ...data.default && { default: data.default } + } + ), "getConfigData"); + var import_path = require("path"); + var import_getHomeDir = require_getHomeDir2(); + var ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; + var getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), ".aws", "config"), "getConfigFilepath"); + var import_getHomeDir2 = require_getHomeDir2(); + var ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; + var getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), ".aws", "credentials"), "getCredentialsFilepath"); + var import_getHomeDir3 = require_getHomeDir2(); + var prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; + var profileNameBlockList = ["__proto__", "profile __proto__"]; + var parseIni = /* @__PURE__ */ __name((iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = void 0; + currentSubSection = void 0; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(import_types5.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim() + ]; + if (value === "") { + currentSubSection = name; + } else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = void 0; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; + }, "parseIni"); + var import_slurpFile = require_slurpFile2(); + var swallowError = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var CONFIG_PREFIX_SEPARATOR = "."; + var loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = (0, import_getHomeDir3.getHomeDir)(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = (0, import_path.join)(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = (0, import_path.join)(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + (0, import_slurpFile.slurpFile)(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).then(getConfigData).catch(swallowError), + (0, import_slurpFile.slurpFile)(resolvedFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).catch(swallowError) + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1] + }; + }, "loadSharedConfigFiles"); + var getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types5.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), "getSsoSessionData"); + var import_slurpFile2 = require_slurpFile2(); + var swallowError2 = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), "loadSsoSessionData"); + var mergeConfigFiles = /* @__PURE__ */ __name((...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== void 0) { + Object.assign(merged[key], values); + } else { + merged[key] = values; + } + } + } + return merged; + }, "mergeConfigFiles"); + var parseKnownFiles = /* @__PURE__ */ __name(async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); + }, "parseKnownFiles"); + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js +var require_getEndpointUrlConfig = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getEndpointUrlConfig = void 0; + var shared_ini_file_loader_1 = require_dist_cjs27(); + var ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; + var CONFIG_ENDPOINT_URL = "endpoint_url"; + var getEndpointUrlConfig = (serviceId) => ({ + environmentVariableSelector: (env) => { + const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); + const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return void 0; + }, + configFileSelector: (profile, config) => { + if (config && profile.services) { + const servicesSection = config[["services", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; + if (servicesSection) { + const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); + const endpointUrl2 = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; + if (endpointUrl2) + return endpointUrl2; + } + } + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return void 0; + }, + default: void 0 + }); + exports2.getEndpointUrlConfig = getEndpointUrlConfig; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js +var require_getEndpointFromConfig = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getEndpointFromConfig = void 0; + var node_config_provider_1 = require_dist_cjs26(); + var getEndpointUrlConfig_1 = require_getEndpointUrlConfig(); + var getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId !== null && serviceId !== void 0 ? serviceId : ""))(); + exports2.getEndpointFromConfig = getEndpointFromConfig; + } +}); + +// ../../../node_modules/@smithy/querystring-parser/dist-cjs/index.js +var require_dist_cjs28 = __commonJS({ + "../../../node_modules/@smithy/querystring-parser/dist-cjs/index.js"(exports2, module2) { + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); + var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); + var src_exports = {}; + __export2(src_exports, { + parseQueryString: () => parseQueryString + }); + module2.exports = __toCommonJS2(src_exports); + function parseQueryString(querystring) { + const query = {}; + querystring = querystring.replace(/^\?/, ""); + if (querystring) { + for (const pair of querystring.split("&")) { + let [key, value = null] = pair.split("="); + key = decodeURIComponent(key); + if (value) { + value = decodeURIComponent(value); + } + if (!(key in query)) { + query[key] = value; + } else if (Array.isArray(query[key])) { + query[key].push(value); + } else { + query[key] = [query[key], value]; + } + } + } + return query; + } + __name(parseQueryString, "parseQueryString"); + } +}); + +// ../../../node_modules/@smithy/url-parser/dist-cjs/index.js +var require_dist_cjs29 = __commonJS({ + "../../../node_modules/@smithy/url-parser/dist-cjs/index.js"(exports2, module2) { + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); + var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); + var src_exports = {}; + __export2(src_exports, { + parseUrl: () => parseUrl + }); + module2.exports = __toCommonJS2(src_exports); + var import_querystring_parser = require_dist_cjs28(); + var parseUrl = /* @__PURE__ */ __name((url2) => { + if (typeof url2 === "string") { + return parseUrl(new URL(url2)); + } + const { hostname, pathname, port, protocol, search } = url2; + let query; + if (search) { query = (0, import_querystring_parser.parseQueryString)(search); } return { @@ -5843,7 +6192,7 @@ var require_dist_cjs28 = __commonJS({ }); // ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/index.js -var require_dist_cjs29 = __commonJS({ +var require_dist_cjs30 = __commonJS({ "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -5945,7 +6294,7 @@ var require_dist_cjs29 = __commonJS({ return configProvider; }, "createConfigValueProvider"); var import_getEndpointFromConfig = require_getEndpointFromConfig(); - var import_url_parser = require_dist_cjs28(); + var import_url_parser = require_dist_cjs29(); var toEndpointV1 = /* @__PURE__ */ __name((endpoint) => { if (typeof endpoint === "object") { if ("url" in endpoint) { @@ -5990,6 +6339,9 @@ var require_dist_cjs29 = __commonJS({ case "builtInParams": endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)(); break; + case "operationContextParams": + endpointParams[name] = instruction.get(commandInput); + break; default: throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); } @@ -6449,7 +6801,7 @@ var init_esm_node = __esm({ }); // ../../../node_modules/@smithy/service-error-classification/dist-cjs/index.js -var require_dist_cjs30 = __commonJS({ +var require_dist_cjs31 = __commonJS({ "../../../node_modules/@smithy/service-error-classification/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -6517,9 +6869,9 @@ var require_dist_cjs30 = __commonJS({ var _a, _b; return ((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) === 429 || THROTTLING_ERROR_CODES.includes(error.name) || ((_b = error.$retryable) == null ? void 0 : _b.throttling) == true; }, "isThrottlingError"); - var isTransientError = /* @__PURE__ */ __name((error) => { + var isTransientError = /* @__PURE__ */ __name((error, depth = 0) => { var _a; - return isClockSkewCorrectedError(error) || TRANSIENT_ERROR_CODES.includes(error.name) || NODEJS_TIMEOUT_ERROR_CODES.includes((error == null ? void 0 : error.code) || "") || TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) || 0); + return isClockSkewCorrectedError(error) || TRANSIENT_ERROR_CODES.includes(error.name) || NODEJS_TIMEOUT_ERROR_CODES.includes((error == null ? void 0 : error.code) || "") || TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) || 0) || error.cause !== void 0 && depth <= 10 && isTransientError(error.cause, depth + 1); }, "isTransientError"); var isServerError = /* @__PURE__ */ __name((error) => { var _a; @@ -6536,7 +6888,7 @@ var require_dist_cjs30 = __commonJS({ }); // ../../../node_modules/@smithy/util-retry/dist-cjs/index.js -var require_dist_cjs31 = __commonJS({ +var require_dist_cjs32 = __commonJS({ "../../../node_modules/@smithy/util-retry/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -6583,8 +6935,8 @@ var require_dist_cjs31 = __commonJS({ })(RETRY_MODES || {}); var DEFAULT_MAX_ATTEMPTS = 3; var DEFAULT_RETRY_MODE = "standard"; - var import_service_error_classification = require_dist_cjs30(); - var _DefaultRateLimiter = class _DefaultRateLimiter { + var import_service_error_classification = require_dist_cjs31(); + var _DefaultRateLimiter = class _DefaultRateLimiter2 { constructor(options) { this.currentCapacity = 0; this.enabled = false; @@ -6617,7 +6969,7 @@ var require_dist_cjs31 = __commonJS({ this.refillTokenBucket(); if (amount > this.currentCapacity) { const delay = (amount - this.currentCapacity) / this.fillRate * 1e3; - await new Promise((resolve) => setTimeout(resolve, delay)); + await new Promise((resolve) => _DefaultRateLimiter2.setTimeoutFn(resolve, delay)); } this.currentCapacity = this.currentCapacity - amount; } @@ -6684,6 +7036,7 @@ var require_dist_cjs31 = __commonJS({ } }; __name(_DefaultRateLimiter, "DefaultRateLimiter"); + _DefaultRateLimiter.setTimeoutFn = setTimeout; var DefaultRateLimiter = _DefaultRateLimiter; var DEFAULT_RETRY_DELAY_BASE = 100; var MAXIMUM_RETRY_DELAY = 20 * 1e3; @@ -6850,7 +7203,7 @@ var require_dist_cjs31 = __commonJS({ }); // ../../../node_modules/@smithy/middleware-stack/dist-cjs/index.js -var require_dist_cjs32 = __commonJS({ +var require_dist_cjs33 = __commonJS({ "../../../node_modules/@smithy/middleware-stack/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -7167,7 +7520,7 @@ var require_dist_cjs32 = __commonJS({ }); // ../../../node_modules/@smithy/smithy-client/dist-cjs/index.js -var require_dist_cjs33 = __commonJS({ +var require_dist_cjs34 = __commonJS({ "../../../node_modules/@smithy/smithy-client/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -7195,9 +7548,8 @@ var require_dist_cjs33 = __commonJS({ NoOpLogger: () => NoOpLogger, SENSITIVE_STRING: () => SENSITIVE_STRING, ServiceException: () => ServiceException, - StringWrapper: () => StringWrapper, _json: () => _json, - collectBody: () => import_protocols3.collectBody, + collectBody: () => import_protocols2.collectBody, convertMap: () => convertMap, createAggregatedClient: () => createAggregatedClient, dateToUtcString: () => dateToUtcString, @@ -7215,7 +7567,7 @@ var require_dist_cjs33 = __commonJS({ expectShort: () => expectShort, expectString: () => expectString, expectUnion: () => expectUnion2, - extendedEncodeURIComponent: () => import_protocols3.extendedEncodeURIComponent, + extendedEncodeURIComponent: () => import_protocols2.extendedEncodeURIComponent, getArrayIfSingleItem: () => getArrayIfSingleItem, getDefaultClientConfiguration: () => getDefaultClientConfiguration, getDefaultExtensionConfiguration: () => getDefaultExtensionConfiguration, @@ -7235,7 +7587,7 @@ var require_dist_cjs33 = __commonJS({ parseRfc7231DateTime: () => parseRfc7231DateTime, quoteHeader: () => quoteHeader, resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig, - resolvedPath: () => import_protocols3.resolvedPath, + resolvedPath: () => import_protocols2.resolvedPath, serializeDateTime: () => serializeDateTime, serializeFloat: () => serializeFloat, splitEvery: () => splitEvery, @@ -7253,7 +7605,7 @@ var require_dist_cjs33 = __commonJS({ withBaseException: () => withBaseException }); module2.exports = __toCommonJS2(src_exports); - var import_middleware_stack = require_dist_cjs32(); + var import_middleware_stack = require_dist_cjs33(); var _Client = class _Client { constructor(config) { this.config = config; @@ -7301,7 +7653,7 @@ var require_dist_cjs33 = __commonJS({ }; __name(_Client, "Client"); var Client = _Client; - var import_protocols3 = (init_protocols(), __toCommonJS(protocols_exports)); + var import_protocols2 = (init_protocols(), __toCommonJS(protocols_exports)); var import_types5 = require_dist_cjs(); var _Command = class _Command { constructor() { @@ -7958,6 +8310,15 @@ var require_dist_cjs33 = __commonJS({ this.$fault = options.$fault; this.$metadata = options.$metadata; } + /** + * Checks if a value is an instance of ServiceException (duck typed) + */ + static isInstance(value) { + if (!value) + return false; + const candidate = value; + return Boolean(candidate.$fault) && Boolean(candidate.$metadata) && (candidate.$fault === "client" || candidate.$fault === "server"); + } }; __name(_ServiceException, "ServiceException"); var ServiceException = _ServiceException; @@ -8098,40 +8459,29 @@ var require_dist_cjs33 = __commonJS({ var isSerializableHeaderValue = /* @__PURE__ */ __name((value) => { return value != null; }, "isSerializableHeaderValue"); - var StringWrapper = /* @__PURE__ */ __name(function() { - const Class = Object.getPrototypeOf(this).constructor; - const Constructor = Function.bind.apply(String, [null, ...arguments]); - const instance = new Constructor(); - Object.setPrototypeOf(instance, Class.prototype); - return instance; - }, "StringWrapper"); - StringWrapper.prototype = Object.create(String.prototype, { - constructor: { - value: StringWrapper, - enumerable: false, - writable: true, - configurable: true - } - }); - Object.setPrototypeOf(StringWrapper, String); - var _LazyJsonString = class _LazyJsonString2 extends StringWrapper { - deserializeJSON() { - return JSON.parse(super.toString()); - } - toJSON() { - return super.toString(); - } - static fromObject(object) { - if (object instanceof _LazyJsonString2) { - return object; - } else if (object instanceof String || typeof object === "string") { - return new _LazyJsonString2(object); + var LazyJsonString = /* @__PURE__ */ __name(function LazyJsonString2(val2) { + const str = Object.assign(new String(val2), { + deserializeJSON() { + return JSON.parse(String(val2)); + }, + toString() { + return String(val2); + }, + toJSON() { + return String(val2); } - return new _LazyJsonString2(JSON.stringify(object)); + }); + return str; + }, "LazyJsonString"); + LazyJsonString.from = (object) => { + if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) { + return object; + } else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) { + return LazyJsonString(String(object)); } + return LazyJsonString(JSON.stringify(object)); }; - __name(_LazyJsonString, "LazyJsonString"); - var LazyJsonString = _LazyJsonString; + LazyJsonString.fromObject = LazyJsonString.from; var _NoOpLogger = class _NoOpLogger { trace() { } @@ -8359,7 +8709,7 @@ var require_isStreamingPayload = __commonJS({ }); // ../../../node_modules/@smithy/middleware-retry/dist-cjs/index.js -var require_dist_cjs34 = __commonJS({ +var require_dist_cjs35 = __commonJS({ "../../../node_modules/@smithy/middleware-retry/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -8403,7 +8753,7 @@ var require_dist_cjs34 = __commonJS({ module2.exports = __toCommonJS2(src_exports); var import_protocol_http8 = require_dist_cjs2(); var import_uuid = (init_esm_node(), __toCommonJS(esm_node_exports)); - var import_util_retry = require_dist_cjs31(); + var import_util_retry = require_dist_cjs32(); var getDefaultRetryQuota = /* @__PURE__ */ __name((initialRetryTokens, options) => { const MAX_CAPACITY = initialRetryTokens; const noRetryIncrement = (options == null ? void 0 : options.noRetryIncrement) ?? import_util_retry.NO_RETRY_INCREMENT; @@ -8431,7 +8781,7 @@ var require_dist_cjs34 = __commonJS({ }); }, "getDefaultRetryQuota"); var defaultDelayDecider = /* @__PURE__ */ __name((delayBase, attempts) => Math.floor(Math.min(import_util_retry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)), "defaultDelayDecider"); - var import_service_error_classification = require_dist_cjs30(); + var import_service_error_classification = require_dist_cjs31(); var defaultRetryDecider = /* @__PURE__ */ __name((error) => { if (!error) { return false; @@ -8623,7 +8973,7 @@ var require_dist_cjs34 = __commonJS({ clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); } }), "getOmitRetryHeadersPlugin"); - var import_smithy_client4 = require_dist_cjs33(); + var import_smithy_client4 = require_dist_cjs34(); var import_isStreamingPayload = require_isStreamingPayload(); var retryMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => { var _a; @@ -8946,7 +9296,7 @@ var init_resolveAwsSdkSigV4AConfig = __esm({ }); // ../../../node_modules/@smithy/signature-v4/dist-cjs/index.js -var require_dist_cjs35 = __commonJS({ +var require_dist_cjs36 = __commonJS({ "../../../node_modules/@smithy/signature-v4/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -9506,7 +9856,7 @@ var import_signature_v4, resolveAwsSdkSigV4Config, resolveAWSSDKSigV4Config; var init_resolveAwsSdkSigV4Config = __esm({ "../../../node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js"() { init_dist_es(); - import_signature_v4 = __toESM(require_dist_cjs35()); + import_signature_v4 = __toESM(require_dist_cjs36()); resolveAwsSdkSigV4Config = (config) => { let normalizedCreds; if (config.credentials) { @@ -9666,7 +10016,7 @@ var init_coercing_serializers = __esm({ var import_smithy_client, awsExpectUnion; var init_awsExpectUnion = __esm({ "../../../node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js"() { - import_smithy_client = __toESM(require_dist_cjs33()); + import_smithy_client = __toESM(require_dist_cjs34()); awsExpectUnion = (value) => { if (value == null) { return void 0; @@ -9683,7 +10033,7 @@ var init_awsExpectUnion = __esm({ var import_smithy_client2, collectBodyString; var init_common = __esm({ "../../../node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js"() { - import_smithy_client2 = __toESM(require_dist_cjs33()); + import_smithy_client2 = __toESM(require_dist_cjs34()); collectBodyString = (streamBody, context) => (0, import_smithy_client2.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)); } }); @@ -10300,15 +10650,10 @@ var require_DocTypeReader = __commonJS({ var require_strnum = __commonJS({ "../../../node_modules/strnum/strnum.js"(exports2, module2) { var hexRegex = /^[-+]?0x[a-fA-F0-9]+$/; - var numRegex = /^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/; - if (!Number.parseInt && window.parseInt) { - Number.parseInt = window.parseInt; - } - if (!Number.parseFloat && window.parseFloat) { - Number.parseFloat = window.parseFloat; - } + var numRegex = /^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/; var consider = { hex: true, + // oct: false, leadingZeros: true, decimalPoint: ".", eNotation: true @@ -10319,26 +10664,39 @@ var require_strnum = __commonJS({ if (!str || typeof str !== "string") return str; let trimmedStr = str.trim(); if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str; + else if (str === "0") return 0; else if (options.hex && hexRegex.test(trimmedStr)) { - return Number.parseInt(trimmedStr, 16); + return parse_int(trimmedStr, 16); + } else if (trimmedStr.search(/[eE]/) !== -1) { + const notation = trimmedStr.match(/^([-\+])?(0*)([0-9]*(\.[0-9]*)?[eE][-\+]?[0-9]+)$/); + if (notation) { + if (options.leadingZeros) { + trimmedStr = (notation[1] || "") + notation[3]; + } else { + if (notation[2] === "0" && notation[3][0] === ".") { + } else { + return str; + } + } + return options.eNotation ? Number(trimmedStr) : str; + } else { + return str; + } } else { const match = numRegex.exec(trimmedStr); if (match) { const sign = match[1]; const leadingZeros = match[2]; let numTrimmedByZeros = trimZeros(match[3]); - const eNotation = match[4] || match[6]; if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== ".") return str; else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== ".") return str; + else if (options.leadingZeros && leadingZeros === str) return 0; else { const num = Number(trimmedStr); const numStr = "" + num; if (numStr.search(/[eE]/) !== -1) { if (options.eNotation) return num; else return str; - } else if (eNotation) { - if (options.eNotation) return num; - else return str; } else if (trimmedStr.indexOf(".") !== -1) { if (numStr === "0" && numTrimmedByZeros === "") return num; else if (numStr === numTrimmedByZeros) return num; @@ -10346,13 +10704,10 @@ var require_strnum = __commonJS({ else return str; } if (leadingZeros) { - if (numTrimmedByZeros === numStr) return num; - else if (sign + numTrimmedByZeros === numStr) return num; - else return str; + return numTrimmedByZeros === numStr || sign + numTrimmedByZeros === numStr ? num : str; + } else { + return trimmedStr === numStr || trimmedStr === sign + numStr ? num : str; } - if (trimmedStr === numStr) return num; - else if (trimmedStr === sign + numStr) return num; - return str; } } else { return str; @@ -10369,6 +10724,12 @@ var require_strnum = __commonJS({ } return numStr; } + function parse_int(numStr, base) { + if (parseInt) return parseInt(numStr, base); + else if (Number.parseInt) return Number.parseInt(numStr, base); + else if (window && window.parseInt) return window.parseInt(numStr, base); + else throw new Error("parseInt, Number.parseInt, window.parseInt are not supported"); + } module2.exports = toNumber; } }); @@ -11393,7 +11754,7 @@ var require_fxp = __commonJS({ var import_smithy_client3, import_fast_xml_parser, parseXmlBody, parseXmlErrorBody, loadRestXmlErrorCode; var init_parseXmlBody = __esm({ "../../../node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js"() { - import_smithy_client3 = __toESM(require_dist_cjs33()); + import_smithy_client3 = __toESM(require_dist_cjs34()); import_fast_xml_parser = __toESM(require_fxp()); init_common(); parseXmlBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { @@ -11898,7 +12259,7 @@ function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); } __setModuleDefault(result, mod); return result; @@ -11982,7 +12343,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) { } return path; } -var extendStatics, __assign, __createBinding, __setModuleDefault, _SuppressedError, tslib_es6_default; +var extendStatics, __assign, __createBinding, __setModuleDefault, ownKeys, _SuppressedError, tslib_es6_default; var init_tslib_es6 = __esm({ "../../../node_modules/tslib/tslib.es6.mjs"() { extendStatics = function(d, b) { @@ -12003,7 +12364,7 @@ var init_tslib_es6 = __esm({ }; return __assign.apply(this, arguments); }; - __createBinding = Object.create ? function(o, m, k, k2) { + __createBinding = Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { @@ -12012,15 +12373,23 @@ var init_tslib_es6 = __esm({ } }; } Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { + }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; - }; - __setModuleDefault = Object.create ? function(o, v) { + }); + __setModuleDefault = Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); - } : function(o, v) { + }) : function(o, v) { o["default"] = v; }; + ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) { var e = new Error(message); return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; @@ -12172,7 +12541,7 @@ var require_package = __commonJS({ }); // ../../../node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js -var require_dist_cjs36 = __commonJS({ +var require_dist_cjs37 = __commonJS({ "../../../node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -12235,9 +12604,96 @@ var require_dist_cjs36 = __commonJS({ } }); -// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/index.js -var require_dist_cjs37 = __commonJS({ - "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/index.js"(exports2, module2) { +// ../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js +var require_getHomeDir3 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getHomeDir = void 0; + var os_1 = require("os"); + var path_1 = require("path"); + var homeDirCache = {}; + var getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; + }; + var getHomeDir2 = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = (0, os_1.homedir)(); + return homeDirCache[homeDirCacheKey]; + }; + exports2.getHomeDir = getHomeDir2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js +var require_getSSOTokenFilepath3 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFilepath = void 0; + var crypto_1 = require("crypto"); + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir3(); + var getSSOTokenFilepath2 = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); + }; + exports2.getSSOTokenFilepath = getSSOTokenFilepath2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js +var require_getSSOTokenFromFile3 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFromFile = void 0; + var fs_1 = require("fs"); + var getSSOTokenFilepath_1 = require_getSSOTokenFilepath3(); + var { readFile } = fs_1.promises; + var getSSOTokenFromFile2 = async (id) => { + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); + }; + exports2.getSSOTokenFromFile = getSSOTokenFromFile2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js +var require_slurpFile3 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.slurpFile = void 0; + var fs_1 = require("fs"); + var { readFile } = fs_1.promises; + var filePromisesHash = {}; + var slurpFile = (path, options) => { + if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) { + filePromisesHash[path] = readFile(path, "utf8"); + } + return filePromisesHash[path]; + }; + exports2.slurpFile = slurpFile; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +var require_dist_cjs38 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; var __getOwnPropNames2 = Object.getOwnPropertyNames; @@ -12255,120 +12711,285 @@ var require_dist_cjs37 = __commonJS({ } return to; }; + var __reExport = (target, mod, secondTarget) => (__copyProps2(target, mod, "default"), secondTarget && __copyProps2(secondTarget, mod, "default")); var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); var src_exports = {}; __export2(src_exports, { - DEFAULT_MAX_RETRIES: () => DEFAULT_MAX_RETRIES, - DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT, - ENV_CMDS_AUTH_TOKEN: () => ENV_CMDS_AUTH_TOKEN, - ENV_CMDS_FULL_URI: () => ENV_CMDS_FULL_URI, - ENV_CMDS_RELATIVE_URI: () => ENV_CMDS_RELATIVE_URI, - Endpoint: () => Endpoint, - fromContainerMetadata: () => fromContainerMetadata, - fromInstanceMetadata: () => fromInstanceMetadata, - getInstanceMetadataEndpoint: () => getInstanceMetadataEndpoint, - httpRequest: () => httpRequest, - providerConfigFromInit: () => providerConfigFromInit + CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR, + DEFAULT_PROFILE: () => DEFAULT_PROFILE, + ENV_PROFILE: () => ENV_PROFILE, + getProfileName: () => getProfileName, + loadSharedConfigFiles: () => loadSharedConfigFiles, + loadSsoSessionData: () => loadSsoSessionData, + parseKnownFiles: () => parseKnownFiles }); module2.exports = __toCommonJS2(src_exports); - var import_url = require("url"); - var import_property_provider2 = require_dist_cjs24(); - var import_buffer = require("buffer"); - var import_http2 = require("http"); - function httpRequest(options) { - return new Promise((resolve, reject) => { - var _a; - const req = (0, import_http2.request)({ - method: "GET", - ...options, - // Node.js http module doesn't accept hostname with square brackets - // Refs: https://github.com/nodejs/node/issues/39738 - hostname: (_a = options.hostname) == null ? void 0 : _a.replace(/^\[(.+)\]$/, "$1") - }); - req.on("error", (err) => { - reject(Object.assign(new import_property_provider2.ProviderError("Unable to connect to instance metadata service"), err)); - req.destroy(); - }); - req.on("timeout", () => { - reject(new import_property_provider2.ProviderError("TimeoutError from instance metadata service")); - req.destroy(); - }); - req.on("response", (res) => { - const { statusCode = 400 } = res; - if (statusCode < 200 || 300 <= statusCode) { - reject( - Object.assign(new import_property_provider2.ProviderError("Error response received from instance metadata service"), { statusCode }) - ); - req.destroy(); - } - const chunks = []; - res.on("data", (chunk) => { - chunks.push(chunk); - }); - res.on("end", () => { - resolve(import_buffer.Buffer.concat(chunks)); - req.destroy(); - }); - }); - req.end(); - }); - } - __name(httpRequest, "httpRequest"); - var isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.AccessKeyId === "string" && typeof arg.SecretAccessKey === "string" && typeof arg.Token === "string" && typeof arg.Expiration === "string", "isImdsCredentials"); - var fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({ - accessKeyId: creds.AccessKeyId, - secretAccessKey: creds.SecretAccessKey, - sessionToken: creds.Token, - expiration: new Date(creds.Expiration), - ...creds.AccountId && { accountId: creds.AccountId } - }), "fromImdsCredentials"); - var DEFAULT_TIMEOUT = 1e3; - var DEFAULT_MAX_RETRIES = 0; - var providerConfigFromInit = /* @__PURE__ */ __name(({ - maxRetries = DEFAULT_MAX_RETRIES, - timeout = DEFAULT_TIMEOUT - }) => ({ maxRetries, timeout }), "providerConfigFromInit"); - var retry = /* @__PURE__ */ __name((toRetry, maxRetries) => { - let promise = toRetry(); - for (let i = 0; i < maxRetries; i++) { - promise = promise.catch(toRetry); + __reExport(src_exports, require_getHomeDir3(), module2.exports); + var ENV_PROFILE = "AWS_PROFILE"; + var DEFAULT_PROFILE = "default"; + var getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, "getProfileName"); + __reExport(src_exports, require_getSSOTokenFilepath3(), module2.exports); + __reExport(src_exports, require_getSSOTokenFromFile3(), module2.exports); + var import_types5 = require_dist_cjs(); + var getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; } - return promise; - }, "retry"); - var ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; - var ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; - var ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; - var fromContainerMetadata = /* @__PURE__ */ __name((init = {}) => { - const { timeout, maxRetries } = providerConfigFromInit(init); - return () => retry(async () => { - const requestOptions = await getCmdsUri({ logger: init.logger }); - const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); - if (!isImdsCredentials(credsResponse)) { - throw new import_property_provider2.CredentialsProviderError("Invalid response received from instance metadata service.", { - logger: init.logger - }); - } - return fromImdsCredentials(credsResponse); - }, maxRetries); - }, "fromContainerMetadata"); - var requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => { - if (process.env[ENV_CMDS_AUTH_TOKEN]) { - options.headers = { - ...options.headers, - Authorization: process.env[ENV_CMDS_AUTH_TOKEN] - }; + return Object.values(import_types5.IniSectionType).includes(key.substring(0, indexOfSeparator)); + }).reduce( + (acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === import_types5.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; + }, + { + // Populate default profile, if present. + ...data.default && { default: data.default } } - const buffer = await httpRequest({ - ...options, - timeout - }); - return buffer.toString(); - }, "requestFromEcsImds"); - var CMDS_IP = "169.254.170.2"; - var GREENGRASS_HOSTS = { - localhost: true, - "127.0.0.1": true - }; + ), "getConfigData"); + var import_path = require("path"); + var import_getHomeDir = require_getHomeDir3(); + var ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; + var getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), ".aws", "config"), "getConfigFilepath"); + var import_getHomeDir2 = require_getHomeDir3(); + var ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; + var getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), ".aws", "credentials"), "getCredentialsFilepath"); + var import_getHomeDir3 = require_getHomeDir3(); + var prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; + var profileNameBlockList = ["__proto__", "profile __proto__"]; + var parseIni = /* @__PURE__ */ __name((iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = void 0; + currentSubSection = void 0; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(import_types5.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim() + ]; + if (value === "") { + currentSubSection = name; + } else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = void 0; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; + }, "parseIni"); + var import_slurpFile = require_slurpFile3(); + var swallowError = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var CONFIG_PREFIX_SEPARATOR = "."; + var loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = (0, import_getHomeDir3.getHomeDir)(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = (0, import_path.join)(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = (0, import_path.join)(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + (0, import_slurpFile.slurpFile)(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).then(getConfigData).catch(swallowError), + (0, import_slurpFile.slurpFile)(resolvedFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).catch(swallowError) + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1] + }; + }, "loadSharedConfigFiles"); + var getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types5.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), "getSsoSessionData"); + var import_slurpFile2 = require_slurpFile3(); + var swallowError2 = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), "loadSsoSessionData"); + var mergeConfigFiles = /* @__PURE__ */ __name((...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== void 0) { + Object.assign(merged[key], values); + } else { + merged[key] = values; + } + } + } + return merged; + }, "mergeConfigFiles"); + var parseKnownFiles = /* @__PURE__ */ __name(async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); + }, "parseKnownFiles"); + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/index.js +var require_dist_cjs39 = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/index.js"(exports2, module2) { + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); + var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); + var src_exports = {}; + __export2(src_exports, { + DEFAULT_MAX_RETRIES: () => DEFAULT_MAX_RETRIES, + DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT, + ENV_CMDS_AUTH_TOKEN: () => ENV_CMDS_AUTH_TOKEN, + ENV_CMDS_FULL_URI: () => ENV_CMDS_FULL_URI, + ENV_CMDS_RELATIVE_URI: () => ENV_CMDS_RELATIVE_URI, + Endpoint: () => Endpoint, + fromContainerMetadata: () => fromContainerMetadata, + fromInstanceMetadata: () => fromInstanceMetadata, + getInstanceMetadataEndpoint: () => getInstanceMetadataEndpoint, + httpRequest: () => httpRequest, + providerConfigFromInit: () => providerConfigFromInit + }); + module2.exports = __toCommonJS2(src_exports); + var import_url = require("url"); + var import_property_provider2 = require_dist_cjs24(); + var import_buffer = require("buffer"); + var import_http2 = require("http"); + function httpRequest(options) { + return new Promise((resolve, reject) => { + var _a; + const req = (0, import_http2.request)({ + method: "GET", + ...options, + // Node.js http module doesn't accept hostname with square brackets + // Refs: https://github.com/nodejs/node/issues/39738 + hostname: (_a = options.hostname) == null ? void 0 : _a.replace(/^\[(.+)\]$/, "$1") + }); + req.on("error", (err) => { + reject(Object.assign(new import_property_provider2.ProviderError("Unable to connect to instance metadata service"), err)); + req.destroy(); + }); + req.on("timeout", () => { + reject(new import_property_provider2.ProviderError("TimeoutError from instance metadata service")); + req.destroy(); + }); + req.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || 300 <= statusCode) { + reject( + Object.assign(new import_property_provider2.ProviderError("Error response received from instance metadata service"), { statusCode }) + ); + req.destroy(); + } + const chunks = []; + res.on("data", (chunk) => { + chunks.push(chunk); + }); + res.on("end", () => { + resolve(import_buffer.Buffer.concat(chunks)); + req.destroy(); + }); + }); + req.end(); + }); + } + __name(httpRequest, "httpRequest"); + var isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.AccessKeyId === "string" && typeof arg.SecretAccessKey === "string" && typeof arg.Token === "string" && typeof arg.Expiration === "string", "isImdsCredentials"); + var fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({ + accessKeyId: creds.AccessKeyId, + secretAccessKey: creds.SecretAccessKey, + sessionToken: creds.Token, + expiration: new Date(creds.Expiration), + ...creds.AccountId && { accountId: creds.AccountId } + }), "fromImdsCredentials"); + var DEFAULT_TIMEOUT = 1e3; + var DEFAULT_MAX_RETRIES = 0; + var providerConfigFromInit = /* @__PURE__ */ __name(({ + maxRetries = DEFAULT_MAX_RETRIES, + timeout = DEFAULT_TIMEOUT + }) => ({ maxRetries, timeout }), "providerConfigFromInit"); + var retry = /* @__PURE__ */ __name((toRetry, maxRetries) => { + let promise = toRetry(); + for (let i = 0; i < maxRetries; i++) { + promise = promise.catch(toRetry); + } + return promise; + }, "retry"); + var ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; + var ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; + var ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; + var fromContainerMetadata = /* @__PURE__ */ __name((init = {}) => { + const { timeout, maxRetries } = providerConfigFromInit(init); + return () => retry(async () => { + const requestOptions = await getCmdsUri({ logger: init.logger }); + const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); + if (!isImdsCredentials(credsResponse)) { + throw new import_property_provider2.CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger + }); + } + return fromImdsCredentials(credsResponse); + }, maxRetries); + }, "fromContainerMetadata"); + var requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => { + if (process.env[ENV_CMDS_AUTH_TOKEN]) { + options.headers = { + ...options.headers, + Authorization: process.env[ENV_CMDS_AUTH_TOKEN] + }; + } + const buffer = await httpRequest({ + ...options, + timeout + }); + return buffer.toString(); + }, "requestFromEcsImds"); + var CMDS_IP = "169.254.170.2"; + var GREENGRASS_HOSTS = { + localhost: true, + "127.0.0.1": true + }; var GREENGRASS_PROTOCOLS = { "http:": true, "https:": true @@ -12418,7 +13039,7 @@ var require_dist_cjs37 = __commonJS({ __name(_InstanceMetadataV1FallbackError, "InstanceMetadataV1FallbackError"); var InstanceMetadataV1FallbackError = _InstanceMetadataV1FallbackError; var import_node_config_provider = require_dist_cjs26(); - var import_url_parser = require_dist_cjs28(); + var import_url_parser = require_dist_cjs29(); var Endpoint = /* @__PURE__ */ ((Endpoint2) => { Endpoint2["IPv4"] = "http://169.254.169.254"; Endpoint2["IPv6"] = "http://[fd00:ec2::254]"; @@ -12683,7 +13304,7 @@ var require_requestHelpers = __commonJS({ exports2.getCredentials = exports2.createGetRequest = void 0; var property_provider_1 = require_dist_cjs24(); var protocol_http_1 = require_dist_cjs2(); - var smithy_client_1 = require_dist_cjs33(); + var smithy_client_1 = require_dist_cjs34(); var util_stream_1 = require_dist_cjs22(); function createGetRequest(url2) { return new protocol_http_1.HttpRequest({ @@ -12821,7 +13442,7 @@ Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI }); // ../../../node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js -var require_dist_cjs38 = __commonJS({ +var require_dist_cjs40 = __commonJS({ "../../../node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -13011,7 +13632,7 @@ var require_package2 = __commonJS({ }); // ../../../node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js -var require_dist_cjs39 = __commonJS({ +var require_dist_cjs41 = __commonJS({ "../../../node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -13095,7 +13716,7 @@ var require_dist_cjs39 = __commonJS({ }); // ../../../node_modules/@smithy/hash-node/dist-cjs/index.js -var require_dist_cjs40 = __commonJS({ +var require_dist_cjs42 = __commonJS({ "../../../node_modules/@smithy/hash-node/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -13159,7 +13780,7 @@ var require_dist_cjs40 = __commonJS({ }); // ../../../node_modules/@smithy/util-body-length-node/dist-cjs/index.js -var require_dist_cjs41 = __commonJS({ +var require_dist_cjs43 = __commonJS({ "../../../node_modules/@smithy/util-body-length-node/dist-cjs/index.js"(exports2, module2) { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -13270,8 +13891,8 @@ var require_runtimeConfig_shared = __commonJS({ exports2.getRuntimeConfig = void 0; var core_1 = (init_dist_es2(), __toCommonJS(dist_es_exports2)); var core_2 = (init_dist_es(), __toCommonJS(dist_es_exports)); - var smithy_client_1 = require_dist_cjs33(); - var url_parser_1 = require_dist_cjs28(); + var smithy_client_1 = require_dist_cjs34(); + var url_parser_1 = require_dist_cjs29(); var util_base64_1 = require_dist_cjs16(); var util_utf8_1 = require_dist_cjs15(); var httpAuthSchemeProvider_1 = require_httpAuthSchemeProvider2(); @@ -13309,7 +13930,7 @@ var require_runtimeConfig_shared = __commonJS({ }); // ../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js -var require_dist_cjs42 = __commonJS({ +var require_dist_cjs44 = __commonJS({ "../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js"(exports2, module2) { var __create2 = Object.create; var __defProp2 = Object.defineProperty; @@ -13407,7 +14028,7 @@ var require_dist_cjs42 = __commonJS({ } if (!process.env[ENV_IMDS_DISABLED]) { try { - const { getInstanceMetadataEndpoint, httpRequest } = await Promise.resolve().then(() => __toESM2(require_dist_cjs37())); + const { getInstanceMetadataEndpoint, httpRequest } = await Promise.resolve().then(() => __toESM2(require_dist_cjs39())); const endpoint = await getInstanceMetadataEndpoint(); return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString(); } catch (e) { @@ -13426,18 +14047,18 @@ var require_runtimeConfig = __commonJS({ var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); var package_json_1 = tslib_1.__importDefault(require_package2()); var core_1 = (init_dist_es2(), __toCommonJS(dist_es_exports2)); - var util_user_agent_node_1 = require_dist_cjs39(); + var util_user_agent_node_1 = require_dist_cjs41(); var config_resolver_1 = require_dist_cjs11(); - var hash_node_1 = require_dist_cjs40(); - var middleware_retry_1 = require_dist_cjs34(); + var hash_node_1 = require_dist_cjs42(); + var middleware_retry_1 = require_dist_cjs35(); var node_config_provider_1 = require_dist_cjs26(); var node_http_handler_1 = require_dist_cjs19(); - var util_body_length_node_1 = require_dist_cjs41(); - var util_retry_1 = require_dist_cjs31(); + var util_body_length_node_1 = require_dist_cjs43(); + var util_retry_1 = require_dist_cjs32(); var runtimeConfig_shared_1 = require_runtimeConfig_shared(); - var smithy_client_1 = require_dist_cjs33(); - var util_defaults_mode_node_1 = require_dist_cjs42(); - var smithy_client_2 = require_dist_cjs33(); + var smithy_client_1 = require_dist_cjs34(); + var util_defaults_mode_node_1 = require_dist_cjs44(); + var smithy_client_2 = require_dist_cjs34(); var getRuntimeConfig = (config) => { (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version); const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); @@ -13469,7 +14090,7 @@ var require_runtimeConfig = __commonJS({ }); // ../../../node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js -var require_dist_cjs43 = __commonJS({ +var require_dist_cjs45 = __commonJS({ "../../../node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -13567,7 +14188,7 @@ var require_dist_cjs43 = __commonJS({ }); // ../../../node_modules/@aws-sdk/client-sso/dist-cjs/index.js -var require_dist_cjs44 = __commonJS({ +var require_dist_cjs46 = __commonJS({ "../../../node_modules/@aws-sdk/client-sso/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -13619,8 +14240,8 @@ var require_dist_cjs44 = __commonJS({ var import_config_resolver = require_dist_cjs11(); var import_core3 = (init_dist_es(), __toCommonJS(dist_es_exports)); var import_middleware_content_length = require_dist_cjs23(); - var import_middleware_endpoint = require_dist_cjs29(); - var import_middleware_retry = require_dist_cjs34(); + var import_middleware_endpoint = require_dist_cjs30(); + var import_middleware_retry = require_dist_cjs35(); var import_httpAuthSchemeProvider = require_httpAuthSchemeProvider2(); var resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => { return { @@ -13637,9 +14258,9 @@ var require_dist_cjs44 = __commonJS({ UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } }; var import_runtimeConfig = require_runtimeConfig(); - var import_region_config_resolver = require_dist_cjs43(); + var import_region_config_resolver = require_dist_cjs45(); var import_protocol_http8 = require_dist_cjs2(); - var import_smithy_client4 = require_dist_cjs33(); + var import_smithy_client4 = require_dist_cjs34(); var getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; @@ -14345,8 +14966,8 @@ var require_runtimeConfig_shared2 = __commonJS({ exports2.getRuntimeConfig = void 0; var core_1 = (init_dist_es2(), __toCommonJS(dist_es_exports2)); var core_2 = (init_dist_es(), __toCommonJS(dist_es_exports)); - var smithy_client_1 = require_dist_cjs33(); - var url_parser_1 = require_dist_cjs28(); + var smithy_client_1 = require_dist_cjs34(); + var url_parser_1 = require_dist_cjs29(); var util_base64_1 = require_dist_cjs16(); var util_utf8_1 = require_dist_cjs15(); var httpAuthSchemeProvider_1 = require_httpAuthSchemeProvider3(); @@ -14392,19 +15013,19 @@ var require_runtimeConfig2 = __commonJS({ var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); var package_json_1 = tslib_1.__importDefault(require_package3()); var core_1 = (init_dist_es2(), __toCommonJS(dist_es_exports2)); - var credential_provider_node_1 = require_dist_cjs52(); - var util_user_agent_node_1 = require_dist_cjs39(); + var credential_provider_node_1 = require_dist_cjs58(); + var util_user_agent_node_1 = require_dist_cjs41(); var config_resolver_1 = require_dist_cjs11(); - var hash_node_1 = require_dist_cjs40(); - var middleware_retry_1 = require_dist_cjs34(); + var hash_node_1 = require_dist_cjs42(); + var middleware_retry_1 = require_dist_cjs35(); var node_config_provider_1 = require_dist_cjs26(); var node_http_handler_1 = require_dist_cjs19(); - var util_body_length_node_1 = require_dist_cjs41(); - var util_retry_1 = require_dist_cjs31(); + var util_body_length_node_1 = require_dist_cjs43(); + var util_retry_1 = require_dist_cjs32(); var runtimeConfig_shared_1 = require_runtimeConfig_shared2(); - var smithy_client_1 = require_dist_cjs33(); - var util_defaults_mode_node_1 = require_dist_cjs42(); - var smithy_client_2 = require_dist_cjs33(); + var smithy_client_1 = require_dist_cjs34(); + var util_defaults_mode_node_1 = require_dist_cjs44(); + var smithy_client_2 = require_dist_cjs34(); var getRuntimeConfig = (config) => { (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version); const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); @@ -14437,7 +15058,7 @@ var require_runtimeConfig2 = __commonJS({ }); // ../../../node_modules/@aws-sdk/client-sso-oidc/dist-cjs/index.js -var require_dist_cjs45 = __commonJS({ +var require_dist_cjs47 = __commonJS({ "../../../node_modules/@aws-sdk/client-sso-oidc/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -14497,8 +15118,8 @@ var require_dist_cjs45 = __commonJS({ var import_config_resolver = require_dist_cjs11(); var import_core3 = (init_dist_es(), __toCommonJS(dist_es_exports)); var import_middleware_content_length = require_dist_cjs23(); - var import_middleware_endpoint = require_dist_cjs29(); - var import_middleware_retry = require_dist_cjs34(); + var import_middleware_endpoint = require_dist_cjs30(); + var import_middleware_retry = require_dist_cjs35(); var import_httpAuthSchemeProvider = require_httpAuthSchemeProvider3(); var resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => { return { @@ -14515,9 +15136,9 @@ var require_dist_cjs45 = __commonJS({ UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } }; var import_runtimeConfig = require_runtimeConfig2(); - var import_region_config_resolver = require_dist_cjs43(); + var import_region_config_resolver = require_dist_cjs45(); var import_protocol_http8 = require_dist_cjs2(); - var import_smithy_client4 = require_dist_cjs33(); + var import_smithy_client4 = require_dist_cjs34(); var getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; @@ -15413,9 +16034,261 @@ var require_dist_cjs45 = __commonJS({ } }); -// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/index.js -var require_dist_cjs46 = __commonJS({ - "../../../node_modules/@aws-sdk/token-providers/dist-cjs/index.js"(exports2, module2) { +// ../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js +var require_getHomeDir4 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getHomeDir = void 0; + var os_1 = require("os"); + var path_1 = require("path"); + var homeDirCache = {}; + var getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; + }; + var getHomeDir2 = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = (0, os_1.homedir)(); + return homeDirCache[homeDirCacheKey]; + }; + exports2.getHomeDir = getHomeDir2; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js +var require_getSSOTokenFilepath4 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFilepath = void 0; + var crypto_1 = require("crypto"); + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir4(); + var getSSOTokenFilepath2 = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); + }; + exports2.getSSOTokenFilepath = getSSOTokenFilepath2; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js +var require_getSSOTokenFromFile4 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFromFile = void 0; + var fs_1 = require("fs"); + var getSSOTokenFilepath_1 = require_getSSOTokenFilepath4(); + var { readFile } = fs_1.promises; + var getSSOTokenFromFile2 = async (id) => { + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); + }; + exports2.getSSOTokenFromFile = getSSOTokenFromFile2; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js +var require_slurpFile4 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.slurpFile = void 0; + var fs_1 = require("fs"); + var { readFile } = fs_1.promises; + var filePromisesHash = {}; + var slurpFile = (path, options) => { + if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) { + filePromisesHash[path] = readFile(path, "utf8"); + } + return filePromisesHash[path]; + }; + exports2.slurpFile = slurpFile; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +var require_dist_cjs48 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports2, module2) { + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); + var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __reExport = (target, mod, secondTarget) => (__copyProps2(target, mod, "default"), secondTarget && __copyProps2(secondTarget, mod, "default")); + var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); + var src_exports = {}; + __export2(src_exports, { + CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR, + DEFAULT_PROFILE: () => DEFAULT_PROFILE, + ENV_PROFILE: () => ENV_PROFILE, + getProfileName: () => getProfileName, + loadSharedConfigFiles: () => loadSharedConfigFiles, + loadSsoSessionData: () => loadSsoSessionData, + parseKnownFiles: () => parseKnownFiles + }); + module2.exports = __toCommonJS2(src_exports); + __reExport(src_exports, require_getHomeDir4(), module2.exports); + var ENV_PROFILE = "AWS_PROFILE"; + var DEFAULT_PROFILE = "default"; + var getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, "getProfileName"); + __reExport(src_exports, require_getSSOTokenFilepath4(), module2.exports); + __reExport(src_exports, require_getSSOTokenFromFile4(), module2.exports); + var import_types5 = require_dist_cjs(); + var getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(import_types5.IniSectionType).includes(key.substring(0, indexOfSeparator)); + }).reduce( + (acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === import_types5.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; + }, + { + // Populate default profile, if present. + ...data.default && { default: data.default } + } + ), "getConfigData"); + var import_path = require("path"); + var import_getHomeDir = require_getHomeDir4(); + var ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; + var getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), ".aws", "config"), "getConfigFilepath"); + var import_getHomeDir2 = require_getHomeDir4(); + var ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; + var getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), ".aws", "credentials"), "getCredentialsFilepath"); + var import_getHomeDir3 = require_getHomeDir4(); + var prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; + var profileNameBlockList = ["__proto__", "profile __proto__"]; + var parseIni = /* @__PURE__ */ __name((iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = void 0; + currentSubSection = void 0; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(import_types5.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim() + ]; + if (value === "") { + currentSubSection = name; + } else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = void 0; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; + }, "parseIni"); + var import_slurpFile = require_slurpFile4(); + var swallowError = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var CONFIG_PREFIX_SEPARATOR = "."; + var loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = (0, import_getHomeDir3.getHomeDir)(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = (0, import_path.join)(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = (0, import_path.join)(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + (0, import_slurpFile.slurpFile)(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).then(getConfigData).catch(swallowError), + (0, import_slurpFile.slurpFile)(resolvedFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).catch(swallowError) + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1] + }; + }, "loadSharedConfigFiles"); + var getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types5.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), "getSsoSessionData"); + var import_slurpFile2 = require_slurpFile4(); + var swallowError2 = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), "loadSsoSessionData"); + var mergeConfigFiles = /* @__PURE__ */ __name((...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== void 0) { + Object.assign(merged[key], values); + } else { + merged[key] = values; + } + } + } + return merged; + }, "mergeConfigFiles"); + var parseKnownFiles = /* @__PURE__ */ __name(async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); + }, "parseKnownFiles"); + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/index.js +var require_dist_cjs49 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/index.js"(exports2, module2) { "use strict"; var __create2 = Object.create; var __defProp2 = Object.defineProperty; @@ -15456,7 +16329,7 @@ var require_dist_cjs46 = __commonJS({ var REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`; var ssoOidcClientsHash = {}; var getSsoOidcClient = /* @__PURE__ */ __name(async (ssoRegion) => { - const { SSOOIDCClient } = await Promise.resolve().then(() => __toESM2(require_dist_cjs45())); + const { SSOOIDCClient } = await Promise.resolve().then(() => __toESM2(require_dist_cjs47())); if (ssoOidcClientsHash[ssoRegion]) { return ssoOidcClientsHash[ssoRegion]; } @@ -15465,7 +16338,7 @@ var require_dist_cjs46 = __commonJS({ return ssoOidcClient; }, "getSsoOidcClient"); var getNewSsoOidcToken = /* @__PURE__ */ __name(async (ssoToken, ssoRegion) => { - const { CreateTokenCommand } = await Promise.resolve().then(() => __toESM2(require_dist_cjs45())); + const { CreateTokenCommand } = await Promise.resolve().then(() => __toESM2(require_dist_cjs47())); const ssoOidcClient = await getSsoOidcClient(ssoRegion); return ssoOidcClient.send( new CreateTokenCommand({ @@ -15490,7 +16363,7 @@ var require_dist_cjs46 = __commonJS({ ); } }, "validateTokenKey"); - var import_shared_ini_file_loader = require_dist_cjs25(); + var import_shared_ini_file_loader = require_dist_cjs48(); var import_fs = require("fs"); var { writeFile } = import_fs.promises; var writeSSOTokenToFile = /* @__PURE__ */ __name((id, ssoToken) => { @@ -15593,21 +16466,273 @@ var require_dist_cjs46 = __commonJS({ } }); -// ../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js -var require_dist_cjs47 = __commonJS({ - "../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js"(exports2, module2) { +// ../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js +var require_getHomeDir5 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports2) { "use strict"; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); - var __esm2 = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res; - }; - var __export2 = (target, all) => { - for (var name in all) - __defProp2(target, name, { get: all[name], enumerable: true }); + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getHomeDir = void 0; + var os_1 = require("os"); + var path_1 = require("path"); + var homeDirCache = {}; + var getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; + }; + var getHomeDir2 = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = (0, os_1.homedir)(); + return homeDirCache[homeDirCacheKey]; + }; + exports2.getHomeDir = getHomeDir2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js +var require_getSSOTokenFilepath5 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFilepath = void 0; + var crypto_1 = require("crypto"); + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir5(); + var getSSOTokenFilepath2 = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); + }; + exports2.getSSOTokenFilepath = getSSOTokenFilepath2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js +var require_getSSOTokenFromFile5 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFromFile = void 0; + var fs_1 = require("fs"); + var getSSOTokenFilepath_1 = require_getSSOTokenFilepath5(); + var { readFile } = fs_1.promises; + var getSSOTokenFromFile2 = async (id) => { + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); + }; + exports2.getSSOTokenFromFile = getSSOTokenFromFile2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js +var require_slurpFile5 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.slurpFile = void 0; + var fs_1 = require("fs"); + var { readFile } = fs_1.promises; + var filePromisesHash = {}; + var slurpFile = (path, options) => { + if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) { + filePromisesHash[path] = readFile(path, "utf8"); + } + return filePromisesHash[path]; + }; + exports2.slurpFile = slurpFile; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +var require_dist_cjs50 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports2, module2) { + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); + var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __reExport = (target, mod, secondTarget) => (__copyProps2(target, mod, "default"), secondTarget && __copyProps2(secondTarget, mod, "default")); + var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); + var src_exports = {}; + __export2(src_exports, { + CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR, + DEFAULT_PROFILE: () => DEFAULT_PROFILE, + ENV_PROFILE: () => ENV_PROFILE, + getProfileName: () => getProfileName, + loadSharedConfigFiles: () => loadSharedConfigFiles, + loadSsoSessionData: () => loadSsoSessionData, + parseKnownFiles: () => parseKnownFiles + }); + module2.exports = __toCommonJS2(src_exports); + __reExport(src_exports, require_getHomeDir5(), module2.exports); + var ENV_PROFILE = "AWS_PROFILE"; + var DEFAULT_PROFILE = "default"; + var getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, "getProfileName"); + __reExport(src_exports, require_getSSOTokenFilepath5(), module2.exports); + __reExport(src_exports, require_getSSOTokenFromFile5(), module2.exports); + var import_types5 = require_dist_cjs(); + var getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(import_types5.IniSectionType).includes(key.substring(0, indexOfSeparator)); + }).reduce( + (acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === import_types5.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; + }, + { + // Populate default profile, if present. + ...data.default && { default: data.default } + } + ), "getConfigData"); + var import_path = require("path"); + var import_getHomeDir = require_getHomeDir5(); + var ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; + var getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), ".aws", "config"), "getConfigFilepath"); + var import_getHomeDir2 = require_getHomeDir5(); + var ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; + var getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), ".aws", "credentials"), "getCredentialsFilepath"); + var import_getHomeDir3 = require_getHomeDir5(); + var prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; + var profileNameBlockList = ["__proto__", "profile __proto__"]; + var parseIni = /* @__PURE__ */ __name((iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = void 0; + currentSubSection = void 0; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(import_types5.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim() + ]; + if (value === "") { + currentSubSection = name; + } else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = void 0; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; + }, "parseIni"); + var import_slurpFile = require_slurpFile5(); + var swallowError = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var CONFIG_PREFIX_SEPARATOR = "."; + var loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = (0, import_getHomeDir3.getHomeDir)(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = (0, import_path.join)(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = (0, import_path.join)(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + (0, import_slurpFile.slurpFile)(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).then(getConfigData).catch(swallowError), + (0, import_slurpFile.slurpFile)(resolvedFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).catch(swallowError) + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1] + }; + }, "loadSharedConfigFiles"); + var getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types5.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), "getSsoSessionData"); + var import_slurpFile2 = require_slurpFile5(); + var swallowError2 = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), "loadSsoSessionData"); + var mergeConfigFiles = /* @__PURE__ */ __name((...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== void 0) { + Object.assign(merged[key], values); + } else { + merged[key] = values; + } + } + } + return merged; + }, "mergeConfigFiles"); + var parseKnownFiles = /* @__PURE__ */ __name(async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); + }, "parseKnownFiles"); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +var require_dist_cjs51 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js"(exports2, module2) { + "use strict"; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); + var __esm2 = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res; + }; + var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); }; var __copyProps2 = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { @@ -15627,7 +16752,7 @@ var require_dist_cjs47 = __commonJS({ var init_loadSso = __esm2({ "src/loadSso.ts"() { "use strict"; - import_client_sso = require_dist_cjs44(); + import_client_sso = require_dist_cjs46(); } }); var src_exports = {}; @@ -15638,9 +16763,9 @@ var require_dist_cjs47 = __commonJS({ }); module2.exports = __toCommonJS2(src_exports); var isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === "string" || typeof arg.sso_account_id === "string" || typeof arg.sso_session === "string" || typeof arg.sso_region === "string" || typeof arg.sso_role_name === "string"), "isSsoProfile"); - var import_token_providers = require_dist_cjs46(); + var import_token_providers = require_dist_cjs49(); var import_property_provider2 = require_dist_cjs24(); - var import_shared_ini_file_loader = require_dist_cjs25(); + var import_shared_ini_file_loader = require_dist_cjs50(); var SHOULD_FAIL_CREDENTIAL_CHAIN = false; var resolveSSOCredentials = /* @__PURE__ */ __name(async ({ ssoStartUrl, @@ -15764,47 +16889,299 @@ Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.ht logger: init.logger }); } - if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) { - throw new import_property_provider2.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, { - tryNextLink: false, - logger: init.logger - }); + if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) { + throw new import_property_provider2.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, { + tryNextLink: false, + logger: init.logger + }); + } + profile.sso_region = session.sso_region; + profile.sso_start_url = session.sso_start_url; + } + const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile( + profile, + init.logger + ); + return resolveSSOCredentials({ + ssoStartUrl: sso_start_url, + ssoSession: sso_session, + ssoAccountId: sso_account_id, + ssoRegion: sso_region, + ssoRoleName: sso_role_name, + ssoClient, + clientConfig: init.clientConfig, + profile: profileName + }); + } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) { + throw new import_property_provider2.CredentialsProviderError( + 'Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"', + { tryNextLink: false, logger: init.logger } + ); + } else { + return resolveSSOCredentials({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + clientConfig: init.clientConfig, + profile: profileName + }); + } + }, "fromSSO"); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js +var require_getHomeDir6 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getHomeDir = void 0; + var os_1 = require("os"); + var path_1 = require("path"); + var homeDirCache = {}; + var getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; + }; + var getHomeDir2 = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = (0, os_1.homedir)(); + return homeDirCache[homeDirCacheKey]; + }; + exports2.getHomeDir = getHomeDir2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js +var require_getSSOTokenFilepath6 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFilepath = void 0; + var crypto_1 = require("crypto"); + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir6(); + var getSSOTokenFilepath2 = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); + }; + exports2.getSSOTokenFilepath = getSSOTokenFilepath2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js +var require_getSSOTokenFromFile6 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFromFile = void 0; + var fs_1 = require("fs"); + var getSSOTokenFilepath_1 = require_getSSOTokenFilepath6(); + var { readFile } = fs_1.promises; + var getSSOTokenFromFile2 = async (id) => { + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); + }; + exports2.getSSOTokenFromFile = getSSOTokenFromFile2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js +var require_slurpFile6 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.slurpFile = void 0; + var fs_1 = require("fs"); + var { readFile } = fs_1.promises; + var filePromisesHash = {}; + var slurpFile = (path, options) => { + if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) { + filePromisesHash[path] = readFile(path, "utf8"); + } + return filePromisesHash[path]; + }; + exports2.slurpFile = slurpFile; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +var require_dist_cjs52 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports2, module2) { + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); + var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __reExport = (target, mod, secondTarget) => (__copyProps2(target, mod, "default"), secondTarget && __copyProps2(secondTarget, mod, "default")); + var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); + var src_exports = {}; + __export2(src_exports, { + CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR, + DEFAULT_PROFILE: () => DEFAULT_PROFILE, + ENV_PROFILE: () => ENV_PROFILE, + getProfileName: () => getProfileName, + loadSharedConfigFiles: () => loadSharedConfigFiles, + loadSsoSessionData: () => loadSsoSessionData, + parseKnownFiles: () => parseKnownFiles + }); + module2.exports = __toCommonJS2(src_exports); + __reExport(src_exports, require_getHomeDir6(), module2.exports); + var ENV_PROFILE = "AWS_PROFILE"; + var DEFAULT_PROFILE = "default"; + var getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, "getProfileName"); + __reExport(src_exports, require_getSSOTokenFilepath6(), module2.exports); + __reExport(src_exports, require_getSSOTokenFromFile6(), module2.exports); + var import_types5 = require_dist_cjs(); + var getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(import_types5.IniSectionType).includes(key.substring(0, indexOfSeparator)); + }).reduce( + (acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === import_types5.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; + }, + { + // Populate default profile, if present. + ...data.default && { default: data.default } + } + ), "getConfigData"); + var import_path = require("path"); + var import_getHomeDir = require_getHomeDir6(); + var ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; + var getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), ".aws", "config"), "getConfigFilepath"); + var import_getHomeDir2 = require_getHomeDir6(); + var ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; + var getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), ".aws", "credentials"), "getCredentialsFilepath"); + var import_getHomeDir3 = require_getHomeDir6(); + var prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; + var profileNameBlockList = ["__proto__", "profile __proto__"]; + var parseIni = /* @__PURE__ */ __name((iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = void 0; + currentSubSection = void 0; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(import_types5.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim() + ]; + if (value === "") { + currentSubSection = name; + } else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = void 0; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; + }, "parseIni"); + var import_slurpFile = require_slurpFile6(); + var swallowError = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var CONFIG_PREFIX_SEPARATOR = "."; + var loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = (0, import_getHomeDir3.getHomeDir)(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = (0, import_path.join)(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = (0, import_path.join)(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + (0, import_slurpFile.slurpFile)(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).then(getConfigData).catch(swallowError), + (0, import_slurpFile.slurpFile)(resolvedFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).catch(swallowError) + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1] + }; + }, "loadSharedConfigFiles"); + var getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types5.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), "getSsoSessionData"); + var import_slurpFile2 = require_slurpFile6(); + var swallowError2 = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), "loadSsoSessionData"); + var mergeConfigFiles = /* @__PURE__ */ __name((...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== void 0) { + Object.assign(merged[key], values); + } else { + merged[key] = values; } - profile.sso_region = session.sso_region; - profile.sso_start_url = session.sso_start_url; } - const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile( - profile, - init.logger - ); - return resolveSSOCredentials({ - ssoStartUrl: sso_start_url, - ssoSession: sso_session, - ssoAccountId: sso_account_id, - ssoRegion: sso_region, - ssoRoleName: sso_role_name, - ssoClient, - clientConfig: init.clientConfig, - profile: profileName - }); - } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) { - throw new import_property_provider2.CredentialsProviderError( - 'Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"', - { tryNextLink: false, logger: init.logger } - ); - } else { - return resolveSSOCredentials({ - ssoStartUrl, - ssoSession, - ssoAccountId, - ssoRegion, - ssoRoleName, - ssoClient, - clientConfig: init.clientConfig, - profile: profileName - }); } - }, "fromSSO"); + return merged; + }, "mergeConfigFiles"); + var parseKnownFiles = /* @__PURE__ */ __name(async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); + }, "parseKnownFiles"); } }); @@ -16089,8 +17466,8 @@ var require_runtimeConfig_shared3 = __commonJS({ exports2.getRuntimeConfig = void 0; var core_1 = (init_dist_es2(), __toCommonJS(dist_es_exports2)); var core_2 = (init_dist_es(), __toCommonJS(dist_es_exports)); - var smithy_client_1 = require_dist_cjs33(); - var url_parser_1 = require_dist_cjs28(); + var smithy_client_1 = require_dist_cjs34(); + var url_parser_1 = require_dist_cjs29(); var util_base64_1 = require_dist_cjs16(); var util_utf8_1 = require_dist_cjs15(); var httpAuthSchemeProvider_1 = require_httpAuthSchemeProvider4(); @@ -16136,20 +17513,20 @@ var require_runtimeConfig3 = __commonJS({ var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); var package_json_1 = tslib_1.__importDefault(require_package4()); var core_1 = (init_dist_es2(), __toCommonJS(dist_es_exports2)); - var credential_provider_node_1 = require_dist_cjs52(); - var util_user_agent_node_1 = require_dist_cjs39(); + var credential_provider_node_1 = require_dist_cjs58(); + var util_user_agent_node_1 = require_dist_cjs41(); var config_resolver_1 = require_dist_cjs11(); var core_2 = (init_dist_es(), __toCommonJS(dist_es_exports)); - var hash_node_1 = require_dist_cjs40(); - var middleware_retry_1 = require_dist_cjs34(); + var hash_node_1 = require_dist_cjs42(); + var middleware_retry_1 = require_dist_cjs35(); var node_config_provider_1 = require_dist_cjs26(); var node_http_handler_1 = require_dist_cjs19(); - var util_body_length_node_1 = require_dist_cjs41(); - var util_retry_1 = require_dist_cjs31(); + var util_body_length_node_1 = require_dist_cjs43(); + var util_retry_1 = require_dist_cjs32(); var runtimeConfig_shared_1 = require_runtimeConfig_shared3(); - var smithy_client_1 = require_dist_cjs33(); - var util_defaults_mode_node_1 = require_dist_cjs42(); - var smithy_client_2 = require_dist_cjs33(); + var smithy_client_1 = require_dist_cjs34(); + var util_defaults_mode_node_1 = require_dist_cjs44(); + var smithy_client_2 = require_dist_cjs34(); var getRuntimeConfig = (config) => { (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version); const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); @@ -16247,9 +17624,9 @@ var require_runtimeExtensions = __commonJS({ "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.resolveRuntimeExtensions = void 0; - var region_config_resolver_1 = require_dist_cjs43(); + var region_config_resolver_1 = require_dist_cjs45(); var protocol_http_1 = require_dist_cjs2(); - var smithy_client_1 = require_dist_cjs33(); + var smithy_client_1 = require_dist_cjs34(); var httpAuthExtensionConfiguration_1 = require_httpAuthExtensionConfiguration(); var asPartial = (t) => t; var resolveRuntimeExtensions = (runtimeConfig, extensions) => { @@ -16285,9 +17662,9 @@ var require_STSClient = __commonJS({ var config_resolver_1 = require_dist_cjs11(); var core_1 = (init_dist_es(), __toCommonJS(dist_es_exports)); var middleware_content_length_1 = require_dist_cjs23(); - var middleware_endpoint_1 = require_dist_cjs29(); - var middleware_retry_1 = require_dist_cjs34(); - var smithy_client_1 = require_dist_cjs33(); + var middleware_endpoint_1 = require_dist_cjs30(); + var middleware_retry_1 = require_dist_cjs35(); + var smithy_client_1 = require_dist_cjs34(); Object.defineProperty(exports2, "__Client", { enumerable: true, get: function() { return smithy_client_1.Client; } }); @@ -16331,7 +17708,7 @@ var require_STSClient = __commonJS({ }); // ../../../node_modules/@aws-sdk/client-sts/dist-cjs/index.js -var require_dist_cjs48 = __commonJS({ +var require_dist_cjs53 = __commonJS({ "../../../node_modules/@aws-sdk/client-sts/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -16388,10 +17765,10 @@ var require_dist_cjs48 = __commonJS({ }); module2.exports = __toCommonJS2(src_exports); __reExport(src_exports, require_STSClient(), module2.exports); - var import_middleware_endpoint = require_dist_cjs29(); + var import_middleware_endpoint = require_dist_cjs30(); var import_middleware_serde2 = require_dist_cjs12(); var import_EndpointParameters = require_EndpointParameters(); - var import_smithy_client4 = require_dist_cjs33(); + var import_smithy_client4 = require_dist_cjs34(); var _STSServiceException = class _STSServiceException2 extends import_smithy_client4.ServiceException { /** * @internal @@ -17661,49 +19038,301 @@ var require_dist_cjs48 = __commonJS({ if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) { throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`); } - const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser2); - return { - accessKeyId: Credentials2.AccessKeyId, - secretAccessKey: Credentials2.SecretAccessKey, - sessionToken: Credentials2.SessionToken, - expiration: Credentials2.Expiration, - // TODO(credentialScope): access normally when shape is updated. - ...Credentials2.CredentialScope && { credentialScope: Credentials2.CredentialScope }, - ...accountId && { accountId } - }; + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser2); + return { + accessKeyId: Credentials2.AccessKeyId, + secretAccessKey: Credentials2.SecretAccessKey, + sessionToken: Credentials2.SessionToken, + expiration: Credentials2.Expiration, + // TODO(credentialScope): access normally when shape is updated. + ...Credentials2.CredentialScope && { credentialScope: Credentials2.CredentialScope }, + ...accountId && { accountId } + }; + }; + }, "getDefaultRoleAssumerWithWebIdentity"); + var isH2 = /* @__PURE__ */ __name((requestHandler) => { + var _a2; + return ((_a2 = requestHandler == null ? void 0 : requestHandler.metadata) == null ? void 0 : _a2.handlerProtocol) === "h2"; + }, "isH2"); + var import_STSClient2 = require_STSClient(); + var getCustomizableStsClientCtor = /* @__PURE__ */ __name((baseCtor, customizations) => { + var _a2; + if (!customizations) + return baseCtor; + else + return _a2 = class extends baseCtor { + constructor(config) { + super(config); + for (const customization of customizations) { + this.middlewareStack.use(customization); + } + } + }, __name(_a2, "CustomizableSTSClient"), _a2; + }, "getCustomizableStsClientCtor"); + var getDefaultRoleAssumer2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), "getDefaultRoleAssumer"); + var getDefaultRoleAssumerWithWebIdentity2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), "getDefaultRoleAssumerWithWebIdentity"); + var decorateDefaultCredentialProvider = /* @__PURE__ */ __name((provider) => (input) => provider({ + roleAssumer: getDefaultRoleAssumer2(input), + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity2(input), + ...input + }), "decorateDefaultCredentialProvider"); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js +var require_getHomeDir7 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getHomeDir = void 0; + var os_1 = require("os"); + var path_1 = require("path"); + var homeDirCache = {}; + var getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; + }; + var getHomeDir2 = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = (0, os_1.homedir)(); + return homeDirCache[homeDirCacheKey]; + }; + exports2.getHomeDir = getHomeDir2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js +var require_getSSOTokenFilepath7 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFilepath = void 0; + var crypto_1 = require("crypto"); + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir7(); + var getSSOTokenFilepath2 = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); + }; + exports2.getSSOTokenFilepath = getSSOTokenFilepath2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js +var require_getSSOTokenFromFile7 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSSOTokenFromFile = void 0; + var fs_1 = require("fs"); + var getSSOTokenFilepath_1 = require_getSSOTokenFilepath7(); + var { readFile } = fs_1.promises; + var getSSOTokenFromFile2 = async (id) => { + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); + }; + exports2.getSSOTokenFromFile = getSSOTokenFromFile2; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js +var require_slurpFile7 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.slurpFile = void 0; + var fs_1 = require("fs"); + var { readFile } = fs_1.promises; + var filePromisesHash = {}; + var slurpFile = (path, options) => { + if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) { + filePromisesHash[path] = readFile(path, "utf8"); + } + return filePromisesHash[path]; + }; + exports2.slurpFile = slurpFile; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +var require_dist_cjs54 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports2, module2) { + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); + var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __reExport = (target, mod, secondTarget) => (__copyProps2(target, mod, "default"), secondTarget && __copyProps2(secondTarget, mod, "default")); + var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod); + var src_exports = {}; + __export2(src_exports, { + CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR, + DEFAULT_PROFILE: () => DEFAULT_PROFILE, + ENV_PROFILE: () => ENV_PROFILE, + getProfileName: () => getProfileName, + loadSharedConfigFiles: () => loadSharedConfigFiles, + loadSsoSessionData: () => loadSsoSessionData, + parseKnownFiles: () => parseKnownFiles + }); + module2.exports = __toCommonJS2(src_exports); + __reExport(src_exports, require_getHomeDir7(), module2.exports); + var ENV_PROFILE = "AWS_PROFILE"; + var DEFAULT_PROFILE = "default"; + var getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, "getProfileName"); + __reExport(src_exports, require_getSSOTokenFilepath7(), module2.exports); + __reExport(src_exports, require_getSSOTokenFromFile7(), module2.exports); + var import_types5 = require_dist_cjs(); + var getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(import_types5.IniSectionType).includes(key.substring(0, indexOfSeparator)); + }).reduce( + (acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === import_types5.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; + }, + { + // Populate default profile, if present. + ...data.default && { default: data.default } + } + ), "getConfigData"); + var import_path = require("path"); + var import_getHomeDir = require_getHomeDir7(); + var ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; + var getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), ".aws", "config"), "getConfigFilepath"); + var import_getHomeDir2 = require_getHomeDir7(); + var ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; + var getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), ".aws", "credentials"), "getCredentialsFilepath"); + var import_getHomeDir3 = require_getHomeDir7(); + var prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; + var profileNameBlockList = ["__proto__", "profile __proto__"]; + var parseIni = /* @__PURE__ */ __name((iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = void 0; + currentSubSection = void 0; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(import_types5.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim() + ]; + if (value === "") { + currentSubSection = name; + } else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = void 0; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; + }, "parseIni"); + var import_slurpFile = require_slurpFile7(); + var swallowError = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var CONFIG_PREFIX_SEPARATOR = "."; + var loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = (0, import_getHomeDir3.getHomeDir)(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = (0, import_path.join)(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = (0, import_path.join)(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + (0, import_slurpFile.slurpFile)(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).then(getConfigData).catch(swallowError), + (0, import_slurpFile.slurpFile)(resolvedFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).catch(swallowError) + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1] }; - }, "getDefaultRoleAssumerWithWebIdentity"); - var isH2 = /* @__PURE__ */ __name((requestHandler) => { - var _a2; - return ((_a2 = requestHandler == null ? void 0 : requestHandler.metadata) == null ? void 0 : _a2.handlerProtocol) === "h2"; - }, "isH2"); - var import_STSClient2 = require_STSClient(); - var getCustomizableStsClientCtor = /* @__PURE__ */ __name((baseCtor, customizations) => { - var _a2; - if (!customizations) - return baseCtor; - else - return _a2 = class extends baseCtor { - constructor(config) { - super(config); - for (const customization of customizations) { - this.middlewareStack.use(customization); - } + }, "loadSharedConfigFiles"); + var getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types5.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), "getSsoSessionData"); + var import_slurpFile2 = require_slurpFile7(); + var swallowError2 = /* @__PURE__ */ __name(() => ({}), "swallowError"); + var loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), "loadSsoSessionData"); + var mergeConfigFiles = /* @__PURE__ */ __name((...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== void 0) { + Object.assign(merged[key], values); + } else { + merged[key] = values; } - }, __name(_a2, "CustomizableSTSClient"), _a2; - }, "getCustomizableStsClientCtor"); - var getDefaultRoleAssumer2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), "getDefaultRoleAssumer"); - var getDefaultRoleAssumerWithWebIdentity2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), "getDefaultRoleAssumerWithWebIdentity"); - var decorateDefaultCredentialProvider = /* @__PURE__ */ __name((provider) => (input) => provider({ - roleAssumer: getDefaultRoleAssumer2(input), - roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity2(input), - ...input - }), "decorateDefaultCredentialProvider"); + } + } + return merged; + }, "mergeConfigFiles"); + var parseKnownFiles = /* @__PURE__ */ __name(async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); + }, "parseKnownFiles"); } }); // ../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js -var require_dist_cjs49 = __commonJS({ +var require_dist_cjs55 = __commonJS({ "../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -17729,7 +19358,7 @@ var require_dist_cjs49 = __commonJS({ fromProcess: () => fromProcess }); module2.exports = __toCommonJS2(src_exports); - var import_shared_ini_file_loader = require_dist_cjs25(); + var import_shared_ini_file_loader = require_dist_cjs54(); var import_property_provider2 = require_dist_cjs24(); var import_child_process = require("child_process"); var import_util = require("util"); @@ -17801,7 +19430,7 @@ var require_dist_cjs49 = __commonJS({ var require_fromWebToken = __commonJS({ "../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js"(exports2) { "use strict"; - var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { @@ -17810,13 +19439,13 @@ var require_fromWebToken = __commonJS({ } }; } Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { + }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; - }); - var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + })); + var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); - } : function(o, v) { + }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { @@ -17835,7 +19464,7 @@ var require_fromWebToken = __commonJS({ const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init; let { roleAssumerWithWebIdentity } = init; if (!roleAssumerWithWebIdentity) { - const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar2(require_dist_cjs48())); + const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar2(require_dist_cjs53())); roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({ ...init.clientConfig, credentialProviderLogger: init.logger, @@ -17890,7 +19519,7 @@ var require_fromTokenFile = __commonJS({ }); // ../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js -var require_dist_cjs50 = __commonJS({ +var require_dist_cjs56 = __commonJS({ "../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -17915,7 +19544,7 @@ var require_dist_cjs50 = __commonJS({ }); // ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js -var require_dist_cjs51 = __commonJS({ +var require_dist_cjs57 = __commonJS({ "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js"(exports2, module2) { "use strict"; var __create2 = Object.create; @@ -17951,24 +19580,24 @@ var require_dist_cjs51 = __commonJS({ fromIni: () => fromIni }); module2.exports = __toCommonJS2(src_exports); - var import_shared_ini_file_loader = require_dist_cjs25(); + var import_shared_ini_file_loader = require_dist_cjs52(); var import_property_provider2 = require_dist_cjs24(); var resolveCredentialSource = /* @__PURE__ */ __name((credentialSource, profileName, logger) => { const sourceProvidersMap = { EcsContainer: async (options) => { - const { fromHttp } = await Promise.resolve().then(() => __toESM2(require_dist_cjs38())); - const { fromContainerMetadata } = await Promise.resolve().then(() => __toESM2(require_dist_cjs37())); + const { fromHttp } = await Promise.resolve().then(() => __toESM2(require_dist_cjs40())); + const { fromContainerMetadata } = await Promise.resolve().then(() => __toESM2(require_dist_cjs39())); logger == null ? void 0 : logger.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"); return (0, import_property_provider2.chain)(fromHttp(options ?? {}), fromContainerMetadata(options)); }, Ec2InstanceMetadata: async (options) => { logger == null ? void 0 : logger.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata"); - const { fromInstanceMetadata } = await Promise.resolve().then(() => __toESM2(require_dist_cjs37())); + const { fromInstanceMetadata } = await Promise.resolve().then(() => __toESM2(require_dist_cjs39())); return fromInstanceMetadata(options); }, Environment: async (options) => { logger == null ? void 0 : logger.debug("@aws-sdk/credential-provider-ini - credential_source is Environment"); - const { fromEnv } = await Promise.resolve().then(() => __toESM2(require_dist_cjs36())); + const { fromEnv } = await Promise.resolve().then(() => __toESM2(require_dist_cjs37())); return fromEnv(options); } }; @@ -18005,7 +19634,7 @@ var require_dist_cjs51 = __commonJS({ (_a = options.logger) == null ? void 0 : _a.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)"); const data = profiles[profileName]; if (!options.roleAssumer) { - const { getDefaultRoleAssumer } = await Promise.resolve().then(() => __toESM2(require_dist_cjs48())); + const { getDefaultRoleAssumer } = await Promise.resolve().then(() => __toESM2(require_dist_cjs53())); options.roleAssumer = getDefaultRoleAssumer( { ...options.clientConfig, @@ -18064,14 +19693,14 @@ var require_dist_cjs51 = __commonJS({ return options.roleAssumer(sourceCreds, params); }, "resolveAssumeRoleCredentials"); var isProcessProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.credential_process === "string", "isProcessProfile"); - var resolveProcessCredentials = /* @__PURE__ */ __name(async (options, profile) => Promise.resolve().then(() => __toESM2(require_dist_cjs49())).then( + var resolveProcessCredentials = /* @__PURE__ */ __name(async (options, profile) => Promise.resolve().then(() => __toESM2(require_dist_cjs55())).then( ({ fromProcess }) => fromProcess({ ...options, profile })() ), "resolveProcessCredentials"); var resolveSsoCredentials = /* @__PURE__ */ __name(async (profile, options = {}) => { - const { fromSSO } = await Promise.resolve().then(() => __toESM2(require_dist_cjs47())); + const { fromSSO } = await Promise.resolve().then(() => __toESM2(require_dist_cjs51())); return fromSSO({ profile, logger: options.logger @@ -18091,7 +19720,7 @@ var require_dist_cjs51 = __commonJS({ }); }, "resolveStaticCredentials"); var isWebIdentityProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.web_identity_token_file === "string" && typeof arg.role_arn === "string" && ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1, "isWebIdentityProfile"); - var resolveWebIdentityCredentials = /* @__PURE__ */ __name(async (profile, options) => Promise.resolve().then(() => __toESM2(require_dist_cjs50())).then( + var resolveWebIdentityCredentials = /* @__PURE__ */ __name(async (profile, options) => Promise.resolve().then(() => __toESM2(require_dist_cjs56())).then( ({ fromTokenFile: fromTokenFile2 }) => fromTokenFile2({ webIdentityTokenFile: profile.web_identity_token_file, roleArn: profile.role_arn, @@ -18136,7 +19765,7 @@ var require_dist_cjs51 = __commonJS({ }); // ../../../node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js -var require_dist_cjs52 = __commonJS({ +var require_dist_cjs58 = __commonJS({ "../../../node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js"(exports2, module2) { "use strict"; var __create2 = Object.create; @@ -18174,16 +19803,16 @@ var require_dist_cjs52 = __commonJS({ defaultProvider: () => defaultProvider }); module2.exports = __toCommonJS2(src_exports); - var import_credential_provider_env = require_dist_cjs36(); - var import_shared_ini_file_loader = require_dist_cjs25(); + var import_credential_provider_env = require_dist_cjs37(); + var import_shared_ini_file_loader = require_dist_cjs38(); var import_property_provider2 = require_dist_cjs24(); var ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; var remoteProvider = /* @__PURE__ */ __name(async (init) => { var _a, _b; - const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await Promise.resolve().then(() => __toESM2(require_dist_cjs37())); + const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await Promise.resolve().then(() => __toESM2(require_dist_cjs39())); if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) { (_a = init.logger) == null ? void 0 : _a.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata"); - const { fromHttp } = await Promise.resolve().then(() => __toESM2(require_dist_cjs38())); + const { fromHttp } = await Promise.resolve().then(() => __toESM2(require_dist_cjs40())); return (0, import_property_provider2.chain)(fromHttp(init), fromContainerMetadata(init)); } if (process.env[ENV_IMDS_DISABLED]) { @@ -18237,25 +19866,25 @@ var require_dist_cjs52 = __commonJS({ { logger: init.logger } ); } - const { fromSSO } = await Promise.resolve().then(() => __toESM2(require_dist_cjs47())); + const { fromSSO } = await Promise.resolve().then(() => __toESM2(require_dist_cjs51())); return fromSSO(init)(); }, async () => { var _a; (_a = init.logger) == null ? void 0 : _a.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni"); - const { fromIni } = await Promise.resolve().then(() => __toESM2(require_dist_cjs51())); + const { fromIni } = await Promise.resolve().then(() => __toESM2(require_dist_cjs57())); return fromIni(init)(); }, async () => { var _a; (_a = init.logger) == null ? void 0 : _a.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess"); - const { fromProcess } = await Promise.resolve().then(() => __toESM2(require_dist_cjs49())); + const { fromProcess } = await Promise.resolve().then(() => __toESM2(require_dist_cjs55())); return fromProcess(init)(); }, async () => { var _a; (_a = init.logger) == null ? void 0 : _a.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile"); - const { fromTokenFile: fromTokenFile2 } = await Promise.resolve().then(() => __toESM2(require_dist_cjs50())); + const { fromTokenFile: fromTokenFile2 } = await Promise.resolve().then(() => __toESM2(require_dist_cjs56())); return fromTokenFile2(init)(); }, async () => { @@ -18339,8 +19968,8 @@ var require_runtimeConfig_shared4 = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getRuntimeConfig = void 0; var core_1 = (init_dist_es2(), __toCommonJS(dist_es_exports2)); - var smithy_client_1 = require_dist_cjs33(); - var url_parser_1 = require_dist_cjs28(); + var smithy_client_1 = require_dist_cjs34(); + var url_parser_1 = require_dist_cjs29(); var util_base64_1 = require_dist_cjs16(); var util_utf8_1 = require_dist_cjs15(); var httpAuthSchemeProvider_1 = require_httpAuthSchemeProvider(); @@ -18381,19 +20010,19 @@ var require_runtimeConfig4 = __commonJS({ var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); var package_json_1 = tslib_1.__importDefault(require_package()); var core_1 = (init_dist_es2(), __toCommonJS(dist_es_exports2)); - var credential_provider_node_1 = require_dist_cjs52(); - var util_user_agent_node_1 = require_dist_cjs39(); + var credential_provider_node_1 = require_dist_cjs58(); + var util_user_agent_node_1 = require_dist_cjs41(); var config_resolver_1 = require_dist_cjs11(); - var hash_node_1 = require_dist_cjs40(); - var middleware_retry_1 = require_dist_cjs34(); + var hash_node_1 = require_dist_cjs42(); + var middleware_retry_1 = require_dist_cjs35(); var node_config_provider_1 = require_dist_cjs26(); var node_http_handler_1 = require_dist_cjs19(); - var util_body_length_node_1 = require_dist_cjs41(); - var util_retry_1 = require_dist_cjs31(); + var util_body_length_node_1 = require_dist_cjs43(); + var util_retry_1 = require_dist_cjs32(); var runtimeConfig_shared_1 = require_runtimeConfig_shared4(); - var smithy_client_1 = require_dist_cjs33(); - var util_defaults_mode_node_1 = require_dist_cjs42(); - var smithy_client_2 = require_dist_cjs33(); + var smithy_client_1 = require_dist_cjs34(); + var util_defaults_mode_node_1 = require_dist_cjs44(); + var smithy_client_2 = require_dist_cjs34(); var getRuntimeConfig = (config) => { (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version); const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); @@ -18426,7 +20055,7 @@ var require_runtimeConfig4 = __commonJS({ }); // ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/index.js -var require_dist_cjs53 = __commonJS({ +var require_dist_cjs59 = __commonJS({ "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/index.js"(exports2, module2) { "use strict"; var __defProp2 = Object.defineProperty; @@ -18602,8 +20231,8 @@ var require_dist_cjs53 = __commonJS({ var import_config_resolver = require_dist_cjs11(); var import_core3 = (init_dist_es(), __toCommonJS(dist_es_exports)); var import_middleware_content_length = require_dist_cjs23(); - var import_middleware_endpoint = require_dist_cjs29(); - var import_middleware_retry = require_dist_cjs34(); + var import_middleware_endpoint = require_dist_cjs30(); + var import_middleware_retry = require_dist_cjs35(); var import_httpAuthSchemeProvider = require_httpAuthSchemeProvider(); var resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => { return { @@ -18620,9 +20249,9 @@ var require_dist_cjs53 = __commonJS({ UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } }; var import_runtimeConfig = require_runtimeConfig4(); - var import_region_config_resolver = require_dist_cjs43(); + var import_region_config_resolver = require_dist_cjs45(); var import_protocol_http8 = require_dist_cjs2(); - var import_smithy_client4 = require_dist_cjs33(); + var import_smithy_client4 = require_dist_cjs34(); var getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; @@ -23573,9 +25202,9 @@ var require_safer = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/lib/bom-handling.js +// ../../../node_modules/iconv-lite/lib/bom-handling.js var require_bom_handling = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/lib/bom-handling.js"(exports2) { + "../../../node_modules/iconv-lite/lib/bom-handling.js"(exports2) { "use strict"; var BOMChar = "\uFEFF"; exports2.PrependBOM = PrependBOMWrapper; @@ -23617,9 +25246,9 @@ var require_bom_handling = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/internal.js +// ../../../node_modules/iconv-lite/encodings/internal.js var require_internal = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/internal.js"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/internal.js"(exports2, module2) { "use strict"; var Buffer2 = require_safer().Buffer; module2.exports = { @@ -23769,9 +25398,9 @@ var require_internal = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf32.js +// ../../../node_modules/iconv-lite/encodings/utf32.js var require_utf32 = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf32.js"(exports2) { + "../../../node_modules/iconv-lite/encodings/utf32.js"(exports2) { "use strict"; var Buffer2 = require_safer().Buffer; exports2._utf32 = Utf32Codec; @@ -23988,9 +25617,9 @@ var require_utf32 = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf16.js +// ../../../node_modules/iconv-lite/encodings/utf16.js var require_utf16 = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf16.js"(exports2) { + "../../../node_modules/iconv-lite/encodings/utf16.js"(exports2) { "use strict"; var Buffer2 = require_safer().Buffer; exports2.utf16be = Utf16BECodec; @@ -24122,9 +25751,9 @@ var require_utf16 = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf7.js +// ../../../node_modules/iconv-lite/encodings/utf7.js var require_utf7 = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf7.js"(exports2) { + "../../../node_modules/iconv-lite/encodings/utf7.js"(exports2) { "use strict"; var Buffer2 = require_safer().Buffer; exports2.utf7 = Utf7Codec; @@ -24323,9 +25952,9 @@ var require_utf7 = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-codec.js +// ../../../node_modules/iconv-lite/encodings/sbcs-codec.js var require_sbcs_codec = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) { + "../../../node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) { "use strict"; var Buffer2 = require_safer().Buffer; exports2._sbcs = SBCSCodec; @@ -24379,9 +26008,9 @@ var require_sbcs_codec = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data.js +// ../../../node_modules/iconv-lite/encodings/sbcs-data.js var require_sbcs_data = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) { "use strict"; module2.exports = { // Not supported by iconv, not sure why. @@ -24532,9 +26161,9 @@ var require_sbcs_data = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data-generated.js +// ../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js var require_sbcs_data_generated = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) { "use strict"; module2.exports = { "437": "cp437", @@ -24987,9 +26616,9 @@ var require_sbcs_data_generated = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-codec.js +// ../../../node_modules/iconv-lite/encodings/dbcs-codec.js var require_dbcs_codec = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) { + "../../../node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) { "use strict"; var Buffer2 = require_safer().Buffer; exports2._dbcs = DBCSCodec; @@ -25404,9 +27033,9 @@ var require_dbcs_codec = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/shiftjis.json +// ../../../node_modules/iconv-lite/encodings/tables/shiftjis.json var require_shiftjis = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports2, module2) { module2.exports = [ ["0", "\0", 128], ["a1", "\uFF61", 62], @@ -25535,9 +27164,9 @@ var require_shiftjis = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/eucjp.json +// ../../../node_modules/iconv-lite/encodings/tables/eucjp.json var require_eucjp = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/eucjp.json"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/tables/eucjp.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["8ea1", "\uFF61", 62], @@ -25723,9 +27352,9 @@ var require_eucjp = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp936.json +// ../../../node_modules/iconv-lite/encodings/tables/cp936.json var require_cp936 = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp936.json"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/tables/cp936.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127, "\u20AC"], ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], @@ -25993,9 +27622,9 @@ var require_cp936 = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gbk-added.json +// ../../../node_modules/iconv-lite/encodings/tables/gbk-added.json var require_gbk_added = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports2, module2) { module2.exports = [ ["a140", "\uE4C6", 62], ["a180", "\uE505", 32], @@ -26055,16 +27684,16 @@ var require_gbk_added = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +// ../../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json var require_gb18030_ranges = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports2, module2) { module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp949.json +// ../../../node_modules/iconv-lite/encodings/tables/cp949.json var require_cp949 = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp949.json"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/tables/cp949.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], @@ -26341,9 +27970,9 @@ var require_cp949 = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp950.json +// ../../../node_modules/iconv-lite/encodings/tables/cp950.json var require_cp950 = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp950.json"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/tables/cp950.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], @@ -26524,9 +28153,9 @@ var require_cp950 = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/big5-added.json +// ../../../node_modules/iconv-lite/encodings/tables/big5-added.json var require_big5_added = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/big5-added.json"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/tables/big5-added.json"(exports2, module2) { module2.exports = [ ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], @@ -26652,9 +28281,9 @@ var require_big5_added = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-data.js +// ../../../node_modules/iconv-lite/encodings/dbcs-data.js var require_dbcs_data = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) { "use strict"; module2.exports = { // == Japanese/ShiftJIS ==================================================== @@ -26899,9 +28528,9 @@ var require_dbcs_data = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/encodings/index.js +// ../../../node_modules/iconv-lite/encodings/index.js var require_encodings = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/encodings/index.js"(exports2, module2) { + "../../../node_modules/iconv-lite/encodings/index.js"(exports2, module2) { "use strict"; var modules = [ require_internal(), @@ -26926,9 +28555,9 @@ var require_encodings = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/lib/streams.js +// ../../../node_modules/iconv-lite/lib/streams.js var require_streams = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/lib/streams.js"(exports2, module2) { + "../../../node_modules/iconv-lite/lib/streams.js"(exports2, module2) { "use strict"; var Buffer2 = require_safer().Buffer; module2.exports = function(stream_module) { @@ -27021,9 +28650,9 @@ var require_streams = __commonJS({ } }); -// ../../../node_modules/encoding/node_modules/iconv-lite/lib/index.js +// ../../../node_modules/iconv-lite/lib/index.js var require_lib2 = __commonJS({ - "../../../node_modules/encoding/node_modules/iconv-lite/lib/index.js"(exports2, module2) { + "../../../node_modules/iconv-lite/lib/index.js"(exports2, module2) { "use strict"; var Buffer2 = require_safer().Buffer; var bomHandling = require_bom_handling(); @@ -27189,9 +28818,9 @@ var require_encoding = __commonJS({ } }); -// ../../../node_modules/node-fetch/lib/index.js +// node_modules/node-fetch/lib/index.js var require_lib3 = __commonJS({ - "../../../node_modules/node-fetch/lib/index.js"(exports2, module2) { + "node_modules/node-fetch/lib/index.js"(exports2, module2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); function _interopDefault(ex) { @@ -27332,7 +28961,7 @@ var require_lib3 = __commonJS({ body = null; } else if (isURLSearchParams(body)) { body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; + } else if (isBlob2(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === "[object ArrayBuffer]") { body = Buffer.from(body); @@ -27467,7 +29096,7 @@ var require_lib3 = __commonJS({ if (body === null) { return Body.Promise.resolve(Buffer.alloc(0)); } - if (isBlob(body)) { + if (isBlob2(body)) { body = body.stream(); } if (Buffer.isBuffer(body)) { @@ -27563,7 +29192,7 @@ var require_lib3 = __commonJS({ } return obj.constructor.name === "URLSearchParams" || Object.prototype.toString.call(obj) === "[object URLSearchParams]" || typeof obj.sort === "function"; } - function isBlob(obj) { + function isBlob2(obj) { return typeof obj === "object" && typeof obj.arrayBuffer === "function" && typeof obj.type === "string" && typeof obj.stream === "function" && typeof obj.constructor === "function" && typeof obj.constructor.name === "string" && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]); } function clone(instance) { @@ -27589,7 +29218,7 @@ var require_lib3 = __commonJS({ return "text/plain;charset=UTF-8"; } else if (isURLSearchParams(body)) { return "application/x-www-form-urlencoded;charset=UTF-8"; - } else if (isBlob(body)) { + } else if (isBlob2(body)) { return body.type || null; } else if (Buffer.isBuffer(body)) { return null; @@ -27609,7 +29238,7 @@ var require_lib3 = __commonJS({ const body = instance.body; if (body === null) { return 0; - } else if (isBlob(body)) { + } else if (isBlob2(body)) { return body.size; } else if (Buffer.isBuffer(body)) { return body.length; @@ -27627,7 +29256,7 @@ var require_lib3 = __commonJS({ const body = instance.body; if (body === null) { dest.end(); - } else if (isBlob(body)) { + } else if (isBlob2(body)) { body.stream().pipe(dest); } else if (Buffer.isBuffer(body)) { dest.write(body); @@ -28435,7 +30064,7 @@ var init_parameter_types = __esm({ "use strict"; zlib = __toESM(require("zlib")); typeCoercionStateMachine = () => { - const encoded = "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"; + const encoded = "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"; const decoded = JSON.parse(zlib.brotliDecompressSync(Buffer.from(encoded, "base64")).toString()); typeCoercionStateMachine = () => decoded; return decoded; @@ -28564,14 +30193,17 @@ var require_sdk_v2_to_v3 = __commonJS({ acmpca: "acm-pca", apigateway: "api-gateway", arczonalshift: "arc-zonal-shift", - alexaforbusiness: "alexa-for-business", appmesh: "app-mesh", applicationautoscaling: "application-auto-scaling", applicationinsights: "application-insights", - augmentedairuntime: "sage-maker-a2iruntime", + applicationsignals: "application-signals", + augmentedairuntime: "sagemaker-a2i-runtime", autoscaling: "auto-scaling", autoscalingplans: "auto-scaling-plans", + bcmdataexports: "bcm-data-exports", backupgateway: "backup-gateway", + bedrockagent: "bedrock-agent", + bedrockagentruntime: "bedrock-agent-runtime", bedrockruntime: "bedrock-runtime", cur: "cost-and-usage-report-service", chimesdkidentity: "chime-sdk-identity", @@ -28595,6 +30227,7 @@ var require_sdk_v2_to_v3 = __commonJS({ configservice: "config-service", connectcontactlens: "connect-contact-lens", costexplorer: "cost-explorer", + costoptimizationhub: "cost-optimization-hub", customerprofiles: "customer-profiles", dms: "database-migration-service", datapipeline: "data-pipeline", @@ -28607,6 +30240,7 @@ var require_sdk_v2_to_v3 = __commonJS({ dynamodbstreams: "dynamodb-streams", ec2instanceconnect: "ec2-instance-connect", ecrpublic: "ecr-public", + eksauth: "eks-auth", elb: "elastic-load-balancing", elbv2: "elastic-load-balancing-v2", emrserverless: "emr-serverless", @@ -28619,15 +30253,15 @@ var require_sdk_v2_to_v3 = __commonJS({ forecastqueryservice: "forecastquery", forecastservice: "forecast", globalaccelerator: "global-accelerator", + ivsrealtime: "ivs-realtime", + inspectorscan: "inspector-scan", iot1clickdevicesservice: "iot-1click-devices-service", iot1clickprojects: "iot-1click-projects", iotevents: "iot-events", ioteventsdata: "iot-events-data", iotjobsdataplane: "iot-jobs-data-plane", - iotroborunner: "iot-roborunner", iotwireless: "iot-wireless", iotdata: "iot-data-plane", - ivsrealtime: "ivs-realtime", kendraranking: "kendra-ranking", kinesisanalytics: "kinesis-analytics", kinesisanalyticsv2: "kinesis-analytics-v2", @@ -28646,14 +30280,15 @@ var require_sdk_v2_to_v3 = __commonJS({ licensemanagerusersubscriptions: "license-manager-user-subscriptions", machinelearning: "machine-learning", managedblockchainquery: "managedblockchain-query", + marketplaceagreement: "marketplace-agreement", marketplacecatalog: "marketplace-catalog", marketplacecommerceanalytics: "marketplace-commerce-analytics", + marketplacedeployment: "marketplace-deployment", marketplaceentitlementservice: "marketplace-entitlement-service", marketplacemetering: "marketplace-metering", mediapackagevod: "mediapackage-vod", mediastoredata: "mediastore-data", medicalimaging: "medical-imaging", - memorydb: "memory-db", migrationhub: "migration-hub", migrationhubconfig: "migrationhub-config", migrationhubrefactorspaces: "migration-hub-refactor-spaces", @@ -28661,6 +30296,7 @@ var require_sdk_v2_to_v3 = __commonJS({ paymentcryptography: "payment-cryptography", paymentcryptographydata: "payment-cryptography-data", pcaconnectorad: "pca-connector-ad", + pcaconnectorscep: "pca-connector-scep", personalizeevents: "personalize-events", personalizeruntime: "personalize-runtime", pinpointemail: "pinpoint-email", @@ -28681,6 +30317,7 @@ var require_sdk_v2_to_v3 = __commonJS({ s3control: "s3-control", ssmcontacts: "ssm-contacts", ssmincidents: "ssm-incidents", + ssmquicksetup: "ssm-quicksetup", ssoadmin: "sso-admin", ssooidc: "sso-oidc", sagemakerfeaturestoreruntime: "sagemaker-featurestore-runtime", @@ -28697,12 +30334,14 @@ var require_sdk_v2_to_v3 = __commonJS({ stepfunctions: "sfn", storagegateway: "storage-gateway", supportapp: "support-app", + timestreaminfluxdb: "timestream-influxdb", timestreamquery: "timestream-query", timestreamwrite: "timestream-write", transcribeservice: "transcribe", - voiceid: "voice-id", vpclattice: "vpc-lattice", + voiceid: "voice-id", wafregional: "waf-regional", + workspacesthinclient: "workspaces-thin-client", workspacesweb: "workspaces-web" }; } @@ -28724,9 +30363,6 @@ var require_sdk_v3_metadata = __commonJS({ acm: { iamPrefix: "acm" }, - "alexa-for-business": { - iamPrefix: "a4b" - }, amp: { iamPrefix: "aps" }, @@ -28775,6 +30411,9 @@ var require_sdk_v3_metadata = __commonJS({ "application-insights": { iamPrefix: "applicationinsights" }, + "application-signals": { + iamPrefix: "application-signals" + }, applicationcostprofiler: { iamPrefix: "application-cost-profiler" }, @@ -28787,9 +30426,15 @@ var require_sdk_v3_metadata = __commonJS({ appsync: { iamPrefix: "appsync" }, + apptest: { + iamPrefix: "apptest" + }, "arc-zonal-shift": { iamPrefix: "arc-zonal-shift" }, + artifact: { + iamPrefix: "artifact" + }, athena: { iamPrefix: "athena" }, @@ -28811,8 +30456,8 @@ var require_sdk_v3_metadata = __commonJS({ backup: { iamPrefix: "backup" }, - backupstorage: { - iamPrefix: "backup-storage" + backupsearch: { + iamPrefix: "backup-search" }, batch: { iamPrefix: "batch" @@ -28820,18 +30465,30 @@ var require_sdk_v3_metadata = __commonJS({ "bcm-data-exports": { iamPrefix: "bcm-data-exports" }, + "bcm-pricing-calculator": { + iamPrefix: "bcm-pricing-calculator" + }, "bedrock-agent-runtime": { iamPrefix: "bedrock" }, "bedrock-agent": { iamPrefix: "bedrock" }, + "bedrock-data-automation-runtime": { + iamPrefix: "bedrock" + }, + "bedrock-data-automation": { + iamPrefix: "bedrock" + }, "bedrock-runtime": { iamPrefix: "bedrock" }, bedrock: { iamPrefix: "bedrock" }, + billing: { + iamPrefix: "billing" + }, billingconductor: { iamPrefix: "billingconductor" }, @@ -28841,6 +30498,9 @@ var require_sdk_v3_metadata = __commonJS({ budgets: { iamPrefix: "budgets" }, + chatbot: { + iamPrefix: "chatbot" + }, "chime-sdk-identity": { iamPrefix: "chime" }, @@ -28908,7 +30568,7 @@ var require_sdk_v3_metadata = __commonJS({ iamPrefix: "logs" }, cloudwatch: { - iamPrefix: "monitoring" + iamPrefix: "cloudwatch" }, codeartifact: { iamPrefix: "codeartifact" @@ -28920,6 +30580,9 @@ var require_sdk_v3_metadata = __commonJS({ codecommit: { iamPrefix: "codecommit" }, + codeconnections: { + iamPrefix: "codeconnections" + }, codedeploy: { iamPrefix: "codedeploy" }, @@ -28941,9 +30604,6 @@ var require_sdk_v3_metadata = __commonJS({ "codestar-notifications": { iamPrefix: "codestar-notifications" }, - codestar: { - iamPrefix: "codestar" - }, "cognito-identity-provider": { iamPrefix: "cognito-idp" }, @@ -28974,12 +30634,18 @@ var require_sdk_v3_metadata = __commonJS({ connectcampaigns: { iamPrefix: "connect-campaigns" }, + connectcampaignsv2: { + iamPrefix: "connect-campaigns" + }, connectcases: { iamPrefix: "cases" }, connectparticipant: { iamPrefix: "execute-api" }, + controlcatalog: { + iamPrefix: "controlcatalog" + }, controltower: { iamPrefix: "controltower" }, @@ -29016,6 +30682,9 @@ var require_sdk_v3_metadata = __commonJS({ dax: { iamPrefix: "dax" }, + deadline: { + iamPrefix: "deadline" + }, detective: { iamPrefix: "detective" }, @@ -29028,6 +30697,9 @@ var require_sdk_v3_metadata = __commonJS({ "direct-connect": { iamPrefix: "directconnect" }, + "directory-service-data": { + iamPrefix: "ds-data" + }, "directory-service": { iamPrefix: "ds" }, @@ -29043,6 +30715,9 @@ var require_sdk_v3_metadata = __commonJS({ drs: { iamPrefix: "drs" }, + dsql: { + iamPrefix: "dsql" + }, "dynamodb-streams": { iamPrefix: "dynamodb" }, @@ -29082,9 +30757,6 @@ var require_sdk_v3_metadata = __commonJS({ "elastic-beanstalk": { iamPrefix: "elasticbeanstalk" }, - "elastic-inference": { - iamPrefix: "elastic-inference" - }, "elastic-load-balancing-v2": { iamPrefix: "elasticloadbalancing" }, @@ -29151,6 +30823,18 @@ var require_sdk_v3_metadata = __commonJS({ gamelift: { iamPrefix: "gamelift" }, + gameliftstreams: { + iamPrefix: "gameliftstreams" + }, + "geo-maps": { + iamPrefix: "geo-maps" + }, + "geo-places": { + iamPrefix: "geo-places" + }, + "geo-routes": { + iamPrefix: "geo-routes" + }, glacier: { iamPrefix: "glacier" }, @@ -29181,9 +30865,6 @@ var require_sdk_v3_metadata = __commonJS({ healthlake: { iamPrefix: "healthlake" }, - honeycode: { - iamPrefix: "honeycode" - }, iam: { iamPrefix: "iam" }, @@ -29205,11 +30886,8 @@ var require_sdk_v3_metadata = __commonJS({ internetmonitor: { iamPrefix: "internetmonitor" }, - "iot-1click-devices-service": { - iamPrefix: "iot1click" - }, - "iot-1click-projects": { - iamPrefix: "iot1click" + invoicing: { + iamPrefix: "invoicing" }, "iot-data-plane": { iamPrefix: "iotdata" @@ -29223,14 +30901,20 @@ var require_sdk_v3_metadata = __commonJS({ "iot-jobs-data-plane": { iamPrefix: "iot-jobs-data" }, - "iot-roborunner": { - iamPrefix: "iotroborunner" + "iot-managed-integrations": { + iamPrefix: "iotmanagedintegrations" }, "iot-wireless": { iamPrefix: "iotwireless" }, iot: { - iamPrefix: "iot" + iamPrefix: "iot", + commands: [ + "CreateCommand", + "DeleteCommand", + "GetCommand", + "UpdateCommand" + ] }, iotanalytics: { iamPrefix: "iotanalytics" @@ -29361,6 +31045,9 @@ var require_sdk_v3_metadata = __commonJS({ macie2: { iamPrefix: "macie2" }, + mailmanager: { + iamPrefix: "ses" + }, "managedblockchain-query": { iamPrefix: "managedblockchain-query" }, @@ -29385,6 +31072,9 @@ var require_sdk_v3_metadata = __commonJS({ "marketplace-metering": { iamPrefix: "aws-marketplace" }, + "marketplace-reporting": { + iamPrefix: "aws-marketplace" + }, mediaconnect: { iamPrefix: "mediaconnect" }, @@ -29436,9 +31126,6 @@ var require_sdk_v3_metadata = __commonJS({ migrationhubstrategy: { iamPrefix: "migrationhub-strategy" }, - mobile: { - iamPrefix: "AWSMobileHubService" - }, mq: { iamPrefix: "mq" }, @@ -29460,18 +31147,27 @@ var require_sdk_v3_metadata = __commonJS({ "network-firewall": { iamPrefix: "network-firewall" }, + networkflowmonitor: { + iamPrefix: "networkflowmonitor" + }, networkmanager: { iamPrefix: "networkmanager" }, networkmonitor: { iamPrefix: "networkmonitor" }, - nimble: { - iamPrefix: "nimble" + notifications: { + iamPrefix: "notifications" + }, + notificationscontacts: { + iamPrefix: "notifications-contacts" }, oam: { iamPrefix: "oam" }, + observabilityadmin: { + iamPrefix: "observabilityadmin" + }, omics: { iamPrefix: "omics" }, @@ -29499,6 +31195,9 @@ var require_sdk_v3_metadata = __commonJS({ panorama: { iamPrefix: "panorama" }, + "partnercentral-selling": { + iamPrefix: "partnercentral-selling" + }, "payment-cryptography-data": { iamPrefix: "payment-cryptography" }, @@ -29508,6 +31207,12 @@ var require_sdk_v3_metadata = __commonJS({ "pca-connector-ad": { iamPrefix: "pca-connector-ad" }, + "pca-connector-scep": { + iamPrefix: "pca-connector-scep" + }, + pcs: { + iamPrefix: "pcs" + }, "personalize-events": { iamPrefix: "personalize" }, @@ -29541,12 +31246,12 @@ var require_sdk_v3_metadata = __commonJS({ pricing: { iamPrefix: "pricing" }, - privatenetworks: { - iamPrefix: "private-networks" - }, proton: { iamPrefix: "proton" }, + qapps: { + iamPrefix: "qapps" + }, qbusiness: { iamPrefix: "qbusiness" }, @@ -29628,6 +31333,9 @@ var require_sdk_v3_metadata = __commonJS({ "route53-recovery-readiness": { iamPrefix: "route53-recovery-readiness" }, + route53profiles: { + iamPrefix: "route53profiles" + }, route53resolver: { iamPrefix: "route53resolver" }, @@ -29643,6 +31351,9 @@ var require_sdk_v3_metadata = __commonJS({ s3outposts: { iamPrefix: "s3-outposts" }, + s3tables: { + iamPrefix: "s3tables" + }, "sagemaker-a2i-runtime": { iamPrefix: "sagemaker" }, @@ -29676,6 +31387,9 @@ var require_sdk_v3_metadata = __commonJS({ "secrets-manager": { iamPrefix: "secretsmanager" }, + "security-ir": { + iamPrefix: "security-ir" + }, securityhub: { iamPrefix: "securityhub" }, @@ -29727,15 +31441,24 @@ var require_sdk_v3_metadata = __commonJS({ sns: { iamPrefix: "sns" }, + socialmessaging: { + iamPrefix: "social-messaging" + }, sqs: { iamPrefix: "sqs" }, "ssm-contacts": { iamPrefix: "ssm-contacts" }, + "ssm-guiconnect": { + iamPrefix: "ssm-guiconnect" + }, "ssm-incidents": { iamPrefix: "ssm-incidents" }, + "ssm-quicksetup": { + iamPrefix: "ssm-quicksetup" + }, "ssm-sap": { iamPrefix: "ssm-sap" }, @@ -29776,9 +31499,15 @@ var require_sdk_v3_metadata = __commonJS({ synthetics: { iamPrefix: "synthetics" }, + taxsettings: { + iamPrefix: "tax" + }, textract: { iamPrefix: "textract" }, + "timestream-influxdb": { + iamPrefix: "timestream-influxdb" + }, "timestream-query": { iamPrefix: "timestream" }, @@ -29830,9 +31559,6 @@ var require_sdk_v3_metadata = __commonJS({ workdocs: { iamPrefix: "workdocs" }, - worklink: { - iamPrefix: "worklink" - }, workmail: { iamPrefix: "workmail" }, @@ -29942,6 +31668,12 @@ var init_api_call = __esm({ init_find_client_constructor(); init_sdk_info(); ApiCall = class { + service; + action; + v3PackageName; + v3Package; + // For testing purposes + client; // For testing purposes constructor(service, action) { this.service = normalizeServiceName(service); @@ -30019,7 +31751,7 @@ var init_api_call = __esm({ var require_lib4 = __commonJS({ "../aws-custom-resource-sdk-adapter/lib/index.js"(exports2) { "use strict"; - var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { @@ -30028,10 +31760,10 @@ var require_lib4 = __commonJS({ } }; } Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { + }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; - }); + })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; @@ -30057,13 +31789,13 @@ var require_lib4 = __commonJS({ }); // lib/assertions/providers/lambda-handler/index.ts -var lambda_handler_exports = {}; -__export(lambda_handler_exports, { +var index_exports = {}; +__export(index_exports, { handler: () => handler, isComplete: () => isComplete, onTimeout: () => onTimeout }); -module.exports = __toCommonJS(lambda_handler_exports); +module.exports = __toCommonJS(index_exports); // lib/assertions/providers/lambda-handler/assertion.ts var import_helpers_internal = __toESM(require_helpers_internal()); @@ -30071,12 +31803,11 @@ var import_helpers_internal = __toESM(require_helpers_internal()); // lib/assertions/providers/lambda-handler/base.ts var https = __toESM(require("https")); var url = __toESM(require("url")); -var import_client_sfn = __toESM(require_dist_cjs53()); +var import_client_sfn = __toESM(require_dist_cjs59()); var CustomResourceHandler = class { constructor(event, context) { this.event = event; this.context = context; - this.timedOut = false; this.timeout = setTimeout(async () => { await this.respond({ status: "FAILED", @@ -30088,6 +31819,9 @@ var CustomResourceHandler = class { this.event = event; this.physicalResourceId = extractPhysicalResourceId(event); } + physicalResourceId; + timeout; + timedOut = false; /** * Handles executing the custom resource event. If `stateMachineArn` is present * in the props then trigger the waiter statemachine @@ -30221,6 +31955,7 @@ var AssertionHandler = class extends CustomResourceHandler { } }; var MatchCreator = class { + parsedObj; constructor(obj) { this.parsedObj = { matcher: obj @@ -30325,28 +32060,6 @@ function decodeCall(call) { // lib/assertions/providers/lambda-handler/http.ts var import_node_fetch = __toESM(require_lib3()); -var HttpHandler = class extends CustomResourceHandler { - async processEvent(request2) { - console.log("request", request2); - const response = await (0, import_node_fetch.default)(request2.parameters.url, request2.parameters.fetchOptions); - const result = { - ok: response.ok, - status: response.status, - statusText: response.statusText, - headers: response.headers.raw() - }; - result.body = await response.text(); - try { - result.body = JSON.parse(result.body); - } catch (e) { - } - return { - apiCallResponse: result - }; - } -}; - -// lib/assertions/providers/lambda-handler/sdk.ts var import_aws_custom_resource_sdk_adapter = __toESM(require_lib4()); // lib/assertions/providers/lambda-handler/utils.ts @@ -30393,10 +32106,38 @@ function decodeValue(value) { return JSON.parse(value); } +// lib/assertions/providers/lambda-handler/http.ts +var HttpHandler = class extends CustomResourceHandler { + async processEvent(request2) { + console.log("request", request2); + const response = await (0, import_node_fetch.default)(request2.parameters.url, request2.parameters.fetchOptions); + const result = { + ok: response.ok, + status: response.status, + statusText: response.statusText, + headers: response.headers.raw() + }; + result.body = await response.text(); + try { + result.body = JSON.parse(result.body); + } catch (e) { + } + let resp; + if (request2.flattenResponse === "true") { + resp = (0, import_aws_custom_resource_sdk_adapter.flatten)(deepParseJson({ apiCallResponse: result })); + } else { + resp = { apiCallResponse: result }; + } + console.log(`Returning result ${JSON.stringify(resp)}`); + return resp; + } +}; + // lib/assertions/providers/lambda-handler/sdk.ts +var import_aws_custom_resource_sdk_adapter2 = __toESM(require_lib4()); var AwsApiCallHandler = class extends CustomResourceHandler { async processEvent(request2) { - const apiCall = new import_aws_custom_resource_sdk_adapter.ApiCall(request2.service, request2.api); + const apiCall = new import_aws_custom_resource_sdk_adapter2.ApiCall(request2.service, request2.api); const parameters = request2.parameters ? decodeParameters(request2.parameters) : {}; console.log(`SDK request to ${apiCall.service}.${apiCall.action} with parameters ${JSON.stringify(parameters)}`); const response = await apiCall.invoke({ parameters }); @@ -30404,7 +32145,7 @@ var AwsApiCallHandler = class extends CustomResourceHandler { delete response.$metadata; let resp; if (request2.outputPaths || request2.flattenResponse === "true") { - const flattened = (0, import_aws_custom_resource_sdk_adapter.flatten)(deepParseJson({ apiCallResponse: response })); + const flattened = (0, import_aws_custom_resource_sdk_adapter2.flatten)(deepParseJson({ apiCallResponse: response })); resp = request2.outputPaths ? filterKeys(flattened, request2.outputPaths) : flattened; } else { resp = { apiCallResponse: response }; diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/aws-stepfunctions-state-machine-jsonata-integ.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/aws-stepfunctions-state-machine-jsonata-integ.assets.json index ba46a28ea002e..fc2c3bcdce016 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/aws-stepfunctions-state-machine-jsonata-integ.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/aws-stepfunctions-state-machine-jsonata-integ.assets.json @@ -1,15 +1,16 @@ { - "version": "39.0.0", + "version": "48.0.0", "files": { - "27f3dacce50e891237faa2930a3704423699947aeaaba4a6cd5d8958f0512e50": { + "1446bf35fc46b9ba3415ba95651f9160bc260d83f46522e7cdb72b7edfda2b9d": { + "displayName": "aws-stepfunctions-state-machine-jsonata-integ Template", "source": { "path": "aws-stepfunctions-state-machine-jsonata-integ.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-db0b34b5": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "27f3dacce50e891237faa2930a3704423699947aeaaba4a6cd5d8958f0512e50.json", + "objectKey": "1446bf35fc46b9ba3415ba95651f9160bc260d83f46522e7cdb72b7edfda2b9d.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/aws-stepfunctions-state-machine-jsonata-integ.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/aws-stepfunctions-state-machine-jsonata-integ.template.json index 2df6074f5b7c0..28e954cd52fed 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/aws-stepfunctions-state-machine-jsonata-integ.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/aws-stepfunctions-state-machine-jsonata-integ.template.json @@ -20,7 +20,7 @@ "StateMachine2E01A3A5": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { - "DefinitionString": "{\"StartAt\":\"JSONPathPass\",\"States\":{\"JSONPathPass\":{\"Type\":\"Pass\",\"Parameters\":{\"count.$\":\"States.MathAdd($.init, 1)\"},\"Next\":\"JSONataPass\"},\"JSONataPass\":{\"Type\":\"Pass\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Choice\"},\"Choice\":{\"Type\":\"Choice\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Choices\":[{\"Condition\":\"{% $states.input.count % 2 = 1 %}\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Wait\"}],\"Default\":\"Succeed\"},\"Succeed\":{\"Type\":\"Succeed\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"}},\"Wait\":{\"Type\":\"Wait\",\"QueryLanguage\":\"JSONata\",\"Seconds\":\"{% $states.input.count %}\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Succeed\"}}}", + "DefinitionString": "{\"StartAt\":\"JSONPathPass\",\"States\":{\"JSONPathPass\":{\"Type\":\"Pass\",\"Parameters\":{\"count.$\":\"States.MathAdd($.init, 1)\"},\"Next\":\"JSONataPass\"},\"JSONataPass\":{\"Type\":\"Pass\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Choice\"},\"Choice\":{\"Type\":\"Choice\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Choices\":[{\"Condition\":\"{%\\n $states.input.count % 2 = 1\\n %}\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Wait\"}],\"Default\":\"Succeed\"},\"Succeed\":{\"Type\":\"Succeed\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"}},\"Wait\":{\"Type\":\"Wait\",\"QueryLanguage\":\"JSONata\",\"Seconds\":\"{% $states.input.count %}\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Succeed\"}}}", "RoleArn": { "Fn::GetAtt": [ "StateMachineRoleB840431D", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/cdk.out index 91e1a8b9901d5..523a9aac37cbf 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/cdk.out +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/cdk.out @@ -1 +1 @@ -{"version":"39.0.0"} \ No newline at end of file +{"version":"48.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/integ.json index ffc745e6c7040..cbfdc2f0c901f 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/integ.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/integ.json @@ -1,5 +1,5 @@ { - "version": "39.0.0", + "version": "48.0.0", "testCases": { "StateMachineJsonata/DefaultTest": { "stacks": [ @@ -8,5 +8,6 @@ "assertionStack": "StateMachineJsonata/DefaultTest/DeployAssert", "assertionStackName": "StateMachineJsonataDefaultTestDeployAssertF616C932" } - } + }, + "minimumCliVersion": "2.1027.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/manifest.json index 42bbb75093ebf..7e4d0569b79f6 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/manifest.json @@ -1,5 +1,5 @@ { - "version": "39.0.0", + "version": "48.0.0", "artifacts": { "aws-stepfunctions-state-machine-jsonata-integ.assets": { "type": "cdk:asset-manifest", @@ -18,7 +18,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/27f3dacce50e891237faa2930a3704423699947aeaaba4a6cd5d8958f0512e50.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/1446bf35fc46b9ba3415ba95651f9160bc260d83f46522e7cdb72b7edfda2b9d.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -34,6 +34,31 @@ "aws-stepfunctions-state-machine-jsonata-integ.assets" ], "metadata": { + "/aws-stepfunctions-state-machine-jsonata-integ/StateMachine": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "definitionBody": "*" + } + } + ], + "/aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + } + ], + "/aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role/Resource": [ { "type": "aws:cdk:logicalId", @@ -84,7 +109,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/e62edc4e5a984f27be83f2ef8db0b7b4efb254db011313085081ecca7ce0fe07.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/79005db68c917d873add7b863ed0c2bf0c52ed081170a7ecb1a3282969916d7c.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -101,6 +126,20 @@ "StateMachineJsonataDefaultTestDeployAssertF616C932.assets" ], "metadata": { + "/StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/Default": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + } + ], "/StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/Default/Default": [ { "type": "aws:cdk:logicalId", @@ -119,10 +158,18 @@ "data": "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F" } ], - "/StateMachineJsonata/DefaultTest/DeployAssert/LatestNodeRuntimeMap": [ + "/StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/Default": [ { - "type": "aws:cdk:logicalId", - "data": "LatestNodeRuntimeMap" + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" } ], "/StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/Default/Default": [ @@ -205,6 +252,500 @@ "properties": { "file": "tree.json" } + }, + "aws-cdk-lib/feature-flag-report": { + "type": "cdk:feature-flag-report", + "properties": { + "module": "aws-cdk-lib", + "flags": { + "@aws-cdk/aws-signer:signingProfileNamePassedToCfn": { + "recommendedValue": true, + "explanation": "Pass signingProfileName to CfnSigningProfile" + }, + "@aws-cdk/core:newStyleStackSynthesis": { + "recommendedValue": true, + "explanation": "Switch to new stack synthesis method which enables CI/CD", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:stackRelativeExports": { + "recommendedValue": true, + "explanation": "Name exports based on the construct paths relative to the stack, rather than the global construct path", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-ecs-patterns:secGroupsDisablesImplicitOpenListener": { + "recommendedValue": true, + "explanation": "Disable implicit openListener when custom security groups are provided" + }, + "@aws-cdk/aws-rds:lowercaseDbIdentifier": { + "recommendedValue": true, + "explanation": "Force lowercasing of RDS Cluster names in CDK", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": { + "recommendedValue": true, + "explanation": "Allow adding/removing multiple UsagePlanKeys independently", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-lambda:recognizeVersionProps": { + "recommendedValue": true, + "explanation": "Enable this feature flag to opt in to the updated logical id calculation for Lambda Version created using the `fn.currentVersion`.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-lambda:recognizeLayerVersion": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to opt in to the updated logical id calculation for Lambda Version created using the `fn.currentVersion`." + }, + "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": { + "recommendedValue": true, + "explanation": "Enable this feature flag to have cloudfront distributions use the security policy TLSv1.2_2021 by default.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:checkSecretUsage": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this flag to make it impossible to accidentally use SecretValues in unsafe locations" + }, + "@aws-cdk/core:target-partitions": { + "recommendedValue": [ + "aws", + "aws-cn" + ], + "explanation": "What regions to include in lookup tables of environment agnostic stacks" + }, + "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": { + "userValue": true, + "recommendedValue": true, + "explanation": "ECS extensions will automatically add an `awslogs` driver if no logging is specified" + }, + "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to have Launch Templates generated by the `InstanceRequireImdsv2Aspect` use unique names." + }, + "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": { + "userValue": true, + "recommendedValue": true, + "explanation": "ARN format used by ECS. In the new ARN format, the cluster name is part of the resource ID." + }, + "@aws-cdk/aws-iam:minimizePolicies": { + "userValue": true, + "recommendedValue": true, + "explanation": "Minimize IAM policies by combining Statements" + }, + "@aws-cdk/core:validateSnapshotRemovalPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Error on snapshot removal policies on resources that do not support it." + }, + "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Generate key aliases that include the stack name" + }, + "@aws-cdk/aws-s3:createDefaultLoggingPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to create an S3 bucket policy by default in cases where an AWS service would automatically create the Policy if one does not exist." + }, + "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": { + "userValue": true, + "recommendedValue": true, + "explanation": "Restrict KMS key policy for encrypted Queues a bit more" + }, + "@aws-cdk/aws-apigateway:disableCloudWatchRole": { + "userValue": true, + "recommendedValue": true, + "explanation": "Make default CloudWatch Role behavior safe for multiple API Gateways in one environment" + }, + "@aws-cdk/core:enablePartitionLiterals": { + "userValue": true, + "recommendedValue": true, + "explanation": "Make ARNs concrete if AWS partition is known" + }, + "@aws-cdk/aws-events:eventsTargetQueueSameAccount": { + "userValue": true, + "recommendedValue": true, + "explanation": "Event Rules may only push to encrypted SQS queues in the same account" + }, + "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": { + "userValue": true, + "recommendedValue": true, + "explanation": "Avoid setting the \"ECS\" deployment controller when adding a circuit breaker" + }, + "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature to create default policy names for imported roles that depend on the stack the role is in." + }, + "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use S3 Bucket Policy instead of ACLs for Server Access Logging" + }, + "@aws-cdk/aws-route53-patters:useCertificate": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use the official `Certificate` resource instead of `DnsValidatedCertificate`" + }, + "@aws-cdk/customresources:installLatestAwsSdkDefault": { + "userValue": false, + "recommendedValue": false, + "explanation": "Whether to install the latest SDK by default in AwsCustomResource" + }, + "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use unique resource name for Database Proxy" + }, + "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": { + "userValue": true, + "recommendedValue": true, + "explanation": "Remove CloudWatch alarms from deployment group" + }, + "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": { + "userValue": true, + "recommendedValue": true, + "explanation": "Include authorizer configuration in the calculation of the API deployment logical ID." + }, + "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": { + "userValue": true, + "recommendedValue": true, + "explanation": "Define user data for a launch template by default when a machine image is provided." + }, + "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": { + "userValue": true, + "recommendedValue": true, + "explanation": "SecretTargetAttachments uses the ResourcePolicy of the attached Secret." + }, + "@aws-cdk/aws-redshift:columnId": { + "userValue": true, + "recommendedValue": true, + "explanation": "Whether to use an ID to track Redshift column changes" + }, + "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable AmazonEMRServicePolicy_v2 managed policies" + }, + "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": { + "userValue": true, + "recommendedValue": true, + "explanation": "Restrict access to the VPC default security group" + }, + "@aws-cdk/aws-apigateway:requestValidatorUniqueId": { + "userValue": true, + "recommendedValue": true, + "explanation": "Generate a unique id for each RequestValidator added to a method" + }, + "@aws-cdk/aws-kms:aliasNameRef": { + "userValue": true, + "recommendedValue": true, + "explanation": "KMS Alias name and keyArn will have implicit reference to KMS Key" + }, + "@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable grant methods on Aliases imported by name to use kms:ResourceAliases condition" + }, + "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": { + "userValue": true, + "recommendedValue": true, + "explanation": "Generate a launch template when creating an AutoScalingGroup" + }, + "@aws-cdk/core:includePrefixInUniqueNameGeneration": { + "userValue": true, + "recommendedValue": true, + "explanation": "Include the stack prefix in the stack name generation process" + }, + "@aws-cdk/aws-efs:denyAnonymousAccess": { + "userValue": true, + "recommendedValue": true, + "explanation": "EFS denies anonymous clients accesses" + }, + "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables support for Multi-AZ with Standby deployment for opensearch domains" + }, + "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default" + }, + "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, mount targets will have a stable logicalId that is linked to the associated subnet." + }, + "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, a scope of InstanceParameterGroup for AuroraClusterInstance with each parameters will change." + }, + "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, will always use the arn for identifiers for CfnSourceApiAssociation in the GraphqlApi construct rather than id." + }, + "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, creating an RDS database cluster from a snapshot will only render credentials for snapshot credentials." + }, + "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the CodeCommit source action is using the default branch name 'main'." + }, + "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the logical ID of a Lambda permission for a Lambda action includes an alarm ID." + }, + "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables Pipeline to set the default value for crossAccountKeys to false." + }, + "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables Pipeline to set the default pipeline type to V2." + }, + "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, IAM Policy created from KMS key grant will reduce the resource scope to this key only." + }, + "@aws-cdk/pipelines:reduceAssetRoleTrustScope": { + "recommendedValue": true, + "explanation": "Remove the root account principal from PipelineAssetsFileRole trust policy", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-eks:nodegroupNameAttribute": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, nodegroupName attribute of the provisioned EKS NodeGroup will not have the cluster name prefix." + }, + "@aws-cdk/aws-ec2:ebsDefaultGp3Volume": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the default volume type of the EBS volume will be GP3" + }, + "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, remove default deployment alarm settings" + }, + "@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault": { + "userValue": false, + "recommendedValue": false, + "explanation": "When enabled, the custom resource used for `AwsCustomResource` will configure the `logApiResponseData` property as true by default" + }, + "@aws-cdk/aws-s3:keepNotificationInImportedBucket": { + "userValue": false, + "recommendedValue": false, + "explanation": "When enabled, Adding notifications to a bucket in the current stack will not remove notification from imported stack." + }, + "@aws-cdk/aws-stepfunctions-tasks:useNewS3UriParametersForBedrockInvokeModelTask": { + "recommendedValue": true, + "explanation": "When enabled, use new props for S3 URI field in task definition of state machine for bedrock invoke model.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:explicitStackTags": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, stack tags need to be assigned explicitly on a Stack." + }, + "@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature": { + "userValue": false, + "recommendedValue": false, + "explanation": "When set to true along with canContainersAccessInstanceRole=false in ECS cluster, new updated commands will be added to UserData to block container accessing IMDS. **Applicable to Linux only. IMPORTANT: See [details.](#aws-cdkaws-ecsenableImdsBlockingDeprecatedFeature)**" + }, + "@aws-cdk/aws-ecs:disableEcsImdsBlocking": { + "userValue": true, + "recommendedValue": true, + "explanation": "When set to true, CDK synth will throw exception if canContainersAccessInstanceRole is false. **IMPORTANT: See [details.](#aws-cdkaws-ecsdisableEcsImdsBlocking)**" + }, + "@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, we will only grant the necessary permissions when users specify cloudwatch log group through logConfiguration" + }, + "@aws-cdk/aws-dynamodb:resourcePolicyPerReplica": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled will allow you to specify a resource policy per replica, and not copy the source table policy to all replicas" + }, + "@aws-cdk/aws-ec2:ec2SumTImeoutEnabled": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, initOptions.timeout and resourceSignalTimeout values will be summed together." + }, + "@aws-cdk/aws-appsync:appSyncGraphQLAPIScopeLambdaPermission": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, a Lambda authorizer Permission created when using GraphqlApi will be properly scoped with a SourceArn." + }, + "@aws-cdk/aws-rds:setCorrectValueForDatabaseInstanceReadReplicaInstanceResourceId": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the value of property `instanceResourceId` in construct `DatabaseInstanceReadReplica` will be set to the correct value which is `DbiResourceId` instead of currently `DbInstanceArn`" + }, + "@aws-cdk/core:cfnIncludeRejectComplexResourceUpdateCreatePolicyIntrinsics": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, CFN templates added with `cfn-include` will error if the template contains Resource Update or Create policies with CFN Intrinsics that include non-primitive values." + }, + "@aws-cdk/aws-lambda-nodejs:sdkV3ExcludeSmithyPackages": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, both `@aws-sdk` and `@smithy` packages will be excluded from the Lambda Node.js 18.x runtime to prevent version mismatches in bundled applications." + }, + "@aws-cdk/aws-stepfunctions-tasks:fixRunEcsTaskPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the resource of IAM Run Ecs policy generated by SFN EcsRunTask will reference the definition, instead of constructing ARN." + }, + "@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the BastionHost construct will use the latest Amazon Linux 2023 AMI, instead of Amazon Linux 2." + }, + "@aws-cdk/core:aspectStabilization": { + "recommendedValue": true, + "explanation": "When enabled, a stabilization loop will be run when invoking Aspects during synthesis.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-route53-targets:userPoolDomainNameMethodWithoutCustomResource": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, use a new method for DNS Name of user pool domain target without creating a custom resource." + }, + "@aws-cdk/aws-elasticloadbalancingV2:albDualstackWithoutPublicIpv4SecurityGroupRulesDefault": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the default security group ingress rules will allow IPv6 ingress from anywhere" + }, + "@aws-cdk/aws-iam:oidcRejectUnauthorizedConnections": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the default behaviour of OIDC provider will reject unauthorized connections" + }, + "@aws-cdk/core:enableAdditionalMetadataCollection": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, CDK will expand the scope of usage data collected to better inform CDK development and improve communication for security concerns and emerging issues." + }, + "@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy": { + "userValue": false, + "recommendedValue": false, + "explanation": "[Deprecated] When enabled, Lambda will create new inline policies with AddToRolePolicy instead of adding to the Default Policy Statement" + }, + "@aws-cdk/aws-s3:setUniqueReplicationRoleName": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, CDK will automatically generate a unique role name that is used for s3 object replication." + }, + "@aws-cdk/pipelines:reduceStageRoleTrustScope": { + "recommendedValue": true, + "explanation": "Remove the root account principal from Stage addActions trust policy", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-events:requireEventBusPolicySid": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, grantPutEventsTo() will use resource policies with Statement IDs for service principals." + }, + "@aws-cdk/core:aspectPrioritiesMutating": { + "userValue": true, + "recommendedValue": true, + "explanation": "When set to true, Aspects added by the construct library on your behalf will be given a priority of MUTATING." + }, + "@aws-cdk/aws-dynamodb:retainTableReplica": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, table replica will be default to the removal policy of source table unless specified otherwise." + }, + "@aws-cdk/cognito:logUserPoolClientSecretValue": { + "recommendedValue": false, + "explanation": "When disabled, the value of the user pool client secret will not be logged in the custom resource lambda function logs." + }, + "@aws-cdk/pipelines:reduceCrossAccountActionRoleTrustScope": { + "recommendedValue": true, + "explanation": "When enabled, scopes down the trust policy for the cross-account action role", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-stepfunctions:useDistributedMapResultWriterV2": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the resultWriterV2 property of DistributedMap will be used insted of resultWriter" + }, + "@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions": { + "userValue": true, + "recommendedValue": true, + "explanation": "Add an S3 trust policy to a KMS key resource policy for SNS subscriptions." + }, + "@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the EgressOnlyGateway resource is only created if private subnets are defined in the dual-stack VPC." + }, + "@aws-cdk/aws-ec2-alpha:useResourceIdForVpcV2Migration": { + "recommendedValue": false, + "explanation": "When enabled, use resource IDs for VPC V2 migration" + }, + "@aws-cdk/aws-s3:publicAccessBlockedByDefault": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, setting any combination of options for BlockPublicAccess will automatically set true for any options not defined." + }, + "@aws-cdk/aws-lambda:useCdkManagedLogGroup": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, CDK creates and manages loggroup for the lambda function" + }, + "@aws-cdk/aws-elasticloadbalancingv2:networkLoadBalancerWithSecurityGroupByDefault": { + "recommendedValue": true, + "explanation": "When enabled, Network Load Balancer will be created with a security group by default." + }, + "@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint": { + "recommendedValue": true, + "explanation": "When enabled, allows using a dynamic apiEndpoint with JSONPath format in HttpInvoke tasks.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-ecs-patterns:uniqueTargetGroupId": { + "recommendedValue": true, + "explanation": "When enabled, ECS patterns will generate unique target group IDs to prevent conflicts during load balancer replacement" + } + } + } } - } + }, + "minimumCliVersion": "2.1027.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/tree.json index 7c96b3caab488..c41ab524e1139 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.js.snapshot/tree.json @@ -1,520 +1 @@ -{ - "version": "tree-0.1", - "tree": { - "id": "App", - "path": "", - "children": { - "aws-stepfunctions-state-machine-jsonata-integ": { - "id": "aws-stepfunctions-state-machine-jsonata-integ", - "path": "aws-stepfunctions-state-machine-jsonata-integ", - "children": { - "JSONPathPass": { - "id": "JSONPathPass", - "path": "aws-stepfunctions-state-machine-jsonata-integ/JSONPathPass", - "constructInfo": { - "fqn": "aws-cdk-lib.aws_stepfunctions.Pass", - "version": "0.0.0" - } - }, - "JSONataPass": { - "id": "JSONataPass", - "path": "aws-stepfunctions-state-machine-jsonata-integ/JSONataPass", - "constructInfo": { - "fqn": "aws-cdk-lib.aws_stepfunctions.Pass", - "version": "0.0.0" - } - }, - "Choice": { - "id": "Choice", - "path": "aws-stepfunctions-state-machine-jsonata-integ/Choice", - "constructInfo": { - "fqn": "aws-cdk-lib.aws_stepfunctions.Choice", - "version": "0.0.0" - } - }, - "Wait": { - "id": "Wait", - "path": "aws-stepfunctions-state-machine-jsonata-integ/Wait", - "constructInfo": { - "fqn": "aws-cdk-lib.aws_stepfunctions.Wait", - "version": "0.0.0" - } - }, - "Succeed": { - "id": "Succeed", - "path": "aws-stepfunctions-state-machine-jsonata-integ/Succeed", - "constructInfo": { - "fqn": "aws-cdk-lib.aws_stepfunctions.Succeed", - "version": "0.0.0" - } - }, - "StateMachine": { - "id": "StateMachine", - "path": "aws-stepfunctions-state-machine-jsonata-integ/StateMachine", - "children": { - "Role": { - "id": "Role", - "path": "aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role", - "children": { - "ImportRole": { - "id": "ImportRole", - "path": "aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role/ImportRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::Role", - "aws:cdk:cloudformation:props": { - "assumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "states.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::StepFunctions::StateMachine", - "aws:cdk:cloudformation:props": { - "definitionString": "{\"StartAt\":\"JSONPathPass\",\"States\":{\"JSONPathPass\":{\"Type\":\"Pass\",\"Parameters\":{\"count.$\":\"States.MathAdd($.init, 1)\"},\"Next\":\"JSONataPass\"},\"JSONataPass\":{\"Type\":\"Pass\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Choice\"},\"Choice\":{\"Type\":\"Choice\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Choices\":[{\"Condition\":\"{% $states.input.count % 2 = 1 %}\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Wait\"}],\"Default\":\"Succeed\"},\"Succeed\":{\"Type\":\"Succeed\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"}},\"Wait\":{\"Type\":\"Wait\",\"QueryLanguage\":\"JSONata\",\"Seconds\":\"{% $states.input.count %}\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Succeed\"}}}", - "roleArn": { - "Fn::GetAtt": [ - "StateMachineRoleB840431D", - "Arn" - ] - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_stepfunctions.CfnStateMachine", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_stepfunctions.StateMachine", - "version": "0.0.0" - } - }, - "Exports": { - "id": "Exports", - "path": "aws-stepfunctions-state-machine-jsonata-integ/Exports", - "children": { - "Output{\"Ref\":\"StateMachine2E01A3A5\"}": { - "id": "Output{\"Ref\":\"StateMachine2E01A3A5\"}", - "path": "aws-stepfunctions-state-machine-jsonata-integ/Exports/Output{\"Ref\":\"StateMachine2E01A3A5\"}", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnOutput", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - }, - "BootstrapVersion": { - "id": "BootstrapVersion", - "path": "aws-stepfunctions-state-machine-jsonata-integ/BootstrapVersion", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" - } - }, - "CheckBootstrapVersion": { - "id": "CheckBootstrapVersion", - "path": "aws-stepfunctions-state-machine-jsonata-integ/CheckBootstrapVersion", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnRule", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.Stack", - "version": "0.0.0" - } - }, - "StateMachineJsonata": { - "id": "StateMachineJsonata", - "path": "StateMachineJsonata", - "children": { - "DefaultTest": { - "id": "DefaultTest", - "path": "StateMachineJsonata/DefaultTest", - "children": { - "Default": { - "id": "Default", - "path": "StateMachineJsonata/DefaultTest/Default", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - }, - "DeployAssert": { - "id": "DeployAssert", - "path": "StateMachineJsonata/DefaultTest/DeployAssert", - "children": { - "AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1": { - "id": "AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1", - "children": { - "SdkProvider": { - "id": "SdkProvider", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/SdkProvider", - "children": { - "AssertionsProvider": { - "id": "AssertionsProvider", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/SdkProvider/AssertionsProvider", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.AssertionsProvider", - "version": "0.0.0" - } - }, - "Default": { - "id": "Default", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/Default", - "children": { - "Default": { - "id": "Default", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/Default/Default", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.CustomResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.AwsApiCall", - "version": "0.0.0" - } - }, - "SingletonFunction1488541a7b23466481b69b4408076b81": { - "id": "SingletonFunction1488541a7b23466481b69b4408076b81", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81", - "children": { - "Staging": { - "id": "Staging", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Staging", - "constructInfo": { - "fqn": "aws-cdk-lib.AssetStaging", - "version": "0.0.0" - } - }, - "Role": { - "id": "Role", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Role", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - }, - "Handler": { - "id": "Handler", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Handler", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - }, - "LatestNodeRuntimeMap": { - "id": "LatestNodeRuntimeMap", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/LatestNodeRuntimeMap", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnMapping", - "version": "0.0.0" - } - }, - "AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f": { - "id": "AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f", - "children": { - "SdkProvider": { - "id": "SdkProvider", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/SdkProvider", - "children": { - "AssertionsProvider": { - "id": "AssertionsProvider", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/SdkProvider/AssertionsProvider", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.AssertionsProvider", - "version": "0.0.0" - } - }, - "Default": { - "id": "Default", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/Default", - "children": { - "Default": { - "id": "Default", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/Default/Default", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.CustomResource", - "version": "0.0.0" - } - }, - "WaitFor": { - "id": "WaitFor", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor", - "children": { - "IsCompleteProvider": { - "id": "IsCompleteProvider", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/IsCompleteProvider", - "children": { - "AssertionsProvider": { - "id": "AssertionsProvider", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/IsCompleteProvider/AssertionsProvider", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - }, - "Invoke": { - "id": "Invoke", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/IsCompleteProvider/Invoke", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.AssertionsProvider", - "version": "0.0.0" - } - }, - "TimeoutProvider": { - "id": "TimeoutProvider", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/TimeoutProvider", - "children": { - "AssertionsProvider": { - "id": "AssertionsProvider", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/TimeoutProvider/AssertionsProvider", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - }, - "Invoke": { - "id": "Invoke", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/TimeoutProvider/Invoke", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.AssertionsProvider", - "version": "0.0.0" - } - }, - "Role": { - "id": "Role", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/Role", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/Resource", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.WaiterStateMachine", - "version": "0.0.0" - } - }, - "AssertionResults": { - "id": "AssertionResults", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/AssertionResults", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnOutput", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.AwsApiCall", - "version": "0.0.0" - } - }, - "SingletonFunction76b3e830a873425f8453eddd85c86925": { - "id": "SingletonFunction76b3e830a873425f8453eddd85c86925", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction76b3e830a873425f8453eddd85c86925", - "children": { - "Staging": { - "id": "Staging", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction76b3e830a873425f8453eddd85c86925/Staging", - "constructInfo": { - "fqn": "aws-cdk-lib.AssetStaging", - "version": "0.0.0" - } - }, - "Role": { - "id": "Role", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction76b3e830a873425f8453eddd85c86925/Role", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - }, - "Handler": { - "id": "Handler", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction76b3e830a873425f8453eddd85c86925/Handler", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - }, - "SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a": { - "id": "SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a", - "children": { - "Staging": { - "id": "Staging", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a/Staging", - "constructInfo": { - "fqn": "aws-cdk-lib.AssetStaging", - "version": "0.0.0" - } - }, - "Role": { - "id": "Role", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a/Role", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - }, - "Handler": { - "id": "Handler", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a/Handler", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - }, - "BootstrapVersion": { - "id": "BootstrapVersion", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/BootstrapVersion", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" - } - }, - "CheckBootstrapVersion": { - "id": "CheckBootstrapVersion", - "path": "StateMachineJsonata/DefaultTest/DeployAssert/CheckBootstrapVersion", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnRule", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.Stack", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", - "version": "0.0.0" - } - }, - "Tree": { - "id": "Tree", - "path": "Tree", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.App", - "version": "0.0.0" - } - } -} \ No newline at end of file +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-stepfunctions-state-machine-jsonata-integ":{"id":"aws-stepfunctions-state-machine-jsonata-integ","path":"aws-stepfunctions-state-machine-jsonata-integ","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"JSONPathPass":{"id":"JSONPathPass","path":"aws-stepfunctions-state-machine-jsonata-integ/JSONPathPass","constructInfo":{"fqn":"aws-cdk-lib.aws_stepfunctions.Pass","version":"0.0.0"}},"JSONataPass":{"id":"JSONataPass","path":"aws-stepfunctions-state-machine-jsonata-integ/JSONataPass","constructInfo":{"fqn":"aws-cdk-lib.aws_stepfunctions.Pass","version":"0.0.0"}},"Choice":{"id":"Choice","path":"aws-stepfunctions-state-machine-jsonata-integ/Choice","constructInfo":{"fqn":"aws-cdk-lib.aws_stepfunctions.Choice","version":"0.0.0"}},"Wait":{"id":"Wait","path":"aws-stepfunctions-state-machine-jsonata-integ/Wait","constructInfo":{"fqn":"aws-cdk-lib.aws_stepfunctions.Wait","version":"0.0.0"}},"Succeed":{"id":"Succeed","path":"aws-stepfunctions-state-machine-jsonata-integ/Succeed","constructInfo":{"fqn":"aws-cdk-lib.aws_stepfunctions.Succeed","version":"0.0.0"}},"StateMachine":{"id":"StateMachine","path":"aws-stepfunctions-state-machine-jsonata-integ/StateMachine","constructInfo":{"fqn":"aws-cdk-lib.aws_stepfunctions.StateMachine","version":"0.0.0","metadata":[{"definitionBody":"*"}]},"children":{"Role":{"id":"Role","path":"aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"states.amazonaws.com"}}],"Version":"2012-10-17"}}}}}},"Resource":{"id":"Resource","path":"aws-stepfunctions-state-machine-jsonata-integ/StateMachine/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_stepfunctions.CfnStateMachine","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::StepFunctions::StateMachine","aws:cdk:cloudformation:props":{"definitionString":"{\"StartAt\":\"JSONPathPass\",\"States\":{\"JSONPathPass\":{\"Type\":\"Pass\",\"Parameters\":{\"count.$\":\"States.MathAdd($.init, 1)\"},\"Next\":\"JSONataPass\"},\"JSONataPass\":{\"Type\":\"Pass\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Choice\"},\"Choice\":{\"Type\":\"Choice\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Choices\":[{\"Condition\":\"{%\\n $states.input.count % 2 = 1\\n %}\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Wait\"}],\"Default\":\"Succeed\"},\"Succeed\":{\"Type\":\"Succeed\",\"QueryLanguage\":\"JSONata\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"}},\"Wait\":{\"Type\":\"Wait\",\"QueryLanguage\":\"JSONata\",\"Seconds\":\"{% $states.input.count %}\",\"Output\":{\"count\":\"{% $states.input.count + 1 %}\"},\"Next\":\"Succeed\"}}}","roleArn":{"Fn::GetAtt":["StateMachineRoleB840431D","Arn"]}}}}}},"Exports":{"id":"Exports","path":"aws-stepfunctions-state-machine-jsonata-integ/Exports","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Output{\"Ref\":\"StateMachine2E01A3A5\"}":{"id":"Output{\"Ref\":\"StateMachine2E01A3A5\"}","path":"aws-stepfunctions-state-machine-jsonata-integ/Exports/Output{\"Ref\":\"StateMachine2E01A3A5\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-stepfunctions-state-machine-jsonata-integ/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-stepfunctions-state-machine-jsonata-integ/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"StateMachineJsonata":{"id":"StateMachineJsonata","path":"StateMachineJsonata","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"StateMachineJsonata/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"StateMachineJsonata/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"StateMachineJsonata/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1":{"id":"AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AwsApiCall","version":"0.0.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"0.0.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnStartExecutiond599fddec07a36a53e2a32316433d2e1/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"SingletonFunction1488541a7b23466481b69b4408076b81":{"id":"SingletonFunction1488541a7b23466481b69b4408076b81","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Staging":{"id":"Staging","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f":{"id":"AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AwsApiCall","version":"0.0.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"0.0.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"WaitFor":{"id":"WaitFor","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.WaiterStateMachine","version":"0.0.0"},"children":{"IsCompleteProvider":{"id":"IsCompleteProvider","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/IsCompleteProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"0.0.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/IsCompleteProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Invoke":{"id":"Invoke","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/IsCompleteProvider/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"TimeoutProvider":{"id":"TimeoutProvider","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/TimeoutProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"0.0.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/TimeoutProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Invoke":{"id":"Invoke","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/TimeoutProvider/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"Role":{"id":"Role","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Resource":{"id":"Resource","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/WaitFor/Resource","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AssertionResults":{"id":"AssertionResults","path":"StateMachineJsonata/DefaultTest/DeployAssert/AwsApiCall@aws-sdk--client-sfnDescribeExecutionac88b279f453a1dced8aef702c638a0f/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"SingletonFunction76b3e830a873425f8453eddd85c86925":{"id":"SingletonFunction76b3e830a873425f8453eddd85c86925","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction76b3e830a873425f8453eddd85c86925","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Staging":{"id":"Staging","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction76b3e830a873425f8453eddd85c86925/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction76b3e830a873425f8453eddd85c86925/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction76b3e830a873425f8453eddd85c86925/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a":{"id":"SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Staging":{"id":"Staging","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"StateMachineJsonata/DefaultTest/DeployAssert/SingletonFunction5c1898e096fb4e3e95d5f6c67f3ce41a/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"StateMachineJsonata/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"StateMachineJsonata/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.ts index dae033a96d033..34dcbeda8d9de 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-jsonata.ts @@ -39,10 +39,12 @@ const stateMachine = new sfn.StateMachine(stack, 'StateMachine', { jsonPathPass // 1 -> 2 .next(jsonataPass) // 2 -> 3 .next(choice - .when(sfn.Condition.jsonata('{% $states.input.count % 2 = 1 %}'), - wait // 3 -> 4 - .next(succeed), - increment, // 4 -> 5 + .when(sfn.Condition.jsonata(`{% + $states.input.count % 2 = 1 + %}`), + wait // 3 -> 4 + .next(succeed), + increment, // 4 -> 5 ) .otherwise(succeed), // 5 -> 6 ), diff --git a/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/http/invoke.ts b/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/http/invoke.ts index 592cf2ef6b6b9..dd4c6788ce78a 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/http/invoke.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/http/invoke.ts @@ -3,9 +3,10 @@ import { Construct } from 'constructs'; import * as events from '../../../aws-events'; import * as iam from '../../../aws-iam'; import * as sfn from '../../../aws-stepfunctions'; +import { isValidJsonataExpression } from '../../../aws-stepfunctions/lib/private/jsonata'; import { FeatureFlags } from '../../../core'; import * as cxapi from '../../../cx-api'; -import { integrationResourceArn, isJsonataExpression } from '../private/task-utils'; +import { integrationResourceArn } from '../private/task-utils'; /** * The style used when applying URL encoding to array values. @@ -190,7 +191,7 @@ export class HttpInvoke extends sfn.TaskStateBase { resources: ['*'], conditions: { StringLike: { - 'states:HTTPEndpoint': `${isJsonataExpression(this.props.apiRoot) ? '' : this.props.apiRoot}*`, + 'states:HTTPEndpoint': `${isValidJsonataExpression(this.props.apiRoot) ? '' : this.props.apiRoot}*`, }, }, }), @@ -200,7 +201,7 @@ export class HttpInvoke extends sfn.TaskStateBase { private buildTaskParameters() { const unJsonata = (v: string) => v.replace(/^{%/, '').replace(/%}$/, '').trim(); const useJsonata = this.queryLanguage === sfn.QueryLanguage.JSONATA; - const getStringValue = (v: string) => useJsonata && !isJsonataExpression(v) ? `'${v}'` : unJsonata(v); + const getStringValue = (v: string) => useJsonata && !isValidJsonataExpression(v) ? `'${v}'` : unJsonata(v); const apiEndpoint = useJsonata ? `{% ${getStringValue(this.props.apiRoot)} & '/' & ${getStringValue(this.props.apiEndpoint.value)} %}` : FeatureFlags.of(this).isEnabled(cxapi.STEPFUNCTIONS_TASKS_HTTPINVOKE_DYNAMIC_JSONPATH_ENDPOINT) ? diff --git a/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/private/task-utils.ts b/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/private/task-utils.ts index cea85e11fed41..393ff2efb1b44 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/private/task-utils.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/private/task-utils.ts @@ -2,6 +2,7 @@ import { IntegrationPattern, JsonPath, } from '../../../aws-stepfunctions'; +import { isValidJsonataExpression } from '../../../aws-stepfunctions/lib/private/jsonata'; import { Aws, UnscopedValidationError } from '../../../core'; /** @@ -35,16 +36,9 @@ export function integrationResourceArn(service: string, api: string, integration (integrationPattern ? resourceArnSuffix[integrationPattern] : ''); } -/** - * Determines if the indicated string is an JSONata expression - */ -export function isJsonataExpression(value: string) { - return /^{%(.*)%}$/.test(value); -} - /** * Determines if the indicated string is an encoded JSON path or JSONata expression */ export function isJsonPathOrJsonataExpression(value: string) { - return JsonPath.isEncodedJsonPath(value) || isJsonataExpression(value); + return JsonPath.isEncodedJsonPath(value) || isValidJsonataExpression(value); } diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/condition.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/condition.ts index 680f85642346d..8fde7a1d210af 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/condition.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/condition.ts @@ -1,4 +1,5 @@ import { UnscopedValidationError } from '../../core'; +import { isValidJsonataExpression } from './private/jsonata'; /** * A Condition for use in a Choice state branch @@ -467,8 +468,8 @@ class NotCondition extends Condition { class JsonataCondition extends Condition { constructor(private readonly condition: string) { super(); - if (!/^{%(.*)%}$/.test(condition)) { - throw new UnscopedValidationError(`JSONata expression must be start with '{%' and end with '%}', got '${condition}'`); + if (!isValidJsonataExpression(condition)) { + throw new UnscopedValidationError(`JSONata expression must start with '{%' and end with '%}', got '${condition}'`); } } diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/private/jsonata.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/private/jsonata.ts index 6a648241b8209..b55fb6ef0476a 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/private/jsonata.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/private/jsonata.ts @@ -1,4 +1,4 @@ -export const isValidJsonataExpression = (expression: string) => /^{%(.*)%}$/.test(expression); +export const isValidJsonataExpression = (expression: string) => /^{%(.*)%}$/s.test(expression); export const findJsonataExpressions = (value: any): Set => { const recursive = (v: any): string[] => { diff --git a/packages/aws-cdk-lib/aws-stepfunctions/test/private/jsonata.test.ts b/packages/aws-cdk-lib/aws-stepfunctions/test/private/jsonata.test.ts new file mode 100644 index 0000000000000..217504676c54e --- /dev/null +++ b/packages/aws-cdk-lib/aws-stepfunctions/test/private/jsonata.test.ts @@ -0,0 +1,47 @@ +import { findJsonataExpressions, isValidJsonataExpression } from '../../lib/private/jsonata'; + +describe('jsonata', () => { + describe('isValidJsonataExpression', () => { + test('should return true for valid expressions', () => { + expect(isValidJsonataExpression('{% $value %}')).toBe(true); + expect(isValidJsonataExpression('{%$.some.field%}')).toBe(true); + expect(isValidJsonataExpression(`{% + $someFunction(); + %}`)).toBe(true); + }); + + test('should return false for invalid expressions', () => { + expect(isValidJsonataExpression('$value')).toBe(false); + expect(isValidJsonataExpression('{$value%}')).toBe(false); + expect(isValidJsonataExpression('{% $value }')).toBe(false); + expect(isValidJsonataExpression('some random string')).toBe(false); + }); + + describe('findJsonataExpressions', () => { + test('finds all valid JSONata expressions and ignores invalid/other types', () => { + const input = [ + '{% $expr1 %}', + 'not an expr', + null, + 123, + { a: '{% $expr2 %}', b: ['{% $expr3 %}', { c: '{% $expr4 %}' }] }, + `{% + $expr5 + %}`, + { d: '{$invalid%}' }, + ]; + + const result = findJsonataExpressions(input); + expect(Array.from(result)).toEqual([ + '{% $expr1 %}', + '{% $expr2 %}', + '{% $expr3 %}', + '{% $expr4 %}', + `{% + $expr5 + %}`, + ]); + }); + }); + }); +});