From 4c4755939b8d8dc9782ea5eadebcbbbfdbc1098e Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Fri, 22 Dec 2023 12:55:33 -0500 Subject: [PATCH 01/48] Update @cucumber/cucumber version to 10.0.0 --- package-lock.json | 442 +++++++++++++++++++++-------- package.json | 2 +- packages/api/package.json | 2 +- packages/aws/package.json | 2 +- packages/core/package.json | 2 +- packages/defaultSQL/package.json | 2 +- packages/mysql/package.json | 2 +- packages/postgresql/package.json | 2 +- packages/preprocessor/package.json | 2 +- packages/validations/package.json | 2 +- 10 files changed, 327 insertions(+), 133 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7344d0..7f0fa74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "packages/validations" ], "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "lerna": "^7.1.4", "multiple-cucumber-html-reporter": "^3.4.0", "nyc": "^15.1.0" @@ -1641,26 +1641,26 @@ } }, "node_modules/@cucumber/ci-environment": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-9.2.0.tgz", - "integrity": "sha512-jLzRtVwdtNt+uAmTwvXwW9iGYLEOJFpDSmnx/dgoMGKXUWRx1UHT86Q696CLdgXO8kyTwsgJY0c6n5SW9VitAA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-10.0.0.tgz", + "integrity": "sha512-lRkiehckosIOdc7p1L44nZsttO5dVHFjpwKKWZ07x8SeoAdV/sPuGe1PISe0AmAowFGza62nMOgG4KaroGzwFQ==", "dev": true }, "node_modules/@cucumber/cucumber": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-9.6.0.tgz", - "integrity": "sha512-bCw2uJdGHHLg4B3RoZpLzx0RXyXURmPe+swtdK1cGoA8rs+vv+/6osifcNwvFM2sv0nQ91+gDACSrXK7AHCylg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-10.1.0.tgz", + "integrity": "sha512-9itQdAccTqJAe9VfdmovinOlUPLroC2KbB+CeQty8BKXpLB6hKO32k9S9FhnuXinFqh+E5znUrPtbUxS948bwQ==", "dev": true, "dependencies": { - "@cucumber/ci-environment": "9.2.0", - "@cucumber/cucumber-expressions": "16.1.2", - "@cucumber/gherkin": "26.2.0", + "@cucumber/ci-environment": "10.0.0", + "@cucumber/cucumber-expressions": "17.0.1", + "@cucumber/gherkin": "27.0.0", "@cucumber/gherkin-streams": "5.0.1", - "@cucumber/gherkin-utils": "8.0.2", - "@cucumber/html-formatter": "20.4.0", + "@cucumber/gherkin-utils": "8.0.5", + "@cucumber/html-formatter": "21.2.0", "@cucumber/message-streams": "4.0.1", - "@cucumber/messages": "22.0.0", - "@cucumber/tag-expressions": "5.0.1", + "@cucumber/messages": "24.0.1", + "@cucumber/tag-expressions": "6.0.0", "assertion-error-formatter": "^3.0.0", "capital-case": "^1.0.4", "chalk": "^4.1.2", @@ -1669,7 +1669,7 @@ "debug": "^4.3.4", "error-stack-parser": "^2.1.4", "figures": "^3.2.0", - "glob": "^7.1.6", + "glob": "^10.3.10", "has-ansi": "^4.0.1", "indent-string": "^4.0.0", "is-installed-globally": "^0.4.0", @@ -1681,14 +1681,15 @@ "mkdirp": "^2.1.5", "mz": "^2.7.0", "progress": "^2.0.3", + "read-pkg-up": "^7.0.1", "resolve-pkg": "^2.0.0", "semver": "7.5.3", - "string-argv": "^0.3.1", + "string-argv": "0.3.1", "strip-ansi": "6.0.1", "supports-color": "^8.1.1", "tmp": "^0.2.1", + "type-fest": "^4.8.3", "util-arity": "^1.1.0", - "verror": "^1.10.0", "xmlbuilder": "^15.1.1", "yaml": "^2.2.2", "yup": "1.2.0" @@ -1697,22 +1698,283 @@ "cucumber-js": "bin/cucumber.js" }, "engines": { - "node": "14 || 16 || >=18" + "node": "18 || >=20" } }, "node_modules/@cucumber/cucumber-expressions": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.1.2.tgz", - "integrity": "sha512-CfHEbxJ5FqBwF6mJyLLz4B353gyHkoi6cCL4J0lfDZ+GorpcWw4n2OUAdxJmP7ZlREANWoTFlp4FhmkLKrCfUA==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-17.0.1.tgz", + "integrity": "sha512-reR7/sNRmDWgdz8BtFuHEwpksPnAkHty7gxUC2n0iaUPmckv9G5I5i+Vonc6xwUHDb/hmHPz/DyUL+Iv4Ao96w==", "dev": true, "dependencies": { "regexp-match-indices": "1.0.2" } }, + "node_modules/@cucumber/cucumber/node_modules/@cucumber/messages": { + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-24.0.1.tgz", + "integrity": "sha512-dKfNkvgc6stSQIyeHk7p/221iqEZe1BP+e/Js8XKtSmc0sS8khKMvbSBwYVeonn/67/vYKiAyo6Eo0SzXd5Plw==", + "dev": true, + "dependencies": { + "@types/uuid": "9.0.7", + "class-transformer": "0.5.1", + "reflect-metadata": "0.2.1", + "uuid": "9.0.1" + } + }, + "node_modules/@cucumber/cucumber/node_modules/@types/uuid": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", + "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", + "dev": true + }, + "node_modules/@cucumber/cucumber/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@cucumber/cucumber/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cucumber/cucumber/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@cucumber/cucumber/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@cucumber/cucumber/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/@cucumber/cucumber/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cucumber/cucumber/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@cucumber/cucumber/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@cucumber/cucumber/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/@cucumber/cucumber/node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@cucumber/cucumber/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@cucumber/cucumber/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cucumber/cucumber/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cucumber/cucumber/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@cucumber/cucumber/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cucumber/cucumber/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cucumber/cucumber/node_modules/reflect-metadata": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", + "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==", + "dev": true + }, + "node_modules/@cucumber/cucumber/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@cucumber/cucumber/node_modules/type-fest": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", + "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@cucumber/cucumber/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@cucumber/gherkin": { - "version": "26.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.2.0.tgz", - "integrity": "sha512-iRSiK8YAIHAmLrn/mUfpAx7OXZ7LyNlh1zT89RoziSVCbqSVDxJS6ckEzW8loxs+EEXl0dKPQOXiDmbHV+C/fA==", + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-27.0.0.tgz", + "integrity": "sha512-j5rCsjqzRiC3iVTier3sa0kzyNbkcAmF7xr7jKnyO7qDeK3Z8Ye1P3KSVpeQRMY+KCDJ3WbTDdyxH0FwfA/fIw==", "dev": true, "dependencies": { "@cucumber/messages": ">=19.1.4 <=22" @@ -1746,15 +2008,15 @@ } }, "node_modules/@cucumber/gherkin-utils": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.2.tgz", - "integrity": "sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.5.tgz", + "integrity": "sha512-kxM1OCDjYddF26VKc892PF0GokW4wUIl1PUz3TIXsPZgS39ExM1pF8oww8mlGFD2B0+4op/cSE3SSIME5H3aNw==", "dev": true, "dependencies": { - "@cucumber/gherkin": "^25.0.0", - "@cucumber/messages": "^19.1.4", - "@teppeis/multimaps": "2.0.0", - "commander": "9.4.1", + "@cucumber/gherkin": "^26.0.0", + "@cucumber/messages": "^22.0.0", + "@teppeis/multimaps": "3.0.0", + "commander": "10.0.1", "source-map-support": "^0.5.21" }, "bin": { @@ -1762,54 +2024,18 @@ } }, "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/gherkin": { - "version": "25.0.2", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-25.0.2.tgz", - "integrity": "sha512-EdsrR33Y5GjuOoe2Kq5Y9DYwgNRtUD32H4y2hCrT6+AWo7ibUQu7H+oiWTgfVhwbkHsZmksxHSxXz/AwqqyCRQ==", - "dev": true, - "dependencies": { - "@cucumber/messages": "^19.1.4" - } - }, - "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", - "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.2.0.tgz", + "integrity": "sha512-iRSiK8YAIHAmLrn/mUfpAx7OXZ7LyNlh1zT89RoziSVCbqSVDxJS6ckEzW8loxs+EEXl0dKPQOXiDmbHV+C/fA==", "dev": true, "dependencies": { - "@types/uuid": "8.3.4", - "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.0" - } - }, - "node_modules/@cucumber/gherkin-utils/node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true - }, - "node_modules/@cucumber/gherkin-utils/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@cucumber/gherkin-utils/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "@cucumber/messages": ">=19.1.4 <=22" } }, "node_modules/@cucumber/html-formatter": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-20.4.0.tgz", - "integrity": "sha512-TnLSXC5eJd8AXHENo69f5z+SixEVtQIf7Q2dZuTpT/Y8AOkilGpGl1MQR1Vp59JIw+fF3EQSUKdf+DAThCxUNg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-21.2.0.tgz", + "integrity": "sha512-4OcSa12Y0v5e4ySDl67+QFTxCG/Y9fxGSkFqvm98ggpTvS7b75whwzupu+lM2lMBw+h3H6P8ZURQr0xQIAwE2A==", "dev": true, "peerDependencies": { "@cucumber/messages": ">=18" @@ -1844,9 +2070,9 @@ } }, "node_modules/@cucumber/tag-expressions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-5.0.1.tgz", - "integrity": "sha512-N43uWud8ZXuVjza423T9ZCIJsaZhFekmakt7S9bvogTxqdVGbRobjR663s0+uW0Rz9e+Pa8I6jUuWtoBLQD2Mw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.0.0.tgz", + "integrity": "sha512-JbNb/254Wn6b8cfrIJoqR0NekHXvoB/eMvSY4RK11H8k+YZfm7mZesu/3yVX67nkW+Y+PGjZFcgTMcfjwFRsRw==", "dev": true }, "node_modules/@eslint-community/eslint-utils": { @@ -4048,12 +4274,12 @@ } }, "node_modules/@teppeis/multimaps": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@teppeis/multimaps/-/multimaps-2.0.0.tgz", - "integrity": "sha512-TL1adzq1HdxUf9WYduLcQ/DNGYiz71U31QRgbnr0Ef1cPyOUOsBojxHVWpFeOSUucB6Lrs0LxFRA14ntgtkc9w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@teppeis/multimaps/-/multimaps-3.0.0.tgz", + "integrity": "sha512-ID7fosbc50TbT0MK0EG12O+gAP3W3Aa/Pz4DaTtQtEvlc9Odaqi0de+xuZ7Li2GtK4HzEX7IuRWS/JmZLksR3Q==", "dev": true, "engines": { - "node": ">=10.17" + "node": ">=14" } }, "node_modules/@tootallnate/once": { @@ -4559,15 +4785,6 @@ "node": ">=0.10.0" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -6641,15 +6858,6 @@ "node": ">=0.6.0" } }, - "node_modules/extsprintf": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", - "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/eyes": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", @@ -13695,9 +13903,9 @@ } }, "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true, "engines": { "node": ">=0.6.19" @@ -14781,20 +14989,6 @@ "node": ">= 0.10" } }, - "node_modules/verror": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -15222,7 +15416,7 @@ "node-fetch": "^2.0.0" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", @@ -15256,7 +15450,7 @@ "luxon": "^2.4.0" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "*", "@ln-maf/validations": "^2.0.3", "eslint": "^8.51.0", @@ -15288,7 +15482,7 @@ "multiReport": "multiReport.js" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", @@ -15311,7 +15505,7 @@ "prompt": "^1.2.2" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "@ln-maf/validations": "^2.0.1", "eslint": "^8.18.0", @@ -15341,7 +15535,7 @@ "mysql-configure": "config.js" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "@ln-maf/validations": "^2.0.3", "eslint": "^8.18.0", @@ -15370,7 +15564,7 @@ "postgresql-configure": "config.js" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.0", "@ln-maf/validations": "^2.0.3", "eslint": "^8.0.0", @@ -15404,7 +15598,7 @@ "preprocessor": "exec.js" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "@ln-maf/validations": "^2.0.1", "eslint": "^8.18.0", @@ -15443,7 +15637,7 @@ "xpath": "0.0.32" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", diff --git a/package.json b/package.json index 9a69d78..9729de1 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "dependencies": { }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "lerna": "^7.1.4", "multiple-cucumber-html-reporter": "^3.4.0", "nyc": "^15.1.0" diff --git a/packages/api/package.json b/packages/api/package.json index 67002c3..a043cc8 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -22,7 +22,7 @@ "chai": "^4.3.4" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", diff --git a/packages/aws/package.json b/packages/aws/package.json index 851aee2..7cbd077 100644 --- a/packages/aws/package.json +++ b/packages/aws/package.json @@ -28,7 +28,7 @@ "@ln-maf/core": "*" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "*", "@ln-maf/validations": "^2.0.3", "eslint": "^8.51.0", diff --git a/packages/core/package.json b/packages/core/package.json index 4fff83f..74ff454 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -34,7 +34,7 @@ }, "homepage": "https://github.com/hpcc-systems/MAF#readme", "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", diff --git a/packages/defaultSQL/package.json b/packages/defaultSQL/package.json index 06f412b..01040ec 100644 --- a/packages/defaultSQL/package.json +++ b/packages/defaultSQL/package.json @@ -22,7 +22,7 @@ "keytar": "7.*" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "@ln-maf/validations": "^2.0.1", "eslint": "^8.18.0", diff --git a/packages/mysql/package.json b/packages/mysql/package.json index 6a02977..4406278 100644 --- a/packages/mysql/package.json +++ b/packages/mysql/package.json @@ -24,7 +24,7 @@ "@ln-maf/core": "*" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "@ln-maf/validations": "^2.0.3", "eslint": "^8.18.0", diff --git a/packages/postgresql/package.json b/packages/postgresql/package.json index ba40ead..4b13f00 100644 --- a/packages/postgresql/package.json +++ b/packages/postgresql/package.json @@ -24,7 +24,7 @@ "@ln-maf/core": "*" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.0", "@ln-maf/validations": "^2.0.3", "eslint": "^8.0.0", diff --git a/packages/preprocessor/package.json b/packages/preprocessor/package.json index f07498f..0f321c6 100644 --- a/packages/preprocessor/package.json +++ b/packages/preprocessor/package.json @@ -30,7 +30,7 @@ "@ln-maf/core": "*" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "@ln-maf/validations": "^2.0.1", "eslint": "^8.18.0", diff --git a/packages/validations/package.json b/packages/validations/package.json index b0f0e33..eba8eae 100644 --- a/packages/validations/package.json +++ b/packages/validations/package.json @@ -26,7 +26,7 @@ "@ln-maf/core": "*" }, "devDependencies": { - "@cucumber/cucumber": "^9.0.0", + "@cucumber/cucumber": "^10.0.0", "@ln-maf/core": "^2.0.1", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", From 2d0d86fbda2cb0078342e7dcd817180e8bb88eb5 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 3 Jan 2024 14:45:45 -0500 Subject: [PATCH 02/48] Update ESLint configuration --- packages/api/.eslintrc.js | 17 ---------------- packages/api/.eslintrc.json | 22 +++++++++++++++++++++ packages/aws/.eslintrc.js | 39 +++++++++++++++++++++++-------------- 3 files changed, 46 insertions(+), 32 deletions(-) delete mode 100644 packages/api/.eslintrc.js create mode 100644 packages/api/.eslintrc.json diff --git a/packages/api/.eslintrc.js b/packages/api/.eslintrc.js deleted file mode 100644 index fb608ad..0000000 --- a/packages/api/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - env: { - es2021: true, - node: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 12, - sourceType: 'module' - }, - rules: { - 'no-eval': 'off', - 'no-new-func': 'off' - } -} diff --git a/packages/api/.eslintrc.json b/packages/api/.eslintrc.json new file mode 100644 index 0000000..0972d56 --- /dev/null +++ b/packages/api/.eslintrc.json @@ -0,0 +1,22 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es2021": true + }, + "extends": ["standard"], + "parserOptions": { + "ecmaVersion": "latest" + }, + "rules": { + "indent": ["error", 4], + "space-before-function-paren": [ + "error", + { + "anonymous": "always", + "named": "never", + "asyncArrow": "always" + } + ] + } +} diff --git a/packages/aws/.eslintrc.js b/packages/aws/.eslintrc.js index 5af1817..191bf2e 100644 --- a/packages/aws/.eslintrc.js +++ b/packages/aws/.eslintrc.js @@ -1,17 +1,26 @@ module.exports = { - env: { - browser: true, - commonjs: true, - es2021: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 'latest' - }, - rules: { - 'no-eval': 'off', - 'no-new-func': 'off' - } + env: { + browser: true, + commonjs: true, + es2021: true + }, + extends: [ + 'standard' + ], + parserOptions: { + ecmaVersion: 'latest' + }, + rules: { + indent: ['error', 4], + 'space-before-function-paren': [ + 'error', + { + anonymous: 'always', + named: 'never', + asyncArrow: 'always' + } + ], + 'no-eval': 'off', + 'no-new-func': 'off' + } } From 700ea31e6791a460d7e980da489bb00039040c81 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 3 Jan 2024 14:46:13 -0500 Subject: [PATCH 03/48] Update peerDependencies to use @cucumber/cucumber version 10.0.0 --- package-lock.json | 4176 +++++++++++++--------------- package.json | 7 +- packages/api/package.json | 10 +- packages/aws/package.json | 2 +- packages/core/package.json | 2 +- packages/defaultSQL/package.json | 2 +- packages/mysql/package.json | 2 +- packages/postgresql/package.json | 2 +- packages/preprocessor/package.json | 2 +- packages/validations/package.json | 2 +- 10 files changed, 2001 insertions(+), 2206 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f0fa74..cafd810 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,8 +21,13 @@ ], "devDependencies": { "@cucumber/cucumber": "^10.0.0", + "eslint": "^8.32.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1", "lerna": "^7.1.4", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.0", "nyc": "^15.1.0" } }, @@ -174,48 +179,52 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@aws-sdk/client-cloudwatch-logs": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.438.0.tgz", - "integrity": "sha512-MlvwnAd4V2vbvSDuWGGOb40z3KCIGHHUos8TmCYyFRPBM9DG195X5O8FKAV5bDZLYFtvs+GRQtaT+72Z8KeeBg==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.484.0.tgz", + "integrity": "sha512-lf8ye4Py91Hx70DjOAArmXi3ekpy4l+wjG8HEMQ1sBaXEcIXaBtMaxWJI+qExg7kDpxgkL+8aBM39U7egXrafQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.438.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/credential-provider-node": "3.438.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/client-sts": "3.484.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/credential-provider-node": "3.484.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/eventstream-serde-browser": "^2.0.15", + "@smithy/eventstream-serde-config-resolver": "^2.0.15", + "@smithy/eventstream-serde-node": "^2.0.15", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -224,50 +233,51 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.438.0.tgz", - "integrity": "sha512-LBKYjMezMRsxXP1BDnav/rUpwTOXrnD8OQKeYMbVfH0mmCDwd7Ac0cMyRM1c14sdm6Rr0gOCHIZ3Mjbup9r27Q==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.484.0.tgz", + "integrity": "sha512-yCOzitHeeSbauH5LK0SZF4wgpYzfOBiRU8gHp75Xs+kG8QT+kBmtsjoaa6tmtvtCgqWgujuFqv7Gzd2GEePEgw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.438.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/credential-provider-node": "3.438.0", - "@aws-sdk/middleware-endpoint-discovery": "3.433.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/client-sts": "3.484.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/credential-provider-node": "3.484.0", + "@aws-sdk/middleware-endpoint-discovery": "3.470.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-utf8": "^2.0.0", - "@smithy/util-waiter": "^2.0.12", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-middleware": "^2.0.8", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -276,103 +286,106 @@ } }, "node_modules/@aws-sdk/client-ecs": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.438.0.tgz", - "integrity": "sha512-XJC/+pLnLINhwdZOr6kQCUeZuh2Mn7+/DAiNIJex0cKMh3NDaVGptcBxztfRTQs4kBiGjLSqcsam56OutO057g==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.484.0.tgz", + "integrity": "sha512-SVBV1SA0zyqhZTJtqcV50l+wR63hFqlk+uC8YrclUxpL09gBSCvBwSIazq3CbFiwUoL2Ur+IA+TvD+hwKwk/Jw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.438.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/credential-provider-node": "3.438.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/client-sts": "3.484.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/credential-provider-node": "3.484.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-utf8": "^2.0.0", - "@smithy/util-waiter": "^2.0.12", - "tslib": "^2.5.0" + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", + "tslib": "^2.5.0", + "uuid": "^8.3.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.438.0.tgz", - "integrity": "sha512-FiWjoOabqJcJFHUJBZMzrL1IuvPNNrBnhVJknKo7SGiPtz8xeKZJ4VeJcClQjqGzuEbQCtqp/Ki5F7/EK3qv+w==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.484.0.tgz", + "integrity": "sha512-VTKqt4oGerkB9E9AfXieIDDc8y+iZVlty6DfTFkmGNvF64gmgV7dyckD0CTSSBC9eA0sYrE95hf6homLNWjsog==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.438.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/credential-provider-node": "3.438.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/eventstream-serde-browser": "^2.0.12", - "@smithy/eventstream-serde-config-resolver": "^2.0.12", - "@smithy/eventstream-serde-node": "^2.0.12", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/client-sts": "3.484.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/credential-provider-node": "3.484.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/eventstream-serde-browser": "^2.0.15", + "@smithy/eventstream-serde-config-resolver": "^2.0.15", + "@smithy/eventstream-serde-node": "^2.0.15", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-stream": "^2.0.17", - "@smithy/util-utf8": "^2.0.0", - "@smithy/util-waiter": "^2.0.12", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-stream": "^2.0.23", + "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", "tslib": "^2.5.0" }, "engines": { @@ -380,65 +393,66 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.438.0.tgz", - "integrity": "sha512-5VxdfyZ9oovbK5qzIYW4ZeJ1waD6VqfclSDQLHmgulekM2JYo/goEQJSjWnI4VMWuMsopzvqyeA+L9xq9uXLBQ==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.484.0.tgz", + "integrity": "sha512-6+N1TflOHAPMRAbOXVuJgGouWhSVIznKLuf+3ZDHYWuMUd+FLDhQvplxjVG1czRXsYwROEFylirAU1zJOHA6gA==", "dependencies": { "@aws-crypto/sha1-browser": "3.0.0", "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.438.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/credential-provider-node": "3.438.0", - "@aws-sdk/middleware-bucket-endpoint": "3.433.0", - "@aws-sdk/middleware-expect-continue": "3.433.0", - "@aws-sdk/middleware-flexible-checksums": "3.433.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-location-constraint": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-sdk-s3": "3.433.0", - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-ssec": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/signature-v4-multi-region": "3.437.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@aws-sdk/xml-builder": "3.310.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/eventstream-serde-browser": "^2.0.12", - "@smithy/eventstream-serde-config-resolver": "^2.0.12", - "@smithy/eventstream-serde-node": "^2.0.12", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-blob-browser": "^2.0.12", - "@smithy/hash-node": "^2.0.12", - "@smithy/hash-stream-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/md5-js": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/client-sts": "3.484.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/credential-provider-node": "3.484.0", + "@aws-sdk/middleware-bucket-endpoint": "3.484.0", + "@aws-sdk/middleware-expect-continue": "3.468.0", + "@aws-sdk/middleware-flexible-checksums": "3.468.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-location-constraint": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-sdk-s3": "3.484.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-ssec": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/signature-v4-multi-region": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@aws-sdk/xml-builder": "3.472.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/eventstream-serde-browser": "^2.0.15", + "@smithy/eventstream-serde-config-resolver": "^2.0.15", + "@smithy/eventstream-serde-node": "^2.0.15", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-blob-browser": "^2.0.16", + "@smithy/hash-node": "^2.0.17", + "@smithy/hash-stream-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/md5-js": "^2.0.17", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-stream": "^2.0.17", - "@smithy/util-utf8": "^2.0.0", - "@smithy/util-waiter": "^2.0.12", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-stream": "^2.0.23", + "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, @@ -447,51 +461,51 @@ } }, "node_modules/@aws-sdk/client-sqs": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.438.0.tgz", - "integrity": "sha512-uIlZDLUwphR7J+5SnR07PLksNUg5qv4K2utKzoVyTWyXECULJ8FS/ZpuJ8b+JsUZvTi85aHRKX/7ygGHKcOrtA==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.484.0.tgz", + "integrity": "sha512-QFL2Ee6lFurlvvCyvRpvH7L43kbUUj+tkMaMAo7f7NPn+g69eOsV96Ejv06PpRGUJ+jOwHtKxCUBMYDyAXJv0Q==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.438.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/credential-provider-node": "3.438.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-sdk-sqs": "3.433.0", - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/md5-js": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/client-sts": "3.484.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/credential-provider-node": "3.484.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-sdk-sqs": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/md5-js": "^2.0.17", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-utf8": "^2.0.0", - "fast-xml-parser": "4.2.5", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-middleware": "^2.0.8", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -499,49 +513,50 @@ } }, "node_modules/@aws-sdk/client-ssm": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.438.0.tgz", - "integrity": "sha512-ltu1YE5BWwhrdKukuLSJlZseCazTU1KCtNJDoXeUuqIKQmEiKZpTWRLOAHai280P90pmFbUdeV/jD3jXfRs+Eg==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.484.0.tgz", + "integrity": "sha512-YLI+gtCGTa3UY5DIPjybIsKky53RQEyEXroBGqTF4ln0OUycLOTgNCRgTyaabJ/ZXFJNHFmfCKwqO3clmGUknA==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.438.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/credential-provider-node": "3.438.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/client-sts": "3.484.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/credential-provider-node": "3.484.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-utf8": "^2.0.0", - "@smithy/util-waiter": "^2.0.12", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -550,45 +565,46 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.438.0.tgz", - "integrity": "sha512-L/xKq+K78PShLku8x5gM6lZDUp7LhFJ2ksKH7Vll+exSZq+QUaxuzjp4gqdzh6B0oIshv2jssQlUa0ScOmVRMg==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.484.0.tgz", + "integrity": "sha512-eHKXDHqgPt99977hNissa1y/efwXZ9kg3EKPLK13b6VzTC8s0+Ih+YZemNE22ahw6SYnRiGglYdkdypJ/uPHkg==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -596,48 +612,48 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.438.0.tgz", - "integrity": "sha512-UBxLZKVVvbR4LHwSNSqaKx22YBSOGkavrh4SyDP8o8XOlXeRxTCllfSfjL9K5Mktp+ZwQ2NiubNcwmvUcGKbbg==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.484.0.tgz", + "integrity": "sha512-psQxH0mYhTVvZhfca3s9NbXgnuOM8l+5LtF7fZBF5y4xaPpfAPicPWp6po69J3ynwyXi/MpHNXd/13d/L09TTA==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.436.0", - "@aws-sdk/credential-provider-node": "3.438.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-sdk-sts": "3.433.0", - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@aws-sdk/core": "3.481.0", + "@aws-sdk/credential-provider-node": "3.484.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/core": "^1.2.1", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-middleware": "^2.0.8", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, @@ -646,24 +662,29 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.436.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.436.0.tgz", - "integrity": "sha512-vX5/LjXvCejC2XUY6TSg1oozjqK6BvkE75t0ys9dgqyr5PlZyZksMoeAFHUlj0sCjhT3ziWCujP1oiSpPWY9hg==", + "version": "3.481.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.481.0.tgz", + "integrity": "sha512-UeyAc2FnWQDts81vPVBWKEj0WagYK4SVAgNfGcg6zCzzqsUG4unr4NPKQoca2L+XOU55yMCy+5l2K6R3YsFGKg==", "dependencies": { - "@smithy/smithy-client": "^2.1.12" + "@smithy/core": "^1.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.433.0.tgz", - "integrity": "sha512-Vl7Qz5qYyxBurMn6hfSiNJeUHSqfVUlMt0C1Bds3tCkl3IzecRWwyBOlxtxO3VCrgVeW3HqswLzCvhAFzPH6nQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz", + "integrity": "sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==", "dependencies": { - "@aws-sdk/types": "3.433.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -671,19 +692,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.438.0.tgz", - "integrity": "sha512-WYPQR3pXoHJjn9/RMWipUhsUNFy6zhOiII6u8LJ5w84aNqIjV4+BdRYztRNGJD98jdtekhbkX0YKoSuZqP+unQ==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.433.0", - "@aws-sdk/credential-provider-process": "3.433.0", - "@aws-sdk/credential-provider-sso": "3.438.0", - "@aws-sdk/credential-provider-web-identity": "3.433.0", - "@aws-sdk/types": "3.433.0", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.484.0.tgz", + "integrity": "sha512-BbvU7seI0RPPwpujnz4LA1lC53Cj4BOSRpYYZbrxA6C7SzW0D/IQBZQP3JBbrxIhqewSROSsYGDjvYbyi5aDEw==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.484.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -691,20 +712,20 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.438.0.tgz", - "integrity": "sha512-uaw3D2R0svyrC32qyZ2aOv/l0AT9eClh+eQsZJTQD3Kz9q+2VdeOBThQ8fsMfRtm26nUbZo6A/CRwxkm6okI+w==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.433.0", - "@aws-sdk/credential-provider-ini": "3.438.0", - "@aws-sdk/credential-provider-process": "3.433.0", - "@aws-sdk/credential-provider-sso": "3.438.0", - "@aws-sdk/credential-provider-web-identity": "3.433.0", - "@aws-sdk/types": "3.433.0", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.484.0.tgz", + "integrity": "sha512-Ylqej3FqRwUD3I7929k214LRH1bUz7f2hfV4ZqY7teM9hQC5Ov5SpVtOtLKNfgaaxAkhD2ffMNfmq8TAg824+g==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-ini": "3.484.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.484.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -712,14 +733,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.433.0.tgz", - "integrity": "sha512-W7FcGlQjio9Y/PepcZGRyl5Bpwb0uWU7qIUCh+u4+q2mW4D5ZngXg8V/opL9/I/p4tUH9VXZLyLGwyBSkdhL+A==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz", + "integrity": "sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==", "dependencies": { - "@aws-sdk/types": "3.433.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -727,16 +748,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.438.0.tgz", - "integrity": "sha512-Xykli/64xR18cBV5P0XFxcH120omtfAjC/cFy/9nFU/+dPvbk0uu1yEOZYteWHyGGkPN4PkHmbh60GiUCLQkWQ==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.484.0.tgz", + "integrity": "sha512-Fl7+YhrlU2icZkz18z9aj4SiWb2aQlWp5LsVqMfSzTlJFc9yPlD9e7F33gnL7kKLVSnAVxsr5v4y4pFC6FZUSw==", "dependencies": { - "@aws-sdk/client-sso": "3.438.0", - "@aws-sdk/token-providers": "3.438.0", - "@aws-sdk/types": "3.433.0", + "@aws-sdk/client-sso": "3.484.0", + "@aws-sdk/token-providers": "3.484.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -744,13 +765,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.433.0.tgz", - "integrity": "sha512-RlwjP1I5wO+aPpwyCp23Mk8nmRbRL33hqRASy73c4JA2z2YiRua+ryt6MalIxehhwQU6xvXUKulJnPG9VaMFZg==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz", + "integrity": "sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==", "dependencies": { - "@aws-sdk/types": "3.433.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -758,9 +779,9 @@ } }, "node_modules/@aws-sdk/endpoint-cache": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.310.0.tgz", - "integrity": "sha512-y3wipforet41EDTI0vnzxILqwAGll1KfI5qcdX9pXF/WF1f+3frcOtPiWtQEZQpy4czRogKm3BHo70QBYAZxlQ==", + "version": "3.465.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.465.0.tgz", + "integrity": "sha512-0cuotk23hVSrqxHkJ3TTWC9MVMRgwlUvCatyegJEauJnk8kpLSGXE5KVdExlUBwShGNlj7ac29okZ9m17iTi5Q==", "dependencies": { "mnemonist": "0.38.3", "tslib": "^2.5.0" @@ -770,16 +791,16 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.433.0.tgz", - "integrity": "sha512-Lk1xIu2tWTRa1zDw5hCF1RrpWQYSodUhrS/q3oKz8IAoFqEy+lNaD5jx+fycuZb5EkE4IzWysT+8wVkd0mAnOg==", - "dependencies": { - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-arn-parser": "3.310.0", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/protocol-http": "^3.0.8", - "@smithy/types": "^2.4.0", - "@smithy/util-config-provider": "^2.0.0", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.484.0.tgz", + "integrity": "sha512-FzaUGUAat+m96diDMdFTgaG7AiyYOtT97m1Iu4luZP47eiocaHsjgtaMXg1ivoH2atlczLn/7ueYqUnwEcpFlQ==", + "dependencies": { + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-arn-parser": "3.465.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", + "@smithy/util-config-provider": "^2.1.0", "tslib": "^2.5.0" }, "engines": { @@ -787,15 +808,15 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.433.0.tgz", - "integrity": "sha512-eGQcncEtnQs2wMpLkJoreba/5547/eDDojGLuGjBmKtbZbVNZ9nbyCC//WIsmgT5CR5Bg9D+bNSsijmYpU6Qpg==", - "dependencies": { - "@aws-sdk/endpoint-cache": "3.310.0", - "@aws-sdk/types": "3.433.0", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/protocol-http": "^3.0.8", - "@smithy/types": "^2.4.0", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.470.0.tgz", + "integrity": "sha512-pN+3Y7W3Xvs6pE2RlkXmO7ugOGLXsGR3zJI/fiGOLoCOGESuM3fq3CXdasOl76wch0L9iB1lPmoHMabkxKugGQ==", + "dependencies": { + "@aws-sdk/endpoint-cache": "3.465.0", + "@aws-sdk/types": "3.468.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -803,13 +824,13 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.433.0.tgz", - "integrity": "sha512-Uq2rPIsjz0CR2sulM/HyYr5WiqiefrSRLdwUZuA7opxFSfE808w5DBWSprHxbH3rbDSQR4nFiOiVYIH8Eth7nA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.468.0.tgz", + "integrity": "sha512-/wmLjmfgeulxhhmnxX3X3N933TvGsYckVIFjAtDSpLjqkbwzEcNiLq7AdmNJ4BfxG0MCMgcht561DCCD19x8Bg==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/protocol-http": "^3.0.8", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -817,17 +838,17 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.433.0.tgz", - "integrity": "sha512-Ptssx373+I7EzFUWjp/i/YiNFt6I6sDuRHz6DOUR9nmmRTlHHqmdcBXlJL2d9wwFxoBRCN8/PXGsTc/DJ4c95Q==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.468.0.tgz", + "integrity": "sha512-LQwL/N5MCj3Y5keLLewHTqeAXUIMsHFZyxDXRm/uxrOon9ufLKDvGvzAmfwn1/CuSUo66ZfT8VPSA4BsC90RtA==", "dependencies": { "@aws-crypto/crc32": "3.0.0", "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.433.0", + "@aws-sdk/types": "3.468.0", "@smithy/is-array-buffer": "^2.0.0", - "@smithy/protocol-http": "^3.0.8", - "@smithy/types": "^2.4.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -835,13 +856,13 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.433.0.tgz", - "integrity": "sha512-mBTq3UWv1UzeHG+OfUQ2MB/5GEkt5LTKFaUqzL7ESwzW8XtpBgXnjZvIwu3Vcd3sEetMwijwaGiJhY0ae/YyaA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz", + "integrity": "sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/protocol-http": "^3.0.8", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -849,12 +870,12 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.433.0.tgz", - "integrity": "sha512-2YD860TGntwZifIUbxm+lFnNJJhByR/RB/+fV1I8oGKg+XX2rZU+94pRfHXRywoZKlCA0L+LGDA1I56jxrB9sw==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.468.0.tgz", + "integrity": "sha512-0gBX/lDynQr4YIhM9h1dVnkVWqrg+34iOCVIUq8jHxzUzgZWglGkG9lHGGg0r1xkLTmegeoo1OKH8wrQ6n33Cg==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -862,12 +883,12 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.433.0.tgz", - "integrity": "sha512-We346Fb5xGonTGVZC9Nvqtnqy74VJzYuTLLiuuftA5sbNzftBDy/22QCfvYSTOAl3bvif+dkDUzQY2ihc5PwOQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz", + "integrity": "sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -875,13 +896,13 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.433.0.tgz", - "integrity": "sha512-HEvYC9PQlWY/ccUYtLvAlwwf1iCif2TSAmLNr3YTBRVa98x6jKL0hlCrHWYklFeqOGSKy6XhE+NGJMUII0/HaQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz", + "integrity": "sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/protocol-http": "^3.0.8", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -889,15 +910,18 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.433.0.tgz", - "integrity": "sha512-mkn3DiSuMVh4NTLsduC42Av+ApcOor52LMoQY0Wc6M5Mx7Xd05U+G1j8sjI9n/1bs5cZ/PoeRYJ/9bL1Xxznnw==", - "dependencies": { - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-arn-parser": "3.310.0", - "@smithy/protocol-http": "^3.0.8", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.484.0.tgz", + "integrity": "sha512-7K/HcCBQov5nRp3M25APm+6hqrFp4RDc+0NMcA1DGTWKwfYAEqZzn1AurxBCE/nTR4iECV9y1IwdIp8FTdYKSQ==", + "dependencies": { + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-arn-parser": "3.465.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/util-config-provider": "^2.1.0", "tslib": "^2.5.0" }, "engines": { @@ -905,28 +929,14 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.433.0.tgz", - "integrity": "sha512-F/6g+en7bcQWr2sxo4uo+BXoJ9RolyxiizCV/sT7Ku9FELq2O+DtSUM1fHx99TiJ1o9Ud26bf40t857b6yHOSw==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.468.0.tgz", + "integrity": "sha512-ehDQHKimed1DrdXYG12LPKWzHlG9iXihGEok07nOJR/2RpOuSpAcavc4eeuOVeEHh58Eu8TXvvVAJ906Vtm6YA==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.433.0.tgz", - "integrity": "sha512-ORYbJnBejUyonFl5FwIqhvI3Cq6sAp9j+JpkKZtFNma9tFPdrhmYgfCeNH32H/wGTQV/tUoQ3luh0gA4cuk6DA==", - "dependencies": { - "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@smithy/types": "^2.4.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -934,16 +944,16 @@ } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.433.0.tgz", - "integrity": "sha512-jxPvt59NZo/epMNLNTu47ikmP8v0q217I6bQFGJG7JVFnfl36zDktMwGw+0xZR80qiK47/2BWrNpta61Zd2FxQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz", + "integrity": "sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==", "dependencies": { - "@aws-sdk/types": "3.433.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.8", + "@smithy/protocol-http": "^3.0.11", "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.4.0", - "@smithy/util-middleware": "^2.0.5", + "@smithy/types": "^2.7.0", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { @@ -951,12 +961,12 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.433.0.tgz", - "integrity": "sha512-2AMaPx0kYfCiekxoL7aqFqSSoA9du+yI4zefpQNLr+1cZOerYiDxdsZ4mbqStR1CVFaX6U6hrYokXzjInsvETw==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.468.0.tgz", + "integrity": "sha512-y1qLW24wRkOGBTK5d6eJXf6d8HYo4rzT4a1mNDN1rd18NSffwQ6Yke5qeUiIaxa0y/l+FvvNYErbhYtij2rJoQ==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -964,14 +974,14 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.438.0.tgz", - "integrity": "sha512-a+xHT1wOxT6EA6YyLmrfaroKWOkwwyiktUfXKM0FsUutGzNi4fKhb5NZ2al58NsXzHgHFrasSDp+Lqbd/X2cEw==", - "dependencies": { - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@smithy/protocol-http": "^3.0.8", - "@smithy/types": "^2.4.0", + "version": "3.478.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz", + "integrity": "sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==", + "dependencies": { + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -979,14 +989,14 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.433.0.tgz", - "integrity": "sha512-xpjRjCZW+CDFdcMmmhIYg81ST5UAnJh61IHziQEk0FXONrg4kjyYPZAOjEdzXQ+HxJQuGQLKPhRdzxmQnbX7pg==", - "dependencies": { - "@smithy/node-config-provider": "^2.1.3", - "@smithy/types": "^2.4.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.5", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.484.0.tgz", + "integrity": "sha512-qfYSwSIc9GasHFrJidydlQE433mB93d31dfypFWhrJPXRv1fhopO72NSfsY2WCcbaRkADc4AajLZFly4J96abw==", + "dependencies": { + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", + "@smithy/util-config-provider": "^2.1.0", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { @@ -994,14 +1004,15 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.437.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.437.0.tgz", - "integrity": "sha512-MmrqudssOs87JgVg7HGVdvJws/t4kcOrJJd+975ki+DPeSoyK2U4zBDfDkJ+n0tFuZBs3sLwLh0QXE7BV28rRA==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.484.0.tgz", + "integrity": "sha512-9LrO9Le/oB7+9NITeW2RcO4V4EAfOCbxE9TvwRbg5CEvWgBdMU7qc1ZnCPXF4i2AsGTsnRUlzaql/M7/ln2lIg==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/protocol-http": "^3.0.8", + "@aws-sdk/middleware-sdk-s3": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@smithy/protocol-http": "^3.0.11", "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -1009,46 +1020,46 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.438.0.tgz", - "integrity": "sha512-G2fUfTtU6/1ayYRMu0Pd9Ln4qYSvwJOWCqJMdkDgvXSwdgcOSOLsnAIk1AHGJDAvgLikdCzuyOsdJiexr9Vnww==", + "version": "3.484.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.484.0.tgz", + "integrity": "sha512-9Eb7X0sNhJANfYCeEYWCvfeD4shMZEse3YUz5EALzbpzi/So56ZaeA/lWWeh0fkYiByq74eA2QkC/tXZkHw6EQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.433.0", - "@aws-sdk/middleware-logger": "3.433.0", - "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.438.0", - "@aws-sdk/region-config-resolver": "3.433.0", - "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.438.0", - "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.437.0", - "@smithy/config-resolver": "^2.0.16", - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/hash-node": "^2.0.12", - "@smithy/invalid-dependency": "^2.0.12", - "@smithy/middleware-content-length": "^2.0.14", - "@smithy/middleware-endpoint": "^2.1.3", - "@smithy/middleware-retry": "^2.0.18", - "@smithy/middleware-serde": "^2.0.12", - "@smithy/middleware-stack": "^2.0.6", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/node-http-handler": "^2.1.8", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.484.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.22", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.25", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.8", + "@smithy/protocol-http": "^3.0.11", "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/smithy-client": "^2.2.0", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.16", - "@smithy/util-defaults-mode-node": "^2.0.21", - "@smithy/util-endpoints": "^1.0.2", - "@smithy/util-retry": "^2.0.5", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-defaults-mode-browser": "^2.0.23", + "@smithy/util-defaults-mode-node": "^2.0.31", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -1056,11 +1067,11 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.433.0.tgz", - "integrity": "sha512-0jEE2mSrNDd8VGFjTc1otYrwYPIkzZJEIK90ZxisKvQ/EURGBhNzWn7ejWB9XCMFT6XumYLBR0V9qq5UPisWtA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -1068,9 +1079,9 @@ } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz", - "integrity": "sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==", + "version": "3.465.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.465.0.tgz", + "integrity": "sha512-zOJ82vzDJFqBX9yZBlNeHHrul/kpx/DCoxzW5UBbZeb26kfV53QhMSoEmY8/lEbBqlqargJ/sgRC845GFhHNQw==", "dependencies": { "tslib": "^2.5.0" }, @@ -1079,12 +1090,12 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.438.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.438.0.tgz", - "integrity": "sha512-6VyPTq1kN3GWxwFt5DdZfOsr6cJZPLjWh0troY/0uUv3hK74C9o3Y0Xf/z8UAUvQFkVqZse12O0/BgPVMImvfA==", + "version": "3.478.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz", + "integrity": "sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/util-endpoints": "^1.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/util-endpoints": "^1.0.7", "tslib": "^2.5.0" }, "engines": { @@ -1092,9 +1103,9 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", + "version": "3.465.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", + "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==", "dependencies": { "tslib": "^2.5.0" }, @@ -1103,24 +1114,24 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.433.0.tgz", - "integrity": "sha512-2Cf/Lwvxbt5RXvWFXrFr49vXv0IddiUwrZoAiwhDYxvsh+BMnh+NUFot+ZQaTrk/8IPZVDeLPWZRdVy00iaVXQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz", + "integrity": "sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.437.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.437.0.tgz", - "integrity": "sha512-JVEcvWaniamtYVPem4UthtCNoTBCfFTwYj7Y3CrWZ2Qic4TqrwLkAfaBGtI2TGrhIClVr77uzLI6exqMTN7orA==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz", + "integrity": "sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==", "dependencies": { - "@aws-sdk/types": "3.433.0", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/types": "^2.4.0", + "@aws-sdk/types": "3.468.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -1144,10 +1155,11 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz", - "integrity": "sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==", + "version": "3.472.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.472.0.tgz", + "integrity": "sha512-PwjVxz1hr9up8QkddabuScPZ/d5aDHgvHYgK4acHYzltXL4wngfvimi5ZqXTzVWF2QANxHmWnHUr45QJX71oJQ==", "dependencies": { + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -1155,12 +1167,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -1239,30 +1251,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1293,12 +1305,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -1308,14 +1320,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -1394,9 +1406,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -1437,9 +1449,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1455,32 +1467,32 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", + "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", @@ -1563,9 +1575,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1589,20 +1601,20 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1619,12 +1631,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, @@ -1710,267 +1722,6 @@ "regexp-match-indices": "1.0.2" } }, - "node_modules/@cucumber/cucumber/node_modules/@cucumber/messages": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-24.0.1.tgz", - "integrity": "sha512-dKfNkvgc6stSQIyeHk7p/221iqEZe1BP+e/Js8XKtSmc0sS8khKMvbSBwYVeonn/67/vYKiAyo6Eo0SzXd5Plw==", - "dev": true, - "dependencies": { - "@types/uuid": "9.0.7", - "class-transformer": "0.5.1", - "reflect-metadata": "0.2.1", - "uuid": "9.0.1" - } - }, - "node_modules/@cucumber/cucumber/node_modules/@types/uuid": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", - "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", - "dev": true - }, - "node_modules/@cucumber/cucumber/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@cucumber/cucumber/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cucumber/cucumber/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@cucumber/cucumber/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@cucumber/cucumber/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/@cucumber/cucumber/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cucumber/cucumber/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@cucumber/cucumber/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@cucumber/cucumber/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/@cucumber/cucumber/node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@cucumber/cucumber/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@cucumber/cucumber/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cucumber/cucumber/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cucumber/cucumber/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@cucumber/cucumber/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cucumber/cucumber/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cucumber/cucumber/node_modules/reflect-metadata": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", - "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==", - "dev": true - }, - "node_modules/@cucumber/cucumber/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@cucumber/cucumber/node_modules/type-fest": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", - "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@cucumber/cucumber/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@cucumber/gherkin": { "version": "27.0.0", "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-27.0.0.tgz", @@ -2032,6 +1783,72 @@ "@cucumber/messages": ">=19.1.4 <=22" } }, + "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", + "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "dev": true, + "dependencies": { + "@types/uuid": "9.0.1", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "node_modules/@cucumber/gherkin-utils/node_modules/@types/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "dev": true + }, + "node_modules/@cucumber/gherkin-utils/node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/@cucumber/gherkin-utils/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@cucumber/gherkin/node_modules/@cucumber/messages": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", + "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "dev": true, + "dependencies": { + "@types/uuid": "9.0.1", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "node_modules/@cucumber/gherkin/node_modules/@types/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "dev": true + }, + "node_modules/@cucumber/gherkin/node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/@cucumber/gherkin/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@cucumber/html-formatter": { "version": "21.2.0", "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-21.2.0.tgz", @@ -2051,20 +1868,26 @@ } }, "node_modules/@cucumber/messages": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", - "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-24.0.1.tgz", + "integrity": "sha512-dKfNkvgc6stSQIyeHk7p/221iqEZe1BP+e/Js8XKtSmc0sS8khKMvbSBwYVeonn/67/vYKiAyo6Eo0SzXd5Plw==", + "dev": true, "dependencies": { - "@types/uuid": "9.0.1", + "@types/uuid": "9.0.7", "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.0" + "reflect-metadata": "0.2.1", + "uuid": "9.0.1" } }, "node_modules/@cucumber/messages/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -2100,9 +1923,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2123,9 +1946,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", - "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2208,18 +2031,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2258,23 +2069,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -2666,6 +2460,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@lerna/create/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/@lerna/create/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3396,15 +3196,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@sigstore/sign/node_modules/cacache": { "version": "17.1.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", @@ -3428,31 +3219,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@sigstore/sign/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@sigstore/sign/node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -3465,37 +3231,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/fs-minipass/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@sigstore/sign/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@sigstore/sign/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -3531,22 +3266,7 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@sigstore/sign/node_modules/minipass": { + "node_modules/@sigstore/sign/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", @@ -3572,27 +3292,6 @@ "encoding": "^0.1.13" } }, - "node_modules/@sigstore/sign/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@sigstore/sign/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@sigstore/sign/node_modules/ssri": { "version": "10.0.5", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", @@ -3605,15 +3304,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/ssri/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/@sigstore/sign/node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -3658,11 +3348,11 @@ "dev": true }, "node_modules/@smithy/abort-controller": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.12.tgz", - "integrity": "sha512-YIJyefe1mi3GxKdZxEBEuzYOeQ9xpYfqnFmWzojCssRAuR7ycxwpoRQgp965vuW426xUAQhCV5rCaWElQ7XsaA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.16.tgz", + "integrity": "sha512-4foO7738k8kM9flMHu3VLabqu7nPgvIj8TB909S0CnKx0YZz/dcDH3pZ/4JHdatfxlZdKF1JWOYCw9+v3HVVsw==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3678,23 +3368,41 @@ } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.0.tgz", - "integrity": "sha512-HM8V2Rp1y8+1343tkZUKZllFhEQPNmpNdgFAncbTsxkZ18/gqjk23XXv3qGyXWp412f3o43ZZ1UZHVcHrpRnCQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.1.tgz", + "integrity": "sha512-N2oCZRglhWKm7iMBu7S6wDzXirjAofi7tAd26cxmgibRYOBS4D3hGfmkwCpHdASZzwZDD8rluh0Rcqw1JeZDRw==", "dependencies": { - "@smithy/util-base64": "^2.0.0", + "@smithy/util-base64": "^2.0.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/config-resolver": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.16.tgz", - "integrity": "sha512-1k+FWHQDt2pfpXhJsOmNMmlAZ3NUQ98X5tYsjQhVGq+0X6cOBMhfh6Igd0IX3Ut6lEO6DQAdPMI/blNr3JZfMQ==", - "dependencies": { - "@smithy/node-config-provider": "^2.1.3", - "@smithy/types": "^2.4.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.5", + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.23.tgz", + "integrity": "sha512-XakUqgtP2YY8Mi+Nlif5BiqJgWdvfxJafSpOSQeCOMizu+PUhE4fBQSy6xFcR+eInrwVadaABNxoJyGUMn15ew==", + "dependencies": { + "@smithy/node-config-provider": "^2.1.9", + "@smithy/types": "^2.8.0", + "@smithy/util-config-provider": "^2.1.0", + "@smithy/util-middleware": "^2.0.9", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.2.2.tgz", + "integrity": "sha512-uLjrskLT+mWb0emTR5QaiAIxVEU7ndpptDaVDrTwwhD+RjvHhjIiGQ3YL5jKk1a5VSDQUA2RGkXvJ6XKRcz6Dg==", + "dependencies": { + "@smithy/middleware-endpoint": "^2.3.0", + "@smithy/middleware-retry": "^2.0.26", + "@smithy/middleware-serde": "^2.0.16", + "@smithy/protocol-http": "^3.0.12", + "@smithy/smithy-client": "^2.2.1", + "@smithy/types": "^2.8.0", + "@smithy/util-middleware": "^2.0.9", "tslib": "^2.5.0" }, "engines": { @@ -3702,14 +3410,14 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.18.tgz", - "integrity": "sha512-QnPBi6D2zj6AHJdUTo5zXmk8vwHJ2bNevhcVned1y+TZz/OI5cizz5DsYNkqFUIDn8tBuEyKNgbmKVNhBbuY3g==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.5.tgz", + "integrity": "sha512-VfvE6Wg1MUWwpTZFBnUD7zxvPhLY8jlHCzu6bCjlIYoWgXCDzZAML76IlZUEf45nib3rjehnFgg0s1rgsuN/bg==", "dependencies": { - "@smithy/node-config-provider": "^2.1.3", - "@smithy/property-provider": "^2.0.13", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", + "@smithy/node-config-provider": "^2.1.9", + "@smithy/property-provider": "^2.0.17", + "@smithy/types": "^2.8.0", + "@smithy/url-parser": "^2.0.16", "tslib": "^2.5.0" }, "engines": { @@ -3717,23 +3425,23 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.12.tgz", - "integrity": "sha512-ZZQLzHBJkbiAAdj2C5K+lBlYp/XJ+eH2uy+jgJgYIFW/o5AM59Hlj7zyI44/ZTDIQWmBxb3EFv/c5t44V8/g8A==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.16.tgz", + "integrity": "sha512-umYh5pdCE9GHgiMAH49zu9wXWZKNHHdKPm/lK22WYISTjqu29SepmpWNmPiBLy/yUu4HFEGJHIFrDWhbDlApaw==", "dependencies": { "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "@smithy/util-hex-encoding": "^2.0.0", "tslib": "^2.5.0" } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.12.tgz", - "integrity": "sha512-0pi8QlU/pwutNshoeJcbKR1p7Ie5STd8UFAMX5xhSoSJjNlxIv/OsHbF023jscMRN2Prrqd6ToGgdCnsZVQjvg==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.16.tgz", + "integrity": "sha512-W+BdiN728R57KuZOcG0GczpIOEFf8S5RP/OdVH7T3FMCy8HU2bBU0vB5xZZR5c00VRdoeWrohNv3XlHoZuGRoA==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.12", - "@smithy/types": "^2.4.0", + "@smithy/eventstream-serde-universal": "^2.0.16", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3741,11 +3449,11 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.12.tgz", - "integrity": "sha512-I0XfwQkIX3gAnbrU5rLMkBSjTM9DHttdbLwf12CXmj7SSI5dT87PxtKLRrZGanaCMbdf2yCep+MW5/4M7IbvQA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.16.tgz", + "integrity": "sha512-8qrE4nh+Tg6m1SMFK8vlzoK+8bUFTlIhXidmmQfASMninXW3Iu0T0bI4YcIk4nLznHZdybQ0qGydIanvVZxzVg==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3753,12 +3461,12 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.12.tgz", - "integrity": "sha512-vf1vMHGOkG3uqN9x1zKOhnvW/XgvhJXWqjV6zZiT2FMjlEayugQ1mzpSqr7uf89+BzjTzuZKERmOsEAmewLbxw==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.16.tgz", + "integrity": "sha512-NRNQuOa6mQdFSkqzY0IV37swHWx0SEoKxFtUfdZvfv0AVQPlSw4N7E3kcRSCpnHBr1kCuWWirdDlWcjWuD81MA==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.12", - "@smithy/types": "^2.4.0", + "@smithy/eventstream-serde-universal": "^2.0.16", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3766,12 +3474,12 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.12.tgz", - "integrity": "sha512-xZ3ZNpCxIND+q+UCy7y1n1/5VQEYicgSTNCcPqsKawX+Vd+6OcFX7gUHMyPzL8cZr+GdmJuxNleqHlH4giK2tw==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.16.tgz", + "integrity": "sha512-ZyLnGaYQMLc75j9kKEVMJ3X6bdBE9qWxhZdTXM5RIltuytxJC3FaOhawBxjE+IL1enmWSIohHGZCm/pLwEliQA==", "dependencies": { - "@smithy/eventstream-codec": "^2.0.12", - "@smithy/types": "^2.4.0", + "@smithy/eventstream-codec": "^2.0.16", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3779,36 +3487,36 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.2.4.tgz", - "integrity": "sha512-gIPRFEGi+c6V52eauGKrjDzPWF2Cu7Z1r5F8A3j2wcwz25sPG/t8kjsbEhli/tS/2zJp/ybCZXe4j4ro3yv/HA==", - "dependencies": { - "@smithy/protocol-http": "^3.0.8", - "@smithy/querystring-builder": "^2.0.12", - "@smithy/types": "^2.4.0", - "@smithy/util-base64": "^2.0.0", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.3.2.tgz", + "integrity": "sha512-O9R/OlnAOTsnysuSDjt0v2q6DcSvCz5cCFC/CFAWWcLyBwJDeFyGTCTszgpQTb19+Fi8uRwZE5/3ziAQBFeDMQ==", + "dependencies": { + "@smithy/protocol-http": "^3.0.12", + "@smithy/querystring-builder": "^2.0.16", + "@smithy/types": "^2.8.0", + "@smithy/util-base64": "^2.0.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/hash-blob-browser": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.12.tgz", - "integrity": "sha512-riLnV16f27yyePX8UF0deRHAeccUK8SrOxyTykSTrnVkgS3DsjNapZtTbd8OGNKEbI60Ncdb5GwN3rHZudXvog==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.17.tgz", + "integrity": "sha512-/mPpv1sRiRDdjO4zZuO8be6eeabmg5AVgKDfnmmqkpBtRyMGSJb968fjRuHt+FRAsIGywgIKJFmUUAYjhsi1oQ==", "dependencies": { "@smithy/chunked-blob-reader": "^2.0.0", - "@smithy/chunked-blob-reader-native": "^2.0.0", - "@smithy/types": "^2.4.0", + "@smithy/chunked-blob-reader-native": "^2.0.1", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" } }, "node_modules/@smithy/hash-node": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.12.tgz", - "integrity": "sha512-fDZnTr5j9t5qcbeJ037aMZXxMka13Znqwrgy3PAqYj6Dm3XHXHftTH3q+NWgayUxl1992GFtQt1RuEzRMy3NnQ==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.18.tgz", + "integrity": "sha512-gN2JFvAgnZCyDN9rJgcejfpK0uPPJrSortVVVVWsru9whS7eQey6+gj2eM5ln2i6rHNntIXzal1Fm9XOPuoaKA==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -3816,12 +3524,12 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.12.tgz", - "integrity": "sha512-x/DrSynPKrW0k00q7aZ/vy531a3mRw79mOajHp+cIF0TrA1SqEMFoy/B8X0XtoAtlJWt/vvgeDNqt/KAeaAqMw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.18.tgz", + "integrity": "sha512-OuFk+ITpv8CtxGjQcS8GA04faNycu9UMm6YobvQzjeEoXZ0dLF6sRfuzD+3S8RHPKpTyLuXtKG1+GiJycZ5TcA==", "dependencies": { - "@smithy/types": "^2.4.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/types": "^2.8.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -3829,11 +3537,11 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.12.tgz", - "integrity": "sha512-p5Y+iMHV3SoEpy3VSR7mifbreHQwVSvHSAz/m4GdoXfOzKzaYC8hYv10Ks7Deblkf7lhas8U+lAp9ThbBM+ZXA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.16.tgz", + "integrity": "sha512-apEHakT/kmpNo1VFHP4W/cjfeP9U0x5qvfsLJubgp7UM/gq4qYp0GbqdE7QhsjUaYvEnrftRqs7+YrtWreV0wA==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" } }, @@ -3849,22 +3557,22 @@ } }, "node_modules/@smithy/md5-js": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.12.tgz", - "integrity": "sha512-OgDt+Xnrw+W5z3MSl5KZZzebqmXrYl9UdbCiBYnnjErmNywwSjV6QB/Oic3/7hnsPniSU81n7Rvlhz2kH4EREQ==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.18.tgz", + "integrity": "sha512-bHwZ8/m6RbERQdVW5rJ2LzeW8qxfXv6Q/S7Fiudhso4pWRrksqLx3nsGZw7bmqqfN4zLqkxydxSa9+4c7s5zxg==", "dependencies": { - "@smithy/types": "^2.4.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/types": "^2.8.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" } }, "node_modules/@smithy/middleware-content-length": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.14.tgz", - "integrity": "sha512-poUNgKTw9XwPXfX9nEHpVgrMNVpaSMZbshqvPxFVoalF4wp6kRzYKOfdesSVectlQ51VtigoLfbXcdyPwvxgTg==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.18.tgz", + "integrity": "sha512-ZJ9uKPTfxYheTKSKYB+GCvcj+izw9WGzRLhjn8n254q0jWLojUzn7Vw0l4R/Gq7Wdpf/qmk/ptD+6CCXHNVCaw==", "dependencies": { - "@smithy/protocol-http": "^3.0.8", - "@smithy/types": "^2.4.0", + "@smithy/protocol-http": "^3.0.12", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3872,16 +3580,16 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.1.3.tgz", - "integrity": "sha512-ZrQ0/YX6hNVTxqMEHtEaDbDv6pNeEji/a5Vk3HuFC5R3ZY8lfoATyxmOGxBVYnF3NUvZLNC7umEv1WzWGWvCGQ==", - "dependencies": { - "@smithy/middleware-serde": "^2.0.12", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/shared-ini-file-loader": "^2.2.2", - "@smithy/types": "^2.4.0", - "@smithy/url-parser": "^2.0.12", - "@smithy/util-middleware": "^2.0.5", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.3.0.tgz", + "integrity": "sha512-VsOAG2YQ8ykjSmKO+CIXdJBIWFo6AAvG6Iw95BakBTqk66/4BI7XyqLevoNSq/lZ6NgZv24sLmrcIN+fLDWBCg==", + "dependencies": { + "@smithy/middleware-serde": "^2.0.16", + "@smithy/node-config-provider": "^2.1.9", + "@smithy/shared-ini-file-loader": "^2.2.8", + "@smithy/types": "^2.8.0", + "@smithy/url-parser": "^2.0.16", + "@smithy/util-middleware": "^2.0.9", "tslib": "^2.5.0" }, "engines": { @@ -3889,16 +3597,17 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.18.tgz", - "integrity": "sha512-VyrHQRldGSb3v9oFOB5yPxmLT7U2sQic2ytylOnYlnsmVOLlFIaI6sW22c+w2675yq+XZ6HOuzV7x2OBYCWRNA==", - "dependencies": { - "@smithy/node-config-provider": "^2.1.3", - "@smithy/protocol-http": "^3.0.8", - "@smithy/service-error-classification": "^2.0.5", - "@smithy/types": "^2.4.0", - "@smithy/util-middleware": "^2.0.5", - "@smithy/util-retry": "^2.0.5", + "version": "2.0.26", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.26.tgz", + "integrity": "sha512-Qzpxo0U5jfNiq9iD38U3e2bheXwvTEX4eue9xruIvEgh+UKq6dKuGqcB66oBDV7TD/mfoJi9Q/VmaiqwWbEp7A==", + "dependencies": { + "@smithy/node-config-provider": "^2.1.9", + "@smithy/protocol-http": "^3.0.12", + "@smithy/service-error-classification": "^2.0.9", + "@smithy/smithy-client": "^2.2.1", + "@smithy/types": "^2.8.0", + "@smithy/util-middleware": "^2.0.9", + "@smithy/util-retry": "^2.0.9", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -3907,11 +3616,11 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.12.tgz", - "integrity": "sha512-IBeco157lIScecq2Z+n0gq56i4MTnfKxS7rbfrAORveDJgnbBAaEQgYqMqp/cYqKrpvEXcyTjwKHrBjCCIZh2A==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.16.tgz", + "integrity": "sha512-5EAd4t30pcc4M8TSSGq7q/x5IKrxfXR5+SrU4bgxNy7RPHQo2PSWBUco9C+D9Tfqp/JZvprRpK42dnupZafk2g==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3919,11 +3628,11 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.6.tgz", - "integrity": "sha512-YSvNZeOKWLJ0M/ycxwDIe2Ztkp6Qixmcml1ggsSv2fdHKGkBPhGrX5tMzPGMI1yyx55UEYBi2OB4s+RriXX48A==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.10.tgz", + "integrity": "sha512-I2rbxctNq9FAPPEcuA1ntZxkTKOPQFy7YBPOaD/MLg1zCvzv21CoNxR0py6J8ZVC35l4qE4nhxB0f7TF5/+Ldw==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3931,13 +3640,13 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.3.tgz", - "integrity": "sha512-J6lXvRHGVnSX3n1PYi+e1L5HN73DkkJpUviV3Ebf+8wSaIjAf+eVNbzyvh/S5EQz7nf4KVfwbD5vdoZMAthAEQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.9.tgz", + "integrity": "sha512-tUyW/9xrRy+s7RXkmQhgYkAPMpTIF8izK4orhHjNFEKR3QZiOCbWB546Y8iB/Fpbm3O9+q0Af9rpywLKJOwtaQ==", "dependencies": { - "@smithy/property-provider": "^2.0.13", - "@smithy/shared-ini-file-loader": "^2.2.2", - "@smithy/types": "^2.4.0", + "@smithy/property-provider": "^2.0.17", + "@smithy/shared-ini-file-loader": "^2.2.8", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3945,14 +3654,14 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.1.8.tgz", - "integrity": "sha512-KZylM7Wff/So5SmCiwg2kQNXJ+RXgz34wkxS7WNwIUXuZrZZpY/jKJCK+ZaGyuESDu3TxcaY+zeYGJmnFKbQsA==", - "dependencies": { - "@smithy/abort-controller": "^2.0.12", - "@smithy/protocol-http": "^3.0.8", - "@smithy/querystring-builder": "^2.0.12", - "@smithy/types": "^2.4.0", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.2.2.tgz", + "integrity": "sha512-XO58TO/Eul/IBQKFKaaBtXJi0ItEQQCT+NI4IiKHCY/4KtqaUT6y/wC1EvDqlA9cP7Dyjdj7FdPs4DyynH3u7g==", + "dependencies": { + "@smithy/abort-controller": "^2.0.16", + "@smithy/protocol-http": "^3.0.12", + "@smithy/querystring-builder": "^2.0.16", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3960,11 +3669,11 @@ } }, "node_modules/@smithy/property-provider": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.13.tgz", - "integrity": "sha512-VJqUf2CbsQX6uUiC5dUPuoEATuFjkbkW3lJHbRnpk9EDC9X+iKqhfTK+WP+lve5EQ9TcCI1Q6R7hrg41FyC54w==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.17.tgz", + "integrity": "sha512-+VkeZbVu7qtQ2DjI48Qwaf9fPOr3gZIwxQpuLJgRRSkWsdSvmaTCxI3gzRFKePB63Ts9r4yjn4HkxSCSkdWmcQ==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3972,11 +3681,11 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.8.tgz", - "integrity": "sha512-SHJvYeWq8q0FK8xHk+xjV9dzDUDjFMT+G1pZbV+XB6OVoac/FSVshlMNPeUJ8AmSkcDKHRu5vASnRqZHgD3qhw==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.12.tgz", + "integrity": "sha512-Xz4iaqLiaBfbQpB9Hgi3VcZYbP7xRDXYhd8XWChh4v94uw7qwmvlxdU5yxzfm6ACJM66phHrTbS5TVvj5uQ72w==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -3984,11 +3693,11 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.12.tgz", - "integrity": "sha512-cDbF07IuCjiN8CdGvPzfJjXIrmDSelScRfyJYrYBNBbKl2+k7QD/KqiHhtRyEKgID5mmEVrV6KE6L/iPJ98sFw==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.16.tgz", + "integrity": "sha512-Q/GsJT0C0mijXMRs7YhZLLCP5FcuC4797lYjKQkME5CZohnLC4bEhylAd2QcD3gbMKNjCw8+T2I27WKiV/wToA==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "@smithy/util-uri-escape": "^2.0.0", "tslib": "^2.5.0" }, @@ -3997,11 +3706,11 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.12.tgz", - "integrity": "sha512-fytyTcXaMzPBuNtPlhj5v6dbl4bJAnwKZFyyItAGt4Tgm9HFPZNo7a9r1SKPr/qdxUEBzvL9Rh+B9SkTX3kFxg==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.16.tgz", + "integrity": "sha512-c4ueAuL6BDYKWpkubjrQthZKoC3L5kql5O++ovekNxiexRXTlLIVlCR4q3KziOktLIw66EU9SQljPXd/oN6Okg==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -4009,22 +3718,22 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.5.tgz", - "integrity": "sha512-M0SeJnEgD2ywJyV99Fb1yKFzmxDe9JfpJiYTVSRMyRLc467BPU0qsuuDPzMCdB1mU8M8u1rVOdkqdoyFN8UFTw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.9.tgz", + "integrity": "sha512-0K+8GvtwI7VkGmmInPydM2XZyBfIqLIbfR7mDQ+oPiz8mIinuHbV6sxOLdvX1Jv/myk7XTK9orgt3tuEpBu/zg==", "dependencies": { - "@smithy/types": "^2.4.0" + "@smithy/types": "^2.8.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.2.tgz", - "integrity": "sha512-noyQUPn7b1M8uB0GEXc/Zyxq+5K2b7aaqWnLp+hgJ7+xu/FCvtyWy5eWLDjQEsHnAet2IZhS5QF8872OR69uNg==", + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.8.tgz", + "integrity": "sha512-E62byatbwSWrtq9RJ7xN40tqrRKDGrEL4EluyNpaIDvfvet06a/QC58oHw2FgVaEgkj0tXZPjZaKrhPfpoU0qw==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -4032,17 +3741,17 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.12.tgz", - "integrity": "sha512-6Kc2lCZEVmb1nNYngyNbWpq0d82OZwITH11SW/Q0U6PX5fH7B2cIcFe7o6eGEFPkTZTP8itTzmYiGcECL0D0Lw==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.19.tgz", + "integrity": "sha512-nwc3JihdM+kcJjtORv/n7qRHN2Kfh7S2RJI2qr8pz9UcY5TD8rSCRGQ0g81HgyS3jZ5X9U/L4p014P3FonBPhg==", "dependencies": { - "@smithy/eventstream-codec": "^2.0.12", + "@smithy/eventstream-codec": "^2.0.16", "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.5", + "@smithy/util-middleware": "^2.0.9", "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -4050,13 +3759,15 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.12.tgz", - "integrity": "sha512-XXqhridfkKnpj+lt8vM6HRlZbqUAqBjVC74JIi13F/AYQd/zTj9SOyGfxnbp4mjY9q28LityxIuV8CTinr9r5w==", - "dependencies": { - "@smithy/middleware-stack": "^2.0.6", - "@smithy/types": "^2.4.0", - "@smithy/util-stream": "^2.0.17", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.2.1.tgz", + "integrity": "sha512-SpD7FLK92XV2fon2hMotaNDa2w5VAy5/uVjP9WFmjGSgWM8pTPVkHcDl1yFs5Z8LYbij0FSz+DbCBK6i+uXXUA==", + "dependencies": { + "@smithy/middleware-endpoint": "^2.3.0", + "@smithy/middleware-stack": "^2.0.10", + "@smithy/protocol-http": "^3.0.12", + "@smithy/types": "^2.8.0", + "@smithy/util-stream": "^2.0.24", "tslib": "^2.5.0" }, "engines": { @@ -4064,9 +3775,9 @@ } }, "node_modules/@smithy/types": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.4.0.tgz", - "integrity": "sha512-iH1Xz68FWlmBJ9vvYeHifVMWJf82ONx+OybPW8ZGf5wnEv2S0UXcU4zwlwJkRXuLKpcSLHrraHbn2ucdVXLb4g==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.8.0.tgz", + "integrity": "sha512-h9sz24cFgt/W1Re22OlhQKmUZkNh244ApgRsUDYinqF8R+QgcsBIX344u2j61TPshsTz3CvL6HYU1DnQdsSrHA==", "dependencies": { "tslib": "^2.5.0" }, @@ -4075,19 +3786,19 @@ } }, "node_modules/@smithy/url-parser": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.12.tgz", - "integrity": "sha512-qgkW2mZqRvlNUcBkxYB/gYacRaAdck77Dk3/g2iw0S9F0EYthIS3loGfly8AwoWpIvHKhkTsCXXQfzksgZ4zIA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.16.tgz", + "integrity": "sha512-Wfz5WqAoRT91TjRy1JeLR0fXtkIXHGsMbgzKFTx7E68SrZ55TB8xoG+vm11Ru4gheFTMXjAjwAxv1jQdC+pAQA==", "dependencies": { - "@smithy/querystring-parser": "^2.0.12", - "@smithy/types": "^2.4.0", + "@smithy/querystring-parser": "^2.0.16", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" } }, "node_modules/@smithy/util-base64": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.0.tgz", - "integrity": "sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz", + "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==", "dependencies": { "@smithy/util-buffer-from": "^2.0.0", "tslib": "^2.5.0" @@ -4097,9 +3808,9 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.0.tgz", - "integrity": "sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.1.tgz", + "integrity": "sha512-NXYp3ttgUlwkaug4bjBzJ5+yIbUbUx8VsSLuHZROQpoik+gRkIBeEG9MPVYfvPNpuXb/puqodeeUXcKFe7BLOQ==", "dependencies": { "tslib": "^2.5.0" } @@ -4128,9 +3839,9 @@ } }, "node_modules/@smithy/util-config-provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz", - "integrity": "sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.1.0.tgz", + "integrity": "sha512-S6V0JvvhQgFSGLcJeT1CBsaTR03MM8qTuxMH9WPCCddlSo2W0V5jIHimHtIQALMLEDPGQ0ROSRr/dU0O+mxiQg==", "dependencies": { "tslib": "^2.5.0" }, @@ -4139,13 +3850,13 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.16.tgz", - "integrity": "sha512-Uv5Cu8nVkuvLn0puX+R9zWbSNpLIR3AxUlPoLJ7hC5lvir8B2WVqVEkJLwtixKAncVLasnTVjPDCidtAUTGEQw==", + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.24.tgz", + "integrity": "sha512-TsP5mBuLgO2C21+laNG2nHYZEyUdkbGURv2tHvSuQQxLz952MegX95uwdxOY2jR2H4GoKuVRfdJq7w4eIjGYeg==", "dependencies": { - "@smithy/property-provider": "^2.0.13", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", + "@smithy/property-provider": "^2.0.17", + "@smithy/smithy-client": "^2.2.1", + "@smithy/types": "^2.8.0", "bowser": "^2.11.0", "tslib": "^2.5.0" }, @@ -4154,16 +3865,16 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.21.tgz", - "integrity": "sha512-cUEsttVZ79B7Al2rWK2FW03HBpD9LyuqFtm+1qFty5u9sHSdesr215gS2Ln53fTopNiPgeXpdoM3IgjvIO0rJw==", - "dependencies": { - "@smithy/config-resolver": "^2.0.16", - "@smithy/credential-provider-imds": "^2.0.18", - "@smithy/node-config-provider": "^2.1.3", - "@smithy/property-provider": "^2.0.13", - "@smithy/smithy-client": "^2.1.12", - "@smithy/types": "^2.4.0", + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.32.tgz", + "integrity": "sha512-d0S33dXA2cq1NyorVMroMrEtqKMr3MlyLITcfTBf9pXiigYiPMOtbSI7czHIfDbuVuM89Cg0urAgpt73QV9mPQ==", + "dependencies": { + "@smithy/config-resolver": "^2.0.23", + "@smithy/credential-provider-imds": "^2.1.5", + "@smithy/node-config-provider": "^2.1.9", + "@smithy/property-provider": "^2.0.17", + "@smithy/smithy-client": "^2.2.1", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -4171,12 +3882,12 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.2.tgz", - "integrity": "sha512-QEdq+sP68IJHAMVB2ugKVVZEWeKQtZLuf+akHzc8eTVElsZ2ZdVLWC6Cp+uKjJ/t4yOj1qu6ZzyxJQEQ8jdEjg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.8.tgz", + "integrity": "sha512-l8zVuyZZ61IzZBYp5NWvsAhbaAjYkt0xg9R4xUASkg5SEeTT2meHOJwJHctKMFUXe4QZbn9fR2MaBYjP2119+w==", "dependencies": { - "@smithy/node-config-provider": "^2.1.3", - "@smithy/types": "^2.4.0", + "@smithy/node-config-provider": "^2.1.9", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -4195,11 +3906,11 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.5.tgz", - "integrity": "sha512-1lyT3TcaMJQe+OFfVI+TlomDkPuVzb27NZYdYtmSTltVmLaUjdCyt4KE+OH1CnhZKsz4/cdCL420Lg9UH5Z2Mw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.9.tgz", + "integrity": "sha512-PnCnBJ07noMX1lMDTEefmxSlusWJUiLfrme++MfK5TD0xz8NYmakgoXy5zkF/16zKGmiwOeKAztWT/Vjk1KRIQ==", "dependencies": { - "@smithy/types": "^2.4.0", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -4207,12 +3918,12 @@ } }, "node_modules/@smithy/util-retry": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.5.tgz", - "integrity": "sha512-x3t1+MQAJ6QONk3GTbJNcugCFDVJ+Bkro5YqQQK1EyVesajNDqxFtCx9WdOFNGm/Cbm7tUdwVEmfKQOJoU2Vtw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.9.tgz", + "integrity": "sha512-46BFWe9RqB6g7f4mxm3W3HlqknqQQmWHKlhoqSFZuGNuiDU5KqmpebMbvC3tjTlUkqn4xa2Z7s3Hwb0HNs5scw==", "dependencies": { - "@smithy/service-error-classification": "^2.0.5", - "@smithy/types": "^2.4.0", + "@smithy/service-error-classification": "^2.0.9", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -4220,17 +3931,17 @@ } }, "node_modules/@smithy/util-stream": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.17.tgz", - "integrity": "sha512-fP/ZQ27rRvHsqItds8yB7jerwMpZFTL3QqbQbidUiG0+mttMoKdP0ZqnvM8UK5q0/dfc3/pN7g4XKPXOU7oRWw==", - "dependencies": { - "@smithy/fetch-http-handler": "^2.2.4", - "@smithy/node-http-handler": "^2.1.8", - "@smithy/types": "^2.4.0", - "@smithy/util-base64": "^2.0.0", + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.24.tgz", + "integrity": "sha512-hRpbcRrOxDriMVmbya+Mv77VZVupxRAsfxVDKS54XuiURhdiwCUXJP0X1iJhHinuUf6n8pBF0MkG9C8VooMnWw==", + "dependencies": { + "@smithy/fetch-http-handler": "^2.3.2", + "@smithy/node-http-handler": "^2.2.2", + "@smithy/types": "^2.8.0", + "@smithy/util-base64": "^2.0.1", "@smithy/util-buffer-from": "^2.0.0", "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { @@ -4249,9 +3960,9 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.0.tgz", - "integrity": "sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz", + "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==", "dependencies": { "@smithy/util-buffer-from": "^2.0.0", "tslib": "^2.5.0" @@ -4261,12 +3972,12 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.12.tgz", - "integrity": "sha512-3sENmyVa1NnOPoiT2NCApPmu7ukP7S/v7kL9IxNmnygkDldn7/yK0TP42oPJLwB2k3mospNsSePIlqdXEUyPHA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.16.tgz", + "integrity": "sha512-5i4YONHQ6HoUWDd+X0frpxTXxSXgJhUFl+z0iMy/zpUmVeCQY2or3Vss6DzHKKMMQL4pmVHpQm9WayHDorFdZg==", "dependencies": { - "@smithy/abort-controller": "^2.0.12", - "@smithy/types": "^2.4.0", + "@smithy/abort-controller": "^2.0.16", + "@smithy/types": "^2.8.0", "tslib": "^2.5.0" }, "engines": { @@ -4350,21 +4061,22 @@ "dev": true }, "node_modules/@types/minimist": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz", - "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, "node_modules/@types/normalize-package-data": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz", - "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "node_modules/@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", + "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", + "dev": true }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", @@ -4440,9 +4152,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4805,9 +4517,9 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "node_modules/asynckit": { @@ -4828,9 +4540,9 @@ } }, "node_modules/axios": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", - "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz", + "integrity": "sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -4905,9 +4617,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "funding": [ { @@ -4924,9 +4636,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -5074,6 +4786,18 @@ "node": ">=10" } }, + "node_modules/cacache/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cacache/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -5125,6 +4849,12 @@ "semver": "bin/semver.js" } }, + "node_modules/caching-transform/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/caching-transform/node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -5187,9 +4917,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001559", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001559.tgz", - "integrity": "sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA==", + "version": "1.0.30001572", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz", + "integrity": "sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==", "dev": true, "funding": [ { @@ -5598,6 +5328,86 @@ "node": ">=14" } }, + "node_modules/conventional-changelog-core/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/conventional-changelog-preset-loader": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz", @@ -5687,9 +5497,9 @@ "dev": true }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/cosmiconfig": { @@ -6076,9 +5886,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.571", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.571.tgz", - "integrity": "sha512-Sc+VtKwKCDj3f/kLBjdyjMpNzoZsU6WuL/wFb6EH8USmHEcebxRXcRrVpOpayxd52tuey4RUDpUsw5OS5LhJqg==", + "version": "1.4.617", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.617.tgz", + "integrity": "sha512-sYNE3QxcDS4ANW1k4S/wWYMXjCVcFSOX3Bg8jpuMFaXt/x8JCmp0R1Xe1ZXDX4WXnSRBf+GJ/3eGWicUuQq5cg==", "dev": true }, "node_modules/emoji-regex": { @@ -6370,15 +6180,15 @@ } }, "node_modules/eslint": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", - "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.52.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -6500,9 +6310,9 @@ } }, "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, "dependencies": { "eslint-utils": "^2.0.0", @@ -6518,30 +6328,34 @@ "eslint": ">=4.19.1" } }, - "node_modules/eslint-plugin-es-x": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.2.0.tgz", - "integrity": "sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==", + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.6.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": ">=8" + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" } }, "node_modules/eslint-plugin-import": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", - "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { "array-includes": "^3.1.7", @@ -6560,7 +6374,7 @@ "object.groupby": "^1.0.1", "object.values": "^1.1.7", "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -6600,24 +6414,22 @@ } }, "node_modules/eslint-plugin-n": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.2.0.tgz", - "integrity": "sha512-AQER2jEyQOt1LG6JkGJCCIFotzmlcCZFur2wdKrp1JX2cNotC7Ae0BcD/4lLv3lUAArM9uNS8z/fsvXTd0L71g==", + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", "dev": true, - "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", - "eslint-plugin-es-x": "^7.1.0", - "get-tsconfig": "^4.7.0", - "ignore": "^5.2.4", - "is-core-module": "^2.12.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", "minimatch": "^3.1.2", - "resolve": "^1.22.2", - "semver": "^7.5.3" + "resolve": "^1.22.1", + "semver": "^7.3.8" }, "engines": { - "node": ">=16.0.0" + "node": ">=12.22.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" @@ -6646,6 +6458,49 @@ "eslint": ">=5.16.0" } }, + "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/eslint-plugin-node/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -6684,27 +6539,30 @@ } }, "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/eslint-visitor-keys": { @@ -6818,6 +6676,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -6873,9 +6737,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -6933,9 +6797,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -6963,6 +6827,11 @@ "node": "^12.20 || >= 14.13" } }, + "node_modules/fetch-to-curl": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/fetch-to-curl/-/fetch-to-curl-0.6.0.tgz", + "integrity": "sha512-Gsn0baHnENueQrtvKGikEkaAJhfQYDbSFnyZvI/qnwiZtdIwiuK6iJ0BAKzS3bEzpWyUr6SV9uB4H3HUwl/yZA==" + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -7128,9 +6997,9 @@ } }, "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { "flatted": "^3.2.9", @@ -7138,7 +7007,7 @@ "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { @@ -7148,9 +7017,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "dev": true, "funding": [ { @@ -7177,16 +7046,19 @@ } }, "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/form-data": { @@ -7228,9 +7100,9 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -7247,10 +7119,22 @@ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, "node_modules/fs.realpath": { @@ -7272,6 +7156,25 @@ "node": ">=0.6" } }, + "node_modules/fstream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fstream/node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -7349,6 +7252,12 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/gauge/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -7465,19 +7374,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", - "dev": true, - "peer": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/git-raw-commits": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", @@ -7573,19 +7469,22 @@ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7603,6 +7502,30 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -7619,9 +7542,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -7633,6 +7556,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globalthis": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", @@ -7946,9 +7881,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -8149,6 +8084,20 @@ "node": ">=12.0.0" } }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/internal-slot": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", @@ -8605,9 +8554,9 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -9252,6 +9201,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/lerna/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/lerna/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -9379,15 +9334,6 @@ "node": ">=12" } }, - "node_modules/libnpmpublish/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/libnpmpublish/node_modules/normalize-package-data": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", @@ -9431,9 +9377,9 @@ } }, "node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -9646,180 +9592,63 @@ "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "bin": { - "semver": "bin/semver" + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/meow/node_modules/type-fest": { @@ -9944,15 +9773,12 @@ } }, "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-collect": { @@ -9967,6 +9793,18 @@ "node": ">= 8" } }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-fetch": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", @@ -9984,6 +9822,18 @@ "encoding": "^0.1.13" } }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -9996,6 +9846,18 @@ "node": ">= 8" } }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-json-stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", @@ -10006,6 +9868,18 @@ "minipass": "^3.0.0" } }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -10018,6 +9892,18 @@ "node": ">=8" } }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", @@ -10030,6 +9916,18 @@ "node": ">=8" } }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -10043,6 +9941,18 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", @@ -10081,9 +9991,9 @@ } }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } @@ -10122,24 +10032,24 @@ } }, "node_modules/multiple-cucumber-html-reporter": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/multiple-cucumber-html-reporter/-/multiple-cucumber-html-reporter-3.5.0.tgz", - "integrity": "sha512-ySvJkpJyTho/PunffGPFUcI/bfJFL351JA5lpSWqeVibBAQssVToxdm6U6xXG09yo2/SH1zVJ9Pb90SHRme+uQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/multiple-cucumber-html-reporter/-/multiple-cucumber-html-reporter-3.6.0.tgz", + "integrity": "sha512-rXi4Cws4h2YylogD5rtbrwco+ytXK+yZuSxNCl6dfHG8m95JsD86Eu+4NEXn6gwoDC0X3OpZ2RTg54CooGqXXA==", "dev": true, "dependencies": { "find": "^0.3.0", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "jsonfile": "^6.1.0", "lodash": "^4.17.21", - "luxon": "^3.4.3", + "luxon": "^3.4.4", "open": "^8.4.2", - "uuid": "^9.0.0" + "uuid": "^9.0.1" } }, "node_modules/multiple-cucumber-html-reporter/node_modules/luxon": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.3.tgz", - "integrity": "sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", "dev": true, "engines": { "node": ">=12" @@ -10259,9 +10169,9 @@ } }, "node_modules/node-abi": { - "version": "3.51.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", - "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", + "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", "dependencies": { "semver": "^7.3.5" }, @@ -10338,9 +10248,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", - "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", "dev": true, "bin": { "node-gyp-build": "bin.js", @@ -10348,6 +10258,26 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/node-machine-id": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", @@ -10367,9 +10297,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/nopt": { @@ -10618,15 +10548,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/npm-registry-fetch/node_modules/cacache": { "version": "17.1.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", @@ -10659,22 +10580,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/npm-registry-fetch/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/npm-registry-fetch/node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -10696,28 +10601,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/npm-registry-fetch/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", @@ -10765,21 +10648,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -10830,18 +10698,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/npm-registry-fetch/node_modules/ssri": { "version": "10.0.5", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", @@ -11117,17 +10973,50 @@ "wrap-ansi": "^6.2.0" } }, - "node_modules/nyc/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/nyc/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/nyc/node_modules/locate-path": { @@ -11214,6 +11103,26 @@ "semver": "bin/semver.js" } }, + "node_modules/nyc/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nyc/node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", @@ -11283,13 +11192,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -11681,22 +11590,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/pacote/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/pacote/node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -11718,28 +11611,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/pacote/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/pacote/node_modules/hosted-git-info": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", @@ -11753,9 +11624,9 @@ } }, "node_modules/pacote/node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", "dev": true, "dependencies": { "minimatch": "^9.0.0" @@ -11824,18 +11695,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/pacote/node_modules/ssri": { "version": "10.0.5", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", @@ -12001,23 +11860,14 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", "dev": true, "engines": { "node": "14 || >=16.14" } }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -12561,9 +12411,9 @@ } }, "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -12578,53 +12428,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/read-package-json/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/read-package-json/node_modules/hosted-git-info": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", @@ -12638,9 +12441,9 @@ } }, "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -12655,30 +12458,6 @@ "node": ">=12" } }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/read-package-json/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/read-package-json/node_modules/normalize-package-data": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", @@ -12703,18 +12482,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -12730,83 +12497,132 @@ } }, "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "p-try": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/read-pkg-up/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "engines": { - "node": ">=4" + "bin": { + "semver": "bin/semver" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/read-pkg/node_modules/hosted-git-info": { @@ -12930,9 +12746,10 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", + "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==", + "dev": true }, "node_modules/regexp-match-indices": { "version": "1.0.2", @@ -13074,16 +12891,6 @@ "node": ">=8" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/resolve-pkg/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -13106,6 +12913,12 @@ "node": ">=8" } }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -13148,6 +12961,26 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -13353,10 +13186,16 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/sigstore": { "version": "1.9.0", @@ -13389,15 +13228,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/sigstore/node_modules/cacache": { "version": "17.1.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", @@ -13421,31 +13251,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sigstore/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sigstore/node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -13458,37 +13263,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/fs-minipass/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sigstore/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sigstore/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -13524,22 +13298,7 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sigstore/node_modules/minipass": { + "node_modules/sigstore/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", @@ -13565,27 +13324,6 @@ "encoding": "^0.1.13" } }, - "node_modules/sigstore/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sigstore/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sigstore/node_modules/ssri": { "version": "10.0.5", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", @@ -13598,15 +13336,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/ssri/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/sigstore/node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -13769,6 +13498,19 @@ "node": ">=8" } }, + "node_modules/spawn-wrap/node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/spawn-wrap/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -13793,6 +13535,12 @@ "semver": "bin/semver.js" } }, + "node_modules/spawn-wrap/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -13872,6 +13620,18 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/ssri/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", @@ -14167,6 +13927,18 @@ "node": ">=6" } }, + "node_modules/tar/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -14199,7 +13971,27 @@ "minimatch": "^3.0.4" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/text-extensions": { @@ -14356,9 +14148,9 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -14419,15 +14211,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/tuf-js/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/tuf-js/node_modules/cacache": { "version": "17.1.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", @@ -14451,31 +14234,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/tuf-js/node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/tuf-js/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tuf-js/node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -14488,37 +14246,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/tuf-js/node_modules/fs-minipass/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/tuf-js/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tuf-js/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -14554,22 +14281,7 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/tuf-js/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tuf-js/node_modules/minipass": { + "node_modules/tuf-js/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", @@ -14595,27 +14307,6 @@ "encoding": "^0.1.13" } }, - "node_modules/tuf-js/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/tuf-js/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tuf-js/node_modules/ssri": { "version": "10.0.5", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", @@ -14628,15 +14319,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/tuf-js/node_modules/ssri/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/tuf-js/node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -14693,12 +14375,12 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14862,15 +14544,15 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -15124,17 +14806,20 @@ "dev": true }, "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi-cjs": { @@ -15155,6 +14840,68 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -15173,18 +14920,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/write-json-file": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", @@ -15233,6 +14968,12 @@ "semver": "bin/semver" } }, + "node_modules/write-json-file/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/write-json-file/node_modules/write-file-atomic": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", @@ -15307,9 +15048,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", - "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, "engines": { "node": ">= 14" @@ -15412,6 +15153,7 @@ "license": "Apache-2.0", "dependencies": { "fetch-blob": "^3.1.5", + "fetch-to-curl": "^0.6.0", "form-data": "^4.0.0", "node-fetch": "^2.0.0" }, @@ -15622,6 +15364,54 @@ "regexp-match-indices": "1.0.2" } }, + "packages/preprocessor/node_modules/@cucumber/messages": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", + "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "dependencies": { + "@types/uuid": "9.0.1", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "packages/preprocessor/node_modules/@types/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" + }, + "packages/preprocessor/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/preprocessor/node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "packages/preprocessor/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "packages/validations": { "name": "@ln-maf/validations", "version": "2.0.4", diff --git a/package.json b/package.json index 9729de1..c691e49 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,12 @@ "devDependencies": { "@cucumber/cucumber": "^10.0.0", "lerna": "^7.1.4", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.0", + "eslint": "^8.32.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1", "nyc": "^15.1.0" } } diff --git a/packages/api/package.json b/packages/api/package.json index a043cc8..b3eecee 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -4,7 +4,7 @@ "access": "public" }, "version": "2.0.5", - "description": "", + "description": "MAF module providing API steps", "main": "index.js", "scripts": { "test": "bash runFeature.sh" @@ -14,16 +14,16 @@ "dependencies": { "fetch-blob": "^3.1.5", "form-data": "^4.0.0", - "node-fetch": "^2.0.0" + "node-fetch": "^2.0.0", + "fetch-to-curl": "^0.6.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*", "chai": "^4.3.4" }, "devDependencies": { - "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", + "@ln-maf/core": "*", "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", diff --git a/packages/aws/package.json b/packages/aws/package.json index 7cbd077..a6a1ef7 100644 --- a/packages/aws/package.json +++ b/packages/aws/package.json @@ -24,7 +24,7 @@ "luxon": "^2.4.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" }, "devDependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index 74ff454..c8ec2e4 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -12,7 +12,7 @@ "author": "", "license": "Apache-2.0", "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "moment": "^2.29.1" }, "gitHead": "2a575448a74cfaee5ec68fa10db24cf4ccade849", diff --git a/packages/defaultSQL/package.json b/packages/defaultSQL/package.json index 01040ec..7cf2cd6 100644 --- a/packages/defaultSQL/package.json +++ b/packages/defaultSQL/package.json @@ -17,7 +17,7 @@ "prompt": "^1.2.2" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*", "keytar": "7.*" }, diff --git a/packages/mysql/package.json b/packages/mysql/package.json index 4406278..d99064a 100644 --- a/packages/mysql/package.json +++ b/packages/mysql/package.json @@ -20,7 +20,7 @@ "mysql2": "^2.3.3" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" }, "devDependencies": { diff --git a/packages/postgresql/package.json b/packages/postgresql/package.json index 4b13f00..c3bbac2 100644 --- a/packages/postgresql/package.json +++ b/packages/postgresql/package.json @@ -20,7 +20,7 @@ "pg": "^8.0.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" }, "devDependencies": { diff --git a/packages/preprocessor/package.json b/packages/preprocessor/package.json index 0f321c6..6654fc2 100644 --- a/packages/preprocessor/package.json +++ b/packages/preprocessor/package.json @@ -26,7 +26,7 @@ "typescript": "^4.6.3" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" }, "devDependencies": { diff --git a/packages/validations/package.json b/packages/validations/package.json index eba8eae..30746d8 100644 --- a/packages/validations/package.json +++ b/packages/validations/package.json @@ -22,7 +22,7 @@ "xpath": "0.0.32" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" }, "devDependencies": { From 826c58bad05b76833712c26d9836c133000a7d4b Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 3 Jan 2024 14:46:33 -0500 Subject: [PATCH 04/48] Move API feature tests --- packages/api/{test => features}/hello.feature | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/api/{test => features}/hello.feature (100%) diff --git a/packages/api/test/hello.feature b/packages/api/features/hello.feature similarity index 100% rename from packages/api/test/hello.feature rename to packages/api/features/hello.feature From 9b4b41afe2e51629d36bb20f32bc8f70bcc669ce Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 3 Jan 2024 14:47:07 -0500 Subject: [PATCH 05/48] Add API step definitions and remove unnecessary code --- packages/api/helpers.js | 144 --------- packages/api/index.js | 105 +------ packages/api/stepDefinitions/api.js | 278 ++++++++++++++++++ .../imports.js} | 0 packages/api/test/steps.js | 1 - 5 files changed, 279 insertions(+), 249 deletions(-) delete mode 100644 packages/api/helpers.js create mode 100644 packages/api/stepDefinitions/api.js rename packages/api/{test/stepImports.js => stepDefinitions/imports.js} (100%) delete mode 100644 packages/api/test/steps.js diff --git a/packages/api/helpers.js b/packages/api/helpers.js deleted file mode 100644 index 2992789..0000000 --- a/packages/api/helpers.js +++ /dev/null @@ -1,144 +0,0 @@ -global.fetch = require('node-fetch') -const FormData = require('form-data') -const fs = require('fs') -const { filltemplate } = require('@ln-maf/core') -const { canAttach, getFilePath } = require('@ln-maf/core') - -function build (value, name) { - if (!this.results) { - this.results = {} - } - if (!this.request) { - this.request = {} - this.request.headers = '{}' - } - this.request[name] = filltemplate(value, this.results) -} - -const b64toBuffer = (b64Data, contentType = '', sliceSize = 512) => { - return Buffer.from(b64Data, 'base64') -} - -async function performRequestFromJSON (request) { - if (request.url) { build.call(this, request.url.replace(/\/$/, ''), 'url') } - if (request.body) { - build.call(this, request.body, 'body') - } - if (request.jsonBody) { - this.request.body = JSON.stringify(request.jsonBody, this.results) - } - if (request.urlEncodedBody) { - let formBody = [] - const details = request.urlEncodedBody - for (const property in details) { - const encodedKey = encodeURIComponent(property) - const encodedValue = encodeURIComponent(details[property]) - formBody.push(encodedKey + '=' + encodedValue) - } - formBody = formBody.join('&') - build.call(this, formBody, 'body') - } - const formBodyMap = function (item) { - switch (item.type) { - case 'file': - return fs.createReadStream(getFilePath(item.fileName, this)) - case 'base64blob': - return b64toBuffer(item.base64blob) - default: - return item - } - } - if (request.headers) { build.call(this, JSON.stringify(request.headers), 'headers') } - if (request.formBody) { - const data = new FormData() - const details = request.formBody - for (const property in details) { - if (Array.isArray(details[property])) { - details[property].map(formBodyMap.bind(this)).forEach(i => { - data.append(property + '[]', i) - }) - } else { - data.append(property, formBodyMap.call(this, details[property])) - } - } - this.request.body = data - } - - if (request.api) { build.call(this, request.api.replace(/^\//, ''), 'api') } - if (request.apiParams) { - let formBody = [] - const details = request.apiParams - for (const property in details) { - const encodedKey = encodeURIComponent(property) - const encodedValue = encodeURIComponent(details[property]) - formBody.push(encodedKey + '=' + encodedValue) - } - formBody = formBody.join('&') - const api = this.request.api ? this.request.api : '' - build.call(this, api + '?' + formBody, 'api') - } - - return await performRequest.call(this, request.method) -} - -async function performRequest (method) { - const request = this.request - if (!request.headers) { - request.headers = {} - } - if (typeof request.headers === 'string') { - request.headers = JSON.parse(request.headers) - } - let additionalParams = {} - if (this.results && this.results.api) { - additionalParams = this.results.api.additionalParams - } - const params = { - method, - headers: request.headers, - body: request.body, - ...additionalParams - } - const items = [request.url] - if (request.api) { - items.push(request.api) - } - const url = items.join('/') - const req = await fetch(url, params) - let text - if (this.results.apiRetrieveType) { - text = await (req[this.results.apiRetrieveType])() - } else if (req.headers.get('content-type') && req.headers.get('content-type').includes('image')) { - text = await req.blob() - try { - if (canAttach.call(this)) { - const tmpBlob = Buffer.from(await text.arrayBuffer()) - this.attach(tmpBlob, 'image/png') - } - } catch (err) { } - } else { - try { - text = await req.text() - text = JSON.parse(text) - } catch (err) { } - } - const headers = await req.headers.raw() - Object.keys(headers).forEach(header => { - headers[header] = headers[header][0] - }) - const res = { - request: { - url, - ...params - }, - ok: req.ok, - status: req.status, - response: text, - headers - } - this.request.headers = null - this.request.body = null - return res -} - -module.exports = { performRequestFromJSON, performRequest, build } diff --git a/packages/api/index.js b/packages/api/index.js index 8be153e..b0f1fd4 100644 --- a/packages/api/index.js +++ b/packages/api/index.js @@ -1,104 +1 @@ -global.fetch = require('node-fetch') -const chai = require('chai') -const assert = chai.assert -const { filltemplate } = require('@ln-maf/core') -const { performJSONObjectTransform, MAFSave, MAFWhen } = require('@ln-maf/core') -const { setDefaultTimeout, Given, Then } = require('@cucumber/cucumber') -const { build, performRequestFromJSON, performRequest } = require('./helpers') - -setDefaultTimeout(15 * 1000) - -Given('url {string}', function (url) { - url = url.replace(/\/$/, '') - build.call(this, url, 'url') -}) -Given('api {string}', function (api) { - api = api.replace(/^\//, '') - build.call(this, api, 'api') -}) - -Given('body {string}', function (request) { - build.call(this, request, 'body') -}) - -Given('headers {string}', function (headers) { - build.call(this, headers, 'headers') -}) - -const performRequestFromJSONString = async function (string) { - const request = JSON.parse(filltemplate(string, this.results)) - return await performRequestFromJSONMAF.call(this, request) -} - -const performRequestFromJSONMAF = async function (request) { - const res = await performRequestFromJSON.call(this, request) - MAFSave.call(this, 'response', res.response) - return res -} - -MAFWhen('api request from {jsonObject} is performed', async function (item) { - item = performJSONObjectTransform.call(this, item) - return await performRequestFromJSONMAF.call(this, item) -}) -MAFWhen('perform api request:', performRequestFromJSONString) -MAFWhen('api request from {jsonObject} is performed with:', async function (reqItem, dataTable) { - dataTable = dataTable.rawTable - const indices = dataTable[0] - let apiItem = [] - indices.forEach((i, index) => { - apiItem[index] = [] - }) - dataTable = dataTable.slice(1) - dataTable.forEach((i) => { - i.forEach((j, index) => { - apiItem[index].push(j) - }) - }) - apiItem = apiItem.map(i => { - if (i.length === 1) { - return i[0] - } - return i - }) - const extraParams = {} - extraParams.results = { ...this.results } - for (let i = 0; i < indices.length; i++) { - // eslint-disable-next-line no-unused-vars - const val = filltemplate(apiItem[i], this.results) - eval(`extraParams.results.${indices[i]} = val`) - } - - const item = performJSONObjectTransform.call(extraParams, reqItem) - return await performRequestFromJSONMAF.call(this, item) -}) - -async function performRequestMAF (method) { - const res = await performRequest.call(this, method) - MAFSave.call(this, 'response', res.response) - return res -} - -MAFWhen('method post', async function () { - return await performRequestMAF.call(this, 'POST') -}) -MAFWhen('method get', async function () { - return await performRequestMAF.call(this, 'GET') -}) -Then('the status is ok', function () { - assert(this.results.lastRun.ok, `The status ${this.results.lastRun.status} was not in the range of valid http response codes 200-299`) -}) -Then('the status is not ok', function () { - assert(!this.results.lastRun.ok, `The status ${this.results.lastRun.status} was in the range of valid http response codes 200-299`) -}) -Then('status not ok', function () { - assert(!this.results.lastRun.ok, `The status ${this.results.lastRun.status} was in the range of valid http response codes 200-299`) -}) -Then('status ok', function () { - assert(this.results.lastRun.ok, `The status ${this.results.lastRun.status} was not in the range of valid http response codes 200-299`) -}) -Then('status {int}', function (int) { - assert(this.results.lastRun.status === int, `The status ${this.results.lastRun.status} was not ${int}`) -}) -Then('the status is {int}', function (int) { - assert(this.results.lastRun.status === int, `The status ${this.results.lastRun.status} was not ${int}`) -}) +require('./stepDefinitions/api.js') diff --git a/packages/api/stepDefinitions/api.js b/packages/api/stepDefinitions/api.js new file mode 100644 index 0000000..670c796 --- /dev/null +++ b/packages/api/stepDefinitions/api.js @@ -0,0 +1,278 @@ +global.fetch = require('node-fetch') +const { MAFWhen, MAFSave, performJSONObjectTransform, filltemplate, canAttach, getFilePath } = require('@ln-maf/core') +const { setDefaultTimeout, Then } = require('@cucumber/cucumber') + +const FormData = require('form-data') +const fs = require('fs') +const assert = require('chai').assert +const { fetchToCurl } = require('fetch-to-curl') + +setDefaultTimeout(15 * 1000) + +// Builds a request object from the given request, populating any missing fields using the results object +async function requestBuilder(request) { + if (!request.url && this.results && this.results.url) { + request.url = this.results.url + } + if (!request.url) { + throw new Error('A url must be provided either in the request or in the results object') + } + + if (!request.headers && this.results && this.results.headers) { + request.headers = this.results.headers + } + if (!request.headers) { + request.headers = {} + } + if (typeof request.headers === 'string') { + request.headers = JSON.parse(request.headers) + } + + if (!request.body && this.results && this.results.body) { + request.body = this.results.body + } + if (!request.jsonBody && this.results && this.results.jsonBody) { + request.jsonBody = this.results.jsonBody + } + if (!request.urlEncodedBody && this.results && this.results.urlEncodedBody) { + request.urlEncodedBody = this.results.urlEncodedBody + } + if (request.urlEncodedBody) { + const formBody = [] + const details = request.urlEncodedBody + for (const property in details) { + const encodedKey = encodeURIComponent(property) + const encodedValue = encodeURIComponent(details[property]) + formBody.push(encodedKey + '=' + encodedValue) + } + request.formBody = formBody.join('&') + } + const formBodyMap = function (item) { + switch (item.type) { + case 'file': + return fs.createReadStream(getFilePath(item.fileName, this)) + case 'base64blob': + return Buffer.from(item.base64blob, 'base64') + default: + return item + } + } + if (request.formBody) { + const data = new FormData() + const details = request.formBody + for (const property in details) { + if (Array.isArray(details[property])) { + details[property].map(formBodyMap.bind(this)).forEach(i => { + data.append(property + '[]', i) + }) + } else { + data.append(property, formBodyMap.call(this, details[property])) + } + } + this.request.body = data + } + + if (!request.method && this.results && this.results.method) { + request.method = this.results.method + } + + if (!request.api && this.results && this.results.api) { + request.api = this.results.api + } + if (!request.apiParams && this.results && this.results.apiParams) { + request.apiParams = this.results.apiParams + } + if (request.apiParams) { + let formBody = [] + const details = request.apiParams + for (const property in details) { + const encodedKey = encodeURIComponent(property) + const encodedValue = encodeURIComponent(details[property]) + formBody.push(encodedKey + '=' + encodedValue) + } + formBody = formBody.join('&') + const api = this.request.api ? this.request.api : '' + MAFSave.call(this, 'api', api + '?' + formBody) + } + let additionalParams = {} + if (this.results && this.results.api) { + additionalParams = this.results.api.additionalParams + } + return await performRequest.call(this, request, additionalParams) +} + +// Performs the given request, returning the response +async function performRequest(request, additionalParams = {}) { + const params = { + method: request.method, + headers: request.headers, + body: request.body, + ...additionalParams + } + const url = [request.url] + if (request.api) { + url.push(request.api) + } + const absoluteUrl = url.join('/') + const req = await fetch(absoluteUrl, params) + const curlCommand = fetchToCurl(absoluteUrl, params) + let text + if (this.results.apiRetrieveType) { + text = await (req[this.results.apiRetrieveType])() + } else if (req.headers.get('content-type') && req.headers.get('content-type').includes('image')) { + text = await req.blob() + try { + if (canAttach.call(this)) { + const tmpBlob = Buffer.from(await text.arrayBuffer()) + this.attach(tmpBlob, 'image/png') + } + } catch (err) { } + } else { + try { + text = await req.text() + text = JSON.parse(text) + } catch (err) { } + } + const headers = await req.headers.raw() + Object.keys(headers).forEach(header => { + headers[header] = headers[header][0] + }) + const res = { + request: { + absoluteUrl, + ...params + }, + curlCommand, + ok: req.ok, + status: req.status, + response: text, + headers + } + return res +} + +/** + * @deprecated Set the item 'url' instead + */ +MAFWhen('url {string}', function (url) { + filltemplate(url, this.results) + // Remove trailing slash + url = url.replace(/\/$/, '') + MAFSave.call(this, 'url', url) +}) + +/** + * @deprecated Set the item 'api' instead + */ +MAFWhen('api {string}', function (api) { + filltemplate(api, this.results) + // Remove leading slash + api = api.replace(/^\//, '') + MAFSave.call(this, 'api', api) +}) + +/** + * @deprecated Set the item 'body' instead + */ +MAFWhen('body {string}', function (body) { + filltemplate(body, this.results) + MAFSave.call(this, 'body', body) +}) + +/** + * @deprecated Set the item 'headers' instead + */ +MAFWhen('headers {string}', function (headers) { + filltemplate(headers, this.results) + MAFSave.call(this, 'headers', headers) +}) + +/** + * @deprecated Set the item 'method' instead + */ +MAFWhen('method post', async function () { + MAFSave.call(this, 'method', 'POST') +}) + +/** + * @deprecated Set the item 'method' instead + */ +MAFWhen('method get', async function () { + MAFSave.call(this, 'method', 'GET') +}) + +MAFWhen('api request from {jsonObject} is performed', async function (request) { + request = performJSONObjectTransform.call(this, request) + const results = await requestBuilder.call(this, request) + MAFSave.call(this, 'response', results.response) + return results +}) + +MAFWhen('perform api request:', async function (string) { + const request = JSON.parse(filltemplate(string, this.results)) + const results = await requestBuilder.call(this, request) + MAFSave.call(this, 'response', results.response) + return results +}) + +MAFWhen('api request from {jsonObject} is performed with:', async function (reqItem, dataTable) { + dataTable = dataTable.rawTable + const indices = dataTable[0] + let apiItem = [] + indices.forEach((i, index) => { + apiItem[index] = [] + }) + dataTable = dataTable.slice(1) + dataTable.forEach((i) => { + i.forEach((j, index) => { + apiItem[index].push(j) + }) + }) + apiItem = apiItem.map(i => { + if (i.length === 1) { + return i[0] + } + return i + }) + const extraParams = {} + extraParams.results = { ...this.results } + for (let i = 0; i < indices.length; i++) { + // eslint-disable-next-line no-unused-vars + const val = filltemplate(apiItem[i], this.results) + // eslint-disable-next-line no-eval + eval(`extraParams.results.${indices[i]} = val`) + } + const request = performJSONObjectTransform.call(extraParams, reqItem) + const results = await requestBuilder.call(this, request) + MAFSave.call(this, 'response', results.response) + return results +}) + +/** + * @deprecated Use the status is ok, the status is {int} or the status is not ok instead +*/ +Then('status not ok', function () { + assert(!this.results.lastRun.ok, `The status ${this.results.lastRun.status} was in the range of valid http response codes 200-299`) +}) +/** + * @deprecated Use the status is ok, the status is {int} or the status is not ok instead +*/ +Then('status ok', function () { + assert(this.results.lastRun.ok, `The status ${this.results.lastRun.status} was not in the range of valid http response codes 200-299`) +}) +Then('the status is ok', function () { + assert(this.results.lastRun.ok, `The status ${this.results.lastRun.status} was not in the range of valid http response codes 200-299`) +}) +Then('the status is not ok', function () { + assert(!this.results.lastRun.ok, `The status ${this.results.lastRun.status} was in the range of valid http response codes 200-299`) +}) + +/** + * @deprecated Use the status is ok, the status is {int} or the status is not ok instead + */ +Then('status {int}', function (int) { + assert(this.results.lastRun.status === int, `The status ${this.results.lastRun.status} was not ${int}`) +}) +Then('the status is {int}', function (int) { + assert(this.results.lastRun.status === int, `The status ${this.results.lastRun.status} was not ${int}`) +}) diff --git a/packages/api/test/stepImports.js b/packages/api/stepDefinitions/imports.js similarity index 100% rename from packages/api/test/stepImports.js rename to packages/api/stepDefinitions/imports.js diff --git a/packages/api/test/steps.js b/packages/api/test/steps.js deleted file mode 100644 index 618783a..0000000 --- a/packages/api/test/steps.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=require('../index') From 79a777edf49e87cfabbad5394a4bb6d165bf23c1 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 3 Jan 2024 14:47:14 -0500 Subject: [PATCH 06/48] Add feature file for API GET requests --- packages/api/features/getRequests.feature | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 packages/api/features/getRequests.feature diff --git a/packages/api/features/getRequests.feature b/packages/api/features/getRequests.feature new file mode 100644 index 0000000..1ba5cf7 --- /dev/null +++ b/packages/api/features/getRequests.feature @@ -0,0 +1,18 @@ +Feature: API - GET Requests + + Tesing GET requests to different apis and endpoints + + Scenario: GET request to a single resource + When perform api request: + """ + { + "url": "http://google.com", + "api": "/maps", + "method": "GET", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded" + } + } + """ + Then the status is 200 \ No newline at end of file From 58d821115ac14a3917fd4a048d05b52ca3d0749f Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 3 Jan 2024 14:48:12 -0500 Subject: [PATCH 07/48] Update MAF package.json version to 3.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c691e49..660ba3e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ln-maf", "private": true, - "version": "2.0.0", + "version": "3.0.0", "description": "Modular Automation Framework", "main": "index.js", "prepare": "cd packages && node createAutoComplete.js", From 32f19797d1df54679afcb61eee79ff09485ecd8c Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 3 Jan 2024 15:28:24 -0500 Subject: [PATCH 08/48] Fixed urlEncoded parameters --- packages/api/features/getRequests.feature | 18 --- packages/api/features/requests.feature | 55 +++++++++ packages/api/stepDefinitions/api.js | 135 +++++++++++----------- 3 files changed, 124 insertions(+), 84 deletions(-) delete mode 100644 packages/api/features/getRequests.feature create mode 100644 packages/api/features/requests.feature diff --git a/packages/api/features/getRequests.feature b/packages/api/features/getRequests.feature deleted file mode 100644 index 1ba5cf7..0000000 --- a/packages/api/features/getRequests.feature +++ /dev/null @@ -1,18 +0,0 @@ -Feature: API - GET Requests - - Tesing GET requests to different apis and endpoints - - Scenario: GET request to a single resource - When perform api request: - """ - { - "url": "http://google.com", - "api": "/maps", - "method": "GET", - "headers": { - "Accept": "application/json", - "Content-Type": "application/x-www-form-urlencoded" - } - } - """ - Then the status is 200 \ No newline at end of file diff --git a/packages/api/features/requests.feature b/packages/api/features/requests.feature new file mode 100644 index 0000000..bd5b137 --- /dev/null +++ b/packages/api/features/requests.feature @@ -0,0 +1,55 @@ +Feature: API - Requests + + Tesing GET requests to different apis and endpoints + + Scenario: GET request to a single resource + When perform api request: + """ + { + "url": "https://httpbin.org", + "api": "/get", + "method": "GET", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded" + } + } + """ + Then the status is 200 + + Scenario: POST request to a single resource + When perform api request: + """ + { + "url": "http://httpbin.org", + "api": "/post", + "method": "POST", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded" + }, + "body": { + "name": "John Doe", + "age": 30 + } + } + """ + Then the status is 200 + + Scenario: POST - urlEncodedBody + When perform api request: + """ + { + "url": "http://httpbin.org", + "api": "/post", + "method": "POST", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded" + }, + "urlEncodedBody": { + "hello": "THERE" + } + } + """ + Then the status is 200 \ No newline at end of file diff --git a/packages/api/stepDefinitions/api.js b/packages/api/stepDefinitions/api.js index 670c796..988b3fa 100644 --- a/packages/api/stepDefinitions/api.js +++ b/packages/api/stepDefinitions/api.js @@ -9,6 +9,56 @@ const { fetchToCurl } = require('fetch-to-curl') setDefaultTimeout(15 * 1000) +/** + * @deprecated Set the item 'url' instead + */ +MAFWhen('url {string}', function (url) { + filltemplate(url, this.results) + // Remove trailing slash + url = url.replace(/\/$/, '') + MAFSave.call(this, 'url', url) +}) + +/** + * @deprecated Set the item 'api' instead + */ +MAFWhen('api {string}', function (api) { + filltemplate(api, this.results) + // Remove leading slash + api = api.replace(/^\//, '') + MAFSave.call(this, 'api', api) +}) + +/** + * @deprecated Set the item 'body' instead + */ +MAFWhen('body {string}', function (body) { + filltemplate(body, this.results) + MAFSave.call(this, 'body', body) +}) + +/** + * @deprecated Set the item 'headers' instead + */ +MAFWhen('headers {string}', function (headers) { + filltemplate(headers, this.results) + MAFSave.call(this, 'headers', headers) +}) + +/** + * @deprecated Set the item 'method' instead + */ +MAFWhen('method post', async function () { + MAFSave.call(this, 'method', 'POST') +}) + +/** + * @deprecated Set the item 'method' instead + */ +MAFWhen('method get', async function () { + MAFSave.call(this, 'method', 'GET') +}) + // Builds a request object from the given request, populating any missing fields using the results object async function requestBuilder(request) { if (!request.url && this.results && this.results.url) { @@ -17,6 +67,7 @@ async function requestBuilder(request) { if (!request.url) { throw new Error('A url must be provided either in the request or in the results object') } + request.url = request.url.replace(/\/$/, '') if (!request.headers && this.results && this.results.headers) { request.headers = this.results.headers @@ -38,14 +89,14 @@ async function requestBuilder(request) { request.urlEncodedBody = this.results.urlEncodedBody } if (request.urlEncodedBody) { - const formBody = [] + const urlEncodedBody = [] const details = request.urlEncodedBody for (const property in details) { const encodedKey = encodeURIComponent(property) const encodedValue = encodeURIComponent(details[property]) - formBody.push(encodedKey + '=' + encodedValue) + urlEncodedBody.push(encodedKey + '=' + encodedValue) } - request.formBody = formBody.join('&') + request.api = request.api + '?' + urlEncodedBody.join('&') } const formBodyMap = function (item) { switch (item.type) { @@ -69,7 +120,7 @@ async function requestBuilder(request) { data.append(property, formBodyMap.call(this, details[property])) } } - this.request.body = data + request.body = data } if (!request.method && this.results && this.results.method) { @@ -79,6 +130,9 @@ async function requestBuilder(request) { if (!request.api && this.results && this.results.api) { request.api = this.results.api } + if (request.api) { + request.api = request.api.replace(/^\//, '') + } if (!request.apiParams && this.results && this.results.apiParams) { request.apiParams = this.results.apiParams } @@ -91,8 +145,7 @@ async function requestBuilder(request) { formBody.push(encodedKey + '=' + encodedValue) } formBody = formBody.join('&') - const api = this.request.api ? this.request.api : '' - MAFSave.call(this, 'api', api + '?' + formBody) + request.api = request.api + '?' + formBody } let additionalParams = {} if (this.results && this.results.api) { @@ -114,13 +167,13 @@ async function performRequest(request, additionalParams = {}) { url.push(request.api) } const absoluteUrl = url.join('/') - const req = await fetch(absoluteUrl, params) + const response = await fetch(absoluteUrl, params) const curlCommand = fetchToCurl(absoluteUrl, params) let text if (this.results.apiRetrieveType) { - text = await (req[this.results.apiRetrieveType])() - } else if (req.headers.get('content-type') && req.headers.get('content-type').includes('image')) { - text = await req.blob() + text = await (response[this.results.apiRetrieveType])() + } else if (response.headers.get('content-type') && response.headers.get('content-type').includes('image')) { + text = await response.blob() try { if (canAttach.call(this)) { const tmpBlob = Buffer.from(await text.arrayBuffer()) @@ -129,78 +182,28 @@ async function performRequest(request, additionalParams = {}) { } catch (err) { } } else { try { - text = await req.text() + text = await response.text() text = JSON.parse(text) } catch (err) { } } - const headers = await req.headers.raw() + const headers = await response.headers.raw() Object.keys(headers).forEach(header => { headers[header] = headers[header][0] }) - const res = { + const results = { request: { absoluteUrl, ...params }, curlCommand, - ok: req.ok, - status: req.status, + ok: response.ok, + status: response.status, response: text, headers } - return res + return results } -/** - * @deprecated Set the item 'url' instead - */ -MAFWhen('url {string}', function (url) { - filltemplate(url, this.results) - // Remove trailing slash - url = url.replace(/\/$/, '') - MAFSave.call(this, 'url', url) -}) - -/** - * @deprecated Set the item 'api' instead - */ -MAFWhen('api {string}', function (api) { - filltemplate(api, this.results) - // Remove leading slash - api = api.replace(/^\//, '') - MAFSave.call(this, 'api', api) -}) - -/** - * @deprecated Set the item 'body' instead - */ -MAFWhen('body {string}', function (body) { - filltemplate(body, this.results) - MAFSave.call(this, 'body', body) -}) - -/** - * @deprecated Set the item 'headers' instead - */ -MAFWhen('headers {string}', function (headers) { - filltemplate(headers, this.results) - MAFSave.call(this, 'headers', headers) -}) - -/** - * @deprecated Set the item 'method' instead - */ -MAFWhen('method post', async function () { - MAFSave.call(this, 'method', 'POST') -}) - -/** - * @deprecated Set the item 'method' instead - */ -MAFWhen('method get', async function () { - MAFSave.call(this, 'method', 'GET') -}) - MAFWhen('api request from {jsonObject} is performed', async function (request) { request = performJSONObjectTransform.call(this, request) const results = await requestBuilder.call(this, request) From 08bfd8c54ff472b748546ad218449ceb42cf79d7 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 3 Jan 2024 15:36:58 -0500 Subject: [PATCH 09/48] fix vscode autocomplete --- .vscode/settings.json | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 191bf66..9b3baf3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,14 +2,22 @@ "cucumberautocomplete.stepsInvariants": true, "cucumberautocomplete.smartSnippets": true, "cucumberautocomplete.steps": [ + "packages/**/stepDefinitions/*.js", + "packages/**/index.js", "packages/**/autoComplete.js" ], "cucumberautocomplete.customParameters": [ { "parameter": "{jsonObject}", - "value": "(it|item {string}|file {string}|{string})" + "value": "\\S+\\s?\\S+" + }, + { + "parameter": "{validationsEquivalence}", + "value": "(<|<=|>|>=|=)" } ], - "cucumberautocomplete.syncfeatures": "features/**feature", - "cucumberautocomplete.strictGherkinCompletion": true -} + "cucumberautocomplete.syncfeatures": "packages/**/features/**feature", + "cucumberautocomplete.strictGherkinCompletion": false, + "cucumberautocomplete.strictGherkinValidation": false, + "cucumberautocomplete.gherkinDefinitionPart": "(Given|When|Then|MAFWhen)" +} \ No newline at end of file From 397d75b3de15d5d2f68bff36d342c1d0677f59c5 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 4 Jan 2024 10:51:25 -0500 Subject: [PATCH 10/48] Update API module documentation --- packages/api/README.md | 148 +++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 93 deletions(-) diff --git a/packages/api/README.md b/packages/api/README.md index 09d90f5..0a1c758 100644 --- a/packages/api/README.md +++ b/packages/api/README.md @@ -1,9 +1,8 @@ -# API Cucumber Steps +# MAF - API Module This module is created to allow other projects to easily perform API requests, utilizing a set of steps. [![npm package][npm-image]][npm-url] [![GitHub Actions](https://github.com/hpcc-systems/MAF/workflows/Build/badge.svg)](https://github.com/hpcc-systems/MAF/actions) -[![Dependencies][dep-image]][dep-url] ## Set up 1. Install by running `npm i @ln-maf/api` @@ -13,19 +12,36 @@ This module is created to allow other projects to easily perform API requests, u require('@ln-maf/api') ``` +## Global MAF API Variables + +- url: The url to use for the api request. Should be a string including the protocol. ex: 'https://google.com' +- api: The api to use for the api request. Should be a string. ex: 'driver/users/1' +- body: The body to use for the api request. Should be a string. +- jsonBody: The json body to use for the api request. It must be in a valid JSON object format +- urlEncodedBody: The url encoded body to use for the api request. It will be appended to the url +- headers: The headers to use for the api request. Should be a JSON object +- method: The method to use for the api request. Should be a string. ex: 'GET', 'POST', 'PUT', 'DELETE' + # Step Definitions -This library implements some step definitions and adheres to the global cucumber implementation for various internals. ## `Given url {string}` +Deprecated: Set the item 'url' instead + Assigns a string to the url item ## `Given api {string}` +Deprecated: Set the item 'api' instead + Assigns a string to the api item ## `Given body {string}` +Deprecated: Set the item 'body' instead + Defines the body for a given request ## `Given headers {string}` +Deprecated: Set the item 'headers' instead + Takes a string of headers. These should represent a json object. ## `When api request from `[{jsonObject}](../validations/JSONObject.md)` is performed` @@ -40,46 +56,35 @@ Performs a request based on the json file and given values. An example json fil "Content-Type": "application/json", "X-AliasRequired": false }, - "jsonBody": { + "body": { "clientNumber" : "111", "email": "1@1.com" "mobilePhone":"1" } } ``` -Additionally, you can provide variables in the template literal form which would take from variables that have been set. -The body parameters that are accepted are: -``` -"body": "Expects Text" -"jsonBody": { "expects": "jsonObject"} -"urlEncodedBody": { "expects": "jsonObject"} -``` -The headers parameter expects a json object and the method is required. It accepts any http method. +After the request is performed, the results will be stored in `${lastRun}` consistent with the global cucumber testing standard, and in `${response}`. +This can be accessed in other tests following this standard with the template literal `${lastRun}` or `${response}`. -After the request is performed, the results will be stored in `this.results.lastRun`, consistent with the global cucumber testing standard. -This can be accessed in other tests following this standard with the template literal `${lastRun}` +## `When api request is performed` +Performs a request based on the global variables set. The global variables are listed above. -Additionally, the response will be stored as `this.results.response` as well to allow easier access to the response directly. +## `When perform api request: {docString}` +Performs using a doc string instead of a file. Please see `When api request {string} is performed` -The api form also support apiParams to allow you to pass a json object in as a url encoded api request. -An example would be: +Example: ``` -{ - "api": "/driver/user/${userID}/stats", - "apiParams": { - "nocache": "1579901950296", - "stats": "1,2,5,6" - }, - "headers": { - "accept": "application/json", - "accept-language": "en-US,en;q=0.9,es;q=0.8", - "authorization": "Bearer ${a_t}", - "content-type": "application/json;charset=UTF-8" - }, +When perform api request: +""" +{ + "url" : "http://google.com", "method": "GET" } +""" ``` + + ### How to perform a multi-part request The request supports and additional body type of: formBody. This supports arrays(untested) and will append it to element + []. As of now the only portion of this that is tested and is not included in this CI is the file. Hopefully this will be tested in more detail soon. @@ -127,83 +132,40 @@ An example would be: } ``` -## `When perform api request: {docString}` -Performs using a doc string instead of a file. Please see `When api request {string} is performed` - -Example: -``` -When perform api request: -""" -{ - "url" : "http://google.com", - "method": "GET" -} -""" -``` +## `When method post` +Deprecated: Set the item 'method' to 'POST' and call the method 'api request is performed' instead -## `When api request from `[{jsonObject}](../validations/JSONObject.md)` is performed with: {dataTable}` -Performs an api request using a json file. `dataTable` contains the values that are replaced within the request. This will assign the variables in dataTable globally. +Performs a post using the defined values listed above and stores the result in `this.results.lastRun` which can be accessed with `${lastRun}` -Example: -Assuming badge.json is: -``` -{ - "api": "/user/${userID}/badges", - "headers": { - "accept": "application/json", - "accept-language": "en-US,en;q=0.9,es;q=0.8", - "authorization": "Bearer ${a_t}", - "content-type": "application/json;charset=UTF-8", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin" - }, - "body": null, - "method": "GET" -} -``` -Then the "${userID}" would be replaced with 123456 in the below. -``` -When api request "badge.json" is performed with: - |userID| - |123456| -``` +## `When method get` +Deprecated: Set the item 'method' to 'GET' and call the method 'api request is performed' instead -## `When api request from item {string} is performed` -Performs an api request using an existing item. +Performs a post using the defined values listed above and stores the result in `this.results.lastRun` which can be accessed with `${lastRun}` -``` -When set "testConfig" to: -""" - { - "url":"http://google.com", - "method": "GET" - } -""" -And api request from item "testConfig" is performed -``` +## `Then the status is ok` +Makes sure that `response.status` is between 200 and 299. -## `When method post` -Performs a post using the defined values listed above and stores the result in `this.results.lastRun` which can be accessed with `${lastRun}` +## `Then status ok` +Deprecated: Use the status is ok, the status is {int} or the status is not ok instead -## `When method get` -Performs a post using the defined values listed above and stores the result in `this.results.lastRun` which can be accessed with `${lastRun}` +Makes sure that `response` is between 200 and 299. ## `Then the status is not ok` -Makes sure that `this.results.lastRun.status` is not between 200 and 299. +Makes sure that `response.status` is not between 200 and 299. ## `Then status not ok` -Makes sure that `this.results.lastRun.status` is not between 200 and 299. +Deprecated: Use the status is ok, the status is {int} or the status is not ok instead -## `Then the status is ok` -Makes sure that `this.results.lastRun.status` is between 200 and 299. +Makes sure that `response.status` is not between 200 and 299. -## `Then status ok` -Makes sure that `this.results.lastRun` is between 200 and 299. + +## `Then the status is {int}` +Makes sure that `response.status` is equal to the integer specified. ## `Then status {int}` -Makes sure that `this.results.lastRun.status` is equal to the integer specified. +Deprecated: Use the status is ok, the status is {int} or the status is not ok instead + +Makes sure that `response.status` is equal to the integer specified. [npm-image]:https://img.shields.io/npm/v/@ln-maf/api.svg -[npm-url]:https://www.npmjs.com/package/@ln-maf/api -[dep-image]:https://david-dm.org/hpcc-systems/MAF.svg?path=packages%2Fapi -[dep-url]:https://david-dm.org/hpcc-systems/MAF?path=packages%2Fapi \ No newline at end of file +[npm-url]:https://www.npmjs.com/package/@ln-maf/api \ No newline at end of file From a90f6ce21da12a04d1edcda34217b9b26e995fa8 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 4 Jan 2024 10:51:37 -0500 Subject: [PATCH 11/48] Refactor API request scenarios and update URLs --- packages/api/features/hello.feature | 152 ------------------------- packages/api/features/requests.feature | 39 ++++--- packages/api/stepDefinitions/api.js | 98 ++++++++-------- 3 files changed, 71 insertions(+), 218 deletions(-) delete mode 100644 packages/api/features/hello.feature diff --git a/packages/api/features/hello.feature b/packages/api/features/hello.feature deleted file mode 100644 index 8cdb694..0000000 --- a/packages/api/features/hello.feature +++ /dev/null @@ -1,152 +0,0 @@ -Feature: API - Test the basic items in api - Background: - When set "directory" to "./test" - - Scenario: Use individual methods - Given set "url" to "https://google.com" - Given url "${url}" - And headers '{"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36" }' - When method get - Then status ok - Then the status is ok - And set "attach" to "false" - And set "apiRetrieveType" to "text" - When method get - And the status is 200 - And set "attach" to "true" - And status 200 - Given body "Hello Google" - When method post - Then status not ok - Then the status is not ok - - Scenario: Test Blobber - When api request from file "tryB64Post.json" is performed - Then it is written to file "response.txt" - - Scenario: quick get Google - When set "api" to: - """ - { - "additionalParams": { - "redirect: "manual" - } - } - """ - And set "bla" to item "api.additionalParams" - When perform api request: - """ - { - "headers": { "a": "header" }, - "url": "https://google.com", - "apiParams": { "hello":"THERE" }, - "method": "GET" - } - """ - Then status ok - When perform api request: - """ - { - "headers": { "a": "header" }, - "url": "https://google.com", - "api": "hello", - "apiParams": { "hello":"THERE" }, - "method": "GET" - } - """ - Then status not ok - Scenario: quick post Google - When perform api request: - """ - { - "headers": { "a": "header" }, - "url": "https://google.com", - "urlEncodedBody": { "hello":"THERE" }, - "method": "POST" - } - """ - Then status not ok - Scenario: quick post Google - When perform api request: - """ - { - "url": "https://google.com", - "body": "NOPE", - "method": "POST" - } - """ - Then status not ok - - Scenario: Get Google - When set "req" to: - """ - { - "url": "https://google.com", - "method": "GET" - } - """ - When perform api request: - """ - ${req} - """ - Then status ok - When api request from item "req" is performed - - Scenario: Get an image using api no attach - Given set "attach" to "false" - Given url "https://cucumber.io" - And api "img/cucumber-school-logo.png" - When method get - Then status ok - And blob item "response" is written to file "image2.png" - And blob item "response" is attached - Scenario: Get an image using api - Given url "https://cucumber.io" - And api "img/cucumber-school-logo.png" - When method get - Then status ok - And blob item "response" is written to file "image2.png" - And blob item "response" is attached - Scenario: Get an image - When set: - |url| - |cucumber.io| - When set "req" to: - """ - { - "url": "https://${url}", - "api": "img/cucumber-school-logo.png", - "method": "GET" - } - """ - When api request from item "req" is performed - And blob item "response" is written to file "image2.png" - And blob item "response" is attached - - Scenario: Get a token - And set "version" to "v3" - When set "request" to: - """ - { - "url": "https://run.mocky.io", - "api": "${version}/d2bc61bc-bdf1-418b-a4d5-dc1b70c86861", - "method": "GET" - } - """ - When perform api request: - """ - ${request} - """ - And set "token" to item "response.token" - And set "authorization" to "Auth ${token}" - When api request from file "apiReq.json" is performed - Then status ok - When api request from file "apiReq.json" is performed with: - | version | - | v2 | - Then status not ok - When api request from file "apiReq.json" is performed with: - | version | - | v3 | - | v2 | - Then status not ok diff --git a/packages/api/features/requests.feature b/packages/api/features/requests.feature index bd5b137..ac9e55c 100644 --- a/packages/api/features/requests.feature +++ b/packages/api/features/requests.feature @@ -1,8 +1,7 @@ Feature: API - Requests - Tesing GET requests to different apis and endpoints - Scenario: GET request to a single resource + Scenario: GET - httpbin.org When perform api request: """ { @@ -10,38 +9,39 @@ Feature: API - Requests "api": "/get", "method": "GET", "headers": { - "Accept": "application/json", - "Content-Type": "application/x-www-form-urlencoded" + "Accept": "application/json" } } """ Then the status is 200 - Scenario: POST request to a single resource - When perform api request: + Scenario: POST - JSON - ptsv3.com + Given set "requestJSON" to: """ { - "url": "http://httpbin.org", - "api": "/post", + "url": "http://ptsv3.com/", + "api": "t/1231/post/json/", "method": "POST", "headers": { - "Accept": "application/json", - "Content-Type": "application/x-www-form-urlencoded" + "Accept": "application/json" }, - "body": { + "jsonBody": { "name": "John Doe", "age": 30 } } """ + When api request from item 'requestJSON' is performed Then the status is 200 + And '${response.name}' is equal to 'John Doe' + And '${response.age}' is equal to '30' - Scenario: POST - urlEncodedBody + Scenario: POST - URLEncodedBody - ptsv3.com When perform api request: """ { - "url": "http://httpbin.org", - "api": "/post", + "url": "http://ptsv3.com/", + "api": "t/1231/post/json/", "method": "POST", "headers": { "Accept": "application/json", @@ -52,4 +52,13 @@ Feature: API - Requests } } """ - Then the status is 200 \ No newline at end of file + Then the status is 200 + + Scenario: GET - Image + Given set 'url' to 'https://cucumber.io' + And set 'api' to 'img/cucumber-school-logo.png' + And set 'method' to 'GET' + When api request is performed + Then the status is ok + And blob item "response" is written to file "image2.png" + And blob item "response" is attached \ No newline at end of file diff --git a/packages/api/stepDefinitions/api.js b/packages/api/stepDefinitions/api.js index 988b3fa..de431b5 100644 --- a/packages/api/stepDefinitions/api.js +++ b/packages/api/stepDefinitions/api.js @@ -46,17 +46,19 @@ MAFWhen('headers {string}', function (headers) { }) /** - * @deprecated Set the item 'method' instead + * @deprecated Set the item 'method' to 'POST' and call the method 'api request is performed' instead */ MAFWhen('method post', async function () { MAFSave.call(this, 'method', 'POST') + return await requestBuilder.call(this, {}) }) /** - * @deprecated Set the item 'method' instead + * @deprecated Set the item 'method' to 'GET' and call the method 'api request is performed' instead */ MAFWhen('method get', async function () { MAFSave.call(this, 'method', 'GET') + return await requestBuilder.call(this, {}) }) // Builds a request object from the given request, populating any missing fields using the results object @@ -85,6 +87,18 @@ async function requestBuilder(request) { if (!request.jsonBody && this.results && this.results.jsonBody) { request.jsonBody = this.results.jsonBody } + if (request.jsonBody && typeof request.jsonBody !== 'object') { + try { + request.jsonBody = JSON.parse(request.jsonBody) + } catch (err) { + throw new Error('The jsonBody could not be parsed as a JSON object') + } + } + // jsonBody has priority over body + if (request.jsonBody) { + request.body = request.jsonBody + } + if (!request.urlEncodedBody && this.results && this.results.urlEncodedBody) { request.urlEncodedBody = this.results.urlEncodedBody } @@ -126,6 +140,9 @@ async function requestBuilder(request) { if (!request.method && this.results && this.results.method) { request.method = this.results.method } + if (!request.method) { + throw new Error('A method must be provided either in the request or in the results object') + } if (!request.api && this.results && this.results.api) { request.api = this.results.api @@ -156,7 +173,10 @@ async function requestBuilder(request) { // Performs the given request, returning the response async function performRequest(request, additionalParams = {}) { - const params = { + if (typeof request.body === 'object') { + request.body = JSON.stringify(request.body) + } + const parameters = { method: request.method, headers: request.headers, body: request.body, @@ -167,38 +187,41 @@ async function performRequest(request, additionalParams = {}) { url.push(request.api) } const absoluteUrl = url.join('/') - const response = await fetch(absoluteUrl, params) - const curlCommand = fetchToCurl(absoluteUrl, params) - let text + + let response = await fetch(absoluteUrl, parameters) + const curlCommand = fetchToCurl(absoluteUrl, parameters) + + const headers = await response.clone().headers.raw() + Object.keys(headers).forEach(header => { + headers[header] = headers[header][0] + }) + const ok = response.ok + const status = response.status if (this.results.apiRetrieveType) { - text = await (response[this.results.apiRetrieveType])() - } else if (response.headers.get('content-type') && response.headers.get('content-type').includes('image')) { - text = await response.blob() + response = await (response[this.results.apiRetrieveType])() + } else if (headers['content-type'] && headers['content-type'].includes('image')) { + response = await response.blob() try { if (canAttach.call(this)) { - const tmpBlob = Buffer.from(await text.arrayBuffer()) + const tmpBlob = Buffer.from(await response.arrayBuffer()) this.attach(tmpBlob, 'image/png') } } catch (err) { } } else { try { - text = await response.text() - text = JSON.parse(text) + response = await response.text() + response = JSON.parse(response) } catch (err) { } } - const headers = await response.headers.raw() - Object.keys(headers).forEach(header => { - headers[header] = headers[header][0] - }) const results = { request: { absoluteUrl, - ...params + ...parameters }, curlCommand, - ok: response.ok, - status: response.status, - response: text, + ok, + status, + response, headers } return results @@ -211,41 +234,14 @@ MAFWhen('api request from {jsonObject} is performed', async function (request) { return results }) -MAFWhen('perform api request:', async function (string) { - const request = JSON.parse(filltemplate(string, this.results)) - const results = await requestBuilder.call(this, request) +MAFWhen('api request is performed', async function () { + const results = await requestBuilder.call(this, {}) MAFSave.call(this, 'response', results.response) return results }) -MAFWhen('api request from {jsonObject} is performed with:', async function (reqItem, dataTable) { - dataTable = dataTable.rawTable - const indices = dataTable[0] - let apiItem = [] - indices.forEach((i, index) => { - apiItem[index] = [] - }) - dataTable = dataTable.slice(1) - dataTable.forEach((i) => { - i.forEach((j, index) => { - apiItem[index].push(j) - }) - }) - apiItem = apiItem.map(i => { - if (i.length === 1) { - return i[0] - } - return i - }) - const extraParams = {} - extraParams.results = { ...this.results } - for (let i = 0; i < indices.length; i++) { - // eslint-disable-next-line no-unused-vars - const val = filltemplate(apiItem[i], this.results) - // eslint-disable-next-line no-eval - eval(`extraParams.results.${indices[i]} = val`) - } - const request = performJSONObjectTransform.call(extraParams, reqItem) +MAFWhen('perform api request:', async function (string) { + const request = JSON.parse(filltemplate(string, this.results)) const results = await requestBuilder.call(this, request) MAFSave.call(this, 'response', results.response) return results From 83ad75d56ec237f7507995396936ca718e402124 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 4 Jan 2024 10:55:02 -0500 Subject: [PATCH 12/48] Delete unnecessary files --- packages/api/CHANGELOG.md | 31 ------------------------------- packages/api/runFeature.sh | 9 --------- packages/api/test/apiReq.json | 5 ----- packages/api/test/hello.txt | 1 - packages/api/test/helloWorld.json | 6 ------ packages/api/test/tryB64Post.json | 20 -------------------- 6 files changed, 72 deletions(-) delete mode 100644 packages/api/CHANGELOG.md delete mode 100644 packages/api/runFeature.sh delete mode 100644 packages/api/test/apiReq.json delete mode 100644 packages/api/test/hello.txt delete mode 100644 packages/api/test/helloWorld.json delete mode 100644 packages/api/test/tryB64Post.json diff --git a/packages/api/CHANGELOG.md b/packages/api/CHANGELOG.md deleted file mode 100644 index 2ac7eaf..0000000 --- a/packages/api/CHANGELOG.md +++ /dev/null @@ -1,31 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased in Git] - -## [1.2.0] (2020-02-03) -### Added -* Fixes for multiple areas of the app based on adding more code coverage -* Git statuses -* Changelog - -* Created a preprocessor package to allow injection of Gherkin within feature files. - -* API package for api requests -* SQL package for sql commands -* Validations package for performing processing. - -## [1.2.1] (2020-02-03) -### Added - * Fixes for set examples, there was an issue when a background step was included - * Add .npmignore - * Adding in eslint - * Multiple bug fixes due to issues found by eslint - -## [1.3.0] (2020-02-05) -### Added - * Added in AWS testing for S3, DynamoDB, SQS, Lambda (not tested yet). - * Is able to run on localstack but uses the portmap due to some configurability issues with SQS. diff --git a/packages/api/runFeature.sh b/packages/api/runFeature.sh deleted file mode 100644 index 6f8f665..0000000 --- a/packages/api/runFeature.sh +++ /dev/null @@ -1,9 +0,0 @@ -mkdir -p test/report -if [[ "$ENVIRONMENT" == "COVERAGE" ]]; then - npx nyc --reporter=lcov --reporter=text cucumber-js $EXTRAS -f json:test/report/api.json --require "stepDefinitions/*.js" features/$* -else - npx cucumber-js $EXTRAS -f json:test/report/api.json --require "stepDefinitions/*.js" features/$* -fi -result=$? -npx multiReport -exit $result \ No newline at end of file diff --git a/packages/api/test/apiReq.json b/packages/api/test/apiReq.json deleted file mode 100644 index 71ef02e..0000000 --- a/packages/api/test/apiReq.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "url": "https://run.mocky.io", - "api": "${version}/d2bc61bc-bdf1-418b-a4d5-dc1b70c86861", - "method": "GET" - } \ No newline at end of file diff --git a/packages/api/test/hello.txt b/packages/api/test/hello.txt deleted file mode 100644 index 619f4ad..0000000 --- a/packages/api/test/hello.txt +++ /dev/null @@ -1 +0,0 @@ -"HI THERE" diff --git a/packages/api/test/helloWorld.json b/packages/api/test/helloWorld.json deleted file mode 100644 index 52187ef..0000000 --- a/packages/api/test/helloWorld.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "url": "http://www.mocky.io/v2/", - "api": "5ec540242f00004cb1dc30dd", - "method": "GET" -} - diff --git a/packages/api/test/tryB64Post.json b/packages/api/test/tryB64Post.json deleted file mode 100644 index 6bb0ba7..0000000 --- a/packages/api/test/tryB64Post.json +++ /dev/null @@ -1,20 +0,0 @@ - -{ - "url": "http://ptsv2.com/t/yiwkm-1612332748", - "api" : "post", - "method": "POST", - "jsonBody": { "does" : "THis" }, - "formBody": { - "hello": "There" , - "blobbb": { - "type": "base64blob", - "base64blob": "iVBORw0KGgoAAAANSUhEUgAAAEQAAABCCAMAAADZlICdAAAAYFBMVEVMaXG9x8eqxsa9x8e9xsa8xsaAgIC+yMi9yMiqqqq9yMi9x8e9yMi9x8e+yMiZmZm8xsavv7+9x8e+x8e2tra9x8e9yMi9yMi4xsa+yMi8x8e+xsa9xsa9xcW9yMi+yMiVXpEfAAAAH3RSTlMA6AnJkGcC/vkD2U25MuIFYxBtTg74q9AkSl95bCOPfKsWVgAAAWRJREFUWMO1mNmagjAMhUEKLasKsiN5/7d0wAFhBqHL4Vxxw/81TXOa1LLOll/VTde2XVNXvhbgkbFS0CxRsuyhRriGRf7zJ/9Ahs+8CK/SiEuarAALUJJepBCea9OObNc7ZsQOHciJjxg3sRXIOihx288pIyn1Oxm/R0fLmBYT3b8xnoEcY6AEzy/rCEhBweZa/IiUFG3tC5ONZYqIbeRWjTFQ/mU6FqQs8efUeQ5pyFlXgKsazDsgd1W3NmnJXtZ0SppKFx6U6EKSj0uFpK1whhT6kGL25JzrMng+uXdGBsrmqjHQVEGlCaT89QDB9RlcvB2hIiNVI6Q2g9QjpDGDNCOkM4N0I6Q1g7Q4CCQcyMZCUgw5bJBjDylAjBVATAlijxCjxlwZkMsLco1iLnRIa4FpciDtFqbxs6xetQXtz2qGIW05ZkDAjCryQxPzzx7fQIMkZqTFDNegMR/04IB6+lDRC8SbdXr0+N/zAAAAAElFTkSuQmCC" - }, - "file": { - "type" : "file", - "fileName": "hello.txt" - }, - "stringArray": ["hello", "world"] - } -} - From 4bad1c9a46d3dce921dace0f472ebac0f454e235 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 4 Jan 2024 11:28:31 -0500 Subject: [PATCH 13/48] Remove unnecessary files --- SECURITY.md | 21 --------------------- packages/api/.eslintrc.json | 22 ---------------------- packages/api/.gitlab-ci.yml | 18 ------------------ updatePackage.js | 20 -------------------- 4 files changed, 81 deletions(-) delete mode 100644 SECURITY.md delete mode 100644 packages/api/.eslintrc.json delete mode 100644 packages/api/.gitlab-ci.yml delete mode 100644 updatePackage.js diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 034e848..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,21 +0,0 @@ -# Security Policy - -## Supported Versions - -Use this section to tell people about which versions of your project are -currently being supported with security updates. - -| Version | Supported | -| ------- | ------------------ | -| 5.1.x | :white_check_mark: | -| 5.0.x | :x: | -| 4.0.x | :white_check_mark: | -| < 4.0 | :x: | - -## Reporting a Vulnerability - -Use this section to tell people how to report a vulnerability. - -Tell them where to go, how often they can expect to get an update on a -reported vulnerability, what to expect if the vulnerability is accepted or -declined, etc. diff --git a/packages/api/.eslintrc.json b/packages/api/.eslintrc.json deleted file mode 100644 index 0972d56..0000000 --- a/packages/api/.eslintrc.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "env": { - "browser": true, - "commonjs": true, - "es2021": true - }, - "extends": ["standard"], - "parserOptions": { - "ecmaVersion": "latest" - }, - "rules": { - "indent": ["error", 4], - "space-before-function-paren": [ - "error", - { - "anonymous": "always", - "named": "never", - "asyncArrow": "always" - } - ] - } -} diff --git a/packages/api/.gitlab-ci.yml b/packages/api/.gitlab-ci.yml deleted file mode 100644 index d5b75d6..0000000 --- a/packages/api/.gitlab-ci.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: node:latest -stages: - - test -test: - stage: test - script: - - mkdir -p test/report - - npm ci - - sh runAllFeatures.sh - tags: - - docker - artifacts: - paths: - - test/report - when: always - - - diff --git a/updatePackage.js b/updatePackage.js deleted file mode 100644 index 6c74f2f..0000000 --- a/updatePackage.js +++ /dev/null @@ -1,20 +0,0 @@ -var fs=require('fs') -fs.readFileSync('./package.json', 'utf8') -var a=require('./package.json') -a.repository= { "type": "git", - "url": "git+https://github.com/hpcc-systems/MAF.git" - } -a.keywords= - [ - "cucumber-js", - "testing", - "cucumber-steps", - "gherkin" - ] -a.bugs= { - "url": "https://github.com/hpcc-systems/MAF/issues" - } -a.homepage="https://github.com/hpcc-systems/MAF#readme" -console.log(a) - -fs.writeFileSync('./package.json', JSON.stringify(a, null,2), 'utf8') From 1a9a79861c3f1a10c1cafd9ce74a0c642d75ab29 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 4 Jan 2024 11:28:49 -0500 Subject: [PATCH 14/48] Refactor AWS stepDefinitions --- .../aws/stepDefinitions/cloudwatch-logs.js | 44 +- packages/aws/stepDefinitions/dynamodb.js | 684 +++++++++--------- packages/aws/stepDefinitions/ecs.js | 292 ++++---- packages/aws/stepDefinitions/lambda.js | 16 +- packages/aws/stepDefinitions/s3.js | 268 +++---- packages/aws/stepDefinitions/sqs.js | 144 ++-- packages/aws/stepDefinitions/steps.js | 1 - 7 files changed, 724 insertions(+), 725 deletions(-) delete mode 100644 packages/aws/stepDefinitions/steps.js diff --git a/packages/aws/stepDefinitions/cloudwatch-logs.js b/packages/aws/stepDefinitions/cloudwatch-logs.js index 2dc04df..37b9354 100644 --- a/packages/aws/stepDefinitions/cloudwatch-logs.js +++ b/packages/aws/stepDefinitions/cloudwatch-logs.js @@ -8,7 +8,7 @@ setDefaultTimeout(15 * 60 * 1000) const cloudwatchLogsClientConfig = { maxAttempts: 3 } if (process.env.AWSENV && process.env.AWSENV.toUpperCase() === 'LOCALSTACK') { - cloudwatchLogsClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' + cloudwatchLogsClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' } const cloudwatchLogsClient = new CloudWatchLogsClient(cloudwatchLogsClientConfig) @@ -16,31 +16,31 @@ const cloudwatchLogsClient = new CloudWatchLogsClient(cloudwatchLogsClientConfig * Returns the value of the parameter from the parameter store */ MAFWhen('parameter {string} value is retrieved from the parameter store', async function (parameterName) { - parameterName = filltemplate(parameterName, this.results) - const ssmClient = new SSMClient() - const res = await ssmClient.send(new GetParameterCommand({ Name: parameterName })) - return res.Parameter.Value + parameterName = filltemplate(parameterName, this.results) + const ssmClient = new SSMClient() + const res = await ssmClient.send(new GetParameterCommand({ Name: parameterName })) + return res.Parameter.Value }) /** * Returns at most 10 query calls of 1 MB / 10,000 logs from cloudwatch */ MAFWhen('cloudwatch logs from log group {string} from {int} minutes ago to now are retrieved', async function (logGroup, minutes) { - const startTime = DateTime.now().minus({ minutes }).toUTC().toMillis() - logGroup = filltemplate(logGroup, this.results) - let logs = [] - let res = {} - let queries = 0 - do { - const queryParameters = { - logGroupName: logGroup, - startTime - } - if (res.nextToken) { - queryParameters.nextToken = res.nextToken - } - res = await cloudwatchLogsClient.send(new FilterLogEventsCommand(queryParameters)) - logs = logs.concat(res.events.map(event => event.message.replace(/\t/g, ' '))) - } while (res.nextToken && ++queries <= 10) - return logs + const startTime = DateTime.now().minus({ minutes }).toUTC().toMillis() + logGroup = filltemplate(logGroup, this.results) + let logs = [] + let res = {} + let queries = 0 + do { + const queryParameters = { + logGroupName: logGroup, + startTime + } + if (res.nextToken) { + queryParameters.nextToken = res.nextToken + } + res = await cloudwatchLogsClient.send(new FilterLogEventsCommand(queryParameters)) + logs = logs.concat(res.events.map(event => event.message.replace(/\t/g, ' '))) + } while (res.nextToken && ++queries <= 10) + return logs }) diff --git a/packages/aws/stepDefinitions/dynamodb.js b/packages/aws/stepDefinitions/dynamodb.js index 750c7ee..92558f2 100644 --- a/packages/aws/stepDefinitions/dynamodb.js +++ b/packages/aws/stepDefinitions/dynamodb.js @@ -5,10 +5,10 @@ const { DynamoDBClient, ListTablesCommand, QueryCommand, PutItemCommand, UpdateI setDefaultTimeout(15 * 60 * 1000) const DynamoDBClientConfig = { - maxAttempts: 3 + maxAttempts: 3 } if (process.env.AWSENV && process.env.AWSENV.toUpperCase() === 'LOCALSTACK') { - DynamoDBClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' + DynamoDBClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' } const dbClient = new DynamoDBClient(DynamoDBClientConfig) @@ -17,18 +17,18 @@ const dbClient = new DynamoDBClient(DynamoDBClientConfig) * @param {string} tableName The name of the table on DynamoDB * @returns {boolean} true if the table exists on DynamoDB */ -async function tableExists (tableName) { - let res = {} - let tables = [] - do { - if (res.LastEvaluatedTableName) { - res = await dbClient.send(new ListTablesCommand({ ExclusiveStartTableName: res.LastEvaluatedTableName })) - } else { - res = await dbClient.send(new ListTablesCommand({})) - } - tables = tables.concat(res.TableNames) - } while (res.LastEvaluatedTableName) - return tables.includes(tableName) +async function tableExists(tableName) { + let res = {} + let tables = [] + do { + if (res.LastEvaluatedTableName) { + res = await dbClient.send(new ListTablesCommand({ ExclusiveStartTableName: res.LastEvaluatedTableName })) + } else { + res = await dbClient.send(new ListTablesCommand({})) + } + tables = tables.concat(res.TableNames) + } while (res.LastEvaluatedTableName) + return tables.includes(tableName) } /** @@ -36,40 +36,40 @@ async function tableExists (tableName) { * @param {JSON} jsonItem A JSON item with contents from dynamoDB. * @returns {JSON} a cleaned JSON object */ -function cleanDynamoQuery (jsonItem) { - if (typeof jsonItem === 'string') { - jsonItem = JSON.parse(jsonItem) - } - if (jsonItem.Item) { - jsonItem = jsonItem.Item - } - if (Array.isArray(jsonItem)) { - const array = [] - jsonItem.forEach((item) => { - const res = {} - Object.keys(item).forEach((i) => { - Object.keys(item[i]).forEach((j) => { - res[i] = item[i][j] +function cleanDynamoQuery(jsonItem) { + if (typeof jsonItem === 'string') { + jsonItem = JSON.parse(jsonItem) + } + if (jsonItem.Item) { + jsonItem = jsonItem.Item + } + if (Array.isArray(jsonItem)) { + const array = [] + jsonItem.forEach((item) => { + const res = {} + Object.keys(item).forEach((i) => { + Object.keys(item[i]).forEach((j) => { + res[i] = item[i][j] + }) + }) + array.push(res) }) - }) - array.push(res) - }) - return array - } else { - const res = {} - Object.keys(jsonItem).forEach((i) => { - Object.keys(jsonItem[i]).forEach((j) => { - res[i] = jsonItem[i][j] - }) - }) - return res - } + return array + } else { + const res = {} + Object.keys(jsonItem).forEach((i) => { + Object.keys(jsonItem[i]).forEach((j) => { + res[i] = jsonItem[i][j] + }) + }) + return res + } } MAFWhen('{jsonObject} is cleaned', function (payload) { - payload = JSON.stringify(performJSONObjectTransform.call(this, payload)) - const cleanedItem = cleanDynamoQuery(payload) - return cleanedItem + payload = JSON.stringify(performJSONObjectTransform.call(this, payload)) + const cleanedItem = cleanDynamoQuery(payload) + return cleanedItem }) /** @@ -78,38 +78,38 @@ MAFWhen('{jsonObject} is cleaned', function (payload) { * base64 will be stored as binary in AWS * @param {JSON} jsonItem a JSON object */ -function convertToDynamoItem (jsonItem) { - if (typeof jsonItem === 'string') { - jsonItem = JSON.parse(jsonItem) - } - const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/ - Object.keys(jsonItem).forEach((key) => { - let dynamoChar - if (typeof jsonItem[key] === 'boolean') { - dynamoChar = 'BOOL' - jsonItem[key] = { [dynamoChar]: jsonItem[key] } - return +function convertToDynamoItem(jsonItem) { + if (typeof jsonItem === 'string') { + jsonItem = JSON.parse(jsonItem) } - if (!isNaN(jsonItem[key])) dynamoChar = 'N' - else if (base64regex.test(jsonItem[key])) dynamoChar = 'B' - else if (jsonItem[key].constructor === {}.constructor) dynamoChar = 'M' - else dynamoChar = 'S' - jsonItem[key] = { [dynamoChar]: String(jsonItem[key]) } - }) - return jsonItem + const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/ + Object.keys(jsonItem).forEach((key) => { + let dynamoChar + if (typeof jsonItem[key] === 'boolean') { + dynamoChar = 'BOOL' + jsonItem[key] = { [dynamoChar]: jsonItem[key] } + return + } + if (!isNaN(jsonItem[key])) dynamoChar = 'N' + else if (base64regex.test(jsonItem[key])) dynamoChar = 'B' + else if (jsonItem[key].constructor === {}.constructor) dynamoChar = 'M' + else dynamoChar = 'S' + jsonItem[key] = { [dynamoChar]: String(jsonItem[key]) } + }) + return jsonItem } MAFWhen('{jsonObject} is converted to dynamo', function (payload) { - payload = JSON.stringify(performJSONObjectTransform.call(this, payload)) - const dynamoItem = convertToDynamoItem(payload) - return dynamoItem + payload = JSON.stringify(performJSONObjectTransform.call(this, payload)) + const dynamoItem = convertToDynamoItem(payload) + return dynamoItem }) MAFWhen('table {string} exists on dynamo', async function (tableName) { - tableName = filltemplate(tableName, this.results) - if (!await tableExists(tableName)) { - throw new Error('The table ' + tableName + ' does not exist on dynamoDB') - } + tableName = filltemplate(tableName, this.results) + if (!await tableExists(tableName)) { + throw new Error('The table ' + tableName + ' does not exist on dynamoDB') + } }) /** @@ -127,118 +127,118 @@ MAFWhen('table {string} exists on dynamo', async function (tableName) { * @param {JSON} additionalArgs unsupported pairs of other attributes for AWS QueryCommand * @return {String[]} Items from AWS */ -async function dynamoQuery (activeArgs, additionalArgs) { - const dynamoQueryArgs = {} - Object.assign(dynamoQueryArgs, this.results) - Object.assign(dynamoQueryArgs, activeArgs) - - let lastEvaluatedKey - let res = [] - do { - let queryParameters = {} - if (!dynamoQueryArgs.tableName) { - throw new Error("The 'tableName' for dynamodb query is required") - } - queryParameters.TableName = dynamoQueryArgs.tableName - - if (!dynamoQueryArgs.keyConditionExpression) { - throw new Error("The 'keyConditionExpression' for dynamodb query is required") - } - queryParameters.KeyConditionExpression = dynamoQueryArgs.keyConditionExpression - - if (dynamoQueryArgs.filterExpression) { - queryParameters.FilterExpression = dynamoQueryArgs.filterExpression - } - if (dynamoQueryArgs.projectionExpression) { - queryParameters.ProjectionExpression = dynamoQueryArgs.projectionExpression - } - if (dynamoQueryArgs.scanIndexForward) { - queryParameters.ScanIndexForward = dynamoQueryArgs.scanIndexForward - } - if (dynamoQueryArgs.indexName) { - queryParameters.IndexName = dynamoQueryArgs.indexName - } - if (dynamoQueryArgs.expressionAttributeValues) { - if (dynamoQueryArgs.expressionAttributeValues === 'string') { - dynamoQueryArgs.expressionAttributeValues = JSON.parse( - dynamoQueryArgs.expressionAttributeValues - ) - } - queryParameters.ExpressionAttributeValues = dynamoQueryArgs.expressionAttributeValues - } - if (dynamoQueryArgs.expressionAttributeNames) { - queryParameters.ExpressionAttributeNames = dynamoQueryArgs.expressionAttributeNames - } - if (additionalArgs) { - queryParameters = { ...queryParameters, ...additionalArgs } - } - if (lastEvaluatedKey) { - queryParameters.ExclusiveStartKey = lastEvaluatedKey - } else { - this.attach(JSON.stringify(queryParameters)) - } - const queryResults = await dbClient.send(new QueryCommand(queryParameters)) - res = res.concat(queryResults.Items) - lastEvaluatedKey = queryResults.LastEvaluatedKey - } while (lastEvaluatedKey) - return res +async function dynamoQuery(activeArgs, additionalArgs) { + const dynamoQueryArgs = {} + Object.assign(dynamoQueryArgs, this.results) + Object.assign(dynamoQueryArgs, activeArgs) + + let lastEvaluatedKey + let res = [] + do { + let queryParameters = {} + if (!dynamoQueryArgs.tableName) { + throw new Error("The 'tableName' for dynamodb query is required") + } + queryParameters.TableName = dynamoQueryArgs.tableName + + if (!dynamoQueryArgs.keyConditionExpression) { + throw new Error("The 'keyConditionExpression' for dynamodb query is required") + } + queryParameters.KeyConditionExpression = dynamoQueryArgs.keyConditionExpression + + if (dynamoQueryArgs.filterExpression) { + queryParameters.FilterExpression = dynamoQueryArgs.filterExpression + } + if (dynamoQueryArgs.projectionExpression) { + queryParameters.ProjectionExpression = dynamoQueryArgs.projectionExpression + } + if (dynamoQueryArgs.scanIndexForward) { + queryParameters.ScanIndexForward = dynamoQueryArgs.scanIndexForward + } + if (dynamoQueryArgs.indexName) { + queryParameters.IndexName = dynamoQueryArgs.indexName + } + if (dynamoQueryArgs.expressionAttributeValues) { + if (dynamoQueryArgs.expressionAttributeValues === 'string') { + dynamoQueryArgs.expressionAttributeValues = JSON.parse( + dynamoQueryArgs.expressionAttributeValues + ) + } + queryParameters.ExpressionAttributeValues = dynamoQueryArgs.expressionAttributeValues + } + if (dynamoQueryArgs.expressionAttributeNames) { + queryParameters.ExpressionAttributeNames = dynamoQueryArgs.expressionAttributeNames + } + if (additionalArgs) { + queryParameters = { ...queryParameters, ...additionalArgs } + } + if (lastEvaluatedKey) { + queryParameters.ExclusiveStartKey = lastEvaluatedKey + } else { + this.attach(JSON.stringify(queryParameters)) + } + const queryResults = await dbClient.send(new QueryCommand(queryParameters)) + res = res.concat(queryResults.Items) + lastEvaluatedKey = queryResults.LastEvaluatedKey + } while (lastEvaluatedKey) + return res } /** * Extracts variables for dynamodb query and preforms the aws command * @param {JSON} payload an object containing keys / values for the query */ -async function performDynamoDBQueryFromJSON (payload) { - const activeArgs = {} - const additionalArgs = {} - Object.keys(payload).forEach((key) => { - switch (key) { - case 'tableName': - case 'indexName': - case 'projectionExpression': - case 'scanIndexForward': - case 'filterExpression': - case 'keyConditionExpression': - case 'expressionAttributeNames': - activeArgs[key] = payload[key] - break - case 'expressionAttributeValues': - activeArgs[key] = +async function performDynamoDBQueryFromJSON(payload) { + const activeArgs = {} + const additionalArgs = {} + Object.keys(payload).forEach((key) => { + switch (key) { + case 'tableName': + case 'indexName': + case 'projectionExpression': + case 'scanIndexForward': + case 'filterExpression': + case 'keyConditionExpression': + case 'expressionAttributeNames': + activeArgs[key] = payload[key] + break + case 'expressionAttributeValues': + activeArgs[key] = typeof payload[key] === 'string' - ? JSON.parse(payload[key]) - : payload[key] - break - default: - additionalArgs[key] = payload[key] - } - }) - return dynamoQuery.call(this, activeArgs, additionalArgs) + ? JSON.parse(payload[key]) + : payload[key] + break + default: + additionalArgs[key] = payload[key] + } + }) + return dynamoQuery.call(this, activeArgs, additionalArgs) } /** * Gets a query / item from a dynamoDB table */ MAFWhen('dynamodb query from {jsonObject} is performed', async function (payload) { - payload = performJSONObjectTransform.call(this, payload) - return await performDynamoDBQueryFromJSON.call(this, payload) + payload = performJSONObjectTransform.call(this, payload) + return await performDynamoDBQueryFromJSON.call(this, payload) }) /** * Performs a dynamodb query based on the provided docstring and variables already defined */ MAFWhen('perform dynamodb query:', async function (docString) { - if (!this.results) { - this.results = {} - } - const payload = JSON.parse(filltemplate(docString, this.results)) - return await performDynamoDBQueryFromJSON.call(this, payload) + if (!this.results) { + this.results = {} + } + const payload = JSON.parse(filltemplate(docString, this.results)) + return await performDynamoDBQueryFromJSON.call(this, payload) }) /** * Gets a query / item from a dynamoDB table */ MAFWhen('dynamodb query is performed', async function () { - return await dynamoQuery.call(this) + return await dynamoQuery.call(this) }) /** @@ -247,93 +247,93 @@ MAFWhen('dynamodb query is performed', async function () { * @param {JSON} additionalArgs unsupported pairs of other attributes for AWS PutItemCommand * @return {String[]} PutItemCommandOutput (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-dynamodb/interfaces/putitemcommandoutput.html) */ -async function putItem (activeArgs, additionalArgs) { - const dynamoPutItemArgs = {} - Object.assign(dynamoPutItemArgs, this.results) - Object.assign(dynamoPutItemArgs, activeArgs) - - let queryParameters = {} - if (!dynamoPutItemArgs.tableName) { - throw new Error("The 'tableName' for dynamodb query is required") - } - queryParameters.TableName = dynamoPutItemArgs.tableName - - if (!dynamoPutItemArgs.item) { - throw new Error("The 'item' for dynamodb put-item is required") - } - if (dynamoPutItemArgs.item === 'string') { - dynamoPutItemArgs.item = JSON.parse(dynamoPutItemArgs.item) - } - queryParameters.Item = dynamoPutItemArgs.item - - if (dynamoPutItemArgs.expressionAttributeValues) { - if (dynamoPutItemArgs.expressionAttributeValues === 'string') { - dynamoPutItemArgs.expressionAttributeValues = JSON.parse( - dynamoPutItemArgs.expressionAttributeValues - ) +async function putItem(activeArgs, additionalArgs) { + const dynamoPutItemArgs = {} + Object.assign(dynamoPutItemArgs, this.results) + Object.assign(dynamoPutItemArgs, activeArgs) + + let queryParameters = {} + if (!dynamoPutItemArgs.tableName) { + throw new Error("The 'tableName' for dynamodb query is required") + } + queryParameters.TableName = dynamoPutItemArgs.tableName + + if (!dynamoPutItemArgs.item) { + throw new Error("The 'item' for dynamodb put-item is required") + } + if (dynamoPutItemArgs.item === 'string') { + dynamoPutItemArgs.item = JSON.parse(dynamoPutItemArgs.item) + } + queryParameters.Item = dynamoPutItemArgs.item + + if (dynamoPutItemArgs.expressionAttributeValues) { + if (dynamoPutItemArgs.expressionAttributeValues === 'string') { + dynamoPutItemArgs.expressionAttributeValues = JSON.parse( + dynamoPutItemArgs.expressionAttributeValues + ) + } + queryParameters.ExpressionAttributeValues = dynamoPutItemArgs.expressionAttributeValues } - queryParameters.ExpressionAttributeValues = dynamoPutItemArgs.expressionAttributeValues - } - if (dynamoPutItemArgs.expressionAttributeNames) { - queryParameters.ExpressionAttributeNames = dynamoPutItemArgs.expressionAttributeNames - } - queryParameters.ReturnValues = 'ALL_OLD' - if (additionalArgs) { - queryParameters = { ...queryParameters, ...additionalArgs } - } - this.attach(JSON.stringify(queryParameters)) - return await dbClient.send(new PutItemCommand(queryParameters)) + if (dynamoPutItemArgs.expressionAttributeNames) { + queryParameters.ExpressionAttributeNames = dynamoPutItemArgs.expressionAttributeNames + } + queryParameters.ReturnValues = 'ALL_OLD' + if (additionalArgs) { + queryParameters = { ...queryParameters, ...additionalArgs } + } + this.attach(JSON.stringify(queryParameters)) + return await dbClient.send(new PutItemCommand(queryParameters)) } /** * Extracts variables for dynamodb put-item and preforms the aws command * @param {JSON} payload an object containing keys / values for the put-item */ -async function performDynamoDBPutItemFromJSON (payload) { - const activeArgs = {} - const additionalArgs = {} - Object.keys(payload).forEach((key) => { - switch (key) { - case 'tableName': - activeArgs[key] = payload[key] - break - case 'item': - activeArgs[key] = +async function performDynamoDBPutItemFromJSON(payload) { + const activeArgs = {} + const additionalArgs = {} + Object.keys(payload).forEach((key) => { + switch (key) { + case 'tableName': + activeArgs[key] = payload[key] + break + case 'item': + activeArgs[key] = typeof payload[key] === 'string' - ? JSON.parse(payload[key]) - : payload[key] - break - default: - additionalArgs[key] = payload[key] - } - }) - return await putItem.call(this, activeArgs, additionalArgs) + ? JSON.parse(payload[key]) + : payload[key] + break + default: + additionalArgs[key] = payload[key] + } + }) + return await putItem.call(this, activeArgs, additionalArgs) } /** * Gets a query / item from a dynamoDB table */ MAFWhen('dynamodb put-item from {jsonObject} is performed', async function (payload) { - payload = performJSONObjectTransform.call(this, payload) - return await performDynamoDBPutItemFromJSON.call(this, payload) + payload = performJSONObjectTransform.call(this, payload) + return await performDynamoDBPutItemFromJSON.call(this, payload) }) /** * Performs a dynamodb query based on the provided docstring and variables already defined */ MAFWhen('perform dynamodb put-item:', async function (docString) { - if (!this.results) { - this.results = {} - } - const payload = JSON.parse(filltemplate(docString, this.results)) - return await performDynamoDBPutItemFromJSON.call(this, payload) + if (!this.results) { + this.results = {} + } + const payload = JSON.parse(filltemplate(docString, this.results)) + return await performDynamoDBPutItemFromJSON.call(this, payload) }) /** * Gets a query / item from a dynamoDB table */ MAFWhen('dynamodb put-item is performed', async function () { - return await putItem.call(this) + return await putItem.call(this) }) /** @@ -349,96 +349,96 @@ MAFWhen('dynamodb put-item is performed', async function () { * @param {JSON} additionalArgs unsupported pairs of other attributes for AWS UpdateItemCommand * @return {String[]} UpdateItemCommandOutput (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-dynamodb/interfaces/updateitemcommandoutput.html) */ -async function updateItem (activeArgs, additionalArgs) { - const dynamoUpdateItemArgs = {} - Object.assign(dynamoUpdateItemArgs, this.results) - Object.assign(dynamoUpdateItemArgs, activeArgs) - - let queryParameters = {} - if (!dynamoUpdateItemArgs.tableName) { - throw new Error("The 'tableName' for dynamodb query is required") - } - queryParameters.TableName = dynamoUpdateItemArgs.tableName - - if (!dynamoUpdateItemArgs.key) { - throw new Error("The 'item' for dynamodb put-item is required") - } - if (dynamoUpdateItemArgs.key === 'string') { - dynamoUpdateItemArgs.key = JSON.parse(dynamoUpdateItemArgs.key) - } - queryParameters.Key = dynamoUpdateItemArgs.key - - if (dynamoUpdateItemArgs.expressionAttributeValues) { - if (dynamoUpdateItemArgs.expressionAttributeValues === 'string') { - dynamoUpdateItemArgs.expressionAttributeValues = JSON.parse( - dynamoUpdateItemArgs.expressionAttributeValues - ) +async function updateItem(activeArgs, additionalArgs) { + const dynamoUpdateItemArgs = {} + Object.assign(dynamoUpdateItemArgs, this.results) + Object.assign(dynamoUpdateItemArgs, activeArgs) + + let queryParameters = {} + if (!dynamoUpdateItemArgs.tableName) { + throw new Error("The 'tableName' for dynamodb query is required") + } + queryParameters.TableName = dynamoUpdateItemArgs.tableName + + if (!dynamoUpdateItemArgs.key) { + throw new Error("The 'item' for dynamodb put-item is required") + } + if (dynamoUpdateItemArgs.key === 'string') { + dynamoUpdateItemArgs.key = JSON.parse(dynamoUpdateItemArgs.key) + } + queryParameters.Key = dynamoUpdateItemArgs.key + + if (dynamoUpdateItemArgs.expressionAttributeValues) { + if (dynamoUpdateItemArgs.expressionAttributeValues === 'string') { + dynamoUpdateItemArgs.expressionAttributeValues = JSON.parse( + dynamoUpdateItemArgs.expressionAttributeValues + ) + } + queryParameters.ExpressionAttributeValues = dynamoUpdateItemArgs.expressionAttributeValues + } + if (dynamoUpdateItemArgs.expressionAttributeNames) { + queryParameters.ExpressionAttributeNames = dynamoUpdateItemArgs.expressionAttributeNames + } + if (dynamoUpdateItemArgs.updateExpression) { + queryParameters.UpdateExpression = dynamoUpdateItemArgs.updateExpression } - queryParameters.ExpressionAttributeValues = dynamoUpdateItemArgs.expressionAttributeValues - } - if (dynamoUpdateItemArgs.expressionAttributeNames) { - queryParameters.ExpressionAttributeNames = dynamoUpdateItemArgs.expressionAttributeNames - } - if (dynamoUpdateItemArgs.updateExpression) { - queryParameters.UpdateExpression = dynamoUpdateItemArgs.updateExpression - } - queryParameters.ReturnValues = 'ALL_NEW' - if (additionalArgs) { - queryParameters = { ...queryParameters, ...additionalArgs } - } - this.attach(JSON.stringify(queryParameters)) - return await dbClient.send(new UpdateItemCommand(queryParameters)) + queryParameters.ReturnValues = 'ALL_NEW' + if (additionalArgs) { + queryParameters = { ...queryParameters, ...additionalArgs } + } + this.attach(JSON.stringify(queryParameters)) + return await dbClient.send(new UpdateItemCommand(queryParameters)) } /** * Extracts variables for dynamodb query and preforms the aws command * @param {JSON} payload an object containing keys / values for the query */ -async function performDynamoDBUpdateFromJSON (payload) { - const activeArgs = {} - const additionalArgs = {} - Object.keys(payload).forEach((key) => { - switch (key) { - case 'tableName': - case 'expressionAttributeNames': - case 'updateExpression': - activeArgs[key] = payload[key] - break - case 'expressionAttributeValues': - case 'key': - activeArgs[key] = +async function performDynamoDBUpdateFromJSON(payload) { + const activeArgs = {} + const additionalArgs = {} + Object.keys(payload).forEach((key) => { + switch (key) { + case 'tableName': + case 'expressionAttributeNames': + case 'updateExpression': + activeArgs[key] = payload[key] + break + case 'expressionAttributeValues': + case 'key': + activeArgs[key] = typeof payload[key] === 'string' - ? JSON.parse(payload[key]) - : payload[key] - break - default: - additionalArgs[key] = payload[key] - } - }) - return await updateItem.call(this, activeArgs, additionalArgs) + ? JSON.parse(payload[key]) + : payload[key] + break + default: + additionalArgs[key] = payload[key] + } + }) + return await updateItem.call(this, activeArgs, additionalArgs) } /** * Updates an item from a dynamoDB table */ MAFWhen('dynamodb update-item from {jsonObject} is performed', async function (payload) { - payload = performJSONObjectTransform.call(this, payload) - return await performDynamoDBUpdateFromJSON.call(this, payload) + payload = performJSONObjectTransform.call(this, payload) + return await performDynamoDBUpdateFromJSON.call(this, payload) }) /** * Updates a dynamodb item based on the provided docstring and variables already defined */ MAFWhen('perform dynamodb update-item:', async function (docString) { - const payload = JSON.parse(filltemplate(docString, this.results)) - return await performDynamoDBUpdateFromJSON.call(this, payload) + const payload = JSON.parse(filltemplate(docString, this.results)) + return await performDynamoDBUpdateFromJSON.call(this, payload) }) /** * Updates an item from a dynamoDB table */ MAFWhen('dynamodb update-item is performed', async function () { - return await updateItem.call(this) + return await updateItem.call(this) }) /** @@ -447,91 +447,91 @@ MAFWhen('dynamodb update-item is performed', async function () { * @param {JSON} additionalArgs unsupported pairs of other attributes for AWS DeleteItemCommand * @return {String[]} DeleteItemCommandOutput (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-dynamodb/interfaces/deleteitemcommandoutput.html) */ -async function deleteItem (activeArgs, additionalArgs) { - const dynamoDeleteItemArgs = {} - Object.assign(dynamoDeleteItemArgs, this.results) - Object.assign(dynamoDeleteItemArgs, activeArgs) - - let queryParameters = {} - if (!dynamoDeleteItemArgs.tableName) { - throw new Error("The 'tableName' for dynamodb query is required") - } - queryParameters.TableName = dynamoDeleteItemArgs.tableName - - if (!dynamoDeleteItemArgs.key) { - throw new Error("The 'item' for dynamodb put-item is required") - } - if (dynamoDeleteItemArgs.key === 'string') { - dynamoDeleteItemArgs.key = JSON.parse(dynamoDeleteItemArgs.key) - } - queryParameters.Key = dynamoDeleteItemArgs.key - - if (dynamoDeleteItemArgs.expressionAttributeValues) { - if (dynamoDeleteItemArgs.expressionAttributeValues === 'string') { - dynamoDeleteItemArgs.expressionAttributeValues = JSON.parse( - dynamoDeleteItemArgs.expressionAttributeValues - ) +async function deleteItem(activeArgs, additionalArgs) { + const dynamoDeleteItemArgs = {} + Object.assign(dynamoDeleteItemArgs, this.results) + Object.assign(dynamoDeleteItemArgs, activeArgs) + + let queryParameters = {} + if (!dynamoDeleteItemArgs.tableName) { + throw new Error("The 'tableName' for dynamodb query is required") + } + queryParameters.TableName = dynamoDeleteItemArgs.tableName + + if (!dynamoDeleteItemArgs.key) { + throw new Error("The 'item' for dynamodb put-item is required") } - queryParameters.ExpressionAttributeValues = dynamoDeleteItemArgs.expressionAttributeValues - } - if (dynamoDeleteItemArgs.expressionAttributeNames) { - queryParameters.ExpressionAttributeNames = dynamoDeleteItemArgs.expressionAttributeNames - } - if (dynamoDeleteItemArgs.updateExpression) { - queryParameters.UpdateExpression = dynamoDeleteItemArgs.updateExpression - } - queryParameters.ReturnValues = 'ALL_OLD' - if (additionalArgs) { - queryParameters = { ...queryParameters, ...additionalArgs } - } - this.attach(JSON.stringify(queryParameters)) - return await dbClient.send(new DeleteItemCommand(queryParameters)) + if (dynamoDeleteItemArgs.key === 'string') { + dynamoDeleteItemArgs.key = JSON.parse(dynamoDeleteItemArgs.key) + } + queryParameters.Key = dynamoDeleteItemArgs.key + + if (dynamoDeleteItemArgs.expressionAttributeValues) { + if (dynamoDeleteItemArgs.expressionAttributeValues === 'string') { + dynamoDeleteItemArgs.expressionAttributeValues = JSON.parse( + dynamoDeleteItemArgs.expressionAttributeValues + ) + } + queryParameters.ExpressionAttributeValues = dynamoDeleteItemArgs.expressionAttributeValues + } + if (dynamoDeleteItemArgs.expressionAttributeNames) { + queryParameters.ExpressionAttributeNames = dynamoDeleteItemArgs.expressionAttributeNames + } + if (dynamoDeleteItemArgs.updateExpression) { + queryParameters.UpdateExpression = dynamoDeleteItemArgs.updateExpression + } + queryParameters.ReturnValues = 'ALL_OLD' + if (additionalArgs) { + queryParameters = { ...queryParameters, ...additionalArgs } + } + this.attach(JSON.stringify(queryParameters)) + return await dbClient.send(new DeleteItemCommand(queryParameters)) } /** * Extracts variables for dynamodb query and preforms the aws command * @param {JSON} payload an object containing keys / values for the deletion */ -async function performDynamoDBDeleteFromJSON (payload) { - const activeArgs = {} - const additionalArgs = {} - Object.keys(payload).forEach((key) => { - switch (key) { - case 'tableName': - activeArgs[key] = payload[key] - break - case 'key': - activeArgs[key] = +async function performDynamoDBDeleteFromJSON(payload) { + const activeArgs = {} + const additionalArgs = {} + Object.keys(payload).forEach((key) => { + switch (key) { + case 'tableName': + activeArgs[key] = payload[key] + break + case 'key': + activeArgs[key] = typeof payload[key] === 'string' - ? JSON.parse(payload[key]) - : payload[key] - break - default: - additionalArgs[key] = payload[key] - } - }) - return deleteItem.call(this, activeArgs, additionalArgs) + ? JSON.parse(payload[key]) + : payload[key] + break + default: + additionalArgs[key] = payload[key] + } + }) + return deleteItem.call(this, activeArgs, additionalArgs) } /** * Deletes an item from a dynamoDB table */ MAFWhen('dynamodb delete-item from {jsonObject} is performed', async function (payload) { - payload = performJSONObjectTransform.call(this, payload) - return await performDynamoDBDeleteFromJSON.call(this, payload) + payload = performJSONObjectTransform.call(this, payload) + return await performDynamoDBDeleteFromJSON.call(this, payload) }) /** * Deletes a dynamodb item based on the provided docstring and variables already defined */ MAFWhen('perform dynamodb delete-item:', async function (docString) { - const payload = JSON.parse(filltemplate(docString, this.results)) - return await performDynamoDBDeleteFromJSON.call(this, payload) + const payload = JSON.parse(filltemplate(docString, this.results)) + return await performDynamoDBDeleteFromJSON.call(this, payload) }) /** * Deletes an item from a dynamoDB table */ MAFWhen('dynamodb delete-item is performed', async function () { - return await deleteItem.call(this) + return await deleteItem.call(this) }) diff --git a/packages/aws/stepDefinitions/ecs.js b/packages/aws/stepDefinitions/ecs.js index 0192c19..afd29a2 100644 --- a/packages/aws/stepDefinitions/ecs.js +++ b/packages/aws/stepDefinitions/ecs.js @@ -6,7 +6,7 @@ setDefaultTimeout(15 * 60 * 1000) const ecsClientConfig = { maxAttempts: 3 } if (process.env.AWSENV && process.env.AWSENV.toUpperCase() === 'LOCALSTACK') { - ecsClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' + ecsClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' } const ecsClient = new ECSClient(ecsClientConfig) @@ -15,102 +15,102 @@ const ecsClient = new ECSClient(ecsClientConfig) * @param {String} taskDefinitionFamilyPrefix the task definition name * @returns {String[]} an array matching the task definition */ -async function listTaskDefinitions (taskDefinitionFamilyPrefix) { - let taskDefinitionARNs = [] - let res = {} - do { - const queryParameters = { - familyPrefix: taskDefinitionFamilyPrefix - } - if (res.NextToken) { - queryParameters.nextToken = res.nextToken - } - res = await ecsClient.send(new ListTaskDefinitionsCommand(queryParameters)) - taskDefinitionARNs = taskDefinitionARNs.concat(res.taskDefinitionArns) - } while (res.NextToken) - return taskDefinitionARNs +async function listTaskDefinitions(taskDefinitionFamilyPrefix) { + let taskDefinitionARNs = [] + let res = {} + do { + const queryParameters = { + familyPrefix: taskDefinitionFamilyPrefix + } + if (res.NextToken) { + queryParameters.nextToken = res.nextToken + } + res = await ecsClient.send(new ListTaskDefinitionsCommand(queryParameters)) + taskDefinitionARNs = taskDefinitionARNs.concat(res.taskDefinitionArns) + } while (res.NextToken) + return taskDefinitionARNs } MAFWhen('ecs taskDefinition {string} does not exist', async function (taskDefinitionName) { - taskDefinitionName = filltemplate(taskDefinitionName, this.results) - const taskDefinitionARNs = await listTaskDefinitions(taskDefinitionName) - if (taskDefinitionARNs.some(arn => arn.includes(taskDefinitionName))) { - throw new Error('ecs TaskDefinition ' + taskDefinitionName + ' does exist') - } + taskDefinitionName = filltemplate(taskDefinitionName, this.results) + const taskDefinitionARNs = await listTaskDefinitions(taskDefinitionName) + if (taskDefinitionARNs.some(arn => arn.includes(taskDefinitionName))) { + throw new Error('ecs TaskDefinition ' + taskDefinitionName + ' does exist') + } }) MAFWhen('ecs taskDefinition {string} exists', async function (taskDefinitionName) { - taskDefinitionName = filltemplate(taskDefinitionName, this.results) - const taskDefinitionARNs = await listTaskDefinitions(taskDefinitionName) - if (!taskDefinitionARNs.some(arn => arn.includes(taskDefinitionName))) { - throw new Error('ecs TaskDefinition ' + taskDefinitionName + ' does not exist') - } + taskDefinitionName = filltemplate(taskDefinitionName, this.results) + const taskDefinitionARNs = await listTaskDefinitions(taskDefinitionName) + if (!taskDefinitionARNs.some(arn => arn.includes(taskDefinitionName))) { + throw new Error('ecs TaskDefinition ' + taskDefinitionName + ' does not exist') + } }) /** * lists all ECS clusters on AWS * @returns {String[]} an array listing clusters */ -async function listClusters () { - let clusters = [] - let res = {} - do { - const queryParameters = {} - if (res.NextToken) { - queryParameters.nextToken = res.nextToken - } - res = await ecsClient.send(new ListClustersCommand(queryParameters)) - clusters = clusters.concat(res.clusterArns) - } while (res.NextToken) - return clusters +async function listClusters() { + let clusters = [] + let res = {} + do { + const queryParameters = {} + if (res.NextToken) { + queryParameters.nextToken = res.nextToken + } + res = await ecsClient.send(new ListClustersCommand(queryParameters)) + clusters = clusters.concat(res.clusterArns) + } while (res.NextToken) + return clusters } MAFWhen('ecs clusters from AWS are retrieved', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) - return await listClusters() + clusterName = filltemplate(clusterName, this.results) + return await listClusters() }) MAFWhen('ecs cluster {string} does not exist', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) - const clusterARNs = await listClusters() - if (clusterARNs.some(arn => arn.includes(clusterName))) { - throw new Error('ECS cluster ' + clusterName + ' does exists') - } + clusterName = filltemplate(clusterName, this.results) + const clusterARNs = await listClusters() + if (clusterARNs.some(arn => arn.includes(clusterName))) { + throw new Error('ECS cluster ' + clusterName + ' does exists') + } }) MAFWhen('ecs cluster {string} exists', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) - const clusterARNs = await listClusters() - if (!clusterARNs.some(arn => arn.includes(clusterName))) { - throw new Error('ECS cluster ' + clusterName + ' does exists') - } + clusterName = filltemplate(clusterName, this.results) + const clusterARNs = await listClusters() + if (!clusterARNs.some(arn => arn.includes(clusterName))) { + throw new Error('ECS cluster ' + clusterName + ' does exists') + } }) -async function getClusterARNFromName (clusterName) { - const clusterARNs = await listClusters() - return clusterARNs.find(arn => arn.includes(clusterName)) +async function getClusterARNFromName(clusterName) { + const clusterARNs = await listClusters() + return clusterARNs.find(arn => arn.includes(clusterName)) } MAFWhen('get ARN of ecs cluster {string}', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) - const name = getClusterARNFromName(clusterName) - if (!name) { - throw new Error('ECS cluster ' + clusterName + ' can not be found on AWS') - } - return name + clusterName = filltemplate(clusterName, this.results) + const name = getClusterARNFromName(clusterName) + if (!name) { + throw new Error('ECS cluster ' + clusterName + ' can not be found on AWS') + } + return name }) MAFWhen('information from ecs cluster {string} is retrieved', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) - const name = await getClusterARNFromName(clusterName) - if (!name) { - throw new Error('ECS cluster ' + clusterName + ' can not be found on AWS') - } - const queryParameters = { - clusters: [name], - include: ['CONFIGURATIONS', 'SETTINGS'] - } - return await ecsClient.send(new DescribeClustersCommand(queryParameters)) + clusterName = filltemplate(clusterName, this.results) + const name = await getClusterARNFromName(clusterName) + if (!name) { + throw new Error('ECS cluster ' + clusterName + ' can not be found on AWS') + } + const queryParameters = { + clusters: [name], + include: ['CONFIGURATIONS', 'SETTINGS'] + } + return await ecsClient.send(new DescribeClustersCommand(queryParameters)) }) /** @@ -119,81 +119,81 @@ MAFWhen('information from ecs cluster {string} is retrieved', async function (cl * @param {JSON} additionalArgs unsupported pairs of other attributes for AWS RunTaskCommand * @return {JSON} RunTaskCommandOutput (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-ecs/interfaces/runtaskcommandoutput.html) */ -async function ecsRunTask (activeArgs, additionalArgs) { - const ecsRunTaskArgs = {} - Object.assign(ecsRunTaskArgs, this.results) - Object.assign(ecsRunTaskArgs, activeArgs) - - let queryParameters = {} - - if (!ecsRunTaskArgs.taskDefinition) { - throw new Error("The 'taskDefinition' for ecs run-task is required") - } - queryParameters.taskDefinition = ecsRunTaskArgs.taskDefinition - - if (!ecsRunTaskArgs.cluster) { - throw new Error("The 'cluster' for ecs run-task is required since defaults are different for each account") - } - queryParameters.cluster = ecsRunTaskArgs.cluster - if (ecsRunTaskArgs.networkConfiguration) { - queryParameters.networkConfiguration = ecsRunTaskArgs.networkConfiguration - } - if (ecsRunTaskArgs.enableECSManagedTags) { - queryParameters.enableECSManagedTags = ecsRunTaskArgs.enableECSManagedTags - } else { - queryParameters.enableECSManagedTags = false - } - queryParameters.launchType = ecsRunTaskArgs.launchType ? ecsRunTaskArgs.launchType : 'FARGATE' - if (additionalArgs) { - queryParameters = { ...queryParameters, ...additionalArgs } - } - this.attach(JSON.stringify(queryParameters)) - return await ecsClient.send(new RunTaskCommand(queryParameters)) +async function ecsRunTask(activeArgs, additionalArgs) { + const ecsRunTaskArgs = {} + Object.assign(ecsRunTaskArgs, this.results) + Object.assign(ecsRunTaskArgs, activeArgs) + + let queryParameters = {} + + if (!ecsRunTaskArgs.taskDefinition) { + throw new Error("The 'taskDefinition' for ecs run-task is required") + } + queryParameters.taskDefinition = ecsRunTaskArgs.taskDefinition + + if (!ecsRunTaskArgs.cluster) { + throw new Error("The 'cluster' for ecs run-task is required since defaults are different for each account") + } + queryParameters.cluster = ecsRunTaskArgs.cluster + if (ecsRunTaskArgs.networkConfiguration) { + queryParameters.networkConfiguration = ecsRunTaskArgs.networkConfiguration + } + if (ecsRunTaskArgs.enableECSManagedTags) { + queryParameters.enableECSManagedTags = ecsRunTaskArgs.enableECSManagedTags + } else { + queryParameters.enableECSManagedTags = false + } + queryParameters.launchType = ecsRunTaskArgs.launchType ? ecsRunTaskArgs.launchType : 'FARGATE' + if (additionalArgs) { + queryParameters = { ...queryParameters, ...additionalArgs } + } + this.attach(JSON.stringify(queryParameters)) + return await ecsClient.send(new RunTaskCommand(queryParameters)) } /** * Extracts variables for ecs run-task and preforms the aws cli command * @param {JSON} payload an object containing keys / values for the run-task */ -async function performECSRunTaskFromJSON (payload) { - const activeArgs = {} - const additionalArgs = {} - Object.keys(payload).forEach((key) => { - switch (key) { - case 'taskDefinition': - case 'cluster': - case 'networkConfiguration': - case 'enableECSManagedTags': - activeArgs[key] = payload[key] - break - default: - additionalArgs[key] = payload[key] - } - }) - return await ecsRunTask.call(this, activeArgs, additionalArgs) +async function performECSRunTaskFromJSON(payload) { + const activeArgs = {} + const additionalArgs = {} + Object.keys(payload).forEach((key) => { + switch (key) { + case 'taskDefinition': + case 'cluster': + case 'networkConfiguration': + case 'enableECSManagedTags': + activeArgs[key] = payload[key] + break + default: + additionalArgs[key] = payload[key] + } + }) + return await ecsRunTask.call(this, activeArgs, additionalArgs) } /** * Runs an ecs task from a provided JSONobject */ MAFWhen('ecs run-task from {jsonObject} is performed', async function (payload) { - payload = performJSONObjectTransform.call(this, payload) - return performECSRunTaskFromJSON.call(this, payload) + payload = performJSONObjectTransform.call(this, payload) + return performECSRunTaskFromJSON.call(this, payload) }) /** * Performs an ecs task based on the provided docstring and variables defined in a document string */ MAFWhen('perform ecs run-task:', async function (docString) { - const payload = JSON.parse(filltemplate(docString, this.results)) - return await performECSRunTaskFromJSON.call(this, payload) + const payload = JSON.parse(filltemplate(docString, this.results)) + return await performECSRunTaskFromJSON.call(this, payload) }) /** * Runs a new task based on existing items */ MAFWhen('ecs run-task is performed', async function () { - return await ecsRunTask.call(this) + return await ecsRunTask.call(this) }) /** @@ -203,21 +203,21 @@ MAFWhen('ecs run-task is performed', async function () { * @param {String} clusterName the name of the cluster */ MAFWhen('at least one task is running for service {string} in cluster {string}', async function (serviceName, clusterName) { - serviceName = filltemplate(serviceName, this.results) - clusterName = filltemplate(clusterName, this.results) - const ecsClient = new ECSClient({ maxAttempts: 2 }) - const serviceDetails = await ecsClient.send(new DescribeServicesCommand({ - cluster: clusterName, - services: [serviceName] - })) - if (serviceDetails.services.length === 0) { - throw new Error('Can\'t find service ' + serviceName + ' in cluster ' + clusterName) - } - const runningCount = serviceDetails.services[0].runningCount - if (runningCount < 1) { - throw new Error('Service ' + serviceName + ' is not currently running in cluster ' + clusterName) - } - return runningCount + serviceName = filltemplate(serviceName, this.results) + clusterName = filltemplate(clusterName, this.results) + const ecsClient = new ECSClient({ maxAttempts: 2 }) + const serviceDetails = await ecsClient.send(new DescribeServicesCommand({ + cluster: clusterName, + services: [serviceName] + })) + if (serviceDetails.services.length === 0) { + throw new Error('Can\'t find service ' + serviceName + ' in cluster ' + clusterName) + } + const runningCount = serviceDetails.services[0].runningCount + if (runningCount < 1) { + throw new Error('Service ' + serviceName + ' is not currently running in cluster ' + clusterName) + } + return runningCount }) /** @@ -227,16 +227,16 @@ MAFWhen('at least one task is running for service {string} in cluster {string}', * @param {String} clusterName the name of the cluster */ MAFWhen('image name for service {string} in cluster {string} is retrieved', async function (serviceName, clusterName) { - serviceName = filltemplate(serviceName, this.results) - clusterName = filltemplate(clusterName, this.results) - const serviceDetails = await ecsClient.send(new DescribeServicesCommand({ - cluster: clusterName, - services: [serviceName] - })) - if (serviceDetails.services[0].runningCount <= 0) { - throw new Error('Service ' + serviceName + ' is not currently running in cluster ' + clusterName) - } - const taskDefinitionDetails = await ecsClient.send(new DescribeTaskDefinitionCommand({ taskDefinition: serviceDetails.services[0].taskDefinition })) - const containerImageName = taskDefinitionDetails.taskDefinition.containerDefinitions[0].image - return containerImageName + serviceName = filltemplate(serviceName, this.results) + clusterName = filltemplate(clusterName, this.results) + const serviceDetails = await ecsClient.send(new DescribeServicesCommand({ + cluster: clusterName, + services: [serviceName] + })) + if (serviceDetails.services[0].runningCount <= 0) { + throw new Error('Service ' + serviceName + ' is not currently running in cluster ' + clusterName) + } + const taskDefinitionDetails = await ecsClient.send(new DescribeTaskDefinitionCommand({ taskDefinition: serviceDetails.services[0].taskDefinition })) + const containerImageName = taskDefinitionDetails.taskDefinition.containerDefinitions[0].image + return containerImageName }) diff --git a/packages/aws/stepDefinitions/lambda.js b/packages/aws/stepDefinitions/lambda.js index 093fccc..cdbe195 100644 --- a/packages/aws/stepDefinitions/lambda.js +++ b/packages/aws/stepDefinitions/lambda.js @@ -6,16 +6,16 @@ setDefaultTimeout(15 * 60 * 1000) const lambdaClientConfig = { maxAttempts: 3 } if (process.env.AWSENV && process.env.AWSENV.toUpperCase() === 'LOCALSTACK') { - lambdaClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' + lambdaClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' } const lambdaClient = new LambdaClient(lambdaClientConfig) MAFWhen('a user supplies {jsonObject} to endpoint {string}', async function (payload, functionName) { - functionName = filltemplate(functionName, this.results) - payload = performJSONObjectTransform.call(this, payload) - const queryParameters = { - FunctionName: functionName, - Payload: payload - } - return await lambdaClient.send(new InvokeCommand(queryParameters)) + functionName = filltemplate(functionName, this.results) + payload = performJSONObjectTransform.call(this, payload) + const queryParameters = { + FunctionName: functionName, + Payload: payload + } + return await lambdaClient.send(new InvokeCommand(queryParameters)) }) diff --git a/packages/aws/stepDefinitions/s3.js b/packages/aws/stepDefinitions/s3.js index 95d5d20..673de28 100644 --- a/packages/aws/stepDefinitions/s3.js +++ b/packages/aws/stepDefinitions/s3.js @@ -7,7 +7,7 @@ setDefaultTimeout(15 * 60 * 1000) const S3ClientConfig = { maxAttempts: 3, forcePathStyle: true } if (process.env.AWSENV && process.env.AWSENV.toUpperCase() === 'LOCALSTACK') { - S3ClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' + S3ClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' } const s3Client = new S3Client(S3ClientConfig) @@ -16,8 +16,8 @@ const s3Client = new S3Client(S3ClientConfig) * @param {string} bucket the name of the bucket * @param {string} path The directory path of the S3 bucket */ -function s3URL (bucket, path) { - return 's3://' + bucket + '/' + path +function s3URL(bucket, path) { + return 's3://' + bucket + '/' + path } /** @@ -25,30 +25,30 @@ function s3URL (bucket, path) { * @param {string} bucketName The name of the bucket * @returns {boolean} true if the bucket exists on S3 */ -async function bucketExists (bucketName) { - const res = await s3Client.send(new ListBucketsCommand({})) - return res.Buckets.some(element => element.Name === bucketName.trim()) +async function bucketExists(bucketName) { + const res = await s3Client.send(new ListBucketsCommand({})) + return res.Buckets.some(element => element.Name === bucketName.trim()) } MAFWhen('bucket {string} exists on S3', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) - if (!await bucketExists(bucketName)) { - throw new Error('Bucket ' + bucketName + ' does not exist on S3') - } + bucketName = filltemplate(bucketName, this.results) + if (!await bucketExists(bucketName)) { + throw new Error('Bucket ' + bucketName + ' does not exist on S3') + } }) MAFWhen('bucket {string} is not on S3', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) - if (await bucketExists(bucketName)) { - throw new Error('Bucket ' + bucketName + ' does exist on S3') - } + bucketName = filltemplate(bucketName, this.results) + if (await bucketExists(bucketName)) { + throw new Error('Bucket ' + bucketName + ' does exist on S3') + } }) MAFWhen('bucket {string} exists', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) - if (!await bucketExists(bucketName)) { - throw new Error('Bucket ' + bucketName + ' does not exist on S3') - } + bucketName = filltemplate(bucketName, this.results) + if (!await bucketExists(bucketName)) { + throw new Error('Bucket ' + bucketName + ' does not exist on S3') + } }) /** @@ -58,162 +58,162 @@ MAFWhen('bucket {string} exists', async function (bucketName) { * @param {boolean} all true if you want to get all files from the bucket * @returns {String[]} the files on the bucket and path */ -async function listS3Files (bucketName, path, all = false) { - let queryResults = {} - let files = [] - do { - const queryParameters = { - Bucket: bucketName.trim() - } - if (!all) { - queryParameters.Delimiter = '/' - } - if (path.length !== 0) { - queryParameters.Prefix = path.trim() - } - if (queryResults.IsTruncated) { - queryParameters.ContinuationToken = queryResults.NextContinuationToken - } - queryResults = await s3Client.send(new ListObjectsV2Command(queryParameters)) - if (queryResults.Contents) { - files = files.concat(queryResults.Contents.map(element => element.Key)) - } - } while (queryResults.IsTruncated) - return files +async function listS3Files(bucketName, path, all = false) { + let queryResults = {} + let files = [] + do { + const queryParameters = { + Bucket: bucketName.trim() + } + if (!all) { + queryParameters.Delimiter = '/' + } + if (path.length !== 0) { + queryParameters.Prefix = path.trim() + } + if (queryResults.IsTruncated) { + queryParameters.ContinuationToken = queryResults.NextContinuationToken + } + queryResults = await s3Client.send(new ListObjectsV2Command(queryParameters)) + if (queryResults.Contents) { + files = files.concat(queryResults.Contents.map(element => element.Key)) + } + } while (queryResults.IsTruncated) + return files } MAFWhen('file list of bucket {string} on path {string} is retrieved', async function (bucketName, path) { - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') - return await listS3Files(bucketName, path) + bucketName = filltemplate(bucketName, this.results) + path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + return await listS3Files(bucketName, path) }) MAFWhen('all files of bucket {string} is retrieved', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) - return await listS3Files(bucketName, '', true) + bucketName = filltemplate(bucketName, this.results) + return await listS3Files(bucketName, '', true) }) MAFWhen('file exists with name {string} at path {string} in bucket {string}', async function (key, path, bucketName) { - key = filltemplate(key, this.results) - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') - const files = await listS3Files(bucketName, path) - if (!files.includes(path + key)) { - throw new Error('The file does not exist in ' + s3URL(bucketName, path)) - } + key = filltemplate(key, this.results) + bucketName = filltemplate(bucketName, this.results) + path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + const files = await listS3Files(bucketName, path) + if (!files.includes(path + key)) { + throw new Error('The file does not exist in ' + s3URL(bucketName, path)) + } }) /** * Puts an object on s3 bucket. User must have WRITE permissions on a bucket to add an object to it */ MAFWhen('{jsonObject} is uploaded to bucket {string} as key {string}', async function (file, bucketName, key) { - file = performJSONObjectTransform.call(this, file) - bucketName = filltemplate(bucketName, this.results) - key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') - const queryParameters = { - Bucket: bucketName.trim(), - Body: file, - Key: key - } - return await s3Client.send(new PutObjectCommand(queryParameters)) + file = performJSONObjectTransform.call(this, file) + bucketName = filltemplate(bucketName, this.results) + key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') + const queryParameters = { + Bucket: bucketName.trim(), + Body: file, + Key: key + } + return await s3Client.send(new PutObjectCommand(queryParameters)) }) MAFWhen('gz file {string} is uploaded to bucket {string} as key {string}', async function (filePath, bucketName, key) { - filePath = filltemplate(filePath, this.results) - bucketName = filltemplate(bucketName, this.results) - key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') - const fileBuffer = fs.readFileSync(filePath) - const queryParameters = { - Bucket: bucketName.trim(), - Body: fileBuffer, - Key: key - } - return await s3Client.send(new PutObjectCommand(queryParameters)) + filePath = filltemplate(filePath, this.results) + bucketName = filltemplate(bucketName, this.results) + key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') + const fileBuffer = fs.readFileSync(filePath) + const queryParameters = { + Bucket: bucketName.trim(), + Body: fileBuffer, + Key: key + } + return await s3Client.send(new PutObjectCommand(queryParameters)) }) MAFWhen('gz file {string} is uploaded to bucket {string} as key {string} with sha256 check', async function (filePath, bucketName, key) { - const crypto = require('crypto') - filePath = filltemplate(filePath, this.results) - bucketName = filltemplate(bucketName, this.results) - key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') - const fileBuffer = fs.readFileSync(filePath) - const queryParameters = { - Bucket: bucketName.trim(), - Body: fileBuffer, - Key: key, - ChecksumSHA256: crypto.createHash('sha256').update(fileBuffer).digest('base64') - } - return await s3Client.send(new PutObjectCommand(queryParameters)) + const crypto = require('crypto') + filePath = filltemplate(filePath, this.results) + bucketName = filltemplate(bucketName, this.results) + key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') + const fileBuffer = fs.readFileSync(filePath) + const queryParameters = { + Bucket: bucketName.trim(), + Body: fileBuffer, + Key: key, + ChecksumSHA256: crypto.createHash('sha256').update(fileBuffer).digest('base64') + } + return await s3Client.send(new PutObjectCommand(queryParameters)) }) MAFWhen('file {string} is deleted from bucket {string} at path {string}', async function (key, bucketName, path) { - key = filltemplate(key, this.results) - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') - const queryParameters = { - Bucket: bucketName.trim(), - Key: path + key - } - return await s3Client.send(new DeleteObjectCommand(queryParameters)) + key = filltemplate(key, this.results) + bucketName = filltemplate(bucketName, this.results) + path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + const queryParameters = { + Bucket: bucketName.trim(), + Key: path + key + } + return await s3Client.send(new DeleteObjectCommand(queryParameters)) }) MAFWhen('file {string} from bucket {string} at path {string} is retrieved', async function (key, bucketName, path) { - key = filltemplate(key, this.results) - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') - const queryParameters = { - Bucket: bucketName.trim(), - Key: path + key - } - const { Body } = await s3Client.send(new GetObjectCommand(queryParameters)) - const streamToString = (stream) => - new Promise((resolve, reject) => { - const chunks = [] - stream.on('data', (chunk) => chunks.push(chunk)) - stream.on('error', reject) - stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8'))) - }) - return await streamToString(Body) + key = filltemplate(key, this.results) + bucketName = filltemplate(bucketName, this.results) + path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + const queryParameters = { + Bucket: bucketName.trim(), + Key: path + key + } + const { Body } = await s3Client.send(new GetObjectCommand(queryParameters)) + const streamToString = (stream) => + new Promise((resolve, reject) => { + const chunks = [] + stream.on('data', (chunk) => chunks.push(chunk)) + stream.on('error', reject) + stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8'))) + }) + return await streamToString(Body) }) MAFWhen('gz file {string} from bucket {string} at path {string} is written to file {string}', async function (key, bucketName, path, saveName) { - key = filltemplate(key, this.results) - saveName = filltemplate(saveName, this.results) - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') - const queryParameters = { - Bucket: bucketName.trim(), - Key: path + key - } - const { Body } = await s3Client.send(new GetObjectCommand(queryParameters)) - const writeStream = fs.createWriteStream(saveName) - Body.pipe(writeStream) - const streamToFile = (fileName) => - new Promise((resolve, reject) => { - writeStream.on('finish', () => { - resolve(fileName) - }) - Body.on('error', reject) - }) - return await streamToFile(saveName) + key = filltemplate(key, this.results) + saveName = filltemplate(saveName, this.results) + bucketName = filltemplate(bucketName, this.results) + path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + const queryParameters = { + Bucket: bucketName.trim(), + Key: path + key + } + const { Body } = await s3Client.send(new GetObjectCommand(queryParameters)) + const writeStream = fs.createWriteStream(saveName) + Body.pipe(writeStream) + const streamToFile = (fileName) => + new Promise((resolve, reject) => { + writeStream.on('finish', () => { + resolve(fileName) + }) + Body.on('error', reject) + }) + return await streamToFile(saveName) }) /** * This will create a new bucket on S3 */ MAFWhen('bucket {string} is created on S3', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) - if (!/(?!(^xn--|-s3alias$))^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/.test(bucketName.trim())) { - throw new Error('Invalid bucket name. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html for proper bucket naming rules') - } - return await s3Client.send(new CreateBucketCommand({ Bucket: bucketName.trim() })) + bucketName = filltemplate(bucketName, this.results) + if (!/(?!(^xn--|-s3alias$))^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/.test(bucketName.trim())) { + throw new Error('Invalid bucket name. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html for proper bucket naming rules') + } + return await s3Client.send(new CreateBucketCommand({ Bucket: bucketName.trim() })) }) /** * This will create a text test file (For localstack testing) */ MAFWhen('test file {string} is created', async function (fileName) { - fileName = filltemplate(fileName, this.results) - const filePath = getFilePath(fileName, this) - fs.writeFileSync(filePath, 'this is a test file') + fileName = filltemplate(fileName, this.results) + const filePath = getFilePath(fileName, this) + fs.writeFileSync(filePath, 'this is a test file') }) diff --git a/packages/aws/stepDefinitions/sqs.js b/packages/aws/stepDefinitions/sqs.js index b905340..0b4fa83 100644 --- a/packages/aws/stepDefinitions/sqs.js +++ b/packages/aws/stepDefinitions/sqs.js @@ -6,7 +6,7 @@ setDefaultTimeout(15 * 60 * 1000) const sqsClientConfig = { maxAttempts: 3 } if (process.env.AWSENV && process.env.AWSENV.toUpperCase() === 'LOCALSTACK') { - sqsClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' + sqsClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' } const sqsClient = new SQSClient(sqsClientConfig) @@ -15,11 +15,11 @@ const sqsClient = new SQSClient(sqsClientConfig) * @param {String} queueName The name of the queue * @returns The queue url found from AWS. Undefined if the queue could not be found. */ -async function getURLfromQueueName (queueName) { - const queues = await listQueueURLs() - const foundQueueURL = queues.find(queueURL => queueURL.replace(/.*\/(.*)/, '$1').includes(queueName)) - console.log('using queue ' + foundQueueURL) - return foundQueueURL +async function getURLfromQueueName(queueName) { + const queues = await listQueueURLs() + const foundQueueURL = queues.find(queueURL => queueURL.replace(/.*\/(.*)/, '$1').includes(queueName)) + console.log('using queue ' + foundQueueURL) + return foundQueueURL } /** @@ -28,33 +28,33 @@ async function getURLfromQueueName (queueName) { * @param {String} QueueName The name of the queue to send the message to * @returns {JSON} SendMessageCommandOutput (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sqs/interfaces/sendmessagecommandoutput.html) */ -async function sendMessageToQueue (message, QueueName) { - let QueueUrl - if (!/^https?:\/\//.test(QueueName)) { - QueueUrl = await getURLfromQueueName(QueueName) - } else { - QueueUrl = QueueName - } - const queryParameters = { MessageBody: message, QueueUrl } - return await sqsClient.send(new SendMessageCommand(queryParameters)) +async function sendMessageToQueue(message, QueueName) { + let QueueUrl + if (!/^https?:\/\//.test(QueueName)) { + QueueUrl = await getURLfromQueueName(QueueName) + } else { + QueueUrl = QueueName + } + const queryParameters = { MessageBody: message, QueueUrl } + return await sqsClient.send(new SendMessageCommand(queryParameters)) } /** * Fetches the list of queues on AWS * @returns an array of queues */ -async function listQueueURLs () { - let queues = [] - let res = {} - do { - const queryParameters = {} - if (res.NextToken) { - queryParameters.NextToken = res.NextToken - } - res = await sqsClient.send(new ListQueuesCommand(queryParameters)) - queues = queues.concat(res.QueueUrls) - } while (res.NextToken) - return queues +async function listQueueURLs() { + let queues = [] + let res = {} + do { + const queryParameters = {} + if (res.NextToken) { + queryParameters.NextToken = res.NextToken + } + res = await sqsClient.send(new ListQueuesCommand(queryParameters)) + queues = queues.concat(res.QueueUrls) + } while (res.NextToken) + return queues } /** @@ -63,21 +63,21 @@ async function listQueueURLs () { * @param {string} queueURL The name of the queue * @returns an array of messages from the queue */ -async function dequeueMessagesFromQueue (queueURL, numOfMessages = 1) { - const queryParameters = { - MaxNumberOfMessages: numOfMessages, - QueueUrl: queueURL - } - const res = await sqsClient.send(new ReceiveMessageCommand(queryParameters)) - return res.Messages ? res.Messages.map(message => message.Body) : [] +async function dequeueMessagesFromQueue(queueURL, numOfMessages = 1) { + const queryParameters = { + MaxNumberOfMessages: numOfMessages, + QueueUrl: queueURL + } + const res = await sqsClient.send(new ReceiveMessageCommand(queryParameters)) + return res.Messages ? res.Messages.map(message => message.Body) : [] } MAFWhen('queue {string} exists on SQS', async function (queueName) { - queueName = filltemplate(queueName, this.results) - const queueURLs = await listQueueURLs() - if (!queueURLs.some(queueURL => queueURL.replace(/.*\/(.*)/, '$1').includes(queueName))) { - throw new Error("The queue '" + queueName + "' could not be found") - } + queueName = filltemplate(queueName, this.results) + const queueURLs = await listQueueURLs() + if (!queueURLs.some(queueURL => queueURL.replace(/.*\/(.*)/, '$1').includes(queueName))) { + throw new Error("The queue '" + queueName + "' could not be found") + } }) /** @@ -87,58 +87,58 @@ MAFWhen('queue {string} exists on SQS', async function (queueName) { * @returns all queue attributes in JSON format */ MAFWhen('attributes of queue {string} are received', async function (QueueUrl) { - QueueUrl = filltemplate(QueueUrl, this.results) - if (!/^https?:\/\//.test(QueueUrl)) { - QueueUrl = await getURLfromQueueName(QueueUrl) - } - const queryParameters = { - AttributeNames: ['All'], - QueueUrl - - } - const res = await sqsClient.send(new GetQueueAttributesCommand(queryParameters)) - return res.Attributes + QueueUrl = filltemplate(QueueUrl, this.results) + if (!/^https?:\/\//.test(QueueUrl)) { + QueueUrl = await getURLfromQueueName(QueueUrl) + } + const queryParameters = { + AttributeNames: ['All'], + QueueUrl + + } + const res = await sqsClient.send(new GetQueueAttributesCommand(queryParameters)) + return res.Attributes }) MAFWhen('queue {string} is purged', async function (QueueUrl) { - QueueUrl = filltemplate(QueueUrl, this.results) - if (!/^https?:\/\//.test(QueueUrl)) { - QueueUrl = await getURLfromQueueName(QueueUrl) - } - return await sqsClient.send(new PurgeQueueCommand({ QueueUrl })) + QueueUrl = filltemplate(QueueUrl, this.results) + if (!/^https?:\/\//.test(QueueUrl)) { + QueueUrl = await getURLfromQueueName(QueueUrl) + } + return await sqsClient.send(new PurgeQueueCommand({ QueueUrl })) }) MAFWhen('{jsonObject} is sent to queue {string}', async function (message, queue) { - message = performJSONObjectTransform.call(this, message) - queue = filltemplate(queue, this.results) - return sendMessageToQueue(message, queue) + message = performJSONObjectTransform.call(this, message) + queue = filltemplate(queue, this.results) + return sendMessageToQueue(message, queue) }) MAFWhen('{jsonObject} is sent to queue url {string}', async function (message, QueueUrl) { - message = performJSONObjectTransform.call(this, message) - QueueUrl = filltemplate(QueueUrl, this.results) - return await sqsClient.send(new SendMessageCommand({ MessageBody: message, QueueUrl })) + message = performJSONObjectTransform.call(this, message) + QueueUrl = filltemplate(QueueUrl, this.results) + return await sqsClient.send(new SendMessageCommand({ MessageBody: message, QueueUrl })) }) MAFWhen('{string} message is sent to queue {string}', async function (message, queue) { - message = filltemplate(message, this.results) - queue = filltemplate(queue, this.results) - return sendMessageToQueue(message, queue) + message = filltemplate(message, this.results) + queue = filltemplate(queue, this.results) + return sendMessageToQueue(message, queue) }) MAFWhen('{string} message is sent to queue url {string}', async function (message, QueueUrl) { - message = filltemplate(message, this.results) - QueueUrl = filltemplate(QueueUrl, this.results) - return await sqsClient.send(new SendMessageCommand({ MessageBody: message, QueueUrl })) + message = filltemplate(message, this.results) + QueueUrl = filltemplate(QueueUrl, this.results) + return await sqsClient.send(new SendMessageCommand({ MessageBody: message, QueueUrl })) }) MAFWhen('the next message is received from queue {string}', async function (queueURL) { - queueURL = filltemplate(queueURL, this.results) - const res = await dequeueMessagesFromQueue(queueURL) - return res[0] + queueURL = filltemplate(queueURL, this.results) + const res = await dequeueMessagesFromQueue(queueURL) + return res[0] }) MAFWhen('{int} messages are received from queue {string}', async function (numOfMessages, queueURL) { - queueURL = filltemplate(queueURL, this.results) - return await dequeueMessagesFromQueue(queueURL, numOfMessages) + queueURL = filltemplate(queueURL, this.results) + return await dequeueMessagesFromQueue(queueURL, numOfMessages) }) diff --git a/packages/aws/stepDefinitions/steps.js b/packages/aws/stepDefinitions/steps.js deleted file mode 100644 index 6d2a8b2..0000000 --- a/packages/aws/stepDefinitions/steps.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../index') From ad7e1fe8916f53f3f549d23c6f1f786f92627973 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Mon, 8 Jan 2024 10:28:10 -0500 Subject: [PATCH 15/48] Bump localstack --- .github/workflows/Test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 98885bd..49d0426 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@v3 - name: Start LocalStack run: | - pip install localstack==2.3.2 + pip install localstack==3.0.2 localstack start -d echo "Waiting for LocalStack startup..." localstack wait -t 30 From 2fbd4c8b8a842b84be8327cead83a33b36bc4073 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Mon, 8 Jan 2024 11:24:18 -0500 Subject: [PATCH 16/48] re-add api runFeature.sh --- packages/api/runFeature.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 packages/api/runFeature.sh diff --git a/packages/api/runFeature.sh b/packages/api/runFeature.sh new file mode 100644 index 0000000..1d8a6a3 --- /dev/null +++ b/packages/api/runFeature.sh @@ -0,0 +1,10 @@ +AWSENV='LOCALSTACK' +mkdir -p test/report +if [[ "$ENVIRONMENT" == "COVERAGE" ]]; then + npx nyc --reporter=lcov --reporter=text cucumber-js $EXTRAS -f json:test/report/aws.json --require "stepDefinitions/*.js" features/$* +else + npx cucumber-js $EXTRAS -f json:test/report/aws.json --require "stepDefinitions/*.js" features/$* +fi +result=$? +npx multiReport +exit $result From b2571b8211d5da6e34962027c04228c2f1234332 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 23 Jan 2024 16:17:59 -0500 Subject: [PATCH 17/48] Update filltemplate to fillTemplate --- packages/api/stepDefinitions/api.js | 12 +- .../aws/stepDefinitions/cloudwatch-logs.js | 6 +- packages/aws/stepDefinitions/dynamodb.js | 16 +- packages/aws/stepDefinitions/ecs.js | 26 ++-- packages/aws/stepDefinitions/lambda.js | 4 +- packages/aws/stepDefinitions/modules.js | 2 - packages/aws/stepDefinitions/s3.js | 60 ++++---- packages/aws/stepDefinitions/sqs.js | 24 +-- packages/core/index.js | 140 +----------------- packages/core/stepDefinitions/core.js | 137 +++++++++++++++++ packages/validations/index.js | 44 +++--- 11 files changed, 233 insertions(+), 238 deletions(-) delete mode 100644 packages/aws/stepDefinitions/modules.js create mode 100644 packages/core/stepDefinitions/core.js diff --git a/packages/api/stepDefinitions/api.js b/packages/api/stepDefinitions/api.js index de431b5..d825e2d 100644 --- a/packages/api/stepDefinitions/api.js +++ b/packages/api/stepDefinitions/api.js @@ -1,5 +1,5 @@ global.fetch = require('node-fetch') -const { MAFWhen, MAFSave, performJSONObjectTransform, filltemplate, canAttach, getFilePath } = require('@ln-maf/core') +const { MAFWhen, MAFSave, performJSONObjectTransform, fillTemplate, canAttach, getFilePath } = require('@ln-maf/core') const { setDefaultTimeout, Then } = require('@cucumber/cucumber') const FormData = require('form-data') @@ -13,7 +13,7 @@ setDefaultTimeout(15 * 1000) * @deprecated Set the item 'url' instead */ MAFWhen('url {string}', function (url) { - filltemplate(url, this.results) + fillTemplate(url, this.results) // Remove trailing slash url = url.replace(/\/$/, '') MAFSave.call(this, 'url', url) @@ -23,7 +23,7 @@ MAFWhen('url {string}', function (url) { * @deprecated Set the item 'api' instead */ MAFWhen('api {string}', function (api) { - filltemplate(api, this.results) + fillTemplate(api, this.results) // Remove leading slash api = api.replace(/^\//, '') MAFSave.call(this, 'api', api) @@ -33,7 +33,7 @@ MAFWhen('api {string}', function (api) { * @deprecated Set the item 'body' instead */ MAFWhen('body {string}', function (body) { - filltemplate(body, this.results) + fillTemplate(body, this.results) MAFSave.call(this, 'body', body) }) @@ -41,7 +41,7 @@ MAFWhen('body {string}', function (body) { * @deprecated Set the item 'headers' instead */ MAFWhen('headers {string}', function (headers) { - filltemplate(headers, this.results) + fillTemplate(headers, this.results) MAFSave.call(this, 'headers', headers) }) @@ -241,7 +241,7 @@ MAFWhen('api request is performed', async function () { }) MAFWhen('perform api request:', async function (string) { - const request = JSON.parse(filltemplate(string, this.results)) + const request = JSON.parse(fillTemplate(string, this.results)) const results = await requestBuilder.call(this, request) MAFSave.call(this, 'response', results.response) return results diff --git a/packages/aws/stepDefinitions/cloudwatch-logs.js b/packages/aws/stepDefinitions/cloudwatch-logs.js index 37b9354..c458b95 100644 --- a/packages/aws/stepDefinitions/cloudwatch-logs.js +++ b/packages/aws/stepDefinitions/cloudwatch-logs.js @@ -1,5 +1,5 @@ const { setDefaultTimeout } = require('@cucumber/cucumber') -const { MAFWhen, filltemplate } = require('@ln-maf/core') +const { MAFWhen, fillTemplate } = require('@ln-maf/core') const { CloudWatchLogsClient, FilterLogEventsCommand } = require('@aws-sdk/client-cloudwatch-logs') const { SSMClient, GetParameterCommand } = require('@aws-sdk/client-ssm') const { DateTime } = require('luxon') @@ -16,7 +16,7 @@ const cloudwatchLogsClient = new CloudWatchLogsClient(cloudwatchLogsClientConfig * Returns the value of the parameter from the parameter store */ MAFWhen('parameter {string} value is retrieved from the parameter store', async function (parameterName) { - parameterName = filltemplate(parameterName, this.results) + parameterName = fillTemplate(parameterName, this.results) const ssmClient = new SSMClient() const res = await ssmClient.send(new GetParameterCommand({ Name: parameterName })) return res.Parameter.Value @@ -27,7 +27,7 @@ MAFWhen('parameter {string} value is retrieved from the parameter store', async */ MAFWhen('cloudwatch logs from log group {string} from {int} minutes ago to now are retrieved', async function (logGroup, minutes) { const startTime = DateTime.now().minus({ minutes }).toUTC().toMillis() - logGroup = filltemplate(logGroup, this.results) + logGroup = fillTemplate(logGroup, this.results) let logs = [] let res = {} let queries = 0 diff --git a/packages/aws/stepDefinitions/dynamodb.js b/packages/aws/stepDefinitions/dynamodb.js index 92558f2..2f8e184 100644 --- a/packages/aws/stepDefinitions/dynamodb.js +++ b/packages/aws/stepDefinitions/dynamodb.js @@ -1,12 +1,10 @@ const { setDefaultTimeout } = require('@cucumber/cucumber') -const { performJSONObjectTransform, MAFWhen, filltemplate } = require('@ln-maf/core') +const { performJSONObjectTransform, MAFWhen, fillTemplate } = require('@ln-maf/core') const { DynamoDBClient, ListTablesCommand, QueryCommand, PutItemCommand, UpdateItemCommand, DeleteItemCommand } = require('@aws-sdk/client-dynamodb') setDefaultTimeout(15 * 60 * 1000) -const DynamoDBClientConfig = { - maxAttempts: 3 -} +const DynamoDBClientConfig = { maxAttempts: 3 } if (process.env.AWSENV && process.env.AWSENV.toUpperCase() === 'LOCALSTACK') { DynamoDBClientConfig.endpoint = process.env.LOCALSTACK_HOSTNAME ? `http://${process.env.LOCALSTACK_HOSTNAME}:4566` : 'http://localhost:4566' } @@ -106,7 +104,7 @@ MAFWhen('{jsonObject} is converted to dynamo', function (payload) { }) MAFWhen('table {string} exists on dynamo', async function (tableName) { - tableName = filltemplate(tableName, this.results) + tableName = fillTemplate(tableName, this.results) if (!await tableExists(tableName)) { throw new Error('The table ' + tableName + ' does not exist on dynamoDB') } @@ -230,7 +228,7 @@ MAFWhen('perform dynamodb query:', async function (docString) { if (!this.results) { this.results = {} } - const payload = JSON.parse(filltemplate(docString, this.results)) + const payload = JSON.parse(fillTemplate(docString, this.results)) return await performDynamoDBQueryFromJSON.call(this, payload) }) @@ -325,7 +323,7 @@ MAFWhen('perform dynamodb put-item:', async function (docString) { if (!this.results) { this.results = {} } - const payload = JSON.parse(filltemplate(docString, this.results)) + const payload = JSON.parse(fillTemplate(docString, this.results)) return await performDynamoDBPutItemFromJSON.call(this, payload) }) @@ -430,7 +428,7 @@ MAFWhen('dynamodb update-item from {jsonObject} is performed', async function (p * Updates a dynamodb item based on the provided docstring and variables already defined */ MAFWhen('perform dynamodb update-item:', async function (docString) { - const payload = JSON.parse(filltemplate(docString, this.results)) + const payload = JSON.parse(fillTemplate(docString, this.results)) return await performDynamoDBUpdateFromJSON.call(this, payload) }) @@ -525,7 +523,7 @@ MAFWhen('dynamodb delete-item from {jsonObject} is performed', async function (p * Deletes a dynamodb item based on the provided docstring and variables already defined */ MAFWhen('perform dynamodb delete-item:', async function (docString) { - const payload = JSON.parse(filltemplate(docString, this.results)) + const payload = JSON.parse(fillTemplate(docString, this.results)) return await performDynamoDBDeleteFromJSON.call(this, payload) }) diff --git a/packages/aws/stepDefinitions/ecs.js b/packages/aws/stepDefinitions/ecs.js index afd29a2..7730eed 100644 --- a/packages/aws/stepDefinitions/ecs.js +++ b/packages/aws/stepDefinitions/ecs.js @@ -1,5 +1,5 @@ const { setDefaultTimeout } = require('@cucumber/cucumber') -const { MAFWhen, performJSONObjectTransform, filltemplate } = require('@ln-maf/core') +const { MAFWhen, performJSONObjectTransform, fillTemplate } = require('@ln-maf/core') const { ECSClient, ListTaskDefinitionsCommand, ListClustersCommand, RunTaskCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand } = require('@aws-sdk/client-ecs') setDefaultTimeout(15 * 60 * 1000) @@ -32,7 +32,7 @@ async function listTaskDefinitions(taskDefinitionFamilyPrefix) { } MAFWhen('ecs taskDefinition {string} does not exist', async function (taskDefinitionName) { - taskDefinitionName = filltemplate(taskDefinitionName, this.results) + taskDefinitionName = fillTemplate(taskDefinitionName, this.results) const taskDefinitionARNs = await listTaskDefinitions(taskDefinitionName) if (taskDefinitionARNs.some(arn => arn.includes(taskDefinitionName))) { throw new Error('ecs TaskDefinition ' + taskDefinitionName + ' does exist') @@ -40,7 +40,7 @@ MAFWhen('ecs taskDefinition {string} does not exist', async function (taskDefini }) MAFWhen('ecs taskDefinition {string} exists', async function (taskDefinitionName) { - taskDefinitionName = filltemplate(taskDefinitionName, this.results) + taskDefinitionName = fillTemplate(taskDefinitionName, this.results) const taskDefinitionARNs = await listTaskDefinitions(taskDefinitionName) if (!taskDefinitionARNs.some(arn => arn.includes(taskDefinitionName))) { throw new Error('ecs TaskDefinition ' + taskDefinitionName + ' does not exist') @@ -66,12 +66,12 @@ async function listClusters() { } MAFWhen('ecs clusters from AWS are retrieved', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) + clusterName = fillTemplate(clusterName, this.results) return await listClusters() }) MAFWhen('ecs cluster {string} does not exist', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) + clusterName = fillTemplate(clusterName, this.results) const clusterARNs = await listClusters() if (clusterARNs.some(arn => arn.includes(clusterName))) { throw new Error('ECS cluster ' + clusterName + ' does exists') @@ -79,7 +79,7 @@ MAFWhen('ecs cluster {string} does not exist', async function (clusterName) { }) MAFWhen('ecs cluster {string} exists', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) + clusterName = fillTemplate(clusterName, this.results) const clusterARNs = await listClusters() if (!clusterARNs.some(arn => arn.includes(clusterName))) { throw new Error('ECS cluster ' + clusterName + ' does exists') @@ -92,7 +92,7 @@ async function getClusterARNFromName(clusterName) { } MAFWhen('get ARN of ecs cluster {string}', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) + clusterName = fillTemplate(clusterName, this.results) const name = getClusterARNFromName(clusterName) if (!name) { throw new Error('ECS cluster ' + clusterName + ' can not be found on AWS') @@ -101,7 +101,7 @@ MAFWhen('get ARN of ecs cluster {string}', async function (clusterName) { }) MAFWhen('information from ecs cluster {string} is retrieved', async function (clusterName) { - clusterName = filltemplate(clusterName, this.results) + clusterName = fillTemplate(clusterName, this.results) const name = await getClusterARNFromName(clusterName) if (!name) { throw new Error('ECS cluster ' + clusterName + ' can not be found on AWS') @@ -185,7 +185,7 @@ MAFWhen('ecs run-task from {jsonObject} is performed', async function (payload) * Performs an ecs task based on the provided docstring and variables defined in a document string */ MAFWhen('perform ecs run-task:', async function (docString) { - const payload = JSON.parse(filltemplate(docString, this.results)) + const payload = JSON.parse(fillTemplate(docString, this.results)) return await performECSRunTaskFromJSON.call(this, payload) }) @@ -203,8 +203,8 @@ MAFWhen('ecs run-task is performed', async function () { * @param {String} clusterName the name of the cluster */ MAFWhen('at least one task is running for service {string} in cluster {string}', async function (serviceName, clusterName) { - serviceName = filltemplate(serviceName, this.results) - clusterName = filltemplate(clusterName, this.results) + serviceName = fillTemplate(serviceName, this.results) + clusterName = fillTemplate(clusterName, this.results) const ecsClient = new ECSClient({ maxAttempts: 2 }) const serviceDetails = await ecsClient.send(new DescribeServicesCommand({ cluster: clusterName, @@ -227,8 +227,8 @@ MAFWhen('at least one task is running for service {string} in cluster {string}', * @param {String} clusterName the name of the cluster */ MAFWhen('image name for service {string} in cluster {string} is retrieved', async function (serviceName, clusterName) { - serviceName = filltemplate(serviceName, this.results) - clusterName = filltemplate(clusterName, this.results) + serviceName = fillTemplate(serviceName, this.results) + clusterName = fillTemplate(clusterName, this.results) const serviceDetails = await ecsClient.send(new DescribeServicesCommand({ cluster: clusterName, services: [serviceName] diff --git a/packages/aws/stepDefinitions/lambda.js b/packages/aws/stepDefinitions/lambda.js index cdbe195..7b5a2ec 100644 --- a/packages/aws/stepDefinitions/lambda.js +++ b/packages/aws/stepDefinitions/lambda.js @@ -1,5 +1,5 @@ const { setDefaultTimeout } = require('@cucumber/cucumber') -const { MAFWhen, performJSONObjectTransform, filltemplate } = require('@ln-maf/core') +const { MAFWhen, performJSONObjectTransform, fillTemplate } = require('@ln-maf/core') const { LambdaClient, InvokeCommand } = require('@aws-sdk/client-lambda') setDefaultTimeout(15 * 60 * 1000) @@ -11,7 +11,7 @@ if (process.env.AWSENV && process.env.AWSENV.toUpperCase() === 'LOCALSTACK') { const lambdaClient = new LambdaClient(lambdaClientConfig) MAFWhen('a user supplies {jsonObject} to endpoint {string}', async function (payload, functionName) { - functionName = filltemplate(functionName, this.results) + functionName = fillTemplate(functionName, this.results) payload = performJSONObjectTransform.call(this, payload) const queryParameters = { FunctionName: functionName, diff --git a/packages/aws/stepDefinitions/modules.js b/packages/aws/stepDefinitions/modules.js deleted file mode 100644 index ea4fc08..0000000 --- a/packages/aws/stepDefinitions/modules.js +++ /dev/null @@ -1,2 +0,0 @@ -require('@ln-maf/validations') -require('@ln-maf/core/parameter_types') diff --git a/packages/aws/stepDefinitions/s3.js b/packages/aws/stepDefinitions/s3.js index 673de28..802d256 100644 --- a/packages/aws/stepDefinitions/s3.js +++ b/packages/aws/stepDefinitions/s3.js @@ -1,7 +1,7 @@ const { setDefaultTimeout } = require('@cucumber/cucumber') const fs = require('fs') const { S3Client, ListBucketsCommand, CreateBucketCommand, ListObjectsV2Command, PutObjectCommand, GetObjectCommand, DeleteObjectCommand } = require('@aws-sdk/client-s3') -const { getFilePath, MAFWhen, filltemplate, performJSONObjectTransform } = require('@ln-maf/core') +const { getFilePath, MAFWhen, fillTemplate, performJSONObjectTransform } = require('@ln-maf/core') setDefaultTimeout(15 * 60 * 1000) @@ -31,21 +31,21 @@ async function bucketExists(bucketName) { } MAFWhen('bucket {string} exists on S3', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) + bucketName = fillTemplate(bucketName, this.results) if (!await bucketExists(bucketName)) { throw new Error('Bucket ' + bucketName + ' does not exist on S3') } }) MAFWhen('bucket {string} is not on S3', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) + bucketName = fillTemplate(bucketName, this.results) if (await bucketExists(bucketName)) { throw new Error('Bucket ' + bucketName + ' does exist on S3') } }) MAFWhen('bucket {string} exists', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) + bucketName = fillTemplate(bucketName, this.results) if (!await bucketExists(bucketName)) { throw new Error('Bucket ' + bucketName + ' does not exist on S3') } @@ -83,20 +83,20 @@ async function listS3Files(bucketName, path, all = false) { } MAFWhen('file list of bucket {string} on path {string} is retrieved', async function (bucketName, path) { - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + bucketName = fillTemplate(bucketName, this.results) + path = fillTemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') return await listS3Files(bucketName, path) }) MAFWhen('all files of bucket {string} is retrieved', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) + bucketName = fillTemplate(bucketName, this.results) return await listS3Files(bucketName, '', true) }) MAFWhen('file exists with name {string} at path {string} in bucket {string}', async function (key, path, bucketName) { - key = filltemplate(key, this.results) - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + key = fillTemplate(key, this.results) + bucketName = fillTemplate(bucketName, this.results) + path = fillTemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') const files = await listS3Files(bucketName, path) if (!files.includes(path + key)) { throw new Error('The file does not exist in ' + s3URL(bucketName, path)) @@ -108,8 +108,8 @@ MAFWhen('file exists with name {string} at path {string} in bucket {string}', as */ MAFWhen('{jsonObject} is uploaded to bucket {string} as key {string}', async function (file, bucketName, key) { file = performJSONObjectTransform.call(this, file) - bucketName = filltemplate(bucketName, this.results) - key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') + bucketName = fillTemplate(bucketName, this.results) + key = fillTemplate(key, this.results).replace(/\/{2,}/g, '/') const queryParameters = { Bucket: bucketName.trim(), Body: file, @@ -119,9 +119,9 @@ MAFWhen('{jsonObject} is uploaded to bucket {string} as key {string}', async fun }) MAFWhen('gz file {string} is uploaded to bucket {string} as key {string}', async function (filePath, bucketName, key) { - filePath = filltemplate(filePath, this.results) - bucketName = filltemplate(bucketName, this.results) - key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') + filePath = fillTemplate(filePath, this.results) + bucketName = fillTemplate(bucketName, this.results) + key = fillTemplate(key, this.results).replace(/\/{2,}/g, '/') const fileBuffer = fs.readFileSync(filePath) const queryParameters = { Bucket: bucketName.trim(), @@ -133,9 +133,9 @@ MAFWhen('gz file {string} is uploaded to bucket {string} as key {string}', async MAFWhen('gz file {string} is uploaded to bucket {string} as key {string} with sha256 check', async function (filePath, bucketName, key) { const crypto = require('crypto') - filePath = filltemplate(filePath, this.results) - bucketName = filltemplate(bucketName, this.results) - key = filltemplate(key, this.results).replace(/\/{2,}/g, '/') + filePath = fillTemplate(filePath, this.results) + bucketName = fillTemplate(bucketName, this.results) + key = fillTemplate(key, this.results).replace(/\/{2,}/g, '/') const fileBuffer = fs.readFileSync(filePath) const queryParameters = { Bucket: bucketName.trim(), @@ -147,9 +147,9 @@ MAFWhen('gz file {string} is uploaded to bucket {string} as key {string} with sh }) MAFWhen('file {string} is deleted from bucket {string} at path {string}', async function (key, bucketName, path) { - key = filltemplate(key, this.results) - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + key = fillTemplate(key, this.results) + bucketName = fillTemplate(bucketName, this.results) + path = fillTemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') const queryParameters = { Bucket: bucketName.trim(), Key: path + key @@ -158,9 +158,9 @@ MAFWhen('file {string} is deleted from bucket {string} at path {string}', async }) MAFWhen('file {string} from bucket {string} at path {string} is retrieved', async function (key, bucketName, path) { - key = filltemplate(key, this.results) - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + key = fillTemplate(key, this.results) + bucketName = fillTemplate(bucketName, this.results) + path = fillTemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') const queryParameters = { Bucket: bucketName.trim(), Key: path + key @@ -177,10 +177,10 @@ MAFWhen('file {string} from bucket {string} at path {string} is retrieved', asyn }) MAFWhen('gz file {string} from bucket {string} at path {string} is written to file {string}', async function (key, bucketName, path, saveName) { - key = filltemplate(key, this.results) - saveName = filltemplate(saveName, this.results) - bucketName = filltemplate(bucketName, this.results) - path = filltemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') + key = fillTemplate(key, this.results) + saveName = fillTemplate(saveName, this.results) + bucketName = fillTemplate(bucketName, this.results) + path = fillTemplate(path, this.results).replace(/\/{2,}/g, '/').replace(/([^/]{1,})$/, '$1/') const queryParameters = { Bucket: bucketName.trim(), Key: path + key @@ -202,7 +202,7 @@ MAFWhen('gz file {string} from bucket {string} at path {string} is written to fi * This will create a new bucket on S3 */ MAFWhen('bucket {string} is created on S3', async function (bucketName) { - bucketName = filltemplate(bucketName, this.results) + bucketName = fillTemplate(bucketName, this.results) if (!/(?!(^xn--|-s3alias$))^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/.test(bucketName.trim())) { throw new Error('Invalid bucket name. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html for proper bucket naming rules') } @@ -213,7 +213,7 @@ MAFWhen('bucket {string} is created on S3', async function (bucketName) { * This will create a text test file (For localstack testing) */ MAFWhen('test file {string} is created', async function (fileName) { - fileName = filltemplate(fileName, this.results) + fileName = fillTemplate(fileName, this.results) const filePath = getFilePath(fileName, this) fs.writeFileSync(filePath, 'this is a test file') }) diff --git a/packages/aws/stepDefinitions/sqs.js b/packages/aws/stepDefinitions/sqs.js index 0b4fa83..8c467ca 100644 --- a/packages/aws/stepDefinitions/sqs.js +++ b/packages/aws/stepDefinitions/sqs.js @@ -1,5 +1,5 @@ const { setDefaultTimeout } = require('@cucumber/cucumber') -const { MAFWhen, performJSONObjectTransform, filltemplate } = require('@ln-maf/core') +const { MAFWhen, performJSONObjectTransform, fillTemplate } = require('@ln-maf/core') const { SQSClient, ListQueuesCommand, GetQueueAttributesCommand, SendMessageCommand, ReceiveMessageCommand, PurgeQueueCommand } = require('@aws-sdk/client-sqs') setDefaultTimeout(15 * 60 * 1000) @@ -73,7 +73,7 @@ async function dequeueMessagesFromQueue(queueURL, numOfMessages = 1) { } MAFWhen('queue {string} exists on SQS', async function (queueName) { - queueName = filltemplate(queueName, this.results) + queueName = fillTemplate(queueName, this.results) const queueURLs = await listQueueURLs() if (!queueURLs.some(queueURL => queueURL.replace(/.*\/(.*)/, '$1').includes(queueName))) { throw new Error("The queue '" + queueName + "' could not be found") @@ -87,7 +87,7 @@ MAFWhen('queue {string} exists on SQS', async function (queueName) { * @returns all queue attributes in JSON format */ MAFWhen('attributes of queue {string} are received', async function (QueueUrl) { - QueueUrl = filltemplate(QueueUrl, this.results) + QueueUrl = fillTemplate(QueueUrl, this.results) if (!/^https?:\/\//.test(QueueUrl)) { QueueUrl = await getURLfromQueueName(QueueUrl) } @@ -101,7 +101,7 @@ MAFWhen('attributes of queue {string} are received', async function (QueueUrl) { }) MAFWhen('queue {string} is purged', async function (QueueUrl) { - QueueUrl = filltemplate(QueueUrl, this.results) + QueueUrl = fillTemplate(QueueUrl, this.results) if (!/^https?:\/\//.test(QueueUrl)) { QueueUrl = await getURLfromQueueName(QueueUrl) } @@ -110,35 +110,35 @@ MAFWhen('queue {string} is purged', async function (QueueUrl) { MAFWhen('{jsonObject} is sent to queue {string}', async function (message, queue) { message = performJSONObjectTransform.call(this, message) - queue = filltemplate(queue, this.results) + queue = fillTemplate(queue, this.results) return sendMessageToQueue(message, queue) }) MAFWhen('{jsonObject} is sent to queue url {string}', async function (message, QueueUrl) { message = performJSONObjectTransform.call(this, message) - QueueUrl = filltemplate(QueueUrl, this.results) + QueueUrl = fillTemplate(QueueUrl, this.results) return await sqsClient.send(new SendMessageCommand({ MessageBody: message, QueueUrl })) }) MAFWhen('{string} message is sent to queue {string}', async function (message, queue) { - message = filltemplate(message, this.results) - queue = filltemplate(queue, this.results) + message = fillTemplate(message, this.results) + queue = fillTemplate(queue, this.results) return sendMessageToQueue(message, queue) }) MAFWhen('{string} message is sent to queue url {string}', async function (message, QueueUrl) { - message = filltemplate(message, this.results) - QueueUrl = filltemplate(QueueUrl, this.results) + message = fillTemplate(message, this.results) + QueueUrl = fillTemplate(QueueUrl, this.results) return await sqsClient.send(new SendMessageCommand({ MessageBody: message, QueueUrl })) }) MAFWhen('the next message is received from queue {string}', async function (queueURL) { - queueURL = filltemplate(queueURL, this.results) + queueURL = fillTemplate(queueURL, this.results) const res = await dequeueMessagesFromQueue(queueURL) return res[0] }) MAFWhen('{int} messages are received from queue {string}', async function (numOfMessages, queueURL) { - queueURL = filltemplate(queueURL, this.results) + queueURL = fillTemplate(queueURL, this.results) return await dequeueMessagesFromQueue(queueURL, numOfMessages) }) diff --git a/packages/core/index.js b/packages/core/index.js index 1a11a93..8f505af 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -1,139 +1 @@ -const filltemplate = require('./filltemplate') -const Cucumber = require('@cucumber/cucumber') -const When = Cucumber.When - -const fs = require('fs') -const tryAttach = function (attach, type = 'text') { - if (canAttach.call(this)) { - if (typeof attach === 'object') { - this.attach(JSON.stringify(attach, null, 2)) - } else { - this.attach(attach, type) - } - } -} -const canAttach = function () { - return this.results.attach !== 'false' -} -const applyJSONToString = function (string, scenario, ft=true) { - if (!scenario.results) { - scenario.results = {} - } - if (!scenario.results.moment) { - scenario.results.moment = require('moment') - } - if(ft) - string = filltemplate(string, scenario.results) - try { - if (string.trim() !== '') { - const obj = JSON.parse(string) - if (typeof obj === 'object') { - string = obj - } - } - } catch (e) { - try { - string = string.split('\n').filter(i => i !== '').map(i => JSON.parse(i)) - } catch (e) { } - } - return string -} - -const performJSONObjectTransform = function (items, ft=true) { - if (!this.results) { - this.results = {} - } - if(this.results.skipFillTemplate && this.results.skipFillTemplate.toUpperCase() === "TRUE") { - ft=false - } - if (items.value) { - items.value = items.value.slice(1, items.value.length - 1) - } - items.type = items.type1 - if (items.type === null || items.type === undefined) { - items.type = items.type2 - } - if (items.type === null || items.type === undefined) { - items.type = '' - } - items.type = items.type.trim() - switch (items.type) { - case 'it': - return this.results.lastRun - case 'item': - if(ft) - items.value = filltemplate(items.value, this.results) - return eval('this.results.' + items.value) - case 'file': - items.value = filltemplate(items.value, this.results) - return applyJSONToString(readFile(items.value, this), this, ft) - case '': - case 'string': - return applyJSONToString(items.value, this, ft) - default: - return parseInt(items.type) - } -} -const getFilePath = (filename, scenario) => { - let dir = '' - if (!scenario.results) { - scenario.results = {} - } - if (scenario.results.directory) { - dir = scenario.results.directory - } - if (!dir.endsWith('/') && dir.trim() !== '') { - dir += '/' - } - return dir + filename -} -const writeFile = (filename, data, scenario) => { - let toWrite = data - if (typeof data === 'number') { - toWrite = JSON.stringify(data) - } - return fs.writeFileSync(getFilePath(filename, scenario), toWrite, 'utf-8') -} -const writeFileBuffer = (filename, data, scenario) => { - return fs.writeFileSync(getFilePath(filename, scenario), data) -} -const readFileBuffer = (filename, scenario) => { - return fs.readFileSync(getFilePath(filename, scenario)) -} -const readFile = (filename, scenario, dataType = 'utf-8') => { - return fs.readFileSync(getFilePath(filename, scenario), dataType) -} - -const MAFWhen = function (name, func) { - const params = [] - for (let i = 0; i < func.length; i++) { - params.push('var' + i) - } - // eslint-disable-next-line no-use-before-define - let tmpFunc - eval(` - tmpFunc=async function(${params.join(',')}) { - - if(!this.results) { - this.results={} - } - this.results.lastRun=await func.call(this, ...([].slice.call(arguments))) - if(canAttach.call(this)) - this.attach(JSON.stringify({ lastRun: this.results.lastRun }, null, 2)) - } - `) - When(name, tmpFunc) -} - -const MAFSave = function (location, obj) { - if (!this.results) { - this.results = {} - } - const loc = 'this.results.' + location - const set = loc + '=obj' - eval(set) - const res = {} - res[location] = eval(loc) - tryAttach.call(this, res) -} -module.exports = { performJSONObjectTransform, applyJSONToString, readFile, writeFile, writeFileBuffer, readFileBuffer, getFilePath, canAttach, MAFWhen, MAFSave, filltemplate, tryAttach } +require('./stepDefinitions/core') diff --git a/packages/core/stepDefinitions/core.js b/packages/core/stepDefinitions/core.js new file mode 100644 index 0000000..98bc01d --- /dev/null +++ b/packages/core/stepDefinitions/core.js @@ -0,0 +1,137 @@ +const fillTemplate = require('./fillTemplate') +const Cucumber = require('@cucumber/cucumber') +const When = Cucumber.When + +const fs = require('fs') +const tryAttach = function (attach, type = 'text') { + if (canAttach.call(this)) { + if (typeof attach === 'object') { + this.attach(JSON.stringify(attach, null, 2)) + } else { + this.attach(attach, type) + } + } +} +const canAttach = function () { + return this.results.attach !== 'false' +} +const applyJSONToString = function (string, scenario, ft = true) { + if (!scenario.results) { + scenario.results = {} + } + if (!scenario.results.moment) { + scenario.results.moment = require('moment') + } + if (ft) { string = fillTemplate(string, scenario.results) } + try { + if (string.trim() !== '') { + const obj = JSON.parse(string) + if (typeof obj === 'object') { + string = obj + } + } + } catch (e) { + try { + string = string.split('\n').filter(i => i !== '').map(i => JSON.parse(i)) + } catch (e) { } + } + return string +} + +const performJSONObjectTransform = function (items, ft = true) { + if (!this.results) { + this.results = {} + } + if (this.results.skipFillTemplate && this.results.skipFillTemplate.toUpperCase() === 'TRUE') { + ft = false + } + if (items.value) { + items.value = items.value.slice(1, items.value.length - 1) + } + items.type = items.type1 + if (items.type === null || items.type === undefined) { + items.type = items.type2 + } + if (items.type === null || items.type === undefined) { + items.type = '' + } + items.type = items.type.trim() + switch (items.type) { + case 'it': + return this.results.lastRun + case 'item': + if (ft) { items.value = fillTemplate(items.value, this.results) } + return eval('this.results.' + items.value) + case 'file': + items.value = fillTemplate(items.value, this.results) + return applyJSONToString(readFile(items.value, this), this, ft) + case '': + case 'string': + return applyJSONToString(items.value, this, ft) + default: + return parseInt(items.type) + } +} +const getFilePath = (filename, scenario) => { + let dir = '' + if (!scenario.results) { + scenario.results = {} + } + if (scenario.results.directory) { + dir = scenario.results.directory + } + if (!dir.endsWith('/') && dir.trim() !== '') { + dir += '/' + } + return dir + filename +} +const writeFile = (filename, data, scenario) => { + let toWrite = data + if (typeof data === 'number') { + toWrite = JSON.stringify(data) + } + return fs.writeFileSync(getFilePath(filename, scenario), toWrite, 'utf-8') +} +const writeFileBuffer = (filename, data, scenario) => { + return fs.writeFileSync(getFilePath(filename, scenario), data) +} +const readFileBuffer = (filename, scenario) => { + return fs.readFileSync(getFilePath(filename, scenario)) +} +const readFile = (filename, scenario, dataType = 'utf-8') => { + return fs.readFileSync(getFilePath(filename, scenario), dataType) +} + +const MAFWhen = function (name, func) { + const params = [] + for (let i = 0; i < func.length; i++) { + params.push('var' + i) + } + // eslint-disable-next-line no-use-before-define + let tmpFunc + eval(` + tmpFunc=async function(${params.join(',')}) { + + if(!this.results) { + this.results={} + } + this.results.lastRun=await func.call(this, ...([].slice.call(arguments))) + if(canAttach.call(this)) + this.attach(JSON.stringify({ lastRun: this.results.lastRun }, null, 2)) + } + `) + When(name, tmpFunc) +} + +const MAFSave = function (location, obj) { + if (!this.results) { + this.results = {} + } + const loc = 'this.results.' + location + const set = loc + '=obj' + eval(set) + const res = {} + res[location] = eval(loc) + tryAttach.call(this, res) +} +module.exports = { performJSONObjectTransform, applyJSONToString, readFile, writeFile, writeFileBuffer, readFileBuffer, getFilePath, canAttach, MAFWhen, MAFSave, fillTemplate, tryAttach } diff --git a/packages/validations/index.js b/packages/validations/index.js index a3a4582..331bf32 100644 --- a/packages/validations/index.js +++ b/packages/validations/index.js @@ -7,7 +7,7 @@ const Given = Cucumber.Given const When = Cucumber.When const Then = Cucumber.Then let world = null -const { filltemplate } = require('@ln-maf/core') +const { fillTemplate } = require('@ln-maf/core') const { MAFSave, tryAttach, performJSONObjectTransform, applyJSONToString, readFile, writeFile, writeFileBuffer, readFileBuffer, getFilePath, MAFWhen } = require('@ln-maf/core') Before((scenario) => { @@ -26,7 +26,7 @@ const setToString = function (location, value, scenario, attach = true) { } MAFWhen('run templateString', function (docString) { - return filltemplate(docString, this.results) + return fillTemplate(docString, this.results) }) MAFWhen('convert csv {jsonObject} to json', async function (obj) { @@ -247,7 +247,7 @@ MAFWhen('JSON key {string} is extracted from {jsonObject}', function (jsonpath, */ MAFWhen('JSON keys {string} are extracted from {jsonObject}', function (array, variable) { const obj = performJSONObjectTransform.call(this, variable) - array = filltemplate(array, this.results) + array = fillTemplate(array, this.results) try { array = JSON.parse(array) } catch (e) { @@ -276,7 +276,7 @@ When('{string} is written to file {string} on JSON path {string}', function (val When('{string} is applied to item {string} on JSON path {string}', function (value, item, jsonPath) { const jp = require('jsonpath') const fileContents = this.results[item] - value = filltemplate(value, this.results) + value = fillTemplate(value, this.results) if (value.trim() !== '') { try { const tmp = JSON.parse(value) @@ -290,14 +290,14 @@ When('{string} is applied to item {string} on JSON path {string}', function (val When('{jsonObject} is written in json line delimited format to file {string}', function (item, file) { let obj = performJSONObjectTransform.call(this, item) - file = filltemplate(file, this.results) + file = fillTemplate(file, this.results) try { obj = JSON.parse(obj) } catch (e) {} writeFile(file, obj.map(i => JSON.stringify(i)).join('\n'), this) }) When('{jsonObject} is written to file {string}', function (jsonObject, file) { let obj = performJSONObjectTransform.call(this, jsonObject) - file = filltemplate(file, this.results) + file = fillTemplate(file, this.results) if (typeof (obj) === 'object') { obj = JSON.stringify(obj) } @@ -320,7 +320,7 @@ Then('it matches the set {string}', function (set) { }) MAFWhen('the file {string} is gzipped', function (filename) { - filename = filltemplate(filename, this.results) + filename = fillTemplate(filename, this.results) try { fs.deleteFileSync(getFilePath(filename, this)) } catch (e) { @@ -333,8 +333,8 @@ MAFWhen('the file {string} is gzipped', function (filename) { }) MAFWhen('file {string} is gzip unzipped to file {string}', function (file, fileOut) { - file = filltemplate(file, this.results) - fileOut = filltemplate(fileOut, this.results) + file = fillTemplate(file, this.results) + fileOut = fillTemplate(fileOut, this.results) const zlib = require('zlib') const bf = readFileBuffer(file, this) const buffer = zlib.unzipSync(bf) @@ -477,7 +477,7 @@ Then('{jsonObject} is equal to {jsonObject}', function (item1, item2) { }) Then('{jsonObject} is not equal to:', function (item1, item2) { item1 = performJSONObjectTransform.call(this, item1) - let expected = filltemplate(item2, this.results) + let expected = fillTemplate(item2, this.results) try { expected = JSON.parse(expected) } catch (e) { } @@ -490,7 +490,7 @@ Then('{jsonObject} is not equal to:', function (item1, item2) { Then('{jsonObject} is equal to:', function (item1, item2) { item1 = performJSONObjectTransform.call(this, item1) - let expected = filltemplate(item2, this.results) + let expected = fillTemplate(item2, this.results) try { expected = JSON.parse(expected) } catch (e) { } @@ -503,12 +503,12 @@ Then('{jsonObject} is equal to:', function (item1, item2) { Then('element {string} does not exist in {jsonObject}', function (element, jsonObject) { const obj = performJSONObjectTransform.call(this, jsonObject) - element = filltemplate(element, this.results) + element = fillTemplate(element, this.results) assert.doesNotHaveAnyKeys(obj, [element]) }) Then('element {string} exists in {jsonObject}', function (element, jsonObject) { const obj = performJSONObjectTransform.call(this, jsonObject) - element = filltemplate(element, this.results) + element = fillTemplate(element, this.results) assert.containsAllKeys(obj, [element]) }) Then('elements {string} do not exist in {jsonObject}', function (element, jsonObject) { @@ -525,7 +525,7 @@ Then('elements {string} do not exist in {jsonObject}', function (element, jsonOb }) Then('elements {string} exist in {jsonObject}', function (element, jsonObject) { const obj = performJSONObjectTransform.call(this, jsonObject) - element = filltemplate(element, this.results) + element = fillTemplate(element, this.results) try { element = JSON.parse(element) } catch (e) { @@ -543,8 +543,8 @@ const performEncrypt = function () { setToString('lastRun', jwt.sign(this.results.jwtPayload, this.results.privateKey, options), this) } When('sign item {string} using jwt', function (item) { - item = filltemplate(item, this.results) - item = filltemplate(this.results[item], this.results) + item = fillTemplate(item, this.results) + item = fillTemplate(this.results[item], this.results) setToString('jwtPayload', item, this, false) performEncrypt.call(this) }) @@ -605,7 +605,7 @@ Given('set examples', async function () { const keys = Object.keys(res) for (let key in keys) { key = keys[key] - res[key] = filltemplate(res[key], this.results) + res[key] = fillTemplate(res[key], this.results) this.results[key] = res[key] } tryAttach.call(this, res) @@ -613,14 +613,14 @@ Given('set examples', async function () { Then('{jsonObject} contains {string}', function (jsonObject, checkString) { let obj = performJSONObjectTransform.call(this, jsonObject) - checkString = filltemplate(checkString, this.results) + checkString = fillTemplate(checkString, this.results) obj = JSON.stringify(obj) assert.isTrue(obj.includes(checkString), `String '${checkString}' is not in ${obj}`) }) Then('{jsonObject} does not contain {string}', function (jsonObject, checkString) { let obj = performJSONObjectTransform.call(this, jsonObject) - checkString = filltemplate(checkString, this.results) + checkString = fillTemplate(checkString, this.results) obj = JSON.stringify(obj) assert.isFalse(obj.includes(checkString), `String '${checkString}' is in ${obj}`) }) @@ -642,20 +642,20 @@ MAFWhen('blob is read from file {string}', async function (fileName) { }) When('blob item {string} is written to file {string}', async function (blob, fileName) { - blob = filltemplate(blob, this.results) + blob = fillTemplate(blob, this.results) blob = eval('this.results.' + blob) const b = Buffer.from(await blob.arrayBuffer()) writeFile(`${fileName}`, b, this) }) When('blob item {string} is attached', async function (blob) { - blob = filltemplate(blob, this.results) + blob = fillTemplate(blob, this.results) blob = eval('this.results.' + blob) const b = Buffer.from(await blob.arrayBuffer()) return this.attach(b, 'image/png') }) Then('blob item {string} is equal to file {string}', async function (blob, fileName) { - blob = filltemplate(blob, this.results) + blob = fillTemplate(blob, this.results) blob = eval('this.results.' + blob) const b = await blob.arrayBuffer() const actualImage = readFileBuffer(`${fileName}`, this) From abd06a0672d40801a6dd2296e6cc92cbc2742e8f Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 23 Jan 2024 16:37:16 -0500 Subject: [PATCH 18/48] Add important concepts and developer notes --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++- packages/api/README.md | 2 -- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8c0ee07..56660ab 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,37 @@ mkdir -p test/report Now, when you run `npm t` it will run the tests and you can run `npx report` to get an html report of your test cases. +# Important Concepts + +## Items + +MAF stores information as items. Items are stored in a global object called `results`. This allows for easy access to information across steps. +For Example: +``` +When set "name" to "John" +``` +Now there is an item called "name" that has the string value of "John" and can be accessed in other steps. We can validate that the name is "John" by doing the following: +``` +Then item "name" is equal to "John" +``` +Or +``` +Then "${name} Doe" is equal to "John Doe" +``` +The first example uses a [{jsonObject}](packages/validations/JSONObject.md) to infer the item. The second example is using a template literal to access the global `results` variable to access the value of the item. Both of these stepdefiniotions are provided by the [validations](packages/validations/README.md) module, and would pass testing. + +## JavaScript Injection + +It is possible to quickly inline JavaScript code in the feature files. This removes the need to create full step definitions for common functions scripts +``` +# If today was January 16, 2024 +When set "currentDate" to "${moment().format('YYYY-MM-DD')}" +Then item "currentDate" is equal to "2024-01-16" +``` + +Not all JavaScript should be inlined. Only simple functions that do not require any external dependencies should be considered. Luxon will also be available in the core module (moment is deprecated), so it is possible to use Luxon functions in the feature files. + + ## Hello World API Example `./features/HelloWorldAPI.feature` @@ -161,8 +192,33 @@ Feature: View the text "Hello World" } ``` -## Add a module +# Developer Notes + +## Adding a module Please view [AddModule](./AddModule.md) for information on how to add a module. This will allow the creation of new steps that can be used in your project. [npm-image]:https://img.shields.io/npm/v/@ln-maf/core.svg [npm-url]:https://www.npmjs.com/search?q=ln-maf + +## Testing the modules + +Running the tests for the modules is done using the `npm test -w packages/PACKAGE_NAME` command. Set PACKAGE_NAME to the name of the package you want to test. eg. `npm test -w packages/api`. + +## Running localstack + +All the modules can be tested locally without any dependencies, except for the AWS module. To test AWS locally, you can use a [localstack](https://github.com/localstack/localstack) docker container. The version used as of now is 3.0.2. + +To run localstack locally in a docker container, you can use the following command: +``` +docker run --rm -it -p 4566:4566 localstack/localstack:3.0.2 +``` +Command explanation: +- --rm: remove the container after it stops +- -it: interactive mode, so the container logs are shown in the terminal +- -p 4566:4566: expose the port 4566 of the container to the port 4566 of the host +- localstack/localstack:3.0.2: the image to use and version + +Then you can initialize the services using the `initLocalstack.tf` file: +``` +terraform apply -auto-approve +``` diff --git a/packages/api/README.md b/packages/api/README.md index 0a1c758..38644c1 100644 --- a/packages/api/README.md +++ b/packages/api/README.md @@ -83,8 +83,6 @@ When perform api request: """ ``` - - ### How to perform a multi-part request The request supports and additional body type of: formBody. This supports arrays(untested) and will append it to element + []. As of now the only portion of this that is tested and is not included in this CI is the file. Hopefully this will be tested in more detail soon. From 6e9d4283fda26545e44be0501715063709b98431 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 23 Jan 2024 16:38:50 -0500 Subject: [PATCH 19/48] Update multiple-cucumber-html-reporter version to 3.6.1 --- package-lock.json | 2389 +++++++++++++--------------- package.json | 2 +- packages/api/package.json | 2 +- packages/aws/package.json | 2 +- packages/defaultSQL/package.json | 2 +- packages/mysql/package.json | 2 +- packages/postgresql/package.json | 2 +- packages/preprocessor/package.json | 2 +- packages/validations/package.json | 2 +- 9 files changed, 1124 insertions(+), 1281 deletions(-) diff --git a/package-lock.json b/package-lock.json index cafd810..e11194c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ln-maf", - "version": "2.0.0", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ln-maf", - "version": "2.0.0", + "version": "3.0.0", "hasInstallScript": true, "license": "Apache-2.0", "workspaces": [ @@ -27,7 +27,7 @@ "eslint-plugin-n": "^15.6.1", "eslint-plugin-promise": "^6.1.1", "lerna": "^7.1.4", - "multiple-cucumber-html-reporter": "^3.6.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" } }, @@ -179,52 +179,52 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@aws-sdk/client-cloudwatch-logs": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.484.0.tgz", - "integrity": "sha512-lf8ye4Py91Hx70DjOAArmXi3ekpy4l+wjG8HEMQ1sBaXEcIXaBtMaxWJI+qExg7kDpxgkL+8aBM39U7egXrafQ==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.496.0.tgz", + "integrity": "sha512-bNp04WiEQm4vqEmhOkGb5d8l5qM0RDslxOs7CWXMWhAZ2g5bmJfFtqnYCHHZ5xYPa32Ct3Z9sEZ3ScNU7kezJA==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.484.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/credential-provider-node": "3.484.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/eventstream-serde-browser": "^2.0.15", - "@smithy/eventstream-serde-config-resolver": "^2.0.15", - "@smithy/eventstream-serde-node": "^2.0.15", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", + "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-signing": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/eventstream-serde-browser": "^2.1.1", + "@smithy/eventstream-serde-config-resolver": "^2.1.1", + "@smithy/eventstream-serde-node": "^2.1.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -232,52 +232,60 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.484.0.tgz", - "integrity": "sha512-yCOzitHeeSbauH5LK0SZF4wgpYzfOBiRU8gHp75Xs+kG8QT+kBmtsjoaa6tmtvtCgqWgujuFqv7Gzd2GEePEgw==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.496.0.tgz", + "integrity": "sha512-cMZpOwlpJoCUaJvsdkRJnUd5WueE3bsOVlogfh0yo1BxDKGMec63isYGIQpPRgEAnNS2LAURPzrEUFGRtwQrNQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.484.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/credential-provider-node": "3.484.0", - "@aws-sdk/middleware-endpoint-discovery": "3.470.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", + "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.496.0", + "@aws-sdk/middleware-endpoint-discovery": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "@smithy/util-waiter": "^2.1.1", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -285,51 +293,59 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/client-ecs": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.484.0.tgz", - "integrity": "sha512-SVBV1SA0zyqhZTJtqcV50l+wR63hFqlk+uC8YrclUxpL09gBSCvBwSIazq3CbFiwUoL2Ur+IA+TvD+hwKwk/Jw==", + "version": "3.497.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.497.0.tgz", + "integrity": "sha512-GK8j1Xwvab8Pep8qlv4Pxqe/smtY4U3MwTvY4BoYuSQvyDcgD/6eHcSkZId8LtkIQo46fMCRFHQxco6EHwNKfQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.484.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/credential-provider-node": "3.484.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", + "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-signing": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "@smithy/util-waiter": "^2.1.1", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -337,55 +353,63 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-ecs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.484.0.tgz", - "integrity": "sha512-VTKqt4oGerkB9E9AfXieIDDc8y+iZVlty6DfTFkmGNvF64gmgV7dyckD0CTSSBC9eA0sYrE95hf6homLNWjsog==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.496.0.tgz", + "integrity": "sha512-HsypBL5BIxK/2MPZ7mKsAypEn98Jws5kWKmOzVACOvboyvpgaDgrFqubNWkHPWlwg8vJBjixhrQpHxp1vzeVUw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.484.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/credential-provider-node": "3.484.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/eventstream-serde-browser": "^2.0.15", - "@smithy/eventstream-serde-config-resolver": "^2.0.15", - "@smithy/eventstream-serde-node": "^2.0.15", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-stream": "^2.0.23", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", + "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-signing": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/eventstream-serde-browser": "^2.1.1", + "@smithy/eventstream-serde-config-resolver": "^2.1.1", + "@smithy/eventstream-serde-node": "^2.1.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-stream": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "@smithy/util-waiter": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -393,66 +417,66 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.484.0.tgz", - "integrity": "sha512-6+N1TflOHAPMRAbOXVuJgGouWhSVIznKLuf+3ZDHYWuMUd+FLDhQvplxjVG1czRXsYwROEFylirAU1zJOHA6gA==", + "version": "3.498.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.498.0.tgz", + "integrity": "sha512-M1nDbKYW04SkPsQafp6JTqfCeiRy4ELHBpX+DRwNmb7MsPy2aBk+rjbREBt233xDCrd8C9HswJhJ18U37KQTgA==", "dependencies": { "@aws-crypto/sha1-browser": "3.0.0", "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.484.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/credential-provider-node": "3.484.0", - "@aws-sdk/middleware-bucket-endpoint": "3.484.0", - "@aws-sdk/middleware-expect-continue": "3.468.0", - "@aws-sdk/middleware-flexible-checksums": "3.468.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-location-constraint": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-sdk-s3": "3.484.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-ssec": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/signature-v4-multi-region": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@aws-sdk/xml-builder": "3.472.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/eventstream-serde-browser": "^2.0.15", - "@smithy/eventstream-serde-config-resolver": "^2.0.15", - "@smithy/eventstream-serde-node": "^2.0.15", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-blob-browser": "^2.0.16", - "@smithy/hash-node": "^2.0.17", - "@smithy/hash-stream-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/md5-js": "^2.0.17", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-stream": "^2.0.23", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", + "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.496.0", + "@aws-sdk/middleware-bucket-endpoint": "3.496.0", + "@aws-sdk/middleware-expect-continue": "3.496.0", + "@aws-sdk/middleware-flexible-checksums": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-location-constraint": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-sdk-s3": "3.496.0", + "@aws-sdk/middleware-signing": "3.496.0", + "@aws-sdk/middleware-ssec": "3.498.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/signature-v4-multi-region": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/xml-builder": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/eventstream-serde-browser": "^2.1.1", + "@smithy/eventstream-serde-config-resolver": "^2.1.1", + "@smithy/eventstream-serde-node": "^2.1.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-blob-browser": "^2.1.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/hash-stream-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/md5-js": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-stream": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "@smithy/util-waiter": "^2.1.1", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, @@ -461,51 +485,51 @@ } }, "node_modules/@aws-sdk/client-sqs": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.484.0.tgz", - "integrity": "sha512-QFL2Ee6lFurlvvCyvRpvH7L43kbUUj+tkMaMAo7f7NPn+g69eOsV96Ejv06PpRGUJ+jOwHtKxCUBMYDyAXJv0Q==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.496.0.tgz", + "integrity": "sha512-Fo/Kz9nEbGso/lJ7piPGyvSeGWRwgPrC5vgKh0D8cwVhBY2LmRVHfBtJ1p42q0TUJY6i/1TOFxXZdvavYcwb9Q==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.484.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/credential-provider-node": "3.484.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-sdk-sqs": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/md5-js": "^2.0.17", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", + "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-sdk-sqs": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/md5-js": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -513,50 +537,50 @@ } }, "node_modules/@aws-sdk/client-ssm": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.484.0.tgz", - "integrity": "sha512-YLI+gtCGTa3UY5DIPjybIsKky53RQEyEXroBGqTF4ln0OUycLOTgNCRgTyaabJ/ZXFJNHFmfCKwqO3clmGUknA==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.496.0.tgz", + "integrity": "sha512-qlsUlevthRnwMDAfJMcWaG3wmnIYyt3MltEPETT+E03GnXkbjgfPCjefy+IU6gqM2FwcWrMTGEE9iQoEOs73ow==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.484.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/credential-provider-node": "3.484.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", + "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-signing": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "@smithy/util-waiter": "^2.1.1", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -564,47 +588,55 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-ssm/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/client-sso": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.484.0.tgz", - "integrity": "sha512-eHKXDHqgPt99977hNissa1y/efwXZ9kg3EKPLK13b6VzTC8s0+Ih+YZemNE22ahw6SYnRiGglYdkdypJ/uPHkg==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.496.0.tgz", + "integrity": "sha512-fuaMuxKg7CMUsP9l3kxYWCOxFsBjdA0xj5nlikaDm1661/gB4KkAiGqRY8LsQkpNXvXU8Nj+f7oCFADFyGYzyw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -612,48 +644,48 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.484.0.tgz", - "integrity": "sha512-psQxH0mYhTVvZhfca3s9NbXgnuOM8l+5LtF7fZBF5y4xaPpfAPicPWp6po69J3ynwyXi/MpHNXd/13d/L09TTA==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.496.0.tgz", + "integrity": "sha512-3pSdqgegdwbK3CT1WvGHhA+Bf91R9cr8G1Ynp+iU2wZvy8ueJfMUk0NYfjo3EEv0YhSbMLKuduzZfvQHFHXYhw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.481.0", - "@aws-sdk/credential-provider-node": "3.484.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/core": "^1.2.1", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.496.0", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, @@ -662,15 +694,15 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.481.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.481.0.tgz", - "integrity": "sha512-UeyAc2FnWQDts81vPVBWKEj0WagYK4SVAgNfGcg6zCzzqsUG4unr4NPKQoca2L+XOU55yMCy+5l2K6R3YsFGKg==", - "dependencies": { - "@smithy/core": "^1.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.496.0.tgz", + "integrity": "sha512-yT+ug7Cw/3eJi7x2es0+46x12+cIJm5Xv+GPWsrTFD1TKgqO/VPEgfDtHFagDNbFmjNQA65Ygc/kEdIX9ICX/A==", + "dependencies": { + "@smithy/core": "^1.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/signature-v4": "^2.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -678,13 +710,13 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz", - "integrity": "sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.496.0.tgz", + "integrity": "sha512-lukQMJ8SWWP5RqkRNOHi/H+WMhRvSWa3Fc5Jf/VP6xHiPLfF1XafcvthtV91e0VwPCiseI+HqChrcGq8pvnxHw==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -692,19 +724,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.484.0.tgz", - "integrity": "sha512-BbvU7seI0RPPwpujnz4LA1lC53Cj4BOSRpYYZbrxA6C7SzW0D/IQBZQP3JBbrxIhqewSROSsYGDjvYbyi5aDEw==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.484.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.496.0.tgz", + "integrity": "sha512-2nD1jp1sIwcQaWK1y/9ruQOkW16RUxZpzgjbW/gnK3iiUXwx+/FNQWxshud+GTSx3Q4x6eIhqsbjtP4VVPPuUA==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.496.0", + "@aws-sdk/credential-provider-process": "3.496.0", + "@aws-sdk/credential-provider-sso": "3.496.0", + "@aws-sdk/credential-provider-web-identity": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@smithy/credential-provider-imds": "^2.2.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -712,20 +744,20 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.484.0.tgz", - "integrity": "sha512-Ylqej3FqRwUD3I7929k214LRH1bUz7f2hfV4ZqY7teM9hQC5Ov5SpVtOtLKNfgaaxAkhD2ffMNfmq8TAg824+g==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.484.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.484.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.496.0.tgz", + "integrity": "sha512-IVF9RvLePfRa5S5/eBIRChJCWOzQkGwM8P/L79Gl84u/cH2oSG4NtUI/YTDlrtmnYn7YsGhINSV0WnzfF2twfQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.496.0", + "@aws-sdk/credential-provider-ini": "3.496.0", + "@aws-sdk/credential-provider-process": "3.496.0", + "@aws-sdk/credential-provider-sso": "3.496.0", + "@aws-sdk/credential-provider-web-identity": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@smithy/credential-provider-imds": "^2.2.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -733,14 +765,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz", - "integrity": "sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.496.0.tgz", + "integrity": "sha512-/YZscCTGOKVmGr916Th4XF8Sz6JDtZ/n2loHG9exok9iy/qIbACsTRNLP9zexPxhPoue/oZqecY5xbVljfY34A==", + "dependencies": { + "@aws-sdk/types": "3.496.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -748,16 +780,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.484.0.tgz", - "integrity": "sha512-Fl7+YhrlU2icZkz18z9aj4SiWb2aQlWp5LsVqMfSzTlJFc9yPlD9e7F33gnL7kKLVSnAVxsr5v4y4pFC6FZUSw==", - "dependencies": { - "@aws-sdk/client-sso": "3.484.0", - "@aws-sdk/token-providers": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.496.0.tgz", + "integrity": "sha512-eP7GxpT2QYubSDG7uk1GJW4eNymZCq65IxDyEFCXOP/kfqkxriCY+iVEFG6/Mo3LxvgrgHXU4jxrCAXMAWN43g==", + "dependencies": { + "@aws-sdk/client-sso": "3.496.0", + "@aws-sdk/token-providers": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -765,13 +797,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz", - "integrity": "sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.496.0.tgz", + "integrity": "sha512-IbP+qLlvJSpNPj+zW6TtFuLRTK5Tf0hW+2pom4vFyi5YSH4pn8UOC136UdewX8vhXGS9BJQ5zBDMasIyl5VeGQ==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -779,9 +811,9 @@ } }, "node_modules/@aws-sdk/endpoint-cache": { - "version": "3.465.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.465.0.tgz", - "integrity": "sha512-0cuotk23hVSrqxHkJ3TTWC9MVMRgwlUvCatyegJEauJnk8kpLSGXE5KVdExlUBwShGNlj7ac29okZ9m17iTi5Q==", + "version": "3.495.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.495.0.tgz", + "integrity": "sha512-XCDrpiS50WaPzPzp7FwsChPHtX9PQQUU4nRzcn2N7IkUtpcFCUx8m1PAZe086VQr6hrbdeE4Z4j8hUPNwVdJGQ==", "dependencies": { "mnemonist": "0.38.3", "tslib": "^2.5.0" @@ -791,16 +823,16 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.484.0.tgz", - "integrity": "sha512-FzaUGUAat+m96diDMdFTgaG7AiyYOtT97m1Iu4luZP47eiocaHsjgtaMXg1ivoH2atlczLn/7ueYqUnwEcpFlQ==", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.1.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.496.0.tgz", + "integrity": "sha512-B+ilBMSs3+LJuo2bl2KB8GFdu+8PPVtYEWtwhNkmnaU8iMisgMBp5uuM8sUDvJX7I4iSF0WbgnhguX4cJqfAew==", + "dependencies": { + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-arn-parser": "3.495.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-config-provider": "^2.2.1", "tslib": "^2.5.0" }, "engines": { @@ -808,15 +840,15 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.470.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.470.0.tgz", - "integrity": "sha512-pN+3Y7W3Xvs6pE2RlkXmO7ugOGLXsGR3zJI/fiGOLoCOGESuM3fq3CXdasOl76wch0L9iB1lPmoHMabkxKugGQ==", - "dependencies": { - "@aws-sdk/endpoint-cache": "3.465.0", - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.496.0.tgz", + "integrity": "sha512-VVJFTYeyhtjY8c0sAQUmzN4OUzaPINvXsYcL1dljFd7vdgSyf7+qwxzngOH5pKvyaCZ2vq9ngd8dAynSlA+TIg==", + "dependencies": { + "@aws-sdk/endpoint-cache": "3.495.0", + "@aws-sdk/types": "3.496.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -824,13 +856,13 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.468.0.tgz", - "integrity": "sha512-/wmLjmfgeulxhhmnxX3X3N933TvGsYckVIFjAtDSpLjqkbwzEcNiLq7AdmNJ4BfxG0MCMgcht561DCCD19x8Bg==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.496.0.tgz", + "integrity": "sha512-+exo5DVc+BeDus2iI6Fz1thefHGDXxUhHZ+4VHQ6HkStMy3Y22HugyEGHSQZmtRL86Hjr7dFbEWFsC47a2ItGA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -838,17 +870,17 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.468.0.tgz", - "integrity": "sha512-LQwL/N5MCj3Y5keLLewHTqeAXUIMsHFZyxDXRm/uxrOon9ufLKDvGvzAmfwn1/CuSUo66ZfT8VPSA4BsC90RtA==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.496.0.tgz", + "integrity": "sha512-yQIWfjEMvgsAJ7ku224vXDjXPD+f9zfKZFialJva8VUlEr7hQp4CQ0rxV3YThSaixKEDDs5k6kOjWAd2BPGr2A==", "dependencies": { "@aws-crypto/crc32": "3.0.0", "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.468.0", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-utf8": "^2.0.2", + "@aws-sdk/types": "3.496.0", + "@smithy/is-array-buffer": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -856,13 +888,13 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz", - "integrity": "sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.496.0.tgz", + "integrity": "sha512-jUdPpSJeqCYXf6hSjfwsfHway7peIV8Vz51w/BN91bF4vB/bYwAC5o9/iJiK/EoByp5asxA8fg9wFOyGjzdbLg==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -870,12 +902,12 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.468.0.tgz", - "integrity": "sha512-0gBX/lDynQr4YIhM9h1dVnkVWqrg+34iOCVIUq8jHxzUzgZWglGkG9lHGGg0r1xkLTmegeoo1OKH8wrQ6n33Cg==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.496.0.tgz", + "integrity": "sha512-i4ocJ2Zs86OtPREbB18InFukhqg2qtBxb5gywv79IHDPVmpOYE4m/3v3yGUrkjfF2GTlUL0k5FskNNqw41yfng==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -883,12 +915,12 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz", - "integrity": "sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.496.0.tgz", + "integrity": "sha512-EwMVSY6iBMeGbVnvwdaFl/ClMS/YWtxCAo+bcEtgk8ltRuo7qgbJem8Km/fvWC1vdWvIbe4ArdJ8iGzq62ffAw==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -896,13 +928,13 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz", - "integrity": "sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.496.0.tgz", + "integrity": "sha512-+IuOcFsfqg2WAnaEzH6KhVbicqCxtOq9w3DH2jwTpddRlCx2Kqf6wCzg8luhHRGyjBZdsbIS+OXwyMevoppawA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -910,18 +942,18 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.484.0.tgz", - "integrity": "sha512-7K/HcCBQov5nRp3M25APm+6hqrFp4RDc+0NMcA1DGTWKwfYAEqZzn1AurxBCE/nTR4iECV9y1IwdIp8FTdYKSQ==", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.1.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.496.0.tgz", + "integrity": "sha512-OKrTPzubisQCQzPuF4G7jmbYt71o6W7oefmW9zm1MpGokRSJeC9zv4aT1gkMglpXEHgvL0S5fUVGi0AtF/F8Kw==", + "dependencies": { + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-arn-parser": "3.495.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/signature-v4": "^2.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/util-config-provider": "^2.2.1", "tslib": "^2.5.0" }, "engines": { @@ -929,14 +961,14 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.468.0.tgz", - "integrity": "sha512-ehDQHKimed1DrdXYG12LPKWzHlG9iXihGEok07nOJR/2RpOuSpAcavc4eeuOVeEHh58Eu8TXvvVAJ906Vtm6YA==", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.496.0.tgz", + "integrity": "sha512-CkZLaKeplUcir+MFgYi+xVs67H6pgnyNIcS6PZA9fQq14ERVhiKoXAhPLaAbBt7JDScCgtoD1ZsPvSHMRSi18w==", + "dependencies": { + "@aws-sdk/types": "3.496.0", + "@smithy/types": "^2.9.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -944,16 +976,16 @@ } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz", - "integrity": "sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.496.0.tgz", + "integrity": "sha512-Oq73Brs4IConvWnRlh8jM1V7LHoTw9SVQklu/QW2FPlNrB3B8fuTdWHHYIWv7ybw1bykXoCY99v865Mmq/Or/g==", + "dependencies": { + "@aws-sdk/types": "3.496.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/signature-v4": "^2.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-middleware": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -961,12 +993,12 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.468.0.tgz", - "integrity": "sha512-y1qLW24wRkOGBTK5d6eJXf6d8HYo4rzT4a1mNDN1rd18NSffwQ6Yke5qeUiIaxa0y/l+FvvNYErbhYtij2rJoQ==", + "version": "3.498.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.498.0.tgz", + "integrity": "sha512-sWujXgzeTqMZzj/pRYEnnEbSzhBosqw9DXHOY1Mg2igI9NEfGlB7lPARp6aKmCaYlP3Bcj2X86vKCqF53mbyig==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -974,14 +1006,14 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz", - "integrity": "sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.496.0.tgz", + "integrity": "sha512-+iMtRxFk0GmFWNUF4ilxylOQd9PZdR4ZC9jkcPIh1PZlvKtpCyFywKlk5RRZKklSoJ/CttcqwhMvOXTNbWm/0w==", + "dependencies": { + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -989,14 +1021,15 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.484.0.tgz", - "integrity": "sha512-qfYSwSIc9GasHFrJidydlQE433mB93d31dfypFWhrJPXRv1fhopO72NSfsY2WCcbaRkADc4AajLZFly4J96abw==", - "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.1.0", - "@smithy/util-middleware": "^2.0.8", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.496.0.tgz", + "integrity": "sha512-URrNVOPHPgEDm6QFu6lDC2cUFs+Jx23mA3jEwCvoKlXiEY/ZoWjH8wlX3OMUlLrF1qoUTuD03jjrJzF6zoCgug==", + "dependencies": { + "@aws-sdk/types": "3.496.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/types": "^2.9.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -1004,15 +1037,15 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.484.0.tgz", - "integrity": "sha512-9LrO9Le/oB7+9NITeW2RcO4V4EAfOCbxE9TvwRbg5CEvWgBdMU7qc1ZnCPXF4i2AsGTsnRUlzaql/M7/ln2lIg==", - "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.496.0.tgz", + "integrity": "sha512-zi3cL8+dRVSvC0PA6votwEHF4l9uxOyQTiRfgpFgzJ9iiPbsrtWCalGCwN0UyzmeDv7eViU6FK1YTHH/OgDJ4A==", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/signature-v4": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -1020,46 +1053,46 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.484.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.484.0.tgz", - "integrity": "sha512-9Eb7X0sNhJANfYCeEYWCvfeD4shMZEse3YUz5EALzbpzi/So56ZaeA/lWWeh0fkYiByq74eA2QkC/tXZkHw6EQ==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.496.0.tgz", + "integrity": "sha512-fyi8RcObEa1jNETJdc2H6q9VHrrdKCj/b6+fbLvymb7mUVRd0aWUn+24SNUImnSOnrwYnwaMfyyEC388X4MbFQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.484.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.22", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.25", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.2.0", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.23", - "@smithy/util-defaults-mode-node": "^2.0.31", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", + "@aws-sdk/middleware-host-header": "3.496.0", + "@aws-sdk/middleware-logger": "3.496.0", + "@aws-sdk/middleware-recursion-detection": "3.496.0", + "@aws-sdk/middleware-user-agent": "3.496.0", + "@aws-sdk/region-config-resolver": "3.496.0", + "@aws-sdk/types": "3.496.0", + "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/util-user-agent-browser": "3.496.0", + "@aws-sdk/util-user-agent-node": "3.496.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -1067,11 +1100,11 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", - "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.496.0.tgz", + "integrity": "sha512-umkGadK4QuNQaMoDICMm7NKRI/mYSXiyPjcn3d53BhsuArYU/52CebGQKdt4At7SwwsiVJZw9RNBHyN5Mm0HVw==", "dependencies": { - "@smithy/types": "^2.7.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -1079,9 +1112,9 @@ } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.465.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.465.0.tgz", - "integrity": "sha512-zOJ82vzDJFqBX9yZBlNeHHrul/kpx/DCoxzW5UBbZeb26kfV53QhMSoEmY8/lEbBqlqargJ/sgRC845GFhHNQw==", + "version": "3.495.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.495.0.tgz", + "integrity": "sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg==", "dependencies": { "tslib": "^2.5.0" }, @@ -1090,12 +1123,13 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz", - "integrity": "sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.496.0.tgz", + "integrity": "sha512-1QzOiWHi383ZwqSi/R2KgKCd7M+6DxkxI5acqLPm8mvDRDP2jRjrnVaC0g9/tlttWousGEemDUWStwrD2mVYSw==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", + "@aws-sdk/types": "3.496.0", + "@smithy/types": "^2.9.1", + "@smithy/util-endpoints": "^1.1.1", "tslib": "^2.5.0" }, "engines": { @@ -1103,9 +1137,9 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.465.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", - "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==", + "version": "3.495.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz", + "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==", "dependencies": { "tslib": "^2.5.0" }, @@ -1114,24 +1148,24 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz", - "integrity": "sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.496.0.tgz", + "integrity": "sha512-4j2spN+h0I0qfSMsGvJXTfQBu1e18rPdekKvzsGJxhaAE1tNgUfUT4nbvc5uVn0sNjZmirskmJ3kfbzVOrqIFg==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/types": "^2.9.1", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz", - "integrity": "sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.496.0.tgz", + "integrity": "sha512-h0Ax0jlDc7UIo3KoSI4C4tVLBFoiAdx3+DhTVfgLS7x93d41dMlziPoBX2RgdcFn37qnzw6AQKTVTMwDbRCGpg==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", + "@aws-sdk/types": "3.496.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -1155,11 +1189,11 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.472.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.472.0.tgz", - "integrity": "sha512-PwjVxz1hr9up8QkddabuScPZ/d5aDHgvHYgK4acHYzltXL4wngfvimi5ZqXTzVWF2QANxHmWnHUr45QJX71oJQ==", + "version": "3.496.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.496.0.tgz", + "integrity": "sha512-GvEjh537IIeOw1ZkZuB37sV12u+ipS5Z1dwjEC/HAvhl5ac23ULtTr1/n+U1gLNN+BAKSWjKiQ2ksj8DiUzeyw==", "dependencies": { - "@smithy/types": "^2.7.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -1170,7 +1204,6 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -1183,7 +1216,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -1195,7 +1227,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1209,7 +1240,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -1217,14 +1247,12 @@ "node_modules/@babel/code-frame/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -1233,7 +1261,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -1242,7 +1269,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -1461,7 +1487,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -1476,9 +1501,9 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", - "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", @@ -1493,7 +1518,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -1507,7 +1531,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -1519,7 +1542,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1533,7 +1555,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -1541,14 +1562,12 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -1557,7 +1576,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -1566,7 +1584,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -1655,14 +1672,12 @@ "node_modules/@cucumber/ci-environment": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-10.0.0.tgz", - "integrity": "sha512-lRkiehckosIOdc7p1L44nZsttO5dVHFjpwKKWZ07x8SeoAdV/sPuGe1PISe0AmAowFGza62nMOgG4KaroGzwFQ==", - "dev": true + "integrity": "sha512-lRkiehckosIOdc7p1L44nZsttO5dVHFjpwKKWZ07x8SeoAdV/sPuGe1PISe0AmAowFGza62nMOgG4KaroGzwFQ==" }, "node_modules/@cucumber/cucumber": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-10.1.0.tgz", - "integrity": "sha512-9itQdAccTqJAe9VfdmovinOlUPLroC2KbB+CeQty8BKXpLB6hKO32k9S9FhnuXinFqh+E5znUrPtbUxS948bwQ==", - "dev": true, + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-10.3.1.tgz", + "integrity": "sha512-0H0NkOXcYTCG1qCh3o0p1HPSMODGJmlHi1rm5yfoiMx5tJbBjxVNI2VVD2xtPWA+D6ehHQD9asewuzjMXrbPIw==", "dependencies": { "@cucumber/ci-environment": "10.0.0", "@cucumber/cucumber-expressions": "17.0.1", @@ -1672,7 +1687,7 @@ "@cucumber/html-formatter": "21.2.0", "@cucumber/message-streams": "4.0.1", "@cucumber/messages": "24.0.1", - "@cucumber/tag-expressions": "6.0.0", + "@cucumber/tag-expressions": "6.1.0", "assertion-error-formatter": "^3.0.0", "capital-case": "^1.0.4", "chalk": "^4.1.2", @@ -1717,7 +1732,6 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-17.0.1.tgz", "integrity": "sha512-reR7/sNRmDWgdz8BtFuHEwpksPnAkHty7gxUC2n0iaUPmckv9G5I5i+Vonc6xwUHDb/hmHPz/DyUL+Iv4Ao96w==", - "dev": true, "dependencies": { "regexp-match-indices": "1.0.2" } @@ -1726,7 +1740,6 @@ "version": "27.0.0", "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-27.0.0.tgz", "integrity": "sha512-j5rCsjqzRiC3iVTier3sa0kzyNbkcAmF7xr7jKnyO7qDeK3Z8Ye1P3KSVpeQRMY+KCDJ3WbTDdyxH0FwfA/fIw==", - "dev": true, "dependencies": { "@cucumber/messages": ">=19.1.4 <=22" } @@ -1735,7 +1748,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/@cucumber/gherkin-streams/-/gherkin-streams-5.0.1.tgz", "integrity": "sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==", - "dev": true, "dependencies": { "commander": "9.1.0", "source-map-support": "0.5.21" @@ -1753,7 +1765,6 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", - "dev": true, "engines": { "node": "^12.20.0 || >=14" } @@ -1762,7 +1773,6 @@ "version": "8.0.5", "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.5.tgz", "integrity": "sha512-kxM1OCDjYddF26VKc892PF0GokW4wUIl1PUz3TIXsPZgS39ExM1pF8oww8mlGFD2B0+4op/cSE3SSIME5H3aNw==", - "dev": true, "dependencies": { "@cucumber/gherkin": "^26.0.0", "@cucumber/messages": "^22.0.0", @@ -1778,7 +1788,6 @@ "version": "26.2.0", "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.2.0.tgz", "integrity": "sha512-iRSiK8YAIHAmLrn/mUfpAx7OXZ7LyNlh1zT89RoziSVCbqSVDxJS6ckEzW8loxs+EEXl0dKPQOXiDmbHV+C/fA==", - "dev": true, "dependencies": { "@cucumber/messages": ">=19.1.4 <=22" } @@ -1787,7 +1796,6 @@ "version": "22.0.0", "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", - "dev": true, "dependencies": { "@types/uuid": "9.0.1", "class-transformer": "0.5.1", @@ -1798,20 +1806,17 @@ "node_modules/@cucumber/gherkin-utils/node_modules/@types/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", - "dev": true + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" }, "node_modules/@cucumber/gherkin-utils/node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "node_modules/@cucumber/gherkin-utils/node_modules/uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -1820,7 +1825,6 @@ "version": "22.0.0", "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", - "dev": true, "dependencies": { "@types/uuid": "9.0.1", "class-transformer": "0.5.1", @@ -1831,20 +1835,17 @@ "node_modules/@cucumber/gherkin/node_modules/@types/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", - "dev": true + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" }, "node_modules/@cucumber/gherkin/node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "node_modules/@cucumber/gherkin/node_modules/uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -1853,7 +1854,6 @@ "version": "21.2.0", "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-21.2.0.tgz", "integrity": "sha512-4OcSa12Y0v5e4ySDl67+QFTxCG/Y9fxGSkFqvm98ggpTvS7b75whwzupu+lM2lMBw+h3H6P8ZURQr0xQIAwE2A==", - "dev": true, "peerDependencies": { "@cucumber/messages": ">=18" } @@ -1862,7 +1862,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz", "integrity": "sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==", - "dev": true, "peerDependencies": { "@cucumber/messages": ">=17.1.1" } @@ -1871,7 +1870,6 @@ "version": "24.0.1", "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-24.0.1.tgz", "integrity": "sha512-dKfNkvgc6stSQIyeHk7p/221iqEZe1BP+e/Js8XKtSmc0sS8khKMvbSBwYVeonn/67/vYKiAyo6Eo0SzXd5Plw==", - "dev": true, "dependencies": { "@types/uuid": "9.0.7", "class-transformer": "0.5.1", @@ -1879,24 +1877,10 @@ "uuid": "9.0.1" } }, - "node_modules/@cucumber/messages/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@cucumber/tag-expressions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.0.0.tgz", - "integrity": "sha512-JbNb/254Wn6b8cfrIJoqR0NekHXvoB/eMvSY4RK11H8k+YZfm7mZesu/3yVX67nkW+Y+PGjZFcgTMcfjwFRsRw==", - "dev": true + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.1.0.tgz", + "integrity": "sha512-+3DwRumrCJG27AtzCIL37A/X+A/gSfxOPLg8pZaruh5SLumsTmpvilwroVWBT2fPzmno/tGXypeK5a7NHU4RzA==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -1961,13 +1945,13 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -1988,9 +1972,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@hutson/parse-repository-url": { @@ -2006,7 +1990,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2023,7 +2006,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -2034,14 +2016,12 @@ "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2058,7 +2038,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2228,9 +2207,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -2478,19 +2457,6 @@ "node": ">=8" } }, - "node_modules/@lerna/create/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@ln-maf/api": { "resolved": "packages/api", "link": true @@ -3143,7 +3109,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "optional": true, "engines": { "node": ">=14" @@ -3348,11 +3313,11 @@ "dev": true }, "node_modules/@smithy/abort-controller": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.16.tgz", - "integrity": "sha512-4foO7738k8kM9flMHu3VLabqu7nPgvIj8TB909S0CnKx0YZz/dcDH3pZ/4JHdatfxlZdKF1JWOYCw9+v3HVVsw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.1.tgz", + "integrity": "sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3360,31 +3325,31 @@ } }, "node_modules/@smithy/chunked-blob-reader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.0.0.tgz", - "integrity": "sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.1.1.tgz", + "integrity": "sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ==", "dependencies": { "tslib": "^2.5.0" } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.1.tgz", - "integrity": "sha512-N2oCZRglhWKm7iMBu7S6wDzXirjAofi7tAd26cxmgibRYOBS4D3hGfmkwCpHdASZzwZDD8rluh0Rcqw1JeZDRw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.1.1.tgz", + "integrity": "sha512-zNW+43dltfNMUrBEYLMWgI8lQr0uhtTcUyxkgC9EP4j17WREzgSFMPUFVrVV6Rc2+QtWERYjb4tzZnQGa7R9fQ==", "dependencies": { - "@smithy/util-base64": "^2.0.1", + "@smithy/util-base64": "^2.1.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/config-resolver": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.23.tgz", - "integrity": "sha512-XakUqgtP2YY8Mi+Nlif5BiqJgWdvfxJafSpOSQeCOMizu+PUhE4fBQSy6xFcR+eInrwVadaABNxoJyGUMn15ew==", - "dependencies": { - "@smithy/node-config-provider": "^2.1.9", - "@smithy/types": "^2.8.0", - "@smithy/util-config-provider": "^2.1.0", - "@smithy/util-middleware": "^2.0.9", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.1.tgz", + "integrity": "sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==", + "dependencies": { + "@smithy/node-config-provider": "^2.2.1", + "@smithy/types": "^2.9.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3392,17 +3357,17 @@ } }, "node_modules/@smithy/core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.2.2.tgz", - "integrity": "sha512-uLjrskLT+mWb0emTR5QaiAIxVEU7ndpptDaVDrTwwhD+RjvHhjIiGQ3YL5jKk1a5VSDQUA2RGkXvJ6XKRcz6Dg==", - "dependencies": { - "@smithy/middleware-endpoint": "^2.3.0", - "@smithy/middleware-retry": "^2.0.26", - "@smithy/middleware-serde": "^2.0.16", - "@smithy/protocol-http": "^3.0.12", - "@smithy/smithy-client": "^2.2.1", - "@smithy/types": "^2.8.0", - "@smithy/util-middleware": "^2.0.9", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.1.tgz", + "integrity": "sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/util-middleware": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3410,14 +3375,14 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.5.tgz", - "integrity": "sha512-VfvE6Wg1MUWwpTZFBnUD7zxvPhLY8jlHCzu6bCjlIYoWgXCDzZAML76IlZUEf45nib3rjehnFgg0s1rgsuN/bg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.1.tgz", + "integrity": "sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==", "dependencies": { - "@smithy/node-config-provider": "^2.1.9", - "@smithy/property-provider": "^2.0.17", - "@smithy/types": "^2.8.0", - "@smithy/url-parser": "^2.0.16", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3425,23 +3390,23 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.16.tgz", - "integrity": "sha512-umYh5pdCE9GHgiMAH49zu9wXWZKNHHdKPm/lK22WYISTjqu29SepmpWNmPiBLy/yUu4HFEGJHIFrDWhbDlApaw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.1.tgz", + "integrity": "sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==", "dependencies": { "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.8.0", - "@smithy/util-hex-encoding": "^2.0.0", + "@smithy/types": "^2.9.1", + "@smithy/util-hex-encoding": "^2.1.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.16.tgz", - "integrity": "sha512-W+BdiN728R57KuZOcG0GczpIOEFf8S5RP/OdVH7T3FMCy8HU2bBU0vB5xZZR5c00VRdoeWrohNv3XlHoZuGRoA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.1.tgz", + "integrity": "sha512-JvEdCmGlZUay5VtlT8/kdR6FlvqTDUiJecMjXsBb0+k1H/qc9ME5n2XKPo8q/MZwEIA1GmGgYMokKGjVvMiDow==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.16", - "@smithy/types": "^2.8.0", + "@smithy/eventstream-serde-universal": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3449,11 +3414,11 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.16.tgz", - "integrity": "sha512-8qrE4nh+Tg6m1SMFK8vlzoK+8bUFTlIhXidmmQfASMninXW3Iu0T0bI4YcIk4nLznHZdybQ0qGydIanvVZxzVg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.1.tgz", + "integrity": "sha512-EqNqXYp3+dk//NmW3NAgQr9bEQ7fsu/CcxQmTiq07JlaIcne/CBWpMZETyXm9w5LXkhduBsdXdlMscfDUDn2fA==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3461,12 +3426,12 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.16.tgz", - "integrity": "sha512-NRNQuOa6mQdFSkqzY0IV37swHWx0SEoKxFtUfdZvfv0AVQPlSw4N7E3kcRSCpnHBr1kCuWWirdDlWcjWuD81MA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.1.tgz", + "integrity": "sha512-LF882q/aFidFNDX7uROAGxq3H0B7rjyPkV6QDn6/KDQ+CG7AFkRccjxRf1xqajq/Pe4bMGGr+VKAaoF6lELIQw==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.16", - "@smithy/types": "^2.8.0", + "@smithy/eventstream-serde-universal": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3474,12 +3439,12 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.16.tgz", - "integrity": "sha512-ZyLnGaYQMLc75j9kKEVMJ3X6bdBE9qWxhZdTXM5RIltuytxJC3FaOhawBxjE+IL1enmWSIohHGZCm/pLwEliQA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.1.tgz", + "integrity": "sha512-LR0mMT+XIYTxk4k2fIxEA1BPtW3685QlqufUEUAX1AJcfFfxNDKEvuCRZbO8ntJb10DrIFVJR9vb0MhDCi0sAQ==", "dependencies": { - "@smithy/eventstream-codec": "^2.0.16", - "@smithy/types": "^2.8.0", + "@smithy/eventstream-codec": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3487,36 +3452,36 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.3.2.tgz", - "integrity": "sha512-O9R/OlnAOTsnysuSDjt0v2q6DcSvCz5cCFC/CFAWWcLyBwJDeFyGTCTszgpQTb19+Fi8uRwZE5/3ziAQBFeDMQ==", - "dependencies": { - "@smithy/protocol-http": "^3.0.12", - "@smithy/querystring-builder": "^2.0.16", - "@smithy/types": "^2.8.0", - "@smithy/util-base64": "^2.0.1", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.1.tgz", + "integrity": "sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==", + "dependencies": { + "@smithy/protocol-http": "^3.1.1", + "@smithy/querystring-builder": "^2.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-base64": "^2.1.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/hash-blob-browser": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.17.tgz", - "integrity": "sha512-/mPpv1sRiRDdjO4zZuO8be6eeabmg5AVgKDfnmmqkpBtRyMGSJb968fjRuHt+FRAsIGywgIKJFmUUAYjhsi1oQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.1.1.tgz", + "integrity": "sha512-jizu1+2PAUjiGIfRtlPEU8Yo6zn+d78ti/ZHDesdf1SUn2BuZW433JlPoCOLH3dBoEEvTgLvQ8tUGSoTTALA+A==", "dependencies": { - "@smithy/chunked-blob-reader": "^2.0.0", - "@smithy/chunked-blob-reader-native": "^2.0.1", - "@smithy/types": "^2.8.0", + "@smithy/chunked-blob-reader": "^2.1.1", + "@smithy/chunked-blob-reader-native": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/hash-node": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.18.tgz", - "integrity": "sha512-gN2JFvAgnZCyDN9rJgcejfpK0uPPJrSortVVVVWsru9whS7eQey6+gj2eM5ln2i6rHNntIXzal1Fm9XOPuoaKA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.1.tgz", + "integrity": "sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==", "dependencies": { - "@smithy/types": "^2.8.0", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", + "@smithy/types": "^2.9.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3524,12 +3489,12 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.18.tgz", - "integrity": "sha512-OuFk+ITpv8CtxGjQcS8GA04faNycu9UMm6YobvQzjeEoXZ0dLF6sRfuzD+3S8RHPKpTyLuXtKG1+GiJycZ5TcA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.1.1.tgz", + "integrity": "sha512-VgDaKcfCy0iHcmtAZgZ3Yw9g37Gkn2JsQiMtFQXUh8Wmo3GfNgDwLOtdhJ272pOT7DStzpe9cNr+eV5Au8KfQA==", "dependencies": { - "@smithy/types": "^2.8.0", - "@smithy/util-utf8": "^2.0.2", + "@smithy/types": "^2.9.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3537,18 +3502,18 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.16.tgz", - "integrity": "sha512-apEHakT/kmpNo1VFHP4W/cjfeP9U0x5qvfsLJubgp7UM/gq4qYp0GbqdE7QhsjUaYvEnrftRqs7+YrtWreV0wA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.1.tgz", + "integrity": "sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/is-array-buffer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz", - "integrity": "sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz", + "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==", "dependencies": { "tslib": "^2.5.0" }, @@ -3557,22 +3522,22 @@ } }, "node_modules/@smithy/md5-js": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.18.tgz", - "integrity": "sha512-bHwZ8/m6RbERQdVW5rJ2LzeW8qxfXv6Q/S7Fiudhso4pWRrksqLx3nsGZw7bmqqfN4zLqkxydxSa9+4c7s5zxg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.1.1.tgz", + "integrity": "sha512-L3MbIYBIdLlT+MWTYrdVSv/dow1+6iZ1Ad7xS0OHxTTs17d753ZcpOV4Ro7M7tRAVWML/sg2IAp/zzCb6aAttg==", "dependencies": { - "@smithy/types": "^2.8.0", - "@smithy/util-utf8": "^2.0.2", + "@smithy/types": "^2.9.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/middleware-content-length": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.18.tgz", - "integrity": "sha512-ZJ9uKPTfxYheTKSKYB+GCvcj+izw9WGzRLhjn8n254q0jWLojUzn7Vw0l4R/Gq7Wdpf/qmk/ptD+6CCXHNVCaw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.1.tgz", + "integrity": "sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==", "dependencies": { - "@smithy/protocol-http": "^3.0.12", - "@smithy/types": "^2.8.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3580,16 +3545,16 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.3.0.tgz", - "integrity": "sha512-VsOAG2YQ8ykjSmKO+CIXdJBIWFo6AAvG6Iw95BakBTqk66/4BI7XyqLevoNSq/lZ6NgZv24sLmrcIN+fLDWBCg==", - "dependencies": { - "@smithy/middleware-serde": "^2.0.16", - "@smithy/node-config-provider": "^2.1.9", - "@smithy/shared-ini-file-loader": "^2.2.8", - "@smithy/types": "^2.8.0", - "@smithy/url-parser": "^2.0.16", - "@smithy/util-middleware": "^2.0.9", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.1.tgz", + "integrity": "sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==", + "dependencies": { + "@smithy/middleware-serde": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-middleware": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3597,17 +3562,17 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.26.tgz", - "integrity": "sha512-Qzpxo0U5jfNiq9iD38U3e2bheXwvTEX4eue9xruIvEgh+UKq6dKuGqcB66oBDV7TD/mfoJi9Q/VmaiqwWbEp7A==", - "dependencies": { - "@smithy/node-config-provider": "^2.1.9", - "@smithy/protocol-http": "^3.0.12", - "@smithy/service-error-classification": "^2.0.9", - "@smithy/smithy-client": "^2.2.1", - "@smithy/types": "^2.8.0", - "@smithy/util-middleware": "^2.0.9", - "@smithy/util-retry": "^2.0.9", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.1.tgz", + "integrity": "sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==", + "dependencies": { + "@smithy/node-config-provider": "^2.2.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/service-error-classification": "^2.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-retry": "^2.1.1", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -3615,12 +3580,20 @@ "node": ">=14.0.0" } }, + "node_modules/@smithy/middleware-retry/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@smithy/middleware-serde": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.16.tgz", - "integrity": "sha512-5EAd4t30pcc4M8TSSGq7q/x5IKrxfXR5+SrU4bgxNy7RPHQo2PSWBUco9C+D9Tfqp/JZvprRpK42dnupZafk2g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz", + "integrity": "sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3628,11 +3601,11 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.10.tgz", - "integrity": "sha512-I2rbxctNq9FAPPEcuA1ntZxkTKOPQFy7YBPOaD/MLg1zCvzv21CoNxR0py6J8ZVC35l4qE4nhxB0f7TF5/+Ldw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.1.tgz", + "integrity": "sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3640,13 +3613,13 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.9.tgz", - "integrity": "sha512-tUyW/9xrRy+s7RXkmQhgYkAPMpTIF8izK4orhHjNFEKR3QZiOCbWB546Y8iB/Fpbm3O9+q0Af9rpywLKJOwtaQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.1.tgz", + "integrity": "sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==", "dependencies": { - "@smithy/property-provider": "^2.0.17", - "@smithy/shared-ini-file-loader": "^2.2.8", - "@smithy/types": "^2.8.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3654,14 +3627,14 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.2.2.tgz", - "integrity": "sha512-XO58TO/Eul/IBQKFKaaBtXJi0ItEQQCT+NI4IiKHCY/4KtqaUT6y/wC1EvDqlA9cP7Dyjdj7FdPs4DyynH3u7g==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.3.1.tgz", + "integrity": "sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==", "dependencies": { - "@smithy/abort-controller": "^2.0.16", - "@smithy/protocol-http": "^3.0.12", - "@smithy/querystring-builder": "^2.0.16", - "@smithy/types": "^2.8.0", + "@smithy/abort-controller": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/querystring-builder": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3669,11 +3642,11 @@ } }, "node_modules/@smithy/property-provider": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.17.tgz", - "integrity": "sha512-+VkeZbVu7qtQ2DjI48Qwaf9fPOr3gZIwxQpuLJgRRSkWsdSvmaTCxI3gzRFKePB63Ts9r4yjn4HkxSCSkdWmcQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.1.tgz", + "integrity": "sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3681,11 +3654,11 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.12.tgz", - "integrity": "sha512-Xz4iaqLiaBfbQpB9Hgi3VcZYbP7xRDXYhd8XWChh4v94uw7qwmvlxdU5yxzfm6ACJM66phHrTbS5TVvj5uQ72w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.1.1.tgz", + "integrity": "sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3693,12 +3666,12 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.16.tgz", - "integrity": "sha512-Q/GsJT0C0mijXMRs7YhZLLCP5FcuC4797lYjKQkME5CZohnLC4bEhylAd2QcD3gbMKNjCw8+T2I27WKiV/wToA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.1.tgz", + "integrity": "sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==", "dependencies": { - "@smithy/types": "^2.8.0", - "@smithy/util-uri-escape": "^2.0.0", + "@smithy/types": "^2.9.1", + "@smithy/util-uri-escape": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3706,11 +3679,11 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.16.tgz", - "integrity": "sha512-c4ueAuL6BDYKWpkubjrQthZKoC3L5kql5O++ovekNxiexRXTlLIVlCR4q3KziOktLIw66EU9SQljPXd/oN6Okg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.1.tgz", + "integrity": "sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3718,22 +3691,22 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.9.tgz", - "integrity": "sha512-0K+8GvtwI7VkGmmInPydM2XZyBfIqLIbfR7mDQ+oPiz8mIinuHbV6sxOLdvX1Jv/myk7XTK9orgt3tuEpBu/zg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.1.tgz", + "integrity": "sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==", "dependencies": { - "@smithy/types": "^2.8.0" + "@smithy/types": "^2.9.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.8.tgz", - "integrity": "sha512-E62byatbwSWrtq9RJ7xN40tqrRKDGrEL4EluyNpaIDvfvet06a/QC58oHw2FgVaEgkj0tXZPjZaKrhPfpoU0qw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.1.tgz", + "integrity": "sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3741,17 +3714,17 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.19.tgz", - "integrity": "sha512-nwc3JihdM+kcJjtORv/n7qRHN2Kfh7S2RJI2qr8pz9UcY5TD8rSCRGQ0g81HgyS3jZ5X9U/L4p014P3FonBPhg==", - "dependencies": { - "@smithy/eventstream-codec": "^2.0.16", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.8.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.9", - "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.1.tgz", + "integrity": "sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==", + "dependencies": { + "@smithy/eventstream-codec": "^2.1.1", + "@smithy/is-array-buffer": "^2.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-uri-escape": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3759,15 +3732,15 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.2.1.tgz", - "integrity": "sha512-SpD7FLK92XV2fon2hMotaNDa2w5VAy5/uVjP9WFmjGSgWM8pTPVkHcDl1yFs5Z8LYbij0FSz+DbCBK6i+uXXUA==", - "dependencies": { - "@smithy/middleware-endpoint": "^2.3.0", - "@smithy/middleware-stack": "^2.0.10", - "@smithy/protocol-http": "^3.0.12", - "@smithy/types": "^2.8.0", - "@smithy/util-stream": "^2.0.24", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.3.1.tgz", + "integrity": "sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3775,9 +3748,9 @@ } }, "node_modules/@smithy/types": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.8.0.tgz", - "integrity": "sha512-h9sz24cFgt/W1Re22OlhQKmUZkNh244ApgRsUDYinqF8R+QgcsBIX344u2j61TPshsTz3CvL6HYU1DnQdsSrHA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.9.1.tgz", + "integrity": "sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==", "dependencies": { "tslib": "^2.5.0" }, @@ -3786,21 +3759,21 @@ } }, "node_modules/@smithy/url-parser": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.16.tgz", - "integrity": "sha512-Wfz5WqAoRT91TjRy1JeLR0fXtkIXHGsMbgzKFTx7E68SrZ55TB8xoG+vm11Ru4gheFTMXjAjwAxv1jQdC+pAQA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.1.tgz", + "integrity": "sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==", "dependencies": { - "@smithy/querystring-parser": "^2.0.16", - "@smithy/types": "^2.8.0", + "@smithy/querystring-parser": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" } }, "node_modules/@smithy/util-base64": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz", - "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz", + "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==", "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", + "@smithy/util-buffer-from": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3808,17 +3781,17 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.1.tgz", - "integrity": "sha512-NXYp3ttgUlwkaug4bjBzJ5+yIbUbUx8VsSLuHZROQpoik+gRkIBeEG9MPVYfvPNpuXb/puqodeeUXcKFe7BLOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz", + "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==", "dependencies": { "tslib": "^2.5.0" } }, "node_modules/@smithy/util-body-length-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", - "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz", + "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==", "dependencies": { "tslib": "^2.5.0" }, @@ -3827,11 +3800,11 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz", - "integrity": "sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz", + "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==", "dependencies": { - "@smithy/is-array-buffer": "^2.0.0", + "@smithy/is-array-buffer": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3839,9 +3812,9 @@ } }, "node_modules/@smithy/util-config-provider": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.1.0.tgz", - "integrity": "sha512-S6V0JvvhQgFSGLcJeT1CBsaTR03MM8qTuxMH9WPCCddlSo2W0V5jIHimHtIQALMLEDPGQ0ROSRr/dU0O+mxiQg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz", + "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==", "dependencies": { "tslib": "^2.5.0" }, @@ -3850,13 +3823,13 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.0.24", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.24.tgz", - "integrity": "sha512-TsP5mBuLgO2C21+laNG2nHYZEyUdkbGURv2tHvSuQQxLz952MegX95uwdxOY2jR2H4GoKuVRfdJq7w4eIjGYeg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.1.tgz", + "integrity": "sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==", "dependencies": { - "@smithy/property-provider": "^2.0.17", - "@smithy/smithy-client": "^2.2.1", - "@smithy/types": "^2.8.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", "bowser": "^2.11.0", "tslib": "^2.5.0" }, @@ -3865,16 +3838,16 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.0.32", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.32.tgz", - "integrity": "sha512-d0S33dXA2cq1NyorVMroMrEtqKMr3MlyLITcfTBf9pXiigYiPMOtbSI7czHIfDbuVuM89Cg0urAgpt73QV9mPQ==", - "dependencies": { - "@smithy/config-resolver": "^2.0.23", - "@smithy/credential-provider-imds": "^2.1.5", - "@smithy/node-config-provider": "^2.1.9", - "@smithy/property-provider": "^2.0.17", - "@smithy/smithy-client": "^2.2.1", - "@smithy/types": "^2.8.0", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.1.1.tgz", + "integrity": "sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==", + "dependencies": { + "@smithy/config-resolver": "^2.1.1", + "@smithy/credential-provider-imds": "^2.2.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3882,12 +3855,12 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.8.tgz", - "integrity": "sha512-l8zVuyZZ61IzZBYp5NWvsAhbaAjYkt0xg9R4xUASkg5SEeTT2meHOJwJHctKMFUXe4QZbn9fR2MaBYjP2119+w==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.1.tgz", + "integrity": "sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==", "dependencies": { - "@smithy/node-config-provider": "^2.1.9", - "@smithy/types": "^2.8.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3895,9 +3868,9 @@ } }, "node_modules/@smithy/util-hex-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", - "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", + "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", "dependencies": { "tslib": "^2.5.0" }, @@ -3906,11 +3879,11 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.9.tgz", - "integrity": "sha512-PnCnBJ07noMX1lMDTEefmxSlusWJUiLfrme++MfK5TD0xz8NYmakgoXy5zkF/16zKGmiwOeKAztWT/Vjk1KRIQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.1.tgz", + "integrity": "sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==", "dependencies": { - "@smithy/types": "^2.8.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3918,12 +3891,12 @@ } }, "node_modules/@smithy/util-retry": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.9.tgz", - "integrity": "sha512-46BFWe9RqB6g7f4mxm3W3HlqknqQQmWHKlhoqSFZuGNuiDU5KqmpebMbvC3tjTlUkqn4xa2Z7s3Hwb0HNs5scw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.1.tgz", + "integrity": "sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==", "dependencies": { - "@smithy/service-error-classification": "^2.0.9", - "@smithy/types": "^2.8.0", + "@smithy/service-error-classification": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3931,17 +3904,17 @@ } }, "node_modules/@smithy/util-stream": { - "version": "2.0.24", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.24.tgz", - "integrity": "sha512-hRpbcRrOxDriMVmbya+Mv77VZVupxRAsfxVDKS54XuiURhdiwCUXJP0X1iJhHinuUf6n8pBF0MkG9C8VooMnWw==", - "dependencies": { - "@smithy/fetch-http-handler": "^2.3.2", - "@smithy/node-http-handler": "^2.2.2", - "@smithy/types": "^2.8.0", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.1.tgz", + "integrity": "sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==", + "dependencies": { + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3949,9 +3922,9 @@ } }, "node_modules/@smithy/util-uri-escape": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz", - "integrity": "sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz", + "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==", "dependencies": { "tslib": "^2.5.0" }, @@ -3960,11 +3933,11 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz", - "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", + "@smithy/util-buffer-from": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -3972,12 +3945,12 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.16.tgz", - "integrity": "sha512-5i4YONHQ6HoUWDd+X0frpxTXxSXgJhUFl+z0iMy/zpUmVeCQY2or3Vss6DzHKKMMQL4pmVHpQm9WayHDorFdZg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.1.1.tgz", + "integrity": "sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==", "dependencies": { - "@smithy/abort-controller": "^2.0.16", - "@smithy/types": "^2.8.0", + "@smithy/abort-controller": "^2.1.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { @@ -3988,7 +3961,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@teppeis/multimaps/-/multimaps-3.0.0.tgz", "integrity": "sha512-ID7fosbc50TbT0MK0EG12O+gAP3W3Aa/Pz4DaTtQtEvlc9Odaqi0de+xuZ7Li2GtK4HzEX7IuRWS/JmZLksR3Q==", - "dev": true, "engines": { "node": ">=14" } @@ -4069,14 +4041,12 @@ "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" }, "node_modules/@types/uuid": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", - "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", - "dev": true + "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==" }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", @@ -4271,7 +4241,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, "engines": { "node": ">=6" } @@ -4280,7 +4249,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -4294,8 +4262,7 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, "node_modules/app-root-path": { "version": "3.1.0", @@ -4509,7 +4476,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz", "integrity": "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==", - "dev": true, "dependencies": { "diff": "^4.0.1", "pad-right": "^0.2.2", @@ -4540,12 +4506,12 @@ } }, "node_modules/axios": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz", - "integrity": "sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", "dev": true, "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.4", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -4679,8 +4645,7 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/buffer-writer": { "version": "2.0.0", @@ -4917,9 +4882,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001572", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz", - "integrity": "sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==", + "version": "1.0.30001579", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", + "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", "dev": true, "funding": [ { @@ -4940,7 +4905,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -4948,9 +4912,9 @@ } }, "node_modules/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -4968,7 +4932,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4984,7 +4947,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5075,7 +5037,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, "dependencies": { "string-width": "^4.2.0" }, @@ -5174,7 +5135,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5185,8 +5145,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-support": { "version": "1.1.3", @@ -5247,7 +5206,6 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, "engines": { "node": ">=14" } @@ -5532,7 +5490,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5572,7 +5529,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -5779,7 +5735,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, "engines": { "node": ">=0.3.1" } @@ -5830,9 +5785,9 @@ } }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz", + "integrity": "sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==", "dev": true, "engines": { "node": ">=12" @@ -5859,8 +5814,7 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", @@ -5886,16 +5840,15 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.617", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.617.tgz", - "integrity": "sha512-sYNE3QxcDS4ANW1k4S/wWYMXjCVcFSOX3Bg8jpuMFaXt/x8JCmp0R1Xe1ZXDX4WXnSRBf+GJ/3eGWicUuQq5cg==", + "version": "1.4.643", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.643.tgz", + "integrity": "sha512-QHscvvS7gt155PtoRC0dR2ilhL8E9LHhfTQEq1uD5AL0524rBLAwpAREFH06f87/e45B9XkR6Ki5dbhbCsVEIg==", "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encoding": { "version": "0.1.13", @@ -5969,7 +5922,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -5978,7 +5930,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, "dependencies": { "stackframe": "^1.3.4" } @@ -6836,7 +6787,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -6851,7 +6801,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -7017,9 +6966,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true, "funding": [ { @@ -7049,7 +6998,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -7201,7 +7149,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7472,7 +7419,6 @@ "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -7506,7 +7452,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -7515,7 +7460,6 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7530,7 +7474,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, "dependencies": { "ini": "2.0.0" }, @@ -7660,7 +7603,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-4.0.1.tgz", "integrity": "sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==", - "dev": true, "dependencies": { "ansi-regex": "^4.1.0" }, @@ -7681,7 +7623,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -7772,7 +7713,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -7970,7 +7910,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -7999,7 +7938,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, "engines": { "node": ">=10" } @@ -8135,8 +8073,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-bigint": { "version": "1.0.4", @@ -8194,7 +8131,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -8245,7 +8181,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -8266,7 +8201,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -8342,7 +8276,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -8411,7 +8344,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "engines": { "node": ">=8" }, @@ -8536,8 +8468,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", @@ -8627,6 +8558,15 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-processinfo/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -8684,7 +8624,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -8743,8 +8682,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -8785,8 +8723,7 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -8974,7 +8911,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz", "integrity": "sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==", - "dev": true, "dependencies": { "seed-random": "~2.2.0" } @@ -9219,19 +9155,6 @@ "node": ">=8" } }, - "node_modules/lerna/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -9479,14 +9402,12 @@ "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "node_modules/lodash.mergewith": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" }, "node_modules/lodash.once": { "version": "4.1.1", @@ -9526,7 +9447,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -9546,7 +9466,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==", - "dev": true, "engines": { "node": ">=12" } @@ -9776,7 +9695,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -9957,7 +9875,6 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "dev": true, "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -10032,9 +9949,9 @@ } }, "node_modules/multiple-cucumber-html-reporter": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/multiple-cucumber-html-reporter/-/multiple-cucumber-html-reporter-3.6.0.tgz", - "integrity": "sha512-rXi4Cws4h2YylogD5rtbrwco+ytXK+yZuSxNCl6dfHG8m95JsD86Eu+4NEXn6gwoDC0X3OpZ2RTg54CooGqXXA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/multiple-cucumber-html-reporter/-/multiple-cucumber-html-reporter-3.6.1.tgz", + "integrity": "sha512-Y4nu7PSl91yVKTQrCZt2WW98SoHVPldpv+ZOcdG9nMZhWa+IvpclECtmlUY/CatbCRRar/IMEcUYrJfjTgn8yg==", "dev": true, "dependencies": { "find": "^0.3.0", @@ -10055,19 +9972,6 @@ "node": ">=12" } }, - "node_modules/multiple-cucumber-html-reporter/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -10106,7 +10010,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -10162,16 +10065,15 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "node_modules/node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", + "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", "dependencies": { "semver": "^7.3.5" }, @@ -10248,9 +10150,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", - "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "dev": true, "bin": { "node-gyp-build": "bin.js", @@ -11168,7 +11070,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11465,7 +11366,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -11744,7 +11644,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", "integrity": "sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==", - "dev": true, "dependencies": { "repeat-string": "^1.5.2" }, @@ -11773,7 +11672,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -11790,8 +11688,7 @@ "node_modules/parse-json/node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/parse-path": { "version": "7.0.0", @@ -11815,7 +11712,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -11832,7 +11728,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -11840,14 +11735,12 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -11863,7 +11756,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true, "engines": { "node": "14 || >=16.14" } @@ -12196,7 +12088,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -12266,8 +12157,7 @@ "node_modules/property-expr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", - "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", - "dev": true + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" }, "node_modules/protocols": { "version": "2.0.1", @@ -12500,7 +12390,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -12517,7 +12406,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -12529,14 +12417,12 @@ "node_modules/read-pkg-up/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "node_modules/read-pkg-up/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -12548,7 +12434,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -12560,7 +12445,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -12575,7 +12459,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -12587,7 +12470,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -12602,7 +12484,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, "engines": { "node": ">=8" } @@ -12611,7 +12492,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, "bin": { "semver": "bin/semver" } @@ -12620,7 +12500,6 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, "engines": { "node": ">=8" } @@ -12748,8 +12627,7 @@ "node_modules/reflect-metadata": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", - "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==", - "dev": true + "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==" }, "node_modules/regexp-match-indices": { "version": "1.0.2", @@ -12812,7 +12690,6 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, "engines": { "node": ">=0.10" } @@ -12836,7 +12713,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -12883,7 +12759,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz", "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==", - "dev": true, "dependencies": { "resolve-from": "^5.0.0" }, @@ -12895,7 +12770,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, "engines": { "node": ">=8" } @@ -12950,7 +12824,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -12965,7 +12838,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13023,13 +12895,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -13060,15 +12932,18 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz", + "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13081,8 +12956,7 @@ "node_modules/seed-random": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", - "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==", - "dev": true + "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==" }, "node_modules/semver": { "version": "7.5.3", @@ -13110,15 +12984,16 @@ "dev": true }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", "dev": true, "dependencies": { "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -13154,7 +13029,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -13166,7 +13040,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -13189,7 +13062,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "engines": { "node": ">=14" }, @@ -13466,7 +13338,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -13475,7 +13346,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13545,7 +13415,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -13554,14 +13423,12 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -13570,8 +13437,7 @@ "node_modules/spdx-license-ids": { "version": "3.0.16", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" }, "node_modules/split": { "version": "1.0.1", @@ -13643,8 +13509,7 @@ "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, "node_modules/static-eval": { "version": "2.0.2", @@ -13666,7 +13531,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, "engines": { "node": ">=0.6.19" } @@ -13675,7 +13539,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13690,7 +13553,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13749,7 +13611,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13762,7 +13623,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13774,7 +13634,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -13783,7 +13642,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -13856,7 +13714,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -13871,7 +13728,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -14013,7 +13869,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "dependencies": { "any-promise": "^1.0.0" } @@ -14022,7 +13877,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -14085,14 +13939,12 @@ "node_modules/tiny-case": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", - "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", - "dev": true + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, "dependencies": { "rimraf": "^3.0.0" }, @@ -14124,8 +13976,7 @@ "node_modules/toposort": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", - "dev": true + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" }, "node_modules/tr46": { "version": "0.0.3", @@ -14375,10 +14226,9 @@ } }, "node_modules/type-fest": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", - "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", - "dev": true, + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.0.tgz", + "integrity": "sha512-NPaKJsb4wyJ16qc8zBQrWswLKv/YirgBFykvUQ1Iajt2wd+twC8E4hFXdlIXqiMl6kWA0zY8tUJ9ELVAdu5h7w==", "engines": { "node": ">=16" }, @@ -14467,15 +14317,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/typical": { @@ -14602,7 +14453,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -14619,8 +14469,7 @@ "node_modules/util-arity": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz", - "integrity": "sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==", - "dev": true + "integrity": "sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==" }, "node_modules/util-deprecate": { "version": "1.0.2", @@ -14628,9 +14477,13 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -14645,7 +14498,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -14681,9 +14533,9 @@ } }, "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz", + "integrity": "sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==", "engines": { "node": ">= 8" } @@ -14706,7 +14558,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -14809,7 +14660,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -14827,7 +14677,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -14844,7 +14693,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -14856,7 +14704,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, "engines": { "node": ">=12" }, @@ -14867,14 +14714,12 @@ "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -14891,7 +14736,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -15012,7 +14856,6 @@ "version": "15.1.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "dev": true, "engines": { "node": ">=8.0" } @@ -15051,7 +14894,6 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true, "engines": { "node": ">= 14" } @@ -15127,7 +14969,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/yup/-/yup-1.2.0.tgz", "integrity": "sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==", - "dev": true, "dependencies": { "property-expr": "^2.0.5", "tiny-case": "^1.0.3", @@ -15139,7 +14980,6 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, "engines": { "node": ">=12.20" }, @@ -15158,19 +14998,18 @@ "node-fetch": "^2.0.0" }, "devDependencies": { - "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", + "@ln-maf/core": "*", "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*", "chai": "^4.3.4" } @@ -15200,18 +15039,17 @@ "eslint-plugin-import": "^2.28.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.5.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" } }, "packages/aws/node_modules/luxon": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", - "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", + "license": "MIT", "engines": { "node": ">=12" } @@ -15233,7 +15071,7 @@ "nyc": "^15.1.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "moment": "^2.29.1" } }, @@ -15255,11 +15093,11 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*", "keytar": "7.*" } @@ -15285,11 +15123,11 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" } }, @@ -15314,11 +15152,11 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.0.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" } }, @@ -15348,26 +15186,24 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" } }, "packages/preprocessor/node_modules/@cucumber/cucumber-expressions": { "version": "12.1.3", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-12.1.3.tgz", - "integrity": "sha512-LB8MAzE4F/t2KIgsDEz4gZH0xSI4aG0/LmYUPyISPPjUS1pI/yGWWyeX2WsiUQxpSs765WcNIq5Bggt7gGGO3Q==", + "license": "MIT", "dependencies": { "regexp-match-indices": "1.0.2" } }, "packages/preprocessor/node_modules/@cucumber/messages": { "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", - "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "license": "MIT", "dependencies": { "@types/uuid": "9.0.1", "class-transformer": "0.5.1", @@ -15377,13 +15213,11 @@ }, "packages/preprocessor/node_modules/@types/uuid": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" + "license": "MIT" }, "packages/preprocessor/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -15401,13 +15235,22 @@ }, "packages/preprocessor/node_modules/reflect-metadata": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "license": "Apache-2.0" + }, + "packages/preprocessor/node_modules/typescript": { + "version": "4.9.5", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, "packages/preprocessor/node_modules/uuid": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -15434,11 +15277,11 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "peerDependencies": { - "@cucumber/cucumber": ">= 7.0.0", + "@cucumber/cucumber": ">= 10.0.0", "@ln-maf/core": "*" } } diff --git a/package.json b/package.json index 660ba3e..0c48f2e 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "devDependencies": { "@cucumber/cucumber": "^10.0.0", "lerna": "^7.1.4", - "multiple-cucumber-html-reporter": "^3.6.0", + "multiple-cucumber-html-reporter": "^3.6.1", "eslint": "^8.32.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.27.5", diff --git a/packages/api/package.json b/packages/api/package.json index b3eecee..cfdc5b2 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -30,7 +30,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "gitHead": "2a575448a74cfaee5ec68fa10db24cf4ccade849", diff --git a/packages/aws/package.json b/packages/aws/package.json index a6a1ef7..d92b85a 100644 --- a/packages/aws/package.json +++ b/packages/aws/package.json @@ -36,7 +36,7 @@ "eslint-plugin-import": "^2.28.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.5.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "gitHead": "c1cb2220ce18a8e3ceee4b375950a0beec4f3a6f" diff --git a/packages/defaultSQL/package.json b/packages/defaultSQL/package.json index 7cf2cd6..4e83161 100644 --- a/packages/defaultSQL/package.json +++ b/packages/defaultSQL/package.json @@ -30,7 +30,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "gitHead": "9bf55a2c86fa17707fabfb4320c3d722e270f9e6", diff --git a/packages/mysql/package.json b/packages/mysql/package.json index d99064a..a5dc1d5 100644 --- a/packages/mysql/package.json +++ b/packages/mysql/package.json @@ -32,7 +32,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "gitHead": "2a575448a74cfaee5ec68fa10db24cf4ccade849", diff --git a/packages/postgresql/package.json b/packages/postgresql/package.json index c3bbac2..8c3205f 100644 --- a/packages/postgresql/package.json +++ b/packages/postgresql/package.json @@ -32,7 +32,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.0.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "gitHead": "2a575448a74cfaee5ec68fa10db24cf4ccade849", diff --git a/packages/preprocessor/package.json b/packages/preprocessor/package.json index 6654fc2..c74fb82 100644 --- a/packages/preprocessor/package.json +++ b/packages/preprocessor/package.json @@ -38,7 +38,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "repository": { diff --git a/packages/validations/package.json b/packages/validations/package.json index 30746d8..26b0e33 100644 --- a/packages/validations/package.json +++ b/packages/validations/package.json @@ -33,7 +33,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.4.0", + "multiple-cucumber-html-reporter": "^3.6.1", "nyc": "^15.1.0" }, "gitHead": "9bf55a2c86fa17707fabfb4320c3d722e270f9e6", From ee5478250c26fdc831349a66ca592ea84819f4f1 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 23 Jan 2024 16:39:25 -0500 Subject: [PATCH 20/48] Refactor core js files --- packages/core/filltemplate.js | 87 ---------- packages/core/index.js | 228 +++++++++++++++++++++++++- packages/core/stepDefinitions/core.js | 137 ---------------- 3 files changed, 227 insertions(+), 225 deletions(-) delete mode 100644 packages/core/filltemplate.js delete mode 100644 packages/core/stepDefinitions/core.js diff --git a/packages/core/filltemplate.js b/packages/core/filltemplate.js deleted file mode 100644 index 2b0e123..0000000 --- a/packages/core/filltemplate.js +++ /dev/null @@ -1,87 +0,0 @@ - -const fillTemplate = function (templateString, templateVars) { - // Check if the template string is a json object - let isJSON = true - try { - JSON.parse(templateString) - } catch (e) { - isJSON = false - } - templateVars.random = Math.floor(Math.random() * 100000) - if (typeof templateString !== 'string') { - templateString = JSON.stringify(templateString, null, 2) - } - // Get all the items between the curly braces. - const left = [] - let prev = false - let retStr = '' - const append = function (c) { - if (left.length === 0) { - retStr += c - } else { - left[left.length - 1].str += c - } - } - templateVars.require = require - const keys = Object.keys(templateVars) - const vals = Object.values(templateVars) - for (let i = 0; i < templateString.length; i++) { - const c = templateString.charAt(i) - if (c === '{') { - const item = { - index: i, - str: '' - } - if (prev) { - item.var = true - } - // If we have no items to replace the bracket should be treated as a character - if (left.length === 0 && !prev) { - append(c) - } else { - left.push(item) - } - prev = false - continue - } else if (c === '}') { - if (left.length !== 0) { - const l = left.pop() - if (l.var) { - // Use the provided string to process - let str = l.str - str = str.trim() - const res = (new Function(...keys, 'return ' + str + ';'))(...vals) - let ret = res - if ((typeof res === 'string' && isJSON) || typeof res === 'object') { ret = JSON.stringify(res, null, 2) } - if (isJSON && typeof res === 'string' && ret.length > 1 && ret[0] === '"' && ret[ret.length - 1] === '"') { - ret = ret.substring(1, ret.length - 1) - } - append(ret) - } else { - append('{' + l.str + '}') - } - } else { - append(c) - } - prev = false - continue - } else { - if (prev) { - append('$') - } - if (c !== '$') { - append(c) - } - prev = (c === '$') - } - } - while (left.length !== 0) { - const l = left.shift() - if (l.var) { - retStr += '$' - } - retStr += '{' + l.str - } - return retStr -} -module.exports = fillTemplate diff --git a/packages/core/index.js b/packages/core/index.js index 8f505af..3618733 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -1 +1,227 @@ -require('./stepDefinitions/core') +const Cucumber = require('@cucumber/cucumber') +const When = Cucumber.When + +const fs = require('fs') +const tryAttach = function (attach, type = 'text') { + if (canAttach.call(this)) { + if (typeof attach === 'object') { + this.attach(JSON.stringify(attach, null, 2)) + } else { + this.attach(attach, type) + } + } +} + +const canAttach = function () { + return this.results.attach !== 'false' +} + +const applyJSONToString = function (string, scenario, ft = true) { + if (!scenario.results) { + scenario.results = {} + } + if (!scenario.results.moment) { + scenario.results.moment = require('moment') + } + if (ft) { string = fillTemplate(string, scenario.results) } + try { + if (string.trim() !== '') { + const obj = JSON.parse(string) + if (typeof obj === 'object') { + string = obj + } + } + } catch (e) { + try { + string = string.split('\n').filter(i => i !== '').map(i => JSON.parse(i)) + } catch (e) { } + } + return string +} + +const performJSONObjectTransform = function (items, ft = true) { + if (!this.results) { + this.results = {} + } + if (this.results.skipFillTemplate && this.results.skipFillTemplate.toUpperCase() === 'TRUE') { + ft = false + } + if (items.value) { + items.value = items.value.slice(1, items.value.length - 1) + } + items.type = items.type1 + if (items.type === null || items.type === undefined) { + items.type = items.type2 + } + if (items.type === null || items.type === undefined) { + items.type = '' + } + items.type = items.type.trim() + switch (items.type) { + case 'it': + return this.results.lastRun + case 'item': + if (ft) { items.value = fillTemplate(items.value, this.results) } + return eval('this.results.' + items.value) + case 'file': + items.value = fillTemplate(items.value, this.results) + return applyJSONToString(readFile(items.value, this), this, ft) + case '': + case 'string': + return applyJSONToString(items.value, this, ft) + default: + return parseInt(items.type) + } +} + +const getFilePath = (filename, scenario) => { + let dir = '' + if (!scenario.results) { + scenario.results = {} + } + if (scenario.results.directory) { + dir = scenario.results.directory + } + if (!dir.endsWith('/') && dir.trim() !== '') { + dir += '/' + } + return dir + filename +} + +const writeFile = (filename, data, scenario) => { + let toWrite = data + if (typeof data === 'number') { + toWrite = JSON.stringify(data) + } + return fs.writeFileSync(getFilePath(filename, scenario), toWrite, 'utf-8') +} +const writeFileBuffer = (filename, data, scenario) => { + return fs.writeFileSync(getFilePath(filename, scenario), data) +} +const readFileBuffer = (filename, scenario) => { + return fs.readFileSync(getFilePath(filename, scenario)) +} +const readFile = (filename, scenario, dataType = 'utf-8') => { + return fs.readFileSync(getFilePath(filename, scenario), dataType) +} + +const MAFWhen = function (name, func) { + const params = [] + for (let i = 0; i < func.length; i++) { + params.push('var' + i) + } + // eslint-disable-next-line no-use-before-define + let tmpFunc + eval(` + tmpFunc=async function(${params.join(',')}) { + + if(!this.results) { + this.results={} + } + this.results.lastRun=await func.call(this, ...([].slice.call(arguments))) + if(canAttach.call(this)) + this.attach(JSON.stringify({ lastRun: this.results.lastRun }, null, 2)) + } + `) + When(name, tmpFunc) +} + +const MAFSave = function (location, obj) { + if (!this.results) { + this.results = {} + } + const loc = 'this.results.' + location + const set = loc + '=obj' + eval(set) + const res = {} + res[location] = eval(loc) + tryAttach.call(this, res) +} + +const fillTemplate = function (templateString, templateVars) { + // Check if the template string is a json object + let isJSON = true + try { + JSON.parse(templateString) + } catch (e) { + isJSON = false + } + templateVars.random = Math.floor(Math.random() * 100000) + if (typeof templateString !== 'string') { + templateString = JSON.stringify(templateString, null, 2) + } + // Get all the items between the curly braces. + const left = [] + let prev = false + let retStr = '' + const append = function (c) { + if (left.length === 0) { + retStr += c + } else { + left[left.length - 1].str += c + } + } + templateVars.require = require + const keys = Object.keys(templateVars) + const vals = Object.values(templateVars) + for (let i = 0; i < templateString.length; i++) { + const c = templateString.charAt(i) + if (c === '{') { + const item = { + index: i, + str: '' + } + if (prev) { + item.var = true + } + // If we have no items to replace the bracket should be treated as a character + if (left.length === 0 && !prev) { + append(c) + } else { + left.push(item) + } + prev = false + continue + } else if (c === '}') { + if (left.length !== 0) { + const l = left.pop() + if (l.var) { + // Use the provided string to process + let str = l.str + str = str.trim() + const res = (new Function(...keys, 'return ' + str + ';'))(...vals) + let ret = res + if ((typeof res === 'string' && isJSON) || typeof res === 'object') { ret = JSON.stringify(res, null, 2) } + if (isJSON && typeof res === 'string' && ret.length > 1 && ret[0] === '"' && ret[ret.length - 1] === '"') { + ret = ret.substring(1, ret.length - 1) + } + append(ret) + } else { + append('{' + l.str + '}') + } + } else { + append(c) + } + prev = false + continue + } else { + if (prev) { + append('$') + } + if (c !== '$') { + append(c) + } + prev = (c === '$') + } + } + while (left.length !== 0) { + const l = left.shift() + if (l.var) { + retStr += '$' + } + retStr += '{' + l.str + } + return retStr +} + +module.exports = { performJSONObjectTransform, applyJSONToString, readFile, writeFile, writeFileBuffer, readFileBuffer, getFilePath, canAttach, MAFWhen, MAFSave, fillTemplate, tryAttach } diff --git a/packages/core/stepDefinitions/core.js b/packages/core/stepDefinitions/core.js deleted file mode 100644 index 98bc01d..0000000 --- a/packages/core/stepDefinitions/core.js +++ /dev/null @@ -1,137 +0,0 @@ -const fillTemplate = require('./fillTemplate') -const Cucumber = require('@cucumber/cucumber') -const When = Cucumber.When - -const fs = require('fs') -const tryAttach = function (attach, type = 'text') { - if (canAttach.call(this)) { - if (typeof attach === 'object') { - this.attach(JSON.stringify(attach, null, 2)) - } else { - this.attach(attach, type) - } - } -} -const canAttach = function () { - return this.results.attach !== 'false' -} -const applyJSONToString = function (string, scenario, ft = true) { - if (!scenario.results) { - scenario.results = {} - } - if (!scenario.results.moment) { - scenario.results.moment = require('moment') - } - if (ft) { string = fillTemplate(string, scenario.results) } - try { - if (string.trim() !== '') { - const obj = JSON.parse(string) - if (typeof obj === 'object') { - string = obj - } - } - } catch (e) { - try { - string = string.split('\n').filter(i => i !== '').map(i => JSON.parse(i)) - } catch (e) { } - } - return string -} - -const performJSONObjectTransform = function (items, ft = true) { - if (!this.results) { - this.results = {} - } - if (this.results.skipFillTemplate && this.results.skipFillTemplate.toUpperCase() === 'TRUE') { - ft = false - } - if (items.value) { - items.value = items.value.slice(1, items.value.length - 1) - } - items.type = items.type1 - if (items.type === null || items.type === undefined) { - items.type = items.type2 - } - if (items.type === null || items.type === undefined) { - items.type = '' - } - items.type = items.type.trim() - switch (items.type) { - case 'it': - return this.results.lastRun - case 'item': - if (ft) { items.value = fillTemplate(items.value, this.results) } - return eval('this.results.' + items.value) - case 'file': - items.value = fillTemplate(items.value, this.results) - return applyJSONToString(readFile(items.value, this), this, ft) - case '': - case 'string': - return applyJSONToString(items.value, this, ft) - default: - return parseInt(items.type) - } -} -const getFilePath = (filename, scenario) => { - let dir = '' - if (!scenario.results) { - scenario.results = {} - } - if (scenario.results.directory) { - dir = scenario.results.directory - } - if (!dir.endsWith('/') && dir.trim() !== '') { - dir += '/' - } - return dir + filename -} -const writeFile = (filename, data, scenario) => { - let toWrite = data - if (typeof data === 'number') { - toWrite = JSON.stringify(data) - } - return fs.writeFileSync(getFilePath(filename, scenario), toWrite, 'utf-8') -} -const writeFileBuffer = (filename, data, scenario) => { - return fs.writeFileSync(getFilePath(filename, scenario), data) -} -const readFileBuffer = (filename, scenario) => { - return fs.readFileSync(getFilePath(filename, scenario)) -} -const readFile = (filename, scenario, dataType = 'utf-8') => { - return fs.readFileSync(getFilePath(filename, scenario), dataType) -} - -const MAFWhen = function (name, func) { - const params = [] - for (let i = 0; i < func.length; i++) { - params.push('var' + i) - } - // eslint-disable-next-line no-use-before-define - let tmpFunc - eval(` - tmpFunc=async function(${params.join(',')}) { - - if(!this.results) { - this.results={} - } - this.results.lastRun=await func.call(this, ...([].slice.call(arguments))) - if(canAttach.call(this)) - this.attach(JSON.stringify({ lastRun: this.results.lastRun }, null, 2)) - } - `) - When(name, tmpFunc) -} - -const MAFSave = function (location, obj) { - if (!this.results) { - this.results = {} - } - const loc = 'this.results.' + location - const set = loc + '=obj' - eval(set) - const res = {} - res[location] = eval(loc) - tryAttach.call(this, res) -} -module.exports = { performJSONObjectTransform, applyJSONToString, readFile, writeFile, writeFileBuffer, readFileBuffer, getFilePath, canAttach, MAFWhen, MAFSave, fillTemplate, tryAttach } From 1079f6898da2d90f236f2b3d8f0b2737e0b0663e Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 23 Jan 2024 16:39:36 -0500 Subject: [PATCH 21/48] Delete unneeded AWS ESLint configuration file --- packages/aws/.eslintrc.js | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 packages/aws/.eslintrc.js diff --git a/packages/aws/.eslintrc.js b/packages/aws/.eslintrc.js deleted file mode 100644 index 191bf2e..0000000 --- a/packages/aws/.eslintrc.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - env: { - browser: true, - commonjs: true, - es2021: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 'latest' - }, - rules: { - indent: ['error', 4], - 'space-before-function-paren': [ - 'error', - { - anonymous: 'always', - named: 'never', - asyncArrow: 'always' - } - ], - 'no-eval': 'off', - 'no-new-func': 'off' - } -} From 8e60ac0d153ab7239c206caa45ce64f029a0f6ad Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 23 Jan 2024 16:39:44 -0500 Subject: [PATCH 22/48] Remove AWS profile from initLocalstack.tf --- initLocalstack.tf | 1 - 1 file changed, 1 deletion(-) diff --git a/initLocalstack.tf b/initLocalstack.tf index 93c51c2..49c69ef 100644 --- a/initLocalstack.tf +++ b/initLocalstack.tf @@ -1,5 +1,4 @@ provider "aws" { - profile = "default" region = "us-east-1" access_key = "1234" secret_key = "xyz" From 9cb3862dc71206fc6f51812d5c6efb3caab17199 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 23 Jan 2024 16:41:30 -0500 Subject: [PATCH 23/48] Update package-lock using npm update --- package-lock.json | 159 +++++++++++++++++++++------------------------- 1 file changed, 72 insertions(+), 87 deletions(-) diff --git a/package-lock.json b/package-lock.json index e11194c..1900b95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -232,14 +232,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@aws-sdk/client-dynamodb": { "version": "3.496.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.496.0.tgz", @@ -293,14 +285,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@aws-sdk/client-ecs": { "version": "3.497.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.497.0.tgz", @@ -353,14 +337,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-ecs/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@aws-sdk/client-lambda": { "version": "3.496.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.496.0.tgz", @@ -588,14 +564,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@aws-sdk/client-sso": { "version": "3.496.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.496.0.tgz", @@ -1877,6 +1845,18 @@ "uuid": "9.0.1" } }, + "node_modules/@cucumber/messages/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@cucumber/tag-expressions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.1.0.tgz", @@ -2457,6 +2437,19 @@ "node": ">=8" } }, + "node_modules/@lerna/create/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@ln-maf/api": { "resolved": "packages/api", "link": true @@ -3580,14 +3573,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@smithy/middleware-serde": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz", @@ -8558,15 +8543,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -9155,6 +9131,19 @@ "node": ">=8" } }, + "node_modules/lerna/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -9972,6 +9961,19 @@ "node": ">=12" } }, + "node_modules/multiple-cucumber-html-reporter/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -14317,16 +14319,15 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true, + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=4.2.0" } }, "node_modules/typical": { @@ -14477,13 +14478,9 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { "uuid": "dist/bin/uuid" } @@ -14988,7 +14985,6 @@ } }, "packages/api": { - "name": "@ln-maf/api", "version": "2.0.5", "license": "Apache-2.0", "dependencies": { @@ -15015,7 +15011,6 @@ } }, "packages/aws": { - "name": "@ln-maf/aws", "version": "2.2.2", "license": "Apache-2.0", "dependencies": { @@ -15049,13 +15044,13 @@ }, "packages/aws/node_modules/luxon": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", "engines": { "node": ">=12" } }, "packages/core": { - "name": "@ln-maf/core", "version": "2.0.2", "license": "Apache-2.0", "bin": { @@ -15076,7 +15071,6 @@ } }, "packages/defaultSQL": { - "name": "@ln-maf/default-sql", "version": "2.0.2", "license": "Apache-2.0", "dependencies": { @@ -15103,7 +15097,6 @@ } }, "packages/mysql": { - "name": "@ln-maf/mysql", "version": "2.0.2", "license": "Apache-2.0", "dependencies": { @@ -15132,7 +15125,6 @@ } }, "packages/postgresql": { - "name": "@ln-maf/postgresql", "version": "2.0.1", "license": "Apache-2.0", "dependencies": { @@ -15161,7 +15153,6 @@ } }, "packages/preprocessor": { - "name": "@ln-maf/preprocessor", "version": "2.1.0", "hasInstallScript": true, "license": "Apache-2.0", @@ -15196,14 +15187,16 @@ }, "packages/preprocessor/node_modules/@cucumber/cucumber-expressions": { "version": "12.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-12.1.3.tgz", + "integrity": "sha512-LB8MAzE4F/t2KIgsDEz4gZH0xSI4aG0/LmYUPyISPPjUS1pI/yGWWyeX2WsiUQxpSs765WcNIq5Bggt7gGGO3Q==", "dependencies": { "regexp-match-indices": "1.0.2" } }, "packages/preprocessor/node_modules/@cucumber/messages": { "version": "22.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", + "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", "dependencies": { "@types/uuid": "9.0.1", "class-transformer": "0.5.1", @@ -15213,11 +15206,13 @@ }, "packages/preprocessor/node_modules/@types/uuid": { "version": "9.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" }, "packages/preprocessor/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -15235,28 +15230,18 @@ }, "packages/preprocessor/node_modules/reflect-metadata": { "version": "0.1.13", - "license": "Apache-2.0" - }, - "packages/preprocessor/node_modules/typescript": { - "version": "4.9.5", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "packages/preprocessor/node_modules/uuid": { "version": "9.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", "bin": { "uuid": "dist/bin/uuid" } }, "packages/validations": { - "name": "@ln-maf/validations", "version": "2.0.4", "license": "Apache-2.0", "dependencies": { From 28adb1f4765509d1daf48f1a641a94fa092d3ad7 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 23 Jan 2024 16:54:28 -0500 Subject: [PATCH 24/48] Delete CHANGELOG.md file --- CHANGELOG.md | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 2ac7eaf..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,31 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased in Git] - -## [1.2.0] (2020-02-03) -### Added -* Fixes for multiple areas of the app based on adding more code coverage -* Git statuses -* Changelog - -* Created a preprocessor package to allow injection of Gherkin within feature files. - -* API package for api requests -* SQL package for sql commands -* Validations package for performing processing. - -## [1.2.1] (2020-02-03) -### Added - * Fixes for set examples, there was an issue when a background step was included - * Add .npmignore - * Adding in eslint - * Multiple bug fixes due to issues found by eslint - -## [1.3.0] (2020-02-05) -### Added - * Added in AWS testing for S3, DynamoDB, SQS, Lambda (not tested yet). - * Is able to run on localstack but uses the portmap due to some configurability issues with SQS. From fde25e0d01c1819cb3a4fed7d6c1ca7e7365a58a Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 09:32:17 -0500 Subject: [PATCH 25/48] Remove .eslintrc files. Only one is needed for the whole project --- packages/core/.eslintrc.js | 17 ----------------- packages/defaultSQL/.eslintrc.js | 17 ----------------- packages/mysql/.eslintrc.js | 17 ----------------- packages/postgresql/.eslintrc.json | 22 ---------------------- packages/preprocessor/.eslintrc.js | 17 ----------------- packages/validations/.eslintrc.js | 17 ----------------- 6 files changed, 107 deletions(-) delete mode 100644 packages/core/.eslintrc.js delete mode 100644 packages/defaultSQL/.eslintrc.js delete mode 100644 packages/mysql/.eslintrc.js delete mode 100644 packages/postgresql/.eslintrc.json delete mode 100644 packages/preprocessor/.eslintrc.js delete mode 100644 packages/validations/.eslintrc.js diff --git a/packages/core/.eslintrc.js b/packages/core/.eslintrc.js deleted file mode 100644 index fb608ad..0000000 --- a/packages/core/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - env: { - es2021: true, - node: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 12, - sourceType: 'module' - }, - rules: { - 'no-eval': 'off', - 'no-new-func': 'off' - } -} diff --git a/packages/defaultSQL/.eslintrc.js b/packages/defaultSQL/.eslintrc.js deleted file mode 100644 index fb608ad..0000000 --- a/packages/defaultSQL/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - env: { - es2021: true, - node: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 12, - sourceType: 'module' - }, - rules: { - 'no-eval': 'off', - 'no-new-func': 'off' - } -} diff --git a/packages/mysql/.eslintrc.js b/packages/mysql/.eslintrc.js deleted file mode 100644 index fb608ad..0000000 --- a/packages/mysql/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - env: { - es2021: true, - node: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 12, - sourceType: 'module' - }, - rules: { - 'no-eval': 'off', - 'no-new-func': 'off' - } -} diff --git a/packages/postgresql/.eslintrc.json b/packages/postgresql/.eslintrc.json deleted file mode 100644 index 0972d56..0000000 --- a/packages/postgresql/.eslintrc.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "env": { - "browser": true, - "commonjs": true, - "es2021": true - }, - "extends": ["standard"], - "parserOptions": { - "ecmaVersion": "latest" - }, - "rules": { - "indent": ["error", 4], - "space-before-function-paren": [ - "error", - { - "anonymous": "always", - "named": "never", - "asyncArrow": "always" - } - ] - } -} diff --git a/packages/preprocessor/.eslintrc.js b/packages/preprocessor/.eslintrc.js deleted file mode 100644 index fb608ad..0000000 --- a/packages/preprocessor/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - env: { - es2021: true, - node: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 12, - sourceType: 'module' - }, - rules: { - 'no-eval': 'off', - 'no-new-func': 'off' - } -} diff --git a/packages/validations/.eslintrc.js b/packages/validations/.eslintrc.js deleted file mode 100644 index fb608ad..0000000 --- a/packages/validations/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - env: { - es2021: true, - node: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 12, - sourceType: 'module' - }, - rules: { - 'no-eval': 'off', - 'no-new-func': 'off' - } -} From 037464ac14aac1075f51f018ffee0a125cdd43dd Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:06:10 -0500 Subject: [PATCH 26/48] Add GitHub Actions workflow for testing API package --- .github/workflows/package-api.yml | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/package-api.yml diff --git a/.github/workflows/package-api.yml b/.github/workflows/package-api.yml new file mode 100644 index 0000000..bb8417e --- /dev/null +++ b/.github/workflows/package-api.yml @@ -0,0 +1,44 @@ +name: Test API Package + +on: + push: + branches: [ main ] + paths: + - 'packages/api/**' + pull_request: + paths: + - 'packages/api/**' + +jobs: + MAF-API: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x, 20.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases + + steps: + - uses: actions/checkout@v3.3.0 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - run: npm ci + + - run: npm test -w packages/api + env: + ENVIRONMENT: CI + + - name: Status Create Action + if: ${{ always() }} + uses: hkusu/status-create-action@v1.0.1 + id: status-create + with: + state: ${{ job.status }} + sha: ${{ github.sha }} + + - name: Show result + if: always() + run: echo '${{ steps.status-create.outputs.result }}' From 2dd62e71ee6788774b3f264824047379688edfdf Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:06:28 -0500 Subject: [PATCH 27/48] Add workflow_dispatch trigger to package-api.yml --- .github/workflows/package-api.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/package-api.yml b/.github/workflows/package-api.yml index bb8417e..f430bc6 100644 --- a/.github/workflows/package-api.yml +++ b/.github/workflows/package-api.yml @@ -1,6 +1,7 @@ name: Test API Package on: + workflow_dispatch: push: branches: [ main ] paths: From 387d5f3330d7853ffce78394d5dbb396ca6de87e Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:18:01 -0500 Subject: [PATCH 28/48] Update package.json with new version and remove unnecessary postinstall script --- package.json | 21 ++++++++++++-------- packages/createAutoComplete.js | 36 ---------------------------------- 2 files changed, 13 insertions(+), 44 deletions(-) delete mode 100644 packages/createAutoComplete.js diff --git a/package.json b/package.json index 0c48f2e..d544e4b 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,13 @@ { "name": "ln-maf", "private": true, - "version": "3.0.0", + "version": "3.0.0-beta.0", "description": "Modular Automation Framework", "main": "index.js", - "prepare": "cd packages && node createAutoComplete.js", + "prepare": "cd packages", "scripts": { "codecov": "nyc --reporter=lcov --reporter=text cucumber-js test", - "test": "lerna run test", - "postinstall": "sh postinstall.sh" + "test": "lerna run test" }, "workspaces": [ "packages/api", @@ -20,7 +19,14 @@ "packages/preprocessor", "packages/validations" ], - "author": "", + "contributors": [ + { + "name": "Edward Jezisek" + }, + { + "name": "Dominick Martelly" + } + ], "license": "Apache-2.0", "repository": { "type": "git", @@ -36,8 +42,7 @@ "url": "https://github.com/hpcc-systems/MAF/issues" }, "homepage": "https://github.com/hpcc-systems/MAF#readme", - "dependencies": { - }, + "dependencies": {}, "devDependencies": { "@cucumber/cucumber": "^10.0.0", "lerna": "^7.1.4", @@ -49,4 +54,4 @@ "eslint-plugin-promise": "^6.1.1", "nyc": "^15.1.0" } -} +} \ No newline at end of file diff --git a/packages/createAutoComplete.js b/packages/createAutoComplete.js deleted file mode 100644 index eb82e3f..0000000 --- a/packages/createAutoComplete.js +++ /dev/null @@ -1,36 +0,0 @@ -var textReplace=function(text) { - var lines=text.split("\n") - var keywords=["Given", "When", "Then", "MAFWhen"] - return ["/* eslint-disable */", "const { When, Given, Then } = require('@cucumber/cucumber');", - ...lines.map(i=>i.trim()).filter(i=>{ - i=i.split("(")[0] - return keywords.includes(i) - }).map(i=>i.replace("MAFWhen", "When")).map( - i=>i.replace(/,.*/, ')') - ) - ] - } -const fs=require('fs') -const { lstatSync, readdirSync } = fs -const { join } = require('path') - -const isDirectory = source => lstatSync(source).isDirectory() -const isFile = source => lstatSync(source).isFile() -const getDirectories = source => - readdirSync(source).map(name => join(source, name)).filter(isDirectory) -const getFiles = source => - readdirSync(source).map(name => join(source, name)).filter(isFile) -getDirectories('.').forEach(directory => { - let text="" - if(directory==="aws") { - text=getFiles('./aws/stepDefinitions').map(i=>fs.readFileSync(i, 'utf8')).join("\n") - } else { - text=fs.readFileSync("./"+directory+"/index.js", 'utf8') - } - text=textReplace(text) - fs.writeFileSync('./' + directory + "/autoComplete.js", text.join("\n")) - var cl=fs.readFileSync("../CHANGELOG.md", "utf8") - fs.writeFileSync('./' + directory + "/CHANGELOG.md", cl) - var gitignore=fs.readFileSync("../.npmignore", "utf8") - fs.writeFileSync('./' + directory + "/.npmignore", gitignore) -}); From 016196cb318a32126980042849f2c7fd35ba80c8 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:23:02 -0500 Subject: [PATCH 29/48] Add AWS package workflow and import dependencies --- .github/workflows/{Test.yml => package-aws.yml} | 16 +++++++--------- packages/aws/stepDefinitions/imports.js | 2 ++ 2 files changed, 9 insertions(+), 9 deletions(-) rename .github/workflows/{Test.yml => package-aws.yml} (80%) create mode 100644 packages/aws/stepDefinitions/imports.js diff --git a/.github/workflows/Test.yml b/.github/workflows/package-aws.yml similarity index 80% rename from .github/workflows/Test.yml rename to .github/workflows/package-aws.yml index 49d0426..2842268 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/package-aws.yml @@ -1,17 +1,17 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node. -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: Build / Test +name: Test AWS Package on: + workflow_dispatch: push: branches: [ main ] + paths: + - 'packages/aws/**' pull_request: - branches: [ main ] + paths: + - 'packages/aws/**' jobs: - build: - + MAF-AWS: runs-on: ubuntu-latest strategy: matrix: @@ -45,8 +45,6 @@ jobs: env: ENVIRONMENT: CI USE_ENV_VARIABLES: "TRUE" - FAKE_SQL_USERNAME: MAF - FAKE_SQL_PASSWORD: MAF LOCALSTACK_HOSTNAME: localhost AWSENV: LOCALSTACK diff --git a/packages/aws/stepDefinitions/imports.js b/packages/aws/stepDefinitions/imports.js new file mode 100644 index 0000000..ea4fc08 --- /dev/null +++ b/packages/aws/stepDefinitions/imports.js @@ -0,0 +1,2 @@ +require('@ln-maf/validations') +require('@ln-maf/core/parameter_types') From a5f89db52a517e9ec63a84411965ad691d913e9d Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:30:27 -0500 Subject: [PATCH 30/48] quick fixes --- .github/workflows/package-aws.yml | 2 +- package-lock.json | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/package-aws.yml b/.github/workflows/package-aws.yml index 2842268..9248fee 100644 --- a/.github/workflows/package-aws.yml +++ b/.github/workflows/package-aws.yml @@ -41,7 +41,7 @@ jobs: terraform init terraform plan terraform apply -auto-approve - - run: npx lerna run test + - run: npm test -w packages/api env: ENVIRONMENT: CI USE_ENV_VARIABLES: "TRUE" diff --git a/package-lock.json b/package-lock.json index 1900b95..f6a08ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,12 @@ { "name": "ln-maf", - "version": "3.0.0", + "version": "3.0.0-beta.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ln-maf", - "version": "3.0.0", - "hasInstallScript": true, + "version": "3.0.0-beta.0", "license": "Apache-2.0", "workspaces": [ "packages/api", @@ -14228,9 +14227,9 @@ } }, "node_modules/type-fest": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.0.tgz", - "integrity": "sha512-NPaKJsb4wyJ16qc8zBQrWswLKv/YirgBFykvUQ1Iajt2wd+twC8E4hFXdlIXqiMl6kWA0zY8tUJ9ELVAdu5h7w==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.1.tgz", + "integrity": "sha512-7ZnJYTp6uc04uYRISWtiX3DSKB/fxNQT0B5o1OUeCqiQiwF+JC9+rJiZIDrPrNCLLuTqyQmh4VdQqh/ZOkv9MQ==", "engines": { "node": ">=16" }, From 41cf70cb11766319ac48fea41e528cd06b7ab9c1 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:34:47 -0500 Subject: [PATCH 31/48] Add validations action --- .github/workflows/package-aws.yml | 2 +- .github/workflows/package-validations.yml | 45 +++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/package-validations.yml diff --git a/.github/workflows/package-aws.yml b/.github/workflows/package-aws.yml index 9248fee..fc37398 100644 --- a/.github/workflows/package-aws.yml +++ b/.github/workflows/package-aws.yml @@ -41,7 +41,7 @@ jobs: terraform init terraform plan terraform apply -auto-approve - - run: npm test -w packages/api + - run: npm test -w packages/aws env: ENVIRONMENT: CI USE_ENV_VARIABLES: "TRUE" diff --git a/.github/workflows/package-validations.yml b/.github/workflows/package-validations.yml new file mode 100644 index 0000000..56c57f1 --- /dev/null +++ b/.github/workflows/package-validations.yml @@ -0,0 +1,45 @@ +name: Test Validations Package + +on: + workflow_dispatch: + push: + branches: [ main ] + paths: + - 'packages/validations/**' + pull_request: + paths: + - 'packages/validations/**' + +jobs: + MAF-Validations: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x, 20.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases + + steps: + - uses: actions/checkout@v3.3.0 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - run: npm ci + + - run: npm test -w packages/validations + env: + ENVIRONMENT: CI + + - name: Status Create Action + if: ${{ always() }} + uses: hkusu/status-create-action@v1.0.1 + id: status-create + with: + state: ${{ job.status }} + sha: ${{ github.sha }} + + - name: Show result + if: always() + run: echo '${{ steps.status-create.outputs.result }}' From 477ab6cac043c93a0adda19d808d3e2118c87cbf Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:42:23 -0500 Subject: [PATCH 32/48] Remove unnecessary VSCode configuration files and scripts --- .vscode/launch.json | 24 ------------------------ .vscode/settings.json | 3 +-- .vscode/tasks.json | 15 --------------- packages/.gitignore | 2 -- packages/updatePackages.sh | 5 ----- 5 files changed, 1 insertion(+), 48 deletions(-) delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/tasks.json delete mode 100644 packages/.gitignore delete mode 100644 packages/updatePackages.sh diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 9aeb26c..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Launch Feature at Line", - "program": "${workspaceRoot}/node_modules/.bin/cucumber-js", - "console": "internalConsole", - "args": ["${file}:${lineNumber}"] - }, - { - "type": "node", - "request": "launch", - "name": "Launch Feature", - "program": "${workspaceRoot}/node_modules/.bin/cucumber-js", - "console": "internalConsole", - "args": ["${file}"] - } - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json index 9b3baf3..8ccd40e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,8 +3,7 @@ "cucumberautocomplete.smartSnippets": true, "cucumberautocomplete.steps": [ "packages/**/stepDefinitions/*.js", - "packages/**/index.js", - "packages/**/autoComplete.js" + "packages/**/index.js" ], "cucumberautocomplete.customParameters": [ { diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 24395bc..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "test", - "group": { - "kind": "build", - "isDefault": true - } - } - ] -} \ No newline at end of file diff --git a/packages/.gitignore b/packages/.gitignore deleted file mode 100644 index 1ccb811..0000000 --- a/packages/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -**/autoComplete.js -*/tmp diff --git a/packages/updatePackages.sh b/packages/updatePackages.sh deleted file mode 100644 index e079004..0000000 --- a/packages/updatePackages.sh +++ /dev/null @@ -1,5 +0,0 @@ -for i in $(ls -p | grep "/$"); do - cd $i; - ncu -u - cd .. -done From b597fe196fb4d77c2241ca252b439eee8efbe42d Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:42:32 -0500 Subject: [PATCH 33/48] Add workflows for testing default SQL and preprocessor packages --- .github/workflows/package-default-sql.yml | 45 ++++++++++++++++++++++ .github/workflows/package-preprocessor.yml | 45 ++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 .github/workflows/package-default-sql.yml create mode 100644 .github/workflows/package-preprocessor.yml diff --git a/.github/workflows/package-default-sql.yml b/.github/workflows/package-default-sql.yml new file mode 100644 index 0000000..bb4bceb --- /dev/null +++ b/.github/workflows/package-default-sql.yml @@ -0,0 +1,45 @@ +name: Test Default SQL Package + +on: + workflow_dispatch: + push: + branches: [ main ] + paths: + - 'packages/defaultSQL/**' + pull_request: + paths: + - 'packages/defaultSQL/**' + +jobs: + MAF-Default-SQL: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x, 20.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases + + steps: + - uses: actions/checkout@v3.3.0 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - run: npm ci + + - run: npm test -w packages/defaultSQL + env: + ENVIRONMENT: CI + + - name: Status Create Action + if: ${{ always() }} + uses: hkusu/status-create-action@v1.0.1 + id: status-create + with: + state: ${{ job.status }} + sha: ${{ github.sha }} + + - name: Show result + if: always() + run: echo '${{ steps.status-create.outputs.result }}' diff --git a/.github/workflows/package-preprocessor.yml b/.github/workflows/package-preprocessor.yml new file mode 100644 index 0000000..bf1cc7b --- /dev/null +++ b/.github/workflows/package-preprocessor.yml @@ -0,0 +1,45 @@ +name: Test Preprocessor Package + +on: + workflow_dispatch: + push: + branches: [ main ] + paths: + - 'packages/preprocessor/**' + pull_request: + paths: + - 'packages/preprocessor/**' + +jobs: + MAF-Preprocessor: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x, 20.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases + + steps: + - uses: actions/checkout@v3.3.0 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - run: npm ci + + - run: npm test -w packages/preprocessor + env: + ENVIRONMENT: CI + + - name: Status Create Action + if: ${{ always() }} + uses: hkusu/status-create-action@v1.0.1 + id: status-create + with: + state: ${{ job.status }} + sha: ${{ github.sha }} + + - name: Show result + if: always() + run: echo '${{ steps.status-create.outputs.result }}' From a1b5e6031ee9258d8cfb02c99428c0ea298137d0 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 10:55:27 -0500 Subject: [PATCH 34/48] Update package versions to 3.0.0-beta.0 --- .github/workflows/package-default-sql.yml | 3 +++ packages/api/package.json | 2 +- packages/aws/package.json | 2 +- packages/core/package.json | 2 +- packages/defaultSQL/package.json | 2 +- packages/mysql/package.json | 2 +- packages/postgresql/package.json | 2 +- packages/preprocessor/package.json | 2 +- packages/validations/package.json | 2 +- 9 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/package-default-sql.yml b/.github/workflows/package-default-sql.yml index bb4bceb..c476d46 100644 --- a/.github/workflows/package-default-sql.yml +++ b/.github/workflows/package-default-sql.yml @@ -31,6 +31,9 @@ jobs: - run: npm test -w packages/defaultSQL env: ENVIRONMENT: CI + USE_ENV_VARIABLES: "TRUE" + FAKE_SQL_USERNAME: MAF + FAKE_SQL_PASSWORD: MAF - name: Status Create Action if: ${{ always() }} diff --git a/packages/api/package.json b/packages/api/package.json index cfdc5b2..25f820a 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.5", + "version": "3.0.0-beta.0", "description": "MAF module providing API steps", "main": "index.js", "scripts": { diff --git a/packages/aws/package.json b/packages/aws/package.json index d92b85a..00413b1 100644 --- a/packages/aws/package.json +++ b/packages/aws/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "2.2.2", + "version": "3.0.0-beta.0", "description": "AWS steps for MAF. This contains S3, DynamoDB, SQS, ECS, Cloudwatch, and Lambda stepDefinitions", "main": "index.js", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index c8ec2e4..006c654 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.2", + "version": "3.0.0-beta.0", "description": "The core for the MAF framework. Contains helpers to make it easier to use.", "main": "index.js", "scripts": { diff --git a/packages/defaultSQL/package.json b/packages/defaultSQL/package.json index 4e83161..64f79f3 100644 --- a/packages/defaultSQL/package.json +++ b/packages/defaultSQL/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.2", + "version": "3.0.0-beta.0", "description": "Default Sql setup on Node with cucumber", "main": "index.js", "scripts": { diff --git a/packages/mysql/package.json b/packages/mysql/package.json index a5dc1d5..40eb519 100644 --- a/packages/mysql/package.json +++ b/packages/mysql/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.2", + "version": "3.0.0-beta.0", "description": "Setup for sql on Node", "main": "index.js", "scripts": { diff --git a/packages/postgresql/package.json b/packages/postgresql/package.json index 8c3205f..16b1f1b 100644 --- a/packages/postgresql/package.json +++ b/packages/postgresql/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.1", + "version": "3.0.0-beta.0", "description": "PostgreSQL support / step definitions for MAF", "main": "index.js", "scripts": { diff --git a/packages/preprocessor/package.json b/packages/preprocessor/package.json index c74fb82..1a5b42c 100644 --- a/packages/preprocessor/package.json +++ b/packages/preprocessor/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "2.1.0", + "version": "3.0.0-beta.0", "description": "This project will preprocess feature files to allow more input variables to be supplied. This can be supplied through javascript, a csv/psv/json array file or a mixture of these. This will hopefully allow it to be easier to maintain larger test sets.", "main": "index.js", "bin": { diff --git a/packages/validations/package.json b/packages/validations/package.json index 26b0e33..7e25959 100644 --- a/packages/validations/package.json +++ b/packages/validations/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.4", + "version": "3.0.0-beta.0", "description": "", "main": "index.js", "scripts": { From 5dea9180113f255984dc52edc46365aaeefa9f9c Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 11:49:10 -0500 Subject: [PATCH 35/48] Add postpublish script to package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index d544e4b..ca2e913 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "codecov": "nyc --reporter=lcov --reporter=text cucumber-js test", "test": "lerna run test" }, + "postpublish" : "PACKAGE_VERSION=$(cat package.json | grep \\\"version\\\" | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]') && git tag v$PACKAGE_VERSION && git push --tags", "workspaces": [ "packages/api", "packages/aws", From 3c644702fbef31773b90f1f70cfee4ac2bea816d Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Jan 2024 14:19:58 -0500 Subject: [PATCH 36/48] Update internal package dependencies in package.json files --- package-lock.json | 218 ++++++++++++++++------------- packages/api/package.json | 2 +- packages/aws/package.json | 6 +- packages/defaultSQL/package.json | 4 +- packages/mysql/package.json | 6 +- packages/postgresql/package.json | 6 +- packages/preprocessor/package.json | 4 +- packages/validations/package.json | 2 +- 8 files changed, 132 insertions(+), 116 deletions(-) diff --git a/package-lock.json b/package-lock.json index f6a08ad..53fa854 100644 --- a/package-lock.json +++ b/package-lock.json @@ -231,6 +231,14 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/client-dynamodb": { "version": "3.496.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.496.0.tgz", @@ -284,6 +292,14 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/client-ecs": { "version": "3.497.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.497.0.tgz", @@ -336,6 +352,14 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-ecs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/client-lambda": { "version": "3.496.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.496.0.tgz", @@ -563,6 +587,14 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-ssm/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/client-sso": { "version": "3.496.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.496.0.tgz", @@ -1844,18 +1876,6 @@ "uuid": "9.0.1" } }, - "node_modules/@cucumber/messages/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@cucumber/tag-expressions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.1.0.tgz", @@ -2436,19 +2456,6 @@ "node": ">=8" } }, - "node_modules/@lerna/create/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@ln-maf/api": { "resolved": "packages/api", "link": true @@ -3572,6 +3579,14 @@ "node": ">=14.0.0" } }, + "node_modules/@smithy/middleware-retry/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@smithy/middleware-serde": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz", @@ -5824,9 +5839,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.643", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.643.tgz", - "integrity": "sha512-QHscvvS7gt155PtoRC0dR2ilhL8E9LHhfTQEq1uD5AL0524rBLAwpAREFH06f87/e45B9XkR6Ki5dbhbCsVEIg==", + "version": "1.4.644", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.644.tgz", + "integrity": "sha512-zOnPndwz3u1sVFSyBcRWcn0529Kz+jr+tDxN9iP69I3CpC5wlvYmjLrK2O7TEsg2oDDoUqooeXqbiHLvXvl6Lg==", "dev": true }, "node_modules/emoji-regex": { @@ -8542,6 +8557,15 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-processinfo/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -9130,19 +9154,6 @@ "node": ">=8" } }, - "node_modules/lerna/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -9960,19 +9971,6 @@ "node": ">=12" } }, - "node_modules/multiple-cucumber-html-reporter/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -13422,9 +13420,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", @@ -14318,15 +14316,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/typical": { @@ -14477,9 +14476,13 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -14984,7 +14987,8 @@ } }, "packages/api": { - "version": "2.0.5", + "name": "@ln-maf/api", + "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { "fetch-blob": "^3.1.5", @@ -14993,7 +14997,7 @@ "node-fetch": "^2.0.0" }, "devDependencies": { - "@ln-maf/core": "*", + "@ln-maf/core": "file:../core", "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", @@ -15010,7 +15014,8 @@ } }, "packages/aws": { - "version": "2.2.2", + "name": "@ln-maf/aws", + "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-cloudwatch-logs": "^3.430.0", @@ -15020,14 +15025,14 @@ "@aws-sdk/client-s3": "^3.430.0", "@aws-sdk/client-sqs": "^3.430.0", "@aws-sdk/client-ssm": "^3.430.0", - "@ln-maf/core": "^2.0.0", + "@ln-maf/core": "^3.0.0-beta.0", "chai": "^4.0.0", "luxon": "^2.4.0" }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "*", - "@ln-maf/validations": "^2.0.3", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.51.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.28.0", @@ -15043,14 +15048,14 @@ }, "packages/aws/node_modules/luxon": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", - "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", + "license": "MIT", "engines": { "node": ">=12" } }, "packages/core": { - "version": "2.0.2", + "name": "@ln-maf/core", + "version": "3.0.0-beta.0", "license": "Apache-2.0", "bin": { "multiReport": "multiReport.js" @@ -15070,7 +15075,8 @@ } }, "packages/defaultSQL": { - "version": "2.0.2", + "name": "@ln-maf/default-sql", + "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { "chai": "^4.3.6", @@ -15079,8 +15085,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", - "@ln-maf/validations": "^2.0.1", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", @@ -15096,10 +15102,11 @@ } }, "packages/mysql": { - "version": "2.0.2", + "name": "@ln-maf/mysql", + "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { - "@ln-maf/default-sql": "^2.0.1", + "@ln-maf/default-sql": "^3.0.0-beta.0", "keytar": "^7.9.0", "mysql2": "^2.3.3" }, @@ -15108,8 +15115,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", - "@ln-maf/validations": "^2.0.3", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", @@ -15124,10 +15131,11 @@ } }, "packages/postgresql": { - "version": "2.0.1", + "name": "@ln-maf/postgresql", + "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { - "@ln-maf/default-sql": "^2.0.1", + "@ln-maf/default-sql": "^3.0.0-beta.0", "keytar": "^7.9.0", "pg": "^8.0.0" }, @@ -15136,8 +15144,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.0", - "@ln-maf/validations": "^2.0.3", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.0.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", @@ -15152,7 +15160,8 @@ } }, "packages/preprocessor": { - "version": "2.1.0", + "name": "@ln-maf/preprocessor", + "version": "3.0.0-beta.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -15169,8 +15178,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", - "@ln-maf/validations": "^2.0.1", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", @@ -15186,16 +15195,14 @@ }, "packages/preprocessor/node_modules/@cucumber/cucumber-expressions": { "version": "12.1.3", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-12.1.3.tgz", - "integrity": "sha512-LB8MAzE4F/t2KIgsDEz4gZH0xSI4aG0/LmYUPyISPPjUS1pI/yGWWyeX2WsiUQxpSs765WcNIq5Bggt7gGGO3Q==", + "license": "MIT", "dependencies": { "regexp-match-indices": "1.0.2" } }, "packages/preprocessor/node_modules/@cucumber/messages": { "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", - "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "license": "MIT", "dependencies": { "@types/uuid": "9.0.1", "class-transformer": "0.5.1", @@ -15205,13 +15212,11 @@ }, "packages/preprocessor/node_modules/@types/uuid": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" + "license": "MIT" }, "packages/preprocessor/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -15229,19 +15234,30 @@ }, "packages/preprocessor/node_modules/reflect-metadata": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "license": "Apache-2.0" + }, + "packages/preprocessor/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, "packages/preprocessor/node_modules/uuid": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "packages/validations": { - "version": "2.0.4", + "name": "@ln-maf/validations", + "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { "@xmldom/xmldom": "^0.8.3", @@ -15255,7 +15271,7 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", + "@ln-maf/core": "file:../core", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", diff --git a/packages/api/package.json b/packages/api/package.json index 25f820a..3bbbc29 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -23,7 +23,7 @@ "chai": "^4.3.4" }, "devDependencies": { - "@ln-maf/core": "*", + "@ln-maf/core": "file:../core", "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", diff --git a/packages/aws/package.json b/packages/aws/package.json index 00413b1..fa06822 100644 --- a/packages/aws/package.json +++ b/packages/aws/package.json @@ -19,7 +19,7 @@ "@aws-sdk/client-s3": "^3.430.0", "@aws-sdk/client-sqs": "^3.430.0", "@aws-sdk/client-ssm": "^3.430.0", - "@ln-maf/core": "^2.0.0", + "@ln-maf/core": "^3.0.0-beta.0", "chai": "^4.0.0", "luxon": "^2.4.0" }, @@ -29,8 +29,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "*", - "@ln-maf/validations": "^2.0.3", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.51.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.28.0", diff --git a/packages/defaultSQL/package.json b/packages/defaultSQL/package.json index 64f79f3..d6aeb4d 100644 --- a/packages/defaultSQL/package.json +++ b/packages/defaultSQL/package.json @@ -23,8 +23,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", - "@ln-maf/validations": "^2.0.1", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", diff --git a/packages/mysql/package.json b/packages/mysql/package.json index 40eb519..2f9378e 100644 --- a/packages/mysql/package.json +++ b/packages/mysql/package.json @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@ln-maf/default-sql": "^2.0.1", + "@ln-maf/default-sql": "^3.0.0-beta.0", "keytar": "^7.9.0", "mysql2": "^2.3.3" }, @@ -25,8 +25,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", - "@ln-maf/validations": "^2.0.3", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", diff --git a/packages/postgresql/package.json b/packages/postgresql/package.json index 16b1f1b..0e65bd3 100644 --- a/packages/postgresql/package.json +++ b/packages/postgresql/package.json @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@ln-maf/default-sql": "^2.0.1", + "@ln-maf/default-sql": "^3.0.0-beta.0", "keytar": "^7.9.0", "pg": "^8.0.0" }, @@ -25,8 +25,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.0", - "@ln-maf/validations": "^2.0.3", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.0.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", diff --git a/packages/preprocessor/package.json b/packages/preprocessor/package.json index 1a5b42c..aeb4c7e 100644 --- a/packages/preprocessor/package.json +++ b/packages/preprocessor/package.json @@ -31,8 +31,8 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", - "@ln-maf/validations": "^2.0.1", + "@ln-maf/core": "file:../core", + "@ln-maf/validations": "file:../validations", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", diff --git a/packages/validations/package.json b/packages/validations/package.json index 7e25959..6fb8e41 100644 --- a/packages/validations/package.json +++ b/packages/validations/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "@cucumber/cucumber": "^10.0.0", - "@ln-maf/core": "^2.0.1", + "@ln-maf/core": "file:../core", "eslint": "^8.18.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", From 8870352d1f9c79383ca2e55d54a055ce5243210f Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 7 Feb 2024 13:57:32 -0500 Subject: [PATCH 37/48] Add Luxon feature for validations --- packages/core/index.js | 333 ++++---- packages/validations/features/luxon.feature | 6 + packages/validations/index.js | 838 ++++++++++---------- 3 files changed, 592 insertions(+), 585 deletions(-) create mode 100644 packages/validations/features/luxon.feature diff --git a/packages/core/index.js b/packages/core/index.js index 3618733..ea1a8d4 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -3,116 +3,117 @@ const When = Cucumber.When const fs = require('fs') const tryAttach = function (attach, type = 'text') { - if (canAttach.call(this)) { - if (typeof attach === 'object') { - this.attach(JSON.stringify(attach, null, 2)) - } else { - this.attach(attach, type) + if (canAttach.call(this)) { + if (typeof attach === 'object') { + this.attach(JSON.stringify(attach, null, 2)) + } else { + this.attach(attach, type) + } } - } } const canAttach = function () { - return this.results.attach !== 'false' + return this.results.attach !== 'false' } const applyJSONToString = function (string, scenario, ft = true) { - if (!scenario.results) { - scenario.results = {} - } - if (!scenario.results.moment) { - scenario.results.moment = require('moment') - } - if (ft) { string = fillTemplate(string, scenario.results) } - try { - if (string.trim() !== '') { - const obj = JSON.parse(string) - if (typeof obj === 'object') { - string = obj - } + if (!scenario.results) { + scenario.results = {} } - } catch (e) { + if (!scenario.results.DateTime) { + scenario.results.DateTime = require('luxon').DateTime + // scenario.results.moment = require('moment') + } + if (ft) { string = fillTemplate(string, scenario.results) } try { - string = string.split('\n').filter(i => i !== '').map(i => JSON.parse(i)) - } catch (e) { } - } - return string + if (string.trim() !== '') { + const obj = JSON.parse(string) + if (typeof obj === 'object') { + string = obj + } + } + } catch (e) { + try { + string = string.split('\n').filter(i => i !== '').map(i => JSON.parse(i)) + } catch (e) { } + } + return string } const performJSONObjectTransform = function (items, ft = true) { - if (!this.results) { - this.results = {} - } - if (this.results.skipFillTemplate && this.results.skipFillTemplate.toUpperCase() === 'TRUE') { - ft = false - } - if (items.value) { - items.value = items.value.slice(1, items.value.length - 1) - } - items.type = items.type1 - if (items.type === null || items.type === undefined) { - items.type = items.type2 - } - if (items.type === null || items.type === undefined) { - items.type = '' - } - items.type = items.type.trim() - switch (items.type) { + if (!this.results) { + this.results = {} + } + if (this.results.skipFillTemplate && this.results.skipFillTemplate.toUpperCase() === 'TRUE') { + ft = false + } + if (items.value) { + items.value = items.value.slice(1, items.value.length - 1) + } + items.type = items.type1 + if (items.type === null || items.type === undefined) { + items.type = items.type2 + } + if (items.type === null || items.type === undefined) { + items.type = '' + } + items.type = items.type.trim() + switch (items.type) { case 'it': - return this.results.lastRun + return this.results.lastRun case 'item': - if (ft) { items.value = fillTemplate(items.value, this.results) } - return eval('this.results.' + items.value) + if (ft) { items.value = fillTemplate(items.value, this.results) } + return eval('this.results.' + items.value) case 'file': - items.value = fillTemplate(items.value, this.results) - return applyJSONToString(readFile(items.value, this), this, ft) + items.value = fillTemplate(items.value, this.results) + return applyJSONToString(readFile(items.value, this), this, ft) case '': case 'string': - return applyJSONToString(items.value, this, ft) + return applyJSONToString(items.value, this, ft) default: - return parseInt(items.type) - } + return parseInt(items.type) + } } const getFilePath = (filename, scenario) => { - let dir = '' - if (!scenario.results) { - scenario.results = {} - } - if (scenario.results.directory) { - dir = scenario.results.directory - } - if (!dir.endsWith('/') && dir.trim() !== '') { - dir += '/' - } - return dir + filename + let dir = '' + if (!scenario.results) { + scenario.results = {} + } + if (scenario.results.directory) { + dir = scenario.results.directory + } + if (!dir.endsWith('/') && dir.trim() !== '') { + dir += '/' + } + return dir + filename } const writeFile = (filename, data, scenario) => { - let toWrite = data - if (typeof data === 'number') { - toWrite = JSON.stringify(data) - } - return fs.writeFileSync(getFilePath(filename, scenario), toWrite, 'utf-8') + let toWrite = data + if (typeof data === 'number') { + toWrite = JSON.stringify(data) + } + return fs.writeFileSync(getFilePath(filename, scenario), toWrite, 'utf-8') } const writeFileBuffer = (filename, data, scenario) => { - return fs.writeFileSync(getFilePath(filename, scenario), data) + return fs.writeFileSync(getFilePath(filename, scenario), data) } const readFileBuffer = (filename, scenario) => { - return fs.readFileSync(getFilePath(filename, scenario)) + return fs.readFileSync(getFilePath(filename, scenario)) } const readFile = (filename, scenario, dataType = 'utf-8') => { - return fs.readFileSync(getFilePath(filename, scenario), dataType) + return fs.readFileSync(getFilePath(filename, scenario), dataType) } const MAFWhen = function (name, func) { - const params = [] - for (let i = 0; i < func.length; i++) { - params.push('var' + i) - } - // eslint-disable-next-line no-use-before-define - let tmpFunc - eval(` + const params = [] + for (let i = 0; i < func.length; i++) { + params.push('var' + i) + } + // eslint-disable-next-line no-use-before-define + let tmpFunc + eval(` tmpFunc=async function(${params.join(',')}) { if(!this.results) { @@ -123,105 +124,105 @@ const MAFWhen = function (name, func) { this.attach(JSON.stringify({ lastRun: this.results.lastRun }, null, 2)) } `) - When(name, tmpFunc) + When(name, tmpFunc) } const MAFSave = function (location, obj) { - if (!this.results) { - this.results = {} - } - const loc = 'this.results.' + location - const set = loc + '=obj' - eval(set) - const res = {} - res[location] = eval(loc) - tryAttach.call(this, res) + if (!this.results) { + this.results = {} + } + const loc = 'this.results.' + location + const set = loc + '=obj' + eval(set) + const res = {} + res[location] = eval(loc) + tryAttach.call(this, res) } const fillTemplate = function (templateString, templateVars) { - // Check if the template string is a json object - let isJSON = true - try { - JSON.parse(templateString) - } catch (e) { - isJSON = false - } - templateVars.random = Math.floor(Math.random() * 100000) - if (typeof templateString !== 'string') { - templateString = JSON.stringify(templateString, null, 2) - } - // Get all the items between the curly braces. - const left = [] - let prev = false - let retStr = '' - const append = function (c) { - if (left.length === 0) { - retStr += c - } else { - left[left.length - 1].str += c - } - } - templateVars.require = require - const keys = Object.keys(templateVars) - const vals = Object.values(templateVars) - for (let i = 0; i < templateString.length; i++) { - const c = templateString.charAt(i) - if (c === '{') { - const item = { - index: i, - str: '' - } - if (prev) { - item.var = true - } - // If we have no items to replace the bracket should be treated as a character - if (left.length === 0 && !prev) { - append(c) - } else { - left.push(item) - } - prev = false - continue - } else if (c === '}') { - if (left.length !== 0) { - const l = left.pop() - if (l.var) { - // Use the provided string to process - let str = l.str - str = str.trim() - const res = (new Function(...keys, 'return ' + str + ';'))(...vals) - let ret = res - if ((typeof res === 'string' && isJSON) || typeof res === 'object') { ret = JSON.stringify(res, null, 2) } - if (isJSON && typeof res === 'string' && ret.length > 1 && ret[0] === '"' && ret[ret.length - 1] === '"') { - ret = ret.substring(1, ret.length - 1) - } - append(ret) + // Check if the template string is a json object + let isJSON = true + try { + JSON.parse(templateString) + } catch (e) { + isJSON = false + } + templateVars.random = Math.floor(Math.random() * 100000) + if (typeof templateString !== 'string') { + templateString = JSON.stringify(templateString, null, 2) + } + // Get all the items between the curly braces. + const left = [] + let prev = false + let retStr = '' + const append = function (c) { + if (left.length === 0) { + retStr += c } else { - append('{' + l.str + '}') + left[left.length - 1].str += c + } + } + templateVars.require = require + const keys = Object.keys(templateVars) + const vals = Object.values(templateVars) + for (let i = 0; i < templateString.length; i++) { + const c = templateString.charAt(i) + if (c === '{') { + const item = { + index: i, + str: '' + } + if (prev) { + item.var = true + } + // If we have no items to replace the bracket should be treated as a character + if (left.length === 0 && !prev) { + append(c) + } else { + left.push(item) + } + prev = false + continue + } else if (c === '}') { + if (left.length !== 0) { + const l = left.pop() + if (l.var) { + // Use the provided string to process + let str = l.str + str = str.trim() + const res = (new Function(...keys, 'return ' + str + ';'))(...vals) + let ret = res + if ((typeof res === 'string' && isJSON) || typeof res === 'object') { ret = JSON.stringify(res, null, 2) } + if (isJSON && typeof res === 'string' && ret.length > 1 && ret[0] === '"' && ret[ret.length - 1] === '"') { + ret = ret.substring(1, ret.length - 1) + } + append(ret) + } else { + append('{' + l.str + '}') + } + } else { + append(c) + } + prev = false + continue + } else { + if (prev) { + append('$') + } + if (c !== '$') { + append(c) + } + prev = (c === '$') } - } else { - append(c) - } - prev = false - continue - } else { - if (prev) { - append('$') - } - if (c !== '$') { - append(c) - } - prev = (c === '$') } - } - while (left.length !== 0) { - const l = left.shift() - if (l.var) { - retStr += '$' + while (left.length !== 0) { + const l = left.shift() + if (l.var) { + retStr += '$' + } + retStr += '{' + l.str } - retStr += '{' + l.str - } - return retStr + return retStr } module.exports = { performJSONObjectTransform, applyJSONToString, readFile, writeFile, writeFileBuffer, readFileBuffer, getFilePath, canAttach, MAFWhen, MAFSave, fillTemplate, tryAttach } diff --git a/packages/validations/features/luxon.feature b/packages/validations/features/luxon.feature new file mode 100644 index 0000000..5401b41 --- /dev/null +++ b/packages/validations/features/luxon.feature @@ -0,0 +1,6 @@ +Feature: Validations: Luxon + Scenario: Test Luxon + Given set "currentDate" to '${DateTime.now().toFormat("yyyy-MM-dd")}' + Then item "currentDate" is equal to '${new Date().toISOString().slice(0,10)}' + And item "currentDate" is not equal to '${DateTime.now().plus({days: 1}).toFormat("yyyy-MM-dd")}' + \ No newline at end of file diff --git a/packages/validations/index.js b/packages/validations/index.js index 331bf32..897ba4f 100644 --- a/packages/validations/index.js +++ b/packages/validations/index.js @@ -11,171 +11,171 @@ const { fillTemplate } = require('@ln-maf/core') const { MAFSave, tryAttach, performJSONObjectTransform, applyJSONToString, readFile, writeFile, writeFileBuffer, readFileBuffer, getFilePath, MAFWhen } = require('@ln-maf/core') Before((scenario) => { - world = scenario + world = scenario }) const toISO = d => { - const val = (Number(d).valueOf()) - if (isNaN(val)) { - return d - } - const date = new Date(val).toISOString() - return date + const val = (Number(d).valueOf()) + if (isNaN(val)) { + return d + } + const date = new Date(val).toISOString() + return date } const setToString = function (location, value, scenario, attach = true) { - MAFSave.call(scenario, location, applyJSONToString(value, scenario)) + MAFSave.call(scenario, location, applyJSONToString(value, scenario)) } MAFWhen('run templateString', function (docString) { - return fillTemplate(docString, this.results) + return fillTemplate(docString, this.results) }) MAFWhen('convert csv {jsonObject} to json', async function (obj) { - const content = performJSONObjectTransform.call(this, obj) - const Papa = require('papaparse') - let res = await Papa.parse(content, { - header: true - }) - const keyLength = Object.keys(res.data[0]).length - res = res.data.filter(i => Object.keys(i).length === keyLength) - return res + const content = performJSONObjectTransform.call(this, obj) + const Papa = require('papaparse') + let res = await Papa.parse(content, { + header: true + }) + const keyLength = Object.keys(res.data[0]).length + res = res.data.filter(i => Object.keys(i).length === keyLength) + return res }) // Stub function to test applying parameters to ensure that command line args can be included. When('parameters are:', function (docString) { - this.parameters = JSON.parse(docString) + this.parameters = JSON.parse(docString) }) MAFWhen('apply parameters', function () { - Object.assign(this.results, this.parameters) - tryAttach.call(this, this.parameters) + Object.assign(this.results, this.parameters) + tryAttach.call(this, this.parameters) }) When('set {string} to {jsonObject}', function (location, jsonObject) { - const obj = performJSONObjectTransform.call(this, jsonObject) - MAFSave.call(this, location, obj) + const obj = performJSONObjectTransform.call(this, jsonObject) + MAFSave.call(this, location, obj) }) When('set {string} to:', function (location, value) { - setToString(location, value, this) + setToString(location, value, this) }) When('set {string} to', function (location, value) { - setToString(location, value, this) + setToString(location, value, this) }) Then('{jsonObject} {validationsEquivalence} {jsonObject}', function (obj1, equiv, obj2) { - if (equiv === '=') { - equiv = '==' - } - const obj = Number(performJSONObjectTransform.call(this, obj1)) - obj2 = Number(performJSONObjectTransform.call(this, obj2)) - assert(eval('obj' + equiv + 'obj2'), JSON.stringify(obj) + ' was not ' + equiv + ' ' + JSON.stringify(obj2)) + if (equiv === '=') { + equiv = '==' + } + const obj = Number(performJSONObjectTransform.call(this, obj1)) + obj2 = Number(performJSONObjectTransform.call(this, obj2)) + assert(eval('obj' + equiv + 'obj2'), JSON.stringify(obj) + ' was not ' + equiv + ' ' + JSON.stringify(obj2)) }) Then('{jsonObject} is {timeQualifier} now', function (jsonObject, isBefore) { - const obj = performJSONObjectTransform.call(this, jsonObject) - const functionName = isBefore === 'before' ? 'isBefore' : 'isAfter' - let dateIn = obj - dateIn = toISO(dateIn) - const validator = require('validator') - assert(validator[functionName](dateIn, new Date().toISOString()), `${dateIn} was not ${isBefore} now`) + const obj = performJSONObjectTransform.call(this, jsonObject) + const functionName = isBefore === 'before' ? 'isBefore' : 'isAfter' + let dateIn = obj + dateIn = toISO(dateIn) + const validator = require('validator') + assert(validator[functionName](dateIn, new Date().toISOString()), `${dateIn} was not ${isBefore} now`) }) Then('{jsonObject} is {timeQualifier} {jsonObject}', function (string, isBefore, date) { - let obj = performJSONObjectTransform.call(this, string) - let obj2 = performJSONObjectTransform.call(this, date) - const functionName = isBefore === 'before' ? 'isBefore' : 'isAfter' - obj = toISO(obj) - obj2 = toISO(obj2) - const validator = require('validator') - assert(validator[functionName](obj, obj2), `${obj} was not ${isBefore} ${obj2}`) + let obj = performJSONObjectTransform.call(this, string) + let obj2 = performJSONObjectTransform.call(this, date) + const functionName = isBefore === 'before' ? 'isBefore' : 'isAfter' + obj = toISO(obj) + obj2 = toISO(obj2) + const validator = require('validator') + assert(validator[functionName](obj, obj2), `${obj} was not ${isBefore} ${obj2}`) }) Then('{jsonObject} is not null', function (jsonObject) { - const obj = performJSONObjectTransform.call(this, jsonObject) - assert.exists(obj) + const obj = performJSONObjectTransform.call(this, jsonObject) + assert.exists(obj) }) Then('{jsonObject} is null', function (jsonObject) { - const obj = performJSONObjectTransform.call(this, jsonObject) - assert.notExists(obj) + const obj = performJSONObjectTransform.call(this, jsonObject) + assert.notExists(obj) }) MAFWhen('run json path {string} on {jsonObject}', function (jPath, jsonObject) { - const jp = require('jsonpath') - const obj = performJSONObjectTransform.call(this, jsonObject) - return jp.query(obj, jPath) + const jp = require('jsonpath') + const obj = performJSONObjectTransform.call(this, jsonObject) + return jp.query(obj, jPath) }) const setNamespace = (namespace, scenario) => { - if (!scenario.results) { - scenario.results = {} - } - if (!scenario.results.namespace) { - scenario.results.namespace = {} - } - scenario.results.namespace = JSON.parse(namespace) + if (!scenario.results) { + scenario.results = {} + } + if (!scenario.results.namespace) { + scenario.results.namespace = {} + } + scenario.results.namespace = JSON.parse(namespace) } Given('xPath namespace is {string}', function (namespace) { - setNamespace(namespace, this) + setNamespace(namespace, this) }) Given('xPath namespace is', function (namespace) { - setNamespace(namespace, this) + setNamespace(namespace, this) }) Given('add xPath namespace {string} = {string}', function (namespace, url) { - if (!this.results) { - this.results = {} - } - if (!this.results.namespace) { - this.results.namespace = {} - } - this.results.namespace[namespace] = url + if (!this.results) { + this.results = {} + } + if (!this.results.namespace) { + this.results.namespace = {} + } + this.results.namespace[namespace] = url }) MAFWhen('generate rsa key', function () { - const crypto = require('crypto') - const { privateKey } = crypto.generateKeyPairSync('rsa', { - modulusLength: 2048, - publicKeyEncoding: { - type: 'spki', - format: 'pem' - }, - privateKeyEncoding: { - type: 'pkcs8', - format: 'pem' - } - }) - return privateKey + const crypto = require('crypto') + const { privateKey } = crypto.generateKeyPairSync('rsa', { + modulusLength: 2048, + publicKeyEncoding: { + type: 'spki', + format: 'pem' + }, + privateKeyEncoding: { + type: 'pkcs8', + format: 'pem' + } + }) + return privateKey }) MAFWhen('run xPath {string} on item {string}', function (xPath, element) { - if (!this.results.namespace) { - this.results.namespace = {} - } - const xpath = require('xpath') - const Dom = require('@xmldom/xmldom').DOMParser - const doc = new Dom().parseFromString(eval('this.results.' + element)) - const sel = xpath.useNamespaces(this.results.namespace) - return sel(xPath, doc).map(i => i.toString()).join('\n') + if (!this.results.namespace) { + this.results.namespace = {} + } + const xpath = require('xpath') + const Dom = require('@xmldom/xmldom').DOMParser + const doc = new Dom().parseFromString(eval('this.results.' + element)) + const sel = xpath.useNamespaces(this.results.namespace) + return sel(xPath, doc).map(i => i.toString()).join('\n') }) const doSetsMatch = (set1, set2, scenario) => { - const isSetsEqual = (a, b) => a.size === b.size && Array.from(a).every(value => b.has(value)) - const queryResult = new Set(set1.map(json => JSON.stringify(json, null, 2))) - const expected = new Set(set2.map(json => JSON.stringify(json, null, 2))) - const difference = { - queryResult: [...queryResult].filter(x => !expected.has(x)).map(e => JSON.parse(e)), - expected: [...expected].filter(x => !queryResult.has(x)).map(e => JSON.parse(e)) - } - const res = isSetsEqual(expected, queryResult) - const diffedJSON = JSON.stringify(difference, null, 2) - tryAttach.call(scenario, diffedJSON) - assert(res, `The difference is: ${diffedJSON}`) + const isSetsEqual = (a, b) => a.size === b.size && Array.from(a).every(value => b.has(value)) + const queryResult = new Set(set1.map(json => JSON.stringify(json, null, 2))) + const expected = new Set(set2.map(json => JSON.stringify(json, null, 2))) + const difference = { + queryResult: [...queryResult].filter(x => !expected.has(x)).map(e => JSON.parse(e)), + expected: [...expected].filter(x => !queryResult.has(x)).map(e => JSON.parse(e)) + } + const res = isSetsEqual(expected, queryResult) + const diffedJSON = JSON.stringify(difference, null, 2) + tryAttach.call(scenario, diffedJSON) + assert(res, `The difference is: ${diffedJSON}`) } const setMatch = function (set1, set2) { - set1 = this.results[set1] - set2 = this.results[set2] - doSetsMatch(set1, set2, this) + set1 = this.results[set1] + set2 = this.results[set2] + doSetsMatch(set1, set2, this) } const setFileMatch = function (set, file) { - file = readFile(file, this) - doSetsMatch(applyJSONToString(this.results[set], this), applyJSONToString(file, this), this) + file = readFile(file, this) + doSetsMatch(applyJSONToString(this.results[set], this), applyJSONToString(file, this), this) } /** @@ -184,11 +184,11 @@ const setFileMatch = function (set, file) { * @param {JSON} object A JSON object * @returns true if the key was successfully removed */ -function jsonDeleteKey (jsonKey, object) { - const original = JSON.parse(JSON.stringify(object)) - eval(`delete object.${jsonKey}`) - require('chai').assert.notDeepEqual(`${object}`, original) - return true +function jsonDeleteKey(jsonKey, object) { + const original = JSON.parse(JSON.stringify(object)) + eval(`delete object.${jsonKey}`) + require('chai').assert.notDeepEqual(`${object}`, original) + return true } /** @@ -198,466 +198,466 @@ function jsonDeleteKey (jsonKey, object) { * @param {string} separator A one character string to signal a split * @returns A new filtered JSON object */ -function whitelistJson (sourceJSON, whitelist, separator) { - const object = {} - - for (let i = 0, length = whitelist.length; i < length; ++i) { - let k = 0 - const names = whitelist[i].split(separator || '.') - let value = sourceJSON - let name - const count = names.length - let ref = object - while (k < count - 1) { - name = names[k++] - value = value[name] - ref[name] = {} - ref = ref[name] +function whitelistJson(sourceJSON, whitelist, separator) { + const object = {} + + for (let i = 0, length = whitelist.length; i < length; ++i) { + let k = 0 + const names = whitelist[i].split(separator || '.') + let value = sourceJSON + let name + const count = names.length + let ref = object + while (k < count - 1) { + name = names[k++] + value = value[name] + ref[name] = {} + ref = ref[name] + } + ref[names[count - 1]] = value[names[count - 1]] } - ref[names[count - 1]] = value[names[count - 1]] - } - return object + return object } /** * Removes the JSON key/value from the JSON Object provided */ MAFWhen('JSON key {string} is removed from {jsonObject}', function (jsonpath, jsonObject) { - let obj = performJSONObjectTransform.call(this, jsonObject) - if (typeof obj === 'string') { - obj = this.results[obj] - } - assert(jsonDeleteKey.call(this, jsonpath, obj, 'Could not delete key')) - return obj + let obj = performJSONObjectTransform.call(this, jsonObject) + if (typeof obj === 'string') { + obj = this.results[obj] + } + assert(jsonDeleteKey.call(this, jsonpath, obj, 'Could not delete key')) + return obj }) /** * Returns the JSON key from a variable to lastRun */ MAFWhen('JSON key {string} is extracted from {jsonObject}', function (jsonpath, jsonObject) { - let obj = performJSONObjectTransform.call(this, jsonObject) - if (typeof obj === 'string') { - obj = eval(`this.results.${obj}`) - } - return eval(`obj.${jsonpath}`) + let obj = performJSONObjectTransform.call(this, jsonObject) + if (typeof obj === 'string') { + obj = eval(`this.results.${obj}`) + } + return eval(`obj.${jsonpath}`) }) /** * Returns the JSON key from a variable {jsonObject} to lastRun */ MAFWhen('JSON keys {string} are extracted from {jsonObject}', function (array, variable) { - const obj = performJSONObjectTransform.call(this, variable) - array = fillTemplate(array, this.results) - try { - array = JSON.parse(array) - } catch (e) { - array = array.replace('[', '') - array = array.replace(']', '') - array = array.split(',') - array = array.map(i => i.trim()) - } - return whitelistJson.call(this, obj, array) + const obj = performJSONObjectTransform.call(this, variable) + array = fillTemplate(array, this.results) + try { + array = JSON.parse(array) + } catch (e) { + array = array.replace('[', '') + array = array.replace(']', '') + array = array.split(',') + array = array.map(i => i.trim()) + } + return whitelistJson.call(this, obj, array) }) /** * Replaces the value of all found JSON keys in a file, using the JSON path to identify the keys */ When('{string} is written to file {string} on JSON path {string}', function (value, fileName, jsonPath) { - const jp = require('jsonpath') - const fileContents = JSON.parse(readFile(fileName, this)) - jp.apply(fileContents, jsonPath, function () { return value }) - writeFile(fileName, JSON.stringify(fileContents), this) - tryAttach.call(this, fileContents) + const jp = require('jsonpath') + const fileContents = JSON.parse(readFile(fileName, this)) + jp.apply(fileContents, jsonPath, function () { return value }) + writeFile(fileName, JSON.stringify(fileContents), this) + tryAttach.call(this, fileContents) }) /** * Replaces the value of all found JSON keys in an item, using the JSON path to identify the keys */ When('{string} is applied to item {string} on JSON path {string}', function (value, item, jsonPath) { - const jp = require('jsonpath') - const fileContents = this.results[item] - value = fillTemplate(value, this.results) - if (value.trim() !== '') { - try { - const tmp = JSON.parse(value) - value = tmp - } catch (e) { } - } - jp.apply(fileContents, jsonPath, function () { return value }) - this.results[item] = fileContents - tryAttach.call(this, this.results[item]) + const jp = require('jsonpath') + const fileContents = this.results[item] + value = fillTemplate(value, this.results) + if (value.trim() !== '') { + try { + const tmp = JSON.parse(value) + value = tmp + } catch (e) { } + } + jp.apply(fileContents, jsonPath, function () { return value }) + this.results[item] = fileContents + tryAttach.call(this, this.results[item]) }) When('{jsonObject} is written in json line delimited format to file {string}', function (item, file) { - let obj = performJSONObjectTransform.call(this, item) - file = fillTemplate(file, this.results) - try { obj = JSON.parse(obj) } catch (e) {} - writeFile(file, obj.map(i => JSON.stringify(i)).join('\n'), this) + let obj = performJSONObjectTransform.call(this, item) + file = fillTemplate(file, this.results) + try { obj = JSON.parse(obj) } catch (e) { } + writeFile(file, obj.map(i => JSON.stringify(i)).join('\n'), this) }) When('{jsonObject} is written to file {string}', function (jsonObject, file) { - let obj = performJSONObjectTransform.call(this, jsonObject) - file = fillTemplate(file, this.results) - if (typeof (obj) === 'object') { - obj = JSON.stringify(obj) - } - writeFile(file, obj, this) + let obj = performJSONObjectTransform.call(this, jsonObject) + file = fillTemplate(file, this.results) + if (typeof (obj) === 'object') { + obj = JSON.stringify(obj) + } + writeFile(file, obj, this) }) Then('it matches the set from file {string}', function (set1) { - return setFileMatch.call(this, 'lastRun', set1) + return setFileMatch.call(this, 'lastRun', set1) }) Then('the set {string} matches the set from file {string}', function (f, s) { - const res = setFileMatch.call(this, f, s) - return res + const res = setFileMatch.call(this, f, s) + return res }) Then('the set {string} matches the set {string}', setMatch) Then('it matches the set {string}', function (set) { - return setMatch.call(this, 'lastRun', set) + return setMatch.call(this, 'lastRun', set) }) MAFWhen('the file {string} is gzipped', function (filename) { - filename = fillTemplate(filename, this.results) - try { - fs.deleteFileSync(getFilePath(filename, this)) - } catch (e) { - } - const zlib = require('zlib') - const bf = readFileBuffer(filename, this) - const buffer = zlib.gzipSync(bf) - writeFileBuffer(filename + '.gz', buffer, this) - return '' + filename = fillTemplate(filename, this.results) + try { + fs.deleteFileSync(getFilePath(filename, this)) + } catch (e) { + } + const zlib = require('zlib') + const bf = readFileBuffer(filename, this) + const buffer = zlib.gzipSync(bf) + writeFileBuffer(filename + '.gz', buffer, this) + return '' }) MAFWhen('file {string} is gzip unzipped to file {string}', function (file, fileOut) { - file = fillTemplate(file, this.results) - fileOut = fillTemplate(fileOut, this.results) - const zlib = require('zlib') - const bf = readFileBuffer(file, this) - const buffer = zlib.unzipSync(bf) - writeFileBuffer(fileOut, buffer, this) - return '' + file = fillTemplate(file, this.results) + fileOut = fillTemplate(fileOut, this.results) + const zlib = require('zlib') + const bf = readFileBuffer(file, this) + const buffer = zlib.unzipSync(bf) + writeFileBuffer(fileOut, buffer, this) + return '' }) When('set config from json {jsonObject}', function (jsonObject) { - const obj = performJSONObjectTransform.call(this, jsonObject) - for (const i in obj) { - setToString(i, obj[i], this) - } + const obj = performJSONObjectTransform.call(this, jsonObject) + for (const i in obj) { + setToString(i, obj[i], this) + } }) When('set:', function (dataTable) { - dataTable = dataTable.rawTable - const indices = dataTable[0] - let item = [] - indices.forEach((i, index) => { - item[index] = [] - }) - dataTable = dataTable.slice(1) - dataTable.forEach((i) => { - i.forEach((j, index) => { - item[index].push(j) + dataTable = dataTable.rawTable + const indices = dataTable[0] + let item = [] + indices.forEach((i, index) => { + item[index] = [] + }) + dataTable = dataTable.slice(1) + dataTable.forEach((i) => { + i.forEach((j, index) => { + item[index].push(j) + }) + }) + item = item.map(i => { + if (i.length === 1) { + return i[0] + } + return i + }) + indices.forEach((i, index) => { + setToString(i, item[index], this) }) - }) - item = item.map(i => { - if (i.length === 1) { - return i[0] - } - return i - }) - indices.forEach((i, index) => { - setToString(i, item[index], this) - }) }) MAFWhen('set result to {jsonObject}', function (item) { - return performJSONObjectTransform.call(this, item) + return performJSONObjectTransform.call(this, item) }) MAFWhen('{jsonObject} is base64 encoded', function (item) { - item = performJSONObjectTransform.call(this, item) - if (typeof item !== 'string') { - item = JSON.stringify(item) - } - const encode = (Buffer.from(item, 'ascii').toString('base64')) - return encode + item = performJSONObjectTransform.call(this, item) + if (typeof item !== 'string') { + item = JSON.stringify(item) + } + const encode = (Buffer.from(item, 'ascii').toString('base64')) + return encode }) MAFWhen('{jsonObject} is base64 decoded', function (item) { - item = performJSONObjectTransform.call(this, item) - assert(typeof item === 'string', 'Item type needs to be a string for base64 decoding, but it was a ' + typeof item) - const decode = (Buffer.from(item, 'base64').toString('ascii')) - return decode + item = performJSONObjectTransform.call(this, item) + assert(typeof item === 'string', 'Item type needs to be a string for base64 decoding, but it was a ' + typeof item) + const decode = (Buffer.from(item, 'base64').toString('ascii')) + return decode }) Then('the value {string} is base64 decoded and resaved', function (item) { - const unencrypt = (Buffer.from(this.results[item], 'base64').toString('ascii')) - this.results[item] = unencrypt - tryAttach.call(this, 'Decoded value: ' + unencrypt) + const unencrypt = (Buffer.from(this.results[item], 'base64').toString('ascii')) + this.results[item] = unencrypt + tryAttach.call(this, 'Decoded value: ' + unencrypt) }) const lowerCaseItemKeys = function (item) { - Object.keys(item).forEach(i => { - if (i.toLowerCase() !== i) { - item[i.toLowerCase()] = item[i] - delete item[i] - } - if (typeof item[i.toLowerCase()] === 'object') { - lowerCaseItemKeys(item[i.toLowerCase()]) - } - }) + Object.keys(item).forEach(i => { + if (i.toLowerCase() !== i) { + item[i.toLowerCase()] = item[i] + delete item[i] + } + if (typeof item[i.toLowerCase()] === 'object') { + lowerCaseItemKeys(item[i.toLowerCase()]) + } + }) } When('make json keys for item {string} lower case', function (item) { - lowerCaseItemKeys(this.results[item]) - tryAttach.call(this, this.results[item]) + lowerCaseItemKeys(this.results[item]) + tryAttach.call(this, this.results[item]) }) const flatten = function (item, res) { - Object.keys(item).forEach(i => { - if (typeof item[i] === 'object') { flatten(item[i], res) } else { res[i] = item[i] } - }) + Object.keys(item).forEach(i => { + if (typeof item[i] === 'object') { flatten(item[i], res) } else { res[i] = item[i] } + }) } When('json item {string} is flattened', function (item) { - const res = {} - flatten(this.results[item], res) - this.results[item] = res - tryAttach.call(this, this.results[item]) + const res = {} + flatten(this.results[item], res) + this.results[item] = res + tryAttach.call(this, this.results[item]) }) const numberify = function (item) { - Object.keys(item).forEach(i => { - if (typeof item[i] === 'object') { numberify(item[i]) } else if (typeof item[i] === 'string') { - const intVal = Number(item[i]) - if (!Number.isNaN(intVal)) { item[i] = intVal } - } - }) + Object.keys(item).forEach(i => { + if (typeof item[i] === 'object') { numberify(item[i]) } else if (typeof item[i] === 'string') { + const intVal = Number(item[i]) + if (!Number.isNaN(intVal)) { item[i] = intVal } + } + }) } When('json item {string} is numberifyed', function (item) { - numberify(this.results[item]) - tryAttach.call(this, this.results[item]) + numberify(this.results[item]) + tryAttach.call(this, this.results[item]) }) const trimIt = function (item) { - Object.keys(item).forEach(i => { - if (typeof item[i] === 'object') { - trimIt(item[i]) - } else if (typeof item[i] === 'string') { item[i] = item[i].trim() } - }) + Object.keys(item).forEach(i => { + if (typeof item[i] === 'object') { + trimIt(item[i]) + } else if (typeof item[i] === 'string') { item[i] = item[i].trim() } + }) } When('json item {string} is trimmed', function (item) { - trimIt(this.results[item]) - tryAttach.call(this, this.results[item]) + trimIt(this.results[item]) + tryAttach.call(this, this.results[item]) }) Then('{jsonObject} is not equal to {jsonObject}', function (item1, item2) { - item1 = performJSONObjectTransform.call(this, item1) - item2 = performJSONObjectTransform.call(this, item2) - if (typeof item1 === 'object' && typeof item2 === 'object') { - assert.notDeepEqual(item1, item2) - } else { - assert.notEqual(item1, item2) - } + item1 = performJSONObjectTransform.call(this, item1) + item2 = performJSONObjectTransform.call(this, item2) + if (typeof item1 === 'object' && typeof item2 === 'object') { + assert.notDeepEqual(item1, item2) + } else { + assert.notEqual(item1, item2) + } }) Then('{jsonObject} is equal to {jsonObject}', function (item1, item2) { - item1 = performJSONObjectTransform.call(this, item1) - item2 = performJSONObjectTransform.call(this, item2) - if (typeof item1 === 'object' && typeof item2 === 'object') { - assert.deepEqual(item1, item2) - } else { - assert.equal(item1, item2) - } + item1 = performJSONObjectTransform.call(this, item1) + item2 = performJSONObjectTransform.call(this, item2) + if (typeof item1 === 'object' && typeof item2 === 'object') { + assert.deepEqual(item1, item2) + } else { + assert.equal(item1, item2) + } }) Then('{jsonObject} is not equal to:', function (item1, item2) { - item1 = performJSONObjectTransform.call(this, item1) - let expected = fillTemplate(item2, this.results) - try { - expected = JSON.parse(expected) - } catch (e) { } - if (typeof item1 === 'object' && typeof expected === 'object') { - assert.notDeepEqual(item1, expected) - } else { - assert.notEqual(item1, expected) - } + item1 = performJSONObjectTransform.call(this, item1) + let expected = fillTemplate(item2, this.results) + try { + expected = JSON.parse(expected) + } catch (e) { } + if (typeof item1 === 'object' && typeof expected === 'object') { + assert.notDeepEqual(item1, expected) + } else { + assert.notEqual(item1, expected) + } }) Then('{jsonObject} is equal to:', function (item1, item2) { - item1 = performJSONObjectTransform.call(this, item1) - let expected = fillTemplate(item2, this.results) - try { - expected = JSON.parse(expected) - } catch (e) { } - if (typeof item1 === 'object' && typeof expected === 'object') { - assert.deepEqual(item1, expected) - } else { - assert.equal(item1, expected) - } + item1 = performJSONObjectTransform.call(this, item1) + let expected = fillTemplate(item2, this.results) + try { + expected = JSON.parse(expected) + } catch (e) { } + if (typeof item1 === 'object' && typeof expected === 'object') { + assert.deepEqual(item1, expected) + } else { + assert.equal(item1, expected) + } }) Then('element {string} does not exist in {jsonObject}', function (element, jsonObject) { - const obj = performJSONObjectTransform.call(this, jsonObject) - element = fillTemplate(element, this.results) - assert.doesNotHaveAnyKeys(obj, [element]) + const obj = performJSONObjectTransform.call(this, jsonObject) + element = fillTemplate(element, this.results) + assert.doesNotHaveAnyKeys(obj, [element]) }) Then('element {string} exists in {jsonObject}', function (element, jsonObject) { - const obj = performJSONObjectTransform.call(this, jsonObject) - element = fillTemplate(element, this.results) - assert.containsAllKeys(obj, [element]) + const obj = performJSONObjectTransform.call(this, jsonObject) + element = fillTemplate(element, this.results) + assert.containsAllKeys(obj, [element]) }) Then('elements {string} do not exist in {jsonObject}', function (element, jsonObject) { - const obj = performJSONObjectTransform.call(this, jsonObject) - try { - element = JSON.parse(element) - } catch (e) { - element = element.replace('[', '') - element = element.replace(']', '') - element = element.split(',') - element = element.map(i => i.trim()) - } - assert.doesNotHaveAnyKeys(obj, element) + const obj = performJSONObjectTransform.call(this, jsonObject) + try { + element = JSON.parse(element) + } catch (e) { + element = element.replace('[', '') + element = element.replace(']', '') + element = element.split(',') + element = element.map(i => i.trim()) + } + assert.doesNotHaveAnyKeys(obj, element) }) Then('elements {string} exist in {jsonObject}', function (element, jsonObject) { - const obj = performJSONObjectTransform.call(this, jsonObject) - element = fillTemplate(element, this.results) - try { - element = JSON.parse(element) - } catch (e) { - element = element.replace('[', '') - element = element.replace(']', '') - element = element.split(',') - element = element.map(i => i.trim()) - } - assert.containsAllKeys(obj, element) + const obj = performJSONObjectTransform.call(this, jsonObject) + element = fillTemplate(element, this.results) + try { + element = JSON.parse(element) + } catch (e) { + element = element.replace('[', '') + element = element.replace(']', '') + element = element.split(',') + element = element.map(i => i.trim()) + } + assert.containsAllKeys(obj, element) }) const performEncrypt = function () { - const options = {} - options.header = this.results.header - const jwt = require('jsonwebtoken') - setToString('lastRun', jwt.sign(this.results.jwtPayload, this.results.privateKey, options), this) + const options = {} + options.header = this.results.header + const jwt = require('jsonwebtoken') + setToString('lastRun', jwt.sign(this.results.jwtPayload, this.results.privateKey, options), this) } When('sign item {string} using jwt', function (item) { - item = fillTemplate(item, this.results) - item = fillTemplate(this.results[item], this.results) - setToString('jwtPayload', item, this, false) - performEncrypt.call(this) + item = fillTemplate(item, this.results) + item = fillTemplate(this.results[item], this.results) + setToString('jwtPayload', item, this, false) + performEncrypt.call(this) }) When('sign using jwt:', function (docString) { - setToString('jwtPayload', docString, this, false) - performEncrypt.call(this) + setToString('jwtPayload', docString, this, false) + performEncrypt.call(this) }) const sleep = { - msleep: function (n) { Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, n) } + msleep: function (n) { Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, n) } } When('wait {int} milliseconds', function (milliseconds) { - sleep.msleep(milliseconds) + sleep.msleep(milliseconds) }) Given('set examples', async function () { - // Write code here that turns the phrase above into concrete actions - const a = world - const flatten = (acc, cumulator) => { - if (typeof cumulator === 'undefined') { - return acc - } - if (Array.isArray(cumulator)) { return [...acc, ...cumulator] } else { - acc.push(cumulator) - return acc + // Write code here that turns the phrase above into concrete actions + const a = world + const flatten = (acc, cumulator) => { + if (typeof cumulator === 'undefined') { + return acc + } + if (Array.isArray(cumulator)) { return [...acc, ...cumulator] } else { + acc.push(cumulator) + return acc + } } - } - let extras = a.pickle.steps.map(i => i.astNodeIds) - extras = extras.reduce(flatten) - let examples = a.gherkinDocument.feature.children.map(i => { - if (!i.scenario) return [] - if (!i.scenario.examples) return [] - return i.scenario.examples.map( - i => i.tableBody.filter( - i => extras.includes(i.id))) - }) - .reduce(flatten, []) - let res = a.gherkinDocument.feature.children.map(i => { - if (!i.scenario) return [] - return i.scenario.examples.filter(i => { - if (!i.tableBody) return [] - return i.tableBody.map(i => extras.includes(i.id)).includes(true) + let extras = a.pickle.steps.map(i => i.astNodeIds) + extras = extras.reduce(flatten) + let examples = a.gherkinDocument.feature.children.map(i => { + if (!i.scenario) return [] + if (!i.scenario.examples) return [] + return i.scenario.examples.map( + i => i.tableBody.filter( + i => extras.includes(i.id))) }) - }).reduce(flatten, []) - let headers = res.map(i => i.tableHeader.cells).reduce(flatten, []) - headers = headers.map(i => i.value) - examples = examples.reduce(flatten, []).map(i => i.cells).reduce(flatten, []).map(i => i.value) - res = headers.reduce((prev, curr, i) => { - prev[curr] = examples[i] - return prev - } - , {}) - if (!this.results) { - this.results = {} - } - const keys = Object.keys(res) - for (let key in keys) { - key = keys[key] - res[key] = fillTemplate(res[key], this.results) - this.results[key] = res[key] - } - tryAttach.call(this, res) + .reduce(flatten, []) + let res = a.gherkinDocument.feature.children.map(i => { + if (!i.scenario) return [] + return i.scenario.examples.filter(i => { + if (!i.tableBody) return [] + return i.tableBody.map(i => extras.includes(i.id)).includes(true) + }) + }).reduce(flatten, []) + let headers = res.map(i => i.tableHeader.cells).reduce(flatten, []) + headers = headers.map(i => i.value) + examples = examples.reduce(flatten, []).map(i => i.cells).reduce(flatten, []).map(i => i.value) + res = headers.reduce((prev, curr, i) => { + prev[curr] = examples[i] + return prev + } + , {}) + if (!this.results) { + this.results = {} + } + const keys = Object.keys(res) + for (let key in keys) { + key = keys[key] + res[key] = fillTemplate(res[key], this.results) + this.results[key] = res[key] + } + tryAttach.call(this, res) }) Then('{jsonObject} contains {string}', function (jsonObject, checkString) { - let obj = performJSONObjectTransform.call(this, jsonObject) - checkString = fillTemplate(checkString, this.results) - obj = JSON.stringify(obj) - assert.isTrue(obj.includes(checkString), `String '${checkString}' is not in ${obj}`) + let obj = performJSONObjectTransform.call(this, jsonObject) + checkString = fillTemplate(checkString, this.results) + obj = JSON.stringify(obj) + assert.isTrue(obj.includes(checkString), `String '${checkString}' is not in ${obj}`) }) Then('{jsonObject} does not contain {string}', function (jsonObject, checkString) { - let obj = performJSONObjectTransform.call(this, jsonObject) - checkString = fillTemplate(checkString, this.results) - obj = JSON.stringify(obj) - assert.isFalse(obj.includes(checkString), `String '${checkString}' is in ${obj}`) -}) -function toArrayBuffer (buf) { - const ab = new ArrayBuffer(buf.length) - const view = new Uint8Array(ab) - for (let i = 0; i < buf.length; ++i) { - view[i] = buf[i] - } - return ab + let obj = performJSONObjectTransform.call(this, jsonObject) + checkString = fillTemplate(checkString, this.results) + obj = JSON.stringify(obj) + assert.isFalse(obj.includes(checkString), `String '${checkString}' is in ${obj}`) +}) +function toArrayBuffer(buf) { + const ab = new ArrayBuffer(buf.length) + const view = new Uint8Array(ab) + for (let i = 0; i < buf.length; ++i) { + view[i] = buf[i] + } + return ab } MAFWhen('blob is read from file {string}', async function (fileName) { - let res = readFileBuffer(fileName, this) - const arrayBuff = toArrayBuffer(res) - const f = () => arrayBuff - f.bind(this) - res = { arrayBuffer: f } - return res + let res = readFileBuffer(fileName, this) + const arrayBuff = toArrayBuffer(res) + const f = () => arrayBuff + f.bind(this) + res = { arrayBuffer: f } + return res }) When('blob item {string} is written to file {string}', async function (blob, fileName) { - blob = fillTemplate(blob, this.results) - blob = eval('this.results.' + blob) - const b = Buffer.from(await blob.arrayBuffer()) - writeFile(`${fileName}`, b, this) + blob = fillTemplate(blob, this.results) + blob = eval('this.results.' + blob) + const b = Buffer.from(await blob.arrayBuffer()) + writeFile(`${fileName}`, b, this) }) When('blob item {string} is attached', async function (blob) { - blob = fillTemplate(blob, this.results) - blob = eval('this.results.' + blob) - const b = Buffer.from(await blob.arrayBuffer()) - return this.attach(b, 'image/png') + blob = fillTemplate(blob, this.results) + blob = eval('this.results.' + blob) + const b = Buffer.from(await blob.arrayBuffer()) + return this.attach(b, 'image/png') }) Then('blob item {string} is equal to file {string}', async function (blob, fileName) { - blob = fillTemplate(blob, this.results) - blob = eval('this.results.' + blob) - const b = await blob.arrayBuffer() - const actualImage = readFileBuffer(`${fileName}`, this) - assert.isTrue(Buffer.compare(actualImage, Buffer.from(b)) === 0) + blob = fillTemplate(blob, this.results) + blob = eval('this.results.' + blob) + const b = await blob.arrayBuffer() + const actualImage = readFileBuffer(`${fileName}`, this) + assert.isTrue(Buffer.compare(actualImage, Buffer.from(b)) === 0) }) From 538bbbbe07f7f3af81a4b2dd2b6e09143ad0c36e Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 7 Feb 2024 15:17:43 -0500 Subject: [PATCH 38/48] init sftp --- packages/sftp/.gitignore | 2 + packages/sftp/.npmignore | 4 + packages/sftp/LICENSE | 201 +++++++++++++++++ packages/sftp/README.md | 16 ++ packages/sftp/features/sftp.feature | 4 + packages/sftp/index.js | 1 + packages/sftp/package.json | 45 ++++ packages/sftp/runFeature.sh | 9 + packages/sftp/stepDefinitions/sftp.js | 299 ++++++++++++++++++++++++++ 9 files changed, 581 insertions(+) create mode 100644 packages/sftp/.gitignore create mode 100644 packages/sftp/.npmignore create mode 100644 packages/sftp/LICENSE create mode 100644 packages/sftp/README.md create mode 100644 packages/sftp/features/sftp.feature create mode 100644 packages/sftp/index.js create mode 100644 packages/sftp/package.json create mode 100644 packages/sftp/runFeature.sh create mode 100644 packages/sftp/stepDefinitions/sftp.js diff --git a/packages/sftp/.gitignore b/packages/sftp/.gitignore new file mode 100644 index 0000000..96cbc11 --- /dev/null +++ b/packages/sftp/.gitignore @@ -0,0 +1,2 @@ +node_modules +test/ \ No newline at end of file diff --git a/packages/sftp/.npmignore b/packages/sftp/.npmignore new file mode 100644 index 0000000..9abe4e2 --- /dev/null +++ b/packages/sftp/.npmignore @@ -0,0 +1,4 @@ +*.png +.gitignore +coverage +tmp diff --git a/packages/sftp/LICENSE b/packages/sftp/LICENSE new file mode 100644 index 0000000..f49a4e1 --- /dev/null +++ b/packages/sftp/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/packages/sftp/README.md b/packages/sftp/README.md new file mode 100644 index 0000000..f41a360 --- /dev/null +++ b/packages/sftp/README.md @@ -0,0 +1,16 @@ +# SFTP Cucumber Steps +This module adds SFTP step definitions for testing file servers. + +[![npm package][npm-image]][npm-url] +[![GitHub Actions](https://github.com/hpcc-systems/MAF/workflows/Build/badge.svg)](https://github.com/hpcc-systems/MAF/actions) +[![Dependencies][dep-image]][dep-url] + +## Set up +Install with `npm i @ln-maf/sftp` +Add a step file with the following code: +``` +require('@ln-maf/sftp') +``` + +# Step Definitions + diff --git a/packages/sftp/features/sftp.feature b/packages/sftp/features/sftp.feature new file mode 100644 index 0000000..3829f1d --- /dev/null +++ b/packages/sftp/features/sftp.feature @@ -0,0 +1,4 @@ +Feature: SFTP + + Scenario: SFTP Download File + \ No newline at end of file diff --git a/packages/sftp/index.js b/packages/sftp/index.js new file mode 100644 index 0000000..0240667 --- /dev/null +++ b/packages/sftp/index.js @@ -0,0 +1 @@ +require('./stepDefinitions/sftp') diff --git a/packages/sftp/package.json b/packages/sftp/package.json new file mode 100644 index 0000000..f950c09 --- /dev/null +++ b/packages/sftp/package.json @@ -0,0 +1,45 @@ +{ + "name": "@ln-maf/sftp", + "publishConfig": { + "access": "public" + }, + "version": "3.0.0-beta.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "bash runFeature.sh" + }, + "author": "", + "license": "Apache-2.0", + "dependencies": { + "ssh2-sftp-client": "^10.0.0" + }, + "peerDependencies": { + "@cucumber/cucumber": ">= 10.0.0", + "@ln-maf/core": "3.0.0-beta.0" + }, + "devDependencies": { + "@cucumber/cucumber": "^10.0.0", + "@ln-maf/core": "file:../core", + "eslint": "^8.18.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.0.0", + "multiple-cucumber-html-reporter": "^3.6.0", + }, + "gitHead": "9bf55a2c86fa17707fabfb4320c3d722e270f9e6", + "repository": { + "type": "git", + "url": "git+https://github.com/hpcc-systems/MAF.git" + }, + "keywords": [ + "cucumber-js", + "testing", + "sftp" + ], + "bugs": { + "url": "https://github.com/hpcc-systems/MAF/issues" + }, + "homepage": "https://github.com/hpcc-systems/MAF#readme" +} diff --git a/packages/sftp/runFeature.sh b/packages/sftp/runFeature.sh new file mode 100644 index 0000000..7ef387a --- /dev/null +++ b/packages/sftp/runFeature.sh @@ -0,0 +1,9 @@ +mkdir -p test/report +if [[ "$ENVIRONMENT" == "COVERAGE" ]]; then + npx nyc --reporter=lcov --reporter=text cucumber-js $EXTRAS -f json:test/report/preprocessor.json --require "stepDefinitions/*.js" features/$* +else + npx cucumber-js $EXTRAS -f json:test/report/preprocessor.json --require "stepDefinitions/*.js" features/$* +fi +result=$? +npx multiReport +exit $result \ No newline at end of file diff --git a/packages/sftp/stepDefinitions/sftp.js b/packages/sftp/stepDefinitions/sftp.js new file mode 100644 index 0000000..59cfed1 --- /dev/null +++ b/packages/sftp/stepDefinitions/sftp.js @@ -0,0 +1,299 @@ +const { MAFWhen, getFilePath, performJSONObjectTransform, filltemplate } = require('@ln-maf/core') +const { setDefaultTimeout } = require('@cucumber/cucumber') +const { execSync } = require('child_process')` +const Client = require('ssh2-sftp-client') +const fs = require('fs')` +const sftp = new Client() +const path = require('path') + +setDefaultTimeout(15 * 60 * 1000) + +const conf = { + host: process.env.HOSTNAME, + username: process.env.USERNAME, + agent: process.env.SSH_AUTH_SOCK +} + +MAFWhen('server {string} is set', function (name) { + name = filltemplate(name, this.results) + conf.host = name + return conf +}) + +MAFWhen('username {string} is set', function (name) { + name = filltemplate(name, this.results) + conf.username = name + return conf +}) + +MAFWhen('ssh into {string}', function (string) { + return execSync(`bash aunixlandAccess.sh ${string}`).toString().trim() +}) + +MAFWhen('a user send command {string} to server {string}', function (command, server) { + return execSync(`ssh ${conf.username}@${server} ${command}`).toString().trim() +}) + +MAFWhen('list of files from remote server directory {string} is received', async function (serverDirectory) { + serverDirectory = filltemplate(serverDirectory, this.results) + await sftp.connect(conf) + const remoteFiles = await sftp.list(serverDirectory, item => item.type === '-') + await sftp.end() + return remoteFiles.map(file => file.name) +}) + +MAFWhen('list of files from remote server {string} directory {string} is received', async function (serverName, serverDirectory) { + conf.host = filltemplate(serverName, this.results) + serverDirectory = filltemplate(serverDirectory, this.results) + await sftp.connect(conf) + const remoteFiles = await sftp.list(serverDirectory, item => item.type === '-') + await sftp.end() + return remoteFiles.map(file => file.name) +}) + +MAFWhen('file {string} is copied as user {string} from server {string}', function (serverFile, userName, serverName) { + serverFile = filltemplate(serverFile, this.results) + conf.username = filltemplate(userName, this.results) + conf.host = filltemplate(serverName, this.results) + return getFileFromServer(serverFile, getFilePath(path.basename(serverFile), this)) +}) + +MAFWhen('file {string} is get from remote server to {string}', function (serverFile, localFile) { + serverFile = filltemplate(serverFile, this.results) + localFile = filltemplate(localFile, this.results) + localFile = getFilePath(localFile, this) + return getFileFromServer(serverFile, localFile) +}) + +MAFWhen('latest file as user {string} from server {string} in directory {string} is retrieved', async function (userName, serverName, directory) { + userName = filltemplate(userName, this.results) + serverName = filltemplate(serverName, this.results) + directory = filltemplate(directory, this.results) + conf.host = serverName + conf.username = userName + return await copyLatestFileFromServer.call(this, directory) +}) + +MAFWhen('latest file as user {string} from server {string} in directory {string} is downloaded to {string}', async function (userName, serverName, directory, localPath) { + userName = filltemplate(userName, this.results) + serverName = filltemplate(serverName, this.results) + directory = filltemplate(directory, this.results) + localPath = filltemplate(localPath, this.results) + conf.host = serverName + conf.username = userName + return await copyLatestFileFromServer.call(this, directory, localPath) +}) + +MAFWhen('latest file as user {string} is read from server {string} in directory {string}', async function (userName, serverName, directory) { + userName = filltemplate(userName, this.results) + serverName = filltemplate(serverName, this.results) + directory = filltemplate(directory, this.results) + conf.host = serverName + conf.username = userName + return await readLatestFileFromServer.call(this, directory) +}) + +MAFWhen('latest file in remote directory {string} is retrieved', async function (remoteDirectory) { + remoteDirectory = filltemplate(remoteDirectory, this.results) + return await copyLatestFileFromServer.call(this, remoteDirectory) +}) + +MAFWhen('second to last file as user {string} from server {string} in directory {string} is retrieved', async function (userName, serverName, directory) { + userName = filltemplate(userName, this.results) + conf.host = filltemplate(serverName, this.results) + directory = filltemplate(directory, this.results) + return await copySecondLatestFileFromServer.call(this, directory) +}) + +MAFWhen('a user puts file {string} on server {string} to folder {string}', function (file, server, serverDirectory) { + file = filltemplate(file, this.results) + conf.host = filltemplate(server, this.results) + serverDirectory = filltemplate(serverDirectory, this.results) + if (!serverDirectory.endsWith('/')) { + serverDirectory += '/' + } + return putFileToServer.call(this, file, serverDirectory + file) +}) + +MAFWhen('a user puts file {string} on server {string} to folder {string} from local path {string}', function (file, server, serverDirectory, localPath) { + file = filltemplate(file, this.results) + conf.host = filltemplate(server, this.results) + serverDirectory = filltemplate(serverDirectory, this.results) + localPath = filltemplate(localPath, this.results) + if (!serverDirectory.endsWith('/')) { + serverDirectory += '/' + } + return putFileToServer.call(this, file, serverDirectory + file, localPath) +}) + +MAFWhen('a user {string} puts file {string} on server {string} to folder {string}', function (user, file, server, serverDirectory) { + file = filltemplate(file, this.results) + conf.user = filltemplate(user, this.results) + conf.host = filltemplate(server, this.results) + serverDirectory = filltemplate(serverDirectory, this.results) + if (!serverDirectory.endsWith('/')) { + serverDirectory += '/' + } + return putFileToServer.call(this, file, serverDirectory + file) +}) + +MAFWhen('a user {string} puts file {string} on server {string} to folder {string} from local path {string}', function (user, file, server, serverDirectory) { + file = filltemplate(file, this.results) + conf.user = filltemplate(user, this.results) + conf.host = filltemplate(server, this.results) + serverDirectory = filltemplate(serverDirectory, this.results) + localPath = filltemplate(localPath, this.results) + if (!serverDirectory.endsWith('/')) { + serverDirectory += '/' + } + return putFileToServer.call(this, file, serverDirectory + file, localPath) +}) + +MAFWhen('file {string} is put on remote server to {string}', async function (localFile, remoteFile) { + localFile = filltemplate(localFile, this.results) + localFile = getFilePath(localFile, this) + remoteFile = filltemplate(remoteFile, this.results) + if (!fs.existsSync(localFile)) { + throw Error('File "' + localFile + '" doesn\'t exist') + } + await putFileToServer.call(this, localFile, remoteFile) + return remoteFile +}) + +MAFWhen('file {string} is put on remote server {string} to {string}', async function (localFile, remoteServer, remoteFile) { + localFile = filltemplate(localFile, this.results) + localFile = getFilePath(localFile, this) + conf.host = filltemplate(remoteServer, this.results) + remoteFile = filltemplate(remoteFile, this.results) + if (!fs.existsSync(localFile)) { + throw Error('File "' + localFile + '" doesn\'t exist') + } + remoteFile = filltemplate(remoteFile, this.results) + await putFileToServer.call(this, localFile, remoteFile) + return remoteFile +}) + +async function getSFTP(localFile, remoteFile) { + await sftp.connect(conf) + await sftp.fastGet(remoteFile, localFile) + await sftp.end() +} + +async function putSFTP(localFile, remoteFile) { + await sftp.connect(conf) + await sftp.fastPut(localFile, remoteFile) + await sftp.end() +} + +/** + * Gets a file from the remote server to a local directory + * + * @param {string} remoteFile The linux path on the remote containing the file (/path/to/file.txt) + * @param {string} localFile The linux path to place the file locally + * @returns {string} The path and name of the file downloaded + */ +async function getFileFromServer(remoteFile, localFile) { + const localFilePath = path.dirname(localFile) + if (!fs.existsSync(localFilePath)) { + fs.mkdirSync(localFilePath, { recursive: true }) + } + await getSFTP(remoteFile, localFile) + return localFile +} + +/** + * Puts a file from the local directory to a remote server + * + * @param {string} localFile The linux path of the local file + * @param {string} remoteFile The linux path of the remote file on the server where the file will be placed (/path/to/file.txt) + * @returns {string} The path and name of the file uploaded + */ +async function putFileToServer(localFile, remoteFile, localPath) { + if (!localPath) { + localPath = getFilePath('', this) + } + if (!fs.existsSync(localPath + localFile)) { + throw Error('File "' + localPath + localFile + '" doesn\'t exist') + } + await putSFTP(localPath + localFile, remoteFile) + return remoteFile +} + +/** + * Copies the latest file from a server's directory to the local directory + * + * @param {string} serverDirectory The linux path on the remote containing the latest file + * @returns {string} The name of the file downloaded + */ +async function copyLatestFileFromServer(serverDirectory, localPath) { + if (!serverDirectory.endsWith('/')) { + serverDirectory = serverDirectory + '/' + } + if (localPath && !localPath.endsWith('/')) { + localPath = localPath + '/' + } + await sftp.connect(conf) + const remoteFiles = await sftp.list(serverDirectory, item => item.type === '-') + if (remoteFiles.length === 0) { + throw Error(`No file found on ${conf.host}:${serverDirectory}`) + } + remoteFiles.sort((a, b) => a.modifyTime - b.modifyTime) + const latestRemoteFile = remoteFiles.at(-1).name + if (!localPath) { + localPath = getFilePath('', this) + } + await sftp.fastGet(serverDirectory + latestRemoteFile, localPath + latestRemoteFile) + await sftp.end() + return latestRemoteFile +} + +/** + * Copies the latest file from a server's directory to the local directory + * + * @param {string} serverDirectory The linux path on the remote containing the latest file + * @returns {string} The file contents + */ +async function readLatestFileFromServer(serverDirectory) { + if (!serverDirectory.endsWith('/')) { + serverDirectory = serverDirectory + '/' + } + await sftp.connect(conf) + const remoteFiles = await sftp.list(serverDirectory, item => item.type === '-') + if (remoteFiles.length === 0) { + throw Error(`No file found on ${conf.host}:${serverDirectory}`) + } + remoteFiles.sort((a, b) => a.modifyTime - b.modifyTime) + const latestRemoteFile = remoteFiles.at(-1).name + const localPath = getFilePath('', this) + const remoteFileContents = await sftp.get(serverDirectory + latestRemoteFile) + await sftp.end() + return remoteFileContents.toString() +} + +/** + * Copies the 2nd latest file from a server's directory to the local directory + * + * @param {string} serverDirectory The linux path on the remote containing the 2nd latest file + * @returns {string} The name of the file downloaded + */ +async function copySecondLatestFileFromServer(serverDirectory, localPath) { + if (!serverDirectory.endsWith('/')) { + serverDirectory = serverDirectory + '/' + } + if (localPath && !localPath.endsWith('/')) { + localPath = localPath + '/' + } + await sftp.connect(conf) + const remoteFiles = await sftp.list(serverDirectory, item => item.type === '-') + if (remoteFiles.length <= 1) { + throw Error(`One or no files found on ${conf.host}:${serverDirectory}`) + } + remoteFiles.sort((a, b) => a.modifyTime - b.modifyTime) + const secondLatestRemoteFile = remoteFiles.at(-2).name + if (!localPath) { + localPath = getFilePath('', this) + } + await sftp.fastGet(serverDirectory + secondLatestRemoteFile, localPath + secondLatestRemoteFile) + await sftp.end() + return secondLatestRemoteFile +} \ No newline at end of file From d68806ea67da2638b83958fb74b70f58b0ab8409 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 7 Feb 2024 15:43:08 -0500 Subject: [PATCH 39/48] Update package versions --- package-lock.json | 1163 +++++++++++++++++++----------------- packages/sftp/package.json | 2 +- 2 files changed, 625 insertions(+), 540 deletions(-) diff --git a/package-lock.json b/package-lock.json index 53fa854..bc947e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -178,25 +178,25 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@aws-sdk/client-cloudwatch-logs": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.496.0.tgz", - "integrity": "sha512-bNp04WiEQm4vqEmhOkGb5d8l5qM0RDslxOs7CWXMWhAZ2g5bmJfFtqnYCHHZ5xYPa32Ct3Z9sEZ3ScNU7kezJA==", + "version": "3.509.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.509.0.tgz", + "integrity": "sha512-hi2lr3JBFlFZAkeEoARqblow05nZYmjBQs5XnWlIz0HAeb3iPvKP/0bjZel2A1wnSXWrtxpvAXYfeQL/IqGdRg==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/client-sts": "3.507.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-signing": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/credential-provider-node": "3.509.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-signing": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", "@smithy/eventstream-serde-browser": "^2.1.1", @@ -231,34 +231,26 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.496.0.tgz", - "integrity": "sha512-cMZpOwlpJoCUaJvsdkRJnUd5WueE3bsOVlogfh0yo1BxDKGMec63isYGIQpPRgEAnNS2LAURPzrEUFGRtwQrNQ==", + "version": "3.509.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.509.0.tgz", + "integrity": "sha512-9mAG7laBHpP/jFJLcNrjv/lebsYH3fTUM83rpmdeqw8nfQHAlD/xTHEJDPc5iZeD/rQl8/KENpqTvhKfOkcC/A==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/client-sts": "3.507.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.496.0", - "@aws-sdk/middleware-endpoint-discovery": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/credential-provider-node": "3.509.0", + "@aws-sdk/middleware-endpoint-discovery": "3.502.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", "@smithy/fetch-http-handler": "^2.4.1", @@ -292,34 +284,26 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@aws-sdk/client-ecs": { - "version": "3.497.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.497.0.tgz", - "integrity": "sha512-GK8j1Xwvab8Pep8qlv4Pxqe/smtY4U3MwTvY4BoYuSQvyDcgD/6eHcSkZId8LtkIQo46fMCRFHQxco6EHwNKfQ==", + "version": "3.509.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.509.0.tgz", + "integrity": "sha512-Q2juUoBiYz5vYFJQiu0NTd0pWMfwlhWUiy09z5930sSpB3Vl0J2IvCWk0dm4jRrbe1xmzL3essyWXxVhYKSepQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/client-sts": "3.507.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-signing": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/credential-provider-node": "3.509.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-signing": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", "@smithy/fetch-http-handler": "^2.4.1", @@ -352,34 +336,26 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-ecs/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.496.0.tgz", - "integrity": "sha512-HsypBL5BIxK/2MPZ7mKsAypEn98Jws5kWKmOzVACOvboyvpgaDgrFqubNWkHPWlwg8vJBjixhrQpHxp1vzeVUw==", + "version": "3.509.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.509.0.tgz", + "integrity": "sha512-zk5lU9A6t7eRP8PUWxpcoTNW7/OCPefUyMvct5w4f2fpZhbu9WrLBmfKzW2ay8JX/UI4LjYaP8nPuaB4ZZ/9Ig==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/client-sts": "3.507.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-signing": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/credential-provider-node": "3.509.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-signing": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", "@smithy/eventstream-serde-browser": "^2.1.1", @@ -416,33 +392,33 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.498.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.498.0.tgz", - "integrity": "sha512-M1nDbKYW04SkPsQafp6JTqfCeiRy4ELHBpX+DRwNmb7MsPy2aBk+rjbREBt233xDCrd8C9HswJhJ18U37KQTgA==", + "version": "3.509.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.509.0.tgz", + "integrity": "sha512-yeZJ1892Lj8S2zE0HerVt/ZJWaxemoEV3tzn5XDjExK6666cUajSwfmX036T51pEBwjqsTPz0ZJB1rlV7VFTIA==", "dependencies": { "@aws-crypto/sha1-browser": "3.0.0", "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/client-sts": "3.507.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.496.0", - "@aws-sdk/middleware-bucket-endpoint": "3.496.0", - "@aws-sdk/middleware-expect-continue": "3.496.0", - "@aws-sdk/middleware-flexible-checksums": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-location-constraint": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-sdk-s3": "3.496.0", - "@aws-sdk/middleware-signing": "3.496.0", - "@aws-sdk/middleware-ssec": "3.498.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/signature-v4-multi-region": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/credential-provider-node": "3.509.0", + "@aws-sdk/middleware-bucket-endpoint": "3.502.0", + "@aws-sdk/middleware-expect-continue": "3.502.0", + "@aws-sdk/middleware-flexible-checksums": "3.502.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-location-constraint": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-sdk-s3": "3.502.0", + "@aws-sdk/middleware-signing": "3.502.0", + "@aws-sdk/middleware-ssec": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/signature-v4-multi-region": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@aws-sdk/xml-builder": "3.496.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", @@ -484,25 +460,25 @@ } }, "node_modules/@aws-sdk/client-sqs": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.496.0.tgz", - "integrity": "sha512-Fo/Kz9nEbGso/lJ7piPGyvSeGWRwgPrC5vgKh0D8cwVhBY2LmRVHfBtJ1p42q0TUJY6i/1TOFxXZdvavYcwb9Q==", + "version": "3.509.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.509.0.tgz", + "integrity": "sha512-shqlP2gs5cOokC1ZOiRoZfqFAL2u+3Ek962BMWb4F+z1oLZERdbRa2iBPqnNNTWxz569EpG8MFECfWm8vQ5DHQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/client-sts": "3.507.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-sdk-sqs": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/credential-provider-node": "3.509.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-sdk-sqs": "3.507.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", "@smithy/fetch-http-handler": "^2.4.1", @@ -536,25 +512,25 @@ } }, "node_modules/@aws-sdk/client-ssm": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.496.0.tgz", - "integrity": "sha512-qlsUlevthRnwMDAfJMcWaG3wmnIYyt3MltEPETT+E03GnXkbjgfPCjefy+IU6gqM2FwcWrMTGEE9iQoEOs73ow==", + "version": "3.509.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.509.0.tgz", + "integrity": "sha512-yp9kEHGz14TqaMFf6hyNptT/ZwBg0XvBL6GatiJ6YmeoLu6YiD1IXra/CciHYgyCEC8A/B8Uhwny306YfQHOgw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.496.0", + "@aws-sdk/client-sts": "3.507.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-signing": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/credential-provider-node": "3.509.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-signing": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", "@smithy/fetch-http-handler": "^2.4.1", @@ -587,31 +563,72 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@aws-sdk/client-sso": { + "version": "3.507.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.507.0.tgz", + "integrity": "sha512-pFeaKwqv4tXD6QVxWC2V4N62DUoP3bPSm/mCe2SPhaNjNsmwwA53viUHz/nwxIbs8w4vV44UQsygb0AgKm+HoQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.496.0.tgz", - "integrity": "sha512-fuaMuxKg7CMUsP9l3kxYWCOxFsBjdA0xj5nlikaDm1661/gB4KkAiGqRY8LsQkpNXvXU8Nj+f7oCFADFyGYzyw==", + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.507.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.507.0.tgz", + "integrity": "sha512-ms5CH2ImhqqCIbo5irxayByuPOlVAmSiqDVfjZKwgIziqng2bVgNZMeKcT6t0bmrcgScEAVnZwY7j/iZTIw73g==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.507.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-signing": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", "@smithy/fetch-http-handler": "^2.4.1", @@ -640,26 +657,28 @@ }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.507.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.496.0.tgz", - "integrity": "sha512-3pSdqgegdwbK3CT1WvGHhA+Bf91R9cr8G1Ynp+iU2wZvy8ueJfMUk0NYfjo3EEv0YhSbMLKuduzZfvQHFHXYhw==", + "version": "3.507.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.507.0.tgz", + "integrity": "sha512-TOWBe0ApEh32QOib0R+irWGjd1F9wnhbGV5PcB9SakyRwvqwG5MKOfYxG7ocoDqLlaRwzZMidcy/PV8/OEVNKg==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.496.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", "@smithy/config-resolver": "^2.1.1", "@smithy/core": "^1.3.1", "@smithy/fetch-http-handler": "^2.4.1", @@ -690,6 +709,9 @@ }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.507.0" } }, "node_modules/@aws-sdk/core": { @@ -709,11 +731,11 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.496.0.tgz", - "integrity": "sha512-lukQMJ8SWWP5RqkRNOHi/H+WMhRvSWa3Fc5Jf/VP6xHiPLfF1XafcvthtV91e0VwPCiseI+HqChrcGq8pvnxHw==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.502.0.tgz", + "integrity": "sha512-KIB8Ae1Z7domMU/jU4KiIgK4tmYgvuXlhR54ehwlVHxnEoFPoPuGHFZU7oFn79jhhSLUFQ1lRYMxP0cEwb7XeQ==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/property-provider": "^2.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" @@ -722,16 +744,36 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.503.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.503.1.tgz", + "integrity": "sha512-rTdlFFGoPPFMF2YjtlfRuSgKI+XsF49u7d98255hySwhsbwd3Xp+utTTPquxP+CwDxMHbDlI7NxDzFiFdsoZug==", + "dependencies": { + "@aws-sdk/types": "3.502.0", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.496.0.tgz", - "integrity": "sha512-2nD1jp1sIwcQaWK1y/9ruQOkW16RUxZpzgjbW/gnK3iiUXwx+/FNQWxshud+GTSx3Q4x6eIhqsbjtP4VVPPuUA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.496.0", - "@aws-sdk/credential-provider-process": "3.496.0", - "@aws-sdk/credential-provider-sso": "3.496.0", - "@aws-sdk/credential-provider-web-identity": "3.496.0", - "@aws-sdk/types": "3.496.0", + "version": "3.507.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.507.0.tgz", + "integrity": "sha512-2CnyduoR9COgd7qH1LPYK8UggGqVs8R4ASDMB5bwGxbg9ZerlStDiHpqvJNNg1k+VlejBr++utxfmHd236XgmQ==", + "dependencies": { + "@aws-sdk/client-sts": "3.507.0", + "@aws-sdk/credential-provider-env": "3.502.0", + "@aws-sdk/credential-provider-process": "3.502.0", + "@aws-sdk/credential-provider-sso": "3.507.0", + "@aws-sdk/credential-provider-web-identity": "3.507.0", + "@aws-sdk/types": "3.502.0", "@smithy/credential-provider-imds": "^2.2.1", "@smithy/property-provider": "^2.1.1", "@smithy/shared-ini-file-loader": "^2.3.1", @@ -743,16 +785,17 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.496.0.tgz", - "integrity": "sha512-IVF9RvLePfRa5S5/eBIRChJCWOzQkGwM8P/L79Gl84u/cH2oSG4NtUI/YTDlrtmnYn7YsGhINSV0WnzfF2twfQ==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.496.0", - "@aws-sdk/credential-provider-ini": "3.496.0", - "@aws-sdk/credential-provider-process": "3.496.0", - "@aws-sdk/credential-provider-sso": "3.496.0", - "@aws-sdk/credential-provider-web-identity": "3.496.0", - "@aws-sdk/types": "3.496.0", + "version": "3.509.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.509.0.tgz", + "integrity": "sha512-uXT8wIq1k+m0mS/pC9U1cUTIjUB7/4PgxyiYsTxYPIULtWnQXltAlcPU3QzKTJMP60sqftRYZ2jFDLAVsipQxw==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.502.0", + "@aws-sdk/credential-provider-http": "3.503.1", + "@aws-sdk/credential-provider-ini": "3.507.0", + "@aws-sdk/credential-provider-process": "3.502.0", + "@aws-sdk/credential-provider-sso": "3.507.0", + "@aws-sdk/credential-provider-web-identity": "3.507.0", + "@aws-sdk/types": "3.502.0", "@smithy/credential-provider-imds": "^2.2.1", "@smithy/property-provider": "^2.1.1", "@smithy/shared-ini-file-loader": "^2.3.1", @@ -764,11 +807,11 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.496.0.tgz", - "integrity": "sha512-/YZscCTGOKVmGr916Th4XF8Sz6JDtZ/n2loHG9exok9iy/qIbACsTRNLP9zexPxhPoue/oZqecY5xbVljfY34A==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.502.0.tgz", + "integrity": "sha512-fJJowOjQ4infYQX0E1J3xFVlmuwEYJAFk0Mo1qwafWmEthsBJs+6BR2RiWDELHKrSK35u4Pf3fu3RkYuCtmQFw==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/property-provider": "^2.1.1", "@smithy/shared-ini-file-loader": "^2.3.1", "@smithy/types": "^2.9.1", @@ -779,13 +822,13 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.496.0.tgz", - "integrity": "sha512-eP7GxpT2QYubSDG7uk1GJW4eNymZCq65IxDyEFCXOP/kfqkxriCY+iVEFG6/Mo3LxvgrgHXU4jxrCAXMAWN43g==", + "version": "3.507.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.507.0.tgz", + "integrity": "sha512-6WBjou52QukFpDi4ezb19bcAx/bM8ge8qnJnRT02WVRmU6zFQ5yLD2fW1MFsbX3cwbey+wSqKd5FGE1Hukd5wQ==", "dependencies": { - "@aws-sdk/client-sso": "3.496.0", - "@aws-sdk/token-providers": "3.496.0", - "@aws-sdk/types": "3.496.0", + "@aws-sdk/client-sso": "3.507.0", + "@aws-sdk/token-providers": "3.507.0", + "@aws-sdk/types": "3.502.0", "@smithy/property-provider": "^2.1.1", "@smithy/shared-ini-file-loader": "^2.3.1", "@smithy/types": "^2.9.1", @@ -796,11 +839,12 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.496.0.tgz", - "integrity": "sha512-IbP+qLlvJSpNPj+zW6TtFuLRTK5Tf0hW+2pom4vFyi5YSH4pn8UOC136UdewX8vhXGS9BJQ5zBDMasIyl5VeGQ==", + "version": "3.507.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.507.0.tgz", + "integrity": "sha512-f+aGMfazBimX7S06224JRYzGTaMh1uIhfj23tZylPJ05KxTVi5IO1RoqeI/uHLJ+bDOx+JHBC04g/oCdO4kHvw==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/client-sts": "3.507.0", + "@aws-sdk/types": "3.502.0", "@smithy/property-provider": "^2.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" @@ -822,11 +866,11 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.496.0.tgz", - "integrity": "sha512-B+ilBMSs3+LJuo2bl2KB8GFdu+8PPVtYEWtwhNkmnaU8iMisgMBp5uuM8sUDvJX7I4iSF0WbgnhguX4cJqfAew==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.502.0.tgz", + "integrity": "sha512-mUSP2DUcjhO5zM2b21CvZ9AqwI8DaAeZA6NYHOxWGTV9BUxHcdGWXEjDkcVj9CQ0gvNwTtw6B5L/q52rVAnZbw==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@aws-sdk/util-arn-parser": "3.495.0", "@smithy/node-config-provider": "^2.2.1", "@smithy/protocol-http": "^3.1.1", @@ -839,12 +883,12 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.496.0.tgz", - "integrity": "sha512-VVJFTYeyhtjY8c0sAQUmzN4OUzaPINvXsYcL1dljFd7vdgSyf7+qwxzngOH5pKvyaCZ2vq9ngd8dAynSlA+TIg==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.502.0.tgz", + "integrity": "sha512-DQBbyelebBshYPTb5ah25sAdMTQKYBUYE0If66sXHNUQAdUg28z076kE4E8p8RxyfGHqESN2MrqfIjQpEnjcqg==", "dependencies": { "@aws-sdk/endpoint-cache": "3.495.0", - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/node-config-provider": "^2.2.1", "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", @@ -855,11 +899,11 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.496.0.tgz", - "integrity": "sha512-+exo5DVc+BeDus2iI6Fz1thefHGDXxUhHZ+4VHQ6HkStMy3Y22HugyEGHSQZmtRL86Hjr7dFbEWFsC47a2ItGA==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.502.0.tgz", + "integrity": "sha512-DxfAuBVuPSt8as9xP57o8ks6ySVSjwO2NNNAdpLwk4KhEAPYEpHlf2yWYorYLrS+dDmwfYgOhRNoguuBdCu6ow==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" @@ -869,13 +913,13 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.496.0.tgz", - "integrity": "sha512-yQIWfjEMvgsAJ7ku224vXDjXPD+f9zfKZFialJva8VUlEr7hQp4CQ0rxV3YThSaixKEDDs5k6kOjWAd2BPGr2A==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.502.0.tgz", + "integrity": "sha512-kCt2zQDFumz/LnJJJOSd2GW4dr8oT8YMJKgxC/pph3aRXoSHXRwhrMbFnQ8swEE9vjywxtcED8sym0b0tNhhoA==", "dependencies": { "@aws-crypto/crc32": "3.0.0", "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/is-array-buffer": "^2.1.1", "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", @@ -887,11 +931,11 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.496.0.tgz", - "integrity": "sha512-jUdPpSJeqCYXf6hSjfwsfHway7peIV8Vz51w/BN91bF4vB/bYwAC5o9/iJiK/EoByp5asxA8fg9wFOyGjzdbLg==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.502.0.tgz", + "integrity": "sha512-EjnG0GTYXT/wJBmm5/mTjDcAkzU8L7wQjOzd3FTXuTCNNyvAvwrszbOj5FlarEw5XJBbQiZtBs+I5u9+zy560w==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" @@ -901,11 +945,11 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.496.0.tgz", - "integrity": "sha512-i4ocJ2Zs86OtPREbB18InFukhqg2qtBxb5gywv79IHDPVmpOYE4m/3v3yGUrkjfF2GTlUL0k5FskNNqw41yfng==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.502.0.tgz", + "integrity": "sha512-fLRwPuTZvEWQkPjys03m3D6tYN4kf7zU6+c8mJxwvEg+yfBuv2RBsbd+Vn2bTisUjXvIg1kyBzONlpHoIyFneg==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, @@ -914,11 +958,11 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.496.0.tgz", - "integrity": "sha512-EwMVSY6iBMeGbVnvwdaFl/ClMS/YWtxCAo+bcEtgk8ltRuo7qgbJem8Km/fvWC1vdWvIbe4ArdJ8iGzq62ffAw==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.502.0.tgz", + "integrity": "sha512-FDyv6K4nCoHxbjLGS2H8ex8I0KDIiu4FJgVRPs140ZJy6gE5Pwxzv6YTzZGLMrnqcIs9gh065Lf6DjwMelZqaw==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, @@ -927,11 +971,11 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.496.0.tgz", - "integrity": "sha512-+IuOcFsfqg2WAnaEzH6KhVbicqCxtOq9w3DH2jwTpddRlCx2Kqf6wCzg8luhHRGyjBZdsbIS+OXwyMevoppawA==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.502.0.tgz", + "integrity": "sha512-hvbyGJbxeuezxOu8VfFmcV4ql1hKXLxHTe5FNYfEBat2KaZXVhc1Hg+4TvB06/53p+E8J99Afmumkqbxs2esUA==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" @@ -941,11 +985,11 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.496.0.tgz", - "integrity": "sha512-OKrTPzubisQCQzPuF4G7jmbYt71o6W7oefmW9zm1MpGokRSJeC9zv4aT1gkMglpXEHgvL0S5fUVGi0AtF/F8Kw==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.502.0.tgz", + "integrity": "sha512-GbGugrfyL5bNA/zw8iQll92yXBONfWSC8Ns00DtkOU1saPXp4/7WHtyyZGYdvPa73T1IsuZy9egpoYRBmRcd5Q==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@aws-sdk/util-arn-parser": "3.495.0", "@smithy/node-config-provider": "^2.2.1", "@smithy/protocol-http": "^3.1.1", @@ -960,11 +1004,12 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.496.0.tgz", - "integrity": "sha512-CkZLaKeplUcir+MFgYi+xVs67H6pgnyNIcS6PZA9fQq14ERVhiKoXAhPLaAbBt7JDScCgtoD1ZsPvSHMRSi18w==", + "version": "3.507.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.507.0.tgz", + "integrity": "sha512-6D4FvN7iRMmYo6r1mQ9cZVJSHzzNRaTxmXiWBv/6oS59hoS2CtjzsiMH2Ab2fyiBCtmksiLbCfwoz1E5VifZHw==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", + "@smithy/smithy-client": "^2.3.1", "@smithy/types": "^2.9.1", "@smithy/util-hex-encoding": "^2.1.1", "@smithy/util-utf8": "^2.1.1", @@ -975,11 +1020,11 @@ } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.496.0.tgz", - "integrity": "sha512-Oq73Brs4IConvWnRlh8jM1V7LHoTw9SVQklu/QW2FPlNrB3B8fuTdWHHYIWv7ybw1bykXoCY99v865Mmq/Or/g==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.502.0.tgz", + "integrity": "sha512-4hF08vSzJ7L6sB+393gOFj3s2N6nLusYS0XrMW6wYNFU10IDdbf8Z3TZ7gysDJJHEGQPmTAesPEDBsasGWcMxg==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/property-provider": "^2.1.1", "@smithy/protocol-http": "^3.1.1", "@smithy/signature-v4": "^2.1.1", @@ -992,11 +1037,11 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.498.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.498.0.tgz", - "integrity": "sha512-sWujXgzeTqMZzj/pRYEnnEbSzhBosqw9DXHOY1Mg2igI9NEfGlB7lPARp6aKmCaYlP3Bcj2X86vKCqF53mbyig==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.502.0.tgz", + "integrity": "sha512-1nidVTIba6/aVjjzD/WNqWdzSyTrXOHO3Ddz2MGD8S1yGSrYz4iYaq4Bm/uosfdr8B1L0Ws0pjdRXrNfzSw/DQ==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, @@ -1005,12 +1050,12 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.496.0.tgz", - "integrity": "sha512-+iMtRxFk0GmFWNUF4ilxylOQd9PZdR4ZC9jkcPIh1PZlvKtpCyFywKlk5RRZKklSoJ/CttcqwhMvOXTNbWm/0w==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.502.0.tgz", + "integrity": "sha512-TxbBZbRiXPH0AUxegqiNd9aM9zNSbfjtBs5MEfcBsweeT/B2O7K1EjP9+CkB8Xmk/5FLKhAKLr19b1TNoE27rw==", "dependencies": { - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" @@ -1020,11 +1065,11 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.496.0.tgz", - "integrity": "sha512-URrNVOPHPgEDm6QFu6lDC2cUFs+Jx23mA3jEwCvoKlXiEY/ZoWjH8wlX3OMUlLrF1qoUTuD03jjrJzF6zoCgug==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.502.0.tgz", + "integrity": "sha512-mxmsX2AGgnSM+Sah7mcQCIneOsJQNiLX0COwEttuf8eO+6cLMAZvVudH3BnWTfea4/A9nuri9DLCqBvEmPrilg==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/node-config-provider": "^2.2.1", "@smithy/types": "^2.9.1", "@smithy/util-config-provider": "^2.2.1", @@ -1036,12 +1081,12 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.496.0.tgz", - "integrity": "sha512-zi3cL8+dRVSvC0PA6votwEHF4l9uxOyQTiRfgpFgzJ9iiPbsrtWCalGCwN0UyzmeDv7eViU6FK1YTHH/OgDJ4A==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.502.0.tgz", + "integrity": "sha512-NpOXtUXH0ZAgnyI3Y3s2fPrgwbsWoNMwdoXdFZvH0eDzzX80tim7Yuy6dzVA5zrxSzOYs1xjcOhM+4CmM0QZiw==", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.496.0", - "@aws-sdk/types": "3.496.0", + "@aws-sdk/middleware-sdk-s3": "3.502.0", + "@aws-sdk/types": "3.502.0", "@smithy/protocol-http": "^3.1.1", "@smithy/signature-v4": "^2.1.1", "@smithy/types": "^2.9.1", @@ -1052,46 +1097,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.496.0.tgz", - "integrity": "sha512-fyi8RcObEa1jNETJdc2H6q9VHrrdKCj/b6+fbLvymb7mUVRd0aWUn+24SNUImnSOnrwYnwaMfyyEC388X4MbFQ==", + "version": "3.507.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.507.0.tgz", + "integrity": "sha512-ehOINGjoGJc6Puzon7ev4bXckkaZx18WNgMTNttYJhj3vTpj5LPSQbI/5SS927bEbpGMFz1+hJ6Ra5WGfbTcEQ==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.496.0", - "@aws-sdk/middleware-logger": "3.496.0", - "@aws-sdk/middleware-recursion-detection": "3.496.0", - "@aws-sdk/middleware-user-agent": "3.496.0", - "@aws-sdk/region-config-resolver": "3.496.0", - "@aws-sdk/types": "3.496.0", - "@aws-sdk/util-endpoints": "3.496.0", - "@aws-sdk/util-user-agent-browser": "3.496.0", - "@aws-sdk/util-user-agent-node": "3.496.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", + "@aws-sdk/client-sso-oidc": "3.507.0", + "@aws-sdk/types": "3.502.0", "@smithy/property-provider": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/smithy-client": "^2.3.1", "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -1099,9 +1113,9 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.496.0.tgz", - "integrity": "sha512-umkGadK4QuNQaMoDICMm7NKRI/mYSXiyPjcn3d53BhsuArYU/52CebGQKdt4At7SwwsiVJZw9RNBHyN5Mm0HVw==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.502.0.tgz", + "integrity": "sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g==", "dependencies": { "@smithy/types": "^2.9.1", "tslib": "^2.5.0" @@ -1122,11 +1136,11 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.496.0.tgz", - "integrity": "sha512-1QzOiWHi383ZwqSi/R2KgKCd7M+6DxkxI5acqLPm8mvDRDP2jRjrnVaC0g9/tlttWousGEemDUWStwrD2mVYSw==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.502.0.tgz", + "integrity": "sha512-6LKFlJPp2J24r1Kpfoz5ESQn+1v5fEjDB3mtUKRdpwarhm3syu7HbKlHCF3KbcCOyahobvLvhoedT78rJFEeeg==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/types": "^2.9.1", "@smithy/util-endpoints": "^1.1.1", "tslib": "^2.5.0" @@ -1147,22 +1161,22 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.496.0.tgz", - "integrity": "sha512-4j2spN+h0I0qfSMsGvJXTfQBu1e18rPdekKvzsGJxhaAE1tNgUfUT4nbvc5uVn0sNjZmirskmJ3kfbzVOrqIFg==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.502.0.tgz", + "integrity": "sha512-v8gKyCs2obXoIkLETAeEQ3AM+QmhHhst9xbM1cJtKUGsRlVIak/XyyD+kVE6kmMm1cjfudHpHKABWk9apQcIZQ==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/types": "^2.9.1", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.496.0.tgz", - "integrity": "sha512-h0Ax0jlDc7UIo3KoSI4C4tVLBFoiAdx3+DhTVfgLS7x93d41dMlziPoBX2RgdcFn37qnzw6AQKTVTMwDbRCGpg==", + "version": "3.502.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.502.0.tgz", + "integrity": "sha512-9RjxpkGZKbTdl96tIJvAo+vZoz4P/cQh36SBUt9xfRfW0BtsaLyvSrvlR5wyUYhvRcC12Axqh/8JtnAPq//+Vw==", "dependencies": { - "@aws-sdk/types": "3.496.0", + "@aws-sdk/types": "3.502.0", "@smithy/node-config-provider": "^2.2.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" @@ -1285,9 +1299,9 @@ } }, "node_modules/@babel/core": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -1295,11 +1309,11 @@ "@babel/generator": "^7.23.6", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1500,14 +1514,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", - "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" @@ -1591,9 +1605,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1603,23 +1617,23 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", @@ -1628,8 +1642,8 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1647,9 +1661,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -1876,6 +1890,18 @@ "uuid": "9.0.1" } }, + "node_modules/@cucumber/messages/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@cucumber/tag-expressions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.1.0.tgz", @@ -2456,6 +2482,19 @@ "node": ">=8" } }, + "node_modules/@lerna/create/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@ln-maf/api": { "resolved": "packages/api", "link": true @@ -3356,9 +3395,9 @@ } }, "node_modules/@smithy/core": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.1.tgz", - "integrity": "sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.2.tgz", + "integrity": "sha512-tYDmTp0f2TZVE18jAOH1PnmkngLQ+dOGUlMd1u67s87ieueNeyqhja6z/Z4MxhybEiXKOWFOmGjfTZWFxljwJw==", "dependencies": { "@smithy/middleware-endpoint": "^2.4.1", "@smithy/middleware-retry": "^2.1.1", @@ -3579,14 +3618,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@smithy/middleware-serde": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz", @@ -3837,9 +3868,9 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.1.1.tgz", - "integrity": "sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.2.0.tgz", + "integrity": "sha512-iFJp/N4EtkanFpBUtSrrIbtOIBf69KNuve03ic1afhJ9/korDxdM0c6cCH4Ehj/smI9pDCfVv+bqT3xZjF2WaA==", "dependencies": { "@smithy/config-resolver": "^2.1.1", "@smithy/credential-provider-imds": "^2.2.1", @@ -4323,13 +4354,16 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4378,17 +4412,36 @@ "node": ">=8" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "node_modules/array.prototype.filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", + "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", + "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4434,17 +4487,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -4493,9 +4547,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", "dev": true, "engines": { "node": ">= 0.4" @@ -4505,9 +4559,9 @@ } }, "node_modules/axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dev": true, "dependencies": { "follow-redirects": "^1.15.4", @@ -4582,9 +4636,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "funding": [ { @@ -4601,8 +4655,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -4832,14 +4886,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz", + "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.3", + "set-function-length": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4881,9 +4939,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001579", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", - "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", + "version": "1.0.30001585", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz", + "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==", "dev": true, "funding": [ { @@ -5646,14 +5704,15 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz", + "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.2", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5839,9 +5898,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.644", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.644.tgz", - "integrity": "sha512-zOnPndwz3u1sVFSyBcRWcn0529Kz+jr+tDxN9iP69I3CpC5wlvYmjLrK2O7TEsg2oDDoUqooeXqbiHLvXvl6Lg==", + "version": "1.4.660", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.660.tgz", + "integrity": "sha512-1BqvQG0BBQrAA7FVL2EMrb5A1sVyXF3auwJneXjGWa1TpN+g0C4KbUsYWePz6OZ0mXZfXGy+RmQDELJWwE8v/Q==", "dev": true }, "node_modules/emoji-regex": { @@ -5986,6 +6045,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", @@ -6033,9 +6107,9 @@ "dev": true }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -6747,9 +6821,9 @@ } }, "node_modules/fastq": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -7239,16 +7313,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7305,13 +7383,13 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.1.tgz", + "integrity": "sha512-KmuibvwbWaM4BHcBRYwJfZ1JxyJeBwB8ct9YYu67SvYdbEIlcQ2e56dHxfbobqW38GXo8/zDFqJeGtHiVbWyQw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -7663,12 +7741,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7820,9 +7898,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -8036,12 +8114,12 @@ } }, "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -8056,14 +8134,16 @@ "dev": true }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8393,12 +8473,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -8557,15 +8637,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -8841,9 +8912,9 @@ } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9154,6 +9225,19 @@ "node": ">=8" } }, + "node_modules/lerna/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -9948,9 +10032,9 @@ } }, "node_modules/multiple-cucumber-html-reporter": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/multiple-cucumber-html-reporter/-/multiple-cucumber-html-reporter-3.6.1.tgz", - "integrity": "sha512-Y4nu7PSl91yVKTQrCZt2WW98SoHVPldpv+ZOcdG9nMZhWa+IvpclECtmlUY/CatbCRRar/IMEcUYrJfjTgn8yg==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/multiple-cucumber-html-reporter/-/multiple-cucumber-html-reporter-3.6.2.tgz", + "integrity": "sha512-Q0GUt9WXk1dkT1Dp1issCJMdnjXUFHnWGAL4OdiL9EaG9XjfjfaCguUJ1g39LXXXzklRInVqm9rDcOWYjWLyGA==", "dev": true, "dependencies": { "find": "^0.3.0", @@ -9971,6 +10055,19 @@ "node": ">=12" } }, + "node_modules/multiple-cucumber-html-reporter/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -11127,15 +11224,16 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", + "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "array.prototype.filter": "^1.0.3", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0" } }, "node_modules/object.values": { @@ -11752,9 +11850,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "engines": { "node": "14 || >=16.14" } @@ -12931,13 +13029,13 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz", - "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, "engines": { @@ -12983,14 +13081,15 @@ "dev": true }, "node_modules/set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", + "get-intrinsic": "^1.2.3", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.1" }, @@ -13044,14 +13143,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14225,9 +14328,9 @@ } }, "node_modules/type-fest": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.1.tgz", - "integrity": "sha512-7ZnJYTp6uc04uYRISWtiX3DSKB/fxNQT0B5o1OUeCqiQiwF+JC9+rJiZIDrPrNCLLuTqyQmh4VdQqh/ZOkv9MQ==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", + "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", "engines": { "node": ">=16" }, @@ -14236,14 +14339,14 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", + "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -14316,16 +14419,15 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true, + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=4.2.0" } }, "node_modules/typical": { @@ -14476,13 +14578,9 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { "uuid": "dist/bin/uuid" } @@ -14590,16 +14688,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -14987,7 +15085,6 @@ } }, "packages/api": { - "name": "@ln-maf/api", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15014,7 +15111,6 @@ } }, "packages/aws": { - "name": "@ln-maf/aws", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15048,13 +15144,13 @@ }, "packages/aws/node_modules/luxon": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", "engines": { "node": ">=12" } }, "packages/core": { - "name": "@ln-maf/core", "version": "3.0.0-beta.0", "license": "Apache-2.0", "bin": { @@ -15075,7 +15171,6 @@ } }, "packages/defaultSQL": { - "name": "@ln-maf/default-sql", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15102,7 +15197,6 @@ } }, "packages/mysql": { - "name": "@ln-maf/mysql", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15131,7 +15225,6 @@ } }, "packages/postgresql": { - "name": "@ln-maf/postgresql", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15160,7 +15253,6 @@ } }, "packages/preprocessor": { - "name": "@ln-maf/preprocessor", "version": "3.0.0-beta.0", "hasInstallScript": true, "license": "Apache-2.0", @@ -15195,14 +15287,16 @@ }, "packages/preprocessor/node_modules/@cucumber/cucumber-expressions": { "version": "12.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-12.1.3.tgz", + "integrity": "sha512-LB8MAzE4F/t2KIgsDEz4gZH0xSI4aG0/LmYUPyISPPjUS1pI/yGWWyeX2WsiUQxpSs765WcNIq5Bggt7gGGO3Q==", "dependencies": { "regexp-match-indices": "1.0.2" } }, "packages/preprocessor/node_modules/@cucumber/messages": { "version": "22.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", + "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", "dependencies": { "@types/uuid": "9.0.1", "class-transformer": "0.5.1", @@ -15212,11 +15306,13 @@ }, "packages/preprocessor/node_modules/@types/uuid": { "version": "9.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" }, "packages/preprocessor/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -15234,29 +15330,18 @@ }, "packages/preprocessor/node_modules/reflect-metadata": { "version": "0.1.13", - "license": "Apache-2.0" - }, - "packages/preprocessor/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "packages/preprocessor/node_modules/uuid": { "version": "9.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", "bin": { "uuid": "dist/bin/uuid" } }, "packages/validations": { - "name": "@ln-maf/validations", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { diff --git a/packages/sftp/package.json b/packages/sftp/package.json index f950c09..b3a66cd 100644 --- a/packages/sftp/package.json +++ b/packages/sftp/package.json @@ -26,7 +26,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "multiple-cucumber-html-reporter": "^3.6.0", + "multiple-cucumber-html-reporter": "^3.6.0" }, "gitHead": "9bf55a2c86fa17707fabfb4320c3d722e270f9e6", "repository": { From 2d5ec5e7e87d2912015c9559c52f205690d9e6ca Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 7 Feb 2024 15:44:22 -0500 Subject: [PATCH 40/48] Remove unused code and fix a typo in sftp.js --- packages/sftp/stepDefinitions/sftp.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/packages/sftp/stepDefinitions/sftp.js b/packages/sftp/stepDefinitions/sftp.js index 59cfed1..a590b25 100644 --- a/packages/sftp/stepDefinitions/sftp.js +++ b/packages/sftp/stepDefinitions/sftp.js @@ -1,8 +1,8 @@ -const { MAFWhen, getFilePath, performJSONObjectTransform, filltemplate } = require('@ln-maf/core') +const { MAFWhen, getFilePath, filltemplate } = require('@ln-maf/core') const { setDefaultTimeout } = require('@cucumber/cucumber') -const { execSync } = require('child_process')` +const { execSync } = require('child_process') const Client = require('ssh2-sftp-client') -const fs = require('fs')` +const fs = require('fs') const sftp = new Client() const path = require('path') @@ -26,10 +26,6 @@ MAFWhen('username {string} is set', function (name) { return conf }) -MAFWhen('ssh into {string}', function (string) { - return execSync(`bash aunixlandAccess.sh ${string}`).toString().trim() -}) - MAFWhen('a user send command {string} to server {string}', function (command, server) { return execSync(`ssh ${conf.username}@${server} ${command}`).toString().trim() }) @@ -137,7 +133,7 @@ MAFWhen('a user {string} puts file {string} on server {string} to folder {string return putFileToServer.call(this, file, serverDirectory + file) }) -MAFWhen('a user {string} puts file {string} on server {string} to folder {string} from local path {string}', function (user, file, server, serverDirectory) { +MAFWhen('a user {string} puts file {string} on server {string} to folder {string} from local path {string}', function (user, file, server, serverDirectory, localPath) { file = filltemplate(file, this.results) conf.user = filltemplate(user, this.results) conf.host = filltemplate(server, this.results) @@ -248,7 +244,7 @@ async function copyLatestFileFromServer(serverDirectory, localPath) { } /** - * Copies the latest file from a server's directory to the local directory + * Copies the latest file from a server's directory to memory * * @param {string} serverDirectory The linux path on the remote containing the latest file * @returns {string} The file contents @@ -264,7 +260,6 @@ async function readLatestFileFromServer(serverDirectory) { } remoteFiles.sort((a, b) => a.modifyTime - b.modifyTime) const latestRemoteFile = remoteFiles.at(-1).name - const localPath = getFilePath('', this) const remoteFileContents = await sftp.get(serverDirectory + latestRemoteFile) await sftp.end() return remoteFileContents.toString() @@ -296,4 +291,4 @@ async function copySecondLatestFileFromServer(serverDirectory, localPath) { await sftp.fastGet(serverDirectory + secondLatestRemoteFile, localPath + secondLatestRemoteFile) await sftp.end() return secondLatestRemoteFile -} \ No newline at end of file +} From 5fae02bd78e6936c2176f2420e8e46f34a386275 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 7 Feb 2024 16:31:17 -0500 Subject: [PATCH 41/48] Add sftp package to package.json --- package-lock.json | 127 ++++++++++++++++++++++++-- package.json | 1 + packages/sftp/stepDefinitions/sftp.js | 123 +++++++++---------------- 3 files changed, 165 insertions(+), 86 deletions(-) diff --git a/package-lock.json b/package-lock.json index bc947e1..690c626 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "packages/defaultSQL", "packages/postgresql", "packages/mysql", + "packages/sftp", "packages/preprocessor", "packages/validations" ], @@ -2523,6 +2524,10 @@ "resolved": "packages/preprocessor", "link": true }, + "node_modules/@ln-maf/sftp": { + "resolved": "packages/sftp", + "link": true + }, "node_modules/@ln-maf/validations": { "resolved": "packages/validations", "link": true @@ -4517,6 +4522,14 @@ "node": ">=0.10.0" } }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -4593,6 +4606,14 @@ } ] }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", @@ -4708,6 +4729,15 @@ "node": ">=4" } }, + "node_modules/buildcheck": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", + "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -5292,7 +5322,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, "engines": [ "node >= 6.0" ], @@ -5543,6 +5572,20 @@ } } }, + "node_modules/cpu-features": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz", + "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "~0.0.6", + "nan": "^2.17.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5973,8 +6016,7 @@ "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" }, "node_modules/error-ex": { "version": "1.3.2", @@ -10131,6 +10173,12 @@ "node": ">=12" } }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "optional": true + }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -12199,7 +12247,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -12894,7 +12941,6 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, "engines": { "node": ">= 4" } @@ -13576,6 +13622,40 @@ "node": ">= 0.6" } }, + "node_modules/ssh2": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.9", + "nan": "^2.18.0" + } + }, + "node_modules/ssh2-sftp-client": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-10.0.3.tgz", + "integrity": "sha512-Wlhasz/OCgrlqC8IlBZhF19Uw/X/dHI8ug4sFQybPE+0sDztvgvDf7Om6o7LbRLe68E7XkFZf3qMnqAvqn1vkQ==", + "dependencies": { + "concat-stream": "^2.0.0", + "promise-retry": "^2.0.1", + "ssh2": "^1.15.0" + }, + "engines": { + "node": ">=16.20.2" + }, + "funding": { + "type": "individual", + "url": "https://square.link/u/4g7sPflL" + } + }, "node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -14307,6 +14387,11 @@ "node": "*" } }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -14406,8 +14491,7 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", @@ -15085,6 +15169,7 @@ } }, "packages/api": { + "name": "@ln-maf/api", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15111,6 +15196,7 @@ } }, "packages/aws": { + "name": "@ln-maf/aws", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15151,6 +15237,7 @@ } }, "packages/core": { + "name": "@ln-maf/core", "version": "3.0.0-beta.0", "license": "Apache-2.0", "bin": { @@ -15171,6 +15258,7 @@ } }, "packages/defaultSQL": { + "name": "@ln-maf/default-sql", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15197,6 +15285,7 @@ } }, "packages/mysql": { + "name": "@ln-maf/mysql", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15225,6 +15314,7 @@ } }, "packages/postgresql": { + "name": "@ln-maf/postgresql", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { @@ -15253,6 +15343,7 @@ } }, "packages/preprocessor": { + "name": "@ln-maf/preprocessor", "version": "3.0.0-beta.0", "hasInstallScript": true, "license": "Apache-2.0", @@ -15341,7 +15432,29 @@ "uuid": "dist/bin/uuid" } }, + "packages/sftp": { + "version": "3.0.0-beta.0", + "license": "Apache-2.0", + "dependencies": { + "ssh2-sftp-client": "^10.0.0" + }, + "devDependencies": { + "@cucumber/cucumber": "^10.0.0", + "@ln-maf/core": "file:../core", + "eslint": "^8.18.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.0.0", + "multiple-cucumber-html-reporter": "^3.6.0" + }, + "peerDependencies": { + "@cucumber/cucumber": ">= 10.0.0", + "@ln-maf/core": "3.0.0-beta.0" + } + }, "packages/validations": { + "name": "@ln-maf/validations", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index ca2e913..1589a94 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "packages/defaultSQL", "packages/postgresql", "packages/mysql", + "packages/sftp", "packages/preprocessor", "packages/validations" ], diff --git a/packages/sftp/stepDefinitions/sftp.js b/packages/sftp/stepDefinitions/sftp.js index a590b25..54aa705 100644 --- a/packages/sftp/stepDefinitions/sftp.js +++ b/packages/sftp/stepDefinitions/sftp.js @@ -1,4 +1,4 @@ -const { MAFWhen, getFilePath, filltemplate } = require('@ln-maf/core') +const { MAFWhen, getFilePath, fillTemplate } = require('@ln-maf/core') const { setDefaultTimeout } = require('@cucumber/cucumber') const { execSync } = require('child_process') const Client = require('ssh2-sftp-client') @@ -15,13 +15,13 @@ const conf = { } MAFWhen('server {string} is set', function (name) { - name = filltemplate(name, this.results) + name = fillTemplate(name, this.results) conf.host = name return conf }) MAFWhen('username {string} is set', function (name) { - name = filltemplate(name, this.results) + name = fillTemplate(name, this.results) conf.username = name return conf }) @@ -31,7 +31,7 @@ MAFWhen('a user send command {string} to server {string}', function (command, se }) MAFWhen('list of files from remote server directory {string} is received', async function (serverDirectory) { - serverDirectory = filltemplate(serverDirectory, this.results) + serverDirectory = fillTemplate(serverDirectory, this.results) await sftp.connect(conf) const remoteFiles = await sftp.list(serverDirectory, item => item.type === '-') await sftp.end() @@ -39,8 +39,8 @@ MAFWhen('list of files from remote server directory {string} is received', async }) MAFWhen('list of files from remote server {string} directory {string} is received', async function (serverName, serverDirectory) { - conf.host = filltemplate(serverName, this.results) - serverDirectory = filltemplate(serverDirectory, this.results) + conf.host = fillTemplate(serverName, this.results) + serverDirectory = fillTemplate(serverDirectory, this.results) await sftp.connect(conf) const remoteFiles = await sftp.list(serverDirectory, item => item.type === '-') await sftp.end() @@ -48,63 +48,56 @@ MAFWhen('list of files from remote server {string} directory {string} is receive }) MAFWhen('file {string} is copied as user {string} from server {string}', function (serverFile, userName, serverName) { - serverFile = filltemplate(serverFile, this.results) - conf.username = filltemplate(userName, this.results) - conf.host = filltemplate(serverName, this.results) + serverFile = fillTemplate(serverFile, this.results) + conf.username = fillTemplate(userName, this.results) + conf.host = fillTemplate(serverName, this.results) return getFileFromServer(serverFile, getFilePath(path.basename(serverFile), this)) }) MAFWhen('file {string} is get from remote server to {string}', function (serverFile, localFile) { - serverFile = filltemplate(serverFile, this.results) - localFile = filltemplate(localFile, this.results) + serverFile = fillTemplate(serverFile, this.results) + localFile = fillTemplate(localFile, this.results) localFile = getFilePath(localFile, this) return getFileFromServer(serverFile, localFile) }) MAFWhen('latest file as user {string} from server {string} in directory {string} is retrieved', async function (userName, serverName, directory) { - userName = filltemplate(userName, this.results) - serverName = filltemplate(serverName, this.results) - directory = filltemplate(directory, this.results) + userName = fillTemplate(userName, this.results) + serverName = fillTemplate(serverName, this.results) + directory = fillTemplate(directory, this.results) conf.host = serverName conf.username = userName return await copyLatestFileFromServer.call(this, directory) }) MAFWhen('latest file as user {string} from server {string} in directory {string} is downloaded to {string}', async function (userName, serverName, directory, localPath) { - userName = filltemplate(userName, this.results) - serverName = filltemplate(serverName, this.results) - directory = filltemplate(directory, this.results) - localPath = filltemplate(localPath, this.results) + userName = fillTemplate(userName, this.results) + serverName = fillTemplate(serverName, this.results) + directory = fillTemplate(directory, this.results) + localPath = fillTemplate(localPath, this.results) conf.host = serverName conf.username = userName return await copyLatestFileFromServer.call(this, directory, localPath) }) MAFWhen('latest file as user {string} is read from server {string} in directory {string}', async function (userName, serverName, directory) { - userName = filltemplate(userName, this.results) - serverName = filltemplate(serverName, this.results) - directory = filltemplate(directory, this.results) + userName = fillTemplate(userName, this.results) + serverName = fillTemplate(serverName, this.results) + directory = fillTemplate(directory, this.results) conf.host = serverName conf.username = userName return await readLatestFileFromServer.call(this, directory) }) MAFWhen('latest file in remote directory {string} is retrieved', async function (remoteDirectory) { - remoteDirectory = filltemplate(remoteDirectory, this.results) + remoteDirectory = fillTemplate(remoteDirectory, this.results) return await copyLatestFileFromServer.call(this, remoteDirectory) }) -MAFWhen('second to last file as user {string} from server {string} in directory {string} is retrieved', async function (userName, serverName, directory) { - userName = filltemplate(userName, this.results) - conf.host = filltemplate(serverName, this.results) - directory = filltemplate(directory, this.results) - return await copySecondLatestFileFromServer.call(this, directory) -}) - MAFWhen('a user puts file {string} on server {string} to folder {string}', function (file, server, serverDirectory) { - file = filltemplate(file, this.results) - conf.host = filltemplate(server, this.results) - serverDirectory = filltemplate(serverDirectory, this.results) + file = fillTemplate(file, this.results) + conf.host = fillTemplate(server, this.results) + serverDirectory = fillTemplate(serverDirectory, this.results) if (!serverDirectory.endsWith('/')) { serverDirectory += '/' } @@ -112,10 +105,10 @@ MAFWhen('a user puts file {string} on server {string} to folder {string}', funct }) MAFWhen('a user puts file {string} on server {string} to folder {string} from local path {string}', function (file, server, serverDirectory, localPath) { - file = filltemplate(file, this.results) - conf.host = filltemplate(server, this.results) - serverDirectory = filltemplate(serverDirectory, this.results) - localPath = filltemplate(localPath, this.results) + file = fillTemplate(file, this.results) + conf.host = fillTemplate(server, this.results) + serverDirectory = fillTemplate(serverDirectory, this.results) + localPath = fillTemplate(localPath, this.results) if (!serverDirectory.endsWith('/')) { serverDirectory += '/' } @@ -123,10 +116,10 @@ MAFWhen('a user puts file {string} on server {string} to folder {string} from lo }) MAFWhen('a user {string} puts file {string} on server {string} to folder {string}', function (user, file, server, serverDirectory) { - file = filltemplate(file, this.results) - conf.user = filltemplate(user, this.results) - conf.host = filltemplate(server, this.results) - serverDirectory = filltemplate(serverDirectory, this.results) + file = fillTemplate(file, this.results) + conf.user = fillTemplate(user, this.results) + conf.host = fillTemplate(server, this.results) + serverDirectory = fillTemplate(serverDirectory, this.results) if (!serverDirectory.endsWith('/')) { serverDirectory += '/' } @@ -134,11 +127,11 @@ MAFWhen('a user {string} puts file {string} on server {string} to folder {string }) MAFWhen('a user {string} puts file {string} on server {string} to folder {string} from local path {string}', function (user, file, server, serverDirectory, localPath) { - file = filltemplate(file, this.results) - conf.user = filltemplate(user, this.results) - conf.host = filltemplate(server, this.results) - serverDirectory = filltemplate(serverDirectory, this.results) - localPath = filltemplate(localPath, this.results) + file = fillTemplate(file, this.results) + conf.user = fillTemplate(user, this.results) + conf.host = fillTemplate(server, this.results) + serverDirectory = fillTemplate(serverDirectory, this.results) + localPath = fillTemplate(localPath, this.results) if (!serverDirectory.endsWith('/')) { serverDirectory += '/' } @@ -146,9 +139,9 @@ MAFWhen('a user {string} puts file {string} on server {string} to folder {string }) MAFWhen('file {string} is put on remote server to {string}', async function (localFile, remoteFile) { - localFile = filltemplate(localFile, this.results) + localFile = fillTemplate(localFile, this.results) localFile = getFilePath(localFile, this) - remoteFile = filltemplate(remoteFile, this.results) + remoteFile = fillTemplate(remoteFile, this.results) if (!fs.existsSync(localFile)) { throw Error('File "' + localFile + '" doesn\'t exist') } @@ -157,14 +150,14 @@ MAFWhen('file {string} is put on remote server to {string}', async function (loc }) MAFWhen('file {string} is put on remote server {string} to {string}', async function (localFile, remoteServer, remoteFile) { - localFile = filltemplate(localFile, this.results) + localFile = fillTemplate(localFile, this.results) localFile = getFilePath(localFile, this) - conf.host = filltemplate(remoteServer, this.results) - remoteFile = filltemplate(remoteFile, this.results) + conf.host = fillTemplate(remoteServer, this.results) + remoteFile = fillTemplate(remoteFile, this.results) if (!fs.existsSync(localFile)) { throw Error('File "' + localFile + '" doesn\'t exist') } - remoteFile = filltemplate(remoteFile, this.results) + remoteFile = fillTemplate(remoteFile, this.results) await putFileToServer.call(this, localFile, remoteFile) return remoteFile }) @@ -264,31 +257,3 @@ async function readLatestFileFromServer(serverDirectory) { await sftp.end() return remoteFileContents.toString() } - -/** - * Copies the 2nd latest file from a server's directory to the local directory - * - * @param {string} serverDirectory The linux path on the remote containing the 2nd latest file - * @returns {string} The name of the file downloaded - */ -async function copySecondLatestFileFromServer(serverDirectory, localPath) { - if (!serverDirectory.endsWith('/')) { - serverDirectory = serverDirectory + '/' - } - if (localPath && !localPath.endsWith('/')) { - localPath = localPath + '/' - } - await sftp.connect(conf) - const remoteFiles = await sftp.list(serverDirectory, item => item.type === '-') - if (remoteFiles.length <= 1) { - throw Error(`One or no files found on ${conf.host}:${serverDirectory}`) - } - remoteFiles.sort((a, b) => a.modifyTime - b.modifyTime) - const secondLatestRemoteFile = remoteFiles.at(-2).name - if (!localPath) { - localPath = getFilePath('', this) - } - await sftp.fastGet(serverDirectory + secondLatestRemoteFile, localPath + secondLatestRemoteFile) - await sftp.end() - return secondLatestRemoteFile -} From 05c37d56461a0a001fb5efabd61194adb69bc1eb Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 7 Feb 2024 16:32:14 -0500 Subject: [PATCH 42/48] Remove SFTP feature file --- packages/sftp/features/sftp.feature | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 packages/sftp/features/sftp.feature diff --git a/packages/sftp/features/sftp.feature b/packages/sftp/features/sftp.feature deleted file mode 100644 index 3829f1d..0000000 --- a/packages/sftp/features/sftp.feature +++ /dev/null @@ -1,4 +0,0 @@ -Feature: SFTP - - Scenario: SFTP Download File - \ No newline at end of file From a96db6ea327ef440667260e8ad6fae4fb8766e50 Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 8 Feb 2024 14:15:32 -0500 Subject: [PATCH 43/48] Update MAFSave function and refactor performJSONObjectTransform --- packages/core/index.js | 83 ++++--- packages/sftp/abc.txt | 1 + .../validations/features/filltemplate.feature | 6 +- packages/validations/features/setting.feature | 203 +++++++++--------- packages/validations/index.js | 4 +- packages/validations/runFeature.sh | 4 +- 6 files changed, 173 insertions(+), 128 deletions(-) create mode 100644 packages/sftp/abc.txt diff --git a/packages/core/index.js b/packages/core/index.js index ea1a8d4..719856b 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -16,7 +16,7 @@ const canAttach = function () { return this.results.attach !== 'false' } -const applyJSONToString = function (string, scenario, ft = true) { +const applyJSONToString = function (string, scenario, fillTemplateValues = true) { if (!scenario.results) { scenario.results = {} } @@ -24,7 +24,7 @@ const applyJSONToString = function (string, scenario, ft = true) { scenario.results.DateTime = require('luxon').DateTime // scenario.results.moment = require('moment') } - if (ft) { string = fillTemplate(string, scenario.results) } + if (fillTemplateValues) { string = fillTemplate(string, scenario.results) } try { if (string.trim() !== '') { const obj = JSON.parse(string) @@ -40,12 +40,60 @@ const applyJSONToString = function (string, scenario, ft = true) { return string } -const performJSONObjectTransform = function (items, ft = true) { +/** + * Retrieves the value of an item from a nested object using dot notation. + * + * @param {string} item - The item to retrieve the value for. + * @param {object} itemsList - The nested object containing the items. + * @returns {*} - The value of the item. + */ +function getItemValue(item, itemsList) { + let value = itemsList + for (const key of item.split('.')) { + value = value[key] + } + return value +} + +/** + * Saves an item for MAF following dot notation. + * this.results contains the list of all items that have been saved for MAF. + * + * @param {string} item - The name of the item to be saved. + * @param {any} itemValue - The value of the item to be saved. + */ +function MAFSave(item, itemValue) { + let resultKey // The key to be used in the attachment + if (!this.results) { + this.results = {} + this.results[item] = itemValue + resultKey = item + } else { + const keys = item.split('.') + item = this.results + if (keys.length === 1) { + item[keys] = itemValue + resultKey = keys + } else { + for (let i = 0; i < keys.length - 1; i++) { + if (!item[keys[i]]) { + item[keys[i]] = {} + } + item = item[keys[i]] + } + item[keys[keys.length - 1]] = itemValue + resultKey = keys[0] + } + } + tryAttach.call(this, { [resultKey]: this.results[resultKey] }) +} + +function performJSONObjectTransform(items, fillTemplateValues = true) { if (!this.results) { this.results = {} } if (this.results.skipFillTemplate && this.results.skipFillTemplate.toUpperCase() === 'TRUE') { - ft = false + fillTemplateValues = false } if (items.value) { items.value = items.value.slice(1, items.value.length - 1) @@ -62,20 +110,19 @@ const performJSONObjectTransform = function (items, ft = true) { case 'it': return this.results.lastRun case 'item': - if (ft) { items.value = fillTemplate(items.value, this.results) } - return eval('this.results.' + items.value) + if (fillTemplateValues) { items.value = fillTemplate(items.value, this.results) } + return getItemValue(items.value, this.results) case 'file': - items.value = fillTemplate(items.value, this.results) - return applyJSONToString(readFile(items.value, this), this, ft) + return applyJSONToString(readFile(items.value, this), this, fillTemplateValues) case '': case 'string': - return applyJSONToString(items.value, this, ft) + return applyJSONToString(items.value, this, fillTemplateValues) default: return parseInt(items.type) } } -const getFilePath = (filename, scenario) => { +function getFilePath(filename, scenario) { let dir = '' if (!scenario.results) { scenario.results = {} @@ -106,7 +153,7 @@ const readFile = (filename, scenario, dataType = 'utf-8') => { return fs.readFileSync(getFilePath(filename, scenario), dataType) } -const MAFWhen = function (name, func) { +function MAFWhen(name, func) { const params = [] for (let i = 0; i < func.length; i++) { params.push('var' + i) @@ -122,23 +169,11 @@ const MAFWhen = function (name, func) { this.results.lastRun=await func.call(this, ...([].slice.call(arguments))) if(canAttach.call(this)) this.attach(JSON.stringify({ lastRun: this.results.lastRun }, null, 2)) - } + } `) When(name, tmpFunc) } -const MAFSave = function (location, obj) { - if (!this.results) { - this.results = {} - } - const loc = 'this.results.' + location - const set = loc + '=obj' - eval(set) - const res = {} - res[location] = eval(loc) - tryAttach.call(this, res) -} - const fillTemplate = function (templateString, templateVars) { // Check if the template string is a json object let isJSON = true diff --git a/packages/sftp/abc.txt b/packages/sftp/abc.txt new file mode 100644 index 0000000..9944a9f --- /dev/null +++ b/packages/sftp/abc.txt @@ -0,0 +1 @@ +This is a test file \ No newline at end of file diff --git a/packages/validations/features/filltemplate.feature b/packages/validations/features/filltemplate.feature index 320002f..1e0d0c6 100644 --- a/packages/validations/features/filltemplate.feature +++ b/packages/validations/features/filltemplate.feature @@ -40,13 +40,13 @@ Feature: Core: Test Fill Template """ - And set "bob" to: + And set "foo" to: """ { - "what": "${a}" + "bar": "${a}" } """ - Then item "bob.what" is equal to item "a" + Then item "foo.bar" is equal to item "a" Scenario: Test fill template Given set "numVal" to 5 When run templateString diff --git a/packages/validations/features/setting.feature b/packages/validations/features/setting.feature index ac60561..b28a5d0 100644 --- a/packages/validations/features/setting.feature +++ b/packages/validations/features/setting.feature @@ -1,104 +1,113 @@ Feature: Validations: Setting variables - Background: - When set "directory" to "./test" + Background: + When set "directory" to "./test" -Scenario: Check that we can identify a null or undefined element - When set result to "15" - Then it is equal to "15" - When set "a" to 3 - Then item "a" is not null - And item "b" is null + Scenario: Check that we can identify a null or undefined element + When set result to "15" + Then it is equal to "15" + When set "a" to 3 + Then item "a" is not null + And item "b" is null -Scenario: Set config as the first step - When set config from json file "newConfig2.json" - And set "hello" to "${environment}" + Scenario: Set config as the first step + When set config from json file "newConfig2.json" + And set "hello" to "${environment}" -Scenario: Set an empty string - When set "hi" to "" - Then "${hi}" is equal to "" + Scenario: Set an empty string + When set "hi" to "" + Then "${hi}" is equal to "" -Scenario: Setting. - Then "5" is not equal to: - """ - 17 - """ - Then "5" is equal to: - """ - 5 - """ - When set "hi" to "{}" - When set "hi.there" to "yo" - And set "hi.yo" to "yo" - And set "hi.arr" to "[]" - And set "hi.arr[0]" to "hello" - And set "hello" to item "hi" - When set "hi" to 3 - Then item "hi" is equal to "3" - When set "hi" to "{}" - And item "hi" is not equal to item "hello" -Scenario: Setting to item - When set: - |username|pass| - |User|Pass| - |User2|2Pass| - Then "${username[0]}" is equal to "User" - Then "${username[1]}" is equal to "User2" - And set: - |username|pass| - |User|Pass| - Then "${username}" is equal to "User" - When set "hi" to "hello" - And set "item2" to item "hi" - Then "${item2}" is equal to "hello" -Scenario: Setting item from file - When set "param" to "meh" - When set config from json file "config.json" - When set config from json item "deepMeh2" - Then "${deep3}" is equal to "Testing3" - Then "${meh}" is equal to "Test" -Scenario: Set json with number varaible - When set "num" to "5" - When set "hi" to -""" -{ - "num": ${num} -} -""" + Scenario: Testing json item saves + When set "hi" to "{}" + Then item "hi" is equal to "{}" + When set "well.hello.there" to "me?" + Then item "well.hello.there" is equal to "me?" + And item "well.hello" is equal to '{ "there": "me?" }' + And item "well" is equal to '{ "hello": { "there": "me?" } }' -Scenario: Check two json objects - When set "a" to "3" - And set "item" to: - """ - { - "a": ${a} - } - """ - Then item "item" is equal to: - """ - { - "a":3 - } - """ - And set "a" to '"hi"' - And set "item" to: - """ - { - "a": "${a}" - } - """ - Then item "item" is equal to: - """ - { - "a": "\"hi\"" - } - """ + When set "hi" to '{ "hello": { "there": "General Kenobi!" } }' + Then item "hi" is equal to '{ "hello": { "there": "General Kenobi!" } }' + When set "hi.hello.there" to "General Kenobi!" + Then item "hi" is equal to '{ "hello": { "there": "General Kenobi!" } }' + When set "hi.over.here" to "I see you!" + Then item "hi" is equal to '{ "hello": { "there": "General Kenobi!" }, "over": { "here": "I see you!" } }' + And item "well" is equal to '{ "hello": { "there": "me?" } }' -Scenario Outline: Set the examples - Given parameters are: - """ - { - "hello": "world" - } - """ - When apply parameters - Then 5 = 5 + Scenario: Testing array saves + When set "hi" to "[]" + Then item "hi" is equal to "[]" + When set "hi[0]" to "hello" + Then item "hi[0]" is equal to "hello" + + Scenario: Miscellaneous + When set "hi" to 3 + Then item "hi" is equal to "3" + When set "hi" to "{}" + And item "hi" is not equal to item "hello" + + Scenario: Setting to item + When set: + | username | pass | + | User | Pass | + | User2 | 2Pass | + Then "${username[0]}" is equal to "User" + Then "${username[1]}" is equal to "User2" + And set: + | username | pass | + | User | Pass | + Then "${username}" is equal to "User" + When set "hi" to "hello" + And set "item2" to item "hi" + Then "${item2}" is equal to "hello" + Scenario: Setting item from file + When set "param" to "meh" + When set config from json file "config.json" + When set config from json item "deepMeh2" + Then "${deep3}" is equal to "Testing3" + Then "${meh}" is equal to "Test" + Scenario: Set json with number varaible + When set "num" to "5" + When set "hi" to + """ + { + "num": ${num} + } + """ + + Scenario: Check two json objects + When set "a" to "3" + And set "item" to: + """ + { + "a": ${a} + } + """ + Then item "item" is equal to: + """ + { + "a": 3 + } + """ + And set "a" to '"hi"' + And set "item" to: + """ + { + "a": "${a}" + } + """ + Then item "item" is equal to: + """ + { + "a": "\"hi\"" + } + """ + + Scenario Outline: Set the examples + Given parameters are: + """ + { + "hello": "world" + } + """ + When apply parameters + Then 5 = 5 diff --git a/packages/validations/index.js b/packages/validations/index.js index 897ba4f..98a151f 100644 --- a/packages/validations/index.js +++ b/packages/validations/index.js @@ -48,9 +48,9 @@ MAFWhen('apply parameters', function () { tryAttach.call(this, this.parameters) }) -When('set {string} to {jsonObject}', function (location, jsonObject) { +When('set {string} to {jsonObject}', function (itemName, jsonObject) { const obj = performJSONObjectTransform.call(this, jsonObject) - MAFSave.call(this, location, obj) + MAFSave.call(this, itemName, obj) }) When('set {string} to:', function (location, value) { setToString(location, value, this) diff --git a/packages/validations/runFeature.sh b/packages/validations/runFeature.sh index 7ef387a..2225774 100644 --- a/packages/validations/runFeature.sh +++ b/packages/validations/runFeature.sh @@ -1,8 +1,8 @@ mkdir -p test/report if [[ "$ENVIRONMENT" == "COVERAGE" ]]; then - npx nyc --reporter=lcov --reporter=text cucumber-js $EXTRAS -f json:test/report/preprocessor.json --require "stepDefinitions/*.js" features/$* + npx nyc --reporter=lcov --reporter=text cucumber-js $EXTRAS -f json:test/report/validations.json --require "stepDefinitions/*.js" features/$@ else - npx cucumber-js $EXTRAS -f json:test/report/preprocessor.json --require "stepDefinitions/*.js" features/$* + npx cucumber-js $EXTRAS -f json:test/report/validations.json --require "stepDefinitions/*.js" features/$@ fi result=$? npx multiReport From 410753ba5bb9b287f9f29777c222dddb216f0caf Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 8 Feb 2024 14:41:22 -0500 Subject: [PATCH 44/48] Refactor validations module and fix equivalence operator eval --- packages/validations/index.js | 78 +++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 27 deletions(-) diff --git a/packages/validations/index.js b/packages/validations/index.js index 98a151f..bf74191 100644 --- a/packages/validations/index.js +++ b/packages/validations/index.js @@ -1,11 +1,8 @@ const { Before } = require('@cucumber/cucumber') -const Cucumber = require('@cucumber/cucumber') +const { Given, When, Then } = require('@cucumber/cucumber') const fs = require('fs') const chai = require('chai') const assert = chai.assert -const Given = Cucumber.Given -const When = Cucumber.When -const Then = Cucumber.Then let world = null const { fillTemplate } = require('@ln-maf/core') const { MAFSave, tryAttach, performJSONObjectTransform, applyJSONToString, readFile, writeFile, writeFileBuffer, readFileBuffer, getFilePath, MAFWhen } = require('@ln-maf/core') @@ -21,7 +18,7 @@ const toISO = d => { const date = new Date(val).toISOString() return date } -const setToString = function (location, value, scenario, attach = true) { +function setToString(location, value, scenario) { MAFSave.call(scenario, location, applyJSONToString(value, scenario)) } @@ -60,12 +57,36 @@ When('set {string} to', function (location, value) { }) Then('{jsonObject} {validationsEquivalence} {jsonObject}', function (obj1, equiv, obj2) { - if (equiv === '=') { - equiv = '==' - } - const obj = Number(performJSONObjectTransform.call(this, obj1)) + obj1 = Number(performJSONObjectTransform.call(this, obj1)) obj2 = Number(performJSONObjectTransform.call(this, obj2)) - assert(eval('obj' + equiv + 'obj2'), JSON.stringify(obj) + ' was not ' + equiv + ' ' + JSON.stringify(obj2)) + let result + switch (equiv) { + case '=': + case '==': + case '===': + result = obj1 === obj2 + break + case '!=': + result = obj1 !== obj2 + break + case '>': + result = obj1 > obj2 + break + case '>=': + result = obj1 >= obj2 + break + case '<': + result = obj1 < obj2 + break + case '<=': + result = obj1 <= obj2 + break + default: + throw new Error('Invalid equivalence operator: ' + equiv) + } + if (!result) { + throw new Error(JSON.stringify(obj1) + ' was not ' + equiv + ' to ' + JSON.stringify(obj2)) + } }) Then('{jsonObject} is {timeQualifier} now', function (jsonObject, isBefore) { @@ -388,18 +409,20 @@ MAFWhen('{jsonObject} is base64 encoded', function (item) { MAFWhen('{jsonObject} is base64 decoded', function (item) { item = performJSONObjectTransform.call(this, item) - assert(typeof item === 'string', 'Item type needs to be a string for base64 decoding, but it was a ' + typeof item) - const decode = (Buffer.from(item, 'base64').toString('ascii')) - return decode + if (typeof item !== 'string') { + throw new Error('Item type needs to be a string for base64 decoding, but it was a ' + typeof item) + } + return (Buffer.from(item, 'base64').toString('ascii')) }) -Then('the value {string} is base64 decoded and resaved', function (item) { - const unencrypt = (Buffer.from(this.results[item], 'base64').toString('ascii')) - this.results[item] = unencrypt - tryAttach.call(this, 'Decoded value: ' + unencrypt) +MAFWhen('the value {string} is base64 decoded and resaved', function (item) { + item = fillTemplate(item, this.results) + const unencrypted = (Buffer.from(this.results[item], 'base64').toString('ascii')) + this.results[item] = unencrypted + tryAttach.call(this, 'Decoded value: ' + unencrypted) }) -const lowerCaseItemKeys = function (item) { +function lowerCaseItemKeys(item) { Object.keys(item).forEach(i => { if (i.toLowerCase() !== i) { item[i.toLowerCase()] = item[i] @@ -412,11 +435,12 @@ const lowerCaseItemKeys = function (item) { } When('make json keys for item {string} lower case', function (item) { + item = fillTemplate(item, this.results) lowerCaseItemKeys(this.results[item]) tryAttach.call(this, this.results[item]) }) -const flatten = function (item, res) { +function flatten(item, res) { Object.keys(item).forEach(i => { if (typeof item[i] === 'object') { flatten(item[i], res) } else { res[i] = item[i] } }) @@ -429,7 +453,7 @@ When('json item {string} is flattened', function (item) { tryAttach.call(this, this.results[item]) }) -const numberify = function (item) { +function numberify(item) { Object.keys(item).forEach(i => { if (typeof item[i] === 'object') { numberify(item[i]) } else if (typeof item[i] === 'string') { const intVal = Number(item[i]) @@ -565,12 +589,12 @@ When('wait {int} milliseconds', function (milliseconds) { Given('set examples', async function () { // Write code here that turns the phrase above into concrete actions const a = world - const flatten = (acc, cumulator) => { - if (typeof cumulator === 'undefined') { + const flatten = (acc, cumulation) => { + if (typeof cumulation === 'undefined') { return acc } - if (Array.isArray(cumulator)) { return [...acc, ...cumulator] } else { - acc.push(cumulator) + if (Array.isArray(cumulation)) { return [...acc, ...cumulation] } else { + acc.push(cumulation) return acc } } @@ -643,20 +667,20 @@ MAFWhen('blob is read from file {string}', async function (fileName) { When('blob item {string} is written to file {string}', async function (blob, fileName) { blob = fillTemplate(blob, this.results) - blob = eval('this.results.' + blob) + blob = this.results[blob] // Replace eval with bracket notation const b = Buffer.from(await blob.arrayBuffer()) writeFile(`${fileName}`, b, this) }) When('blob item {string} is attached', async function (blob) { blob = fillTemplate(blob, this.results) - blob = eval('this.results.' + blob) + blob = this.results[blob] // Replace eval with bracket notation const b = Buffer.from(await blob.arrayBuffer()) return this.attach(b, 'image/png') }) Then('blob item {string} is equal to file {string}', async function (blob, fileName) { blob = fillTemplate(blob, this.results) - blob = eval('this.results.' + blob) + blob = this.results[blob] // Replace eval with bracket notation const b = await blob.arrayBuffer() const actualImage = readFileBuffer(`${fileName}`, this) assert.isTrue(Buffer.compare(actualImage, Buffer.from(b)) === 0) From d208e627b94e18e32b41ee0a71fd8bb19859aaba Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 8 Feb 2024 15:05:11 -0500 Subject: [PATCH 45/48] Refactor code to improve readability and maintainability --- packages/core/index.js | 28 ++++++++++------------------ packages/validations/index.js | 27 +++++++++++++++++++-------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/packages/core/index.js b/packages/core/index.js index 719856b..248a275 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -63,28 +63,20 @@ function getItemValue(item, itemsList) { * @param {any} itemValue - The value of the item to be saved. */ function MAFSave(item, itemValue) { - let resultKey // The key to be used in the attachment if (!this.results) { this.results = {} - this.results[item] = itemValue - resultKey = item - } else { - const keys = item.split('.') - item = this.results - if (keys.length === 1) { - item[keys] = itemValue - resultKey = keys - } else { - for (let i = 0; i < keys.length - 1; i++) { - if (!item[keys[i]]) { - item[keys[i]] = {} - } - item = item[keys[i]] - } - item[keys[keys.length - 1]] = itemValue - resultKey = keys[0] + } + const resultKey = item + const keys = item.split('.') + let currentItem = this.results + + for (let i = 0; i < keys.length - 1; i++) { + if (!currentItem[keys[i]]) { + currentItem[keys[i]] = {} } + currentItem = currentItem[keys[i]] } + currentItem[keys[keys.length - 1]] = itemValue tryAttach.call(this, { [resultKey]: this.results[resultKey] }) } diff --git a/packages/validations/index.js b/packages/validations/index.js index bf74191..f70d688 100644 --- a/packages/validations/index.js +++ b/packages/validations/index.js @@ -171,7 +171,7 @@ MAFWhen('run xPath {string} on item {string}', function (xPath, element) { } const xpath = require('xpath') const Dom = require('@xmldom/xmldom').DOMParser - const doc = new Dom().parseFromString(eval('this.results.' + element)) + const doc = new Dom().parseFromString(this.results[element]) const sel = xpath.useNamespaces(this.results.namespace) return sel(xPath, doc).map(i => i.toString()).join('\n') }) @@ -207,8 +207,18 @@ const setFileMatch = function (set, file) { */ function jsonDeleteKey(jsonKey, object) { const original = JSON.parse(JSON.stringify(object)) - eval(`delete object.${jsonKey}`) - require('chai').assert.notDeepEqual(`${object}`, original) + const keys = jsonKey.split('.') + let currentItem = object + + for (let i = 0; i < keys.length - 1; i++) { + if (!currentItem[keys[i]]) { + currentItem[keys[i]] = {} + } + currentItem = currentItem[keys[i]] + } + delete currentItem[keys[keys.length - 1]] + delete object[jsonKey] + assert.notDeepEqual(object, original) return true } @@ -255,12 +265,13 @@ MAFWhen('JSON key {string} is removed from {jsonObject}', function (jsonpath, js /** * Returns the JSON key from a variable to lastRun */ -MAFWhen('JSON key {string} is extracted from {jsonObject}', function (jsonpath, jsonObject) { - let obj = performJSONObjectTransform.call(this, jsonObject) - if (typeof obj === 'string') { - obj = eval(`this.results.${obj}`) +MAFWhen('JSON key {string} is extracted from {jsonObject}', function (jsonPath, jsonObject) { + jsonObject = performJSONObjectTransform.call(this, jsonObject) + jsonPath = fillTemplate(jsonPath, this.results) + if (typeof jsonObject === 'string') { + jsonObject = eval(`this.results.${jsonObject}`) } - return eval(`obj.${jsonpath}`) + return eval(`jsonObject.${jsonPath}`) }) /** From bc12845f7b6af7dde785758120d922a434d05f5d Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Thu, 8 Feb 2024 15:43:55 -0500 Subject: [PATCH 46/48] Refactor JSON key extraction logic in validations/index.js --- packages/validations/features/json.feature | 367 +++++++++++---------- packages/validations/index.js | 14 +- 2 files changed, 198 insertions(+), 183 deletions(-) diff --git a/packages/validations/features/json.feature b/packages/validations/features/json.feature index 8a16713..367f09c 100644 --- a/packages/validations/features/json.feature +++ b/packages/validations/features/json.feature @@ -1,44 +1,49 @@ Feature: Validations: JSON manipulation Testing JSON object key deletion and extraction - Background: - When set "directory" to "./test" + Background: + When set "directory" to "./test" Scenario: Readme simple extract Example - When set "response" to - """ + When set "response" to + """ { - "error": { - "subErrorCodes": [ - { - "subErrorCode": 1101, - "subErrorMessage": "Phone Number is required" - } - ] - }, - "doesnotexist": null + "error": { + "subErrorCodes": [ + { + "subErrorCode": 1101, + "subErrorMessage": "Phone Number is required" + } + ] + }, + "doesnotexist": null } - """ - When JSON key "subErrorCodes" is extracted from "response.error" - When JSON key "doesnotexist" is extracted from "response.error" - When set "Data" to - """ - { - "a":"apple", - "b":"banana" - } - """ - Then element "a" exists in item "Data" - When JSON key "a" is extracted from "Data" - Then it is equal to "apple" + """ + When JSON key "subErrorCodes[0].subErrorCode" is extracted from item "response.error" + And it is equal to "1101" + When JSON key "subErrorCodes[0].subErrorMessage" is extracted from item "response.error" + And it is equal to "Phone Number is required" + When JSON key "doesnotexist" is extracted from item "response" + And it is equal to "null" - Scenario: Readme simple removal Example When set "Data" to - """ - { - "a":"apple", - "b":"banana" - } - """ + """ + { + "a": "apple", + "b": "banana" + } + """ + Then element "a" exists in item "Data" + When JSON key "a" is extracted from item "Data" + Then it is equal to "apple" + + Scenario: Readme simple removal Example + When set "Data" to + """ + { + "a": "apple", + "b": "banana" + } + """ And elements '["a", "b"]' exist in item "Data" And elements 'a, b' exist in item "Data" When JSON key "a" is removed from "Data" @@ -47,52 +52,52 @@ Feature: Validations: JSON manipulation And elements '[c,d]' do not exist in item "Data" Scenario: JSON Key Deletion - When set "TestJSON" to - """ - { - "url": "http://google.com", - "meh": "Test", - "meh2": "Another Test", - "deepMeh": { - "deep1": "Testing1", - "deep2": "Testing2" - }, - "deepMeh2": { - "deep3": "Testing3", - "deep4": "Testing4" - }, - "arrayTest": [ - "Testing1", - "Testing2", - "Testing3" - ] - } - """ + When set "TestJSON" to + """ + { + "url": "http://google.com", + "meh": "Test", + "meh2": "Another Test", + "deepMeh": { + "deep1": "Testing1", + "deep2": "Testing2" + }, + "deepMeh2": { + "deep3": "Testing3", + "deep4": "Testing4" + }, + "arrayTest": [ + "Testing1", + "Testing2", + "Testing3" + ] + } + """ And JSON key "meh" is removed from item "TestJSON" And set "lastRun" to item "TestJSON" And JSON key "deepMeh.deep1" is removed from it Scenario: JSON Key Extraction - When set "TestJSON" to - """ - { - "url": "http://google.com", - "meh": "Test", - "meh2": "Another Test", - "deepMeh": { - "deep1": "Testing1", - "deep2": "Testing2" - }, - "deepMeh2": { - "deep3": "Testing3", - "deep4": "Testing4" - }, - "arrayTest": [ - "Testing1", - "Testing2", - "Testing3" - ] - } - """ + When set "TestJSON" to + """ + { + "url": "http://google.com", + "meh": "Test", + "meh2": "Another Test", + "deepMeh": { + "deep1": "Testing1", + "deep2": "Testing2" + }, + "deepMeh2": { + "deep3": "Testing3", + "deep4": "Testing4" + }, + "arrayTest": [ + "Testing1", + "Testing2", + "Testing3" + ] + } + """ When set "newJSON" to item "TestJSON" When JSON key "arrayTest[0]" is extracted from item "newJSON" When JSON key "deepMeh" is extracted from item "TestJSON" @@ -100,43 +105,47 @@ Feature: Validations: JSON manipulation And JSON key "deep2" is extracted from it And JSON keys 'meh,deepMeh,deepMeh2.deep3, arrayTest]' are extracted from item "TestJSON" And set "expected" to - """ - { - "meh": "Test", - "deepMeh": { - "deep1": "Testing1", - "deep2": "Testing2" - }, - "deepMeh2": { - "deep3": "Testing3" - }, - "arrayTest": [ - "Testing1", - "Testing2", - "Testing3" - ] - } - """ + """ + { + "meh": "Test", + "deepMeh": { + "deep1": "Testing1", + "deep2": "Testing2" + }, + "deepMeh2": { + "deep3": "Testing3" + }, + "arrayTest": [ + "Testing1", + "Testing2", + "Testing3" + ] + } + """ Then item "expected" is equal to item "lastRun" Scenario: JSON Key Lowercase When set "data" to: """ { - "alreadylower": "lower", - "Alpha": "apple", - "BETA": "Banana", - "Charley": { "Coconut": "Hierarchy"} + "alreadylower": "lower", + "Alpha": "apple", + "BETA": "Banana", + "Charley": { + "Coconut": "Hierarchy" + } } """ When make json keys for item "data" lower case Then item "data" is equal to: """ { - "alreadylower": "lower", - "alpha": "apple", - "beta": "Banana", - "charley": { "coconut": "Hierarchy" } + "alreadylower": "lower", + "alpha": "apple", + "beta": "Banana", + "charley": { + "coconut": "Hierarchy" + } } """ @@ -144,65 +153,65 @@ Feature: Validations: JSON manipulation When set "data" to: """ { - "Alpha": "apple", - "BETA": "Banana", - "Charley": "coconut" + "Alpha": "apple", + "BETA": "Banana", + "Charley": "coconut" } """ When make json keys for item "data" lower case Then item "data" is equal to: """ { - "alpha": "apple", - "beta": "Banana", - "charley": "coconut" + "alpha": "apple", + "beta": "Banana", + "charley": "coconut" } """ Scenario: JSON Numberify When set "data" to: """ { - "Alpha": "123", - "Beta": { - "Beta_21": "456", - "Beta_22": "some_word" + "Alpha": "123", + "Beta": { + "Beta_21": "456", + "Beta_22": "some_word" }, - "Charley": { - "Charley_21": "45.6", - "Charley_22": 24.9 + "Charley": { + "Charley_21": "45.6", + "Charley_22": 24.9 }, - "Delta": "1.2.3" + "Delta": "1.2.3" } """ When json item "data" is numberifyed Then item "data" is equal to: """ { - "Alpha": 123, - "Beta": { - "Beta_21": 456, - "Beta_22": "some_word" + "Alpha": 123, + "Beta": { + "Beta_21": 456, + "Beta_22": "some_word" }, - "Charley": { - "Charley_21": 45.6, - "Charley_22": 24.9 + "Charley": { + "Charley_21": 45.6, + "Charley_22": 24.9 }, - "Delta": "1.2.3" + "Delta": "1.2.3" } """ Scenario: JSON Trim When set "data" to: """ { - "Alpha": { - "Alpha_2": "Apple " + "Alpha": { + "Alpha_2": "Apple " }, "John": 5, - "Beta": "_Banana_", - "Charley": "Spaces are kept in between words", - "Delta": { - "Delta_21" : " But spaces at the beginning and end are removed ", - "Delta_22" : "\nSo are new lines\n" + "Beta": "_Banana_", + "Charley": "Spaces are kept in between words", + "Delta": { + "Delta_21": " But spaces at the beginning and end are removed ", + "Delta_22": "\nSo are new lines\n" } } """ @@ -210,34 +219,34 @@ Feature: Validations: JSON manipulation Then item "data" is equal to: """ { - "Alpha": { - "Alpha_2": "Apple" - }, - "John": 5, - "Beta": "_Banana_", - "Charley": "Spaces are kept in between words", - "Delta": { - "Delta_21": "But spaces at the beginning and end are removed", - "Delta_22": "So are new lines" + "Alpha": { + "Alpha_2": "Apple" + }, + "John": 5, + "Beta": "_Banana_", + "Charley": "Spaces are kept in between words", + "Delta": { + "Delta_21": "But spaces at the beginning and end are removed", + "Delta_22": "So are new lines" } } """ - Scenario: JSON Flatten + Scenario: JSON Flatten When set "data" to: """ { - "Alpha": { - "Alpha_2": "Apple" + "Alpha": { + "Alpha_2": "Apple" }, - "Beta": "Banana", - "Charley": { - "Charley_2": { - "Charley_3": "Coconut" + "Beta": "Banana", + "Charley": { + "Charley_2": { + "Charley_3": "Coconut" } }, - "Delta": { - "Delta_21" : "Durian1", - "Delta_22" : "Durian2" + "Delta": { + "Delta_21": "Durian1", + "Delta_22": "Durian2" } } """ @@ -245,37 +254,37 @@ Feature: Validations: JSON manipulation Then item "data" is equal to: """ { - "Alpha_2": "Apple", - "Beta": "Banana", - "Charley_3": "Coconut", - "Delta_21": "Durian1", - "Delta_22": "Durian2" + "Alpha_2": "Apple", + "Beta": "Banana", + "Charley_3": "Coconut", + "Delta_21": "Durian1", + "Delta_22": "Durian2" + } + """ + Scenario: Example for json path + Given set "meh" to: + """ + { + "url": "http://google.com", + "arrayTest": [ + "Testing1", + "Testing2", + "Testing3" + ] + } + """ + And set "expected" to: + """ + { + "url": null, + "arrayTest": [ + "Testing1", + "Testing2", + "Testing3" + ] } """ -Scenario: Example for json path -Given set "meh" to: -""" -{ - "url": "http://google.com", - "arrayTest": [ - "Testing1", - "Testing2", - "Testing3" - ] -} -""" -And set "expected" to: -""" -{ - "url": null, - "arrayTest": [ - "Testing1", - "Testing2", - "Testing3" - ] -} -""" -When "null" is applied to item "meh" on JSON path "$.url" -Then item "expected" is equal to item "meh" -When "" is applied to item "meh" on JSON path "$.url" + When "null" is applied to item "meh" on JSON path "$.url" + Then item "expected" is equal to item "meh" + When "" is applied to item "meh" on JSON path "$.url" diff --git a/packages/validations/index.js b/packages/validations/index.js index f70d688..8f9cf98 100644 --- a/packages/validations/index.js +++ b/packages/validations/index.js @@ -266,12 +266,18 @@ MAFWhen('JSON key {string} is removed from {jsonObject}', function (jsonpath, js * Returns the JSON key from a variable to lastRun */ MAFWhen('JSON key {string} is extracted from {jsonObject}', function (jsonPath, jsonObject) { - jsonObject = performJSONObjectTransform.call(this, jsonObject) jsonPath = fillTemplate(jsonPath, this.results) - if (typeof jsonObject === 'string') { - jsonObject = eval(`this.results.${jsonObject}`) + jsonObject = performJSONObjectTransform.call(this, jsonObject) + let value = jsonObject + for (const key of jsonPath.split('.')) { + if (key.includes('[') && key.includes(']')) { + const index = key.match(/\[(.*?)\]/)[1] + value = value[key.split('[')[0]][index] + } else { + value = value[key] + } } - return eval(`jsonObject.${jsonPath}`) + return value }) /** From fb30f74138f0c3b833adc4683a79a982b267745e Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Tue, 16 Apr 2024 10:49:56 -0400 Subject: [PATCH 47/48] Update mysql2 version in mysql --- packages/mysql/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mysql/package.json b/packages/mysql/package.json index 2f9378e..414265f 100644 --- a/packages/mysql/package.json +++ b/packages/mysql/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "3.0.0-beta.0", + "version": "3.0.0-beta.1", "description": "Setup for sql on Node", "main": "index.js", "scripts": { @@ -17,7 +17,7 @@ "dependencies": { "@ln-maf/default-sql": "^3.0.0-beta.0", "keytar": "^7.9.0", - "mysql2": "^2.3.3" + "mysql2": "^3.9.0" }, "peerDependencies": { "@cucumber/cucumber": ">= 10.0.0", From da67d0f81c11f9fc9ea7fcc7aa0b73892a0e54cd Mon Sep 17 00:00:00 2001 From: Dominick Martelly Date: Wed, 24 Apr 2024 09:31:02 -0400 Subject: [PATCH 48/48] Update mysql2 version in mysql package --- package-lock.json | 45 ++++++++++++++++++++++--------------- packages/mysql/package.json | 4 ++-- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 690c626..666fba0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7081,9 +7081,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -8170,9 +8170,9 @@ } }, "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true }, "node_modules/is-array-buffer": { @@ -9556,9 +9556,9 @@ } }, "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/loupe": { "version": "2.3.7", @@ -10116,16 +10116,16 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/mysql2": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz", - "integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", + "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", "dependencies": { - "denque": "^2.0.1", + "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", - "long": "^4.0.0", - "lru-cache": "^6.0.0", - "named-placeholders": "^1.1.2", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" }, @@ -10144,6 +10144,14 @@ "node": ">=0.10.0" } }, + "node_modules/mysql2/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "engines": { + "node": ">=16.14" + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -15286,12 +15294,12 @@ }, "packages/mysql": { "name": "@ln-maf/mysql", - "version": "3.0.0-beta.0", + "version": "3.0.0-beta.2", "license": "Apache-2.0", "dependencies": { "@ln-maf/default-sql": "^3.0.0-beta.0", "keytar": "^7.9.0", - "mysql2": "^2.3.3" + "mysql2": "^3.9.7" }, "bin": { "mysql-configure": "config.js" @@ -15433,6 +15441,7 @@ } }, "packages/sftp": { + "name": "@ln-maf/sftp", "version": "3.0.0-beta.0", "license": "Apache-2.0", "dependencies": { diff --git a/packages/mysql/package.json b/packages/mysql/package.json index 414265f..8964e69 100644 --- a/packages/mysql/package.json +++ b/packages/mysql/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "3.0.0-beta.1", + "version": "3.0.0-beta.2", "description": "Setup for sql on Node", "main": "index.js", "scripts": { @@ -17,7 +17,7 @@ "dependencies": { "@ln-maf/default-sql": "^3.0.0-beta.0", "keytar": "^7.9.0", - "mysql2": "^3.9.0" + "mysql2": "^3.9.7" }, "peerDependencies": { "@cucumber/cucumber": ">= 10.0.0",