diff --git a/CHANGELOG.md b/CHANGELOG.md index c0985bd..6e36497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +## [0.35.2](https://github.com/IBM/networking-node-sdk/compare/v0.35.1...v0.35.2) (2024-08-27) + + +### Bug Fixes + +* fixing vulnerability: server-side request forgery in axios ([#135](https://github.com/IBM/networking-node-sdk/issues/135)) ([b31748f](https://github.com/IBM/networking-node-sdk/commit/b31748f421e27fad05434bc8f82e97c54b90b86b)) + +## [0.35.1](https://github.com/IBM/networking-node-sdk/compare/v0.35.0...v0.35.1) (2024-08-27) + + +### Bug Fixes + +* Updating ibm-cloud-sdk-core npm package version to fix vulnerability ([#136](https://github.com/IBM/networking-node-sdk/issues/136)) ([b3fd3a3](https://github.com/IBM/networking-node-sdk/commit/b3fd3a3c89dc793a577cc4c44abc6ca9797241be)) + + +### Reverts + +* Revert "fix: Updating ibm-cloud-sdk-core npm package version to fix vulnerabi…" (#137) ([e1b193e](https://github.com/IBM/networking-node-sdk/commit/e1b193e07fdc80795740146b868d9a85c4733f15)), closes [#137](https://github.com/IBM/networking-node-sdk/issues/137) + # [0.35.0](https://github.com/IBM/networking-node-sdk/compare/v0.34.0...v0.35.0) (2024-06-12) diff --git a/package-lock.json b/package-lock.json index 090fafe..5b999ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,26 +1,27 @@ { "name": "ibm-networking-services", - "version": "0.35.0", + "version": "0.35.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ibm-networking-services", - "version": "0.35.0", + "version": "0.35.2", "license": "Apache-2.0", "dependencies": { "@types/extend": "^3.0.4", "@types/node": "^20.11.28", "extend": "^3.0.2", - "ibm-cloud-sdk-core": "^4.2.4" + "ibm-cloud-sdk-core": "^5.0.1" }, "devDependencies": { + "@ibm-cloud/sdk-test-utilities": "^1.0.0", "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", "ansi-regex": "^6.0.1", - "axios": "^1.6.7", + "axios": "^1.7.4", "dotenv": "^16.4.5", "eslint": "^8.57.0", "eslint-config-google": "^0.14.0", @@ -43,7 +44,7 @@ "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -72,6 +73,7 @@ "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" @@ -279,6 +281,7 @@ "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" } @@ -310,6 +313,7 @@ "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", @@ -707,6 +711,19 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, + "node_modules/@ibm-cloud/sdk-test-utilities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ibm-cloud/sdk-test-utilities/-/sdk-test-utilities-1.0.0.tgz", + "integrity": "sha512-/WxEqZvjIEucasGqrY70kHBbqV7O47Ygnf+XoGxPy/H/NqS6xBMZblkVq0vsmQM73a+vbA9oKhn+4uM09bKlxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "expect": "^29.7.0" + }, + "engines": { + "node": ">=18" + } + }, "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", @@ -758,32 +775,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -842,26 +833,6 @@ "node": ">=8" } }, - "node_modules/@jest/console/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -921,32 +892,6 @@ } } }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/@jest/core/node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1020,26 +965,6 @@ "node": ">=8" } }, - "node_modules/@jest/core/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", @@ -1088,33 +1013,107 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@jest/environment/node_modules/ansi-styles": { + "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -1129,7 +1128,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/environment/node_modules/chalk": { + "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -1145,7 +1144,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/environment/node_modules/color-convert": { + "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -1157,13 +1156,13 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/environment/node_modules/color-name": { + "node_modules/@jest/reporters/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 }, - "node_modules/@jest/environment/node_modules/has-flag": { + "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -1172,7 +1171,7 @@ "node": ">=8" } }, - "node_modules/@jest/environment/node_modules/supports-color": { + "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -1184,68 +1183,90 @@ "node": ">=8" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "dependencies": { - "jest-get-type": "^29.6.3" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/expect-utils/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/expect/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/expect/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/expect/node_modules/ansi-styles": { - "version": "4.3.0", + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, @@ -1259,7 +1280,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/expect/node_modules/chalk": { + "node_modules/@jest/transform/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -1275,7 +1296,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/expect/node_modules/color-convert": { + "node_modules/@jest/transform/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -1287,38 +1308,13 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/expect/node_modules/color-name": { + "node_modules/@jest/transform/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 }, - "node_modules/@jest/expect/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect/node_modules/has-flag": { + "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -1327,66 +1323,16 @@ "node": ">=8" } }, - "node_modules/@jest/expect/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect/node_modules/jest-get-type": { + "node_modules/@jest/transform/node_modules/jest-regex-util": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/expect/node_modules/supports-color": { + "node_modules/@jest/transform/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -1398,28 +1344,12 @@ "node": ">=8" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -1432,20 +1362,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/fake-timers/node_modules/ansi-styles": { + "node_modules/@jest/types/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1456,11 +1378,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/fake-timers/node_modules/chalk": { + "node_modules/@jest/types/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1472,11 +1395,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/fake-timers/node_modules/color-convert": { + "node_modules/@jest/types/node_modules/color-convert": { "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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1484,46 +1408,29 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/color-name": { + "node_modules/@jest/types/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 + "dev": true, + "license": "MIT" }, - "node_modules/@jest/fake-timers/node_modules/has-flag": { + "node_modules/@jest/types/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@jest/fake-timers/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/supports-color": { + "node_modules/@jest/types/node_modules/supports-color": { "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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1531,716 +1438,84 @@ "node": ">=8" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jest/globals/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 8" } }, - "node_modules/@jest/globals/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 8" } }, - "node_modules/@jest/globals/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/globals/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 - }, - "node_modules/@jest/globals/node_modules/has-flag": { - "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" - } - }, - "node_modules/@jest/globals/node_modules/supports-color": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/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 - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "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" - } - }, - "node_modules/@jest/reporters/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-result/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/test-result/node_modules/chalk": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/test-result/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/test-result/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 - }, - "node_modules/@jest/test-result/node_modules/has-flag": { - "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" - } - }, - "node_modules/@jest/test-result/node_modules/supports-color": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/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 - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "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" - } - }, - "node_modules/@jest/transform/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/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==" - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { "node": ">= 8" @@ -3097,14 +2372,6 @@ "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.4.tgz", "integrity": "sha512-ArMouDUTJEz1SQRpFsT2rIw7DeqICFv5aaVzLSIYMYQSLcwcGOfT3VyglQs/p7K3F7fT4zxr0NWxYZIdifD6dA==" }, - "node_modules/@types/file-type": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@types/file-type/-/file-type-5.2.2.tgz", - "integrity": "sha512-GWtM4fyqfb+bec4ocpo51/y4x0b83Je+iA6eV131LT9wL0//G+1UgwbkMg7w61ceOwR+KkZXK00z44jrrNljWg==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -3123,20 +2390,17 @@ "@types/node": "*" } }, - "node_modules/@types/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-EE11Sn7gzHEF9FGkYHTkFpPuDEamLudLvaGnBciNgH55fTYboWZHINR6MP8+CfCOjPJX08l4teRrjCY11gz1CA==" - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -3145,6 +2409,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } @@ -3183,7 +2448,8 @@ "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true }, "node_modules/@types/tough-cookie": { "version": "4.0.5", @@ -3191,9 +2457,11 @@ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" }, "node_modules/@types/yargs": { - "version": "15.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", - "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -3201,7 +2469,9 @@ "node_modules/@types/yargs-parser": { "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.2.0", @@ -3687,6 +2957,7 @@ "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" }, @@ -3749,11 +3020,12 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -3976,6 +3248,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -4066,6 +3339,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "engines": { "node": ">=6" } @@ -4094,6 +3368,7 @@ "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", @@ -4329,6 +3604,7 @@ "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" } @@ -4336,7 +3612,8 @@ "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==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/combined-stream": { "version": "1.0.8", @@ -4550,32 +3827,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/create-jest/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-jest/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4768,11 +4019,13 @@ } }, "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { @@ -4815,7 +4068,6 @@ "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "dev": true, "engines": { "node": ">=12" }, @@ -5078,6 +4330,7 @@ "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" } @@ -5569,51 +4822,22 @@ } }, "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=7.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expect/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==" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5733,6 +4957,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6041,7 +5266,8 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/graphemer": { "version": "1.4.0", @@ -6080,6 +5306,7 @@ "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" } @@ -6180,32 +5407,29 @@ } }, "node_modules/ibm-cloud-sdk-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-4.2.4.tgz", - "integrity": "sha512-g9UQc03xbLIGYNlxRKTjRgNDOY+WfgIBfMyulSCaspglLKNjox9UG9xgin0sek0u/Y8wb/XHPptuAebE6xQo5Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-5.0.1.tgz", + "integrity": "sha512-87Iv6RLP9RD2/Ae8tBgHyfYJjlUm6OtxZB7CydiVBOZJ6u9c+G02ShlZnATrjdMgz8KurIid4T7pw+bP988uiQ==", + "license": "Apache-2.0", "dependencies": { "@types/debug": "^4.1.12", - "@types/file-type": "~5.2.1", - "@types/isstream": "^0.1.0", "@types/node": "~10.14.19", "@types/tough-cookie": "^4.0.0", - "axios": "1.6.4", - "camelcase": "^5.3.1", + "axios": "1.7.4", + "camelcase": "^6.3.0", "debug": "^4.3.4", - "dotenv": "^6.2.0", - "expect": "^26.1.0", - "extend": "^3.0.2", + "dotenv": "^16.4.5", + "extend": "3.0.2", "file-type": "16.5.4", - "form-data": "^2.3.3", - "isstream": "~0.1.2", - "jsonwebtoken": "^9.0.0", - "lodash.isempty": "^4.4.0", - "mime-types": "^2.1.35", + "form-data": "4.0.0", + "isstream": "0.1.2", + "jsonwebtoken": "^9.0.2", + "mime-types": "2.1.35", "retry-axios": "^2.6.0", "tough-cookie": "^4.1.3" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/ibm-cloud-sdk-core/node_modules/@types/node": { @@ -6213,48 +5437,16 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.22.tgz", "integrity": "sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==" }, - "node_modules/ibm-cloud-sdk-core/node_modules/axios": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", - "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", - "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "node_modules/ibm-cloud-sdk-core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "node": ">=10" }, - "engines": { - "node": ">= 0.12" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ieee754": { @@ -6508,771 +5700,408 @@ "node_modules/is-core-module": { "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "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" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-inside": { - "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" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-primitive": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", - "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", - "dev": true, - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/issue-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.0.tgz", - "integrity": "sha512-jgAw78HO3gs9UrKqJNQvfDj9Ouy8Mhu40fbEJ8yXff4MW8+/Fcn9iFjyWUQ6SKbX8ipPk3X5A3AyfYHRu6uVLw==", - "dev": true, - "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - } - }, - "node_modules/istanbul-lib-coverage": { - "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" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "hasown": "^2.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-instrument/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-fullwidth-code-point": { + "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, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">= 0.6.0" + "node": ">=0.12.0" } }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/is-path-inside": { + "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, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "isobject": "^3.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/is-primitive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", + "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "text-extensions": "^2.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/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==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, - "node_modules/jest-circus/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/issue-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.0.tgz", + "integrity": "sha512-jgAw78HO3gs9UrKqJNQvfDj9Ouy8Mhu40fbEJ8yXff4MW8+/Fcn9iFjyWUQ6SKbX8ipPk3X5A3AyfYHRu6uVLw==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.17 || >=20.6.1" } }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/istanbul-lib-coverage": { + "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, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" + "lru-cache": "^6.0.0" }, "bin": { - "jest": "bin/jest.js" + "semver": "bin/semver.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=10" } }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/istanbul-lib-instrument/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=8" } }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "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": { - "color-convert": "^2.0.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/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 - }, - "node_modules/jest-cli/node_modules/has-flag": { - "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" } }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.6.0" } }, - "node_modules/jest-config": { + "node_modules/jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", + "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { + "node-notifier": { "optional": true } } }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-config/node_modules/ansi-styles": { + "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -7287,7 +6116,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/chalk": { + "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -7303,7 +6132,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/color-convert": { + "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -7315,13 +6144,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-config/node_modules/color-name": { + "node_modules/jest-circus/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 }, - "node_modules/jest-config/node_modules/has-flag": { + "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7330,25 +6159,7 @@ "node": ">=8" } }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/supports-color": { + "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7360,32 +6171,44 @@ "node": ">=8" } }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-diff/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-diff/node_modules/ansi-styles": { + "node_modules/jest-cli/node_modules/ansi-styles": { "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" }, @@ -7396,10 +6219,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-diff/node_modules/chalk": { + "node_modules/jest-cli/node_modules/chalk": { "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" @@ -7411,10 +6235,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/color-convert": { + "node_modules/jest-cli/node_modules/color-convert": { "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" }, @@ -7422,42 +6247,26 @@ "node": ">=7.0.0" } }, - "node_modules/jest-diff/node_modules/color-name": { + "node_modules/jest-cli/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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/jest-diff/node_modules/has-flag": { + "node_modules/jest-cli/node_modules/has-flag": { "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" } }, - "node_modules/jest-diff/node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/jest-diff/node_modules/supports-color": { + "node_modules/jest-cli/node_modules/supports-color": { "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" }, @@ -7465,61 +6274,52 @@ "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { + "node_modules/jest-config": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + }, + "peerDependencies": { "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "ts-node": ">=9.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/jest-each/node_modules/ansi-styles": { + "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -7534,7 +6334,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/chalk": { + "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -7550,7 +6350,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/color-convert": { + "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -7562,13 +6362,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-each/node_modules/color-name": { + "node_modules/jest-config/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 }, - "node_modules/jest-each/node_modules/has-flag": { + "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7577,16 +6377,16 @@ "node": ">=8" } }, - "node_modules/jest-each/node_modules/jest-get-type": { + "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each/node_modules/supports-color": { + "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7598,54 +6398,28 @@ "node": ">=8" } }, - "node_modules/jest-environment-node": { + "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-node/node_modules/ansi-styles": { + "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7656,11 +6430,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-node/node_modules/chalk": { + "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7672,11 +6447,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-node/node_modules/color-convert": { + "node_modules/jest-diff/node_modules/color-convert": { "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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7684,26 +6460,29 @@ "node": ">=7.0.0" } }, - "node_modules/jest-environment-node/node_modules/color-name": { + "node_modules/jest-diff/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 + "dev": true, + "license": "MIT" }, - "node_modules/jest-environment-node/node_modules/has-flag": { + "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-environment-node/node_modules/supports-color": { + "node_modules/jest-diff/node_modules/supports-color": { "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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7711,66 +6490,35 @@ "node": ">=8" } }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-haste-map": { + "node_modules/jest-docblock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "detect-newline": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" } }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-haste-map/node_modules/ansi-styles": { + "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -7785,7 +6533,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-haste-map/node_modules/chalk": { + "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -7801,7 +6549,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-haste-map/node_modules/color-convert": { + "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -7813,13 +6561,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-haste-map/node_modules/color-name": { + "node_modules/jest-each/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 }, - "node_modules/jest-haste-map/node_modules/has-flag": { + "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7828,16 +6576,7 @@ "node": ">=8" } }, - "node_modules/jest-haste-map/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/supports-color": { + "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7849,164 +6588,102 @@ "node": ">=8" } }, - "node_modules/jest-leak-detector": { + "node_modules/jest-environment-node": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "node_modules/jest-get-type": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/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==" - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, + "node_modules/jest-haste-map/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-message-util/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8017,10 +6694,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/chalk": { + "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8032,10 +6711,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { + "node_modules/jest-matcher-utils/node_modules/color-convert": { "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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8043,42 +6724,29 @@ "node": ">=7.0.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { + "node_modules/jest-matcher-utils/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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, - "node_modules/jest-message-util/node_modules/has-flag": { + "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/jest-message-util/node_modules/supports-color": { + "node_modules/jest-matcher-utils/node_modules/supports-color": { "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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8086,51 +6754,33 @@ "node": ">=8" } }, - "node_modules/jest-mock": { + "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, + "license": "MIT", "dependencies": { + "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-mock/node_modules/ansi-styles": { + "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8141,11 +6791,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-mock/node_modules/chalk": { + "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8157,11 +6808,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-mock/node_modules/color-convert": { + "node_modules/jest-message-util/node_modules/color-convert": { "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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8169,26 +6821,29 @@ "node": ">=7.0.0" } }, - "node_modules/jest-mock/node_modules/color-name": { + "node_modules/jest-message-util/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 + "dev": true, + "license": "MIT" }, - "node_modules/jest-mock/node_modules/has-flag": { + "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-mock/node_modules/supports-color": { + "node_modules/jest-message-util/node_modules/supports-color": { "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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8196,6 +6851,20 @@ "node": ">=8" } }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", @@ -8213,14 +6882,6 @@ } } }, - "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/jest-resolve": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", @@ -8365,32 +7026,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8449,26 +7084,6 @@ "node": ">=8" } }, - "node_modules/jest-runner/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8514,32 +7129,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8598,26 +7187,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-runtime/node_modules/jest-regex-util": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", @@ -8670,32 +7239,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8732,110 +7275,26 @@ "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/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 - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "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" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/jest-snapshot/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 + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, "node_modules/jest-snapshot/node_modules/lru-cache": { @@ -8900,32 +7359,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -9013,32 +7446,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/jest-validate/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -9109,15 +7516,6 @@ "node": ">=8" } }, - "node_modules/jest-validate/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -9141,203 +7539,30 @@ "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watcher/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/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 - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "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" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "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" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest/node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest/node_modules/ansi-styles": { + "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -9352,7 +7577,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest/node_modules/chalk": { + "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -9368,7 +7593,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest/node_modules/color-convert": { + "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -9380,13 +7605,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest/node_modules/color-name": { + "node_modules/jest-watcher/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 }, - "node_modules/jest/node_modules/has-flag": { + "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -9395,7 +7620,7 @@ "node": ">=8" } }, - "node_modules/jest/node_modules/supports-color": { + "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -9407,10 +7632,62 @@ "node": ">=8" } }, + "node_modules/jest-watcher/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "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" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "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==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", @@ -9740,11 +8017,6 @@ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" }, - "node_modules/lodash.isempty": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", - "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==" - }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", @@ -9926,11 +8198,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -10205,9 +8478,9 @@ } }, "node_modules/npm": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.0.tgz", - "integrity": "sha512-Ejxwvfh9YnWVU2yA5FzoYLTW52vxHCz+MHrOFg9Cc8IFgF/6f5AGPAvb5WTay5DIUP1NIfN3VBZ0cLlGO0Ys+A==", + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.2.tgz", + "integrity": "sha512-x/AIjFIKRllrhcb48dqUNAAZl0ig9+qMuN91RpZo3Cb2+zuibfh+KISl6+kVVyktDz230JKc208UkQwwMqyB+w==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -10216,6 +8489,7 @@ "@npmcli/map-workspaces", "@npmcli/package-json", "@npmcli/promise-spawn", + "@npmcli/redact", "@npmcli/run-script", "@sigstore/tuf", "abbrev", @@ -10224,8 +8498,6 @@ "chalk", "ci-info", "cli-columns", - "cli-table3", - "columnify", "fastest-levenshtein", "fs-minipass", "glob", @@ -10261,7 +8533,6 @@ "npm-profile", "npm-registry-fetch", "npm-user-validate", - "npmlog", "p-map", "pacote", "parse-conflict-json", @@ -10281,6 +8552,7 @@ "write-file-atomic" ], "dev": true, + "license": "Artistic-2.0", "workspaces": [ "docs", "smoke-tests", @@ -10290,73 +8562,71 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.2.1", - "@npmcli/config": "^8.0.2", - "@npmcli/fs": "^3.1.0", - "@npmcli/map-workspaces": "^3.0.4", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.1", - "@npmcli/run-script": "^7.0.4", - "@sigstore/tuf": "^2.3.1", + "@npmcli/arborist": "^7.5.4", + "@npmcli/config": "^8.3.4", + "@npmcli/fs": "^3.1.1", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.2.0", + "@npmcli/promise-spawn": "^7.0.2", + "@npmcli/redact": "^2.0.1", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.4", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.2", + "cacache": "^18.0.3", "chalk": "^5.3.0", "ci-info": "^4.0.0", "cli-columns": "^4.0.0", - "cli-table3": "^0.6.3", - "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.3.10", + "glob": "^10.4.2", "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.1", - "ini": "^4.1.1", - "init-package-json": "^6.0.0", - "is-cidr": "^5.0.3", - "json-parse-even-better-errors": "^3.0.1", - "libnpmaccess": "^8.0.1", - "libnpmdiff": "^6.0.3", - "libnpmexec": "^7.0.4", - "libnpmfund": "^5.0.1", - "libnpmhook": "^10.0.0", - "libnpmorg": "^6.0.1", - "libnpmpack": "^6.0.3", - "libnpmpublish": "^9.0.2", - "libnpmsearch": "^7.0.0", - "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.1", - "make-fetch-happen": "^13.0.0", - "minimatch": "^9.0.3", - "minipass": "^7.0.4", + "hosted-git-info": "^7.0.2", + "ini": "^4.1.3", + "init-package-json": "^6.0.3", + "is-cidr": "^5.1.0", + "json-parse-even-better-errors": "^3.0.2", + "libnpmaccess": "^8.0.6", + "libnpmdiff": "^6.1.4", + "libnpmexec": "^8.1.3", + "libnpmfund": "^5.0.12", + "libnpmhook": "^10.0.5", + "libnpmorg": "^6.0.6", + "libnpmpack": "^7.0.4", + "libnpmpublish": "^9.0.9", + "libnpmsearch": "^7.0.6", + "libnpmteam": "^6.0.5", + "libnpmversion": "^6.0.3", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.5", + "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^10.0.1", - "nopt": "^7.2.0", - "normalize-package-data": "^6.0.0", + "node-gyp": "^10.1.0", + "nopt": "^7.2.1", + "normalize-package-data": "^6.0.2", "npm-audit-report": "^5.0.0", "npm-install-checks": "^6.3.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.1.0", - "npm-user-validate": "^2.0.0", - "npmlog": "^7.0.1", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.1.0", + "npm-profile": "^10.0.0", + "npm-registry-fetch": "^17.1.0", + "npm-user-validate": "^2.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.6", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.1", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", "qrcode-terminal": "^0.12.0", - "read": "^2.1.0", - "semver": "^7.6.0", - "spdx-expression-parse": "^3.0.1", - "ssri": "^10.0.5", + "read": "^3.0.1", + "semver": "^7.6.2", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.6", "supports-color": "^9.4.0", - "tar": "^6.2.0", + "tar": "^6.2.1", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.0", + "validate-npm-package-name": "^5.0.1", "which": "^4.0.0", "write-file-atomic": "^5.0.1" }, @@ -10380,16 +8650,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", "dev": true, @@ -10464,7 +8724,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.2.1", + "version": "2.2.2", "dev": true, "inBundle": true, "license": "ISC", @@ -10473,49 +8733,51 @@ "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.3" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.4.0", + "version": "7.5.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/metavuln-calculator": "^7.1.1", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", + "@npmcli/package-json": "^5.1.0", "@npmcli/query": "^3.1.0", - "@npmcli/run-script": "^7.0.2", - "bin-links": "^4.0.1", - "cacache": "^18.0.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.1", - "json-parse-even-better-errors": "^3.0.0", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.0", - "nopt": "^7.0.0", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^10.0.5", + "ssri": "^10.0.6", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, @@ -10527,17 +8789,17 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.2.0", + "version": "8.3.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", "ci-info": "^4.0.0", - "ini": "^4.1.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "read-package-json-fast": "^3.0.2", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", "semver": "^7.3.5", "walk-up-path": "^3.0.1" }, @@ -10545,35 +8807,8 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.0", + "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC", @@ -10585,15 +8820,16 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.4", + "version": "5.0.8", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", @@ -10604,7 +8840,7 @@ } }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", + "version": "2.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10613,14 +8849,14 @@ "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", + "version": "3.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -10635,14 +8871,15 @@ } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "7.0.0", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", - "pacote": "^17.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5" }, "engines": { @@ -10668,7 +8905,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.0.0", + "version": "5.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10678,7 +8915,7 @@ "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", "normalize-package-data": "^6.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "semver": "^7.5.3" }, "engines": { @@ -10686,7 +8923,7 @@ } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -10709,8 +8946,17 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.4", + "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10719,6 +8965,7 @@ "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", "which": "^4.0.0" }, "engines": { @@ -10736,19 +8983,19 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.2.0", + "version": "2.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/core": { - "version": "1.0.0", + "version": "1.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -10757,51 +9004,53 @@ } }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.3.0", + "version": "0.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.2.3", + "version": "2.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.2.0", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.0", - "make-fetch-happen": "^13.0.0" + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.3.1", + "version": "2.3.4", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", - "tuf-js": "^2.2.0" + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/verify": { - "version": "1.1.0", + "version": "1.2.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.2.0", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.0" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -10817,13 +9066,13 @@ } }, "node_modules/npm/node_modules/@tufjs/models": { - "version": "2.0.0", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" + "minimatch": "^9.0.4" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -10839,7 +9088,7 @@ } }, "node_modules/npm/node_modules/agent-base": { - "version": "7.1.0", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "MIT", @@ -10896,15 +9145,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", "dev": true, @@ -10912,7 +9152,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.3", + "version": "4.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -10927,12 +9167,15 @@ } }, "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/brace-expansion": { @@ -10944,17 +9187,8 @@ "balanced-match": "^1.0.0" } }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.2", + "version": "18.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -11013,7 +9247,7 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "4.0.3", + "version": "4.1.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -11046,32 +9280,8 @@ "node": ">= 10" } }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.2", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -11097,40 +9307,12 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", "dev": true, "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/cross-spawn": { "version": "7.0.3", "dev": true, @@ -11173,7 +9355,7 @@ } }, "node_modules/npm/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.5", "dev": true, "inBundle": true, "license": "MIT", @@ -11192,20 +9374,8 @@ "node_modules/npm/node_modules/debug/node_modules/ms": { "version": "2.1.2", "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "inBundle": true, + "license": "MIT" }, "node_modules/npm/node_modules/diff": { "version": "5.2.0", @@ -11269,7 +9439,7 @@ } }, "node_modules/npm/node_modules/foreground-child": { - "version": "3.1.1", + "version": "3.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -11296,51 +9466,24 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm/node_modules/gauge": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/glob": { - "version": "10.3.10", + "version": "10.4.2", "dev": true, "inBundle": true, "license": "ISC", "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" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -11352,26 +9495,8 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hasown": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -11402,7 +9527,7 @@ } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.4", + "version": "7.0.5", "dev": true, "inBundle": true, "license": "MIT", @@ -11428,7 +9553,7 @@ } }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.4", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -11458,7 +9583,7 @@ } }, "node_modules/npm/node_modules/ini": { - "version": "4.1.1", + "version": "4.1.3", "dev": true, "inBundle": true, "license": "ISC", @@ -11467,15 +9592,15 @@ } }, "node_modules/npm/node_modules/init-package-json": { - "version": "6.0.0", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@npmcli/package-json": "^5.0.0", "npm-package-arg": "^11.0.0", "promzard": "^1.0.0", - "read": "^2.0.0", - "read-package-json": "^7.0.0", + "read": "^3.0.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^5.0.0" @@ -11497,12 +9622,6 @@ "node": ">= 12" } }, - "node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause" - }, "node_modules/npm/node_modules/ip-regex": { "version": "5.0.0", "dev": true, @@ -11516,29 +9635,17 @@ } }, "node_modules/npm/node_modules/is-cidr": { - "version": "5.0.3", + "version": "5.1.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "4.0.3" + "cidr-regex": "^4.1.1" }, "engines": { "node": ">=14" } }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.13.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -11561,7 +9668,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { - "version": "2.3.6", + "version": "3.4.0", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -11585,7 +9692,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", + "version": "3.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -11624,52 +9731,50 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.2", + "version": "8.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^11.0.1", - "npm-registry-fetch": "^16.0.0" + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.7", + "version": "6.1.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.2", - "binary-extensions": "^2.2.0", + "@npmcli/arborist": "^7.5.4", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", "diff": "^5.1.0", - "minimatch": "^9.0.0", - "npm-package-arg": "^11.0.1", - "pacote": "^17.0.4", - "tar": "^6.2.0" + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "tar": "^6.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.8", + "version": "8.1.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/run-script": "^7.0.2", + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", "ci-info": "^4.0.0", - "npm-package-arg": "^11.0.1", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", - "proc-log": "^3.0.0", - "read": "^2.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "proc-log": "^4.2.0", + "read": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "walk-up-path": "^3.0.1" @@ -11679,112 +9784,112 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.5", + "version": "5.0.12", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.1" + "@npmcli/arborist": "^7.5.4" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.1", + "version": "10.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.2", + "version": "6.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.7", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/run-script": "^7.0.2", - "npm-package-arg": "^11.0.1", - "pacote": "^17.0.4" + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.4", + "version": "9.0.9", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "ci-info": "^4.0.0", - "normalize-package-data": "^6.0.0", - "npm-package-arg": "^11.0.1", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", "semver": "^7.3.7", "sigstore": "^2.2.0", - "ssri": "^10.0.5" + "ssri": "^10.0.6" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.1", + "version": "7.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^16.0.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.1", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.2", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.2", - "json-parse-even-better-errors": "^3.0.0", - "proc-log": "^3.0.0", + "@npmcli/git": "^5.0.7", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.2", + "proc-log": "^4.2.0", "semver": "^7.3.7" }, "engines": { @@ -11792,7 +9897,7 @@ } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.2.0", + "version": "10.2.2", "dev": true, "inBundle": true, "license": "ISC", @@ -11801,7 +9906,7 @@ } }, "node_modules/npm/node_modules/make-fetch-happen": { - "version": "13.0.0", + "version": "13.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -11815,6 +9920,7 @@ "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", + "proc-log": "^4.2.0", "promise-retry": "^2.0.1", "ssri": "^10.0.0" }, @@ -11823,7 +9929,7 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -11838,7 +9944,7 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "7.0.4", + "version": "7.1.2", "dev": true, "inBundle": true, "license": "ISC", @@ -11859,7 +9965,7 @@ } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.4", + "version": "3.0.5", "dev": true, "inBundle": true, "license": "MIT", @@ -11899,28 +10005,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "dev": true, @@ -12031,7 +10115,7 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "10.0.1", + "version": "10.1.0", "dev": true, "inBundle": true, "license": "MIT", @@ -12054,8 +10138,17 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/nopt": { - "version": "7.2.0", + "version": "7.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -12070,13 +10163,12 @@ } }, "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.0", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, @@ -12094,7 +10186,7 @@ } }, "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -12127,13 +10219,13 @@ } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.1", + "version": "11.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" }, @@ -12154,7 +10246,7 @@ } }, "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.0.0", + "version": "9.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -12169,38 +10261,39 @@ } }, "node_modules/npm/node_modules/npm-profile": { - "version": "9.0.0", + "version": "10.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0" + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=18.0.0" } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "16.1.0", + "version": "17.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", - "proc-log": "^3.0.0" + "proc-log": "^4.0.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.0", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -12208,21 +10301,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npmlog": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", "dev": true, @@ -12238,33 +10316,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0" + }, "node_modules/npm/node_modules/pacote": { - "version": "17.0.6", + "version": "18.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", + "@npmcli/run-script": "^8.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "lib/bin.js" + "pacote": "bin/index.js" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -12294,23 +10377,23 @@ } }, "node_modules/npm/node_modules/path-scurry": { - "version": "1.10.1", + "version": "1.11.1", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.15", + "version": "6.1.0", "dev": true, "inBundle": true, "license": "MIT", @@ -12323,7 +10406,16 @@ } }, "node_modules/npm/node_modules/proc-log": { - "version": "3.0.0", + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -12369,12 +10461,12 @@ } }, "node_modules/npm/node_modules/promzard": { - "version": "1.0.0", + "version": "1.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "read": "^2.0.0" + "read": "^3.0.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -12389,12 +10481,12 @@ } }, "node_modules/npm/node_modules/read": { - "version": "2.1.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "mute-stream": "~1.0.0" + "mute-stream": "^1.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -12409,21 +10501,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/read-package-json": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", "dev": true, @@ -12454,13 +10531,10 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.6.0", + "version": "7.6.2", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -12468,24 +10542,6 @@ "node": ">=10" } }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", "dev": true, @@ -12520,17 +10576,17 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "2.2.2", + "version": "2.3.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.2.0", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.0", - "@sigstore/sign": "^2.2.3", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.1.0" + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -12547,7 +10603,7 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.8.0", + "version": "2.8.3", "dev": true, "inBundle": true, "license": "MIT", @@ -12556,19 +10612,19 @@ "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 16.0.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.2", + "version": "8.0.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" @@ -12584,6 +10640,16 @@ "spdx-license-ids": "^3.0.0" } }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", "dev": true, @@ -12591,7 +10657,7 @@ "license": "CC-BY-3.0" }, "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", @@ -12601,13 +10667,19 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.17", + "version": "3.0.18", "dev": true, "inBundle": true, "license": "CC0-1.0" }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, "node_modules/npm/node_modules/ssri": { - "version": "10.0.5", + "version": "10.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -12685,7 +10757,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "6.2.0", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -12756,14 +10828,14 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "2.2.0", + "version": "2.2.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.0", + "@tufjs/models": "2.0.1", "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" + "make-fetch-happen": "^13.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -12809,14 +10881,21 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.0", + "version": "5.0.1", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -12827,15 +10906,6 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/npm/node_modules/which": { "version": "4.0.0", "dev": true, @@ -12860,15 +10930,6 @@ "node": ">=16" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", "dev": true, @@ -13264,6 +11325,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -14362,6 +12424,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "engines": { "node": ">=8" } @@ -14442,6 +12505,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -14453,6 +12517,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, "engines": { "node": ">=8" } @@ -14603,6 +12668,7 @@ "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" }, @@ -14847,6 +12913,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, diff --git a/package.json b/package.json index de97d30..fc65a36 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ibm-networking-services", - "version": "0.35.0", + "version": "0.35.2", "description": "Node.js client library for IBM Cloud Networking Services", "repository": { "type": "git", @@ -32,21 +32,22 @@ }, "license": "Apache-2.0", "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, "dependencies": { "@types/extend": "^3.0.4", "@types/node": "^20.11.28", "extend": "^3.0.2", - "ibm-cloud-sdk-core": "^4.2.4" + "ibm-cloud-sdk-core": "^5.0.1" }, "devDependencies": { + "@ibm-cloud/sdk-test-utilities": "^1.0.0", "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", "ansi-regex": "^6.0.1", - "axios": "^1.6.7", + "axios": "^1.7.4", "dotenv": "^16.4.5", "eslint": "^8.57.0", "eslint-config-google": "^0.14.0", diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..5db72dd --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended" + ] +} diff --git a/test/unit/cis/alerts.v1.test.js b/test/unit/cis/alerts.v1.test.js index c374329..47412f7 100644 --- a/test/unit/cis/alerts.v1.test.js +++ b/test/unit/cis/alerts.v1.test.js @@ -16,7 +16,6 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const core = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = core; const AlertsV1 = require('../../../dist/cis/alertsv1/v1'); @@ -27,7 +26,8 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); + const alertsServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/authenticated-origin-pull-api.v1.test.js b/test/unit/cis/authenticated-origin-pull-api.v1.test.js index cfce4a1..1011a1d 100644 --- a/test/unit/cis/authenticated-origin-pull-api.v1.test.js +++ b/test/unit/cis/authenticated-origin-pull-api.v1.test.js @@ -16,7 +16,6 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const core = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = core; const AuthenticatedOriginPullApiV1 = require('../../../dist/cis/authenticated-origin-pull-apiv1/v1'); @@ -28,7 +27,7 @@ const { expectToBePromise, checkUserHeader, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const authenticatedOriginPullApiServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/caching-api.v1.test.js b/test/unit/cis/caching-api.v1.test.js index 493ab7c..a66ff81 100644 --- a/test/unit/cis/caching-api.v1.test.js +++ b/test/unit/cis/caching-api.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/cis-ip-api.v1.test.js b/test/unit/cis/cis-ip-api.v1.test.js index 1b39621..8e88df3 100644 --- a/test/unit/cis/cis-ip-api.v1.test.js +++ b/test/unit/cis/cis-ip-api.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/custom-pages.v1.test.js b/test/unit/cis/custom-pages.v1.test.js index b70b9da..c524213 100644 --- a/test/unit/cis/custom-pages.v1.test.js +++ b/test/unit/cis/custom-pages.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/dns-record-bulk.v1.test.js b/test/unit/cis/dns-record-bulk.v1.test.js index 8b51e47..b987836 100644 --- a/test/unit/cis/dns-record-bulk.v1.test.js +++ b/test/unit/cis/dns-record-bulk.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/dns-records.v1.test.js b/test/unit/cis/dns-records.v1.test.js index cd77614..3f40be0 100644 --- a/test/unit/cis/dns-records.v1.test.js +++ b/test/unit/cis/dns-records.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/edge-functions-api.v1.test.js b/test/unit/cis/edge-functions-api.v1.test.js index bb0ed9d..8c005e2 100644 --- a/test/unit/cis/edge-functions-api.v1.test.js +++ b/test/unit/cis/edge-functions-api.v1.test.js @@ -28,7 +28,7 @@ const { expectToBePromise, checkUserHeader, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/filters.v1.test.js b/test/unit/cis/filters.v1.test.js index d0700f4..759313c 100644 --- a/test/unit/cis/filters.v1.test.js +++ b/test/unit/cis/filters.v1.test.js @@ -16,7 +16,6 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const core = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = core; const FiltersV1 = require('../../../dist/cis/filtersv1/v1'); @@ -27,7 +26,7 @@ const { checkMediaHeaders, expectToBePromise, checkUserHeader, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const filtersServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/firewall-access-rules.v1.test.js b/test/unit/cis/firewall-access-rules.v1.test.js index 25fc39b..17d8f1c 100644 --- a/test/unit/cis/firewall-access-rules.v1.test.js +++ b/test/unit/cis/firewall-access-rules.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/firewall-api.v1.test.js b/test/unit/cis/firewall-api.v1.test.js index 1ecd444..7ce6b38 100644 --- a/test/unit/cis/firewall-api.v1.test.js +++ b/test/unit/cis/firewall-api.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/firewall-event-analytics-api.v1.test.js b/test/unit/cis/firewall-event-analytics-api.v1.test.js index c04cd94..cea8af9 100644 --- a/test/unit/cis/firewall-event-analytics-api.v1.test.js +++ b/test/unit/cis/firewall-event-analytics-api.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/firewall-rules.v1.test.js b/test/unit/cis/firewall-rules.v1.test.js index aece548..3aafe69 100644 --- a/test/unit/cis/firewall-rules.v1.test.js +++ b/test/unit/cis/firewall-rules.v1.test.js @@ -16,7 +16,6 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const core = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = core; const FirewallRulesV1 = require('../../../dist/cis/firewallrulesv1/v1'); @@ -27,7 +26,7 @@ const { checkMediaHeaders, expectToBePromise, checkUserHeader, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const firewallRulesServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/global-load-balancer-events.v1.test.js b/test/unit/cis/global-load-balancer-events.v1.test.js index 75abfbe..71777c8 100644 --- a/test/unit/cis/global-load-balancer-events.v1.test.js +++ b/test/unit/cis/global-load-balancer-events.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/global-load-balancer-monitor.v1.test.js b/test/unit/cis/global-load-balancer-monitor.v1.test.js index 4b0bce1..4c2b282 100644 --- a/test/unit/cis/global-load-balancer-monitor.v1.test.js +++ b/test/unit/cis/global-load-balancer-monitor.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/global-load-balancer-pools.v0.test.js b/test/unit/cis/global-load-balancer-pools.v0.test.js index 02145f0..3b4d74d 100644 --- a/test/unit/cis/global-load-balancer-pools.v0.test.js +++ b/test/unit/cis/global-load-balancer-pools.v0.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/global-load-balancer.v1.test.js b/test/unit/cis/global-load-balancer.v1.test.js index 85bfadf..af28f8f 100644 --- a/test/unit/cis/global-load-balancer.v1.test.js +++ b/test/unit/cis/global-load-balancer.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/logpush-jobs-api.v1.test.js b/test/unit/cis/logpush-jobs-api.v1.test.js index 65bf94a..824bdd5 100644 --- a/test/unit/cis/logpush-jobs-api.v1.test.js +++ b/test/unit/cis/logpush-jobs-api.v1.test.js @@ -16,7 +16,6 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const core = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = core; const LogpushJobsApiV1 = require('../../../dist/cis/logpushjobsapiv1/v1'); @@ -27,7 +26,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const logpushJobsApiServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/mtls.v1.test.js b/test/unit/cis/mtls.v1.test.js index 2e42e6f..8ce46b6 100644 --- a/test/unit/cis/mtls.v1.test.js +++ b/test/unit/cis/mtls.v1.test.js @@ -16,7 +16,6 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const core = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = core; const MtlsV1 = require('../../../dist/cis/mtlsv1/v1'); @@ -27,7 +26,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const mtlsServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/page-rule-api.v1.test.js b/test/unit/cis/page-rule-api.v1.test.js index 1e6da9d..2e02094 100644 --- a/test/unit/cis/page-rule-api.v1.test.js +++ b/test/unit/cis/page-rule-api.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/range-applications.v1.test.js b/test/unit/cis/range-applications.v1.test.js index 0a284b8..2c37132 100644 --- a/test/unit/cis/range-applications.v1.test.js +++ b/test/unit/cis/range-applications.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/routing.v1.test.js b/test/unit/cis/routing.v1.test.js index a77788d..6714ba2 100644 --- a/test/unit/cis/routing.v1.test.js +++ b/test/unit/cis/routing.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/security-events-api.v1.test.js b/test/unit/cis/security-events-api.v1.test.js index 63befe9..fe82e00 100644 --- a/test/unit/cis/security-events-api.v1.test.js +++ b/test/unit/cis/security-events-api.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/ssl-certificate-api.v1.test.js b/test/unit/cis/ssl-certificate-api.v1.test.js index 7fd0de4..cff2407 100644 --- a/test/unit/cis/ssl-certificate-api.v1.test.js +++ b/test/unit/cis/ssl-certificate-api.v1.test.js @@ -16,8 +16,8 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const sdkCorePackage = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = sdkCorePackage; + const SslCertificateApiV1 = require('../../../dist/cis/ssl-certificate-api/v1'); const { @@ -27,7 +27,7 @@ const { expectToBePromise, checkUserHeader, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const sslCertificateApiServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/user-agent-blocking-rules.v1.test.js b/test/unit/cis/user-agent-blocking-rules.v1.test.js index d6e7247..7d07e52 100644 --- a/test/unit/cis/user-agent-blocking-rules.v1.test.js +++ b/test/unit/cis/user-agent-blocking-rules.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/waf-api.v1.test.js b/test/unit/cis/waf-api.v1.test.js index 9f6ec9b..120dfc9 100644 --- a/test/unit/cis/waf-api.v1.test.js +++ b/test/unit/cis/waf-api.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/waf-rule-groups-api.v1.test.js b/test/unit/cis/waf-rule-groups-api.v1.test.js index 54e6797..b9cb425 100644 --- a/test/unit/cis/waf-rule-groups-api.v1.test.js +++ b/test/unit/cis/waf-rule-groups-api.v1.test.js @@ -21,7 +21,7 @@ const { NoAuthAuthenticator, unitTestUtils } = core; const WafRuleGroupsApiV1 = require('../../../dist/cis/wafrulegroupsapiv1/v1'); -const { getOptions, checkUrlAndMethod, checkMediaHeaders, expectToBePromise } = unitTestUtils; +const { getOptions, checkUrlAndMethod, checkMediaHeaders, expectToBePromise } = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/waf-rule-packages-api.v1.test.js b/test/unit/cis/waf-rule-packages-api.v1.test.js index 77fec50..2d4f390 100644 --- a/test/unit/cis/waf-rule-packages-api.v1.test.js +++ b/test/unit/cis/waf-rule-packages-api.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/waf-rules-api.v1.test.js b/test/unit/cis/waf-rules-api.v1.test.js index 21cb99f..3756103 100644 --- a/test/unit/cis/waf-rules-api.v1.test.js +++ b/test/unit/cis/waf-rules-api.v1.test.js @@ -21,7 +21,7 @@ const { NoAuthAuthenticator, unitTestUtils } = core; const WafRulesApiV1 = require('../../../dist/cis/wafrulesapiv1/v1'); -const { getOptions, checkUrlAndMethod, checkMediaHeaders, expectToBePromise } = unitTestUtils; +const { getOptions, checkUrlAndMethod, checkMediaHeaders, expectToBePromise } = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/webhooks.v1.test.js b/test/unit/cis/webhooks.v1.test.js index 76a6a7d..3e4d15b 100644 --- a/test/unit/cis/webhooks.v1.test.js +++ b/test/unit/cis/webhooks.v1.test.js @@ -16,7 +16,6 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const core = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = core; const WebhooksV1 = require('../../../dist/cis/webhooksv1/v1'); @@ -27,7 +26,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const webhooksServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/zone-firewall-access-rules.v1.test.js b/test/unit/cis/zone-firewall-access-rules.v1.test.js index 04b8b1d..6d426a0 100644 --- a/test/unit/cis/zone-firewall-access-rules.v1.test.js +++ b/test/unit/cis/zone-firewall-access-rules.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/zone-lockdown.v1.test.js b/test/unit/cis/zone-lockdown.v1.test.js index 71a6b73..44b59f2 100644 --- a/test/unit/cis/zone-lockdown.v1.test.js +++ b/test/unit/cis/zone-lockdown.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/zone-rate-limits.v1.test.js b/test/unit/cis/zone-rate-limits.v1.test.js index 1ee5e5b..0e79c6b 100644 --- a/test/unit/cis/zone-rate-limits.v1.test.js +++ b/test/unit/cis/zone-rate-limits.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/zones-settings.v1.test.js b/test/unit/cis/zones-settings.v1.test.js index c2ee70c..d967d69 100644 --- a/test/unit/cis/zones-settings.v1.test.js +++ b/test/unit/cis/zones-settings.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/cis/zones.v1.test.js b/test/unit/cis/zones.v1.test.js index d454515..c5a5b3d 100644 --- a/test/unit/cis/zones.v1.test.js +++ b/test/unit/cis/zones.v1.test.js @@ -27,7 +27,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const service = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/direct-link-provider.v2.test.js b/test/unit/direct-link-provider.v2.test.js index 6160da6..21651e5 100644 --- a/test/unit/direct-link-provider.v2.test.js +++ b/test/unit/direct-link-provider.v2.test.js @@ -20,8 +20,8 @@ const nock = require('nock'); // need to import the whole package to mock getAuthenticatorFromEnvironment const sdkCorePackage = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = sdkCorePackage; + const DirectLinkProviderV2 = require('../../dist/direct-link-provider/v2'); const { @@ -30,7 +30,7 @@ const { checkMediaHeaders, expectToBePromise, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const directLinkProviderServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/direct-link.v1.test.js b/test/unit/direct-link.v1.test.js index 34bb292..7a52007 100644 --- a/test/unit/direct-link.v1.test.js +++ b/test/unit/direct-link.v1.test.js @@ -20,8 +20,8 @@ const nock = require('nock'); // need to import the whole package to mock getAuthenticatorFromEnvironment const sdkCorePackage = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = sdkCorePackage; + const DirectLinkV1 = require('../../dist/direct-link/v1'); const { @@ -31,7 +31,7 @@ const { expectToBePromise, checkUserHeader, checkForSuccessfulExecution, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const directLinkServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/dns-svcs.v1.test.js b/test/unit/dns-svcs.v1.test.js index 578d162..0f98191 100644 --- a/test/unit/dns-svcs.v1.test.js +++ b/test/unit/dns-svcs.v1.test.js @@ -16,7 +16,6 @@ // need to import the whole package to mock getAuthenticatorFromEnvironment const core = require('ibm-cloud-sdk-core'); - const { NoAuthAuthenticator, unitTestUtils } = core; const DnsSvcsV1 = require('../../dist/dns-svcs/v1'); @@ -27,7 +26,7 @@ const { checkMediaHeaders, expectToBePromise, checkUserHeader, -} = unitTestUtils; +} = require('@ibm-cloud/sdk-test-utilities'); const dnsSvcsServiceOptions = { authenticator: new NoAuthAuthenticator(), diff --git a/test/unit/transit-gateway-api.v1.test.js b/test/unit/transit-gateway-api.v1.test.js new file mode 100644 index 0000000..738c5fe --- /dev/null +++ b/test/unit/transit-gateway-api.v1.test.js @@ -0,0 +1,3018 @@ +/** + * (C) Copyright IBM Corp. 2025. + * + * 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. + */ + +// need to import the whole package to mock getAuthenticatorFromEnvironment +const sdkCorePackage = require('ibm-cloud-sdk-core'); + +const { NoAuthAuthenticator, unitTestUtils } = sdkCorePackage; + +const TransitGatewayApiV1 = require('../../dist/transit-gateway-api/v1'); +const nock = require('nock'); + +/* eslint-disable no-await-in-loop */ + +const { + getOptions, + checkUrlAndMethod, + checkMediaHeaders, + expectToBePromise, + checkForSuccessfulExecution, +} = unitTestUtils; + +const transitGatewayApiServiceOptions = { + authenticator: new NoAuthAuthenticator(), + url: 'https://transit.cloud.ibm.com/v1', + version: 'testString', +}; + +const transitGatewayApiService = new TransitGatewayApiV1(transitGatewayApiServiceOptions); + +let createRequestMock = null; +function mock_createRequest() { + if (!createRequestMock) { + createRequestMock = jest.spyOn(transitGatewayApiService, 'createRequest'); + createRequestMock.mockImplementation(() => Promise.resolve()); + } +} +function unmock_createRequest() { + if (createRequestMock) { + createRequestMock.mockRestore(); + createRequestMock = null; + } +} + +// dont actually construct an authenticator +const getAuthenticatorMock = jest.spyOn(sdkCorePackage, 'getAuthenticatorFromEnvironment'); +getAuthenticatorMock.mockImplementation(() => new NoAuthAuthenticator()); + +// used for the service construction tests +let requiredGlobals; + +describe('TransitGatewayApiV1', () => { + + beforeEach(() => { + mock_createRequest(); + // these are changed when passed into the factory/constructor, so re-init + requiredGlobals = { + version: 'testString', + }; + }); + + afterEach(() => { + if (createRequestMock) { + createRequestMock.mockClear(); + } + getAuthenticatorMock.mockClear(); + }); + + describe('the newInstance method', () => { + test('should use defaults when options not provided', () => { + const testInstance = TransitGatewayApiV1.newInstance(requiredGlobals); + + expect(getAuthenticatorMock).toHaveBeenCalled(); + expect(testInstance.baseOptions.authenticator).toBeInstanceOf(NoAuthAuthenticator); + expect(testInstance.baseOptions.serviceName).toBe(TransitGatewayApiV1.DEFAULT_SERVICE_NAME); + expect(testInstance.baseOptions.serviceUrl).toBe(TransitGatewayApiV1.DEFAULT_SERVICE_URL); + expect(testInstance).toBeInstanceOf(TransitGatewayApiV1); + }); + + test('should set serviceName, serviceUrl, and authenticator when provided', () => { + let options = { + authenticator: new NoAuthAuthenticator(), + serviceUrl: 'custom.com', + serviceName: 'my-service', + }; + + options = Object.assign(options, requiredGlobals); + + const testInstance = TransitGatewayApiV1.newInstance(options); + + expect(getAuthenticatorMock).not.toHaveBeenCalled(); + expect(testInstance.baseOptions.authenticator).toBeInstanceOf(NoAuthAuthenticator); + expect(testInstance.baseOptions.serviceUrl).toBe('custom.com'); + expect(testInstance.baseOptions.serviceName).toBe('my-service'); + expect(testInstance).toBeInstanceOf(TransitGatewayApiV1); + }); + }); + + describe('the constructor', () => { + test('use user-given service url', () => { + let options = { + authenticator: new NoAuthAuthenticator(), + serviceUrl: 'custom.com', + }; + + options = Object.assign(options, requiredGlobals); + + const testInstance = new TransitGatewayApiV1(options); + + expect(testInstance.baseOptions.serviceUrl).toBe('custom.com'); + }); + + test('use default service url', () => { + let options = { + authenticator: new NoAuthAuthenticator(), + }; + + options = Object.assign(options, requiredGlobals); + + const testInstance = new TransitGatewayApiV1(options); + + expect(testInstance.baseOptions.serviceUrl).toBe(TransitGatewayApiV1.DEFAULT_SERVICE_URL); + }); + }); + + describe('service-level tests', () => { + describe('positive tests', () => { + test('construct service with global params', () => { + const serviceObj = new TransitGatewayApiV1(transitGatewayApiServiceOptions); + expect(serviceObj).not.toBeNull(); + expect(serviceObj.version).toEqual(transitGatewayApiServiceOptions.version); + }); + }); + }); + + describe('listTransitGateways', () => { + describe('positive tests', () => { + function __listTransitGatewaysTest() { + // Construct the params object for operation listTransitGateways + const limit = 50; + const start = 'testString'; + const listTransitGatewaysParams = { + limit, + start, + }; + + const listTransitGatewaysResult = transitGatewayApiService.listTransitGateways(listTransitGatewaysParams); + + // all methods should return a Promise + expectToBePromise(listTransitGatewaysResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.qs.limit).toEqual(limit); + expect(mockRequestOptions.qs.start).toEqual(start); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __listTransitGatewaysTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __listTransitGatewaysTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __listTransitGatewaysTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const listTransitGatewaysParams = { + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.listTransitGateways(listTransitGatewaysParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + + test('should not have any problems when no parameters are passed in', () => { + // invoke the method with no parameters + transitGatewayApiService.listTransitGateways({}); + checkForSuccessfulExecution(createRequestMock); + }); + }); + + describe('TransitGatewaysPager tests', () => { + const serviceUrl = transitGatewayApiServiceOptions.url; + const path = '/transit_gateways'; + const mockPagerResponse1 = + '{"next":{"start":"1"},"transit_gateways":[{"allow_gre_traffic_across_zones":true,"connection_count":5,"connection_needs_attention":true,"created_at":"2019-01-01T12:00:00.000Z","crn":"crn:v1:bluemix:public:transit:dal03:a/57a7d05f36894e3cb9b46a43556d903e::gateway:ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4","global":true,"id":"0a06fb9b-820f-4c44-8a31-77f1f0806d28","location":"us-south","name":"my-transit-gateway-in-TransitGateway","resource_group":{"href":"https://resource-manager.bluemix.net/v1/resource_groups/56969d6043e9465c883cb9f7363e78e8","id":"56969d6043e9465c883cb9f7363e78e8"},"status":"available","updated_at":"2019-01-01T12:00:00.000Z"}],"total_count":2,"limit":1}'; + const mockPagerResponse2 = + '{"transit_gateways":[{"allow_gre_traffic_across_zones":true,"connection_count":5,"connection_needs_attention":true,"created_at":"2019-01-01T12:00:00.000Z","crn":"crn:v1:bluemix:public:transit:dal03:a/57a7d05f36894e3cb9b46a43556d903e::gateway:ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4","global":true,"id":"0a06fb9b-820f-4c44-8a31-77f1f0806d28","location":"us-south","name":"my-transit-gateway-in-TransitGateway","resource_group":{"href":"https://resource-manager.bluemix.net/v1/resource_groups/56969d6043e9465c883cb9f7363e78e8","id":"56969d6043e9465c883cb9f7363e78e8"},"status":"available","updated_at":"2019-01-01T12:00:00.000Z"}],"total_count":2,"limit":1}'; + + beforeEach(() => { + unmock_createRequest(); + const scope = nock(serviceUrl) + .get(uri => uri.includes(path)) + .reply(200, mockPagerResponse1) + .get(uri => uri.includes(path)) + .reply(200, mockPagerResponse2); + }); + + afterEach(() => { + nock.cleanAll(); + mock_createRequest(); + }); + + test('getNext()', async () => { + const params = { + limit: 10, + }; + const allResults = []; + const pager = new TransitGatewayApiV1.TransitGatewaysPager(transitGatewayApiService, params); + while (pager.hasNext()) { + const nextPage = await pager.getNext(); + expect(nextPage).not.toBeNull(); + allResults.push(...nextPage); + } + expect(allResults).not.toBeNull(); + expect(allResults).toHaveLength(2); + }); + + test('getAll()', async () => { + const params = { + limit: 10, + }; + const pager = new TransitGatewayApiV1.TransitGatewaysPager(transitGatewayApiService, params); + const allResults = await pager.getAll(); + expect(allResults).not.toBeNull(); + expect(allResults).toHaveLength(2); + }); + }); + }); + + describe('createTransitGateway', () => { + describe('positive tests', () => { + // Request models needed by this operation. + + // ResourceGroupIdentity + const resourceGroupIdentityModel = { + id: '56969d6043e9465c883cb9f7363e78e8', + }; + + function __createTransitGatewayTest() { + // Construct the params object for operation createTransitGateway + const allowGreTrafficAcrossZones = true; + const global = true; + const location = 'us-south'; + const name = 'my-transit-gateway-in-TransitGateway'; + const resourceGroup = resourceGroupIdentityModel; + const createTransitGatewayParams = { + allowGreTrafficAcrossZones, + global, + location, + name, + resourceGroup, + }; + + const createTransitGatewayResult = transitGatewayApiService.createTransitGateway(createTransitGatewayParams); + + // all methods should return a Promise + expectToBePromise(createTransitGatewayResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways', 'POST'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.allow_gre_traffic_across_zones).toEqual(allowGreTrafficAcrossZones); + expect(mockRequestOptions.body.global).toEqual(global); + expect(mockRequestOptions.body.location).toEqual(location); + expect(mockRequestOptions.body.name).toEqual(name); + expect(mockRequestOptions.body.resource_group).toEqual(resourceGroup); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __createTransitGatewayTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __createTransitGatewayTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __createTransitGatewayTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const createTransitGatewayParams = { + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.createTransitGateway(createTransitGatewayParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + + test('should not have any problems when no parameters are passed in', () => { + // invoke the method with no parameters + transitGatewayApiService.createTransitGateway({}); + checkForSuccessfulExecution(createRequestMock); + }); + }); + }); + + describe('deleteTransitGateway', () => { + describe('positive tests', () => { + function __deleteTransitGatewayTest() { + // Construct the params object for operation deleteTransitGateway + const id = 'testString'; + const deleteTransitGatewayParams = { + id, + }; + + const deleteTransitGatewayResult = transitGatewayApiService.deleteTransitGateway(deleteTransitGatewayParams); + + // all methods should return a Promise + expectToBePromise(deleteTransitGatewayResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{id}', 'DELETE'); + const expectedAccept = undefined; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __deleteTransitGatewayTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __deleteTransitGatewayTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __deleteTransitGatewayTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const deleteTransitGatewayParams = { + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.deleteTransitGateway(deleteTransitGatewayParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGateway({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGateway(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('getTransitGateway', () => { + describe('positive tests', () => { + function __getTransitGatewayTest() { + // Construct the params object for operation getTransitGateway + const id = 'testString'; + const getTransitGatewayParams = { + id, + }; + + const getTransitGatewayResult = transitGatewayApiService.getTransitGateway(getTransitGatewayParams); + + // all methods should return a Promise + expectToBePromise(getTransitGatewayResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{id}', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __getTransitGatewayTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __getTransitGatewayTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __getTransitGatewayTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const getTransitGatewayParams = { + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.getTransitGateway(getTransitGatewayParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.getTransitGateway({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.getTransitGateway(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('updateTransitGateway', () => { + describe('positive tests', () => { + function __updateTransitGatewayTest() { + // Construct the params object for operation updateTransitGateway + const id = 'testString'; + const allowGreTrafficAcrossZones = true; + const global = true; + const name = 'my-resource'; + const updateTransitGatewayParams = { + id, + allowGreTrafficAcrossZones, + global, + name, + }; + + const updateTransitGatewayResult = transitGatewayApiService.updateTransitGateway(updateTransitGatewayParams); + + // all methods should return a Promise + expectToBePromise(updateTransitGatewayResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{id}', 'PATCH'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.allow_gre_traffic_across_zones).toEqual(allowGreTrafficAcrossZones); + expect(mockRequestOptions.body.global).toEqual(global); + expect(mockRequestOptions.body.name).toEqual(name); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __updateTransitGatewayTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __updateTransitGatewayTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __updateTransitGatewayTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const updateTransitGatewayParams = { + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.updateTransitGateway(updateTransitGatewayParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.updateTransitGateway({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.updateTransitGateway(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('listConnections', () => { + describe('positive tests', () => { + function __listConnectionsTest() { + // Construct the params object for operation listConnections + const limit = 50; + const start = 'testString'; + const networkId = 'testString'; + const listConnectionsParams = { + limit, + start, + networkId, + }; + + const listConnectionsResult = transitGatewayApiService.listConnections(listConnectionsParams); + + // all methods should return a Promise + expectToBePromise(listConnectionsResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/connections', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.qs.limit).toEqual(limit); + expect(mockRequestOptions.qs.start).toEqual(start); + expect(mockRequestOptions.qs.network_id).toEqual(networkId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __listConnectionsTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __listConnectionsTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __listConnectionsTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const listConnectionsParams = { + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.listConnections(listConnectionsParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + + test('should not have any problems when no parameters are passed in', () => { + // invoke the method with no parameters + transitGatewayApiService.listConnections({}); + checkForSuccessfulExecution(createRequestMock); + }); + }); + + describe('ConnectionsPager tests', () => { + const serviceUrl = transitGatewayApiServiceOptions.url; + const path = '/connections'; + const mockPagerResponse1 = + '{"next":{"start":"1"},"total_count":2,"limit":1,"connections":[{"base_network_type":"classic","name":"Transit_Service_BWTN_SJ_DL","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","created_at":"2019-01-01T12:00:00.000Z","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"network_account_id":"network_account_id","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","transit_gateway":{"crn":"crn:v1:bluemix:public:transit:us-south:a/123456::gateway:456f58c1-afe7-123a-0a0a-7f3d720f1a44","id":"456f58c1-afe7-123a-0a0a-7f3d720f1a44","name":"my-transit-gw100"},"tunnels":[{"base_network_type":"classic","created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","network_account_id":"network_account_id","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; + const mockPagerResponse2 = + '{"total_count":2,"limit":1,"connections":[{"base_network_type":"classic","name":"Transit_Service_BWTN_SJ_DL","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","created_at":"2019-01-01T12:00:00.000Z","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"network_account_id":"network_account_id","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","transit_gateway":{"crn":"crn:v1:bluemix:public:transit:us-south:a/123456::gateway:456f58c1-afe7-123a-0a0a-7f3d720f1a44","id":"456f58c1-afe7-123a-0a0a-7f3d720f1a44","name":"my-transit-gw100"},"tunnels":[{"base_network_type":"classic","created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","network_account_id":"network_account_id","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; + + beforeEach(() => { + unmock_createRequest(); + const scope = nock(serviceUrl) + .get(uri => uri.includes(path)) + .reply(200, mockPagerResponse1) + .get(uri => uri.includes(path)) + .reply(200, mockPagerResponse2); + }); + + afterEach(() => { + nock.cleanAll(); + mock_createRequest(); + }); + + test('getNext()', async () => { + const params = { + limit: 10, + networkId: 'testString', + }; + const allResults = []; + const pager = new TransitGatewayApiV1.ConnectionsPager(transitGatewayApiService, params); + while (pager.hasNext()) { + const nextPage = await pager.getNext(); + expect(nextPage).not.toBeNull(); + allResults.push(...nextPage); + } + expect(allResults).not.toBeNull(); + expect(allResults).toHaveLength(2); + }); + + test('getAll()', async () => { + const params = { + limit: 10, + networkId: 'testString', + }; + const pager = new TransitGatewayApiV1.ConnectionsPager(transitGatewayApiService, params); + const allResults = await pager.getAll(); + expect(allResults).not.toBeNull(); + expect(allResults).toHaveLength(2); + }); + }); + }); + + describe('listTransitGatewayConnections', () => { + describe('positive tests', () => { + function __listTransitGatewayConnectionsTest() { + // Construct the params object for operation listTransitGatewayConnections + const transitGatewayId = 'testString'; + const start = 'testString'; + const limit = 50; + const name = 'testString'; + const listTransitGatewayConnectionsParams = { + transitGatewayId, + start, + limit, + name, + }; + + const listTransitGatewayConnectionsResult = transitGatewayApiService.listTransitGatewayConnections(listTransitGatewayConnectionsParams); + + // all methods should return a Promise + expectToBePromise(listTransitGatewayConnectionsResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.qs.start).toEqual(start); + expect(mockRequestOptions.qs.limit).toEqual(limit); + expect(mockRequestOptions.qs.name).toEqual(name); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __listTransitGatewayConnectionsTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __listTransitGatewayConnectionsTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __listTransitGatewayConnectionsTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const listTransitGatewayConnectionsParams = { + transitGatewayId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.listTransitGatewayConnections(listTransitGatewayConnectionsParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.listTransitGatewayConnections({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.listTransitGatewayConnections(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + + describe('TransitGatewayConnectionsPager tests', () => { + const serviceUrl = transitGatewayApiServiceOptions.url; + const path = '/transit_gateways/testString/connections'; + const mockPagerResponse1 = + '{"next":{"start":"1"},"total_count":2,"limit":1,"connections":[{}]}'; + const mockPagerResponse2 = + '{"total_count":2,"limit":1,"connections":[{}]}'; + + beforeEach(() => { + unmock_createRequest(); + const scope = nock(serviceUrl) + .get(uri => uri.includes(path)) + .reply(200, mockPagerResponse1) + .get(uri => uri.includes(path)) + .reply(200, mockPagerResponse2); + }); + + afterEach(() => { + nock.cleanAll(); + mock_createRequest(); + }); + + test('getNext()', async () => { + const params = { + transitGatewayId: 'testString', + limit: 10, + name: 'testString', + }; + const allResults = []; + const pager = new TransitGatewayApiV1.TransitGatewayConnectionsPager(transitGatewayApiService, params); + while (pager.hasNext()) { + const nextPage = await pager.getNext(); + expect(nextPage).not.toBeNull(); + allResults.push(...nextPage); + } + expect(allResults).not.toBeNull(); + expect(allResults).toHaveLength(2); + }); + + test('getAll()', async () => { + const params = { + transitGatewayId: 'testString', + limit: 10, + name: 'testString', + }; + const pager = new TransitGatewayApiV1.TransitGatewayConnectionsPager(transitGatewayApiService, params); + const allResults = await pager.getAll(); + expect(allResults).not.toBeNull(); + expect(allResults).toHaveLength(2); + }); + }); + }); + + describe('createTransitGatewayConnection', () => { + describe('positive tests', () => { + // Request models needed by this operation. + + // TransitGatewayConnectionPrefixFilter + const transitGatewayConnectionPrefixFilterModel = { + action: 'permit', + ge: 0, + le: 32, + prefix: '192.168.100.0/24', + }; + + // ZoneIdentityByName + const zoneIdentityModel = { + name: 'us-south-1', + }; + + // TransitGatewayTunnelTemplate + const transitGatewayTunnelTemplateModel = { + local_gateway_ip: '10.242.63.12', + local_tunnel_ip: '192.168.100.20', + name: 'gre1', + remote_bgp_asn: 65010, + remote_gateway_ip: '10.242.33.22', + remote_tunnel_ip: '192.168.129.1', + zone: zoneIdentityModel, + }; + + function __createTransitGatewayConnectionTest() { + // Construct the params object for operation createTransitGatewayConnection + const transitGatewayId = 'testString'; + const networkType = 'vpc'; + const baseConnectionId = '975f58c1-afe7-469a-9727-7f3d720f2d32'; + const baseNetworkType = 'classic'; + const cidr = '192.168.0.0/24'; + const localGatewayIp = '192.168.100.1'; + const localTunnelIp = '192.168.129.2'; + const name = 'Transit_Service_BWTN_SJ_DL'; + const networkAccountId = 'testString'; + const networkId = 'crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b'; + const prefixFilters = [transitGatewayConnectionPrefixFilterModel]; + const prefixFiltersDefault = 'permit'; + const remoteBgpAsn = 65010; + const remoteGatewayIp = '10.242.63.12'; + const remoteTunnelIp = '192.168.129.1'; + const tunnels = [transitGatewayTunnelTemplateModel]; + const zone = zoneIdentityModel; + const createTransitGatewayConnectionParams = { + transitGatewayId, + networkType, + baseConnectionId, + baseNetworkType, + cidr, + localGatewayIp, + localTunnelIp, + name, + networkAccountId, + networkId, + prefixFilters, + prefixFiltersDefault, + remoteBgpAsn, + remoteGatewayIp, + remoteTunnelIp, + tunnels, + zone, + }; + + const createTransitGatewayConnectionResult = transitGatewayApiService.createTransitGatewayConnection(createTransitGatewayConnectionParams); + + // all methods should return a Promise + expectToBePromise(createTransitGatewayConnectionResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections', 'POST'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.network_type).toEqual(networkType); + expect(mockRequestOptions.body.base_connection_id).toEqual(baseConnectionId); + expect(mockRequestOptions.body.base_network_type).toEqual(baseNetworkType); + expect(mockRequestOptions.body.cidr).toEqual(cidr); + expect(mockRequestOptions.body.local_gateway_ip).toEqual(localGatewayIp); + expect(mockRequestOptions.body.local_tunnel_ip).toEqual(localTunnelIp); + expect(mockRequestOptions.body.name).toEqual(name); + expect(mockRequestOptions.body.network_account_id).toEqual(networkAccountId); + expect(mockRequestOptions.body.network_id).toEqual(networkId); + expect(mockRequestOptions.body.prefix_filters).toEqual(prefixFilters); + expect(mockRequestOptions.body.prefix_filters_default).toEqual(prefixFiltersDefault); + expect(mockRequestOptions.body.remote_bgp_asn).toEqual(remoteBgpAsn); + expect(mockRequestOptions.body.remote_gateway_ip).toEqual(remoteGatewayIp); + expect(mockRequestOptions.body.remote_tunnel_ip).toEqual(remoteTunnelIp); + expect(mockRequestOptions.body.tunnels).toEqual(tunnels); + expect(mockRequestOptions.body.zone).toEqual(zone); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __createTransitGatewayConnectionTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __createTransitGatewayConnectionTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __createTransitGatewayConnectionTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const networkType = 'vpc'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const createTransitGatewayConnectionParams = { + transitGatewayId, + networkType, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.createTransitGatewayConnection(createTransitGatewayConnectionParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayConnection({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayConnection(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('deleteTransitGatewayConnection', () => { + describe('positive tests', () => { + function __deleteTransitGatewayConnectionTest() { + // Construct the params object for operation deleteTransitGatewayConnection + const transitGatewayId = 'testString'; + const id = 'testString'; + const deleteTransitGatewayConnectionParams = { + transitGatewayId, + id, + }; + + const deleteTransitGatewayConnectionResult = transitGatewayApiService.deleteTransitGatewayConnection(deleteTransitGatewayConnectionParams); + + // all methods should return a Promise + expectToBePromise(deleteTransitGatewayConnectionResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}', 'DELETE'); + const expectedAccept = undefined; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __deleteTransitGatewayConnectionTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __deleteTransitGatewayConnectionTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __deleteTransitGatewayConnectionTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const deleteTransitGatewayConnectionParams = { + transitGatewayId, + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.deleteTransitGatewayConnection(deleteTransitGatewayConnectionParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGatewayConnection({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGatewayConnection(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('getTransitGatewayConnection', () => { + describe('positive tests', () => { + function __getTransitGatewayConnectionTest() { + // Construct the params object for operation getTransitGatewayConnection + const transitGatewayId = 'testString'; + const id = 'testString'; + const getTransitGatewayConnectionParams = { + transitGatewayId, + id, + }; + + const getTransitGatewayConnectionResult = transitGatewayApiService.getTransitGatewayConnection(getTransitGatewayConnectionParams); + + // all methods should return a Promise + expectToBePromise(getTransitGatewayConnectionResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __getTransitGatewayConnectionTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __getTransitGatewayConnectionTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __getTransitGatewayConnectionTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const getTransitGatewayConnectionParams = { + transitGatewayId, + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.getTransitGatewayConnection(getTransitGatewayConnectionParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.getTransitGatewayConnection({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.getTransitGatewayConnection(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('updateTransitGatewayConnection', () => { + describe('positive tests', () => { + function __updateTransitGatewayConnectionTest() { + // Construct the params object for operation updateTransitGatewayConnection + const transitGatewayId = 'testString'; + const id = 'testString'; + const name = 'Transit_Service_BWTN_SJ_DL'; + const prefixFiltersDefault = 'permit'; + const updateTransitGatewayConnectionParams = { + transitGatewayId, + id, + name, + prefixFiltersDefault, + }; + + const updateTransitGatewayConnectionResult = transitGatewayApiService.updateTransitGatewayConnection(updateTransitGatewayConnectionParams); + + // all methods should return a Promise + expectToBePromise(updateTransitGatewayConnectionResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}', 'PATCH'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.name).toEqual(name); + expect(mockRequestOptions.body.prefix_filters_default).toEqual(prefixFiltersDefault); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __updateTransitGatewayConnectionTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __updateTransitGatewayConnectionTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __updateTransitGatewayConnectionTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const updateTransitGatewayConnectionParams = { + transitGatewayId, + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.updateTransitGatewayConnection(updateTransitGatewayConnectionParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.updateTransitGatewayConnection({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.updateTransitGatewayConnection(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('createTransitGatewayConnectionActions', () => { + describe('positive tests', () => { + function __createTransitGatewayConnectionActionsTest() { + // Construct the params object for operation createTransitGatewayConnectionActions + const transitGatewayId = 'testString'; + const id = 'testString'; + const action = 'approve'; + const createTransitGatewayConnectionActionsParams = { + transitGatewayId, + id, + action, + }; + + const createTransitGatewayConnectionActionsResult = transitGatewayApiService.createTransitGatewayConnectionActions(createTransitGatewayConnectionActionsParams); + + // all methods should return a Promise + expectToBePromise(createTransitGatewayConnectionActionsResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/actions', 'POST'); + const expectedAccept = undefined; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.action).toEqual(action); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __createTransitGatewayConnectionActionsTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __createTransitGatewayConnectionActionsTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __createTransitGatewayConnectionActionsTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const action = 'approve'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const createTransitGatewayConnectionActionsParams = { + transitGatewayId, + id, + action, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.createTransitGatewayConnectionActions(createTransitGatewayConnectionActionsParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayConnectionActions({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayConnectionActions(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('listTransitGatewayGreTunnel', () => { + describe('positive tests', () => { + function __listTransitGatewayGreTunnelTest() { + // Construct the params object for operation listTransitGatewayGreTunnel + const transitGatewayId = 'testString'; + const id = 'testString'; + const listTransitGatewayGreTunnelParams = { + transitGatewayId, + id, + }; + + const listTransitGatewayGreTunnelResult = transitGatewayApiService.listTransitGatewayGreTunnel(listTransitGatewayGreTunnelParams); + + // all methods should return a Promise + expectToBePromise(listTransitGatewayGreTunnelResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __listTransitGatewayGreTunnelTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __listTransitGatewayGreTunnelTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __listTransitGatewayGreTunnelTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const listTransitGatewayGreTunnelParams = { + transitGatewayId, + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.listTransitGatewayGreTunnel(listTransitGatewayGreTunnelParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.listTransitGatewayGreTunnel({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.listTransitGatewayGreTunnel(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('createTransitGatewayGreTunnel', () => { + describe('positive tests', () => { + // Request models needed by this operation. + + // ZoneIdentityByName + const zoneIdentityModel = { + name: 'us-south-1', + }; + + function __createTransitGatewayGreTunnelTest() { + // Construct the params object for operation createTransitGatewayGreTunnel + const transitGatewayId = 'testString'; + const id = 'testString'; + const localGatewayIp = '10.242.63.12'; + const localTunnelIp = '192.168.100.20'; + const name = 'gre1'; + const remoteGatewayIp = '10.242.33.22'; + const remoteTunnelIp = '192.168.129.1'; + const zone = zoneIdentityModel; + const remoteBgpAsn = 65010; + const createTransitGatewayGreTunnelParams = { + transitGatewayId, + id, + localGatewayIp, + localTunnelIp, + name, + remoteGatewayIp, + remoteTunnelIp, + zone, + remoteBgpAsn, + }; + + const createTransitGatewayGreTunnelResult = transitGatewayApiService.createTransitGatewayGreTunnel(createTransitGatewayGreTunnelParams); + + // all methods should return a Promise + expectToBePromise(createTransitGatewayGreTunnelResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels', 'POST'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.local_gateway_ip).toEqual(localGatewayIp); + expect(mockRequestOptions.body.local_tunnel_ip).toEqual(localTunnelIp); + expect(mockRequestOptions.body.name).toEqual(name); + expect(mockRequestOptions.body.remote_gateway_ip).toEqual(remoteGatewayIp); + expect(mockRequestOptions.body.remote_tunnel_ip).toEqual(remoteTunnelIp); + expect(mockRequestOptions.body.zone).toEqual(zone); + expect(mockRequestOptions.body.remote_bgp_asn).toEqual(remoteBgpAsn); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __createTransitGatewayGreTunnelTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __createTransitGatewayGreTunnelTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __createTransitGatewayGreTunnelTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const localGatewayIp = '10.242.63.12'; + const localTunnelIp = '192.168.100.20'; + const name = 'gre1'; + const remoteGatewayIp = '10.242.33.22'; + const remoteTunnelIp = '192.168.129.1'; + const zone = zoneIdentityModel; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const createTransitGatewayGreTunnelParams = { + transitGatewayId, + id, + localGatewayIp, + localTunnelIp, + name, + remoteGatewayIp, + remoteTunnelIp, + zone, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.createTransitGatewayGreTunnel(createTransitGatewayGreTunnelParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayGreTunnel({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayGreTunnel(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('deleteTransitGatewayConnectionTunnels', () => { + describe('positive tests', () => { + function __deleteTransitGatewayConnectionTunnelsTest() { + // Construct the params object for operation deleteTransitGatewayConnectionTunnels + const transitGatewayId = 'testString'; + const id = 'testString'; + const greTunnelId = 'testString'; + const deleteTransitGatewayConnectionTunnelsParams = { + transitGatewayId, + id, + greTunnelId, + }; + + const deleteTransitGatewayConnectionTunnelsResult = transitGatewayApiService.deleteTransitGatewayConnectionTunnels(deleteTransitGatewayConnectionTunnelsParams); + + // all methods should return a Promise + expectToBePromise(deleteTransitGatewayConnectionTunnelsResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels/{gre_tunnel_id}', 'DELETE'); + const expectedAccept = undefined; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + expect(mockRequestOptions.path.gre_tunnel_id).toEqual(greTunnelId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __deleteTransitGatewayConnectionTunnelsTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __deleteTransitGatewayConnectionTunnelsTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __deleteTransitGatewayConnectionTunnelsTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const greTunnelId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const deleteTransitGatewayConnectionTunnelsParams = { + transitGatewayId, + id, + greTunnelId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.deleteTransitGatewayConnectionTunnels(deleteTransitGatewayConnectionTunnelsParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGatewayConnectionTunnels({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGatewayConnectionTunnels(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('getTransitGatewayConnectionTunnels', () => { + describe('positive tests', () => { + function __getTransitGatewayConnectionTunnelsTest() { + // Construct the params object for operation getTransitGatewayConnectionTunnels + const transitGatewayId = 'testString'; + const id = 'testString'; + const greTunnelId = 'testString'; + const getTransitGatewayConnectionTunnelsParams = { + transitGatewayId, + id, + greTunnelId, + }; + + const getTransitGatewayConnectionTunnelsResult = transitGatewayApiService.getTransitGatewayConnectionTunnels(getTransitGatewayConnectionTunnelsParams); + + // all methods should return a Promise + expectToBePromise(getTransitGatewayConnectionTunnelsResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels/{gre_tunnel_id}', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + expect(mockRequestOptions.path.gre_tunnel_id).toEqual(greTunnelId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __getTransitGatewayConnectionTunnelsTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __getTransitGatewayConnectionTunnelsTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __getTransitGatewayConnectionTunnelsTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const greTunnelId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const getTransitGatewayConnectionTunnelsParams = { + transitGatewayId, + id, + greTunnelId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.getTransitGatewayConnectionTunnels(getTransitGatewayConnectionTunnelsParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.getTransitGatewayConnectionTunnels({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.getTransitGatewayConnectionTunnels(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('updateTransitGatewayConnectionTunnels', () => { + describe('positive tests', () => { + function __updateTransitGatewayConnectionTunnelsTest() { + // Construct the params object for operation updateTransitGatewayConnectionTunnels + const transitGatewayId = 'testString'; + const id = 'testString'; + const greTunnelId = 'testString'; + const name = 'gre2'; + const updateTransitGatewayConnectionTunnelsParams = { + transitGatewayId, + id, + greTunnelId, + name, + }; + + const updateTransitGatewayConnectionTunnelsResult = transitGatewayApiService.updateTransitGatewayConnectionTunnels(updateTransitGatewayConnectionTunnelsParams); + + // all methods should return a Promise + expectToBePromise(updateTransitGatewayConnectionTunnelsResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels/{gre_tunnel_id}', 'PATCH'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/merge-patch+json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.name).toEqual(name); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + expect(mockRequestOptions.path.gre_tunnel_id).toEqual(greTunnelId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __updateTransitGatewayConnectionTunnelsTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __updateTransitGatewayConnectionTunnelsTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __updateTransitGatewayConnectionTunnelsTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const greTunnelId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const updateTransitGatewayConnectionTunnelsParams = { + transitGatewayId, + id, + greTunnelId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.updateTransitGatewayConnectionTunnels(updateTransitGatewayConnectionTunnelsParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.updateTransitGatewayConnectionTunnels({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.updateTransitGatewayConnectionTunnels(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('listGatewayLocations', () => { + describe('positive tests', () => { + function __listGatewayLocationsTest() { + // Construct the params object for operation listGatewayLocations + const listGatewayLocationsParams = {}; + + const listGatewayLocationsResult = transitGatewayApiService.listGatewayLocations(listGatewayLocationsParams); + + // all methods should return a Promise + expectToBePromise(listGatewayLocationsResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/locations', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __listGatewayLocationsTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __listGatewayLocationsTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __listGatewayLocationsTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const listGatewayLocationsParams = { + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.listGatewayLocations(listGatewayLocationsParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + + test('should not have any problems when no parameters are passed in', () => { + // invoke the method with no parameters + transitGatewayApiService.listGatewayLocations({}); + checkForSuccessfulExecution(createRequestMock); + }); + }); + }); + + describe('getGatewayLocation', () => { + describe('positive tests', () => { + function __getGatewayLocationTest() { + // Construct the params object for operation getGatewayLocation + const name = 'testString'; + const getGatewayLocationParams = { + name, + }; + + const getGatewayLocationResult = transitGatewayApiService.getGatewayLocation(getGatewayLocationParams); + + // all methods should return a Promise + expectToBePromise(getGatewayLocationResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/locations/{name}', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.name).toEqual(name); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __getGatewayLocationTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __getGatewayLocationTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __getGatewayLocationTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const name = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const getGatewayLocationParams = { + name, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.getGatewayLocation(getGatewayLocationParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.getGatewayLocation({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.getGatewayLocation(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('listTransitGatewayConnectionPrefixFilters', () => { + describe('positive tests', () => { + function __listTransitGatewayConnectionPrefixFiltersTest() { + // Construct the params object for operation listTransitGatewayConnectionPrefixFilters + const transitGatewayId = 'testString'; + const id = 'testString'; + const listTransitGatewayConnectionPrefixFiltersParams = { + transitGatewayId, + id, + }; + + const listTransitGatewayConnectionPrefixFiltersResult = transitGatewayApiService.listTransitGatewayConnectionPrefixFilters(listTransitGatewayConnectionPrefixFiltersParams); + + // all methods should return a Promise + expectToBePromise(listTransitGatewayConnectionPrefixFiltersResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __listTransitGatewayConnectionPrefixFiltersTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __listTransitGatewayConnectionPrefixFiltersTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __listTransitGatewayConnectionPrefixFiltersTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const listTransitGatewayConnectionPrefixFiltersParams = { + transitGatewayId, + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.listTransitGatewayConnectionPrefixFilters(listTransitGatewayConnectionPrefixFiltersParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.listTransitGatewayConnectionPrefixFilters({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.listTransitGatewayConnectionPrefixFilters(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('createTransitGatewayConnectionPrefixFilter', () => { + describe('positive tests', () => { + function __createTransitGatewayConnectionPrefixFilterTest() { + // Construct the params object for operation createTransitGatewayConnectionPrefixFilter + const transitGatewayId = 'testString'; + const id = 'testString'; + const action = 'permit'; + const prefix = '192.168.100.0/24'; + const before = '1a15dcab-7e40-45e1-b7c5-bc690eaa9782'; + const ge = 0; + const le = 32; + const createTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + action, + prefix, + before, + ge, + le, + }; + + const createTransitGatewayConnectionPrefixFilterResult = transitGatewayApiService.createTransitGatewayConnectionPrefixFilter(createTransitGatewayConnectionPrefixFilterParams); + + // all methods should return a Promise + expectToBePromise(createTransitGatewayConnectionPrefixFilterResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters', 'POST'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.action).toEqual(action); + expect(mockRequestOptions.body.prefix).toEqual(prefix); + expect(mockRequestOptions.body.before).toEqual(before); + expect(mockRequestOptions.body.ge).toEqual(ge); + expect(mockRequestOptions.body.le).toEqual(le); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __createTransitGatewayConnectionPrefixFilterTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __createTransitGatewayConnectionPrefixFilterTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __createTransitGatewayConnectionPrefixFilterTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const action = 'permit'; + const prefix = '192.168.100.0/24'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const createTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + action, + prefix, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.createTransitGatewayConnectionPrefixFilter(createTransitGatewayConnectionPrefixFilterParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayConnectionPrefixFilter({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayConnectionPrefixFilter(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('replaceTransitGatewayConnectionPrefixFilter', () => { + describe('positive tests', () => { + // Request models needed by this operation. + + // PrefixFilterPut + const prefixFilterPutModel = { + action: 'permit', + ge: 0, + le: 32, + prefix: '192.168.100.0/24', + }; + + function __replaceTransitGatewayConnectionPrefixFilterTest() { + // Construct the params object for operation replaceTransitGatewayConnectionPrefixFilter + const transitGatewayId = 'testString'; + const id = 'testString'; + const prefixFilters = [prefixFilterPutModel]; + const replaceTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + prefixFilters, + }; + + const replaceTransitGatewayConnectionPrefixFilterResult = transitGatewayApiService.replaceTransitGatewayConnectionPrefixFilter(replaceTransitGatewayConnectionPrefixFilterParams); + + // all methods should return a Promise + expectToBePromise(replaceTransitGatewayConnectionPrefixFilterResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters', 'PUT'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.prefix_filters).toEqual(prefixFilters); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __replaceTransitGatewayConnectionPrefixFilterTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __replaceTransitGatewayConnectionPrefixFilterTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __replaceTransitGatewayConnectionPrefixFilterTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const prefixFilters = [prefixFilterPutModel]; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const replaceTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + prefixFilters, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.replaceTransitGatewayConnectionPrefixFilter(replaceTransitGatewayConnectionPrefixFilterParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.replaceTransitGatewayConnectionPrefixFilter({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.replaceTransitGatewayConnectionPrefixFilter(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('deleteTransitGatewayConnectionPrefixFilter', () => { + describe('positive tests', () => { + function __deleteTransitGatewayConnectionPrefixFilterTest() { + // Construct the params object for operation deleteTransitGatewayConnectionPrefixFilter + const transitGatewayId = 'testString'; + const id = 'testString'; + const filterId = 'testString'; + const deleteTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + filterId, + }; + + const deleteTransitGatewayConnectionPrefixFilterResult = transitGatewayApiService.deleteTransitGatewayConnectionPrefixFilter(deleteTransitGatewayConnectionPrefixFilterParams); + + // all methods should return a Promise + expectToBePromise(deleteTransitGatewayConnectionPrefixFilterResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters/{filter_id}', 'DELETE'); + const expectedAccept = undefined; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + expect(mockRequestOptions.path.filter_id).toEqual(filterId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __deleteTransitGatewayConnectionPrefixFilterTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __deleteTransitGatewayConnectionPrefixFilterTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __deleteTransitGatewayConnectionPrefixFilterTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const filterId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const deleteTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + filterId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.deleteTransitGatewayConnectionPrefixFilter(deleteTransitGatewayConnectionPrefixFilterParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGatewayConnectionPrefixFilter({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGatewayConnectionPrefixFilter(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('getTransitGatewayConnectionPrefixFilter', () => { + describe('positive tests', () => { + function __getTransitGatewayConnectionPrefixFilterTest() { + // Construct the params object for operation getTransitGatewayConnectionPrefixFilter + const transitGatewayId = 'testString'; + const id = 'testString'; + const filterId = 'testString'; + const getTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + filterId, + }; + + const getTransitGatewayConnectionPrefixFilterResult = transitGatewayApiService.getTransitGatewayConnectionPrefixFilter(getTransitGatewayConnectionPrefixFilterParams); + + // all methods should return a Promise + expectToBePromise(getTransitGatewayConnectionPrefixFilterResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters/{filter_id}', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + expect(mockRequestOptions.path.filter_id).toEqual(filterId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __getTransitGatewayConnectionPrefixFilterTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __getTransitGatewayConnectionPrefixFilterTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __getTransitGatewayConnectionPrefixFilterTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const filterId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const getTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + filterId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.getTransitGatewayConnectionPrefixFilter(getTransitGatewayConnectionPrefixFilterParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.getTransitGatewayConnectionPrefixFilter({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.getTransitGatewayConnectionPrefixFilter(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('updateTransitGatewayConnectionPrefixFilter', () => { + describe('positive tests', () => { + function __updateTransitGatewayConnectionPrefixFilterTest() { + // Construct the params object for operation updateTransitGatewayConnectionPrefixFilter + const transitGatewayId = 'testString'; + const id = 'testString'; + const filterId = 'testString'; + const action = 'permit'; + const before = '1a15dcab-7e40-45e1-b7c5-bc690eaa9782'; + const ge = 0; + const le = 32; + const prefix = '192.168.100.0/24'; + const updateTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + filterId, + action, + before, + ge, + le, + prefix, + }; + + const updateTransitGatewayConnectionPrefixFilterResult = transitGatewayApiService.updateTransitGatewayConnectionPrefixFilter(updateTransitGatewayConnectionPrefixFilterParams); + + // all methods should return a Promise + expectToBePromise(updateTransitGatewayConnectionPrefixFilterResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters/{filter_id}', 'PATCH'); + const expectedAccept = 'application/json'; + const expectedContentType = 'application/json'; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.action).toEqual(action); + expect(mockRequestOptions.body.before).toEqual(before); + expect(mockRequestOptions.body.ge).toEqual(ge); + expect(mockRequestOptions.body.le).toEqual(le); + expect(mockRequestOptions.body.prefix).toEqual(prefix); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + expect(mockRequestOptions.path.filter_id).toEqual(filterId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __updateTransitGatewayConnectionPrefixFilterTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __updateTransitGatewayConnectionPrefixFilterTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __updateTransitGatewayConnectionPrefixFilterTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const filterId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const updateTransitGatewayConnectionPrefixFilterParams = { + transitGatewayId, + id, + filterId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.updateTransitGatewayConnectionPrefixFilter(updateTransitGatewayConnectionPrefixFilterParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.updateTransitGatewayConnectionPrefixFilter({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.updateTransitGatewayConnectionPrefixFilter(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('listTransitGatewayRouteReports', () => { + describe('positive tests', () => { + function __listTransitGatewayRouteReportsTest() { + // Construct the params object for operation listTransitGatewayRouteReports + const transitGatewayId = 'testString'; + const listTransitGatewayRouteReportsParams = { + transitGatewayId, + }; + + const listTransitGatewayRouteReportsResult = transitGatewayApiService.listTransitGatewayRouteReports(listTransitGatewayRouteReportsParams); + + // all methods should return a Promise + expectToBePromise(listTransitGatewayRouteReportsResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/route_reports', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __listTransitGatewayRouteReportsTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __listTransitGatewayRouteReportsTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __listTransitGatewayRouteReportsTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const listTransitGatewayRouteReportsParams = { + transitGatewayId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.listTransitGatewayRouteReports(listTransitGatewayRouteReportsParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.listTransitGatewayRouteReports({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.listTransitGatewayRouteReports(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('createTransitGatewayRouteReport', () => { + describe('positive tests', () => { + function __createTransitGatewayRouteReportTest() { + // Construct the params object for operation createTransitGatewayRouteReport + const transitGatewayId = 'testString'; + const createTransitGatewayRouteReportParams = { + transitGatewayId, + }; + + const createTransitGatewayRouteReportResult = transitGatewayApiService.createTransitGatewayRouteReport(createTransitGatewayRouteReportParams); + + // all methods should return a Promise + expectToBePromise(createTransitGatewayRouteReportResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/route_reports', 'POST'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __createTransitGatewayRouteReportTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __createTransitGatewayRouteReportTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __createTransitGatewayRouteReportTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const createTransitGatewayRouteReportParams = { + transitGatewayId, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.createTransitGatewayRouteReport(createTransitGatewayRouteReportParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayRouteReport({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.createTransitGatewayRouteReport(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('deleteTransitGatewayRouteReport', () => { + describe('positive tests', () => { + function __deleteTransitGatewayRouteReportTest() { + // Construct the params object for operation deleteTransitGatewayRouteReport + const transitGatewayId = 'testString'; + const id = 'testString'; + const deleteTransitGatewayRouteReportParams = { + transitGatewayId, + id, + }; + + const deleteTransitGatewayRouteReportResult = transitGatewayApiService.deleteTransitGatewayRouteReport(deleteTransitGatewayRouteReportParams); + + // all methods should return a Promise + expectToBePromise(deleteTransitGatewayRouteReportResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/route_reports/{id}', 'DELETE'); + const expectedAccept = undefined; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __deleteTransitGatewayRouteReportTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __deleteTransitGatewayRouteReportTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __deleteTransitGatewayRouteReportTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const deleteTransitGatewayRouteReportParams = { + transitGatewayId, + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.deleteTransitGatewayRouteReport(deleteTransitGatewayRouteReportParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGatewayRouteReport({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.deleteTransitGatewayRouteReport(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); + + describe('getTransitGatewayRouteReport', () => { + describe('positive tests', () => { + function __getTransitGatewayRouteReportTest() { + // Construct the params object for operation getTransitGatewayRouteReport + const transitGatewayId = 'testString'; + const id = 'testString'; + const getTransitGatewayRouteReportParams = { + transitGatewayId, + id, + }; + + const getTransitGatewayRouteReportResult = transitGatewayApiService.getTransitGatewayRouteReport(getTransitGatewayRouteReportParams); + + // all methods should return a Promise + expectToBePromise(getTransitGatewayRouteReportResult); + + // assert that create request was called + expect(createRequestMock).toHaveBeenCalledTimes(1); + + const mockRequestOptions = getOptions(createRequestMock); + + checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/route_reports/{id}', 'GET'); + const expectedAccept = 'application/json'; + const expectedContentType = undefined; + checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.qs.version).toEqual(transitGatewayApiServiceOptions.version); + expect(mockRequestOptions.path.transit_gateway_id).toEqual(transitGatewayId); + expect(mockRequestOptions.path.id).toEqual(id); + } + + test('should pass the right params to createRequest with enable and disable retries', () => { + // baseline test + __getTransitGatewayRouteReportTest(); + + // enable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.enableRetries(); + __getTransitGatewayRouteReportTest(); + + // disable retries and test again + createRequestMock.mockClear(); + transitGatewayApiService.disableRetries(); + __getTransitGatewayRouteReportTest(); + }); + + test('should prioritize user-given headers', () => { + // parameters + const transitGatewayId = 'testString'; + const id = 'testString'; + const userAccept = 'fake/accept'; + const userContentType = 'fake/contentType'; + const getTransitGatewayRouteReportParams = { + transitGatewayId, + id, + headers: { + Accept: userAccept, + 'Content-Type': userContentType, + }, + }; + + transitGatewayApiService.getTransitGatewayRouteReport(getTransitGatewayRouteReportParams); + checkMediaHeaders(createRequestMock, userAccept, userContentType); + }); + }); + + describe('negative tests', () => { + test('should enforce required parameters', async () => { + let err; + try { + await transitGatewayApiService.getTransitGatewayRouteReport({}); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + + test('should reject promise when required params are not given', async () => { + let err; + try { + await transitGatewayApiService.getTransitGatewayRouteReport(); + } catch (e) { + err = e; + } + + expect(err.message).toMatch(/Missing required parameters/); + }); + }); + }); +}); diff --git a/test/unit/transit-gateway-apis.v1.test.js b/test/unit/transit-gateway-apis.v1.test.js index 52b4b37..e2144f3 100644 --- a/test/unit/transit-gateway-apis.v1.test.js +++ b/test/unit/transit-gateway-apis.v1.test.js @@ -1,5 +1,5 @@ /** - * (C) Copyright IBM Corp. 2024. + * (C) Copyright IBM Corp. 2025. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,15 +14,15 @@ * limitations under the License. */ -/* eslint-disable no-await-in-loop */ - -const nock = require('nock'); - // need to import the whole package to mock getAuthenticatorFromEnvironment const sdkCorePackage = require('ibm-cloud-sdk-core'); const { NoAuthAuthenticator, unitTestUtils } = sdkCorePackage; + const TransitGatewayApisV1 = require('../../dist/transit-gateway-apis/v1'); +const nock = require('nock'); + +/* eslint-disable no-await-in-loop */ const { getOptions, @@ -62,6 +62,7 @@ getAuthenticatorMock.mockImplementation(() => new NoAuthAuthenticator()); let requiredGlobals; describe('TransitGatewayApisV1', () => { + beforeEach(() => { mock_createRequest(); // these are changed when passed into the factory/constructor, so re-init @@ -76,7 +77,7 @@ describe('TransitGatewayApisV1', () => { } getAuthenticatorMock.mockClear(); }); - + describe('the newInstance method', () => { test('should use defaults when options not provided', () => { const testInstance = TransitGatewayApisV1.newInstance(requiredGlobals); @@ -215,16 +216,16 @@ describe('TransitGatewayApisV1', () => { const serviceUrl = transitGatewayApisServiceOptions.url; const path = '/transit_gateways'; const mockPagerResponse1 = - '{"next":{"start":"1"},"transit_gateways":[{"id":"ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4","crn":"crn:v1:bluemix:public:transit:dal03:a/57a7d05f36894e3cb9b46a43556d903e::gateway:ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4","name":"my-transit-gateway-in-TransitGateway","location":"us-south","created_at":"2019-01-01T12:00:00.000Z","global":true,"resource_group":{"href":"https://resource-manager.bluemix.net/v1/resource_groups/56969d6043e9465c883cb9f7363e78e8","id":"56969d6043e9465c883cb9f7363e78e8"},"status":"available","updated_at":"2019-01-01T12:00:00.000Z"}],"total_count":2,"limit":1}'; + '{"next":{"start":"1"},"transit_gateways":[{"allow_gre_traffic_across_zones":true,"connection_count":5,"connection_needs_attention":true,"created_at":"2019-01-01T12:00:00.000Z","crn":"crn:v1:bluemix:public:transit:dal03:a/57a7d05f36894e3cb9b46a43556d903e::gateway:ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4","global":true,"id":"0a06fb9b-820f-4c44-8a31-77f1f0806d28","location":"us-south","name":"my-transit-gateway-in-TransitGateway","resource_group":{"href":"https://resource-manager.bluemix.net/v1/resource_groups/56969d6043e9465c883cb9f7363e78e8","id":"56969d6043e9465c883cb9f7363e78e8"},"status":"available","updated_at":"2019-01-01T12:00:00.000Z"}],"total_count":2,"limit":1}'; const mockPagerResponse2 = - '{"transit_gateways":[{"id":"ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4","crn":"crn:v1:bluemix:public:transit:dal03:a/57a7d05f36894e3cb9b46a43556d903e::gateway:ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4","name":"my-transit-gateway-in-TransitGateway","location":"us-south","created_at":"2019-01-01T12:00:00.000Z","global":true,"resource_group":{"href":"https://resource-manager.bluemix.net/v1/resource_groups/56969d6043e9465c883cb9f7363e78e8","id":"56969d6043e9465c883cb9f7363e78e8"},"status":"available","updated_at":"2019-01-01T12:00:00.000Z"}],"total_count":2,"limit":1}'; + '{"transit_gateways":[{"allow_gre_traffic_across_zones":true,"connection_count":5,"connection_needs_attention":true,"created_at":"2019-01-01T12:00:00.000Z","crn":"crn:v1:bluemix:public:transit:dal03:a/57a7d05f36894e3cb9b46a43556d903e::gateway:ef4dcb1a-fee4-41c7-9e11-9cd99e65c1f4","global":true,"id":"0a06fb9b-820f-4c44-8a31-77f1f0806d28","location":"us-south","name":"my-transit-gateway-in-TransitGateway","resource_group":{"href":"https://resource-manager.bluemix.net/v1/resource_groups/56969d6043e9465c883cb9f7363e78e8","id":"56969d6043e9465c883cb9f7363e78e8"},"status":"available","updated_at":"2019-01-01T12:00:00.000Z"}],"total_count":2,"limit":1}'; beforeEach(() => { unmock_createRequest(); const scope = nock(serviceUrl) - .get((uri) => uri.includes(path)) + .get(uri => uri.includes(path)) .reply(200, mockPagerResponse1) - .get((uri) => uri.includes(path)) + .get(uri => uri.includes(path)) .reply(200, mockPagerResponse2); }); @@ -272,12 +273,14 @@ describe('TransitGatewayApisV1', () => { function __createTransitGatewayTest() { // Construct the params object for operation createTransitGateway const location = 'us-south'; - const name = 'Transit_Service_BWTN_SJ_DL'; + const name = 'my-transit-gateway-in-TransitGateway'; + const allowGreTrafficAcrossZones = true; const global = true; const resourceGroup = resourceGroupIdentityModel; const createTransitGatewayParams = { location, name, + allowGreTrafficAcrossZones, global, resourceGroup, }; @@ -298,6 +301,7 @@ describe('TransitGatewayApisV1', () => { checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); expect(mockRequestOptions.body.location).toEqual(location); expect(mockRequestOptions.body.name).toEqual(name); + expect(mockRequestOptions.body.allow_gre_traffic_across_zones).toEqual(allowGreTrafficAcrossZones); expect(mockRequestOptions.body.global).toEqual(global); expect(mockRequestOptions.body.resource_group).toEqual(resourceGroup); expect(mockRequestOptions.qs.version).toEqual(transitGatewayApisServiceOptions.version); @@ -321,7 +325,7 @@ describe('TransitGatewayApisV1', () => { test('should prioritize user-given headers', () => { // parameters const location = 'us-south'; - const name = 'Transit_Service_BWTN_SJ_DL'; + const name = 'my-transit-gateway-in-TransitGateway'; const userAccept = 'fake/accept'; const userContentType = 'fake/contentType'; const createTransitGatewayParams = { @@ -538,10 +542,12 @@ describe('TransitGatewayApisV1', () => { function __updateTransitGatewayTest() { // Construct the params object for operation updateTransitGateway const id = 'testString'; + const allowGreTrafficAcrossZones = true; const global = true; - const name = 'my-transit-gateway'; + const name = 'my-resource'; const updateTransitGatewayParams = { id, + allowGreTrafficAcrossZones, global, name, }; @@ -560,6 +566,7 @@ describe('TransitGatewayApisV1', () => { const expectedAccept = 'application/json'; const expectedContentType = 'application/json'; checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); + expect(mockRequestOptions.body.allow_gre_traffic_across_zones).toEqual(allowGreTrafficAcrossZones); expect(mockRequestOptions.body.global).toEqual(global); expect(mockRequestOptions.body.name).toEqual(name); expect(mockRequestOptions.qs.version).toEqual(transitGatewayApisServiceOptions.version); @@ -698,16 +705,16 @@ describe('TransitGatewayApisV1', () => { const serviceUrl = transitGatewayApisServiceOptions.url; const path = '/connections'; const mockPagerResponse1 = - '{"next":{"start":"1"},"total_count":2,"limit":1,"connections":[{"base_network_type":"classic","name":"Transit_Service_BWTN_SJ_DL","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","created_at":"2019-01-01T12:00:00.000Z","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"network_account_id":"network_account_id","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","transit_gateway":{"crn":"crn:v1:bluemix:public:transit:us-south:a/123456::gateway:456f58c1-afe7-123a-0a0a-7f3d720f1a44","id":"456f58c1-afe7-123a-0a0a-7f3d720f1a44","name":"my-transit-gw100"},"tunnels":[{"created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; + '{"next":{"start":"1"},"total_count":2,"limit":1,"connections":[{"base_network_type":"classic","name":"Transit_Service_BWTN_SJ_DL","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","created_at":"2019-01-01T12:00:00.000Z","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"network_account_id":"network_account_id","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","transit_gateway":{"crn":"crn:v1:bluemix:public:transit:us-south:a/123456::gateway:456f58c1-afe7-123a-0a0a-7f3d720f1a44","id":"456f58c1-afe7-123a-0a0a-7f3d720f1a44","name":"my-transit-gw100"},"tunnels":[{"base_network_type":"classic","created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","network_account_id":"network_account_id","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; const mockPagerResponse2 = - '{"total_count":2,"limit":1,"connections":[{"base_network_type":"classic","name":"Transit_Service_BWTN_SJ_DL","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","created_at":"2019-01-01T12:00:00.000Z","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"network_account_id":"network_account_id","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","transit_gateway":{"crn":"crn:v1:bluemix:public:transit:us-south:a/123456::gateway:456f58c1-afe7-123a-0a0a-7f3d720f1a44","id":"456f58c1-afe7-123a-0a0a-7f3d720f1a44","name":"my-transit-gw100"},"tunnels":[{"created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; + '{"total_count":2,"limit":1,"connections":[{"base_network_type":"classic","name":"Transit_Service_BWTN_SJ_DL","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","created_at":"2019-01-01T12:00:00.000Z","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"network_account_id":"network_account_id","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","transit_gateway":{"crn":"crn:v1:bluemix:public:transit:us-south:a/123456::gateway:456f58c1-afe7-123a-0a0a-7f3d720f1a44","id":"456f58c1-afe7-123a-0a0a-7f3d720f1a44","name":"my-transit-gw100"},"tunnels":[{"base_network_type":"classic","created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","network_account_id":"network_account_id","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; beforeEach(() => { unmock_createRequest(); const scope = nock(serviceUrl) - .get((uri) => uri.includes(path)) + .get(uri => uri.includes(path)) .reply(200, mockPagerResponse1) - .get((uri) => uri.includes(path)) + .get(uri => uri.includes(path)) .reply(200, mockPagerResponse2); }); @@ -842,16 +849,16 @@ describe('TransitGatewayApisV1', () => { const serviceUrl = transitGatewayApisServiceOptions.url; const path = '/transit_gateways/testString/connections'; const mockPagerResponse1 = - '{"next":{"start":"1"},"total_count":2,"limit":1,"connections":[{"base_network_type":"classic","name":"Transit_Service_BWTN_SJ_DL","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","created_at":"2019-01-01T12:00:00.000Z","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"network_account_id":"network_account_id","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","tunnels":[{"created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; + '{"next":{"start":"1"},"total_count":2,"limit":1,"connections":[{"base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","base_network_type":"classic","cidr":"192.168.0.0/24","created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"name":"Transit_Service_BWTN_SJ_DL","network_account_id":"network_account_id","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","tunnels":[{"base_network_type":"classic","created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","network_account_id":"network_account_id","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; const mockPagerResponse2 = - '{"total_count":2,"limit":1,"connections":[{"base_network_type":"classic","name":"Transit_Service_BWTN_SJ_DL","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","created_at":"2019-01-01T12:00:00.000Z","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"network_account_id":"network_account_id","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","tunnels":[{"created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; + '{"total_count":2,"limit":1,"connections":[{"base_connection_id":"975f58c1-afe7-469a-9727-7f3d720f2d32","base_network_type":"classic","cidr":"192.168.0.0/24","created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":64490,"local_gateway_ip":"192.168.100.1","local_tunnel_ip":"192.168.129.2","mtu":9000,"name":"Transit_Service_BWTN_SJ_DL","network_account_id":"network_account_id","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","network_type":"vpc","prefix_filters":[{"action":"permit","before":"1a15dcab-7e40-45e1-b7c5-bc690eaa9782","created_at":"2019-01-01T12:00:00.000Z","ge":0,"id":"1a15dcab-7e30-45e1-b7c5-bc690eaa9865","le":32,"prefix":"192.168.100.0/24","updated_at":"2019-01-01T12:00:00.000Z"}],"prefix_filters_default":"permit","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.63.12","remote_tunnel_ip":"192.168.129.1","request_status":"pending","status":"attached","tunnels":[{"base_network_type":"classic","created_at":"2019-01-01T12:00:00.000Z","id":"1a15dca5-7e33-45e1-b7c5-bc690e569531","local_bgp_asn":13,"local_gateway_ip":"10.242.63.12","local_tunnel_ip":"192.168.100.20","mtu":9000,"name":"gre1","network_account_id":"network_account_id","network_id":"crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b","remote_bgp_asn":65010,"remote_gateway_ip":"10.242.33.22","remote_tunnel_ip":"192.168.129.1","status":"attached","updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}],"updated_at":"2019-01-01T12:00:00.000Z","zone":{"name":"us-south-1"}}]}'; beforeEach(() => { unmock_createRequest(); const scope = nock(serviceUrl) - .get((uri) => uri.includes(path)) + .get(uri => uri.includes(path)) .reply(200, mockPagerResponse1) - .get((uri) => uri.includes(path)) + .get(uri => uri.includes(path)) .reply(200, mockPagerResponse2); }); @@ -908,8 +915,8 @@ describe('TransitGatewayApisV1', () => { name: 'us-south-1', }; - // TransitGatewayRedundantGRETunnelTemplate - const transitGatewayRedundantGreTunnelTemplateModel = { + // TransitGatewayTunnelTemplate + const transitGatewayTunnelTemplateModel = { local_gateway_ip: '10.242.63.12', local_tunnel_ip: '192.168.100.20', name: 'gre1', @@ -925,6 +932,7 @@ describe('TransitGatewayApisV1', () => { const networkType = 'vpc'; const baseConnectionId = '975f58c1-afe7-469a-9727-7f3d720f2d32'; const baseNetworkType = 'classic'; + const cidr = '192.168.0.0/24'; const localGatewayIp = '192.168.100.1'; const localTunnelIp = '192.168.129.2'; const name = 'Transit_Service_BWTN_SJ_DL'; @@ -935,13 +943,14 @@ describe('TransitGatewayApisV1', () => { const remoteBgpAsn = 65010; const remoteGatewayIp = '10.242.63.12'; const remoteTunnelIp = '192.168.129.1'; - const tunnels = [transitGatewayRedundantGreTunnelTemplateModel]; + const tunnels = [transitGatewayTunnelTemplateModel]; const zone = zoneIdentityModel; const createTransitGatewayConnectionParams = { transitGatewayId, networkType, baseConnectionId, baseNetworkType, + cidr, localGatewayIp, localTunnelIp, name, @@ -973,6 +982,7 @@ describe('TransitGatewayApisV1', () => { expect(mockRequestOptions.body.network_type).toEqual(networkType); expect(mockRequestOptions.body.base_connection_id).toEqual(baseConnectionId); expect(mockRequestOptions.body.base_network_type).toEqual(baseNetworkType); + expect(mockRequestOptions.body.cidr).toEqual(cidr); expect(mockRequestOptions.body.local_gateway_ip).toEqual(localGatewayIp); expect(mockRequestOptions.body.local_tunnel_ip).toEqual(localTunnelIp); expect(mockRequestOptions.body.name).toEqual(name); @@ -1420,21 +1430,21 @@ describe('TransitGatewayApisV1', () => { }); }); - describe('getTransitGatewayGreTunnel', () => { + describe('listTransitGatewayGreTunnel', () => { describe('positive tests', () => { - function __getTransitGatewayGreTunnelTest() { - // Construct the params object for operation getTransitGatewayGreTunnel + function __listTransitGatewayGreTunnelTest() { + // Construct the params object for operation listTransitGatewayGreTunnel const transitGatewayId = 'testString'; const id = 'testString'; - const getTransitGatewayGreTunnelParams = { + const listTransitGatewayGreTunnelParams = { transitGatewayId, id, }; - const getTransitGatewayGreTunnelResult = transitGatewayApisService.getTransitGatewayGreTunnel(getTransitGatewayGreTunnelParams); + const listTransitGatewayGreTunnelResult = transitGatewayApisService.listTransitGatewayGreTunnel(listTransitGatewayGreTunnelParams); // all methods should return a Promise - expectToBePromise(getTransitGatewayGreTunnelResult); + expectToBePromise(listTransitGatewayGreTunnelResult); // assert that create request was called expect(createRequestMock).toHaveBeenCalledTimes(1); @@ -1452,17 +1462,17 @@ describe('TransitGatewayApisV1', () => { test('should pass the right params to createRequest with enable and disable retries', () => { // baseline test - __getTransitGatewayGreTunnelTest(); + __listTransitGatewayGreTunnelTest(); // enable retries and test again createRequestMock.mockClear(); transitGatewayApisService.enableRetries(); - __getTransitGatewayGreTunnelTest(); + __listTransitGatewayGreTunnelTest(); // disable retries and test again createRequestMock.mockClear(); transitGatewayApisService.disableRetries(); - __getTransitGatewayGreTunnelTest(); + __listTransitGatewayGreTunnelTest(); }); test('should prioritize user-given headers', () => { @@ -1471,7 +1481,7 @@ describe('TransitGatewayApisV1', () => { const id = 'testString'; const userAccept = 'fake/accept'; const userContentType = 'fake/contentType'; - const getTransitGatewayGreTunnelParams = { + const listTransitGatewayGreTunnelParams = { transitGatewayId, id, headers: { @@ -1480,7 +1490,7 @@ describe('TransitGatewayApisV1', () => { }, }; - transitGatewayApisService.getTransitGatewayGreTunnel(getTransitGatewayGreTunnelParams); + transitGatewayApisService.listTransitGatewayGreTunnel(listTransitGatewayGreTunnelParams); checkMediaHeaders(createRequestMock, userAccept, userContentType); }); }); @@ -1489,7 +1499,7 @@ describe('TransitGatewayApisV1', () => { test('should enforce required parameters', async () => { let err; try { - await transitGatewayApisService.getTransitGatewayGreTunnel({}); + await transitGatewayApisService.listTransitGatewayGreTunnel({}); } catch (e) { err = e; } @@ -1500,7 +1510,7 @@ describe('TransitGatewayApisV1', () => { test('should reject promise when required params are not given', async () => { let err; try { - await transitGatewayApisService.getTransitGatewayGreTunnel(); + await transitGatewayApisService.listTransitGatewayGreTunnel(); } catch (e) { err = e; } @@ -1857,7 +1867,7 @@ describe('TransitGatewayApisV1', () => { checkUrlAndMethod(mockRequestOptions, '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels/{gre_tunnel_id}', 'PATCH'); const expectedAccept = 'application/json'; - const expectedContentType = 'application/json'; + const expectedContentType = 'application/merge-patch+json'; checkMediaHeaders(createRequestMock, expectedAccept, expectedContentType); expect(mockRequestOptions.body.name).toEqual(name); expect(mockRequestOptions.qs.version).toEqual(transitGatewayApisServiceOptions.version); diff --git a/transit-gateway-api/v1.ts b/transit-gateway-api/v1.ts new file mode 100644 index 0000000..97cbede --- /dev/null +++ b/transit-gateway-api/v1.ts @@ -0,0 +1,3497 @@ +/** + * (C) Copyright IBM Corp. 2025. + * + * 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. + */ + +/** + * IBM OpenAPI SDK Code Generator Version: 3.73.0-eeee85a9-20230607-165104 + */ + +/* eslint-disable max-classes-per-file */ +/* eslint-disable no-await-in-loop */ + +import * as extend from 'extend'; +import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http'; +import { + Authenticator, + BaseService, + getAuthenticatorFromEnvironment, + validateParams, + UserOptions, +} from 'ibm-cloud-sdk-core'; +import { getSdkHeaders } from '../lib/common'; + +/** + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * API Version: __VERSION__ + */ + +class TransitGatewayApiV1 extends BaseService { + static DEFAULT_SERVICE_URL: string = 'https://transit.cloud.ibm.com/v1'; + + static DEFAULT_SERVICE_NAME: string = 'transit_gateway_api'; + + /************************* + * Factory method + ************************/ + + /** + * Constructs an instance of TransitGatewayApiV1 with passed in options and external configuration. + * + * @param {UserOptions} [options] - The parameters to send to the service. + * @param {string} [options.serviceName] - The name of the service to configure + * @param {Authenticator} [options.authenticator] - The Authenticator object used to authenticate requests to the service + * @param {string} [options.serviceUrl] - The URL for the service + * @returns {TransitGatewayApiV1} + */ + + public static newInstance(options: UserOptions): TransitGatewayApiV1 { + options = options || {}; + + if (!options.serviceName) { + options.serviceName = this.DEFAULT_SERVICE_NAME; + } + if (!options.authenticator) { + options.authenticator = getAuthenticatorFromEnvironment(options.serviceName); + } + const service = new TransitGatewayApiV1(options); + service.configureService(options.serviceName); + if (options.serviceUrl) { + service.setServiceUrl(options.serviceUrl); + } + return service; + } + + /** Requests the version of the API as of a date in the format `YYYY-MM-DD`. Any date up to the current date may + * be provided. Specify the current date to request the latest version. + */ + version: string; + + /** + * Construct a TransitGatewayApiV1 object. + * + * @param {Object} options - Options for the service. + * @param {string} options.version - Requests the version of the API as of a date in the format `YYYY-MM-DD`. Any date + * up to the current date may be provided. Specify the current date to request the latest version. + * @param {string} [options.serviceUrl] - The base url to use when contacting the service. The base url may differ between IBM Cloud regions. + * @param {OutgoingHttpHeaders} [options.headers] - Default headers that shall be included with every request to the service. + * @param {Authenticator} options.authenticator - The Authenticator object used to authenticate requests to the service + * @constructor + * @returns {TransitGatewayApiV1} + */ + constructor(options: UserOptions) { + options = options || {}; + + const _requiredParams = ['version']; + const _validationErrors = validateParams(options, _requiredParams, null); + if (_validationErrors) { + throw _validationErrors; + } + super(options); + if (options.serviceUrl) { + this.setServiceUrl(options.serviceUrl); + } else { + this.setServiceUrl(TransitGatewayApiV1.DEFAULT_SERVICE_URL); + } + this.version = options.version; + } + + /************************* + * transitGateways + ************************/ + + /** + * Retrieves all Transit Gateways. + * + * List all Transit Gateways in account the caller is authorized to view. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {number} [params.limit] - The maximum number of resources to return per page. + * @param {string} [params.start] - A server supplied token determining which resource to start the page on. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listTransitGateways( + params?: TransitGatewayApiV1.ListTransitGatewaysParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['limit', 'start', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'limit': _params.limit, + 'start': _params.start, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGateways' + ); + + const parameters = { + options: { + url: '/transit_gateways', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Creates a Transit Gateway. + * + * Create a Transit Gateway based on the supplied input template. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {boolean} [params.allowGreTrafficAcrossZones] - Allow GRE traffic in this gateway to flow across zones. + * @param {boolean} [params.global] - Allow global routing for a Transit Gateway. If unspecified, the default value is + * false. + * @param {string} [params.location] - Location of Transit Gateway Services. + * @param {string} [params.name] - A human readable name for the transit gateway. + * @param {ResourceGroupIdentity} [params.resourceGroup] - The resource group to use. If unspecified, the account's + * [default resource group](https://console.bluemix.net/apidocs/resource-manager#introduction) is used. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createTransitGateway( + params?: TransitGatewayApiV1.CreateTransitGatewayParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['allowGreTrafficAcrossZones', 'global', 'location', 'name', 'resourceGroup', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'allow_gre_traffic_across_zones': _params.allowGreTrafficAcrossZones, + 'global': _params.global, + 'location': _params.location, + 'name': _params.name, + 'resource_group': _params.resourceGroup, + }; + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGateway' + ); + + const parameters = { + options: { + url: '/transit_gateways', + method: 'POST', + body, + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Deletes specified Transit Gateway. + * + * This request deletes a Transit Gateway. This operation cannot be reversed. For this request to succeed, the Transit + * Gateway must not contain connections. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.id - The Transit Gateway identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteTransitGateway( + params: TransitGatewayApiV1.DeleteTransitGatewayParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['id']; + const _validParams = ['id', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGateway' + ); + + const parameters = { + options: { + url: '/transit_gateways/{id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Retrieves specified Transit Gateway. + * + * This request retrieves a single Transit Gateway specified by the identifier in the URL. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.id - The Transit Gateway identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getTransitGateway( + params: TransitGatewayApiV1.GetTransitGatewayParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['id']; + const _validParams = ['id', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGateway' + ); + + const parameters = { + options: { + url: '/transit_gateways/{id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Updates specified Transit Gateway. + * + * This request updates a Transit Gateway's name and/or global flag. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.id - The Transit Gateway identifier. + * @param {boolean} [params.allowGreTrafficAcrossZones] - Allow GRE traffic in this gateway to flow across zones. + * @param {boolean} [params.global] - Allow global routing for a Transit Gateway. + * @param {string} [params.name] - A human readable name for a resource. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateTransitGateway( + params: TransitGatewayApiV1.UpdateTransitGatewayParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['id']; + const _validParams = ['id', 'allowGreTrafficAcrossZones', 'global', 'name', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'allow_gre_traffic_across_zones': _params.allowGreTrafficAcrossZones, + 'global': _params.global, + 'name': _params.name, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'updateTransitGateway' + ); + + const parameters = { + options: { + url: '/transit_gateways/{id}', + method: 'PATCH', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + /************************* + * transitConnections + ************************/ + + /** + * Retrieves all connections. + * + * List all transit gateway connections associated with this account. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {number} [params.limit] - The maximum number of resources to return per page. + * @param {string} [params.start] - A server supplied token determining which resource to start the page on. + * @param {string} [params.networkId] - Search for connections with the given network_id value. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listConnections( + params?: TransitGatewayApiV1.ListConnectionsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['limit', 'start', 'networkId', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'limit': _params.limit, + 'start': _params.start, + 'network_id': _params.networkId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listConnections' + ); + + const parameters = { + options: { + url: '/connections', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + /************************* + * transitGatewaysNetworkConnections + ************************/ + + /** + * Retrieves all connections in a Transit Gateway. + * + * This request retrieves all connections in a Transit Gateway. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} [params.start] - A server supplied token determining which resource to start the page on. + * @param {number} [params.limit] - The maximum number of resources to return per page. + * @param {string} [params.name] - Search for connections with the given name. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listTransitGatewayConnections( + params: TransitGatewayApiV1.ListTransitGatewayConnectionsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId']; + const _validParams = ['transitGatewayId', 'start', 'limit', 'name', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'start': _params.start, + 'limit': _params.limit, + 'name': _params.name, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGatewayConnections' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Adds a connection to a Transit Gateway. + * + * Add a connection to Transit Gateway. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.networkType - Defines what type of network is connected via this connection. + * @param {string} [params.baseConnectionId] - Deprecated: network_type `gre_tunnel` connections must be created over + * an existing network_type `classic` connection. This field must specify the ID of an active transit gateway + * network_type `classic` connection in the same transit gateway. + * + * This field is required for network type `gre_tunnel` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. + * @param {string} [params.baseNetworkType] - The type of network the Unbound GRE tunnel is targeting. This field is + * required for network type `unbound_gre_tunnel` and must be set to `classic`. For a `redundant_gre` network type, + * the value is required and can be either VPC or Classic. This field is required to be unspecified for network type + * `classic`, `vmware`, `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. + * @param {string} [params.cidr] - network_type 'vpn_gateway' connections use 'cdr' to specify the CIDR to use for the + * VPN GRE tunnels. + * + * This field is required for network type `vpn_gateway` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `gre_tunnel`, `unbound_gre_tunnel`, and `redundant_gre` connections. + * @param {string} [params.localGatewayIp] - Local gateway IP address. This field is required for network type + * `gre_tunnel` and `unbound_gre_tunnel` connections. This field is required to be unspecified for network type + * `classic`, `vmware`, `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + * @param {string} [params.localTunnelIp] - Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip + * addresses must be in the same /30 network. Neither can be the network nor broadcast addresses. + * + * This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + * @param {string} [params.name] - The user-defined name for this transit gateway connection. Network type `vpc` + * connections are defaulted to the name of the VPC. Network type `classic` connections are named `classic`. + * + * This field is required for network type `power_virtual_server`, `directlink`, `vmware`, `gre_tunnel`, + * `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. + * + * This field is optional for network type `classic`, `vpc` connections. + * @param {string} [params.networkAccountId] - The ID of the account which owns the network that is being connected. + * Generally only used if the network is in a different account than the gateway. This field is required for type + * `unbound_gre_tunnel` when the associated_network_type is `classic` or network_type is `redundant_gre` and the GRE + * tunnel is in a different account than the gateway. + * @param {string} [params.networkId] - The ID of the network being connected via this connection. For network types + * `vpc`,`power_virtual_server`, `vmware`, `directlink` and `vpn_gateway` this is the CRN of the VPC / PowerVS / VDC / + * Direct Link / VPN gateway respectively. This field is required for network type `vpc`, `power_virtual_server`, + * `vmware`, `vpn_gateway`, and `directlink` connections. It is also required for `redundant_gre` connections when + * the base_network_type is set to VPC. This field is required to be unspecified for network type `classic`, + * `gre_tunnel` and `unbound_gre_tunnel` connections. + * @param {TransitGatewayConnectionPrefixFilter[]} [params.prefixFilters] - Array of prefix route filters for a + * transit gateway connection. Prefix filters can be specified for netowrk type `vpc`, `classic`, + * `power_virtual_server` and `directlink` connections. They are not allowed for type `gre_tunnel` connections. This + * is order dependent with those first in the array being applied first, and those at the end of the array being + * applied last, or just before applying the default. This field is optional for network type `classic`, `vpc`, + * `directlink`, and `power_virtual_server` connections. This field is required to be unspecified for network type + * `gre_tunnel`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. + * @param {string} [params.prefixFiltersDefault] - Default setting of permit or deny which applies to any routes that + * don't match a specified filter. This field is optional for network type `classic`, `vpc`, `directlink`, and + * `power_virtual_server` connections. This field is required to be unspecified for network type `gre_tunnel`, + * `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. + * @param {number} [params.remoteBgpAsn] - Remote network BGP ASN. The following ASN values are reserved and + * unavailable 0, 13884, 36351, 64512-64513, 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If + * `remote_bgp_asn` is omitted on gre_tunnel or unbound_gre_tunnel connection create requests IBM will assign an ASN. + * + * This field is optional for network type `gre_tunnel` and `unbound_gre_tunnel` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. + * @param {string} [params.remoteGatewayIp] - Remote gateway IP address. This field is required for network type + * `gre_tunnel` and `unbound_gre_tunnel` connections. This field is required to be unspecified for network type + * `classic`, `vmware`, `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + * @param {string} [params.remoteTunnelIp] - Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip + * addresses must be in the same /30 network. Neither can be the network nor broadcast addresses. + * + * This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + * @param {TransitGatewayTunnelTemplate[]} [params.tunnels] - Array of GRE tunnels for a transit gateway redundant GRE + * tunnel connection. This field is required for `redundant_gre` connections. + * @param {ZoneIdentity} [params.zone] - Specify the connection's location. The specified availability zone must + * reside in the gateway's region. + * Use the IBM Cloud global catalog to list zones within the desired region. + * + * This field is required for network type `gre_tunnel`, `unbound_gre_tunnel` and `vpn_gateway` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server` and `redundant_gre` connections. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createTransitGatewayConnection( + params: TransitGatewayApiV1.CreateTransitGatewayConnectionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'networkType']; + const _validParams = ['transitGatewayId', 'networkType', 'baseConnectionId', 'baseNetworkType', 'cidr', 'localGatewayIp', 'localTunnelIp', 'name', 'networkAccountId', 'networkId', 'prefixFilters', 'prefixFiltersDefault', 'remoteBgpAsn', 'remoteGatewayIp', 'remoteTunnelIp', 'tunnels', 'zone', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'network_type': _params.networkType, + 'base_connection_id': _params.baseConnectionId, + 'base_network_type': _params.baseNetworkType, + 'cidr': _params.cidr, + 'local_gateway_ip': _params.localGatewayIp, + 'local_tunnel_ip': _params.localTunnelIp, + 'name': _params.name, + 'network_account_id': _params.networkAccountId, + 'network_id': _params.networkId, + 'prefix_filters': _params.prefixFilters, + 'prefix_filters_default': _params.prefixFiltersDefault, + 'remote_bgp_asn': _params.remoteBgpAsn, + 'remote_gateway_ip': _params.remoteGatewayIp, + 'remote_tunnel_ip': _params.remoteTunnelIp, + 'tunnels': _params.tunnels, + 'zone': _params.zone, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayConnection' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Removes a connection from Transit Gateway. + * + * After the specified connection is detached, entities still within the Transit Gateway will no longer be able to + * communicate directly to it through the IBM Cloud private backbone. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteTransitGatewayConnection( + params: TransitGatewayApiV1.DeleteTransitGatewayConnectionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id']; + const _validParams = ['transitGatewayId', 'id', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGatewayConnection' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Retrieves specified Transit Gateway connection. + * + * This request retrieves a connection from the Transit Gateway. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getTransitGatewayConnection( + params: TransitGatewayApiV1.GetTransitGatewayConnectionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id']; + const _validParams = ['transitGatewayId', 'id', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGatewayConnection' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Updates specified Transit Gateway connection. + * + * Update the name of a connection to a Transit Gateway. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} [params.name] - The user-defined name for this transit gateway. If specified as empty string or + * nil, the name will be the network name (the name of the VPC in the case of network type `vpc`, and the word + * Classic, in the case of network type `classic`). + * @param {string} [params.prefixFiltersDefault] - Default setting of permit or deny which applies to any routes that + * don't match a specified filter. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateTransitGatewayConnection( + params: TransitGatewayApiV1.UpdateTransitGatewayConnectionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id']; + const _validParams = ['transitGatewayId', 'id', 'name', 'prefixFiltersDefault', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'prefix_filters_default': _params.prefixFiltersDefault, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'updateTransitGatewayConnection' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}', + method: 'PATCH', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Performs actions on a connection for a Transit Gateway. + * + * Allow a network owner to approve or reject a cross-account connection request. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.action - The action that is to be performed against the connection request. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createTransitGatewayConnectionActions( + params: TransitGatewayApiV1.CreateTransitGatewayConnectionActionsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'action']; + const _validParams = ['transitGatewayId', 'id', 'action', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'action': _params.action, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayConnectionActions' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/actions', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Retrieves specified Transit Gateway redundant gre connection tunnels. + * + * This request retrieves a list of all the tunnels for the redundant gre connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listTransitGatewayGreTunnel( + params: TransitGatewayApiV1.ListTransitGatewayGreTunnelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id']; + const _validParams = ['transitGatewayId', 'id', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGatewayGreTunnel' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Creates a Transit Gateway redundant GRE tunnel. + * + * Add a tunnel to an existing Redundant GRE connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.localGatewayIp - Local gateway IP address. + * @param {string} params.localTunnelIp - Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses + * must be in the same /30 network. Neither can be the network nor broadcast addresses. + * @param {string} params.name - The user-defined name for this tunnel connection. + * @param {string} params.remoteGatewayIp - Remote gateway IP address. + * @param {string} params.remoteTunnelIp - Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip + * addresses must be in the same /30 network. Neither can be the network nor broadcast addresses. + * @param {ZoneIdentity} params.zone - Specify the connection's location. The specified availability zone must reside + * in the gateway's region. + * Use the IBM Cloud global catalog to list zones within the desired region. + * @param {number} [params.remoteBgpAsn] - Remote network BGP ASN. The following ASN values are reserved and + * unavailable 0, 13884, 36351, 64512-64513, 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If + * `remote_bgp_asn` is omitted on create requests, IBM will assign an ASN. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createTransitGatewayGreTunnel( + params: TransitGatewayApiV1.CreateTransitGatewayGreTunnelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'localGatewayIp', 'localTunnelIp', 'name', 'remoteGatewayIp', 'remoteTunnelIp', 'zone']; + const _validParams = ['transitGatewayId', 'id', 'localGatewayIp', 'localTunnelIp', 'name', 'remoteGatewayIp', 'remoteTunnelIp', 'zone', 'remoteBgpAsn', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'local_gateway_ip': _params.localGatewayIp, + 'local_tunnel_ip': _params.localTunnelIp, + 'name': _params.name, + 'remote_gateway_ip': _params.remoteGatewayIp, + 'remote_tunnel_ip': _params.remoteTunnelIp, + 'zone': _params.zone, + 'remote_bgp_asn': _params.remoteBgpAsn, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayGreTunnel' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Deletes a specified Transit Gateway redundant GRE tunnel. + * + * Remove a tunnel from a redundant GRE connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.greTunnelId - The tunnel identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteTransitGatewayConnectionTunnels( + params: TransitGatewayApiV1.DeleteTransitGatewayConnectionTunnelsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'greTunnelId']; + const _validParams = ['transitGatewayId', 'id', 'greTunnelId', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + 'gre_tunnel_id': _params.greTunnelId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGatewayConnectionTunnels' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels/{gre_tunnel_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Retrieves specified Transit Gateway connection tunnel. + * + * This request retrieves a connection tunnel from the Transit Gateway connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.greTunnelId - The tunnel identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getTransitGatewayConnectionTunnels( + params: TransitGatewayApiV1.GetTransitGatewayConnectionTunnelsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'greTunnelId']; + const _validParams = ['transitGatewayId', 'id', 'greTunnelId', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + 'gre_tunnel_id': _params.greTunnelId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGatewayConnectionTunnels' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels/{gre_tunnel_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Updates specified Transit Gateway redundant GRE tunnel. + * + * Update the name of a connection tunnel. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.greTunnelId - The tunnel identifier. + * @param {string} [params.name] - The user-defined name for this connection tunnel. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateTransitGatewayConnectionTunnels( + params: TransitGatewayApiV1.UpdateTransitGatewayConnectionTunnelsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'greTunnelId']; + const _validParams = ['transitGatewayId', 'id', 'greTunnelId', 'name', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + 'gre_tunnel_id': _params.greTunnelId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'updateTransitGatewayConnectionTunnels' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/tunnels/{gre_tunnel_id}', + method: 'PATCH', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/merge-patch+json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + /************************* + * transitLocations + ************************/ + + /** + * Lists all locations that support Transit Gateways. + * + * List all locations that support Transit Gateways. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listGatewayLocations( + params?: TransitGatewayApiV1.ListGatewayLocationsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listGatewayLocations' + ); + + const parameters = { + options: { + url: '/locations', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Shows the details of a given Transit Gateway location. + * + * Get the details of a Transit Gateway Location. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.name - The Transit Gateway location Name. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getGatewayLocation( + params: TransitGatewayApiV1.GetGatewayLocationParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['name']; + const _validParams = ['name', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'name': _params.name, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getGatewayLocation' + ); + + const parameters = { + options: { + url: '/locations/{name}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + /************************* + * transitGatewayConnectionPrefixFilters + ************************/ + + /** + * Retrieves all prefix filters in a Transit Gateway connection. + * + * This request retrieves all prefix filters in a Transit Gateway connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listTransitGatewayConnectionPrefixFilters( + params: TransitGatewayApiV1.ListTransitGatewayConnectionPrefixFiltersParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id']; + const _validParams = ['transitGatewayId', 'id', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGatewayConnectionPrefixFilters' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Add a prefix filter to a Transit Gateway connection. + * + * Add a prefix filter to a Transit Gateway connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.action - Whether or not this prefix filter should allow or deny prefixes matching this + * filter's prefix definition. + * @param {string} params.prefix - The IPv4 Prefix to be matched by this filter. If both the `le` and `ge` are zero, + * then this filter will only apply to routes that exactly match this prefix, while a non-zero value for either `le` + * or `ge`, this filter can apply to multiple routes with different prefix lengths, but will still only apply to + * prefixes contained in the address space defined by `prefix`. + * @param {string} [params.before] - A reference to the prefix filter that will be the next filter applied to the + * Transit Gateway connection. + * + * If this field is blank, this prefix filter will be the last rule applied before the connection's default rule. + * + * When a prefix filter is created with the same before field as an existing prefix filter, the existing filter will + * be applied before the new filter, and the existing filter's before field will be updated accordingly. + * @param {number} [params.ge] - Defines the minimum matched prefix precision. If this field is non-zero then the + * filter will match all routes within the `prefix` that have a prefix length greater than or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's prefix + * or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route matching + * behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. + * @param {number} [params.le] - Defines the maximum matched prefix precision. If this field is non-zero then the + * filter will match all routes within the `prefix` that have a prefix length less than or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's prefix + * or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route matching + * behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, inclusive. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createTransitGatewayConnectionPrefixFilter( + params: TransitGatewayApiV1.CreateTransitGatewayConnectionPrefixFilterParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'action', 'prefix']; + const _validParams = ['transitGatewayId', 'id', 'action', 'prefix', 'before', 'ge', 'le', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'action': _params.action, + 'prefix': _params.prefix, + 'before': _params.before, + 'ge': _params.ge, + 'le': _params.le, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayConnectionPrefixFilter' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Replaces the prefix filters of the Transit Gateway connection. + * + * Replaces the prefix filters of the Transit Gateway connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {PrefixFilterPut[]} params.prefixFilters - Array of prefix filters. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public replaceTransitGatewayConnectionPrefixFilter( + params: TransitGatewayApiV1.ReplaceTransitGatewayConnectionPrefixFilterParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'prefixFilters']; + const _validParams = ['transitGatewayId', 'id', 'prefixFilters', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'prefix_filters': _params.prefixFilters, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'replaceTransitGatewayConnectionPrefixFilter' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters', + method: 'PUT', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Remove prefix filter from Transit Gateway connection. + * + * Delete a prefix filter. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.filterId - Prefix filter identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteTransitGatewayConnectionPrefixFilter( + params: TransitGatewayApiV1.DeleteTransitGatewayConnectionPrefixFilterParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'filterId']; + const _validParams = ['transitGatewayId', 'id', 'filterId', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + 'filter_id': _params.filterId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGatewayConnectionPrefixFilter' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters/{filter_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Retrieves specified Transit Gateway connection prefix filter. + * + * This request retrieves a prefix filter from the Transit Gateway connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.filterId - Prefix filter identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getTransitGatewayConnectionPrefixFilter( + params: TransitGatewayApiV1.GetTransitGatewayConnectionPrefixFilterParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'filterId']; + const _validParams = ['transitGatewayId', 'id', 'filterId', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + 'filter_id': _params.filterId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGatewayConnectionPrefixFilter' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters/{filter_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Updates specified Transit Gateway connection prefix filter. + * + * Update prefix filter for a Transit Gateway Connection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - The connection identifier. + * @param {string} params.filterId - Prefix filter identifier. + * @param {string} [params.action] - Whether or not this prefix filter should allow or deny prefixes matching this + * filter's prefix definition. + * @param {string} [params.before] - A reference to the prefix filter that will be the next filter applied to the + * Transit Gateway connection. + * + * If this field is blank, this prefix filter will be the last rule applied before the connection's default rule. + * + * When a prefix filter is created with the same before field as an existing prefix filter, the existing filter will + * be applied before the new filter, and the existing filter's before field will be updated accordingly. + * @param {number} [params.ge] - Defines the minimum matched prefix precision. If this field is non-zero then the + * filter will match all routes within the `prefix` that have a prefix length greater or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's prefix + * or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route matching + * behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. + * @param {number} [params.le] - Defines the maximum matched prefix precision. If this field is non-zero then the + * filter will match all routes within the `prefix` that have a prefix length less than or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's prefix + * or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route matching + * behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, inclusive. + * @param {string} [params.prefix] - The IPv4 Prefix to be matched by this filter. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateTransitGatewayConnectionPrefixFilter( + params: TransitGatewayApiV1.UpdateTransitGatewayConnectionPrefixFilterParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id', 'filterId']; + const _validParams = ['transitGatewayId', 'id', 'filterId', 'action', 'before', 'ge', 'le', 'prefix', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'action': _params.action, + 'before': _params.before, + 'ge': _params.ge, + 'le': _params.le, + 'prefix': _params.prefix, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + 'filter_id': _params.filterId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'updateTransitGatewayConnectionPrefixFilter' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/connections/{id}/prefix_filters/{filter_id}', + method: 'PATCH', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + /************************* + * transitGatewayRouteReports + ************************/ + + /** + * Lists route reports. + * + * Retrieve all route reports for the specified Transit Gateway. There will normally be at most one completed report + * and one pending report. Additionally, completed route reports are written to IBM Cloud Activity Tracker. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listTransitGatewayRouteReports( + params: TransitGatewayApiV1.ListTransitGatewayRouteReportsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId']; + const _validParams = ['transitGatewayId', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGatewayRouteReports' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/route_reports', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Requests a route report. + * + * Request route report generation. While report generation is in progress, additional requests to generate a report + * are ignored and return the current pending report. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createTransitGatewayRouteReport( + params: TransitGatewayApiV1.CreateTransitGatewayRouteReportParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId']; + const _validParams = ['transitGatewayId', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayRouteReport' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/route_reports', + method: 'POST', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Deletes a route report. + * + * Delete a route report. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - Route report identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteTransitGatewayRouteReport( + params: TransitGatewayApiV1.DeleteTransitGatewayRouteReportParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id']; + const _validParams = ['transitGatewayId', 'id', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGatewayRouteReport' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/route_reports/{id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } + + /** + * Retrieves a route report. + * + * Retrieve a route report. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.transitGatewayId - The Transit Gateway identifier. + * @param {string} params.id - Route report identifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getTransitGatewayRouteReport( + params: TransitGatewayApiV1.GetTransitGatewayRouteReportParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['transitGatewayId', 'id']; + const _validParams = ['transitGatewayId', 'id', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'transit_gateway_id': _params.transitGatewayId, + 'id': _params.id, + }; + + const sdkHeaders = getSdkHeaders( + TransitGatewayApiV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGatewayRouteReport' + ); + + const parameters = { + options: { + url: '/transit_gateways/{transit_gateway_id}/route_reports/{id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + { + 'Accept': 'application/json', + }, + _params.headers + ), + }), + }; + + return this.createRequest(parameters); + } +} + +/************************* + * interfaces + ************************/ + +namespace TransitGatewayApiV1 { + /** Options for the `TransitGatewayApiV1` constructor. */ + export interface Options extends UserOptions { + /** Requests the version of the API as of a date in the format `YYYY-MM-DD`. Any date up to the current date may + * be provided. Specify the current date to request the latest version. + */ + version: string; + } + + /** An operation response. */ + export interface Response { + result: T; + status: number; + statusText: string; + headers: IncomingHttpHeaders; + } + + /** The callback for a service request. */ + export type Callback = (error: any, response?: Response) => void; + + /** The body of a service request that returns no response data. */ + export interface EmptyObject {} + + /** A standard JS object, defined to avoid the limitations of `Object` and `object` */ + export interface JsonObject { + [key: string]: any; + } + + /************************* + * request interfaces + ************************/ + + /** Parameters for the `listTransitGateways` operation. */ + export interface ListTransitGatewaysParams { + /** The maximum number of resources to return per page. */ + limit?: number; + /** A server supplied token determining which resource to start the page on. */ + start?: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `createTransitGateway` operation. */ + export interface CreateTransitGatewayParams { + /** Allow GRE traffic in this gateway to flow across zones. */ + allowGreTrafficAcrossZones?: boolean; + /** Allow global routing for a Transit Gateway. If unspecified, the default value is false. */ + global?: boolean; + /** Location of Transit Gateway Services. */ + location?: string; + /** A human readable name for the transit gateway. */ + name?: string; + /** The resource group to use. If unspecified, the account's [default resource + * group](https://console.bluemix.net/apidocs/resource-manager#introduction) is used. + */ + resourceGroup?: ResourceGroupIdentity; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `deleteTransitGateway` operation. */ + export interface DeleteTransitGatewayParams { + /** The Transit Gateway identifier. */ + id: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `getTransitGateway` operation. */ + export interface GetTransitGatewayParams { + /** The Transit Gateway identifier. */ + id: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `updateTransitGateway` operation. */ + export interface UpdateTransitGatewayParams { + /** The Transit Gateway identifier. */ + id: string; + /** Allow GRE traffic in this gateway to flow across zones. */ + allowGreTrafficAcrossZones?: boolean; + /** Allow global routing for a Transit Gateway. */ + global?: boolean; + /** A human readable name for a resource. */ + name?: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `listConnections` operation. */ + export interface ListConnectionsParams { + /** The maximum number of resources to return per page. */ + limit?: number; + /** A server supplied token determining which resource to start the page on. */ + start?: string; + /** Search for connections with the given network_id value. */ + networkId?: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `listTransitGatewayConnections` operation. */ + export interface ListTransitGatewayConnectionsParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** A server supplied token determining which resource to start the page on. */ + start?: string; + /** The maximum number of resources to return per page. */ + limit?: number; + /** Search for connections with the given name. */ + name?: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `createTransitGatewayConnection` operation. */ + export interface CreateTransitGatewayConnectionParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** Defines what type of network is connected via this connection. */ + networkType: CreateTransitGatewayConnectionConstants.NetworkType | string; + /** Deprecated: network_type `gre_tunnel` connections must be created over an existing network_type `classic` + * connection. This field must specify the ID of an active transit gateway network_type `classic` connection in the + * same transit gateway. + * + * This field is required for network type `gre_tunnel` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. + */ + baseConnectionId?: string; + /** The type of network the Unbound GRE tunnel is targeting. This field is required for network type + * `unbound_gre_tunnel` and must be set to `classic`. For a `redundant_gre` network type, the value is required + * and can be either VPC or Classic. This field is required to be unspecified for network type `classic`, `vmware`, + * `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. + */ + baseNetworkType?: CreateTransitGatewayConnectionConstants.BaseNetworkType | string; + /** network_type 'vpn_gateway' connections use 'cdr' to specify the CIDR to use for the VPN GRE tunnels. + * + * This field is required for network type `vpn_gateway` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `gre_tunnel`, `unbound_gre_tunnel`, and `redundant_gre` connections. + */ + cidr?: string; + /** Local gateway IP address. This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + */ + localGatewayIp?: string; + /** Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 network. + * Neither can be the network nor broadcast addresses. + * + * This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + */ + localTunnelIp?: string; + /** The user-defined name for this transit gateway connection. Network type `vpc` connections are defaulted to + * the name of the VPC. Network type `classic` connections are named `classic`. + * + * This field is required for network type `power_virtual_server`, `directlink`, `vmware`, `gre_tunnel`, + * `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. + * + * This field is optional for network type `classic`, `vpc` connections. + */ + name?: string; + /** The ID of the account which owns the network that is being connected. Generally only used if the network is + * in a different account than the gateway. This field is required for type `unbound_gre_tunnel` when the + * associated_network_type is `classic` or network_type is `redundant_gre` and the GRE tunnel is in a different + * account than the gateway. + */ + networkAccountId?: string; + /** The ID of the network being connected via this connection. For network types `vpc`,`power_virtual_server`, + * `vmware`, `directlink` and `vpn_gateway` this is the CRN of the VPC / PowerVS / VDC / Direct Link / VPN gateway + * respectively. This field is required for network type `vpc`, `power_virtual_server`, `vmware`, `vpn_gateway`, + * and `directlink` connections. It is also required for `redundant_gre` connections when the base_network_type is + * set to VPC. This field is required to be unspecified for network type `classic`, `gre_tunnel` and + * `unbound_gre_tunnel` connections. + */ + networkId?: string; + /** Array of prefix route filters for a transit gateway connection. Prefix filters can be specified for netowrk + * type `vpc`, `classic`, `power_virtual_server` and `directlink` connections. They are not allowed for type + * `gre_tunnel` connections. This is order dependent with those first in the array being applied first, and those + * at the end of the array being applied last, or just before applying the default. This field is optional for + * network type `classic`, `vpc`, `directlink`, and `power_virtual_server` connections. This field is required to + * be unspecified for network type `gre_tunnel`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` + * connections. + */ + prefixFilters?: TransitGatewayConnectionPrefixFilter[]; + /** Default setting of permit or deny which applies to any routes that don't match a specified filter. This + * field is optional for network type `classic`, `vpc`, `directlink`, and `power_virtual_server` connections. This + * field is required to be unspecified for network type `gre_tunnel`, `unbound_gre_tunnel`, `vpn_gateway` and + * `redundant_gre` connections. + */ + prefixFiltersDefault?: CreateTransitGatewayConnectionConstants.PrefixFiltersDefault | string; + /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, + * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If `remote_bgp_asn` is omitted on gre_tunnel + * or unbound_gre_tunnel connection create requests IBM will assign an ASN. + * + * This field is optional for network type `gre_tunnel` and `unbound_gre_tunnel` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. + */ + remoteBgpAsn?: number; + /** Remote gateway IP address. This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + */ + remoteGatewayIp?: string; + /** Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 + * network. Neither can be the network nor broadcast addresses. + * + * This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + */ + remoteTunnelIp?: string; + /** Array of GRE tunnels for a transit gateway redundant GRE tunnel connection. This field is required for + * `redundant_gre` connections. + */ + tunnels?: TransitGatewayTunnelTemplate[]; + /** Specify the connection's location. The specified availability zone must reside in the gateway's region. + * Use the IBM Cloud global catalog to list zones within the desired region. + * + * This field is required for network type `gre_tunnel`, `unbound_gre_tunnel` and `vpn_gateway` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server` and `redundant_gre` connections. + */ + zone?: ZoneIdentity; + headers?: OutgoingHttpHeaders; + } + + /** Constants for the `createTransitGatewayConnection` operation. */ + export namespace CreateTransitGatewayConnectionConstants { + /** Defines what type of network is connected via this connection. */ + export enum NetworkType { + CLASSIC = 'classic', + DIRECTLINK = 'directlink', + GRE_TUNNEL = 'gre_tunnel', + UNBOUND_GRE_TUNNEL = 'unbound_gre_tunnel', + VPC = 'vpc', + POWER_VIRTUAL_SERVER = 'power_virtual_server', + REDUNDANT_GRE = 'redundant_gre', + VMWARE = 'vmware', + VPN_GATEWAY = 'vpn_gateway', + } + /** The type of network the Unbound GRE tunnel is targeting. This field is required for network type `unbound_gre_tunnel` and must be set to `classic`. For a `redundant_gre` network type, the value is required and can be either VPC or Classic. This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. */ + export enum BaseNetworkType { + CLASSIC = 'classic', + VPC = 'vpc', + } + /** Default setting of permit or deny which applies to any routes that don't match a specified filter. This field is optional for network type `classic`, `vpc`, `directlink`, and `power_virtual_server` connections. This field is required to be unspecified for network type `gre_tunnel`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. */ + export enum PrefixFiltersDefault { + PERMIT = 'permit', + DENY = 'deny', + } + } + + /** Parameters for the `deleteTransitGatewayConnection` operation. */ + export interface DeleteTransitGatewayConnectionParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `getTransitGatewayConnection` operation. */ + export interface GetTransitGatewayConnectionParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `updateTransitGatewayConnection` operation. */ + export interface UpdateTransitGatewayConnectionParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** The user-defined name for this transit gateway. If specified as empty string or nil, the name will be the + * network name (the name of the VPC in the case of network type `vpc`, and the word Classic, in the case of + * network type `classic`). + */ + name?: string; + /** Default setting of permit or deny which applies to any routes that don't match a specified filter. */ + prefixFiltersDefault?: UpdateTransitGatewayConnectionConstants.PrefixFiltersDefault | string; + headers?: OutgoingHttpHeaders; + } + + /** Constants for the `updateTransitGatewayConnection` operation. */ + export namespace UpdateTransitGatewayConnectionConstants { + /** Default setting of permit or deny which applies to any routes that don't match a specified filter. */ + export enum PrefixFiltersDefault { + PERMIT = 'permit', + DENY = 'deny', + } + } + + /** Parameters for the `createTransitGatewayConnectionActions` operation. */ + export interface CreateTransitGatewayConnectionActionsParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** The action that is to be performed against the connection request. */ + action: CreateTransitGatewayConnectionActionsConstants.Action | string; + headers?: OutgoingHttpHeaders; + } + + /** Constants for the `createTransitGatewayConnectionActions` operation. */ + export namespace CreateTransitGatewayConnectionActionsConstants { + /** The action that is to be performed against the connection request. */ + export enum Action { + APPROVE = 'approve', + REJECT = 'reject', + } + } + + /** Parameters for the `listTransitGatewayGreTunnel` operation. */ + export interface ListTransitGatewayGreTunnelParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `createTransitGatewayGreTunnel` operation. */ + export interface CreateTransitGatewayGreTunnelParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** Local gateway IP address. */ + localGatewayIp: string; + /** Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 network. + * Neither can be the network nor broadcast addresses. + */ + localTunnelIp: string; + /** The user-defined name for this tunnel connection. */ + name: string; + /** Remote gateway IP address. */ + remoteGatewayIp: string; + /** Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 + * network. Neither can be the network nor broadcast addresses. + */ + remoteTunnelIp: string; + /** Specify the connection's location. The specified availability zone must reside in the gateway's region. + * Use the IBM Cloud global catalog to list zones within the desired region. + */ + zone: ZoneIdentity; + /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, + * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If `remote_bgp_asn` is omitted on create + * requests, IBM will assign an ASN. + */ + remoteBgpAsn?: number; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `deleteTransitGatewayConnectionTunnels` operation. */ + export interface DeleteTransitGatewayConnectionTunnelsParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** The tunnel identifier. */ + greTunnelId: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `getTransitGatewayConnectionTunnels` operation. */ + export interface GetTransitGatewayConnectionTunnelsParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** The tunnel identifier. */ + greTunnelId: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `updateTransitGatewayConnectionTunnels` operation. */ + export interface UpdateTransitGatewayConnectionTunnelsParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** The tunnel identifier. */ + greTunnelId: string; + /** The user-defined name for this connection tunnel. */ + name?: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `listGatewayLocations` operation. */ + export interface ListGatewayLocationsParams { + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `getGatewayLocation` operation. */ + export interface GetGatewayLocationParams { + /** The Transit Gateway location Name. */ + name: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `listTransitGatewayConnectionPrefixFilters` operation. */ + export interface ListTransitGatewayConnectionPrefixFiltersParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `createTransitGatewayConnectionPrefixFilter` operation. */ + export interface CreateTransitGatewayConnectionPrefixFilterParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ + action: CreateTransitGatewayConnectionPrefixFilterConstants.Action | string; + /** The IPv4 Prefix to be matched by this filter. If both the `le` and `ge` are zero, then this filter will only + * apply to routes that exactly match this prefix, while a non-zero value for either `le` or `ge`, this filter can + * apply to multiple routes with different prefix lengths, but will still only apply to prefixes contained in the + * address space defined by `prefix`. + */ + prefix: string; + /** A reference to the prefix filter that will be the next filter applied to the Transit Gateway connection. + * + * If this field is blank, this prefix filter will be the last rule applied before the connection's default rule. + * + * When a prefix filter is created with the same before field as an existing prefix filter, the existing filter + * will be applied before the new filter, and the existing filter's before field will be updated accordingly. + */ + before?: string; + /** Defines the minimum matched prefix precision. If this field is non-zero then the filter will match all + * routes within the `prefix` that have a prefix length greater than or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route + * matching behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. + */ + ge?: number; + /** Defines the maximum matched prefix precision. If this field is non-zero then the filter will match all + * routes within the `prefix` that have a prefix length less than or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route + * matching behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, + * inclusive. + */ + le?: number; + headers?: OutgoingHttpHeaders; + } + + /** Constants for the `createTransitGatewayConnectionPrefixFilter` operation. */ + export namespace CreateTransitGatewayConnectionPrefixFilterConstants { + /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ + export enum Action { + PERMIT = 'permit', + DENY = 'deny', + } + } + + /** Parameters for the `replaceTransitGatewayConnectionPrefixFilter` operation. */ + export interface ReplaceTransitGatewayConnectionPrefixFilterParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** Array of prefix filters. */ + prefixFilters: PrefixFilterPut[]; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `deleteTransitGatewayConnectionPrefixFilter` operation. */ + export interface DeleteTransitGatewayConnectionPrefixFilterParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** Prefix filter identifier. */ + filterId: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `getTransitGatewayConnectionPrefixFilter` operation. */ + export interface GetTransitGatewayConnectionPrefixFilterParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** Prefix filter identifier. */ + filterId: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `updateTransitGatewayConnectionPrefixFilter` operation. */ + export interface UpdateTransitGatewayConnectionPrefixFilterParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** The connection identifier. */ + id: string; + /** Prefix filter identifier. */ + filterId: string; + /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ + action?: UpdateTransitGatewayConnectionPrefixFilterConstants.Action | string; + /** A reference to the prefix filter that will be the next filter applied to the Transit Gateway connection. + * + * If this field is blank, this prefix filter will be the last rule applied before the connection's default rule. + * + * When a prefix filter is created with the same before field as an existing prefix filter, the existing filter + * will be applied before the new filter, and the existing filter's before field will be updated accordingly. + */ + before?: string; + /** Defines the minimum matched prefix precision. If this field is non-zero then the filter will match all + * routes within the `prefix` that have a prefix length greater or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route + * matching behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. + */ + ge?: number; + /** Defines the maximum matched prefix precision. If this field is non-zero then the filter will match all + * routes within the `prefix` that have a prefix length less than or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route + * matching behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, + * inclusive. + */ + le?: number; + /** The IPv4 Prefix to be matched by this filter. */ + prefix?: string; + headers?: OutgoingHttpHeaders; + } + + /** Constants for the `updateTransitGatewayConnectionPrefixFilter` operation. */ + export namespace UpdateTransitGatewayConnectionPrefixFilterConstants { + /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ + export enum Action { + PERMIT = 'permit', + DENY = 'deny', + } + } + + /** Parameters for the `listTransitGatewayRouteReports` operation. */ + export interface ListTransitGatewayRouteReportsParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `createTransitGatewayRouteReport` operation. */ + export interface CreateTransitGatewayRouteReportParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `deleteTransitGatewayRouteReport` operation. */ + export interface DeleteTransitGatewayRouteReportParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** Route report identifier. */ + id: string; + headers?: OutgoingHttpHeaders; + } + + /** Parameters for the `getTransitGatewayRouteReport` operation. */ + export interface GetTransitGatewayRouteReportParams { + /** The Transit Gateway identifier. */ + transitGatewayId: string; + /** Route report identifier. */ + id: string; + headers?: OutgoingHttpHeaders; + } + + /************************* + * model interfaces + ************************/ + + /** A reference to the first page of resources. */ + export interface PaginationFirstConnection { + /** url. */ + href: string; + } + + /** A reference to the first page of resources. */ + export interface PaginationFirstTG { + /** url. */ + href: string; + } + + /** A reference to the first page of resources. This will be returned when number of connections in response are greater than max page limit. */ + export interface PaginationFirstTGWConnection { + /** url. */ + href: string; + } + + /** A reference to the next page of resources; this reference is included for all pages except the last page. */ + export interface PaginationNextConnection { + /** url. */ + href: string; + /** server generated start token for next page of resources. */ + start: string; + } + + /** A reference to the next page of resources; this reference is included for all pages except the last page. */ + export interface PaginationNextTG { + /** url. */ + href: string; + /** server generated start token for next page of resources. */ + start: string; + } + + /** A reference to the next page of resources; this reference is included for all pages except the last page. */ + export interface PaginationNextTGWConnection { + /** url. */ + href: string; + /** server generated start token for next page of resources. */ + start: string; + } + + /** prefix filters. */ + export interface PrefixFilterCollection { + /** Array of prefix filters. */ + prefix_filters: PrefixFilterCust[]; + } + + /** prefix filter. */ + export interface PrefixFilterCust { + /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ + action: string; + /** A reference to the prefix filter that will be the next filter applied to the Transit Gateway connection. + * + * If this field is blank, this prefix filter will be the last rule applied before the connection's default rule. + * + * When a prefix filter is created with the same before field as an existing prefix filter, the existing filter + * will be applied before the new filter, and the existing filter's before field will be updated accordingly. + */ + before?: string; + /** The date and time that this prefix filter was created. */ + created_at: string; + /** Defines the minimum matched prefix precision. If this field is non-zero then the filter will match all + * routes within the `prefix` that have a prefix length greater or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route + * matching behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. + */ + ge?: number; + /** Prefix Filter identifier. */ + id: string; + /** Defines the maximum matched prefix precision. If this field is non-zero then the filter will match all + * routes within the `prefix` that have a prefix length less than or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route + * matching behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, + * inclusive. + */ + le?: number; + /** The IPv4 Prefix to be matched by this filter. If both the `le` and `ge` are zero, then this filter will only + * apply to routes that exactly match this prefix, while a non-zero value for either `le` or `ge`, this filter can + * apply to multiple routes with different prefix lengths, but will still only apply to prefixes contained in the + * address space defined by `prefix`. + */ + prefix: string; + /** The date and time that this prefix filter was last updated. */ + updated_at?: string; + } + + /** A prefix filter update template. */ + export interface PrefixFilterPut { + /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ + action: string; + /** Defines the minimum matched prefix precision. If this field is non-zero then the filter will match all + * routes within the `prefix` that have a prefix length greater or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route + * matching behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. + */ + ge?: number; + /** Defines the maximum matched prefix precision. If this field is non-zero then the filter will match all + * routes within the `prefix` that have a prefix length less than or equal to this value. + * + * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route + * matching behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, + * inclusive. + */ + le?: number; + /** The IPv4 Prefix to be matched by this filter. If both the `le` and `ge` are zero, then this filter will only + * apply to routes that exactly match this prefix, while a non-zero value for either `le` or `ge`, this filter can + * apply to multiple routes with different prefix lengths, but will still only apply to prefixes contained in the + * address space defined by `prefix`. + */ + prefix: string; + } + + /** The resource group to use. If unspecified, the account's [default resource group](https://console.bluemix.net/apidocs/resource-manager#introduction) is used. */ + export interface ResourceGroupIdentity { + /** The unique identifier for this resource group. */ + id: string; + } + + /** The resource group to use. If unspecified, the account's [default resource group](https://console.bluemix.net/apidocs/resource-manager#introduction) is used. */ + export interface ResourceGroupReference { + /** The URL for this resource group. */ + href: string; + /** The unique identifier for this resource group. */ + id: string; + } + + /** route report. */ + export interface RouteReport { + /** Array of connections with their routes. */ + connections: RouteReportConnection[]; + /** Date and time route report was requested. */ + created_at: string; + /** Report identifier. */ + id: string; + /** Array of overlapping routes. */ + overlapping_routes: RouteReportOverlappingRouteGroup[]; + /** Route report status. The list of enumerated values for this property may expand in the future. Code and + * processes using this field must tolerate unexpected values. + */ + status: string; + /** Date and time route report was last modified. */ + updated_at?: string; + } + + /** route reports. */ + export interface RouteReportCollection { + /** Array of route reports. */ + route_reports: RouteReport[]; + } + + /** route report connection. */ + export interface RouteReportConnection { + /** Array of connection's bgps. */ + bgps?: RouteReportConnectionBgp[]; + /** connection ID. */ + id?: string; + /** connection name. */ + name?: string; + /** Array of connection's routes. */ + routes?: RouteReportConnectionRoute[]; + /** connection type. */ + type?: string; + } + + /** connection bgp details. */ + export interface RouteReportConnectionBgp { + /** AS path. */ + as_path?: string; + /** Indicates whether current route is used or not. */ + is_used?: boolean; + /** local preference. */ + local_preference?: string; + /** prefix. */ + prefix?: string; + } + + /** connection used route. */ + export interface RouteReportConnectionRoute { + /** prefix. */ + prefix?: string; + } + + /** overlapping route details. */ + export interface RouteReportOverlappingRoute { + /** connection ID. */ + connection_id?: string; + /** overlapping prefix. */ + prefix?: string; + } + + /** Collection of overlapping route. */ + export interface RouteReportOverlappingRouteGroup { + /** Array of overlapping connection/prefix pairs. */ + routes?: RouteReportOverlappingRoute[]; + } + + /** A list of Transit Gateway locations. */ + export interface TSCollection { + /** Collection of Transit Gateway locations. */ + locations: TSLocationBasic[]; + } + + /** Details of a local connection location. */ + export interface TSLocalLocation { + /** A descriptive display name for the location. */ + display_name: string; + /** The name of the location. */ + name: string; + /** Array of supported connection types. */ + supported_connection_types?: string[]; + /** The type of the location, determining is this a multi-zone region, a single data center, or a point of + * presence. The list of enumerated values for this property may expand in the future. Code and processes using + * this field must tolerate unexpected values. + */ + type: string; + } + + /** Details of a Transit Gateway location. */ + export interface TSLocation { + /** The geographical location of this location, used for billing purposes. */ + billing_location: string; + /** Name of the Location. */ + name: string; + /** The type of the location, determining is this a multi-zone region, a single data center, or a point of + * presence. + */ + type: string; + /** The set of network locations that are considered local for this Transit Gateway location. */ + local_connection_locations: TSLocalLocation[]; + /** List of valid zones for GRE tunnels. */ + zones: ZoneReference[]; + } + + /** Details of a Transit Gateway location. */ + export interface TSLocationBasic { + /** The geographical location of this location, used for billing purposes. */ + billing_location: string; + /** Name of the Location. */ + name: string; + /** The type of the location, determining is this a multi-zone region, a single data center, or a point of + * presence. + */ + type: string; + } + + /** Connection included in transit gateway. */ + export interface TransitConnection { + /** The type of network the GRE tunnel is targeting. */ + base_network_type?: string; + /** The user-defined name for this transit gateway connection. */ + name: string; + /** The ID of the network being connected via this connection. This field is required for some types, such as + * `vpc`, `vmware`, `power_virtual_server`, `directlink`, `vpn_gateway` and `redundant_gre`. For network types + * `vpc`, `redundant_gre`, `power_virtual_server`, `vmware` and `directlink` this is the CRN of the VPC / PowerVS + * / VDC / Direct Link gateway respectively. + */ + network_id?: string; + /** Defines what type of network is connected via this connection. The list of enumerated values for this + * property may expand in the future. Code and processes using this field must tolerate unexpected values. + */ + network_type: string; + /** The unique identifier for this Transit Gateway connection. */ + id: string; + /** Deprecated: network_type `gre_tunnel` connections use `base_connection_id` to specify the ID of a + * network_type `classic` connection the tunnel is configured over. The specified connection must reside in the + * same transit gateway and be in an active state. The `classic` connection cannot be deleted until any + * `gre_tunnel` connections using it are deleted. This field only applies to and is required for network type + * `gre_tunnel` connections. + */ + base_connection_id?: string; + /** The date and time that this connection was created. */ + created_at: string; + /** Local network BGP ASN. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. + */ + local_bgp_asn?: number; + /** Local gateway IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. + */ + local_gateway_ip?: string; + /** Local tunnel IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. + */ + local_tunnel_ip?: string; + /** GRE tunnel MTU. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` connections. */ + mtu?: number; + /** The ID of the account which owns the connected network. Generally only used if the network is in a different + * IBM Cloud account than the gateway. + */ + network_account_id?: string; + /** Array of prefix route filters for a transit gateway connection. This is order dependent with those first in + * the array being applied first, and those at the end of the array is applied last, or just before the default. + * + * This field does not apply to the `redundant_gre` or `vmware` network types. + */ + prefix_filters?: TransitGatewayConnectionPrefixFilterReference[]; + /** Default setting of permit or deny which applies to any routes that don't match a specified filter. + * + * This field does not apply to the `redundant_gre` or `vmware` network types. + */ + prefix_filters_default?: string; + /** Remote network BGP ASN. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. + */ + remote_bgp_asn?: number; + /** Remote gateway IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. + */ + remote_gateway_ip?: string; + /** Remote tunnel IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. + */ + remote_tunnel_ip?: string; + /** Only visible for cross account connections, this field represents the status of a connection request between + * IBM Cloud accounts. The list of enumerated values for this property may expand in the future. Code and processes + * using this field must tolerate unexpected values. + */ + request_status: string; + /** Connection's current configuration state. The list of enumerated values for this property may expand in the + * future. Code and processes using this field must tolerate unexpected values. + */ + status: string; + /** Transit gateway reference. */ + transit_gateway: TransitGatewayReference; + /** Collection of all tunnels for `redundant_gre` connection. */ + tunnels?: TransitGatewayTunnel[]; + /** The date and time that this connection was last updated. */ + updated_at: string; + /** Availability zone reference. */ + zone?: ZoneReference; + } + + /** Transit gateway connections. */ + export interface TransitConnectionCollection { + /** Array of transit gateway connections. */ + connections: TransitConnection[]; + /** A reference to the first page of resources. */ + first: PaginationFirstConnection; + /** The maximum number of connections returned on one request. */ + limit: number; + /** A reference to the next page of resources; this reference is included for all pages except the last page. */ + next?: PaginationNextConnection; + } + + /** Details of a Transit Gateway. */ + export interface TransitGateway { + /** Allow GRE traffic in this gateway to flow across zones. */ + allow_gre_traffic_across_zones?: boolean; + /** The number of connections associated with this Transit Gateway. */ + connection_count?: number; + /** Indicates if this Transit Gateway has a connection that needs attention (Such as cross account approval). */ + connection_needs_attention?: boolean; + /** The date and time that this gateway was created. */ + created_at: string; + /** Cloud Resource Name of a transit gateway. */ + crn?: string; + /** Allow global routing for a Transit Gateway. */ + global: boolean; + /** A unique identifier for this transit gateway. */ + id: string; + /** Location of Transit Gateway Services. */ + location: string; + /** A human readable name for the transit gateway. */ + name: string; + /** The resource group to use. If unspecified, the account's [default resource + * group](https://console.bluemix.net/apidocs/resource-manager#introduction) is used. + */ + resource_group?: ResourceGroupReference; + /** The status of the Transit Gateway. The list of enumerated values for this property may expand in the future. + * Code and processes using this field must tolerate unexpected values. + */ + status: string; + /** The date and time that this gateway was last updated. */ + updated_at?: string; + } + + /** A list of Transit Gateways. */ + export interface TransitGatewayCollection { + /** A reference to the first page of resources. */ + first: PaginationFirstTG; + /** The maximum number of gateways returned on one request. */ + limit: number; + /** A reference to the next page of resources; this reference is included for all pages except the last page. */ + next?: PaginationNextTG; + /** Collection of Transit Services gateways. */ + transit_gateways: TransitGateway[]; + } + + /** A set of Transit Gateway network connections. */ + export interface TransitGatewayConnectionCollection { + /** Array of transit gateways network Connections. */ + connections: TransitGatewayConnectionCust[]; + /** A reference to the first page of resources. + * This will be returned when number of connections in response are greater than max page limit. + */ + first: PaginationFirstTGWConnection; + /** The maximum number of connections returned on one request. This will be returned when number of connections + * in response are greater than max page limit. + */ + limit: number; + /** A reference to the next page of resources; this reference is included for all pages except the last page. */ + next?: PaginationNextTGWConnection; + /** total number of resources across all pages (considering the supplied query parameter filters). */ + total_count: number; + } + + /** Connection included in transit gateway. */ + export interface TransitGatewayConnectionCust { + } + + /** A prefix filter for a Transit Gateway connection. */ + export interface TransitGatewayConnectionPrefixFilter { + /** Whether to permit or deny prefix filter. */ + action: string; + /** IP Prefix GE. */ + ge?: number; + /** IP Prefix LE. */ + le?: number; + /** IP Prefix. */ + prefix: string; + } + + /** A prefix filter reference object for a Transit Gateway connection. */ + export interface TransitGatewayConnectionPrefixFilterReference { + /** Whether to permit or deny prefix filter. */ + action: string; + /** Identifier of prefix filter that handles the ordering and follow semantics: + * - When a filter reference another filter in it's before field, then the filter making the reference is applied + * before + * the referenced filter. For example: if filter A references filter B in its before field, A is applied before + * B. + * - When a new filter is added that has the same before as an existing filter, then the older filter will have its + * before + * field updated to point to the new filter. Starting with the above example: if filter C is added and it + * references B in its + * before field, then A's before field should be modified to point to C, so the order of application would be A, + * C and finally B. + * - A filter that has an empty before reference will be applied last (though the date order mentioned above will + * still apply). + * So continuing the above examples, if filter B has an empty before field, then it will be applied last, but if + * filter D + * is created with an empty before field, then B's before field will be modified to point to D, so B will be + * applied before D. + */ + before?: string; + /** The date and time that this prefix filter was created. */ + created_at: string; + /** IP Prefix GE. */ + ge?: number; + /** Prefix Filter identifier. */ + id: string; + /** IP Prefix LE. */ + le?: number; + /** IP Prefix. */ + prefix: string; + /** The date and time that this prefix filter was last updated. */ + updated_at?: string; + } + + /** Transit gateway reference. */ + export interface TransitGatewayReference { + /** gateway CRN. */ + crn: string; + /** gateway ID. */ + id: string; + /** transit gateway name. */ + name: string; + } + + /** Details for a redundant GRE tunnel. */ + export interface TransitGatewayTunnel { + /** The type of network the redundant GRE tunnel is targeting. */ + base_network_type: string; + /** The date and time that this GRE tunnel was created. */ + created_at: string; + /** The unique identifier for this redundant GRE tunnel. */ + id: string; + /** Local network BGP ASN. It is assigned by IBM when the tunnel is created. */ + local_bgp_asn: number; + /** Local gateway IP address. */ + local_gateway_ip: string; + /** Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 network. + * Neither can be the network nor broadcast addresses. + */ + local_tunnel_ip: string; + /** GRE tunnel MTU. */ + mtu: number; + /** The user-defined name for this tunnel. */ + name: string; + /** The ID of the account for cross account Classic connections. This field is required when the GRE tunnel is + * in a different account than the gateway and the base network is Classic. + */ + network_account_id?: string; + /** The ID of the network VPC being connected via this connection. */ + network_id?: string; + /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, + * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If `remote_bgp_asn` is omitted on create + * requests, IBM will assign an ASN. + */ + remote_bgp_asn: number; + /** Remote gateway IP address. */ + remote_gateway_ip: string; + /** Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 + * network. Neither can be the network nor broadcast addresses. + */ + remote_tunnel_ip: string; + /** Tunnel's current configuration state. The list of enumerated values for this property may expand in the + * future. Code and processes using this field must tolerate unexpected values. + */ + status: string; + /** The date and time that this tunnel was last updated. */ + updated_at: string; + /** Availability zone reference. */ + zone: ZoneReference; + } + + /** Collection of all tunnels for redundant gre connection. */ + export interface TransitGatewayTunnelCollection { + /** Collection of all tunnels for redundant gre connection. */ + tunnels: TransitGatewayTunnel[]; + } + + /** A create template with information for redundant GRE tunnel. */ + export interface TransitGatewayTunnelTemplate { + /** Local gateway IP address. */ + local_gateway_ip: string; + /** Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 network. + * Neither can be the network nor broadcast addresses. + */ + local_tunnel_ip: string; + /** The user-defined name for this tunnel connection. */ + name: string; + /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, + * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If `remote_bgp_asn` is omitted on create + * requests, IBM will assign an ASN. + */ + remote_bgp_asn?: number; + /** Remote gateway IP address. */ + remote_gateway_ip: string; + /** Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 + * network. Neither can be the network nor broadcast addresses. + */ + remote_tunnel_ip: string; + /** Specify the connection's location. The specified availability zone must reside in the gateway's region. + * Use the IBM Cloud global catalog to list zones within the desired region. + */ + zone: ZoneIdentity; + } + + /** ZoneIdentity. */ + export interface ZoneIdentity { + } + + /** Availability zone reference. */ + export interface ZoneReference { + /** Availability zone name. */ + name: string; + } + + /** Availability zone. */ + export interface ZoneIdentityByName extends ZoneIdentity { + /** Availability zone name. */ + name?: string; + } + + /************************* + * pager classes + ************************/ + + /** + * TransitGatewaysPager can be used to simplify the use of listTransitGateways(). + */ + export class TransitGatewaysPager { + protected _hasNext: boolean; + protected pageContext: any; + + protected client: TransitGatewayApiV1; + + protected params: TransitGatewayApiV1.ListTransitGatewaysParams; + + /** + * Construct a TransitGatewaysPager object. + * + * @param {TransitGatewayApiV1} client - The service client instance used to invoke listTransitGateways() + * @param {Object} [params] - The parameters to be passed to listTransitGateways() + * @constructor + * @returns {TransitGatewaysPager} + */ + constructor( + client: TransitGatewayApiV1, + params?: TransitGatewayApiV1.ListTransitGatewaysParams + ) { + if (params && params.start) { + throw new Error(`the params.start field should not be set`); + } + + this._hasNext = true; + this.pageContext = { next: undefined }; + this.client = client; + this.params = JSON.parse(JSON.stringify(params || {})); + } + + /** + * Returns true if there are potentially more results to be retrieved by invoking getNext(). + * @returns {boolean} + */ + public hasNext(): boolean { + return this._hasNext; + } + + /** + * Returns the next page of results by invoking listTransitGateways(). + * @returns {Promise} + */ + public async getNext(): Promise { + if (!this.hasNext()) { + throw new Error('No more results available'); + } + + if (this.pageContext.next) { + this.params.start = this.pageContext.next; + } + const response = await this.client.listTransitGateways(this.params); + const { result } = response; + + let next = null; + if (result && result.next) { + next = result.next.start + } + this.pageContext.next = next; + if (!this.pageContext.next) { + this._hasNext = false; + } + return result.transit_gateways; + } + + /** + * Returns all results by invoking listTransitGateways() repeatedly until all pages of results have been retrieved. + * @returns {Promise} + */ + public async getAll(): Promise { + const results: TransitGateway[] = []; + while (this.hasNext()) { + const nextPage = await this.getNext(); + results.push(...nextPage); + } + return results; + } + } + + /** + * ConnectionsPager can be used to simplify the use of listConnections(). + */ + export class ConnectionsPager { + protected _hasNext: boolean; + protected pageContext: any; + + protected client: TransitGatewayApiV1; + + protected params: TransitGatewayApiV1.ListConnectionsParams; + + /** + * Construct a ConnectionsPager object. + * + * @param {TransitGatewayApiV1} client - The service client instance used to invoke listConnections() + * @param {Object} [params] - The parameters to be passed to listConnections() + * @constructor + * @returns {ConnectionsPager} + */ + constructor( + client: TransitGatewayApiV1, + params?: TransitGatewayApiV1.ListConnectionsParams + ) { + if (params && params.start) { + throw new Error(`the params.start field should not be set`); + } + + this._hasNext = true; + this.pageContext = { next: undefined }; + this.client = client; + this.params = JSON.parse(JSON.stringify(params || {})); + } + + /** + * Returns true if there are potentially more results to be retrieved by invoking getNext(). + * @returns {boolean} + */ + public hasNext(): boolean { + return this._hasNext; + } + + /** + * Returns the next page of results by invoking listConnections(). + * @returns {Promise} + */ + public async getNext(): Promise { + if (!this.hasNext()) { + throw new Error('No more results available'); + } + + if (this.pageContext.next) { + this.params.start = this.pageContext.next; + } + const response = await this.client.listConnections(this.params); + const { result } = response; + + let next = null; + if (result && result.next) { + next = result.next.start + } + this.pageContext.next = next; + if (!this.pageContext.next) { + this._hasNext = false; + } + return result.connections; + } + + /** + * Returns all results by invoking listConnections() repeatedly until all pages of results have been retrieved. + * @returns {Promise} + */ + public async getAll(): Promise { + const results: TransitConnection[] = []; + while (this.hasNext()) { + const nextPage = await this.getNext(); + results.push(...nextPage); + } + return results; + } + } + + /** + * TransitGatewayConnectionsPager can be used to simplify the use of listTransitGatewayConnections(). + */ + export class TransitGatewayConnectionsPager { + protected _hasNext: boolean; + protected pageContext: any; + + protected client: TransitGatewayApiV1; + + protected params: TransitGatewayApiV1.ListTransitGatewayConnectionsParams; + + /** + * Construct a TransitGatewayConnectionsPager object. + * + * @param {TransitGatewayApiV1} client - The service client instance used to invoke listTransitGatewayConnections() + * @param {Object} params - The parameters to be passed to listTransitGatewayConnections() + * @constructor + * @returns {TransitGatewayConnectionsPager} + */ + constructor( + client: TransitGatewayApiV1, + params: TransitGatewayApiV1.ListTransitGatewayConnectionsParams + ) { + if (params && params.start) { + throw new Error(`the params.start field should not be set`); + } + + this._hasNext = true; + this.pageContext = { next: undefined }; + this.client = client; + this.params = JSON.parse(JSON.stringify(params || {})); + } + + /** + * Returns true if there are potentially more results to be retrieved by invoking getNext(). + * @returns {boolean} + */ + public hasNext(): boolean { + return this._hasNext; + } + + /** + * Returns the next page of results by invoking listTransitGatewayConnections(). + * @returns {Promise} + */ + public async getNext(): Promise { + if (!this.hasNext()) { + throw new Error('No more results available'); + } + + if (this.pageContext.next) { + this.params.start = this.pageContext.next; + } + const response = await this.client.listTransitGatewayConnections(this.params); + const { result } = response; + + let next = null; + if (result && result.next) { + next = result.next.start + } + this.pageContext.next = next; + if (!this.pageContext.next) { + this._hasNext = false; + } + return result.connections; + } + + /** + * Returns all results by invoking listTransitGatewayConnections() repeatedly until all pages of results have been retrieved. + * @returns {Promise} + */ + public async getAll(): Promise { + const results: TransitGatewayConnectionCust[] = []; + while (this.hasNext()) { + const nextPage = await this.getNext(); + results.push(...nextPage); + } + return results; + } + } +} + +export = TransitGatewayApiV1; diff --git a/transit-gateway-apis/v1.ts b/transit-gateway-apis/v1.ts index 724155b..60a5f77 100644 --- a/transit-gateway-apis/v1.ts +++ b/transit-gateway-apis/v1.ts @@ -1,5 +1,5 @@ /** - * (C) Copyright IBM Corp. 2024. + * (C) Copyright IBM Corp. 2025. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ */ /** - * IBM OpenAPI SDK Code Generator Version: 3.90.0-5aad763d-20240506-203857 + * IBM OpenAPI SDK Code Generator Version: 3.73.0-eeee85a9-20230607-165104 */ /* eslint-disable max-classes-per-file */ @@ -26,9 +26,9 @@ import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http'; import { Authenticator, BaseService, - UserOptions, getAuthenticatorFromEnvironment, validateParams, + UserOptions, } from 'ibm-cloud-sdk-core'; import { getSdkHeaders } from '../lib/common'; @@ -53,7 +53,7 @@ class TransitGatewayApisV1 extends BaseService { * @param {UserOptions} [options] - The parameters to send to the service. * @param {string} [options.serviceName] - The name of the service to configure * @param {Authenticator} [options.authenticator] - The Authenticator object used to authenticate requests to the service - * @param {string} [options.serviceUrl] - The base URL for the service + * @param {string} [options.serviceUrl] - The URL for the service * @returns {TransitGatewayApisV1} */ @@ -85,7 +85,7 @@ class TransitGatewayApisV1 extends BaseService { * @param {Object} options - Options for the service. * @param {string} options.version - Requests the version of the API as of a date in the format `YYYY-MM-DD`. Any date * up to the current date may be provided. Specify the current date to request the latest version. - * @param {string} [options.serviceUrl] - The base URL for the service + * @param {string} [options.serviceUrl] - The base url to use when contacting the service. The base url may differ between IBM Cloud regions. * @param {OutgoingHttpHeaders} [options.headers] - Default headers that shall be included with every request to the service. * @param {Authenticator} options.authenticator - The Authenticator object used to authenticate requests to the service * @constructor @@ -140,7 +140,11 @@ class TransitGatewayApisV1 extends BaseService { 'start': _params.start, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'listTransitGateways'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGateways' + ); const parameters = { options: { @@ -170,7 +174,8 @@ class TransitGatewayApisV1 extends BaseService { * * @param {Object} params - The parameters to send to the service. * @param {string} params.location - Location of Transit Gateway Services. - * @param {string} params.name - Name Transit Gateway Services. + * @param {string} params.name - A human readable name for the transit gateway. + * @param {boolean} [params.allowGreTrafficAcrossZones] - Allow GRE traffic in this gateway to flow across zones. * @param {boolean} [params.global] - Allow global routing for a Transit Gateway. If unspecified, the default value is * false. * @param {ResourceGroupIdentity} [params.resourceGroup] - The resource group to use. If unspecified, the account's @@ -183,7 +188,7 @@ class TransitGatewayApisV1 extends BaseService { ): Promise> { const _params = { ...params }; const _requiredParams = ['location', 'name']; - const _validParams = ['location', 'name', 'global', 'resourceGroup', 'headers']; + const _validParams = ['location', 'name', 'allowGreTrafficAcrossZones', 'global', 'resourceGroup', 'headers']; const _validationErrors = validateParams(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); @@ -192,6 +197,7 @@ class TransitGatewayApisV1 extends BaseService { const body = { 'location': _params.location, 'name': _params.name, + 'allow_gre_traffic_across_zones': _params.allowGreTrafficAcrossZones, 'global': _params.global, 'resource_group': _params.resourceGroup, }; @@ -200,7 +206,11 @@ class TransitGatewayApisV1 extends BaseService { 'version': this.version, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'createTransitGateway'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGateway' + ); const parameters = { options: { @@ -255,7 +265,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteTransitGateway'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGateway' + ); const parameters = { options: { @@ -307,7 +321,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'getTransitGateway'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGateway' + ); const parameters = { options: { @@ -338,8 +356,9 @@ class TransitGatewayApisV1 extends BaseService { * * @param {Object} params - The parameters to send to the service. * @param {string} params.id - The Transit Gateway identifier. + * @param {boolean} [params.allowGreTrafficAcrossZones] - Allow GRE traffic in this gateway to flow across zones. * @param {boolean} [params.global] - Allow global routing for a Transit Gateway. - * @param {string} [params.name] - The user-defined name for this transit gateway. + * @param {string} [params.name] - A human readable name for a resource. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise>} */ @@ -348,13 +367,14 @@ class TransitGatewayApisV1 extends BaseService { ): Promise> { const _params = { ...params }; const _requiredParams = ['id']; - const _validParams = ['id', 'global', 'name', 'headers']; + const _validParams = ['id', 'allowGreTrafficAcrossZones', 'global', 'name', 'headers']; const _validationErrors = validateParams(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } const body = { + 'allow_gre_traffic_across_zones': _params.allowGreTrafficAcrossZones, 'global': _params.global, 'name': _params.name, }; @@ -367,7 +387,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'updateTransitGateway'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'updateTransitGateway' + ); const parameters = { options: { @@ -426,7 +450,11 @@ class TransitGatewayApisV1 extends BaseService { 'network_id': _params.networkId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'listConnections'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listConnections' + ); const parameters = { options: { @@ -487,7 +515,11 @@ class TransitGatewayApisV1 extends BaseService { 'transit_gateway_id': _params.transitGatewayId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'listTransitGatewayConnections'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGatewayConnections' + ); const parameters = { options: { @@ -512,89 +544,98 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Add connection to a Transit Gateway. + * Adds a connection to a Transit Gateway. * * Add a connection to Transit Gateway. * * @param {Object} params - The parameters to send to the service. * @param {string} params.transitGatewayId - The Transit Gateway identifier. * @param {string} params.networkType - Defines what type of network is connected via this connection. - * @param {string} [params.baseConnectionId] - Deprecated: network_type 'gre_tunnel' connections must be created over - * an existing network_type 'classic' connection. This field must specify the ID of an active transit gateway - * network_type 'classic' connection in the same transit gateway. + * @param {string} [params.baseConnectionId] - Deprecated: network_type `gre_tunnel` connections must be created over + * an existing network_type `classic` connection. This field must specify the ID of an active transit gateway + * network_type `classic` connection in the same transit gateway. * - * This field is required for network type 'gre_tunnel' connections. + * This field is required for network type `gre_tunnel` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', - * 'power_virtual_server', 'unbound_gre_tunnel' and 'redundant_gre' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. * @param {string} [params.baseNetworkType] - The type of network the Unbound GRE tunnel is targeting. This field is - * required for network type 'unbound_gre_tunnel' and must be set to 'classic'. For a 'redundant_gre' network type, + * required for network type `unbound_gre_tunnel` and must be set to `classic`. For a `redundant_gre` network type, * the value is required and can be either VPC or Classic. This field is required to be unspecified for network type - * 'classic', 'directlink', 'vpc', 'power_virtual_server' and 'gre_tunnel' connections. + * `classic`, `vmware`, `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. + * @param {string} [params.cidr] - network_type 'vpn_gateway' connections use 'cdr' to specify the CIDR to use for the + * VPN GRE tunnels. + * + * This field is required for network type `vpn_gateway` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `gre_tunnel`, `unbound_gre_tunnel`, and `redundant_gre` connections. * @param {string} [params.localGatewayIp] - Local gateway IP address. This field is required for network type - * 'gre_tunnel' and 'unbound_gre_tunnel' connections. This field is required to be unspecified for network type - * 'classic', 'directlink', 'vpc', 'power_virtual_server' and 'redundant_gre' connections. + * `gre_tunnel` and `unbound_gre_tunnel` connections. This field is required to be unspecified for network type + * `classic`, `vmware`, `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. * @param {string} [params.localTunnelIp] - Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip * addresses must be in the same /30 network. Neither can be the network nor broadcast addresses. * - * This field is required for network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', 'power_virtual_server' - * and 'redundant_gre' connections. - * @param {string} [params.name] - The user-defined name for this transit gateway connection. Network type 'vpc' - * connections are defaulted to the name of the VPC. Network type 'classic' connections are named 'Classic'. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + * @param {string} [params.name] - The user-defined name for this transit gateway connection. Network type `vpc` + * connections are defaulted to the name of the VPC. Network type `classic` connections are named `classic`. * - * This field is required for network type 'gre_tunnel', 'unbound_gre_tunnel' and 'redundant_gre' connections. + * This field is required for network type `power_virtual_server`, `directlink`, `vmware`, `gre_tunnel`, + * `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. * - * This field is optional for network type 'classic', 'directlink', 'vpc' and 'power_virtual_server' connections. + * This field is optional for network type `classic`, `vpc` connections. * @param {string} [params.networkAccountId] - The ID of the account which owns the network that is being connected. * Generally only used if the network is in a different account than the gateway. This field is required for type - * 'unbound_gre_tunnel' when the associated_network_type is 'classic' or network_type is 'redundant_gre' and the GRE + * `unbound_gre_tunnel` when the associated_network_type is `classic` or network_type is `redundant_gre` and the GRE * tunnel is in a different account than the gateway. * @param {string} [params.networkId] - The ID of the network being connected via this connection. For network types - * 'vpc','power_virtual_server' and 'directlink' this is the CRN of the VPC / PowerVS / Direct Link gateway - * respectively. This field is required for network type 'vpc', 'power_virtual_server' and 'directlink' connections. - * It is also required for 'redundant_gre' connections when the base_network_type is set to VPC. This field is - * required to be unspecified for network type 'classic', 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * `vpc`,`power_virtual_server`, `vmware`, `directlink` and `vpn_gateway` this is the CRN of the VPC / PowerVS / VDC / + * Direct Link / VPN gateway respectively. This field is required for network type `vpc`, `power_virtual_server`, + * `vmware`, `vpn_gateway`, and `directlink` connections. It is also required for `redundant_gre` connections when + * the base_network_type is set to VPC. This field is required to be unspecified for network type `classic`, + * `gre_tunnel` and `unbound_gre_tunnel` connections. * @param {TransitGatewayConnectionPrefixFilter[]} [params.prefixFilters] - Array of prefix route filters for a - * transit gateway connection. Prefix filters can be specified for netowrk type 'vpc', 'classic', - * 'power_virtual_server' and 'directlink' connections. They are not allowed for type 'gre_tunnel' connections. This + * transit gateway connection. Prefix filters can be specified for netowrk type `vpc`, `classic`, + * `power_virtual_server` and `directlink` connections. They are not allowed for type `gre_tunnel` connections. This * is order dependent with those first in the array being applied first, and those at the end of the array being - * applied last, or just before applying the default. This field is optional for network type 'classic', 'vpc', - * 'directlink', and 'power_virtual_server' connections. This field is required to be unspecified for network type - * 'gre_tunnel', 'unbound_gre_tunnel' and 'redundant_gre' connections. + * applied last, or just before applying the default. This field is optional for network type `classic`, `vpc`, + * `directlink`, and `power_virtual_server` connections. This field is required to be unspecified for network type + * `gre_tunnel`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. * @param {string} [params.prefixFiltersDefault] - Default setting of permit or deny which applies to any routes that - * don't match a specified filter. This field is optional for network type 'classic', 'vpc', 'directlink', and - * 'power_virtual_server' connections. This field is required to be unspecified for network type 'gre_tunnel', - * 'unbound_gre_tunnel' and 'redundant_gre' connections. + * don't match a specified filter. This field is optional for network type `classic`, `vpc`, `directlink`, and + * `power_virtual_server` connections. This field is required to be unspecified for network type `gre_tunnel`, + * `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. * @param {number} [params.remoteBgpAsn] - Remote network BGP ASN. The following ASN values are reserved and * unavailable 0, 13884, 36351, 64512-64513, 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If - * 'remote_bgp_asn' is omitted on gre_tunnel or unbound_gre_tunnel connection create requests IBM will assign an ASN. + * `remote_bgp_asn` is omitted on gre_tunnel or unbound_gre_tunnel connection create requests IBM will assign an ASN. * - * This field is optional for network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * This field is optional for network type `gre_tunnel` and `unbound_gre_tunnel` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', 'power_virtual_server' - * and 'gre_tunnel' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. * @param {string} [params.remoteGatewayIp] - Remote gateway IP address. This field is required for network type - * 'gre_tunnel' and 'unbound_gre_tunnel' connections. This field is required to be unspecified for network type - * 'classic', 'directlink', 'vpc', 'power_virtual_server' and 'redundant_gre' connections. + * `gre_tunnel` and `unbound_gre_tunnel` connections. This field is required to be unspecified for network type + * `classic`, `vmware`, `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. * @param {string} [params.remoteTunnelIp] - Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip * addresses must be in the same /30 network. Neither can be the network nor broadcast addresses. * - * This field is required for network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', 'power_virtual_server' - * and 'redundant_gre' connections. - * @param {TransitGatewayRedundantGRETunnelTemplate[]} [params.tunnels] - Array of GRE tunnels for a transit gateway - * redundant GRE tunnel connection. This field is required for 'redundant_gre' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. + * @param {TransitGatewayTunnelTemplate[]} [params.tunnels] - Array of GRE tunnels for a transit gateway redundant GRE + * tunnel connection. This field is required for `redundant_gre` connections. * @param {ZoneIdentity} [params.zone] - Specify the connection's location. The specified availability zone must * reside in the gateway's region. * Use the IBM Cloud global catalog to list zones within the desired region. * - * This field is required for network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * This field is required for network type `gre_tunnel`, `unbound_gre_tunnel` and `vpn_gateway` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', 'power_virtual_server' - * and 'redundant_gre' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server` and `redundant_gre` connections. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise>} */ @@ -603,7 +644,7 @@ class TransitGatewayApisV1 extends BaseService { ): Promise> { const _params = { ...params }; const _requiredParams = ['transitGatewayId', 'networkType']; - const _validParams = ['transitGatewayId', 'networkType', 'baseConnectionId', 'baseNetworkType', 'localGatewayIp', 'localTunnelIp', 'name', 'networkAccountId', 'networkId', 'prefixFilters', 'prefixFiltersDefault', 'remoteBgpAsn', 'remoteGatewayIp', 'remoteTunnelIp', 'tunnels', 'zone', 'headers']; + const _validParams = ['transitGatewayId', 'networkType', 'baseConnectionId', 'baseNetworkType', 'cidr', 'localGatewayIp', 'localTunnelIp', 'name', 'networkAccountId', 'networkId', 'prefixFilters', 'prefixFiltersDefault', 'remoteBgpAsn', 'remoteGatewayIp', 'remoteTunnelIp', 'tunnels', 'zone', 'headers']; const _validationErrors = validateParams(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); @@ -613,6 +654,7 @@ class TransitGatewayApisV1 extends BaseService { 'network_type': _params.networkType, 'base_connection_id': _params.baseConnectionId, 'base_network_type': _params.baseNetworkType, + 'cidr': _params.cidr, 'local_gateway_ip': _params.localGatewayIp, 'local_tunnel_ip': _params.localTunnelIp, 'name': _params.name, @@ -635,7 +677,11 @@ class TransitGatewayApisV1 extends BaseService { 'transit_gateway_id': _params.transitGatewayId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'createTransitGatewayConnection'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayConnection' + ); const parameters = { options: { @@ -662,7 +708,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Remove connection from Transit Gateway. + * Removes a connection from Transit Gateway. * * After the specified connection is detached, entities still within the Transit Gateway will no longer be able to * communicate directly to it through the IBM Cloud private backbone. @@ -693,7 +739,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteTransitGatewayConnection'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGatewayConnection' + ); const parameters = { options: { @@ -747,7 +797,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'getTransitGatewayConnection'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGatewayConnection' + ); const parameters = { options: { @@ -780,8 +834,8 @@ class TransitGatewayApisV1 extends BaseService { * @param {string} params.transitGatewayId - The Transit Gateway identifier. * @param {string} params.id - The connection identifier. * @param {string} [params.name] - The user-defined name for this transit gateway. If specified as empty string or - * nil, the name will be the network name (the name of the VPC in the case of network type 'vpc', and the word - * Classic, in the case of network type 'classic'). + * nil, the name will be the network name (the name of the VPC in the case of network type `vpc`, and the word + * Classic, in the case of network type `classic`). * @param {string} [params.prefixFiltersDefault] - Default setting of permit or deny which applies to any routes that * don't match a specified filter. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers @@ -812,7 +866,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'updateTransitGatewayConnection'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'updateTransitGatewayConnection' + ); const parameters = { options: { @@ -839,7 +897,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Perform actions on a connection for a Transit Gateway. + * Performs actions on a connection for a Transit Gateway. * * Allow a network owner to approve or reject a cross-account connection request. * @@ -874,7 +932,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'createTransitGatewayConnectionActions'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayConnectionActions' + ); const parameters = { options: { @@ -902,17 +964,17 @@ class TransitGatewayApisV1 extends BaseService { /** * Retrieves specified Transit Gateway redundant gre connection tunnels. * - * This request retrieves a list of all the tunnels for the redundant gre conneciton. + * This request retrieves a list of all the tunnels for the redundant gre connection. * * @param {Object} params - The parameters to send to the service. * @param {string} params.transitGatewayId - The Transit Gateway identifier. * @param {string} params.id - The connection identifier. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers - * @returns {Promise>} + * @returns {Promise>} */ - public getTransitGatewayGreTunnel( - params: TransitGatewayApisV1.GetTransitGatewayGreTunnelParams - ): Promise> { + public listTransitGatewayGreTunnel( + params: TransitGatewayApisV1.ListTransitGatewayGreTunnelParams + ): Promise> { const _params = { ...params }; const _requiredParams = ['transitGatewayId', 'id']; const _validParams = ['transitGatewayId', 'id', 'headers']; @@ -930,7 +992,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'getTransitGatewayGreTunnel'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGatewayGreTunnel' + ); const parameters = { options: { @@ -955,7 +1021,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Create Transit Gateway redundant GRE tunnel. + * Creates a Transit Gateway redundant GRE tunnel. * * Add a tunnel to an existing Redundant GRE connection. * @@ -974,13 +1040,13 @@ class TransitGatewayApisV1 extends BaseService { * Use the IBM Cloud global catalog to list zones within the desired region. * @param {number} [params.remoteBgpAsn] - Remote network BGP ASN. The following ASN values are reserved and * unavailable 0, 13884, 36351, 64512-64513, 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If - * 'remote_bgp_asn' is omitted on create requests, IBM will assign an ASN. + * `remote_bgp_asn` is omitted on create requests, IBM will assign an ASN. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers - * @returns {Promise>} + * @returns {Promise>} */ public createTransitGatewayGreTunnel( params: TransitGatewayApisV1.CreateTransitGatewayGreTunnelParams - ): Promise> { + ): Promise> { const _params = { ...params }; const _requiredParams = ['transitGatewayId', 'id', 'localGatewayIp', 'localTunnelIp', 'name', 'remoteGatewayIp', 'remoteTunnelIp', 'zone']; const _validParams = ['transitGatewayId', 'id', 'localGatewayIp', 'localTunnelIp', 'name', 'remoteGatewayIp', 'remoteTunnelIp', 'zone', 'remoteBgpAsn', 'headers']; @@ -1008,7 +1074,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'createTransitGatewayGreTunnel'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayGreTunnel' + ); const parameters = { options: { @@ -1035,7 +1105,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Delete specified Transit Gateway redundant GRE tunnel. + * Deletes a specified Transit Gateway redundant GRE tunnel. * * Remove a tunnel from a redundant GRE connection. * @@ -1067,7 +1137,11 @@ class TransitGatewayApisV1 extends BaseService { 'gre_tunnel_id': _params.greTunnelId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteTransitGatewayConnectionTunnels'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGatewayConnectionTunnels' + ); const parameters = { options: { @@ -1093,18 +1167,18 @@ class TransitGatewayApisV1 extends BaseService { /** * Retrieves specified Transit Gateway connection tunnel. * - * This request retrieves a connection tunnel from the Transit Gateway Connection. + * This request retrieves a connection tunnel from the Transit Gateway connection. * * @param {Object} params - The parameters to send to the service. * @param {string} params.transitGatewayId - The Transit Gateway identifier. * @param {string} params.id - The connection identifier. * @param {string} params.greTunnelId - The tunnel identifier. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers - * @returns {Promise>} + * @returns {Promise>} */ public getTransitGatewayConnectionTunnels( params: TransitGatewayApisV1.GetTransitGatewayConnectionTunnelsParams - ): Promise> { + ): Promise> { const _params = { ...params }; const _requiredParams = ['transitGatewayId', 'id', 'greTunnelId']; const _validParams = ['transitGatewayId', 'id', 'greTunnelId', 'headers']; @@ -1123,7 +1197,11 @@ class TransitGatewayApisV1 extends BaseService { 'gre_tunnel_id': _params.greTunnelId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'getTransitGatewayConnectionTunnels'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGatewayConnectionTunnels' + ); const parameters = { options: { @@ -1158,11 +1236,11 @@ class TransitGatewayApisV1 extends BaseService { * @param {string} params.greTunnelId - The tunnel identifier. * @param {string} [params.name] - The user-defined name for this connection tunnel. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers - * @returns {Promise>} + * @returns {Promise>} */ public updateTransitGatewayConnectionTunnels( params: TransitGatewayApisV1.UpdateTransitGatewayConnectionTunnelsParams - ): Promise> { + ): Promise> { const _params = { ...params }; const _requiredParams = ['transitGatewayId', 'id', 'greTunnelId']; const _validParams = ['transitGatewayId', 'id', 'greTunnelId', 'name', 'headers']; @@ -1185,7 +1263,11 @@ class TransitGatewayApisV1 extends BaseService { 'gre_tunnel_id': _params.greTunnelId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'updateTransitGatewayConnectionTunnels'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'updateTransitGatewayConnectionTunnels' + ); const parameters = { options: { @@ -1201,7 +1283,7 @@ class TransitGatewayApisV1 extends BaseService { sdkHeaders, { 'Accept': 'application/json', - 'Content-Type': 'application/json', + 'Content-Type': 'application/merge-patch+json', }, _params.headers ), @@ -1211,11 +1293,11 @@ class TransitGatewayApisV1 extends BaseService { return this.createRequest(parameters); } /************************* - * transitLocation + * transitLocations ************************/ /** - * List all locations that support Transit Gateways. + * Lists all locations that support Transit Gateways. * * List all locations that support Transit Gateways. * @@ -1238,7 +1320,11 @@ class TransitGatewayApisV1 extends BaseService { 'version': this.version, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'listGatewayLocations'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listGatewayLocations' + ); const parameters = { options: { @@ -1262,7 +1348,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Show the details of a given Transit Gateway location. + * Shows the details of a given Transit Gateway location. * * Get the details of a Transit Gateway Location. * @@ -1290,7 +1376,11 @@ class TransitGatewayApisV1 extends BaseService { 'name': _params.name, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'getGatewayLocation'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getGatewayLocation' + ); const parameters = { options: { @@ -1348,7 +1438,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'listTransitGatewayConnectionPrefixFilters'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGatewayConnectionPrefixFilters' + ); const parameters = { options: { @@ -1373,19 +1467,19 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Add a prefix filter to a Transit Gateway Connection. + * Add a prefix filter to a Transit Gateway connection. * - * Add a prefix filter to a Transit Gateway Connection. + * Add a prefix filter to a Transit Gateway connection. * * @param {Object} params - The parameters to send to the service. * @param {string} params.transitGatewayId - The Transit Gateway identifier. * @param {string} params.id - The connection identifier. * @param {string} params.action - Whether or not this prefix filter should allow or deny prefixes matching this * filter's prefix definition. - * @param {string} params.prefix - The IPv4 Prefix to be matched by this filter. If both the 'le' and 'ge' are zero, - * then this filter will only apply to routes that exactly match this prefix, while a non-zero value for either 'le' - * or 'ge', this filter can apply to multiple routes with different prefix lengths, but will still only apply to - * prefixes contained in the address space defined by 'prefix'. + * @param {string} params.prefix - The IPv4 Prefix to be matched by this filter. If both the `le` and `ge` are zero, + * then this filter will only apply to routes that exactly match this prefix, while a non-zero value for either `le` + * or `ge`, this filter can apply to multiple routes with different prefix lengths, but will still only apply to + * prefixes contained in the address space defined by `prefix`. * @param {string} [params.before] - A reference to the prefix filter that will be the next filter applied to the * Transit Gateway connection. * @@ -1394,18 +1488,18 @@ class TransitGatewayApisV1 extends BaseService { * When a prefix filter is created with the same before field as an existing prefix filter, the existing filter will * be applied before the new filter, and the existing filter's before field will be updated accordingly. * @param {number} [params.ge] - Defines the minimum matched prefix precision. If this field is non-zero then the - * filter will match all routes within the 'prefix' that have a prefix length greater than or equal to this value. + * filter will match all routes within the `prefix` that have a prefix length greater than or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's prefix - * or less then or equal to 32. If this value is set to zero, the filter will not use the 'ge' route matching - * behavior. If the 'le' value is non-zero the the 'ge' value must between the prefix length and the - * 'le' value, inclusive. + * or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route matching + * behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. * @param {number} [params.le] - Defines the maximum matched prefix precision. If this field is non-zero then the - * filter will match all routes within the 'prefix' that have a prefix length less than or equal to this value. + * filter will match all routes within the `prefix` that have a prefix length less than or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's prefix - * or less then or equal to 32. If this value is set to zero, the filter will not use the 'le' route matching - * behavior. If the 'ge' value is non-zero the the 'le' value must between the 'ge' value and 32, inclusive. + * or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route matching + * behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, inclusive. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise>} */ @@ -1437,7 +1531,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'createTransitGatewayConnectionPrefixFilter'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayConnectionPrefixFilter' + ); const parameters = { options: { @@ -1464,9 +1562,9 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Replaces the prefix filters of the Transit Gateway Connection. + * Replaces the prefix filters of the Transit Gateway connection. * - * Replaces the prefix filters of the Transit Gateway Connection. + * Replaces the prefix filters of the Transit Gateway connection. * * @param {Object} params - The parameters to send to the service. * @param {string} params.transitGatewayId - The Transit Gateway identifier. @@ -1499,7 +1597,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'replaceTransitGatewayConnectionPrefixFilter'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'replaceTransitGatewayConnectionPrefixFilter' + ); const parameters = { options: { @@ -1526,7 +1628,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Remove prefix filter from Transit Gateway Connection. + * Remove prefix filter from Transit Gateway connection. * * Delete a prefix filter. * @@ -1558,7 +1660,11 @@ class TransitGatewayApisV1 extends BaseService { 'filter_id': _params.filterId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteTransitGatewayConnectionPrefixFilter'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGatewayConnectionPrefixFilter' + ); const parameters = { options: { @@ -1584,7 +1690,7 @@ class TransitGatewayApisV1 extends BaseService { /** * Retrieves specified Transit Gateway connection prefix filter. * - * This request retrieves a prefix filter from the Transit Gateway Connection. + * This request retrieves a prefix filter from the Transit Gateway connection. * * @param {Object} params - The parameters to send to the service. * @param {string} params.transitGatewayId - The Transit Gateway identifier. @@ -1614,7 +1720,11 @@ class TransitGatewayApisV1 extends BaseService { 'filter_id': _params.filterId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'getTransitGatewayConnectionPrefixFilter'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGatewayConnectionPrefixFilter' + ); const parameters = { options: { @@ -1657,18 +1767,18 @@ class TransitGatewayApisV1 extends BaseService { * When a prefix filter is created with the same before field as an existing prefix filter, the existing filter will * be applied before the new filter, and the existing filter's before field will be updated accordingly. * @param {number} [params.ge] - Defines the minimum matched prefix precision. If this field is non-zero then the - * filter will match all routes within the 'prefix' that have a prefix length greater or equal to this value. + * filter will match all routes within the `prefix` that have a prefix length greater or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's prefix - * or less then or equal to 32. If this value is set to zero, the filter will not use the 'ge' route matching - * behavior. If the 'le' value is non-zero the the 'ge' value must between the prefix length and the - * 'le' value, inclusive. + * or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route matching + * behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. * @param {number} [params.le] - Defines the maximum matched prefix precision. If this field is non-zero then the - * filter will match all routes within the 'prefix' that have a prefix length less than or equal to this value. + * filter will match all routes within the `prefix` that have a prefix length less than or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's prefix - * or less then or equal to 32. If this value is set to zero, the filter will not use the 'le' route matching - * behavior. If the 'ge' value is non-zero the the 'le' value must between the 'ge' value and 32, inclusive. + * or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route matching + * behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, inclusive. * @param {string} [params.prefix] - The IPv4 Prefix to be matched by this filter. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise>} @@ -1702,7 +1812,11 @@ class TransitGatewayApisV1 extends BaseService { 'filter_id': _params.filterId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'updateTransitGatewayConnectionPrefixFilter'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'updateTransitGatewayConnectionPrefixFilter' + ); const parameters = { options: { @@ -1732,7 +1846,7 @@ class TransitGatewayApisV1 extends BaseService { ************************/ /** - * List route reports. + * Lists route reports. * * Retrieve all route reports for the specified Transit Gateway. There will normally be at most one completed report * and one pending report. Additionally, completed route reports are written to IBM Cloud Activity Tracker. @@ -1761,7 +1875,11 @@ class TransitGatewayApisV1 extends BaseService { 'transit_gateway_id': _params.transitGatewayId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'listTransitGatewayRouteReports'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'listTransitGatewayRouteReports' + ); const parameters = { options: { @@ -1786,7 +1904,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Request a route report. + * Requests a route report. * * Request route report generation. While report generation is in progress, additional requests to generate a report * are ignored and return the current pending report. @@ -1815,7 +1933,11 @@ class TransitGatewayApisV1 extends BaseService { 'transit_gateway_id': _params.transitGatewayId, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'createTransitGatewayRouteReport'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'createTransitGatewayRouteReport' + ); const parameters = { options: { @@ -1840,7 +1962,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Delete route report. + * Deletes a route report. * * Delete a route report. * @@ -1870,7 +1992,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteTransitGatewayRouteReport'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'deleteTransitGatewayRouteReport' + ); const parameters = { options: { @@ -1894,7 +2020,7 @@ class TransitGatewayApisV1 extends BaseService { } /** - * Retrieve route report. + * Retrieves a route report. * * Retrieve a route report. * @@ -1924,7 +2050,11 @@ class TransitGatewayApisV1 extends BaseService { 'id': _params.id, }; - const sdkHeaders = getSdkHeaders(TransitGatewayApisV1.DEFAULT_SERVICE_NAME, 'v1', 'getTransitGatewayRouteReport'); + const sdkHeaders = getSdkHeaders( + TransitGatewayApisV1.DEFAULT_SERVICE_NAME, + 'v1', + 'getTransitGatewayRouteReport' + ); const parameters = { options: { @@ -1998,8 +2128,10 @@ namespace TransitGatewayApisV1 { export interface CreateTransitGatewayParams { /** Location of Transit Gateway Services. */ location: string; - /** Name Transit Gateway Services. */ + /** A human readable name for the transit gateway. */ name: string; + /** Allow GRE traffic in this gateway to flow across zones. */ + allowGreTrafficAcrossZones?: boolean; /** Allow global routing for a Transit Gateway. If unspecified, the default value is false. */ global?: boolean; /** The resource group to use. If unspecified, the account's [default resource @@ -2027,9 +2159,11 @@ namespace TransitGatewayApisV1 { export interface UpdateTransitGatewayParams { /** The Transit Gateway identifier. */ id: string; + /** Allow GRE traffic in this gateway to flow across zones. */ + allowGreTrafficAcrossZones?: boolean; /** Allow global routing for a Transit Gateway. */ global?: boolean; - /** The user-defined name for this transit gateway. */ + /** A human readable name for a resource. */ name?: string; headers?: OutgoingHttpHeaders; } @@ -2064,106 +2198,117 @@ namespace TransitGatewayApisV1 { transitGatewayId: string; /** Defines what type of network is connected via this connection. */ networkType: CreateTransitGatewayConnectionConstants.NetworkType | string; - /** Deprecated: network_type 'gre_tunnel' connections must be created over an existing network_type 'classic' - * connection. This field must specify the ID of an active transit gateway network_type 'classic' connection in the + /** Deprecated: network_type `gre_tunnel` connections must be created over an existing network_type `classic` + * connection. This field must specify the ID of an active transit gateway network_type `classic` connection in the * same transit gateway. * - * This field is required for network type 'gre_tunnel' connections. + * This field is required for network type `gre_tunnel` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', - * 'power_virtual_server', 'unbound_gre_tunnel' and 'redundant_gre' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. */ baseConnectionId?: string; /** The type of network the Unbound GRE tunnel is targeting. This field is required for network type - * 'unbound_gre_tunnel' and must be set to 'classic'. For a 'redundant_gre' network type, the value is required - * and can be either VPC or Classic. This field is required to be unspecified for network type 'classic', - * 'directlink', 'vpc', 'power_virtual_server' and 'gre_tunnel' connections. + * `unbound_gre_tunnel` and must be set to `classic`. For a `redundant_gre` network type, the value is required + * and can be either VPC or Classic. This field is required to be unspecified for network type `classic`, `vmware`, + * `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. */ baseNetworkType?: CreateTransitGatewayConnectionConstants.BaseNetworkType | string; - /** Local gateway IP address. This field is required for network type 'gre_tunnel' and 'unbound_gre_tunnel' - * connections. This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', - * 'power_virtual_server' and 'redundant_gre' connections. + /** network_type 'vpn_gateway' connections use 'cdr' to specify the CIDR to use for the VPN GRE tunnels. + * + * This field is required for network type `vpn_gateway` connections. + * + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `gre_tunnel`, `unbound_gre_tunnel`, and `redundant_gre` connections. + */ + cidr?: string; + /** Local gateway IP address. This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. */ localGatewayIp?: string; /** Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 network. * Neither can be the network nor broadcast addresses. * - * This field is required for network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', 'power_virtual_server' - * and 'redundant_gre' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. */ localTunnelIp?: string; - /** The user-defined name for this transit gateway connection. Network type 'vpc' connections are defaulted to - * the name of the VPC. Network type 'classic' connections are named 'Classic'. + /** The user-defined name for this transit gateway connection. Network type `vpc` connections are defaulted to + * the name of the VPC. Network type `classic` connections are named `classic`. * - * This field is required for network type 'gre_tunnel', 'unbound_gre_tunnel' and 'redundant_gre' connections. + * This field is required for network type `power_virtual_server`, `directlink`, `vmware`, `gre_tunnel`, + * `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. * - * This field is optional for network type 'classic', 'directlink', 'vpc' and 'power_virtual_server' connections. + * This field is optional for network type `classic`, `vpc` connections. */ name?: string; /** The ID of the account which owns the network that is being connected. Generally only used if the network is - * in a different account than the gateway. This field is required for type 'unbound_gre_tunnel' when the - * associated_network_type is 'classic' or network_type is 'redundant_gre' and the GRE tunnel is in a different + * in a different account than the gateway. This field is required for type `unbound_gre_tunnel` when the + * associated_network_type is `classic` or network_type is `redundant_gre` and the GRE tunnel is in a different * account than the gateway. */ networkAccountId?: string; - /** The ID of the network being connected via this connection. For network types 'vpc','power_virtual_server' - * and 'directlink' this is the CRN of the VPC / PowerVS / Direct Link gateway respectively. This field is required - * for network type 'vpc', 'power_virtual_server' and 'directlink' connections. It is also required for - * 'redundant_gre' connections when the base_network_type is set to VPC. This field is required to be unspecified - * for network type 'classic', 'gre_tunnel' and 'unbound_gre_tunnel' connections. + /** The ID of the network being connected via this connection. For network types `vpc`,`power_virtual_server`, + * `vmware`, `directlink` and `vpn_gateway` this is the CRN of the VPC / PowerVS / VDC / Direct Link / VPN gateway + * respectively. This field is required for network type `vpc`, `power_virtual_server`, `vmware`, `vpn_gateway`, + * and `directlink` connections. It is also required for `redundant_gre` connections when the base_network_type is + * set to VPC. This field is required to be unspecified for network type `classic`, `gre_tunnel` and + * `unbound_gre_tunnel` connections. */ networkId?: string; /** Array of prefix route filters for a transit gateway connection. Prefix filters can be specified for netowrk - * type 'vpc', 'classic', 'power_virtual_server' and 'directlink' connections. They are not allowed for type - * 'gre_tunnel' connections. This is order dependent with those first in the array being applied first, and those + * type `vpc`, `classic`, `power_virtual_server` and `directlink` connections. They are not allowed for type + * `gre_tunnel` connections. This is order dependent with those first in the array being applied first, and those * at the end of the array being applied last, or just before applying the default. This field is optional for - * network type 'classic', 'vpc', 'directlink', and 'power_virtual_server' connections. This field is required to - * be unspecified for network type 'gre_tunnel', 'unbound_gre_tunnel' and 'redundant_gre' connections. + * network type `classic`, `vpc`, `directlink`, and `power_virtual_server` connections. This field is required to + * be unspecified for network type `gre_tunnel`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` + * connections. */ prefixFilters?: TransitGatewayConnectionPrefixFilter[]; /** Default setting of permit or deny which applies to any routes that don't match a specified filter. This - * field is optional for network type 'classic', 'vpc', 'directlink', and 'power_virtual_server' connections. This - * field is required to be unspecified for network type 'gre_tunnel', 'unbound_gre_tunnel' and 'redundant_gre' - * connections. + * field is optional for network type `classic`, `vpc`, `directlink`, and `power_virtual_server` connections. This + * field is required to be unspecified for network type `gre_tunnel`, `unbound_gre_tunnel`, `vpn_gateway` and + * `redundant_gre` connections. */ prefixFiltersDefault?: CreateTransitGatewayConnectionConstants.PrefixFiltersDefault | string; /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, - * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If 'remote_bgp_asn' is omitted on gre_tunnel + * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If `remote_bgp_asn` is omitted on gre_tunnel * or unbound_gre_tunnel connection create requests IBM will assign an ASN. * - * This field is optional for network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * This field is optional for network type `gre_tunnel` and `unbound_gre_tunnel` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', 'power_virtual_server' - * and 'gre_tunnel' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. */ remoteBgpAsn?: number; - /** Remote gateway IP address. This field is required for network type 'gre_tunnel' and 'unbound_gre_tunnel' - * connections. This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', - * 'power_virtual_server' and 'redundant_gre' connections. + /** Remote gateway IP address. This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` + * connections. This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. */ remoteGatewayIp?: string; /** Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 * network. Neither can be the network nor broadcast addresses. * - * This field is required for network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * This field is required for network type `gre_tunnel` and `unbound_gre_tunnel` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', - * 'power_virtual_server' and 'redundant_gre' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server`, `vpn_gateway` and `redundant_gre` connections. */ remoteTunnelIp?: string; /** Array of GRE tunnels for a transit gateway redundant GRE tunnel connection. This field is required for - * 'redundant_gre' connections. + * `redundant_gre` connections. */ - tunnels?: TransitGatewayRedundantGRETunnelTemplate[]; + tunnels?: TransitGatewayTunnelTemplate[]; /** Specify the connection's location. The specified availability zone must reside in the gateway's region. * Use the IBM Cloud global catalog to list zones within the desired region. * - * This field is required for network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. + * This field is required for network type `gre_tunnel`, `unbound_gre_tunnel` and `vpn_gateway` connections. * - * This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', 'power_virtual_server' - * and 'redundant_gre' connections. + * This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, + * `power_virtual_server` and `redundant_gre` connections. */ zone?: ZoneIdentity; headers?: OutgoingHttpHeaders; @@ -2180,13 +2325,15 @@ namespace TransitGatewayApisV1 { VPC = 'vpc', POWER_VIRTUAL_SERVER = 'power_virtual_server', REDUNDANT_GRE = 'redundant_gre', + VMWARE = 'vmware', + VPN_GATEWAY = 'vpn_gateway', } - /** The type of network the Unbound GRE tunnel is targeting. This field is required for network type 'unbound_gre_tunnel' and must be set to 'classic'. For a 'redundant_gre' network type, the value is required and can be either VPC or Classic. This field is required to be unspecified for network type 'classic', 'directlink', 'vpc', 'power_virtual_server' and 'gre_tunnel' connections. */ + /** The type of network the Unbound GRE tunnel is targeting. This field is required for network type `unbound_gre_tunnel` and must be set to `classic`. For a `redundant_gre` network type, the value is required and can be either VPC or Classic. This field is required to be unspecified for network type `classic`, `vmware`, `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. */ export enum BaseNetworkType { CLASSIC = 'classic', VPC = 'vpc', } - /** Default setting of permit or deny which applies to any routes that don't match a specified filter. This field is optional for network type 'classic', 'vpc', 'directlink', and 'power_virtual_server' connections. This field is required to be unspecified for network type 'gre_tunnel', 'unbound_gre_tunnel' and 'redundant_gre' connections. */ + /** Default setting of permit or deny which applies to any routes that don't match a specified filter. This field is optional for network type `classic`, `vpc`, `directlink`, and `power_virtual_server` connections. This field is required to be unspecified for network type `gre_tunnel`, `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. */ export enum PrefixFiltersDefault { PERMIT = 'permit', DENY = 'deny', @@ -2218,8 +2365,8 @@ namespace TransitGatewayApisV1 { /** The connection identifier. */ id: string; /** The user-defined name for this transit gateway. If specified as empty string or nil, the name will be the - * network name (the name of the VPC in the case of network type 'vpc', and the word Classic, in the case of - * network type 'classic'). + * network name (the name of the VPC in the case of network type `vpc`, and the word Classic, in the case of + * network type `classic`). */ name?: string; /** Default setting of permit or deny which applies to any routes that don't match a specified filter. */ @@ -2256,8 +2403,8 @@ namespace TransitGatewayApisV1 { } } - /** Parameters for the `getTransitGatewayGreTunnel` operation. */ - export interface GetTransitGatewayGreTunnelParams { + /** Parameters for the `listTransitGatewayGreTunnel` operation. */ + export interface ListTransitGatewayGreTunnelParams { /** The Transit Gateway identifier. */ transitGatewayId: string; /** The connection identifier. */ @@ -2290,7 +2437,7 @@ namespace TransitGatewayApisV1 { */ zone: ZoneIdentity; /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, - * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If 'remote_bgp_asn' is omitted on create + * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If `remote_bgp_asn` is omitted on create * requests, IBM will assign an ASN. */ remoteBgpAsn?: number; @@ -2361,10 +2508,10 @@ namespace TransitGatewayApisV1 { id: string; /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ action: CreateTransitGatewayConnectionPrefixFilterConstants.Action | string; - /** The IPv4 Prefix to be matched by this filter. If both the 'le' and 'ge' are zero, then this filter will only - * apply to routes that exactly match this prefix, while a non-zero value for either 'le' or 'ge', this filter can + /** The IPv4 Prefix to be matched by this filter. If both the `le` and `ge` are zero, then this filter will only + * apply to routes that exactly match this prefix, while a non-zero value for either `le` or `ge`, this filter can * apply to multiple routes with different prefix lengths, but will still only apply to prefixes contained in the - * address space defined by 'prefix'. + * address space defined by `prefix`. */ prefix: string; /** A reference to the prefix filter that will be the next filter applied to the Transit Gateway connection. @@ -2376,20 +2523,20 @@ namespace TransitGatewayApisV1 { */ before?: string; /** Defines the minimum matched prefix precision. If this field is non-zero then the filter will match all - * routes within the 'prefix' that have a prefix length greater than or equal to this value. + * routes within the `prefix` that have a prefix length greater than or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's - * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the 'ge' route - * matching behavior. If the 'le' value is non-zero the the 'ge' value must between the prefix length and the - * 'le' value, inclusive. + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route + * matching behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. */ ge?: number; /** Defines the maximum matched prefix precision. If this field is non-zero then the filter will match all - * routes within the 'prefix' that have a prefix length less than or equal to this value. + * routes within the `prefix` that have a prefix length less than or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's - * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the 'le' route - * matching behavior. If the 'ge' value is non-zero the the 'le' value must between the 'ge' value and 32, + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route + * matching behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, * inclusive. */ le?: number; @@ -2457,20 +2604,20 @@ namespace TransitGatewayApisV1 { */ before?: string; /** Defines the minimum matched prefix precision. If this field is non-zero then the filter will match all - * routes within the 'prefix' that have a prefix length greater or equal to this value. + * routes within the `prefix` that have a prefix length greater or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's - * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the 'ge' route - * matching behavior. If the 'le' value is non-zero the the 'ge' value must between the prefix length and the - * 'le' value, inclusive. + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route + * matching behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. */ ge?: number; /** Defines the maximum matched prefix precision. If this field is non-zero then the filter will match all - * routes within the 'prefix' that have a prefix length less than or equal to this value. + * routes within the `prefix` that have a prefix length less than or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's - * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the 'le' route - * matching behavior. If the 'ge' value is non-zero the the 'le' value must between the 'ge' value and 32, + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route + * matching behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, * inclusive. */ le?: number; @@ -2524,12 +2671,6 @@ namespace TransitGatewayApisV1 { * model interfaces ************************/ - /** Location of GRE tunnel. This field only applies to network type 'gre_tunnel' connections. */ - export interface GreTunnelZoneReference { - /** Availability zone name. */ - name: string; - } - /** A reference to the first page of resources. */ export interface PaginationFirstConnection { /** url. */ @@ -2581,7 +2722,7 @@ namespace TransitGatewayApisV1 { /** prefix filter. */ export interface PrefixFilterCust { /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ - action: PrefixFilterCust.Constants.Action | string; + action: string; /** A reference to the prefix filter that will be the next filter applied to the Transit Gateway connection. * * If this field is blank, this prefix filter will be the last rule applied before the connection's default rule. @@ -2593,157 +2734,64 @@ namespace TransitGatewayApisV1 { /** The date and time that this prefix filter was created. */ created_at: string; /** Defines the minimum matched prefix precision. If this field is non-zero then the filter will match all - * routes within the 'prefix' that have a prefix length greater or equal to this value. + * routes within the `prefix` that have a prefix length greater or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's - * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the 'ge' route - * matching behavior. If the 'le' value is non-zero the the 'ge' value must between the prefix length and the - * 'le' value, inclusive. + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route + * matching behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. */ ge?: number; /** Prefix Filter identifier. */ id: string; /** Defines the maximum matched prefix precision. If this field is non-zero then the filter will match all - * routes within the 'prefix' that have a prefix length less than or equal to this value. + * routes within the `prefix` that have a prefix length less than or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's - * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the 'le' route - * matching behavior. If the 'ge' value is non-zero the the 'le' value must between the 'ge' value and 32, + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route + * matching behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, * inclusive. */ le?: number; - /** The IPv4 Prefix to be matched by this filter. If both the 'le' and 'ge' are zero, then this filter will only - * apply to routes that exactly match this prefix, while a non-zero value for either 'le' or 'ge', this filter can + /** The IPv4 Prefix to be matched by this filter. If both the `le` and `ge` are zero, then this filter will only + * apply to routes that exactly match this prefix, while a non-zero value for either `le` or `ge`, this filter can * apply to multiple routes with different prefix lengths, but will still only apply to prefixes contained in the - * address space defined by 'prefix'. + * address space defined by `prefix`. */ prefix: string; /** The date and time that this prefix filter was last updated. */ updated_at?: string; } - export namespace PrefixFilterCust { - export namespace Constants { - /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ - export enum Action { - PERMIT = 'permit', - DENY = 'deny', - } - } - } /** A prefix filter update template. */ export interface PrefixFilterPut { /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ - action: PrefixFilterPut.Constants.Action | string; + action: string; /** Defines the minimum matched prefix precision. If this field is non-zero then the filter will match all - * routes within the 'prefix' that have a prefix length greater or equal to this value. + * routes within the `prefix` that have a prefix length greater or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's - * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the 'ge' route - * matching behavior. If the 'le' value is non-zero the the 'ge' value must between the prefix length and the - * 'le' value, inclusive. + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `ge` route + * matching behavior. If the `le` value is non-zero the the `ge` value must between the prefix length and the + * `le` value, inclusive. */ ge?: number; /** Defines the maximum matched prefix precision. If this field is non-zero then the filter will match all - * routes within the 'prefix' that have a prefix length less than or equal to this value. + * routes within the `prefix` that have a prefix length less than or equal to this value. * * This value can be zero, or a non-negative number greater than or equal to the prefix length of the filter's - * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the 'le' route - * matching behavior. If the 'ge' value is non-zero the the 'le' value must between the 'ge' value and 32, + * prefix or less then or equal to 32. If this value is set to zero, the filter will not use the `le` route + * matching behavior. If the `ge` value is non-zero the the `le` value must between the `ge` value and 32, * inclusive. */ le?: number; - /** The IPv4 Prefix to be matched by this filter. If both the 'le' and 'ge' are zero, then this filter will only - * apply to routes that exactly match this prefix, while a non-zero value for either 'le' or 'ge', this filter can + /** The IPv4 Prefix to be matched by this filter. If both the `le` and `ge` are zero, then this filter will only + * apply to routes that exactly match this prefix, while a non-zero value for either `le` or `ge`, this filter can * apply to multiple routes with different prefix lengths, but will still only apply to prefixes contained in the - * address space defined by 'prefix'. + * address space defined by `prefix`. */ prefix: string; } - export namespace PrefixFilterPut { - export namespace Constants { - /** Whether or not this prefix filter should allow or deny prefixes matching this filter's prefix definition. */ - export enum Action { - PERMIT = 'permit', - DENY = 'deny', - } - } - } - - /** Collection of all tunnels for redundant gre connection. */ - export interface RedundantGRETunnelCollection { - /** Collection of all tunnels for redundant gre connection. */ - tunnels: RedundantGRETunnelReference[]; - } - - /** Details for a redundant GRE tunnel. */ - export interface RedundantGRETunnelReference { - /** The type of network the redundant GRE tunnel is targeting. */ - base_network_type: RedundantGRETunnelReference.Constants.BaseNetworkType | string; - /** The date and time that this GRE tunnel was created. */ - created_at: string; - /** The unique identifier for this redundant GRE tunnel. */ - id: string; - /** Local network BGP ASN. It is assigned by IBM when the tunnel is created. */ - local_bgp_asn: number; - /** Local gateway IP address. */ - local_gateway_ip: string; - /** Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 network. - * Neither can be the network nor broadcast addresses. - */ - local_tunnel_ip: string; - /** GRE tunnel MTU. */ - mtu: number; - /** The user-defined name for this tunnel. */ - name: string; - /** The ID of the account for cross account Classic connections. This field is required when the GRE tunnel is - * in a different account than the gateway and the base network is Classic. - */ - network_account_id?: string; - /** The ID of the network VPC being connected via this connection. */ - network_id?: string; - /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, - * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If 'remote_bgp_asn' is omitted on create - * requests, IBM will assign an ASN. - */ - remote_bgp_asn: number; - /** Remote gateway IP address. */ - remote_gateway_ip: string; - /** Remote tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 - * network. Neither can be the network nor broadcast addresses. - */ - remote_tunnel_ip: string; - /** Tunnel's current configuration state. The list of enumerated values for this property may expand in the - * future. Code and processes using this field must tolerate unexpected values. - */ - status: RedundantGRETunnelReference.Constants.Status | string; - /** The date and time that this tunnel was last updated. */ - updated_at: string; - /** The tunnel's location. The specified availability zone must reside in the gateway's region. Use the IBM - * Cloud global catalog to list zones within the desired region. - */ - zone: RgreTunnelZoneReference; - } - export namespace RedundantGRETunnelReference { - export namespace Constants { - /** The type of network the redundant GRE tunnel is targeting. */ - export enum BaseNetworkType { - CLASSIC = 'classic', - VPC = 'vpc', - } - /** Tunnel's current configuration state. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum Status { - ATTACHED = 'attached', - FAILED = 'failed', - PENDING = 'pending', - DELETING = 'deleting', - DETACHING = 'detaching', - DETACHED = 'detached', - SUSPENDING = 'suspending', - SUSPENDED = 'suspended', - } - } - } /** The resource group to use. If unspecified, the account's [default resource group](https://console.bluemix.net/apidocs/resource-manager#introduction) is used. */ export interface ResourceGroupIdentity { @@ -2759,12 +2807,6 @@ namespace TransitGatewayApisV1 { id: string; } - /** The tunnel's location. The specified availability zone must reside in the gateway's region. Use the IBM Cloud global catalog to list zones within the desired region. */ - export interface RgreTunnelZoneReference { - /** Availability zone name. */ - name: string; - } - /** route report. */ export interface RouteReport { /** Array of connections with their routes. */ @@ -2778,19 +2820,10 @@ namespace TransitGatewayApisV1 { /** Route report status. The list of enumerated values for this property may expand in the future. Code and * processes using this field must tolerate unexpected values. */ - status: RouteReport.Constants.Status | string; + status: string; /** Date and time route report was last modified. */ updated_at?: string; } - export namespace RouteReport { - export namespace Constants { - /** Route report status. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum Status { - COMPLETE = 'complete', - PENDING = 'pending', - } - } - } /** route reports. */ export interface RouteReportCollection { @@ -2862,16 +2895,7 @@ namespace TransitGatewayApisV1 { * presence. The list of enumerated values for this property may expand in the future. Code and processes using * this field must tolerate unexpected values. */ - type: TSLocalLocation.Constants.Type | string; - } - export namespace TSLocalLocation { - export namespace Constants { - /** The type of the location, determining is this a multi-zone region, a single data center, or a point of presence. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum Type { - REGION = 'region', - DC = 'dc', - } - } + type: string; } /** Details of a Transit Gateway location. */ @@ -2887,7 +2911,7 @@ namespace TransitGatewayApisV1 { /** The set of network locations that are considered local for this Transit Gateway location. */ local_connection_locations: TSLocalLocation[]; /** List of valid zones for GRE tunnels. */ - zones: ZoneReferenceCollection[]; + zones: ZoneReference[]; } /** Details of a Transit Gateway location. */ @@ -2905,43 +2929,43 @@ namespace TransitGatewayApisV1 { /** Connection included in transit gateway. */ export interface TransitConnection { /** The type of network the GRE tunnel is targeting. */ - base_network_type?: TransitConnection.Constants.BaseNetworkType | string; + base_network_type?: string; /** The user-defined name for this transit gateway connection. */ name: string; /** The ID of the network being connected via this connection. This field is required for some types, such as - * 'vpc', 'power_virtual_server', 'directlink' and 'redundant_gre'. For network types 'vpc', 'redundant_gre', - * 'power_virtual_server' and 'directlink' this is the CRN of the VPC / PowerVS / Direct Link gateway - * respectively. + * `vpc`, `vmware`, `power_virtual_server`, `directlink`, `vpn_gateway` and `redundant_gre`. For network types + * `vpc`, `redundant_gre`, `power_virtual_server`, `vmware` and `directlink` this is the CRN of the VPC / PowerVS + * / VDC / Direct Link gateway respectively. */ network_id?: string; /** Defines what type of network is connected via this connection. The list of enumerated values for this * property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - network_type: TransitConnection.Constants.NetworkType | string; - /** The unique identifier for this Transit Gateway Connection. */ + network_type: string; + /** The unique identifier for this Transit Gateway connection. */ id: string; - /** Deprecated: network_type 'gre_tunnel' connections use 'base_connection_id' to specify the ID of a - * network_type 'classic' connection the tunnel is configured over. The specified connection must reside in the - * same transit gateway and be in an active state. The 'classic' connection cannot be deleted until any - * 'gre_tunnel' connections using it are deleted. This field only applies to and is required for network type - * 'gre_tunnel' connections. + /** Deprecated: network_type `gre_tunnel` connections use `base_connection_id` to specify the ID of a + * network_type `classic` connection the tunnel is configured over. The specified connection must reside in the + * same transit gateway and be in an active state. The `classic` connection cannot be deleted until any + * `gre_tunnel` connections using it are deleted. This field only applies to and is required for network type + * `gre_tunnel` connections. */ base_connection_id?: string; /** The date and time that this connection was created. */ created_at: string; - /** Local network BGP ASN. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Local network BGP ASN. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ local_bgp_asn?: number; - /** Local gateway IP address. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Local gateway IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ local_gateway_ip?: string; - /** Local tunnel IP address. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Local tunnel IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ local_tunnel_ip?: string; - /** GRE tunnel MTU. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. */ + /** GRE tunnel MTU. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` connections. */ mtu?: number; /** The ID of the account which owns the connected network. Generally only used if the network is in a different * IBM Cloud account than the gateway. @@ -2950,23 +2974,23 @@ namespace TransitGatewayApisV1 { /** Array of prefix route filters for a transit gateway connection. This is order dependent with those first in * the array being applied first, and those at the end of the array is applied last, or just before the default. * - * This field does not apply to the 'redundant_gre' network type. + * This field does not apply to the `redundant_gre` or `vmware` network types. */ prefix_filters?: TransitGatewayConnectionPrefixFilterReference[]; /** Default setting of permit or deny which applies to any routes that don't match a specified filter. * - * This field does not apply to the 'redundant_gre' network type. + * This field does not apply to the `redundant_gre` or `vmware` network types. */ - prefix_filters_default?: TransitConnection.Constants.PrefixFiltersDefault | string; - /** Remote network BGP ASN. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + prefix_filters_default?: string; + /** Remote network BGP ASN. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ remote_bgp_asn?: number; - /** Remote gateway IP address. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Remote gateway IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ remote_gateway_ip?: string; - /** Remote tunnel IP address. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Remote tunnel IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ remote_tunnel_ip?: string; @@ -2974,63 +2998,19 @@ namespace TransitGatewayApisV1 { * IBM Cloud accounts. The list of enumerated values for this property may expand in the future. Code and processes * using this field must tolerate unexpected values. */ - request_status: TransitConnection.Constants.RequestStatus | string; + request_status: string; /** Connection's current configuration state. The list of enumerated values for this property may expand in the * future. Code and processes using this field must tolerate unexpected values. */ - status: TransitConnection.Constants.Status | string; + status: string; /** Transit gateway reference. */ transit_gateway: TransitGatewayReference; - /** Collection of all tunnels for 'redundant_gre' connection. */ - tunnels?: TransitGatewayRedundantGRETunnelReference[]; + /** Collection of all tunnels for `redundant_gre` connection. */ + tunnels?: TransitGatewayTunnel[]; /** The date and time that this connection was last updated. */ updated_at: string; - /** Location of GRE tunnel. This field only applies to network type 'gre_tunnel' connections. */ - zone?: GreTunnelZoneReference; - } - export namespace TransitConnection { - export namespace Constants { - /** The type of network the GRE tunnel is targeting. */ - export enum BaseNetworkType { - CLASSIC = 'classic', - VPC = 'vpc', - } - /** Defines what type of network is connected via this connection. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum NetworkType { - CLASSIC = 'classic', - DIRECTLINK = 'directlink', - GRE_TUNNEL = 'gre_tunnel', - UNBOUND_GRE_TUNNEL = 'unbound_gre_tunnel', - VPC = 'vpc', - POWER_VIRTUAL_SERVER = 'power_virtual_server', - REDUNDANT_GRE = 'redundant_gre', - } - /** Default setting of permit or deny which applies to any routes that don't match a specified filter. This field does not apply to the 'redundant_gre' network type. */ - export enum PrefixFiltersDefault { - PERMIT = 'permit', - DENY = 'deny', - } - /** Only visible for cross account connections, this field represents the status of a connection request between IBM Cloud accounts. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum RequestStatus { - PENDING = 'pending', - APPROVED = 'approved', - REJECTED = 'rejected', - EXPIRED = 'expired', - DETACHED = 'detached', - } - /** Connection's current configuration state. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum Status { - ATTACHED = 'attached', - FAILED = 'failed', - PENDING = 'pending', - NETWORK_PENDING = 'network_pending', - DELETING = 'deleting', - DETACHING = 'detaching', - DETACHED = 'detached', - SUSPENDING = 'suspending', - SUSPENDED = 'suspended', - } - } + /** Availability zone reference. */ + zone?: ZoneReference; } /** Transit gateway connections. */ @@ -3047,18 +3027,24 @@ namespace TransitGatewayApisV1 { /** Details of a Transit Gateway. */ export interface TransitGateway { - /** The unique identifier for this Transit Gateway. */ - id: string; - /** The CRN for this Transit Gateway. */ - crn: string; - /** A human readable name for the transit gateway. */ - name: string; - /** Location of Transit Gateway Services. */ - location: string; + /** Allow GRE traffic in this gateway to flow across zones. */ + allow_gre_traffic_across_zones?: boolean; + /** The number of connections associated with this Transit Gateway. */ + connection_count?: number; + /** Indicates if this Transit Gateway has a connection that needs attention (Such as cross account approval). */ + connection_needs_attention?: boolean; /** The date and time that this gateway was created. */ created_at: string; + /** Cloud Resource Name of a transit gateway. */ + crn?: string; /** Allow global routing for a Transit Gateway. */ global: boolean; + /** A unique identifier for this transit gateway. */ + id: string; + /** Location of Transit Gateway Services. */ + location: string; + /** A human readable name for the transit gateway. */ + name: string; /** The resource group to use. If unspecified, the account's [default resource * group](https://console.bluemix.net/apidocs/resource-manager#introduction) is used. */ @@ -3066,23 +3052,10 @@ namespace TransitGatewayApisV1 { /** The status of the Transit Gateway. The list of enumerated values for this property may expand in the future. * Code and processes using this field must tolerate unexpected values. */ - status: TransitGateway.Constants.Status | string; + status: string; /** The date and time that this gateway was last updated. */ updated_at?: string; } - export namespace TransitGateway { - export namespace Constants { - /** The status of the Transit Gateway. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum Status { - AVAILABLE = 'available', - FAILED = 'failed', - PENDING = 'pending', - DELETING = 'deleting', - SUSPENDING = 'suspending', - SUSPENDED = 'suspended', - } - } - } /** A list of Transit Gateways. */ export interface TransitGatewayCollection { @@ -3116,67 +3089,80 @@ namespace TransitGatewayApisV1 { /** Connection included in transit gateway. */ export interface TransitGatewayConnectionCust { - /** The type of network the GRE tunnel is targeting. */ - base_network_type?: TransitGatewayConnectionCust.Constants.BaseNetworkType | string; - /** The user-defined name for this transit gateway connection. */ - name: string; - /** The ID of the network being connected via this connection. This field is required for some types, such as - * 'vpc', 'power_virtual_server', 'directlink' and 'redundant_gre'. For network types 'vpc', 'redundant_gre', - * 'power_virtual_server' and 'directlink' this is the CRN of the VPC / PowerVS / Direct Link gateway - * respectively. - */ - network_id?: string; - /** Defines what type of network is connected via this connection. The list of enumerated values for this - * property may expand in the future. Code and processes using this field must tolerate unexpected values. - */ - network_type: TransitGatewayConnectionCust.Constants.NetworkType | string; - /** The unique identifier for this Transit Gateway Connection. */ - id: string; - /** Deprecated: network_type 'gre_tunnel' connections use 'base_connection_id' to specify the ID of a - * network_type 'classic' connection the tunnel is configured over. The specified connection must reside in the - * same transit gateway and be in an active state. The 'classic' connection cannot be deleted until any - * 'gre_tunnel' connections using it are deleted. This field only applies to and is required for network type - * 'gre_tunnel' connections. + /** Deprecated: network_type `gre_tunnel` connections use `base_connection_id` to specify the ID of a + * network_type `classic` connection the tunnel is configured over. The specified connection must reside in the + * same transit gateway and be in an active state. The `classic` connection cannot be deleted until any + * `gre_tunnel` connections using it are deleted. This field only applies to and is required for network type + * `gre_tunnel` connections. */ base_connection_id?: string; + /** The type of network the Unbound GRE tunnel is targeting. This field is required for network type + * `unbound_gre_tunnel` and must be set to `classic`. For a `redundant_gre` network type, the value is required + * and can be either VPC or Classic. This field is required to be unspecified for network type `classic`, `vmware`, + * `directlink`, `vpc`, `power_virtual_server`, `vpn_gateway` and `gre_tunnel` connections. + */ + base_network_type?: string; + /** network_type 'vpn_gateway' connections use 'cidr' to specify the CIDR to use for the VPN GRE tunnels. */ + cidr?: string; /** The date and time that this connection was created. */ created_at: string; - /** Local network BGP ASN. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** The unique identifier for this Transit Gateway connection. */ + id: string; + /** Local network BGP ASN. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ local_bgp_asn?: number; - /** Local gateway IP address. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Local gateway IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ local_gateway_ip?: string; - /** Local tunnel IP address. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Local tunnel IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ local_tunnel_ip?: string; - /** GRE tunnel MTU. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' connections. */ + /** GRE tunnel MTU. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` connections. */ mtu?: number; + /** The user-defined name for this transit gateway connection. Network type `vpc` connections are defaulted to + * the name of the VPC. Network type `classic` connections are named `classic`. + * + * This field is required for network type `power_virtual_server`, `directlink`, `vmware`, `gre_tunnel`, + * `unbound_gre_tunnel`, `vpn_gateway` and `redundant_gre` connections. + * + * This field is optional for network type `classic`, `vpc` connections. + */ + name?: string; /** The ID of the account which owns the connected network. Generally only used if the network is in a different * IBM Cloud account than the gateway. */ network_account_id?: string; + /** The ID of the network being connected via this connection. For network types `vpc`,`power_virtual_server`, + * `vmware`, `directlink` and `vpn_gateway` this is the CRN of the VPC / PowerVS / VDC / Direct Link / VPN gateway + * respectively. This field is required for network type `vpc`, `power_virtual_server`, `vmware`, `vpn_gateway`, + * and `directlink` connections. It is also required for `redundant_gre` connections when the base_network_type is + * set to VPC. This field is required to be unspecified for network type `classic`, `gre_tunnel` and + * `unbound_gre_tunnel` connections. + */ + network_id?: string; + /** Defines what type of network is connected via this connection. */ + network_type?: string; /** Array of prefix route filters for a transit gateway connection. This is order dependent with those first in * the array being applied first, and those at the end of the array is applied last, or just before the default. - * This field does not apply to the 'redundant_gre' network type. + * This field does not apply to the `redundant_gre` network type. */ prefix_filters?: TransitGatewayConnectionPrefixFilterReference[]; /** Default setting of permit or deny which applies to any routes that don't match a specified filter. This - * field does not apply to the 'redundant_gre' network type. + * field does not apply to the `redundant_gre` network type. */ - prefix_filters_default?: TransitGatewayConnectionCust.Constants.PrefixFiltersDefault | string; - /** Remote network BGP ASN. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + prefix_filters_default?: string; + /** Remote network BGP ASN. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ remote_bgp_asn?: number; - /** Remote gateway IP address. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Remote gateway IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ remote_gateway_ip?: string; - /** Remote tunnel IP address. This field only applies to network type 'gre_tunnel' and 'unbound_gre_tunnel' + /** Remote tunnel IP address. This field only applies to network type `gre_tunnel` and `unbound_gre_tunnel` * connections. */ remote_tunnel_ip?: string; @@ -3184,67 +3170,23 @@ namespace TransitGatewayApisV1 { * IBM Cloud accounts. The list of enumerated values for this property may expand in the future. Code and processes * using this field must tolerate unexpected values. */ - request_status: TransitGatewayConnectionCust.Constants.RequestStatus | string; + request_status: string; /** Connection's current configuration state. The list of enumerated values for this property may expand in the * future. Code and processes using this field must tolerate unexpected values. */ - status: TransitGatewayConnectionCust.Constants.Status | string; - /** Collection of all tunnels for 'redundant_gre' connection. */ - tunnels?: TransitGatewayRedundantGRETunnelReference[]; + status: string; + /** Collection of all tunnels for `redundant_gre` connection. */ + tunnels?: TransitGatewayTunnel[]; /** The date and time that this connection was last updated. */ updated_at: string; - /** Location of GRE tunnel. This field only applies to network type 'gre_tunnel' connections. */ - zone?: GreTunnelZoneReference; - } - export namespace TransitGatewayConnectionCust { - export namespace Constants { - /** The type of network the GRE tunnel is targeting. */ - export enum BaseNetworkType { - CLASSIC = 'classic', - VPC = 'vpc', - } - /** Defines what type of network is connected via this connection. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum NetworkType { - CLASSIC = 'classic', - DIRECTLINK = 'directlink', - GRE_TUNNEL = 'gre_tunnel', - UNBOUND_GRE_TUNNEL = 'unbound_gre_tunnel', - VPC = 'vpc', - POWER_VIRTUAL_SERVER = 'power_virtual_server', - REDUNDANT_GRE = 'redundant_gre', - } - /** Default setting of permit or deny which applies to any routes that don't match a specified filter. This field does not apply to the 'redundant_gre' network type. */ - export enum PrefixFiltersDefault { - PERMIT = 'permit', - DENY = 'deny', - } - /** Only visible for cross account connections, this field represents the status of a connection request between IBM Cloud accounts. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum RequestStatus { - PENDING = 'pending', - APPROVED = 'approved', - REJECTED = 'rejected', - EXPIRED = 'expired', - DETACHED = 'detached', - } - /** Connection's current configuration state. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum Status { - ATTACHED = 'attached', - FAILED = 'failed', - PENDING = 'pending', - NETWORK_PENDING = 'network_pending', - DELETING = 'deleting', - DETACHING = 'detaching', - DETACHED = 'detached', - SUSPENDING = 'suspending', - SUSPENDED = 'suspended', - } - } + /** Location of GRE tunnel. This field only applies to network type `gre_tunnel` connections. */ + zone?: ZoneReference; } /** A prefix filter for a Transit Gateway connection. */ export interface TransitGatewayConnectionPrefixFilter { /** Whether to permit or deny prefix filter. */ - action: TransitGatewayConnectionPrefixFilter.Constants.Action | string; + action: string; /** IP Prefix GE. */ ge?: number; /** IP Prefix LE. */ @@ -3252,20 +3194,11 @@ namespace TransitGatewayApisV1 { /** IP Prefix. */ prefix: string; } - export namespace TransitGatewayConnectionPrefixFilter { - export namespace Constants { - /** Whether to permit or deny prefix filter. */ - export enum Action { - PERMIT = 'permit', - DENY = 'deny', - } - } - } /** A prefix filter reference object for a Transit Gateway connection. */ export interface TransitGatewayConnectionPrefixFilterReference { /** Whether to permit or deny prefix filter. */ - action: TransitGatewayConnectionPrefixFilterReference.Constants.Action | string; + action: string; /** Identifier of prefix filter that handles the ordering and follow semantics: * - When a filter reference another filter in it's before field, then the filter making the reference is applied * before @@ -3298,18 +3231,21 @@ namespace TransitGatewayApisV1 { /** The date and time that this prefix filter was last updated. */ updated_at?: string; } - export namespace TransitGatewayConnectionPrefixFilterReference { - export namespace Constants { - /** Whether to permit or deny prefix filter. */ - export enum Action { - PERMIT = 'permit', - DENY = 'deny', - } - } + + /** Transit gateway reference. */ + export interface TransitGatewayReference { + /** gateway CRN. */ + crn: string; + /** gateway ID. */ + id: string; + /** transit gateway name. */ + name: string; } /** Details for a redundant GRE tunnel. */ - export interface TransitGatewayRedundantGRETunnelReference { + export interface TransitGatewayTunnel { + /** The type of network the redundant GRE tunnel is targeting. */ + base_network_type: string; /** The date and time that this GRE tunnel was created. */ created_at: string; /** The unique identifier for this redundant GRE tunnel. */ @@ -3326,8 +3262,14 @@ namespace TransitGatewayApisV1 { mtu: number; /** The user-defined name for this tunnel. */ name: string; + /** The ID of the account for cross account Classic connections. This field is required when the GRE tunnel is + * in a different account than the gateway and the base network is Classic. + */ + network_account_id?: string; + /** The ID of the network VPC being connected via this connection. */ + network_id?: string; /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, - * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If 'remote_bgp_asn' is omitted on create + * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If `remote_bgp_asn` is omitted on create * requests, IBM will assign an ASN. */ remote_bgp_asn: number; @@ -3340,32 +3282,21 @@ namespace TransitGatewayApisV1 { /** Tunnel's current configuration state. The list of enumerated values for this property may expand in the * future. Code and processes using this field must tolerate unexpected values. */ - status: TransitGatewayRedundantGRETunnelReference.Constants.Status | string; + status: string; /** The date and time that this tunnel was last updated. */ updated_at: string; - /** The tunnel's location. The specified availability zone must reside in the gateway's region. Use the IBM - * Cloud global catalog to list zones within the desired region. - */ - zone: RgreTunnelZoneReference; - } - export namespace TransitGatewayRedundantGRETunnelReference { - export namespace Constants { - /** Tunnel's current configuration state. The list of enumerated values for this property may expand in the future. Code and processes using this field must tolerate unexpected values. */ - export enum Status { - ATTACHED = 'attached', - FAILED = 'failed', - PENDING = 'pending', - DELETING = 'deleting', - DETACHING = 'detaching', - DETACHED = 'detached', - SUSPENDING = 'suspending', - SUSPENDED = 'suspended', - } - } + /** Availability zone reference. */ + zone: ZoneReference; + } + + /** Collection of all tunnels for redundant gre connection. */ + export interface TransitGatewayTunnelCollection { + /** Collection of all tunnels for redundant gre connection. */ + tunnels: TransitGatewayTunnel[]; } /** A create template with information for redundant GRE tunnel. */ - export interface TransitGatewayRedundantGRETunnelTemplate { + export interface TransitGatewayTunnelTemplate { /** Local gateway IP address. */ local_gateway_ip: string; /** Local tunnel IP address. The local_tunnel_ip and remote_tunnel_ip addresses must be in the same /30 network. @@ -3375,7 +3306,7 @@ namespace TransitGatewayApisV1 { /** The user-defined name for this tunnel connection. */ name: string; /** Remote network BGP ASN. The following ASN values are reserved and unavailable 0, 13884, 36351, 64512-64513, - * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If 'remote_bgp_asn' is omitted on create + * 65100, 65200-65234, 65402-65433, 65500 and 4201065000-4201065999. If `remote_bgp_asn` is omitted on create * requests, IBM will assign an ASN. */ remote_bgp_asn?: number; @@ -3391,16 +3322,6 @@ namespace TransitGatewayApisV1 { zone: ZoneIdentity; } - /** Transit gateway reference. */ - export interface TransitGatewayReference { - /** gateway CRN. */ - crn: string; - /** gateway ID. */ - id: string; - /** transit gateway name. */ - name: string; - } - /** ZoneIdentity. */ export interface ZoneIdentity { } @@ -3411,12 +3332,6 @@ namespace TransitGatewayApisV1 { name: string; } - /** Collection of availability zones. */ - export interface ZoneReferenceCollection { - /** Array of valid zones for GRE tunnels. */ - zones: ZoneReference[]; - } - /** Availability zone. */ export interface ZoneIdentityByName extends ZoneIdentity { /** Availability zone name. */ @@ -3432,7 +3347,6 @@ namespace TransitGatewayApisV1 { */ export class TransitGatewaysPager { protected _hasNext: boolean; - protected pageContext: any; protected client: TransitGatewayApisV1; @@ -3447,7 +3361,10 @@ namespace TransitGatewayApisV1 { * @constructor * @returns {TransitGatewaysPager} */ - constructor(client: TransitGatewayApisV1, params?: TransitGatewayApisV1.ListTransitGatewaysParams) { + constructor( + client: TransitGatewayApisV1, + params?: TransitGatewayApisV1.ListTransitGatewaysParams + ) { if (params && params.start) { throw new Error(`the params.start field should not be set`); } @@ -3481,9 +3398,9 @@ namespace TransitGatewayApisV1 { const response = await this.client.listTransitGateways(this.params); const { result } = response; - let next; + let next = null; if (result && result.next) { - next = result.next.start; + next = result.next.start } this.pageContext.next = next; if (!this.pageContext.next) { @@ -3511,7 +3428,6 @@ namespace TransitGatewayApisV1 { */ export class ConnectionsPager { protected _hasNext: boolean; - protected pageContext: any; protected client: TransitGatewayApisV1; @@ -3526,7 +3442,10 @@ namespace TransitGatewayApisV1 { * @constructor * @returns {ConnectionsPager} */ - constructor(client: TransitGatewayApisV1, params?: TransitGatewayApisV1.ListConnectionsParams) { + constructor( + client: TransitGatewayApisV1, + params?: TransitGatewayApisV1.ListConnectionsParams + ) { if (params && params.start) { throw new Error(`the params.start field should not be set`); } @@ -3560,9 +3479,9 @@ namespace TransitGatewayApisV1 { const response = await this.client.listConnections(this.params); const { result } = response; - let next; + let next = null; if (result && result.next) { - next = result.next.start; + next = result.next.start } this.pageContext.next = next; if (!this.pageContext.next) { @@ -3590,7 +3509,6 @@ namespace TransitGatewayApisV1 { */ export class TransitGatewayConnectionsPager { protected _hasNext: boolean; - protected pageContext: any; protected client: TransitGatewayApisV1; @@ -3605,7 +3523,10 @@ namespace TransitGatewayApisV1 { * @constructor * @returns {TransitGatewayConnectionsPager} */ - constructor(client: TransitGatewayApisV1, params: TransitGatewayApisV1.ListTransitGatewayConnectionsParams) { + constructor( + client: TransitGatewayApisV1, + params: TransitGatewayApisV1.ListTransitGatewayConnectionsParams + ) { if (params && params.start) { throw new Error(`the params.start field should not be set`); } @@ -3639,9 +3560,9 @@ namespace TransitGatewayApisV1 { const response = await this.client.listTransitGatewayConnections(this.params); const { result } = response; - let next; + let next = null; if (result && result.next) { - next = result.next.start; + next = result.next.start } this.pageContext.next = next; if (!this.pageContext.next) {