diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 744ee708dfde..1efb88423961 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -661,6 +661,9 @@ sdk/ai/ai-inference-rest @glharper @dargilco # PRLabel: %Mgmt /sdk/monitor/arm-monitor/ @qiaozha @MaryGao +# PRLabel: %Mgmt +/sdk/mongocluster/arm-mongocluster/ @qiaozha @MaryGao + # PRLabel: %Mgmt /sdk/monitor/arm-monitor-profile-2020-09-01-hybrid/ @qiaozha @MaryGao diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 22006ab76e92..28d906276bb5 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -479,6 +479,9 @@ dependencies: '@rush-temp/arm-mobilenetwork': specifier: file:./projects/arm-mobilenetwork.tgz version: file:projects/arm-mobilenetwork.tgz + '@rush-temp/arm-mongocluster': + specifier: file:./projects/arm-mongocluster.tgz + version: file:projects/arm-mongocluster.tgz '@rush-temp/arm-monitor': specifier: file:./projects/arm-monitor.tgz version: file:projects/arm-monitor.tgz @@ -3384,7 +3387,7 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.39 + '@types/node': 20.10.8 dev: false /@types/bunyan@1.8.9: @@ -3412,7 +3415,7 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.19.39 + '@types/node': 20.10.8 dev: false /@types/cookie@0.4.1: @@ -3422,7 +3425,7 @@ packages: /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 18.19.39 + '@types/node': 20.10.8 dev: false /@types/debug@4.1.12: @@ -3461,7 +3464,7 @@ packages: /@types/express-serve-static-core@4.19.0: resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} dependencies: - '@types/node': 18.19.39 + '@types/node': 20.10.8 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -3489,7 +3492,7 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 18.19.39 + '@types/node': 20.10.8 dev: false /@types/fs-extra@8.1.5: @@ -3532,7 +3535,7 @@ packages: /@types/jsonfile@6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 18.19.39 + '@types/node': 20.10.8 dev: false /@types/jsonwebtoken@9.0.6: @@ -3597,7 +3600,7 @@ packages: /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 18.19.39 + '@types/node': 20.10.8 form-data: 4.0.0 dev: false @@ -3646,7 +3649,7 @@ packages: /@types/readdir-glob@1.1.5: resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} dependencies: - '@types/node': 18.19.39 + '@types/node': 20.10.8 dev: false /@types/resolve@1.20.2: @@ -3672,7 +3675,7 @@ packages: resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/node': 18.19.39 + '@types/node': 20.10.8 '@types/send': 0.17.4 dev: false @@ -3713,7 +3716,7 @@ packages: /@types/tunnel@0.0.3: resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} dependencies: - '@types/node': 18.19.39 + '@types/node': 20.10.8 dev: false /@types/underscore@1.11.15: @@ -3754,7 +3757,7 @@ packages: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true dependencies: - '@types/node': 18.19.39 + '@types/node': 20.10.8 dev: false optional: true @@ -10480,6 +10483,12 @@ packages: hasBin: true dev: false + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: false + /typescript@5.5.3: resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} engines: {node: '>=14.17'} @@ -11118,7 +11127,7 @@ packages: dev: false file:projects/abort-controller.tgz: - resolution: {integrity: sha512-tsvWnZnzoiICM/UDEYiPHs1fjJp/hOdRIISUY+Pf2v21MgOK2F/oExLkpJCCKHeX/k51hn+6+dUVIKte+FBvvQ==, tarball: file:projects/abort-controller.tgz} + resolution: {integrity: sha512-jrk1v37fK9EmuNhC0czeE0ifI7mkHqXenZYC47n4P8ciatm36N7bxFA4tg6xxsqgY32jIJeQBZJC0xL4YfKEmw==, tarball: file:projects/abort-controller.tgz} name: '@rush-temp/abort-controller' version: 0.0.0 dependencies: @@ -11150,7 +11159,7 @@ packages: dev: false file:projects/agrifood-farming.tgz: - resolution: {integrity: sha512-Ex+hUNxvMTwxBMG3hYYOXZUYsT8Hcz9Knj+Crvzyb70YK02yHOqwGqQecOBHYbMCRc3uX2WL0BY6CJHkdow3PA==, tarball: file:projects/agrifood-farming.tgz} + resolution: {integrity: sha512-H293o8qFhcHUKQo+9K5PtM9brVExTL3p+/Nglngv3Sh1s2ncIsd65AGL8R8kls0lPKiXivnWv6K9wN2ptQeu0w==, tarball: file:projects/agrifood-farming.tgz} name: '@rush-temp/agrifood-farming' version: 0.0.0 dependencies: @@ -11196,7 +11205,7 @@ packages: dev: false file:projects/ai-anomaly-detector.tgz: - resolution: {integrity: sha512-Xy0T7Fxl7b1H7fDN+eHku+hwbf0RQ/ZS0vSzsIgX9Hr1MeYx5naHJd2afPUD4K9fTlXMcfdWVyR7D0/Z8zXKPQ==, tarball: file:projects/ai-anomaly-detector.tgz} + resolution: {integrity: sha512-IufiSCxCd13413Ml0iTi9vIXsjfuku4M736bEK/UWaFIaIHHWi6uJ+6DHBDLi9H6Lg48xjwNz1UKKxmPhRYMig==, tarball: file:projects/ai-anomaly-detector.tgz} name: '@rush-temp/ai-anomaly-detector' version: 0.0.0 dependencies: @@ -11242,7 +11251,7 @@ packages: dev: false file:projects/ai-content-safety.tgz: - resolution: {integrity: sha512-5W5rgigY9RgwxRoFlKNDTHUC0oyzLVdL+zRL/UWOTfj1Q5k8bjKiAs5sXUXcmfisT2YmwcfMYzWAnMbZUYNuHQ==, tarball: file:projects/ai-content-safety.tgz} + resolution: {integrity: sha512-UzYhs5Oi38C0W7qsAq69+pNcVPnH2Eow7EAFIOPwk2Z2c27ui21+epWuf5iMYk40FsyCffL5GBHDqV1mGOq6UQ==, tarball: file:projects/ai-content-safety.tgz} name: '@rush-temp/ai-content-safety' version: 0.0.0 dependencies: @@ -11286,7 +11295,7 @@ packages: dev: false file:projects/ai-document-intelligence.tgz: - resolution: {integrity: sha512-Fc6CDBOrnCCbu+rzYNMB1D7RtoJj9nxOcyKSBhy+PhhY8NG9eobHEbyNN8AWPpLIqmggMv0rXsizzGzdhl9z6g==, tarball: file:projects/ai-document-intelligence.tgz} + resolution: {integrity: sha512-j2y57iwOWd1q1RMcn7hXMqL1IRBqke0kqHCzok6fFZPO0Kz6EqfUGG5MIq8jHsXtrFBl9CBQKQxGjLONZ4iABA==, tarball: file:projects/ai-document-intelligence.tgz} name: '@rush-temp/ai-document-intelligence' version: 0.0.0 dependencies: @@ -11332,7 +11341,7 @@ packages: dev: false file:projects/ai-document-translator.tgz: - resolution: {integrity: sha512-d17XFsHb/Q4XmIFAoqOJeVDX1/mVwD7bdhXFDYQtlNfaVHkR7CX/vFYDNTFPLOaRtQahrWKa/Xbq3VS+p+mHlw==, tarball: file:projects/ai-document-translator.tgz} + resolution: {integrity: sha512-8fGS2wBMVi67BPqhDsqEsn0tNXlqUtWscXSuNO06WQtCDVB2NLT0YuARNJ/i+pJV1k8gckVqruyfykp2TNymkA==, tarball: file:projects/ai-document-translator.tgz} name: '@rush-temp/ai-document-translator' version: 0.0.0 dependencies: @@ -11376,7 +11385,7 @@ packages: dev: false file:projects/ai-form-recognizer.tgz: - resolution: {integrity: sha512-GICJVn1ofAOsrSYWqDe6TLM3VDCVACc+SttsGZLXwOY9+3dwhC2xcMuyxH0QMjl4OXlY+xjkR5t/bXCR+baJnw==, tarball: file:projects/ai-form-recognizer.tgz} + resolution: {integrity: sha512-KN45y7Ph1A5/CbvPwfTJn6tTkwTwq474lwJ5PQ2hbnVOhRjHRwzq/FZ/m0K3B5rtHf+5B19FO6pIwqenLRDQQQ==, tarball: file:projects/ai-form-recognizer.tgz} name: '@rush-temp/ai-form-recognizer' version: 0.0.0 dependencies: @@ -11424,7 +11433,7 @@ packages: dev: false file:projects/ai-inference.tgz: - resolution: {integrity: sha512-eY+lyOshaZJQysJBed7ngXepVI16YCdvm05KpqcxBXJ5Vnllzeachd6eoRE1CHc2EoEE6J0d+r5gyH1MpsJDCQ==, tarball: file:projects/ai-inference.tgz} + resolution: {integrity: sha512-VV7Czv1jOdhkeaJ8FZFW/2YmBXZhED3IBqqKvuT14meEjjQ7iYZWOC30qnVJuw75uDZMqcZMo9WVBcra2ilxNw==, tarball: file:projects/ai-inference.tgz} name: '@rush-temp/ai-inference' version: 0.0.0 dependencies: @@ -11463,7 +11472,7 @@ packages: dev: false file:projects/ai-language-conversations.tgz: - resolution: {integrity: sha512-KBzOsQkD7PRwt6T+CHRIVDyuIjx6r1dSJ1xPG87821dgM0ZOjCnMY/TVVvRkrAolT4Yuf3hhNT8anz1fz1QqqA==, tarball: file:projects/ai-language-conversations.tgz} + resolution: {integrity: sha512-0eC+AOhj/dZ9iIqOoGOzqSKJgOfsJdxipiZowkRVUHLhxzR2L7PkKGRE4Eoe2sYeRfePNiCh4pgCQRBEgA41og==, tarball: file:projects/ai-language-conversations.tgz} name: '@rush-temp/ai-language-conversations' version: 0.0.0 dependencies: @@ -11512,7 +11521,7 @@ packages: dev: false file:projects/ai-language-text.tgz: - resolution: {integrity: sha512-rG4iDBOuRQUeM9G2/XH4MnSzeZlqVKIKexDKaBs8DFzS5LYH4On4XCcbFFtBUzZQiiaZl4NZczlEkVLrwL+kOg==, tarball: file:projects/ai-language-text.tgz} + resolution: {integrity: sha512-E8kcjniIZSyUtG2HjLP2rdid7R7IpGrcGZWVR36EV4zxylcVsARuuJ56I6Mb+OGqSpaxryPMBJnZDdzmlkgrbw==, tarball: file:projects/ai-language-text.tgz} name: '@rush-temp/ai-language-text' version: 0.0.0 dependencies: @@ -11561,7 +11570,7 @@ packages: dev: false file:projects/ai-language-textauthoring.tgz: - resolution: {integrity: sha512-wXY0hmfLnoX/QUm7162liqVwLbbK+5Wz5HKkQ13kFx0VD46+RulZvEzCGpLJzuZwZMcVe5Fmx5/cc99apBZHjA==, tarball: file:projects/ai-language-textauthoring.tgz} + resolution: {integrity: sha512-7aAZaIE6ahWWMxXrKlZM93wDSgZZOKX4LslsHX/sraizWXyR22lMKTdKijRHuVBA5xjBRVYOZluYrJx8A6zMRg==, tarball: file:projects/ai-language-textauthoring.tgz} name: '@rush-temp/ai-language-textauthoring' version: 0.0.0 dependencies: @@ -11588,7 +11597,7 @@ packages: dev: false file:projects/ai-metrics-advisor.tgz: - resolution: {integrity: sha512-74qdJQ/pLX/uEuaTLu+XyRQrS3DfhqxKK2/2QIauSDKsR0nlzxtiaKuMiualgZP0AfOJA9Hwrl6/VPe4qys+qQ==, tarball: file:projects/ai-metrics-advisor.tgz} + resolution: {integrity: sha512-5HPT+izSvjdwiTak1Lpu90lBagvnAxZ62cZFP7rsUNOpX/xkIAIq8UeG9rB02TTFhd7ADFdsTV3mh4Lb/sceEg==, tarball: file:projects/ai-metrics-advisor.tgz} name: '@rush-temp/ai-metrics-advisor' version: 0.0.0 dependencies: @@ -11632,7 +11641,7 @@ packages: dev: false file:projects/ai-text-analytics.tgz: - resolution: {integrity: sha512-gbCjfww48bEmKVQehusZSVLc/wD6taz1ZFasTjLSg3IxKTdSclbicfT6s/Y2qc5BdXvOa0oKe1HSu/GmB54hjw==, tarball: file:projects/ai-text-analytics.tgz} + resolution: {integrity: sha512-pOo0ZPlJkOpq9VxFJ/MStEPNdh1/6YYiHTKPDtI65u/q236XJ9JR4stpJLHl4zDwqQpHaw2JHL1jg/Qn+JNI5g==, tarball: file:projects/ai-text-analytics.tgz} name: '@rush-temp/ai-text-analytics' version: 0.0.0 dependencies: @@ -11679,7 +11688,7 @@ packages: dev: false file:projects/ai-translation-document.tgz: - resolution: {integrity: sha512-65S+wTsj7Vs0EjInd3E04rThdSG+e4Qwx7hhgiZTmAkFj0ewHCqMzBgNRXxyqjOplKSSFbX9nag7doqOi1hpXQ==, tarball: file:projects/ai-translation-document.tgz} + resolution: {integrity: sha512-EO01TDdeFyMgx5LiO1lzhKzna6Y38t+ZXLyP/6196bXR8R4kB8wOj7D39RPZDp6bFzQOglUNSldwRHyoa2Fibw==, tarball: file:projects/ai-translation-document.tgz} name: '@rush-temp/ai-translation-document' version: 0.0.0 dependencies: @@ -11726,7 +11735,7 @@ packages: dev: false file:projects/ai-translation-text.tgz: - resolution: {integrity: sha512-y91QJ8V96KxMb84gKfUEGl9wqY1Y/triJc7fRp+LiOc/2iPK1f92FFb/DViKh9DQvR+QlQwGtct8Qbc2MS4IRQ==, tarball: file:projects/ai-translation-text.tgz} + resolution: {integrity: sha512-GtpBkxJrA4IaAj45nmBZFjWcX01YVdoUSsNmGzOzq49eK4ME773LBvupiHUJwvhWFkYmOUYxclL7vCARg1FLYA==, tarball: file:projects/ai-translation-text.tgz} name: '@rush-temp/ai-translation-text' version: 0.0.0 dependencies: @@ -11770,7 +11779,7 @@ packages: dev: false file:projects/ai-vision-face.tgz: - resolution: {integrity: sha512-qTGwkqjpXfTIlwIxnaUIlqQQ7eUmtsJ+UGF1RXQR6ykkpASDvnXPdlb7d2T+A0MFXs0QlizdLEKKiBxmTqSLZw==, tarball: file:projects/ai-vision-face.tgz} + resolution: {integrity: sha512-NqcFFX/7ati2zSEMpphdFdqtzybBgpwQVCGbY3NObOWaSNb2XSnQ8Br3wlkXvTx2S09nSM1B4or/kZoH9m0cUw==, tarball: file:projects/ai-vision-face.tgz} name: '@rush-temp/ai-vision-face' version: 0.0.0 dependencies: @@ -11807,7 +11816,7 @@ packages: dev: false file:projects/ai-vision-image-analysis.tgz: - resolution: {integrity: sha512-62eATtkKZ9psCBzmDrXmJd5B8n4dfmnn2a5IZCF5emVKFgsnfi0s+ppkVdepS3u2B9Q65Rbj4jpuSvm9s4SK9Q==, tarball: file:projects/ai-vision-image-analysis.tgz} + resolution: {integrity: sha512-s37HjqbsPRjT2JS2f4pYWK+w8EvfDtGfcrWScTUQirLwBR4UlbATjkwI9ALS59o+NSTj/iGBjUA/t8QMxkkTDQ==, tarball: file:projects/ai-vision-image-analysis.tgz} name: '@rush-temp/ai-vision-image-analysis' version: 0.0.0 dependencies: @@ -11851,7 +11860,7 @@ packages: dev: false file:projects/api-management-custom-widgets-scaffolder.tgz: - resolution: {integrity: sha512-zuIHsy2oRcF7+RIWrJpHqXBp1IC6x3BgMOR8wFVI8g5RGFPQjQQHmGaDd1gLSYibvBcOYwaFnfb7mDa6x+nO0g==, tarball: file:projects/api-management-custom-widgets-scaffolder.tgz} + resolution: {integrity: sha512-WcPZ2hXr35DPsYmqnmb94vDMy2ZPMmzFl9OlSRCqAGY1osYJW3/QGTjNN1+Jul3UGRDRhVcZpkbhLwyJJY8TBg==, tarball: file:projects/api-management-custom-widgets-scaffolder.tgz} name: '@rush-temp/api-management-custom-widgets-scaffolder' version: 0.0.0 dependencies: @@ -11893,7 +11902,7 @@ packages: dev: false file:projects/api-management-custom-widgets-tools.tgz: - resolution: {integrity: sha512-zmmhWPUh3Ayii97ol0OD24W6UsiqjGH1kpBVYztfZFUcoLS4VCkusErP5dO2aIQPnp7eY8djGqkF5EhmDfycrg==, tarball: file:projects/api-management-custom-widgets-tools.tgz} + resolution: {integrity: sha512-sUrE7cFLh0jt070NNk2eqNkUK1cEaUxaaVY0F2hxpsqSiHXt0JhSWSMJpTbMGZVOMeZP7Ji8Zg53Di2IRtlOwg==, tarball: file:projects/api-management-custom-widgets-tools.tgz} name: '@rush-temp/api-management-custom-widgets-tools' version: 0.0.0 dependencies: @@ -11928,7 +11937,7 @@ packages: dev: false file:projects/app-configuration.tgz: - resolution: {integrity: sha512-GYtTiO8HmxFrezvxJWAAPm3YwKEgtON8EVx0ZgCzEMsk0fxTYARA5tjV1xpfCoic7qLwNpTTxX4qds569hOxMg==, tarball: file:projects/app-configuration.tgz} + resolution: {integrity: sha512-drhXW4Q4ALb5VwmyCelFyb/iCgioXCavS58EEXroelFV6NWls86B8Ir+MF83Ft5FcsXBl0OwYDTM+C9lRsANLQ==, tarball: file:projects/app-configuration.tgz} name: '@rush-temp/app-configuration' version: 0.0.0 dependencies: @@ -11969,7 +11978,7 @@ packages: dev: false file:projects/arm-advisor.tgz: - resolution: {integrity: sha512-+45evL0OMVkwMcLzs2JcQUnL20gVLphwVAtms6R4GKuz5CQbzZzbtSWOjOEwUcywni1bh4bSjYjV1XUR5LctpQ==, tarball: file:projects/arm-advisor.tgz} + resolution: {integrity: sha512-czuLMvibvtf+t+LP/hqOfQF5gkcX1onL7k5vfg81160yFsedoUfDowk84HAbqTspva0sLOcrLdSrRbl/fuvKxw==, tarball: file:projects/arm-advisor.tgz} name: '@rush-temp/arm-advisor' version: 0.0.0 dependencies: @@ -11996,7 +12005,7 @@ packages: dev: false file:projects/arm-agrifood.tgz: - resolution: {integrity: sha512-lBvH82TCKCChfbyBbf/ej/QSGxeJHZPEU3I3j+MYGCyuLorFX0q53H5fPRHvfU/7mXS1rrnU8E5QpnWq2ggrfw==, tarball: file:projects/arm-agrifood.tgz} + resolution: {integrity: sha512-MLuiPykE0hNeFyG7nQJ+Ovn5pWWrntT23mkjsPXFsxIv9xl21k2/28vs/lVhbBIOkP9YTlbn1vO6op1N2ef1Vw==, tarball: file:projects/arm-agrifood.tgz} name: '@rush-temp/arm-agrifood' version: 0.0.0 dependencies: @@ -12024,7 +12033,7 @@ packages: dev: false file:projects/arm-analysisservices.tgz: - resolution: {integrity: sha512-4AOtzFIF7k9+ojO2vykojZ8dsQIPitpR+P6kpyRdpjMlE7zra/EO47I1uFBfrHDqk29KZ7w0NvUvSCU4YHEcQQ==, tarball: file:projects/arm-analysisservices.tgz} + resolution: {integrity: sha512-hQtpgfyob1PPotMLwqXKCCrTQnF62bKEarvLipyOSkfVECe05P8m2Fq9zoUvrDQxGBpWwoRrEtCeXe/pEjbwfw==, tarball: file:projects/arm-analysisservices.tgz} name: '@rush-temp/arm-analysisservices' version: 0.0.0 dependencies: @@ -12052,7 +12061,7 @@ packages: dev: false file:projects/arm-apicenter.tgz: - resolution: {integrity: sha512-NDYW4iwQn1rPkKa3KVHYGHfiFLl2lfqBjcK/yudCftTiBqVRm0HtZ9YuNvoaTOmZ/zxo4TXuEuVjKklIIIY94Q==, tarball: file:projects/arm-apicenter.tgz} + resolution: {integrity: sha512-V8Zylzy8MiObAXZV+9iJ6bdTyR3k1bUOrRHBy1RbEP74tdSdCP0P5Ee1eG3xd4CVlzIZVU5JVCDsuzZxpR9rsA==, tarball: file:projects/arm-apicenter.tgz} name: '@rush-temp/arm-apicenter' version: 0.0.0 dependencies: @@ -12081,7 +12090,7 @@ packages: dev: false file:projects/arm-apimanagement.tgz: - resolution: {integrity: sha512-Tfgg/3w018BU6KnhnOhsKqSrdnoNA/rr4/nGsBj1vp6P3tXXEUrdhJr0DGIyut/ORvcXenq51ad5/FO7SpskAg==, tarball: file:projects/arm-apimanagement.tgz} + resolution: {integrity: sha512-KU2mF0vsQoleTs995Am9Lhbj1wipsC/E1HdPK1Uj0MsDVJbHAtAwIlEGEGUK3fwcsbPoYeqy7Q+N5Km6xbNExw==, tarball: file:projects/arm-apimanagement.tgz} name: '@rush-temp/arm-apimanagement' version: 0.0.0 dependencies: @@ -12110,7 +12119,7 @@ packages: dev: false file:projects/arm-appcomplianceautomation.tgz: - resolution: {integrity: sha512-AZyD/gz8iV5hzMoUEhEwTnBZggczl6ac5DPEqAkBeaVYJAMi9/rn1PT4VV16TmkA7vDHxD7fZuvv3nuN1jmnlw==, tarball: file:projects/arm-appcomplianceautomation.tgz} + resolution: {integrity: sha512-MB8+3i3lRug4eO3/w/owEpj0/gZdEKgzVmU5Vuqz0Toud3ZJePPJMMGpHDT+pOSy3jJCF+MlM5ir6n7y0xJl7A==, tarball: file:projects/arm-appcomplianceautomation.tgz} name: '@rush-temp/arm-appcomplianceautomation' version: 0.0.0 dependencies: @@ -12140,7 +12149,7 @@ packages: dev: false file:projects/arm-appconfiguration.tgz: - resolution: {integrity: sha512-p8SeMguuJhNG5hSGA0KZsa8Cf1HB98JRMM0pqXyRt+sENm/ib1CvX3fHlQXgzgVhtBKbK48mNpVKv9AvsWQH1A==, tarball: file:projects/arm-appconfiguration.tgz} + resolution: {integrity: sha512-QxZrZOItZJ0vNQrssQCpfW/60+A8BF20Ked2JrGXFpYLU/FhfodN3GJYAh+wVbzxtaRBvHbF9ux1Ff3IWiKTEg==, tarball: file:projects/arm-appconfiguration.tgz} name: '@rush-temp/arm-appconfiguration' version: 0.0.0 dependencies: @@ -12169,7 +12178,7 @@ packages: dev: false file:projects/arm-appcontainers.tgz: - resolution: {integrity: sha512-kuiNUHwWY6sLFMFcjXBEE0AEif8cAsiREq9gh1xzxgA/nH8YEDxU5MyluljUbhyGupmXEBQQRAoctRXhNXj/jQ==, tarball: file:projects/arm-appcontainers.tgz} + resolution: {integrity: sha512-A6UuNYiZCST8ShDVL4FrS1LX6ztGsM14yJQKkhu/p0wiB4ArRskTOnXPVdKlZSoXxDe3QqjImt+fCX6OW3o1PQ==, tarball: file:projects/arm-appcontainers.tgz} name: '@rush-temp/arm-appcontainers' version: 0.0.0 dependencies: @@ -12198,7 +12207,7 @@ packages: dev: false file:projects/arm-appinsights.tgz: - resolution: {integrity: sha512-ei0LG+SOy0lK7Vp3dT0g5cVhBgGMfI/w5L3PSB55BIm+IwesBMMCqM+AKXB76/HdY8nldBjTvHVO4JYElxGSWQ==, tarball: file:projects/arm-appinsights.tgz} + resolution: {integrity: sha512-hAMV8bmRQpI/J7IsULLVxEL2ulOR2df7My8IfJGG2i5eWbQZZJfl4bxLX5yl9GnBK/U88KIfSKcDEnW6qGHIYQ==, tarball: file:projects/arm-appinsights.tgz} name: '@rush-temp/arm-appinsights' version: 0.0.0 dependencies: @@ -12224,7 +12233,7 @@ packages: dev: false file:projects/arm-appplatform.tgz: - resolution: {integrity: sha512-6CXWuAfidBCzRN9VIGthgYKt/oADM1UI7pSCbGWBsybxDcpsRRuAON3z5yoZli8ht11Vrniy+6aasuoSzxpbBA==, tarball: file:projects/arm-appplatform.tgz} + resolution: {integrity: sha512-KJA8b3oBCg1TuVdRDMZbOpXf1YEPTvNHoA2IIfun0iTeNsXFRRRnms6yenIO8uYvAclN88bNvQ9ZEQeXSHW14w==, tarball: file:projects/arm-appplatform.tgz} name: '@rush-temp/arm-appplatform' version: 0.0.0 dependencies: @@ -12253,7 +12262,7 @@ packages: dev: false file:projects/arm-appservice-1.tgz: - resolution: {integrity: sha512-fsjd2X3iQNtop0z1FeVeZE0lB1AkN6Ps2Wr+Pvf33nTVlKdo2Db3bPBbuj/JR8IkrKDg1GU38kS4LMn4zUnOXg==, tarball: file:projects/arm-appservice-1.tgz} + resolution: {integrity: sha512-KNx+b2GJIs6mCzNy5ZpfJm1PfUq6nu7uzqlJKVYcYGjccSwsgnYaRy29vaM9QOUE+8VoQzU7+OPs6WLMkw7sGQ==, tarball: file:projects/arm-appservice-1.tgz} name: '@rush-temp/arm-appservice-1' version: 0.0.0 dependencies: @@ -12283,7 +12292,7 @@ packages: dev: false file:projects/arm-appservice-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-yXcZ7hnla9FKQCctXm7U5NcHlzgPdA2Gtl71UcoZvPBx99iF1/bAftrnKWi4U3mhTcMKUBe7AvmV22DbOQsKCw==, tarball: file:projects/arm-appservice-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-yS7hpVS3C7Fj/jhwjyQzG7G3mK4AooNis42PwxEE56IJG2kJd1WdXTujdOMoifepbzfowe3Y51UstObOIIGnEw==, tarball: file:projects/arm-appservice-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-appservice-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -12312,7 +12321,7 @@ packages: dev: false file:projects/arm-appservice.tgz: - resolution: {integrity: sha512-6e6rSxSKTVgFXSMLg1fcyU5D2ZJeEcQ00q2UUGNlllmDU0KcX3755Rgdns8Hcc1a75L+oiZ1pNcT6BG553DaNw==, tarball: file:projects/arm-appservice.tgz} + resolution: {integrity: sha512-0QTLobhnHeMdkxikFhy87/kdWQCjXyj7WL0Ka6E6hTyYPKkXm/aMCaIC0B07fpCd3/m899ueTcZQyHD6a3G7sQ==, tarball: file:projects/arm-appservice.tgz} name: '@rush-temp/arm-appservice' version: 0.0.0 dependencies: @@ -12357,7 +12366,7 @@ packages: dev: false file:projects/arm-astro.tgz: - resolution: {integrity: sha512-FxuBKj98swQj8d0coHhHhVeMf1W9+s95E8nHR74/8ab1jdb4qijNs9d7a88lk5FL4hDiLK+yKIXoSbKtl3N9Jw==, tarball: file:projects/arm-astro.tgz} + resolution: {integrity: sha512-mQMKoiOZ5ZwqCOKLfOv9a4RW2syhrDocCEMwydXP6zQI4YM1+Fqz2lmG9FncBzkQfMWiR+uJmEz16R6dGR6B2Q==, tarball: file:projects/arm-astro.tgz} name: '@rush-temp/arm-astro' version: 0.0.0 dependencies: @@ -12386,7 +12395,7 @@ packages: dev: false file:projects/arm-attestation.tgz: - resolution: {integrity: sha512-S3K4Y3AX2xWuyzA4sUXD6sYBTy5Vtmq4f9ueoJ/yU650xJ0980RuOaIcApK12aaRHNDAEe7ha/CYw9D0KnPICA==, tarball: file:projects/arm-attestation.tgz} + resolution: {integrity: sha512-NufRJqwG+hpDBgGQiNFvgdwyAHwNq3HwfUtDDr5ibOxOEOvHU7w2r/RA7bHWEgEzL+ov/K2O6ecDg84d3ExG7g==, tarball: file:projects/arm-attestation.tgz} name: '@rush-temp/arm-attestation' version: 0.0.0 dependencies: @@ -12412,7 +12421,7 @@ packages: dev: false file:projects/arm-authorization-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-J0CAfvBw3zqY1FDpgFZ2zuP3w+PnbAfYeS5L+b33t2ccUdtvcU6sXZfGwymJTbzOoQRLspvAa+RvIZwSsRbmlQ==, tarball: file:projects/arm-authorization-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-lKp99xxiMXNkOSMj7a4vtUkjrABpWDoi1EJuQCJrReBgY00rh5RaFUd9HDTban2YDXeNz+JImiPBYSjFWgAncg==, tarball: file:projects/arm-authorization-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-authorization-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -12439,7 +12448,7 @@ packages: dev: false file:projects/arm-authorization.tgz: - resolution: {integrity: sha512-BpO9zqt7x107DPgawOGLTsJvIkTnQo3OpCrzRKDi3NYAAWqTgOIlyNgUQ6WFxpCtQXJqiDcQenF7ofEdFmMhXQ==, tarball: file:projects/arm-authorization.tgz} + resolution: {integrity: sha512-O2YiaamkBBbL9u1Tjz9vNAbrWSKfrxxjsJLwBzBnh7OPEyfdP12ibqpMBfdYo+Wda+aXUEuO2sVqHexa3gEnBA==, tarball: file:projects/arm-authorization.tgz} name: '@rush-temp/arm-authorization' version: 0.0.0 dependencies: @@ -12468,7 +12477,7 @@ packages: dev: false file:projects/arm-automanage.tgz: - resolution: {integrity: sha512-esXYyriuBdr1Yy3gA2Q5r7SvBepGZI6cl3tDWQN1+ASbp+m+O7FDgdvcH8H9IfzAp1BBfsdl4Ef1r9KKkmg5ig==, tarball: file:projects/arm-automanage.tgz} + resolution: {integrity: sha512-sS+gK+GktV8QA0KE8iSqN8yRQZhtAxdbt3GGIOGKsRDHtjxz/bRpaJ1f9wKdkprDNetK2mriFszEqJF1nU+Rkw==, tarball: file:projects/arm-automanage.tgz} name: '@rush-temp/arm-automanage' version: 0.0.0 dependencies: @@ -12495,7 +12504,7 @@ packages: dev: false file:projects/arm-automation.tgz: - resolution: {integrity: sha512-km0UF5yaJuABU2cYIkteGyH4iZkaZXMd8PXs5BXWagritFPzXOVFsBSTgpk4ONegB5xcqsNPFfm6MesUCsnQHw==, tarball: file:projects/arm-automation.tgz} + resolution: {integrity: sha512-fXUwSNEX+558phMdTjAh4GNsmMQn+Jf3rv1S8JhDJTfLrTbvS9/Mgi/EjwiET51I1WCBQM63C3HqUzJH7K1nDA==, tarball: file:projects/arm-automation.tgz} name: '@rush-temp/arm-automation' version: 0.0.0 dependencies: @@ -12524,7 +12533,7 @@ packages: dev: false file:projects/arm-avs.tgz: - resolution: {integrity: sha512-NuSLPSvc0Nn/nYpy7qJj0bdaum2cmKwuRPrihNwT+t+9eeksjPBaUD19YSS4ceZd8M3TN8JebhPjiJujexDLew==, tarball: file:projects/arm-avs.tgz} + resolution: {integrity: sha512-CC5mX+XYJZpXudfqK0uP1/EGgavUFlw4/5n9Ouy1DN9xXlyZQ2sgvXS8K1iiNtuUtGt6oQyUb7TRjU7TXhk6ww==, tarball: file:projects/arm-avs.tgz} name: '@rush-temp/arm-avs' version: 0.0.0 dependencies: @@ -12554,7 +12563,7 @@ packages: dev: false file:projects/arm-azureadexternalidentities.tgz: - resolution: {integrity: sha512-W2i89OHVNCd9BSdKfY01VHhss+Puig5W158UOdJMoNEVlk5T02NGPbNyIv4ObNonvGXT4nyPCV28XHNcZLT6qg==, tarball: file:projects/arm-azureadexternalidentities.tgz} + resolution: {integrity: sha512-0Sq6XUM/hS+zBB6lyv7kqf4enDuELltnCgpUp3mw4m8SQLGP/0PRg3XjGk4rVBtQQCgLVchHss7qPvQXJFlSDQ==, tarball: file:projects/arm-azureadexternalidentities.tgz} name: '@rush-temp/arm-azureadexternalidentities' version: 0.0.0 dependencies: @@ -12582,7 +12591,7 @@ packages: dev: false file:projects/arm-azurestack.tgz: - resolution: {integrity: sha512-Chy70Pnsh+D3nkP8/JXMRbNLgERSoPPETLlkFL69MPHL/1JWaP+XccQtrdakmMnMe8jEGBQ6iFlFMtF+MJkVkw==, tarball: file:projects/arm-azurestack.tgz} + resolution: {integrity: sha512-qm3cLmp1sVCluosfw87PPm+sep10oxT2mAm4g/E2xBKnKPjf6nzVCj7ttPnuzlavhKFWyAFa77h9z0m5hx+Beg==, tarball: file:projects/arm-azurestack.tgz} name: '@rush-temp/arm-azurestack' version: 0.0.0 dependencies: @@ -12608,7 +12617,7 @@ packages: dev: false file:projects/arm-azurestackhci.tgz: - resolution: {integrity: sha512-EzP8/UA9bs9ds4SgzBfbf3qNN4wpMJ8IfzIN0A2e4TVAbe4Bl743H2k7lveqVYlaSBEIcad7LmmTkrVSF6365w==, tarball: file:projects/arm-azurestackhci.tgz} + resolution: {integrity: sha512-eQBYzILbC56mO+a4lqFpBJ1wGwXBvLwlPwKxkext2pRb0sS/HRq7WHiKx7V+pt5DV3nG1/Cs4XkX4cNL1bguIw==, tarball: file:projects/arm-azurestackhci.tgz} name: '@rush-temp/arm-azurestackhci' version: 0.0.0 dependencies: @@ -12637,7 +12646,7 @@ packages: dev: false file:projects/arm-baremetalinfrastructure.tgz: - resolution: {integrity: sha512-Pi0aAdH11S5kMuADYEA002aD+bQHOQL4eeLedMogLI6brGZfCN+mij6t86bfNCZBYHRawL0+fn2cEAWzWZLWKQ==, tarball: file:projects/arm-baremetalinfrastructure.tgz} + resolution: {integrity: sha512-7jfRpCBWQhOwaDbzyn4bh6CO952aSMisBaUJRd8i7hWNYe2q76v5zmnFozv/Kke7DrMEW4GMLgXahFoX+Kvxsg==, tarball: file:projects/arm-baremetalinfrastructure.tgz} name: '@rush-temp/arm-baremetalinfrastructure' version: 0.0.0 dependencies: @@ -12666,7 +12675,7 @@ packages: dev: false file:projects/arm-batch.tgz: - resolution: {integrity: sha512-RsYJrrcC1WC0RO/uhloTga/LpXCt0EZ4LiaCxpHmR2r6GnowBZtbWUKsjDS5OjfECSVgocpDvwNqwn1As2p0qQ==, tarball: file:projects/arm-batch.tgz} + resolution: {integrity: sha512-bsrebtENyslsLLdZi4HOwFf//sMvl9ZWl6GEW64RSCu5cuFQbzLY4GzpCXHEwLUYO2+1tugoZwbEpjIilekE+A==, tarball: file:projects/arm-batch.tgz} name: '@rush-temp/arm-batch' version: 0.0.0 dependencies: @@ -12695,7 +12704,7 @@ packages: dev: false file:projects/arm-billing.tgz: - resolution: {integrity: sha512-iM4B7nmsNSRYyeT/2I/bHGcbni8VI8tbeKpo0A5TEnYWbj2R+/FpLtXD68dE3RawZCfel4ohCFAhcX6Gf9GJbA==, tarball: file:projects/arm-billing.tgz} + resolution: {integrity: sha512-4ke0qkbzbnsKV+cwyCPpF78d6LHl9gaHbN2Sf8jJ+jSjZjQioDX/joYjSp7KzxLM1EyiwU8kcYaM3lddEKA8CA==, tarball: file:projects/arm-billing.tgz} name: '@rush-temp/arm-billing' version: 0.0.0 dependencies: @@ -12723,7 +12732,7 @@ packages: dev: false file:projects/arm-billingbenefits.tgz: - resolution: {integrity: sha512-lYccYFS3Ry2XgKy0iCqYT1fZLGpZeVhWdH4gw/9PaLR+uBwfTs5DaWwCLvUoyh2vEKBVZ4UzCIg4CnzmkcfwZg==, tarball: file:projects/arm-billingbenefits.tgz} + resolution: {integrity: sha512-WA6bWz7PNTPOgM7vpmQfPGVrlhGg6p5RnHwlHQlPFz4Ie4huvPUjbY1EPFDZMji/M5TiHzmdJgScke45J4rwhA==, tarball: file:projects/arm-billingbenefits.tgz} name: '@rush-temp/arm-billingbenefits' version: 0.0.0 dependencies: @@ -12751,7 +12760,7 @@ packages: dev: false file:projects/arm-botservice.tgz: - resolution: {integrity: sha512-4B7HlyW9JfZPyvGCqq18D53ETh+2Rxit789LkVE3jzJglAPx9Y+hsPFU4O/cEDbS949ZsDvVFg7aIU7H2jFtqw==, tarball: file:projects/arm-botservice.tgz} + resolution: {integrity: sha512-tOOkR7Z/oXJ/0BFlbRXQa9TRNXAcV22vqo7lN5hkfYJgUhZ7IqG0VPwHjKlzlgbo6/QTq29879l5A1IGhfV+LQ==, tarball: file:projects/arm-botservice.tgz} name: '@rush-temp/arm-botservice' version: 0.0.0 dependencies: @@ -12780,7 +12789,7 @@ packages: dev: false file:projects/arm-cdn.tgz: - resolution: {integrity: sha512-4q1D6dMcL8K0t9Dylv542kP89fDEQqOwWQgE1cQZJOOAM+Olz0CRAe/9uT2DPJjym5/29W59T47hvg9bgBVTqg==, tarball: file:projects/arm-cdn.tgz} + resolution: {integrity: sha512-GxxeS4NJrlgZPuHy9lyitQBTXnbWo5qP9xyhCVpqrP0NmVks6ep8bAupTAIH5TPOt/eqxMjJiVj+uwhX5bXouQ==, tarball: file:projects/arm-cdn.tgz} name: '@rush-temp/arm-cdn' version: 0.0.0 dependencies: @@ -12809,7 +12818,7 @@ packages: dev: false file:projects/arm-changeanalysis.tgz: - resolution: {integrity: sha512-52cZiGnOMfnECrJho9TiVTttaSt/GHoWNRLiD2t9V9FAZIaY7/K1So9diNG45ngXIKZjAVGQzfssS1N8H7Eh6A==, tarball: file:projects/arm-changeanalysis.tgz} + resolution: {integrity: sha512-rnL7KIHow+pJNL2ZBXjACOhaQ8ehkyTay5eUBReCNXjm36UpZlF4bf2r1gHhYPTlboGprL3RGTlTvLbUkL8ZaQ==, tarball: file:projects/arm-changeanalysis.tgz} name: '@rush-temp/arm-changeanalysis' version: 0.0.0 dependencies: @@ -12835,7 +12844,7 @@ packages: dev: false file:projects/arm-changes.tgz: - resolution: {integrity: sha512-BTc4eIjFIGz1OagQfKiQFxaX2ARkVv2J9X3nf37O9dROtRYx3qRcbsu2lu0f2cr7pzlIq9UM9Er7j9znAjbr2Q==, tarball: file:projects/arm-changes.tgz} + resolution: {integrity: sha512-0NWQuqzmx5DT54hMEnAnscN5g0empvGoFaz/4HIUNT/A6gx1wqJMwSwA3OK9vQy9RIS8xmh5bgU5u40TmSwr2w==, tarball: file:projects/arm-changes.tgz} name: '@rush-temp/arm-changes' version: 0.0.0 dependencies: @@ -12861,7 +12870,7 @@ packages: dev: false file:projects/arm-chaos.tgz: - resolution: {integrity: sha512-GOc9OXGKeeGYviNs7Hc724NZEjH1wagU4o8XuWCGJ4egYs7h8ZatevjrM6yUgTWP6BL9atgeKHf6vTQayuMW6A==, tarball: file:projects/arm-chaos.tgz} + resolution: {integrity: sha512-ZsFeCP5UR07sl/FaZ3fu2D0xwAdIBx3wJj9Kb8Uqg0dbPq7VobCgUK+L4cHbu7vbZ2BaD+Pl75IWP0CBXl2fSw==, tarball: file:projects/arm-chaos.tgz} name: '@rush-temp/arm-chaos' version: 0.0.0 dependencies: @@ -12891,7 +12900,7 @@ packages: dev: false file:projects/arm-cognitiveservices.tgz: - resolution: {integrity: sha512-+2IWuQkeeiNxJYp86qtfYkeWSQs9Mu6bi5DXI17j4dq2Tg0fpLsK6aRDDi6iMll7ywON8StxJKlJtqQBHMXZwg==, tarball: file:projects/arm-cognitiveservices.tgz} + resolution: {integrity: sha512-KfjH81WkVQwsuoKqgapXem9wJlIYdKlHWflmNXxsPO5Z/+9/adHPPDpIrPuBr4hUzM0vDO1umo3pLkuv33piww==, tarball: file:projects/arm-cognitiveservices.tgz} name: '@rush-temp/arm-cognitiveservices' version: 0.0.0 dependencies: @@ -12920,7 +12929,7 @@ packages: dev: false file:projects/arm-commerce-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-D+yJpAiF7L/V01sAcJAsIIhETyiE4txSafsggK/tpJWOMaCxYboOAf8qrj0+HJRBSmdb9NcQxiZs7IHnnkq0rA==, tarball: file:projects/arm-commerce-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-5XFCoOXjz3SnmwJUK1XeIxOQtJCDBrDP6JVJ+rHBBOj4aSk3DOsN4+4i0EoWPT+AudGJqNteKX2z+wJZHPNpwQ==, tarball: file:projects/arm-commerce-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-commerce-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -12947,7 +12956,7 @@ packages: dev: false file:projects/arm-commerce.tgz: - resolution: {integrity: sha512-ao2nrV5ydMH0kYrhA2+W8l1Iy8xhbdT75W8BlXIWPrM+C+5TIMqDVvQ94dP3LWJwlWLh6vr0V70McD8Y8YtJfA==, tarball: file:projects/arm-commerce.tgz} + resolution: {integrity: sha512-JPwu+r48mji/6XyuLlkszhOBX45WYrUIDYvCjLPuD0j9IcErna6utYT+dHJyPSfF6DZTnRb//Cl/J7PeL4EucQ==, tarball: file:projects/arm-commerce.tgz} name: '@rush-temp/arm-commerce' version: 0.0.0 dependencies: @@ -12973,7 +12982,7 @@ packages: dev: false file:projects/arm-commitmentplans.tgz: - resolution: {integrity: sha512-SMv49TV1DLKOoCpoDV+uiMtl6nN/18PHK3N4vaD/xsTnmqpZYkpRuO52X9HIgPZPxs+Q4626nESA+JA8ikTA5A==, tarball: file:projects/arm-commitmentplans.tgz} + resolution: {integrity: sha512-azjD2D2z0Gypevtr9qpyRzdhGQDfy/LBIt3Ch9fwMdv3brs/u1xSoautByjwrseMZxNgSNIsClEyHIQ4Yq2ruQ==, tarball: file:projects/arm-commitmentplans.tgz} name: '@rush-temp/arm-commitmentplans' version: 0.0.0 dependencies: @@ -12999,7 +13008,7 @@ packages: dev: false file:projects/arm-communication.tgz: - resolution: {integrity: sha512-p1zXKiLEnwGzOWw+bZLGoAllNOZkMgtxrKvCdpHRzU3IHC3QV9ELHz8s5AR0QdjR1t7kaoij9YbmGTc5ur98XA==, tarball: file:projects/arm-communication.tgz} + resolution: {integrity: sha512-2P/52TT+v10SkAP6cGgQd6V8m++w+1ysH2XO/31bembxgELmeTTMfUdhsqMWBZmO/uthtSq2IsLFvl4XjzcJzw==, tarball: file:projects/arm-communication.tgz} name: '@rush-temp/arm-communication' version: 0.0.0 dependencies: @@ -13028,7 +13037,7 @@ packages: dev: false file:projects/arm-compute-1.tgz: - resolution: {integrity: sha512-Cs1JqQSiAPKHW3IE2kPxY+zKDo/qRLj3zt6BI1u0J3nW0ML7a+xVQHbZ3XBcPpcDrr8Azbp9e+akiFz51xCKrQ==, tarball: file:projects/arm-compute-1.tgz} + resolution: {integrity: sha512-99R2IlSrT7L0d3NgHk2T3ZlcrShyfY6dXQknyZPLicpA29hDS6gJ01+3HnYL81V2wbVcbsa/+19izHBFoYGG8w==, tarball: file:projects/arm-compute-1.tgz} name: '@rush-temp/arm-compute-1' version: 0.0.0 dependencies: @@ -13058,7 +13067,7 @@ packages: dev: false file:projects/arm-compute-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-Fyh3Uvk0yltIKiPJpLObVQLKtgdJ+GvzLmCEmRcDkuqZ+NQIwgjONfvri9bTIlaHXHedp/KII6HbEoeTNUVobA==, tarball: file:projects/arm-compute-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-9l7rM9MJ1EjXFZfSV6lMFk/t8xZgKb7yoUyMsTkKG7pcnWH99ks+RxkfYGsE+uf1RpWYljzNDg3DUdKTx1O/og==, tarball: file:projects/arm-compute-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-compute-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -13087,7 +13096,7 @@ packages: dev: false file:projects/arm-compute.tgz: - resolution: {integrity: sha512-RA2G+yXFba8a6AQBL3x8wEPwdgcp7Kr03cPgOOikeATTc6nIrhxxt02Ot+Dk1vwTKJ2upX0s6Y6h+0eS9x8OWw==, tarball: file:projects/arm-compute.tgz} + resolution: {integrity: sha512-St8ifB/t3TJIfbhW+6XBskEk0nDg+eUEOnHy8vnFRnbpBMqH2YH8GiZ/Kz9gQ7KjObzRaUw6JXhnK3Rgyv+9Cw==, tarball: file:projects/arm-compute.tgz} name: '@rush-temp/arm-compute' version: 0.0.0 dependencies: @@ -13133,7 +13142,7 @@ packages: dev: false file:projects/arm-confidentialledger.tgz: - resolution: {integrity: sha512-0MqFLxhnGZrAVLzac1/AF5f1qQCDwFmHKCYILMq0uXsA39wXa6Hw4sRLHg4+w0YTvnCLUB/Wgtu2s4/9QU7gqg==, tarball: file:projects/arm-confidentialledger.tgz} + resolution: {integrity: sha512-hlCil/MoSdsCULpM/4ps9s585xK7upJmCA5W/YE3R8tT+oHLlEDZjDxDNn4tgW+CUT64j5cVMgT8XKQoaBu/vQ==, tarball: file:projects/arm-confidentialledger.tgz} name: '@rush-temp/arm-confidentialledger' version: 0.0.0 dependencies: @@ -13163,7 +13172,7 @@ packages: dev: false file:projects/arm-confluent.tgz: - resolution: {integrity: sha512-eX1LVdJt9P72YUuebqTwN+Wx4aMKgZ4At7m+h4FCpdxA+7aSc+RzDwPrAvPioY3WJ7hXKCImwGhr24Yw0J64zQ==, tarball: file:projects/arm-confluent.tgz} + resolution: {integrity: sha512-DdnMS61stj7U9cvYEcbU4J516lHzn3yAo3Ehk2yqV7rVSrOL4vWLN7LR1s8wlIuxCnQ7I79BPgVP2jLMK3o8lA==, tarball: file:projects/arm-confluent.tgz} name: '@rush-temp/arm-confluent' version: 0.0.0 dependencies: @@ -13192,7 +13201,7 @@ packages: dev: false file:projects/arm-connectedvmware.tgz: - resolution: {integrity: sha512-vYmaHgyh3+L7sn64+psYA5pJjgk3ZHLM+APofCjH29usuA/vhrbKCMbHMBD6NcFcMiklbXDGJRFLr2jlxgLwtQ==, tarball: file:projects/arm-connectedvmware.tgz} + resolution: {integrity: sha512-SA5SnINxh1U7l0REe0+8hYK1C9uO2lnIfDVSzdSXfGvBOFBjCqsl2OtRuKsSHMuAuOAmpAieNdsUK3Uh37mW/Q==, tarball: file:projects/arm-connectedvmware.tgz} name: '@rush-temp/arm-connectedvmware' version: 0.0.0 dependencies: @@ -13221,7 +13230,7 @@ packages: dev: false file:projects/arm-consumption.tgz: - resolution: {integrity: sha512-sUbLbgLEIECSDpnYpxrdVX10NBxRvaEPB36EF2ZDMOi/oGAtbNFErMQMndtP/NzF3qBECt7xXWireG6/Srovmw==, tarball: file:projects/arm-consumption.tgz} + resolution: {integrity: sha512-4SLY5+F9YlNjWoAy+1nnSpk54NrerKKz7YNsWWxq1oFyW26045bjUL2QvyWXmA8BOlLyWJ9LtBSlGqR0Ayd5UA==, tarball: file:projects/arm-consumption.tgz} name: '@rush-temp/arm-consumption' version: 0.0.0 dependencies: @@ -13248,7 +13257,7 @@ packages: dev: false file:projects/arm-containerinstance.tgz: - resolution: {integrity: sha512-zrAJQUpDeVFD8igMnAuvWG8nmRX3FjQaD3bong02H+ho+rsCQ7g/iMFFXNTmyTA9PSovfsSrJNUnSTQ1vj8xyg==, tarball: file:projects/arm-containerinstance.tgz} + resolution: {integrity: sha512-8gUyZD0owhD3g46tQ0p+vjBOjMxvrSL5BX9C4KOpEMz1ExCGqACyvRkHEvi5LrN8iMiSLyr/c9vWLk9mgcX8QQ==, tarball: file:projects/arm-containerinstance.tgz} name: '@rush-temp/arm-containerinstance' version: 0.0.0 dependencies: @@ -13277,7 +13286,7 @@ packages: dev: false file:projects/arm-containerregistry.tgz: - resolution: {integrity: sha512-XGHbboghfXH97hd0WPZIRezfrS68GGPz4PYwkgyB5laGexv+g9WfM3oZ3+6ohpB1ZkrWfFmuUaEYNRLeyQ6eBg==, tarball: file:projects/arm-containerregistry.tgz} + resolution: {integrity: sha512-zvCl238c/iaauIaM2KAuyUrbijSH08URI43G+hfDeQv9Dt5YTG2dN/nPR2xxKxAsvUfLvxiS/OSRGC27RzcBAA==, tarball: file:projects/arm-containerregistry.tgz} name: '@rush-temp/arm-containerregistry' version: 0.0.0 dependencies: @@ -13306,7 +13315,7 @@ packages: dev: false file:projects/arm-containerservice-1.tgz: - resolution: {integrity: sha512-PDk+4cVousETlt2IQvxd58p5JbjAZ0H0cwyQIUVdCJeBRYeGFMvLOUG/JbiHn7NJh9jdZXFKdOM0dNfJtM+FPg==, tarball: file:projects/arm-containerservice-1.tgz} + resolution: {integrity: sha512-GLMl4Us8t3+qK+tnpdNhE8ut+kOSx5i7LxsVhHZTD8dnZSMyc7reRTRwd0DNe2khccegtAlw2xms0AAaTxg4KQ==, tarball: file:projects/arm-containerservice-1.tgz} name: '@rush-temp/arm-containerservice-1' version: 0.0.0 dependencies: @@ -13336,7 +13345,7 @@ packages: dev: false file:projects/arm-containerservice.tgz: - resolution: {integrity: sha512-J/msqdn3aG4gvji0ev5ss9XZbUNV0si9j9yR9FFq4CssDLh2o8ZMRPsgyOIypJUPU7Ojwym4wRtC/a9EGwJF4Q==, tarball: file:projects/arm-containerservice.tgz} + resolution: {integrity: sha512-Lud8iMjx30djweBi+em5E/Iz8myETXeSoMFiPpAoJV4eR2AMhFnIl1gM3m3M0GzZggrADEOMmOqx8o+b6XE5jw==, tarball: file:projects/arm-containerservice.tgz} name: '@rush-temp/arm-containerservice' version: 0.0.0 dependencies: @@ -13381,7 +13390,7 @@ packages: dev: false file:projects/arm-containerservicefleet.tgz: - resolution: {integrity: sha512-y97WF5eclHUJ42Y5Z7givEuXSYb6Jd6dJcgi3LUNQsVyCu/ehcKsq+/NKSlfX0yfZukDAaVN7PD8mBHS4pDyfA==, tarball: file:projects/arm-containerservicefleet.tgz} + resolution: {integrity: sha512-4icsl9JRiPFPgKrs4DyWdjJcLb/KHGkkDUFQP4uWjrnFgHClapXmuze2j4iYVSd42Pu2vy/e5JLulHUHKMqycw==, tarball: file:projects/arm-containerservicefleet.tgz} name: '@rush-temp/arm-containerservicefleet' version: 0.0.0 dependencies: @@ -13411,7 +13420,7 @@ packages: dev: false file:projects/arm-cosmosdb.tgz: - resolution: {integrity: sha512-LKuO/8dGGyITye+iE63sDyEL9BFaFWpH65phZakjird425VYquIDYdQ4MvzC602h6b9JUrvZx8qOOw1gloWbUg==, tarball: file:projects/arm-cosmosdb.tgz} + resolution: {integrity: sha512-sfXaEYv3hITyi/EwWkjfzh9FcXns9RjxEsddYZP4tSwVWIJTF3MpBdZGlemh2s9uJlDUA3SSqtj4TAsKncFpog==, tarball: file:projects/arm-cosmosdb.tgz} name: '@rush-temp/arm-cosmosdb' version: 0.0.0 dependencies: @@ -13441,7 +13450,7 @@ packages: dev: false file:projects/arm-cosmosdbforpostgresql.tgz: - resolution: {integrity: sha512-ckPI0paS6dcdHAAVyWEahupKZ5DoSSyWdfa2FSwg6pt55aJHcsgKnGSBJd0J0t5+oKbNKA6wWcjavL3TyQlyxw==, tarball: file:projects/arm-cosmosdbforpostgresql.tgz} + resolution: {integrity: sha512-qbrIybN8Tjay0oQyhLEjIMCk1UdfiIgaomytcdr0HNKrx54z5DCcRqaNl/p1mNpnb3Nv0r7lUVA8f1SbYi73wA==, tarball: file:projects/arm-cosmosdbforpostgresql.tgz} name: '@rush-temp/arm-cosmosdbforpostgresql' version: 0.0.0 dependencies: @@ -13470,7 +13479,7 @@ packages: dev: false file:projects/arm-costmanagement.tgz: - resolution: {integrity: sha512-b7uAOooneNGunKFK+9yczkeESO/yn4S5i5jmM/yCZnrGD9HcdgQ+E7h6sr/uFagXzpToGp/cKDTY50Ue/3ImfQ==, tarball: file:projects/arm-costmanagement.tgz} + resolution: {integrity: sha512-N1KYecmOQ7t/Fmz0O6hkNtTpuHnrtSx7p/ze/zW9zq3O1YFA6flyGW2C0tWFkd2Z9vXXsU73cX2zCA2aOw3fYg==, tarball: file:projects/arm-costmanagement.tgz} name: '@rush-temp/arm-costmanagement' version: 0.0.0 dependencies: @@ -13499,7 +13508,7 @@ packages: dev: false file:projects/arm-customerinsights.tgz: - resolution: {integrity: sha512-TTVhhFljoVOHCy4csppknqqogNN7JugzCUcuAWzCBIjkVDvxx21pJx6mltFFc7rl34OEv5fg8UIOCu7QA7c90Q==, tarball: file:projects/arm-customerinsights.tgz} + resolution: {integrity: sha512-80UOyERN+Gc+GB5inp5JhED9ymnAX/boLA/UJyBn+38EMcU9n5x4jPBZByFnuygO6Zwixj+4eBJmWlLt3zVKSg==, tarball: file:projects/arm-customerinsights.tgz} name: '@rush-temp/arm-customerinsights' version: 0.0.0 dependencies: @@ -13527,7 +13536,7 @@ packages: dev: false file:projects/arm-dashboard.tgz: - resolution: {integrity: sha512-QHM1n5fYwKsE0lFGYzffKDX1PeZuJeoULzqrpvSe7TjfvW5ecPKxRHYjo00O/TMYev158XgP9nVKZ7skFIGyXQ==, tarball: file:projects/arm-dashboard.tgz} + resolution: {integrity: sha512-G4virQ7SktQiS88418et0TP1wYgbpgiMILlMsNOkUVM7/PsL1mJx7TRlGStz2c6Ze2MNT9U2Ytqt2v/usEyRWg==, tarball: file:projects/arm-dashboard.tgz} name: '@rush-temp/arm-dashboard' version: 0.0.0 dependencies: @@ -13556,7 +13565,7 @@ packages: dev: false file:projects/arm-databox.tgz: - resolution: {integrity: sha512-qAYFQ+WDbEndgRtG8RfBqhHTy4KE2Su6iWPjVNE2KxB+qLpNnsXwLFN3t0kgNNZrjW2ygSd4oVSfO5n3OqRFzw==, tarball: file:projects/arm-databox.tgz} + resolution: {integrity: sha512-9oBfgT/R7kKNMCZSUo1zlvRw74Csm7GxYs+j/k00V47Gmms8tswrFXCIuR7SC680ZJUG8Q0zUg+9TQ2h/RGoww==, tarball: file:projects/arm-databox.tgz} name: '@rush-temp/arm-databox' version: 0.0.0 dependencies: @@ -13585,7 +13594,7 @@ packages: dev: false file:projects/arm-databoxedge-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-4XCD/G+YRzCLRMfsKJQELvvvgZZl6+ac67R50DOdhB2CjhXWarF0nEtZbiwTwPCl8ay4Gsf4f+zy2ma6nVbuvA==, tarball: file:projects/arm-databoxedge-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-wRtkVDjN362B4hRKignZsPhJSoEy3FcNJjYPvJqD7HpYTci5yYRztGy9RlKLeEDdXg12xZPqYtcTPJE2hx/+GA==, tarball: file:projects/arm-databoxedge-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-databoxedge-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -13614,7 +13623,7 @@ packages: dev: false file:projects/arm-databoxedge.tgz: - resolution: {integrity: sha512-Efbe2H5ZzF4cAPeneZltpL1bmkvRSZ0Q//IacXA8QG8CkTgmCgeifdUBjW/Ja4XDnKBegxN8QHojRZiRCcpveQ==, tarball: file:projects/arm-databoxedge.tgz} + resolution: {integrity: sha512-y6kJP6zMNrzBWItEj7Vc4+fHEvGQIg7AVJyC9JhQMGdKtjieFu7Lj/+tPKIEq40WtxRlJIWtylncXYiuMIIGhw==, tarball: file:projects/arm-databoxedge.tgz} name: '@rush-temp/arm-databoxedge' version: 0.0.0 dependencies: @@ -13642,7 +13651,7 @@ packages: dev: false file:projects/arm-databricks.tgz: - resolution: {integrity: sha512-Q3Bv6AfsRgEAFiaHJu/7QMcx/4eivZ41YPHI6Nauo9Ik1qp9rYHcJippOLDP64f2xz2lTT5X9EFHbFCXZDc/Tg==, tarball: file:projects/arm-databricks.tgz} + resolution: {integrity: sha512-CEvB4TgBO88kVPgtFPLNnuS+sNZJwPqlXNKidG3AhaaZZBZ5hZ2QziI3hQD+qkCNlzsBU9Wt2vXglbXv4m1cMQ==, tarball: file:projects/arm-databricks.tgz} name: '@rush-temp/arm-databricks' version: 0.0.0 dependencies: @@ -13671,7 +13680,7 @@ packages: dev: false file:projects/arm-datacatalog.tgz: - resolution: {integrity: sha512-uraZyx9zTUvbpPydrbITzI+HlmgdNSnNisw3wwhX2gXvUdKTbG47lKyU54r0n6CSygeHkuyOdbgKV1VEM0Btww==, tarball: file:projects/arm-datacatalog.tgz} + resolution: {integrity: sha512-+aZSxC4h0EJBQE+Zc6fy0OE21HPUxgsrWgQ4X2nsWQ5HGy/MwDtwYoa0cI+Iyk4iOfJCfBedYCK//UuRgtx5yw==, tarball: file:projects/arm-datacatalog.tgz} name: '@rush-temp/arm-datacatalog' version: 0.0.0 dependencies: @@ -13699,7 +13708,7 @@ packages: dev: false file:projects/arm-datadog.tgz: - resolution: {integrity: sha512-txYSfPUSWVkoR0gr3ZmLRcb2WevorlD2+m24k4B2s58Bl8MyeutflEXb6wfT8ooyYqgx4Xq5jhojPT31xycLMw==, tarball: file:projects/arm-datadog.tgz} + resolution: {integrity: sha512-itY+9yBO0feKwPwtwBCHzjNmIpM4micXT64igx+Ndo4jKAD+93kjypLiFRzW6d7aQ6CmVGvbAqCqetFkHaZdPQ==, tarball: file:projects/arm-datadog.tgz} name: '@rush-temp/arm-datadog' version: 0.0.0 dependencies: @@ -13728,7 +13737,7 @@ packages: dev: false file:projects/arm-datafactory.tgz: - resolution: {integrity: sha512-G1cPkcIhyQ4tXEX6w9ZZlL07ve880kTDyR66PtOdsiOyzlgg1gyYoVtQcaGmz5+m45LfLVktQFpmzjzXWxfr7w==, tarball: file:projects/arm-datafactory.tgz} + resolution: {integrity: sha512-zIkqvR8FSUXG1dSFCj6NGzuf52hktBh9+Vv9RGL3wmPBN/gEeZ5VWzvhbpHthrhsQ23NnMHnIyJ3xdcH115jHA==, tarball: file:projects/arm-datafactory.tgz} name: '@rush-temp/arm-datafactory' version: 0.0.0 dependencies: @@ -13758,7 +13767,7 @@ packages: dev: false file:projects/arm-datalake-analytics.tgz: - resolution: {integrity: sha512-xWr99p6ArIOd5RMBz1N75uwY96KoGZzko5DsbcQDliEL/L1Jhp12pUI/N4kvnqY1zeNhIYz9058BJbKfl4Q7KQ==, tarball: file:projects/arm-datalake-analytics.tgz} + resolution: {integrity: sha512-q9HYkj5I0pmTCHxsPJdx3WqzUcoqxJotD6Tru/0aHUiMi81/8YH0NkvQrO6XYRYhxe36S1vVXRtVH4ukjF3lkw==, tarball: file:projects/arm-datalake-analytics.tgz} name: '@rush-temp/arm-datalake-analytics' version: 0.0.0 dependencies: @@ -13786,7 +13795,7 @@ packages: dev: false file:projects/arm-datamigration.tgz: - resolution: {integrity: sha512-dZqXDf0vmdI+He+HBbI0gfgSZcUlKbga9+EUH9lpJ4QJqtVLsh8h2wrqxiduuLyNcMlAR3v9+3GFg4CrKOHguA==, tarball: file:projects/arm-datamigration.tgz} + resolution: {integrity: sha512-EzpHdyl6Q3c9NoyFlc635AKXFlX4UXN4+J0V/15ii3Ydn2LlMwyuccSWg7WPBIEC/HfLMzRNOaMU+VXZaYkv/A==, tarball: file:projects/arm-datamigration.tgz} name: '@rush-temp/arm-datamigration' version: 0.0.0 dependencies: @@ -13814,7 +13823,7 @@ packages: dev: false file:projects/arm-dataprotection.tgz: - resolution: {integrity: sha512-s9kbxenmV6rj5B0uaWXFbxujcBNLy0zKzNBaqU957Y2ScngP3hKzA5hcAPLozQMR/SSGgYzgiBV+5gb7jjBQSw==, tarball: file:projects/arm-dataprotection.tgz} + resolution: {integrity: sha512-QwpknpqqC+BPigmt3/yd5N8uoQ1ICF3Nv5ClS4Jmx+j+9uQ5YoizPQgPa/Y1XER7yTTsgQ1W3tCSjIpXWw4fGQ==, tarball: file:projects/arm-dataprotection.tgz} name: '@rush-temp/arm-dataprotection' version: 0.0.0 dependencies: @@ -13843,7 +13852,7 @@ packages: dev: false file:projects/arm-defendereasm.tgz: - resolution: {integrity: sha512-JFcPebaZbMBkYboCE6Wz0BzFEvMf39xMKles4PzCM/8PzbvcvNrMWHrfur2Yak8XkbUQS7FSpXizYFOVgrERfA==, tarball: file:projects/arm-defendereasm.tgz} + resolution: {integrity: sha512-7gbr34BaMoN1yPO7c607FDFsj88k8mIr2QCTjiShrpYMCvpJ84jvC3mQzlXnWxk3GmgZq2be3nfEpxNvTh4eew==, tarball: file:projects/arm-defendereasm.tgz} name: '@rush-temp/arm-defendereasm' version: 0.0.0 dependencies: @@ -13872,7 +13881,7 @@ packages: dev: false file:projects/arm-deploymentmanager.tgz: - resolution: {integrity: sha512-aEExsoi3tVjzs3YgVsPRq64ph2mZe0VR6knQVFo7+Ngiy3sVDOgFeIrpWM/52cmUw+VTm5Hbizpy9H3DPJVctA==, tarball: file:projects/arm-deploymentmanager.tgz} + resolution: {integrity: sha512-FoySKQFCw5MPZ/L5oHCmVioVo9WGJyiMx0qTfxrbobPuIjHvRkSURjuZabKrn9lzJMmW2nAvrB6N7e0VlSP3Bg==, tarball: file:projects/arm-deploymentmanager.tgz} name: '@rush-temp/arm-deploymentmanager' version: 0.0.0 dependencies: @@ -13900,7 +13909,7 @@ packages: dev: false file:projects/arm-desktopvirtualization.tgz: - resolution: {integrity: sha512-I7AkSK0lX4UxJA2sWGy0ihNKcHY/FYnwqbCOFvLO+8ns0AxvM9Q//w8ZnxcHuvZu+94KFpkZmcFXw1mzX63QaQ==, tarball: file:projects/arm-desktopvirtualization.tgz} + resolution: {integrity: sha512-fzERO50kROKzMjG5+9dinGQxfsgomqlObH9PToPb25PCFfqjeK49nE5msV/lFhGK7pBVSA1QjSZRMyb4gYd7Lg==, tarball: file:projects/arm-desktopvirtualization.tgz} name: '@rush-temp/arm-desktopvirtualization' version: 0.0.0 dependencies: @@ -13927,7 +13936,7 @@ packages: dev: false file:projects/arm-devcenter.tgz: - resolution: {integrity: sha512-qvezcpD/BXTkJk3wY2DCNpOV2gpEypamINbu+4DlkmWrzG4Aq+XqxIvb9WUkZEqC4Q9g+qRviHZ/Le3PKvR6Vw==, tarball: file:projects/arm-devcenter.tgz} + resolution: {integrity: sha512-+EgeXORsAGifA5GfpoPh5+iKGh151dInVtyXPiTSIDhVc7cZqywzmOnvWhBZyauGO/UnmDtmx3yj38gFQkJreg==, tarball: file:projects/arm-devcenter.tgz} name: '@rush-temp/arm-devcenter' version: 0.0.0 dependencies: @@ -13957,7 +13966,7 @@ packages: dev: false file:projects/arm-devhub.tgz: - resolution: {integrity: sha512-6dT2hlpkNL19n87JzMdgFqcnwtJhF7cgtr8cmU7NSLeKT2mUG1Pi80byoyGJRiHfwwLolyki37lw+p3YaCRJ/Q==, tarball: file:projects/arm-devhub.tgz} + resolution: {integrity: sha512-roRxZq1ThJ8ulTiTaIfZ8+YN0oPK2XU1zjHtFN6asDP9MlngUSidI5+zyUCasKBcCRYzD887YLGm9eOekbYyVQ==, tarball: file:projects/arm-devhub.tgz} name: '@rush-temp/arm-devhub' version: 0.0.0 dependencies: @@ -13984,7 +13993,7 @@ packages: dev: false file:projects/arm-deviceprovisioningservices.tgz: - resolution: {integrity: sha512-1+oB38rl/5PCw1wBmwbrGNYZS4ZRqYVJK3k4u5M75z7CVaWGvH/vjKrozNQhhyhpjNqbMdhLy6AorAOUl4HTGw==, tarball: file:projects/arm-deviceprovisioningservices.tgz} + resolution: {integrity: sha512-9uOT4iGIwFDcpXmXdK7jrVGYuIbNpv64CAJ6zmQbh2vXxdHHFoSrS6VAYkJs04mpFJdlMRh5vwX36UO6RnSC7g==, tarball: file:projects/arm-deviceprovisioningservices.tgz} name: '@rush-temp/arm-deviceprovisioningservices' version: 0.0.0 dependencies: @@ -14013,7 +14022,7 @@ packages: dev: false file:projects/arm-deviceregistry.tgz: - resolution: {integrity: sha512-o1TYgm5ZSWqKOJXjIsgwYS89V3i2tz4GuDLElUfTAwF5qN6NM5oehgKEy45jstagBzaisyL17nsbX7w/9GDA1Q==, tarball: file:projects/arm-deviceregistry.tgz} + resolution: {integrity: sha512-Z/UhV0Y/QSrLDzMw9f8EtukBU512KM73pOUvBCQEdivFzwAETWB0SutZI/McsFZezvQon0RytU7NmCk5gyQqzg==, tarball: file:projects/arm-deviceregistry.tgz} name: '@rush-temp/arm-deviceregistry' version: 0.0.0 dependencies: @@ -14043,7 +14052,7 @@ packages: dev: false file:projects/arm-deviceupdate.tgz: - resolution: {integrity: sha512-6hj2fDUWz7W88rM2XJav18foR/n9u31HLg4GVm32EL8tg87epWfz77MGfP357b+bRAf271ONvcKeGpXISgzztw==, tarball: file:projects/arm-deviceupdate.tgz} + resolution: {integrity: sha512-79ObyqZdMdv++/V2JzgsSBGsZplJRE3S1tj6FZwrdQb6jQr7oyF3FvqXC1Ur9RNf4HvV9yvER+Sya8gZActCRQ==, tarball: file:projects/arm-deviceupdate.tgz} name: '@rush-temp/arm-deviceupdate' version: 0.0.0 dependencies: @@ -14072,7 +14081,7 @@ packages: dev: false file:projects/arm-devopsinfrastructure.tgz: - resolution: {integrity: sha512-/WnCVSPz2xmeYaRh03A4hgI4QojTL5ltZP9OKRsOoNtJ8D9ZgPsv8VAxbjLU48d8zUPNnMoz48dB5rwf94fXsw==, tarball: file:projects/arm-devopsinfrastructure.tgz} + resolution: {integrity: sha512-6PZO0/cyIWVzpEeAPzsUeGUbq59H9BRSOL0vWzDjy6SsOTdUwah5oeu/Vrg1EdEMIP/tbRt2bESN0CaxFr6n+A==, tarball: file:projects/arm-devopsinfrastructure.tgz} name: '@rush-temp/arm-devopsinfrastructure' version: 0.0.0 dependencies: @@ -14102,7 +14111,7 @@ packages: dev: false file:projects/arm-devspaces.tgz: - resolution: {integrity: sha512-D1tXgn38Ly41tu6LoHzooERL35dKexJ1KJmrWD/YcjTzdn3/ExAppw169uy/VadpjCTKmTeJY7+eOnePsFnWxw==, tarball: file:projects/arm-devspaces.tgz} + resolution: {integrity: sha512-UVkSvxkM7q0PDdyH3UNS9ax5KwDP8Z1zUV8yvEaIafsh1Yu3K2B57fVze2NIRTnKyYECqwpKIuQO3tqae8E5YQ==, tarball: file:projects/arm-devspaces.tgz} name: '@rush-temp/arm-devspaces' version: 0.0.0 dependencies: @@ -14130,7 +14139,7 @@ packages: dev: false file:projects/arm-devtestlabs.tgz: - resolution: {integrity: sha512-R/en3JN2jZ+kmyHOxu9ydC+EROu/f49yIHQFZJja44oN9urlXdWmUHlYp75u6Sp7aVUVnq8uBTfpQKCyq+i6CA==, tarball: file:projects/arm-devtestlabs.tgz} + resolution: {integrity: sha512-d5Polhe3Tzwi2ZLaoJjAxLVWWMKfFImhu1gIAABXeTFCXnOAt/To/JPYq1plAeoZ6wDQAyRQdpbRSrn+/Mne4w==, tarball: file:projects/arm-devtestlabs.tgz} name: '@rush-temp/arm-devtestlabs' version: 0.0.0 dependencies: @@ -14158,7 +14167,7 @@ packages: dev: false file:projects/arm-digitaltwins.tgz: - resolution: {integrity: sha512-iM4EOYG7NFD+JL2UWL0C2jlIHCULtyhXVwsNGlTI6FsvBi6fq8kNHWTK0bNV0N4K8C9B3psEfrCt0Et8DgI6pA==, tarball: file:projects/arm-digitaltwins.tgz} + resolution: {integrity: sha512-mOcuRUN/4ab1Vv23X4J3ENW8BQ+dR9jTS7OKCQ4Kq3yGox9Yrzqndd/UE/ejFqnLnG5ysLoORE7la+2LWcaa3Q==, tarball: file:projects/arm-digitaltwins.tgz} name: '@rush-temp/arm-digitaltwins' version: 0.0.0 dependencies: @@ -14187,7 +14196,7 @@ packages: dev: false file:projects/arm-dns-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-eNMGrMf7mPvoH3aE0mu4+LWbTGTaikuQ8hNJcezXvmHHlnwAWb1O72WIp+tr6wxV9pMknrPE0FAdETibsp2l1g==, tarball: file:projects/arm-dns-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-E5mLlJeGxjbUjGxsOu/UsBf9Z++V2ngecYVKzgrneWmm5mchxIY7IXzT24s86R5Zsgsk/wcRCE4/vWjOSH5CJg==, tarball: file:projects/arm-dns-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-dns-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -14216,7 +14225,7 @@ packages: dev: false file:projects/arm-dns.tgz: - resolution: {integrity: sha512-p9bG8yecyB6DI0bvu9Egx8N6aHFrkHCyx75NtdDxdkHt4zUGcKZp+scG4XAk/YQ6wLzyAof1rhkUvJ44NbKmTg==, tarball: file:projects/arm-dns.tgz} + resolution: {integrity: sha512-L/FxW5wiyM9xECBd5AOkcif4jY037t9BPYuMEsCB2C6sjr12zL1Wx+ZxXYPn8QPZ23YO8sWfjCEo+0qG5Xv70Q==, tarball: file:projects/arm-dns.tgz} name: '@rush-temp/arm-dns' version: 0.0.0 dependencies: @@ -14244,7 +14253,7 @@ packages: dev: false file:projects/arm-dnsresolver.tgz: - resolution: {integrity: sha512-hmIqxJpyPK0BXfOQqjG5CKDaO8RgogBnkxuWRFiGJ3AShzLkPa0xo5wOR034Ogm36osdvPkMW3WqIURUmrWZmQ==, tarball: file:projects/arm-dnsresolver.tgz} + resolution: {integrity: sha512-v+RQ4o4M0DD7s1AGCj5wPiyfe1ou9XmUeanLc3ie20HwgyEjyw5X+WL7PsMqhlLySWXCvBp/gGTtY0+zZE3ocw==, tarball: file:projects/arm-dnsresolver.tgz} name: '@rush-temp/arm-dnsresolver' version: 0.0.0 dependencies: @@ -14273,7 +14282,7 @@ packages: dev: false file:projects/arm-domainservices.tgz: - resolution: {integrity: sha512-4bb5KDVGG3i9477Hp/oZ7YiKuZMsBQxlXC90Z08WKv1PzkWmISXmN4AwxdbVGT7Um5x7Og9lqP65YRkdlxmZwA==, tarball: file:projects/arm-domainservices.tgz} + resolution: {integrity: sha512-UyBZ8nGuCT2MzLy+fSjmkO8Zm6yN6Bu0S506UTLCcD8BOPGbh4bb2+K0BHE2locPOULdmrBcbVHSzM3M+P5xyA==, tarball: file:projects/arm-domainservices.tgz} name: '@rush-temp/arm-domainservices' version: 0.0.0 dependencies: @@ -14301,7 +14310,7 @@ packages: dev: false file:projects/arm-dynatrace.tgz: - resolution: {integrity: sha512-SMwkLCidnYHctHkUg4ljgpLnJdpdDPBmZ9PvJHSGFLSsdksmNcQI8LLkOYdH3Lmo39R4kY0T+s2N73Km7YQ+0g==, tarball: file:projects/arm-dynatrace.tgz} + resolution: {integrity: sha512-QP5oJL/cjssYbkwSbsZrBH/nFwpeO42ocfB9/jACdPG9hsxC/tipPGfuHPigLg/hqhrtjKwBDEwY+IrKaB16xw==, tarball: file:projects/arm-dynatrace.tgz} name: '@rush-temp/arm-dynatrace' version: 0.0.0 dependencies: @@ -14330,7 +14339,7 @@ packages: dev: false file:projects/arm-education.tgz: - resolution: {integrity: sha512-2qxjHd9LHxm6l4cYfjMd6lwW0MOuqfvM4CQz+1jJvNcfJkPJ/k8DBqeepNFf/c6xXqySxiUJhQmmZuIwC0gzOA==, tarball: file:projects/arm-education.tgz} + resolution: {integrity: sha512-r8ZOP2N5odspiaxGIVm9g1vdcYG42cC00AyDJfiXNhdg2t6U3G35pHaEIUW2hPeD/uMN+leehDSd4KZg9iFgsA==, tarball: file:projects/arm-education.tgz} name: '@rush-temp/arm-education' version: 0.0.0 dependencies: @@ -14357,7 +14366,7 @@ packages: dev: false file:projects/arm-elastic.tgz: - resolution: {integrity: sha512-PDnAqhDb6I96Xf5i0AmczyaGUlV3vzfBl5Byass/5nNS6A1nLSJriidGpu/hULEpOYmjS6Zj/xwBvfzqlbMwcw==, tarball: file:projects/arm-elastic.tgz} + resolution: {integrity: sha512-arDvfgvbywIZjKIPCVfOJNgGe7L0IgbGvjVyMSwUEr6StwBzkiVEugKzcyy2vUVXnwzjhDbN55EByvd1MNIzFw==, tarball: file:projects/arm-elastic.tgz} name: '@rush-temp/arm-elastic' version: 0.0.0 dependencies: @@ -14386,7 +14395,7 @@ packages: dev: false file:projects/arm-elasticsan.tgz: - resolution: {integrity: sha512-LVRgFncBK/yyCWBHa9h7pmFSgjFuSmxDm4NJWiJEEd7NFtxgFcLndzM0neoyBCeO4MLNoELWyMyJ80N9RADWPg==, tarball: file:projects/arm-elasticsan.tgz} + resolution: {integrity: sha512-xTgZeV7GG5wvxNXvPp+rifp8gfZzhDEq5AoScmnPX/giFa3YLE8Bsg2vWvu292nvpQGNrqTJXx6rDKvQuIl3Ug==, tarball: file:projects/arm-elasticsan.tgz} name: '@rush-temp/arm-elasticsan' version: 0.0.0 dependencies: @@ -14415,7 +14424,7 @@ packages: dev: false file:projects/arm-eventgrid.tgz: - resolution: {integrity: sha512-+l5meIu5k9HjRzBGBCEwulIOafumrfz+VkYPk9QKXcqIaZUXPLNRBA+Xl37H3L+gEsTgoHTz+RQraWYANZVSjA==, tarball: file:projects/arm-eventgrid.tgz} + resolution: {integrity: sha512-Y0q3Q2LC/gMryfTFMjU9ZaR/Q3LE11+ulFKq3HcQCr15gkQPZSNGfxVvp+XjQnBGr6Ckoue+FY92SDEIleIqyg==, tarball: file:projects/arm-eventgrid.tgz} name: '@rush-temp/arm-eventgrid' version: 0.0.0 dependencies: @@ -14444,7 +14453,7 @@ packages: dev: false file:projects/arm-eventhub-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-+qx5ADyfbNVBPYDJHiR6vpRALl/0tjg0iafsdniYlkvrXB4FKfe6r06Ux+jSXQwXCCcUgAye5uWkjxRgQxzkzw==, tarball: file:projects/arm-eventhub-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-Ncj1pcFCut2GN2CTVDhfS1u51y5BkDx87JKc0RNfb1xOh1v7pt7OdFrpYZumBEl7Ww4SKZDGsN6OZC5tfIhBHQ==, tarball: file:projects/arm-eventhub-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-eventhub-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -14473,7 +14482,7 @@ packages: dev: false file:projects/arm-eventhub.tgz: - resolution: {integrity: sha512-jaIcsCGr46KTnT+A80577VuFHUcwjG8O9bDA7RRKZ0dAmi8Ha/Mzr9baq9YEcuTHWL0nwJ84EnPqqHhEXLu1Nw==, tarball: file:projects/arm-eventhub.tgz} + resolution: {integrity: sha512-Lnoo/8GxViFEWvb2vgu+Zpaz8g/q1zMopOyDFAJDd73oe2er3TOwG0c/gdMjzco+Qr+sEv8WjTiAW7vBp6OMIg==, tarball: file:projects/arm-eventhub.tgz} name: '@rush-temp/arm-eventhub' version: 0.0.0 dependencies: @@ -14503,7 +14512,7 @@ packages: dev: false file:projects/arm-extendedlocation.tgz: - resolution: {integrity: sha512-nQc7AE3B2V+kNYI4DhC3DIDOtoD4K6VAQZJBG6nnYhgjIJh3aipyvBvmxhAu5eSz6EQ9xPkau8Lv9Ex3kJTGeA==, tarball: file:projects/arm-extendedlocation.tgz} + resolution: {integrity: sha512-HOwm+MTuMzE/oo0is8EffPwme8/U2AXT48eUukj014dXpCXn/fuIL5E5LVzK759Hx7FMza7yFUfM27u9IfMupA==, tarball: file:projects/arm-extendedlocation.tgz} name: '@rush-temp/arm-extendedlocation' version: 0.0.0 dependencies: @@ -14532,7 +14541,7 @@ packages: dev: false file:projects/arm-features.tgz: - resolution: {integrity: sha512-78FNEN1/heNndUPb48o8NBoQO1crf48inRIU9PLAde9LNXylL7liiZlBc5WMqzvE5ASW+uVteBhyhDK4JBFY5w==, tarball: file:projects/arm-features.tgz} + resolution: {integrity: sha512-uznbIFyaBHqnNEL3AG/eisyj/sXtF6ZwQKLqXRzG9LvAsRVbXfAa9RW7HG1VGNHnRz4UNj6tv4NQyatouL5CGg==, tarball: file:projects/arm-features.tgz} name: '@rush-temp/arm-features' version: 0.0.0 dependencies: @@ -14558,7 +14567,7 @@ packages: dev: false file:projects/arm-fluidrelay.tgz: - resolution: {integrity: sha512-UoQdFEY6gvSUDyuihHUnQWW2VnVQVVmDwJ5W9/Y9iCh1xFBmBrfBKm9qoLzemnKYWtDizNHqlzBMrZy7lbqnWg==, tarball: file:projects/arm-fluidrelay.tgz} + resolution: {integrity: sha512-sIpmd+0f+voduNLyRVGXwJNbd8P12h1/LjVarO/a9ncMt0BVyo4X5XK589wRkex7LWDex0V3Ru9KSmp7n2w7ew==, tarball: file:projects/arm-fluidrelay.tgz} name: '@rush-temp/arm-fluidrelay' version: 0.0.0 dependencies: @@ -14585,7 +14594,7 @@ packages: dev: false file:projects/arm-frontdoor.tgz: - resolution: {integrity: sha512-qE55RLpavSUtMYBBJ3kdRzjwsscrkSiuWgKfSLnRHaR+/+Ix+9sSiXWjpAnjzETLTqqyQePzzsriQ8w+OCK6rg==, tarball: file:projects/arm-frontdoor.tgz} + resolution: {integrity: sha512-fVavvr9IP2NscKE44zj9MjKfLX/tyc8bzOKE46Ot92mmwCj5WZo99zNEIhBb+6ovKUFGZXcqI5vopMLjDbrTjQ==, tarball: file:projects/arm-frontdoor.tgz} name: '@rush-temp/arm-frontdoor' version: 0.0.0 dependencies: @@ -14614,7 +14623,7 @@ packages: dev: false file:projects/arm-graphservices.tgz: - resolution: {integrity: sha512-TRwfFz25Q4kd7IByU75KT2V4fLQsuWQXdTiBvR6iZ/DdmbOZIF8X1Uu98khkeSNwIuCNaJqhvgLjyr3oqLrgyg==, tarball: file:projects/arm-graphservices.tgz} + resolution: {integrity: sha512-0NlGkImGLWowJQNNyGI2sknvxexh3kaidpnyLIbzgWVS+LaD6JWLQZ0PKf20JEIg35SSVmACQc0PnALqCUC0Dw==, tarball: file:projects/arm-graphservices.tgz} name: '@rush-temp/arm-graphservices' version: 0.0.0 dependencies: @@ -14643,7 +14652,7 @@ packages: dev: false file:projects/arm-guestconfiguration.tgz: - resolution: {integrity: sha512-ZwcGtfBzy84+WNoe0cE91mS9WUHGNiGfIb+1mBR62mXLoeezcKiDU1dtsNceXRqWizNGj0m6sAIu9uDW5P23Ow==, tarball: file:projects/arm-guestconfiguration.tgz} + resolution: {integrity: sha512-qUyV2n0CJBKilJ8r8W18DzTE2dUBZifQy+iOOJB3crKFCUIPglry5p4pxPGBCMtl8tbCMfaNkuyJhh4gMsTqHA==, tarball: file:projects/arm-guestconfiguration.tgz} name: '@rush-temp/arm-guestconfiguration' version: 0.0.0 dependencies: @@ -14671,7 +14680,7 @@ packages: dev: false file:projects/arm-hanaonazure.tgz: - resolution: {integrity: sha512-/R8UEWXKX3KACeXQ+h6ldan22Ae3tX4tFJHD2BKwbQRDVztPe+pGc5HMZ6VzGoO3B7Ed5gCeVmVuo/pEJs5R1A==, tarball: file:projects/arm-hanaonazure.tgz} + resolution: {integrity: sha512-tO5VxH2Hh3leKrGi6r6ZdU4ZxDVTSWyjBkia64Sh6ZrNchBMKRghjAcDd3nThr2dJlLv5/M7h/9cYmW1L/ncwA==, tarball: file:projects/arm-hanaonazure.tgz} name: '@rush-temp/arm-hanaonazure' version: 0.0.0 dependencies: @@ -14699,7 +14708,7 @@ packages: dev: false file:projects/arm-hardwaresecuritymodules.tgz: - resolution: {integrity: sha512-mfizzHZGqr9NDMZaA35ppNXyPhFjBAXuL3IN1Scqi8le+lKGZx7jcGHD62CEhInLKmV68Pe1OrqTzxaZguDmEA==, tarball: file:projects/arm-hardwaresecuritymodules.tgz} + resolution: {integrity: sha512-FCJa4jU5jEIGjeHOjLy77U086YlrHwwvR8WMB1xUQO0yL/Xpo2CwxnucUhYg6M0SAiuXzE98u2S4UFL62iSo2w==, tarball: file:projects/arm-hardwaresecuritymodules.tgz} name: '@rush-temp/arm-hardwaresecuritymodules' version: 0.0.0 dependencies: @@ -14728,7 +14737,7 @@ packages: dev: false file:projects/arm-hdinsight.tgz: - resolution: {integrity: sha512-Iyx1HZ7UgQ90J+snLx9Q1Jxuu5RtgAHdrMmvHlB5q9QhTaTdbrP3NIU99zdhlhkIdgsIrnR3oJY9Zkrs4o7Omg==, tarball: file:projects/arm-hdinsight.tgz} + resolution: {integrity: sha512-aR6/BgxL7i5PMUP+p4+T+CeuiG87ZxXa8Y0HdoJiXuFU5adSkxN8HgHKQgEIpF3rLsEhPF4C3y3cBCsId3h9Og==, tarball: file:projects/arm-hdinsight.tgz} name: '@rush-temp/arm-hdinsight' version: 0.0.0 dependencies: @@ -14757,7 +14766,7 @@ packages: dev: false file:projects/arm-hdinsightcontainers.tgz: - resolution: {integrity: sha512-UZQ6rtiFiY4LJnNbIwNc43xylx0a0H721FQdgBOhb/lui7tgCLDvjvsyoRO6wOpl3pWcMZKhycwP6VM6u+0oOg==, tarball: file:projects/arm-hdinsightcontainers.tgz} + resolution: {integrity: sha512-eAZoHMg9H9zEDc0TJpgJxh/OrQ6824FfbP87a8mc95YysioMs/vqh/VMn83/XEysnyh5qNIYSnPCrKgZOwz+cA==, tarball: file:projects/arm-hdinsightcontainers.tgz} name: '@rush-temp/arm-hdinsightcontainers' version: 0.0.0 dependencies: @@ -14786,7 +14795,7 @@ packages: dev: false file:projects/arm-healthbot.tgz: - resolution: {integrity: sha512-Ai+XunnlIw9u0v70NqM8Cz/hNhnL8FrMwvzHtDdgILQrw/0Vm2Me+cfw1h/WLJEoR+aRj1CSN65ShQGwRWOkjA==, tarball: file:projects/arm-healthbot.tgz} + resolution: {integrity: sha512-piXYyUp9nTkWUMJDhMBzaI+dN4JNtSPG8NKixoFbl02+LDRY5vZALUxYoPtcG/plm11IeItiajY07Tfy4e8jMQ==, tarball: file:projects/arm-healthbot.tgz} name: '@rush-temp/arm-healthbot' version: 0.0.0 dependencies: @@ -14814,7 +14823,7 @@ packages: dev: false file:projects/arm-healthcareapis.tgz: - resolution: {integrity: sha512-KzjGZA5qxr52QKsE2A8GHOl+kYIDxdmwpw5sMhgaupgy27zBTBQQhDH9LUNhKHN2aN8R5gxKNe6PYISc+0xNJA==, tarball: file:projects/arm-healthcareapis.tgz} + resolution: {integrity: sha512-gJusjOpAC58JDBNSgg7/GcwtU3td7+YpHnxda+UV6WV3xt1Z40KUixqogZBLr/JfXS+w/QYvX9jRMEtEKnLK9g==, tarball: file:projects/arm-healthcareapis.tgz} name: '@rush-temp/arm-healthcareapis' version: 0.0.0 dependencies: @@ -14843,7 +14852,7 @@ packages: dev: false file:projects/arm-hybridcompute.tgz: - resolution: {integrity: sha512-F0hvebaT4KnCsY3LXfXBvMGnGeU7pPPNduzwZix36ocMs17X/aO6WRWo+Iwzo76eSm7k+yT5Wo4KJo3PQmaC9Q==, tarball: file:projects/arm-hybridcompute.tgz} + resolution: {integrity: sha512-HMKGQGal3cZ5EFZPCX/AUEfvHhDWt0xcuQ0lfAgzeZB0G7EQ2KIHNslj83cIwHWZSpSEFE75GC5xh4mDReAR9w==, tarball: file:projects/arm-hybridcompute.tgz} name: '@rush-temp/arm-hybridcompute' version: 0.0.0 dependencies: @@ -14873,7 +14882,7 @@ packages: dev: false file:projects/arm-hybridconnectivity.tgz: - resolution: {integrity: sha512-CMPl4OOimhLR+HRoehqehCqkD9LBuin7WRoS3eAzs0TjnqPvaAEGPgIqxAs/4kDQH0hQIID9jE5mDUHQpo2KFQ==, tarball: file:projects/arm-hybridconnectivity.tgz} + resolution: {integrity: sha512-359gwAAOPkrAN1koNzy1pZnsrKrJoqVH4WiAWk2nUYuJQIPhdGQb5owpiP9tQ6UuG9IOu4FKrATtB9hYBzEOSQ==, tarball: file:projects/arm-hybridconnectivity.tgz} name: '@rush-temp/arm-hybridconnectivity' version: 0.0.0 dependencies: @@ -14900,7 +14909,7 @@ packages: dev: false file:projects/arm-hybridcontainerservice.tgz: - resolution: {integrity: sha512-ryF5ncsLiynchcUVUKXk6/LQKrszo4XWTxndBSN2HnTbJKjIvqI36wKCMqf9qFGM4RF+g57ceFDGHsM6b8zceg==, tarball: file:projects/arm-hybridcontainerservice.tgz} + resolution: {integrity: sha512-Q4JuCdlX6yk27vokfOt7ALb9eKzDXwe1vyi0URBV7ZfGbMOV8Ncl4qxHobzmo+R4G3fcoGy4OqOh7sOUCcGofA==, tarball: file:projects/arm-hybridcontainerservice.tgz} name: '@rush-temp/arm-hybridcontainerservice' version: 0.0.0 dependencies: @@ -14929,7 +14938,7 @@ packages: dev: false file:projects/arm-hybridkubernetes.tgz: - resolution: {integrity: sha512-XU+5OdFNEZ4Tv5D6ryq9qq7nmIbUZ3T4yw1Odp9zNj2JqnEhqgSB5GCSnzg7d9MQhdFi+6EyBDsb70yoWIj5sw==, tarball: file:projects/arm-hybridkubernetes.tgz} + resolution: {integrity: sha512-nA3bjYOWEe9Ct5SSUoNtT4JXzGEhHeDt+ZThOmTzQ2PsmLwLoj2ATYyWOBiSyG389qizkAqvhsrzWkZsbEa0tQ==, tarball: file:projects/arm-hybridkubernetes.tgz} name: '@rush-temp/arm-hybridkubernetes' version: 0.0.0 dependencies: @@ -14957,7 +14966,7 @@ packages: dev: false file:projects/arm-hybridnetwork.tgz: - resolution: {integrity: sha512-W3tni2X+QDkiBTyybHyIFsqDyeKGMmKcTyDq7UGeCZEqTmXtngNdck9F63pz0Q2vIDB9jk2Flde8zXqo/HVqqw==, tarball: file:projects/arm-hybridnetwork.tgz} + resolution: {integrity: sha512-JRQyKsLc7NWN9YoisMxkRlZORl589sKnNH9NmXy34SE0QslyRuAnFVCgcE9zVVf3dVDBORgpL9HrSAdQszo5lw==, tarball: file:projects/arm-hybridnetwork.tgz} name: '@rush-temp/arm-hybridnetwork' version: 0.0.0 dependencies: @@ -14986,7 +14995,7 @@ packages: dev: false file:projects/arm-imagebuilder.tgz: - resolution: {integrity: sha512-ihxecntLzPEo5N7J7k/8c7+acaTTbnLbCsxACpydpSrZbMNOrL1HGXD2iv2lZfMwllpcypmgBPfmqry7cG/zbg==, tarball: file:projects/arm-imagebuilder.tgz} + resolution: {integrity: sha512-NWaw2xSbkwB71PU6E3wS4X9L/ofdysUsB7BcBGJ2JPFuv1FRXzaWTPl4RgKp+Ekbx2I7EH31mtH3Fki5je2f6g==, tarball: file:projects/arm-imagebuilder.tgz} name: '@rush-temp/arm-imagebuilder' version: 0.0.0 dependencies: @@ -15016,7 +15025,7 @@ packages: dev: false file:projects/arm-informaticadatamanagement.tgz: - resolution: {integrity: sha512-OKupkmRV/BCbg0IQwvpoZZNKXYP+NWLy+FaVxTLT4XnQYoaZMJxjXfntxPDHlPRqQNBVAy0cNhUczUWBQzh2Iw==, tarball: file:projects/arm-informaticadatamanagement.tgz} + resolution: {integrity: sha512-n0HJE3rE1W8ofsDaM2mNBomhavHTZ2bQAr1KDWnhmg/qWFL1cHOUuF5fzWFurnLHdu/SJgjwIXI04cZakQmp7A==, tarball: file:projects/arm-informaticadatamanagement.tgz} name: '@rush-temp/arm-informaticadatamanagement' version: 0.0.0 dependencies: @@ -15046,7 +15055,7 @@ packages: dev: false file:projects/arm-iotcentral.tgz: - resolution: {integrity: sha512-B5HhsDRDEevZ6JPsKMm/9bYv1Zgl2dwWQ4SkiTbdh6bjgiuINmcGbWzQqln9D1nDOVkB5dYAk7jaDJvbKaKMYg==, tarball: file:projects/arm-iotcentral.tgz} + resolution: {integrity: sha512-zh53CZ1Tomv+AA9tvXfMngRuWhg7zU+dnvpL+nY5rPeIPIwqAt80PQVkULiAflKXCESMZXYRN3hyFhWfNNP/dg==, tarball: file:projects/arm-iotcentral.tgz} name: '@rush-temp/arm-iotcentral' version: 0.0.0 dependencies: @@ -15074,7 +15083,7 @@ packages: dev: false file:projects/arm-iotfirmwaredefense.tgz: - resolution: {integrity: sha512-Qp1NKGGLFvm+1GBYfz9JsH+la/I7+d3BQTTMnWT+ntcf3ZzQjdAJWkcJIgF4ejw4DGY4aSvy613pd/0ecPTThg==, tarball: file:projects/arm-iotfirmwaredefense.tgz} + resolution: {integrity: sha512-9Rxqieexzj2wBQfEa/CXCI5u7nrReMaDGTrynU05Qi5lZeWwNEQz0/m2AWV9W15BqHjigIJl72QLUQXvmtjQSw==, tarball: file:projects/arm-iotfirmwaredefense.tgz} name: '@rush-temp/arm-iotfirmwaredefense' version: 0.0.0 dependencies: @@ -15101,7 +15110,7 @@ packages: dev: false file:projects/arm-iothub-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-/mMiVqpKw0DgkYS/Y4BhcGcxkCkXtMNAgcjrt5RvpYgdKbjUZ6FD6dT+NR/Rb1up0C7XHkewnPb5sxJl8CDr5g==, tarball: file:projects/arm-iothub-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-IRT3H5DDwDJq0uIaf4+r9nqEaHiTZol7H/sQPCF7xnC7CKiZFhYKipTVNwezoyxjGE49m9aXYz5LmqXqcMbglA==, tarball: file:projects/arm-iothub-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-iothub-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -15130,7 +15139,7 @@ packages: dev: false file:projects/arm-iothub.tgz: - resolution: {integrity: sha512-oTv7BSpb68zrlx6dF8O+zvd8KssGSw3eTgWQKy9wJ/rsqYTb2LhMLh5ABOPEAA0yjeJFn1DFQG0wXW1Y2sblvQ==, tarball: file:projects/arm-iothub.tgz} + resolution: {integrity: sha512-zqrbRZVloEgsn/JmyrFcrAu0ji091zueW4BwhqbVo1xrOkKLHBY6Ps62Bnm0zsbgyMgGlPHjCc7jsIVq9Y3NFA==, tarball: file:projects/arm-iothub.tgz} name: '@rush-temp/arm-iothub' version: 0.0.0 dependencies: @@ -15159,7 +15168,7 @@ packages: dev: false file:projects/arm-keyvault-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-whZOfZiJ4zfJMjydVq+EmaDWQhPAKjCsib4ZdzinNjeusniKLjrG4F6xakW5yICsEjLecvS5yw4hX3GBmbZtqA==, tarball: file:projects/arm-keyvault-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-/1nkzZ8Zl0UIDkefVBlCbGccmh6SQh3OPMOWZqdodA8vE3GMf+Rdwb7FxamHkgTv/258VWGBxlLv2761ITafgA==, tarball: file:projects/arm-keyvault-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-keyvault-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -15188,7 +15197,7 @@ packages: dev: false file:projects/arm-keyvault.tgz: - resolution: {integrity: sha512-IOwtH/6OXCrwtoZGfi76ge/cI+3pPtVgdP2dt0uwFaAL4yOLGmCO9EXsxmxD23HFMGbOexFZt5EYue/exiTLWg==, tarball: file:projects/arm-keyvault.tgz} + resolution: {integrity: sha512-raDVaKR5tZFZ9H0A9eTleP92ebGYBN/mbcreOny24Ts54359FcHRrTr2tGqgWPDcBw5HuwSIRGPOxajtDzW+jA==, tarball: file:projects/arm-keyvault.tgz} name: '@rush-temp/arm-keyvault' version: 0.0.0 dependencies: @@ -15217,7 +15226,7 @@ packages: dev: false file:projects/arm-kubernetesconfiguration.tgz: - resolution: {integrity: sha512-5G0BxUSArfG3gGT2VZJA1GnyuuMnZK2kV1ldOF76q3xQeF3XPreb8jOMG7YHow9G41HnpEYbMby960YSaaYVBw==, tarball: file:projects/arm-kubernetesconfiguration.tgz} + resolution: {integrity: sha512-jljArsJrCh6OYnP8IjLbqYCn+O+oWRvaNGmGv396GHMEDEI7gahjQs3Ob9kuU/qmFaQWYZMqmgLBilj+x8wmxQ==, tarball: file:projects/arm-kubernetesconfiguration.tgz} name: '@rush-temp/arm-kubernetesconfiguration' version: 0.0.0 dependencies: @@ -15246,7 +15255,7 @@ packages: dev: false file:projects/arm-kusto.tgz: - resolution: {integrity: sha512-uwpBqvlKeDz2tDubGy/fjEyxXyiTH/512tMtWGH8YGOJtIqzVwAXhlkvxvruK4AioHdklC0V2vXYJ91k9Nan9w==, tarball: file:projects/arm-kusto.tgz} + resolution: {integrity: sha512-H7SsuaroR1QB47NvnFAS6HX2F4+QqClTL1W9nIYwUrC7qoBzKxaOnbXycEaTM/zuf7LUg5Rtuk9auj8I2H72Ow==, tarball: file:projects/arm-kusto.tgz} name: '@rush-temp/arm-kusto' version: 0.0.0 dependencies: @@ -15275,7 +15284,7 @@ packages: dev: false file:projects/arm-labservices.tgz: - resolution: {integrity: sha512-pEnh/s0n1j72rplrB+7fETLHAU10HFAi4U6uv5bGjRN+n5WkwQPAMcJWB2aXrEDnaXrZhSCpKvFTaHdXihbusw==, tarball: file:projects/arm-labservices.tgz} + resolution: {integrity: sha512-ziUGm+dJ8q9RuEaPRrd24ebqNWHHITEQbbuA0WFQXKb6CsDkY4LRVrEckzZOXB+ruvSL4qLSyiqOYJ2RE/XThg==, tarball: file:projects/arm-labservices.tgz} name: '@rush-temp/arm-labservices' version: 0.0.0 dependencies: @@ -15304,7 +15313,7 @@ packages: dev: false file:projects/arm-largeinstance.tgz: - resolution: {integrity: sha512-XhelLUg04Geyck+cpMO4MKztbmB4caHS6oEHv/vagHSYiv01WNRlbsqgT56IXiIFZtusv0YhaFR5v0a+aUq+EA==, tarball: file:projects/arm-largeinstance.tgz} + resolution: {integrity: sha512-xtlCLXgP4yJmvCYlIwHuqW5cQnzGj267fCmeqysqI0czGAW45RpgR3mi3l56uDEyZnHEofCJsEm12vP9axlF1Q==, tarball: file:projects/arm-largeinstance.tgz} name: '@rush-temp/arm-largeinstance' version: 0.0.0 dependencies: @@ -15333,7 +15342,7 @@ packages: dev: false file:projects/arm-links.tgz: - resolution: {integrity: sha512-IE+pi5nKK2h12dP6QtZ7sgGwD3L8cnRp3s30lxhZtyhQufQpJo7EK76u48ANW0hF1UIC2dQONtcNoSn5vKh5pQ==, tarball: file:projects/arm-links.tgz} + resolution: {integrity: sha512-dPLCsSVjXZko/ZbeASunFL+h7YC/Co9mPeXk3ZnzdpG6a25c+RfO619Zv9xAkDjkoVsSZN3VWDEtly6/ovwTBQ==, tarball: file:projects/arm-links.tgz} name: '@rush-temp/arm-links' version: 0.0.0 dependencies: @@ -15359,7 +15368,7 @@ packages: dev: false file:projects/arm-loadtesting.tgz: - resolution: {integrity: sha512-rfZ9pmQW3vkXfapJiLqN399grZqOiikJq7xZo9OzsiJ+MfZEp4ZF6Bkl+bQb98P/c9ysiLUDipz54p/3qyjtWA==, tarball: file:projects/arm-loadtesting.tgz} + resolution: {integrity: sha512-kiAnfqRVV4BStY99xwqZDxpbxxFORrIqyOnw9kSZdKTzyQKpu4evE4wuC+z3OKmDa/RXgaBC8lR7sdmZpsrsTg==, tarball: file:projects/arm-loadtesting.tgz} name: '@rush-temp/arm-loadtesting' version: 0.0.0 dependencies: @@ -15388,7 +15397,7 @@ packages: dev: false file:projects/arm-locks-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-NzXN6Z4PfIr8GM4bu0+ye6YlynpPcnyWyPm9hnDZS5NSli9xhW7VkG+N7vCvFS5mXYW3l4tHsBD411MN20NsXg==, tarball: file:projects/arm-locks-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-8CKrZQQ/Bn9ZFPJg2QB16xFbUurQbLUzMYt2wlIvYQLNBMWG+G12CfCCWxae/zDnka9v66tfAoZH9ETyztAP7w==, tarball: file:projects/arm-locks-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-locks-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -15415,7 +15424,7 @@ packages: dev: false file:projects/arm-locks.tgz: - resolution: {integrity: sha512-MW1yh5k9TzvajtjqkcELFE7YGiB/zsdv9Xj35OTPte25AtmHdMa+461K8erFGVjONRq5LEby/GUT1DInPF6Tug==, tarball: file:projects/arm-locks.tgz} + resolution: {integrity: sha512-jAIO2vCLbtK/VyXwG2wBQ1nLi1M9ReqEum85BMe5JlOGDxi+VpOezHiOmjl3hskw7IMlumT+RcvlJEr9FDl+dQ==, tarball: file:projects/arm-locks.tgz} name: '@rush-temp/arm-locks' version: 0.0.0 dependencies: @@ -15441,7 +15450,7 @@ packages: dev: false file:projects/arm-logic.tgz: - resolution: {integrity: sha512-ssrTZIUYglG1vPVxEtDTnykM3dBa0j4YgeVaSupBgHGVXNhqcZV+jlmcM+yIAESwlV0JKy/GTnvSxNsHFEiN1w==, tarball: file:projects/arm-logic.tgz} + resolution: {integrity: sha512-K8LUp4WQVKZe8ElRgzBy8XA1BYgbL/IQjY6BpGtqdt9Kp4TWELhpvtS5lvYjvEbn884f87S6UviS5418xtrhtA==, tarball: file:projects/arm-logic.tgz} name: '@rush-temp/arm-logic' version: 0.0.0 dependencies: @@ -15470,7 +15479,7 @@ packages: dev: false file:projects/arm-machinelearning.tgz: - resolution: {integrity: sha512-WDw2AnzTcd/KSES4CJX7ArgfJ7RNMG5YdIvmmZlX9tlzr1/jiHtnkVXe9Tk2nVQ0JYJqah5gYu9g4sYrwJDYrg==, tarball: file:projects/arm-machinelearning.tgz} + resolution: {integrity: sha512-VUDsZJlfnHrZbYDYrAlJyh3NUZ8tLHOBkft8Ks+7BBSIyZqa9zDD2qGbK3md8IcmktNxwMWvliVXG0b6gfWdvw==, tarball: file:projects/arm-machinelearning.tgz} name: '@rush-temp/arm-machinelearning' version: 0.0.0 dependencies: @@ -15500,7 +15509,7 @@ packages: dev: false file:projects/arm-machinelearningcompute.tgz: - resolution: {integrity: sha512-Z4R6oK/OQwsBX64ARDLYK+UrBl4BgYAAIfQyLVlzivc/CDm75+ZPuyY0dtBZL8vk+OKWueVcIECxrBX7CiE7Hw==, tarball: file:projects/arm-machinelearningcompute.tgz} + resolution: {integrity: sha512-TXxNRZqbFgdazHuQWfSL/R+XQHLuh7J4hRvyLO9usJBzj+dqOwyuXyqEpgGcPIbUqGkEoStTuFqgDjy0Jfk15Q==, tarball: file:projects/arm-machinelearningcompute.tgz} name: '@rush-temp/arm-machinelearningcompute' version: 0.0.0 dependencies: @@ -15528,7 +15537,7 @@ packages: dev: false file:projects/arm-machinelearningexperimentation.tgz: - resolution: {integrity: sha512-5mKqQt6wqUPBGlPbqrsc2JXcf2ysgusZqMWTrtxjcBni9F5ma+e+CiGNu0dK+WJ78nAiflnymSyDK4qv7HYZeg==, tarball: file:projects/arm-machinelearningexperimentation.tgz} + resolution: {integrity: sha512-FDFKnv0WzhpmKqQSddSdiRX+MgQeC3YULtZtUi+8GFJAqtvc/TiVsupuqnTAC4JkrSlNbXGb+AElGvL0DJCSuw==, tarball: file:projects/arm-machinelearningexperimentation.tgz} name: '@rush-temp/arm-machinelearningexperimentation' version: 0.0.0 dependencies: @@ -15555,7 +15564,7 @@ packages: dev: false file:projects/arm-maintenance.tgz: - resolution: {integrity: sha512-NMBMN8cVxNQmIU0/QsY56YfmZ2wLVt4gd9n8l9q7dPrch5yetGVG2s4LbO0JKYDe+iKtiDcm+lVuooPyoAE4Jw==, tarball: file:projects/arm-maintenance.tgz} + resolution: {integrity: sha512-qIDxR1tsVfm2W7tfHdi3Sce6SRbOplArJATxPV7b5x1YuHPI2yC9ySD6xjS3KwVmopsv9WoHbClSyemMz3D0Ng==, tarball: file:projects/arm-maintenance.tgz} name: '@rush-temp/arm-maintenance' version: 0.0.0 dependencies: @@ -15583,7 +15592,7 @@ packages: dev: false file:projects/arm-managedapplications.tgz: - resolution: {integrity: sha512-3sFzypC8EnKWOb79+5h1356AyFcpaDj6+xKVfKIFK7yCGJHBMpHXqDTYKoFRjSavpKPv4wWJYux6PdiJlOJYog==, tarball: file:projects/arm-managedapplications.tgz} + resolution: {integrity: sha512-ErdSqJ6S9H3YQCPsA7oB9oGOd9oPi15Mf6Lo4Mas7kOLtftaK8Su1eo0fDL9GJguiyjoVZYxZiKzb37yJv0l6Q==, tarball: file:projects/arm-managedapplications.tgz} name: '@rush-temp/arm-managedapplications' version: 0.0.0 dependencies: @@ -15612,7 +15621,7 @@ packages: dev: false file:projects/arm-managednetworkfabric.tgz: - resolution: {integrity: sha512-n3VeQgbmt2Ozkl4k3q4YFrol/8TwRRu37JfC9v71agvrFiFJz3hotltcbBcfzHIkkCl7hx1BWWTlxM6zj7dWuw==, tarball: file:projects/arm-managednetworkfabric.tgz} + resolution: {integrity: sha512-rmEbnXMEWseMra0BtUyKuuGy0IcMzVOYFLY6b4o3AIYEaYh13lJN81j9FuiSMTwwddQibjZ0A9U9p22s9bGBug==, tarball: file:projects/arm-managednetworkfabric.tgz} name: '@rush-temp/arm-managednetworkfabric' version: 0.0.0 dependencies: @@ -15641,7 +15650,7 @@ packages: dev: false file:projects/arm-managementgroups.tgz: - resolution: {integrity: sha512-L5hRCit3TUT/Tqj/TyFCSWF7xWen5++tcTSxHSEYqJQbuozsn/uYXJEyo6/hMoOv+XxxcyeUpGtuvvFM54Vo7Q==, tarball: file:projects/arm-managementgroups.tgz} + resolution: {integrity: sha512-DLp2BEKt393CvjO9s251gZApTwBNY/u5phDcIcp+fsykOesrURBR++KwptJLr+zK0keR8PWokV9xnAI29E24gw==, tarball: file:projects/arm-managementgroups.tgz} name: '@rush-temp/arm-managementgroups' version: 0.0.0 dependencies: @@ -15669,7 +15678,7 @@ packages: dev: false file:projects/arm-managementpartner.tgz: - resolution: {integrity: sha512-4SX6WTBF0uApk17RIWchy7PR8DG26keNdrIt+517FOXCWVSEccyDHLz0MZoxcY4xcPP58guof8Q/6midUjgVTw==, tarball: file:projects/arm-managementpartner.tgz} + resolution: {integrity: sha512-B23igw0r9DSRfmtvPPl9ONu2vRqhrH8Se4YiNbx1/rzK+Kjajc2r9hylSTboqG0xPCURAzgGpFXjBPf2oEM0CA==, tarball: file:projects/arm-managementpartner.tgz} name: '@rush-temp/arm-managementpartner' version: 0.0.0 dependencies: @@ -15696,7 +15705,7 @@ packages: dev: false file:projects/arm-maps.tgz: - resolution: {integrity: sha512-3aWsjvTrd8p4IEmFGFEDb04luXyivpl7xsXz/iHi3xCqkqfsXe1RCBPLqra/9mrvaTI8ssNRs70ntqEEc/H+Dg==, tarball: file:projects/arm-maps.tgz} + resolution: {integrity: sha512-AresCccwjs30CHOyTtitbMbt7ZIzBR5s4+su9CocoKC1e/M5hbddj7eNLmfBcF8BBjGVM/TVYPrQeMbf5h5OTw==, tarball: file:projects/arm-maps.tgz} name: '@rush-temp/arm-maps' version: 0.0.0 dependencies: @@ -15723,7 +15732,7 @@ packages: dev: false file:projects/arm-mariadb.tgz: - resolution: {integrity: sha512-w+DKyqqb6WyY+7JKDsXeA/O4cLX7oUmBx/j+G4S0I7jmGSKgqS4isjeM6jiz9VDc1ssbA1GBj5rITjnw8ZlaEQ==, tarball: file:projects/arm-mariadb.tgz} + resolution: {integrity: sha512-KbX/2crTseMek9xE3D+0IGNH5zKueO2T/Mv+LjjcEhRDtEJSNUlUopPyoH+aIKPqLwWZuhGnFTLQVrPGvNCawQ==, tarball: file:projects/arm-mariadb.tgz} name: '@rush-temp/arm-mariadb' version: 0.0.0 dependencies: @@ -15751,7 +15760,7 @@ packages: dev: false file:projects/arm-marketplaceordering.tgz: - resolution: {integrity: sha512-bAmDJh2kmGtxYVVS3pUtVADCVMwZX5dDiUMp4qhTbPRXg0WSnRZ/SkLjQgwxkZufikggsfbxgJ+keSr194dmgg==, tarball: file:projects/arm-marketplaceordering.tgz} + resolution: {integrity: sha512-OScECZWmo+1d859gGBP/mIJNY37I2vRj8xzdHxOuKkJ84mwOfHmwIJTYYRrBxx05ZSN4HGD1w7k9aXTOLHPW3Q==, tarball: file:projects/arm-marketplaceordering.tgz} name: '@rush-temp/arm-marketplaceordering' version: 0.0.0 dependencies: @@ -15778,7 +15787,7 @@ packages: dev: false file:projects/arm-mediaservices.tgz: - resolution: {integrity: sha512-yYNWPjLI+eeAlxGYQkHbNdiMgstsU7WmsVrrDxygTB9TO+byHsIo4OS7dWe/1eG7x7/7NeJO8pSzANAt3bfTIQ==, tarball: file:projects/arm-mediaservices.tgz} + resolution: {integrity: sha512-JySrOKxC+S5baL36spEFacqlv2ozHSaPA7MvKiolp8kjdnqrfM2Jfny1ujXe9NP0wMaHiEO/EVjfoGUVtCsaBg==, tarball: file:projects/arm-mediaservices.tgz} name: '@rush-temp/arm-mediaservices' version: 0.0.0 dependencies: @@ -15807,7 +15816,7 @@ packages: dev: false file:projects/arm-migrate.tgz: - resolution: {integrity: sha512-Sz1gYqPWlVBAzvl7B+rVMwF96IKhBGnycGnXRITC9QXQ9wxR0tstZ/cE/c+7bmRVr6gYqgYEkYrnA6egU307lQ==, tarball: file:projects/arm-migrate.tgz} + resolution: {integrity: sha512-tHUwZEf/H1qUl2AdHI/wIHdfagTDiNO3nCWc3LRBX9uk+02hjnIU99KryLoqC2EHfHr8CyfPe8DFLyFNAJDtRA==, tarball: file:projects/arm-migrate.tgz} name: '@rush-temp/arm-migrate' version: 0.0.0 dependencies: @@ -15834,7 +15843,7 @@ packages: dev: false file:projects/arm-migrationdiscoverysap.tgz: - resolution: {integrity: sha512-j3GAQOKOEw3nAOoFSgc5wwxktauQdvTgZq9HwrSEUuN5p7D5/by3+lxktT3kGV79BAHU5TrPtkUqpm39jRA+3A==, tarball: file:projects/arm-migrationdiscoverysap.tgz} + resolution: {integrity: sha512-nGFhQbIpxQq2JzvKXLtNFqLlgAKf3POu3G7dW1U7zDVIrvfgsgpYicK69pzuB6OtnqsOUiS77eHBGiQhp5Lfaw==, tarball: file:projects/arm-migrationdiscoverysap.tgz} name: '@rush-temp/arm-migrationdiscoverysap' version: 0.0.0 dependencies: @@ -15863,7 +15872,7 @@ packages: dev: false file:projects/arm-mixedreality.tgz: - resolution: {integrity: sha512-v8t/ufJTZSUm9Uw66et8MnVO46yQ/s8010XCjnMUva3Q2wEHUsRTNfK2XX+l8GnVFI9RDYwhKfdeAq5RcKcswA==, tarball: file:projects/arm-mixedreality.tgz} + resolution: {integrity: sha512-04xwtfpLZe83rlFGYHs1KwHC556n5iicCRjGUpOKuheKyz2IyZJOg4ZLo5xLm0Mc78/k1/nOAmy2qROrrMtBDw==, tarball: file:projects/arm-mixedreality.tgz} name: '@rush-temp/arm-mixedreality' version: 0.0.0 dependencies: @@ -15889,7 +15898,7 @@ packages: dev: false file:projects/arm-mobilenetwork.tgz: - resolution: {integrity: sha512-MjCvLSwGs1UKRYuGqI5QVtkY8oMd228O6feyFGFhGinSHJNzrmwjXgzgLUsQIqXO3ascptBmLbUaPgCS29pH1A==, tarball: file:projects/arm-mobilenetwork.tgz} + resolution: {integrity: sha512-Nm0uca5c0zfmGIe4XcKzImvmybPy9N0bXcolhubUuZo5wItfVYjBj7KXDxdaNmdZOkr43JJRIVvjCfteeEIgBg==, tarball: file:projects/arm-mobilenetwork.tgz} name: '@rush-temp/arm-mobilenetwork' version: 0.0.0 dependencies: @@ -15918,8 +15927,43 @@ packages: - supports-color dev: false + file:projects/arm-mongocluster.tgz: + resolution: {integrity: sha512-ek+xIsndDYbi10jHCLcUgI6d0GT/tBOScv2lj30H0jQxkyr7awwxyzyulcLJamAXc+OaUWBVmK1/9myWTAj+wg==, tarball: file:projects/arm-mongocluster.tgz} + name: '@rush-temp/arm-mongocluster' + version: 0.0.0 + dependencies: + '@microsoft/api-extractor': 7.47.0(@types/node@18.19.39) + '@types/node': 18.19.39 + '@vitest/browser': 1.6.0(playwright@1.45.0)(vitest@1.6.0) + '@vitest/coverage-istanbul': 1.6.0(vitest@1.6.0) + dotenv: 16.4.5 + eslint: 8.57.0 + mkdirp: 3.0.1 + playwright: 1.45.0 + prettier: 3.3.2 + rimraf: 5.0.7 + tshy: 1.17.0 + tslib: 2.6.3 + typescript: 5.4.5 + vitest: 1.6.0(@types/node@18.19.39)(@vitest/browser@1.6.0) + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@vitest/ui' + - happy-dom + - jsdom + - less + - lightningcss + - safaridriver + - sass + - stylus + - sugarss + - supports-color + - terser + - webdriverio + dev: false + file:projects/arm-monitor-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-wNWdOKaxVliOzsJBmVe0T+xUzfdciJAZxCmqbf/Rw+IMlb8P3WuDo3Wt3xIThzYrb7Hvalj1Qfga+0B0rr403g==, tarball: file:projects/arm-monitor-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-TDcMUZWmV+fd5irv7mhg+OHTlr2r8k2lXC4PtT5i8Dde31I6Pkyf7qpuyk7su0+7XEM0hQHKZ2DIIpbAVxKjZg==, tarball: file:projects/arm-monitor-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-monitor-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -15946,7 +15990,7 @@ packages: dev: false file:projects/arm-monitor.tgz: - resolution: {integrity: sha512-ZZ080bTrKyUQJ4qi81+2oiZhfqdIKsEs70CQG2YhadeIQI9PNdjTcJO98F8BvS2+TRgyl990Me+QZwA4xWtrEg==, tarball: file:projects/arm-monitor.tgz} + resolution: {integrity: sha512-Wh5mRUMLH7F2kNqAyUM4QhW12dOQM7gaYv/XLBcd7iX6UfutwfKX4oBgf/KX5dz8SfoJnIJPrLQupHr5hLXNdQ==, tarball: file:projects/arm-monitor.tgz} name: '@rush-temp/arm-monitor' version: 0.0.0 dependencies: @@ -15975,7 +16019,7 @@ packages: dev: false file:projects/arm-msi.tgz: - resolution: {integrity: sha512-hTxO6RGhc/crgrUtDhHHz0QxuwpmiZeCCpei0DAu2W8EPxQFkBFM5MG8SqHEbfH96ZNPVzD7crQp0ndQY+a7uw==, tarball: file:projects/arm-msi.tgz} + resolution: {integrity: sha512-qOpId4qG4VAC8pokhwAKKxePY3VzK1ZVlYTjNXlLGWB8pSiDkXnATU7VfsxoPcbf9u3tDOtGZi6C9KDZgqArQQ==, tarball: file:projects/arm-msi.tgz} name: '@rush-temp/arm-msi' version: 0.0.0 dependencies: @@ -16002,7 +16046,7 @@ packages: dev: false file:projects/arm-mysql-flexible.tgz: - resolution: {integrity: sha512-5N0pSrAluWvJu33odnfbCpa7YMpyX8AB5DvqQSBZG4/2NsEHbwdTaL8StIXCcdSF0WYYBN6LYjNHewivZHngZA==, tarball: file:projects/arm-mysql-flexible.tgz} + resolution: {integrity: sha512-zSrLDYdDcLW/BpAWgtxbLC2l0vWwumAK8BNrdnSwO4iYtqjzGE7j/zqyJZoBhF91rX6z/3gsKJ0PMRmLN8x3zw==, tarball: file:projects/arm-mysql-flexible.tgz} name: '@rush-temp/arm-mysql-flexible' version: 0.0.0 dependencies: @@ -16032,7 +16076,7 @@ packages: dev: false file:projects/arm-mysql.tgz: - resolution: {integrity: sha512-KCeIeAILcD0RiyZq7Dxvv5ibAfAypQRQgPyskUB+m/qdMlPQnJhM3XPaTKCPDrmus+CDNvzceYngigVIQRMNKg==, tarball: file:projects/arm-mysql.tgz} + resolution: {integrity: sha512-mTeeuZ1iZwO8whwxDsXKQu42nOBoqjZpktLimcPP/lq4EZW0SJmQDdbBJdxX/FzNaCB0ku5ugQHJqFLbiS9/Lg==, tarball: file:projects/arm-mysql.tgz} name: '@rush-temp/arm-mysql' version: 0.0.0 dependencies: @@ -16060,7 +16104,7 @@ packages: dev: false file:projects/arm-netapp.tgz: - resolution: {integrity: sha512-19coMNHPKcw1TNpNHeDkJ49TP/m/uC3DQNCP2NR6jCb6/4tXDUsnYcUkjRCkU9kuEHi2RJNf27cF3pJTS1nZ6Q==, tarball: file:projects/arm-netapp.tgz} + resolution: {integrity: sha512-LTC4OcbKMwhCI48qRtXJ7ZneaSKGE3fQu4BMbwp0HLTBQ24EX1eLzHfnYGQ5MfzBIsAjwS3x2LVwoHO7zjaxbw==, tarball: file:projects/arm-netapp.tgz} name: '@rush-temp/arm-netapp' version: 0.0.0 dependencies: @@ -16090,7 +16134,7 @@ packages: dev: false file:projects/arm-network-1.tgz: - resolution: {integrity: sha512-vN9IB4RR2fUziN1jvC9F6hBEMdYADaAKFPMblUVajQqVUAIsGBEsasuprZ9B86plh7b6fQNC3TF8KB7OOjSWzg==, tarball: file:projects/arm-network-1.tgz} + resolution: {integrity: sha512-jze1hCEG+kV2OLwHBlP9aRHGEgsL8Nu4ATcBO3OV+qOgK6EQQav3+y8NmoQ9eoJxbvrEU9ckqSWfHIgrTCPCJQ==, tarball: file:projects/arm-network-1.tgz} name: '@rush-temp/arm-network-1' version: 0.0.0 dependencies: @@ -16120,7 +16164,7 @@ packages: dev: false file:projects/arm-network-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-RELABYXbVQl1abAk5nxGjsYpa8uicTDPOUDVNtiDZJVsDS1kij7bCqsR0jcxnD4Ifdvf9RehEuyNuHEMX/nArQ==, tarball: file:projects/arm-network-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-OOhjHujNoEgt1EPa5JnwIegkKSVlh1zu4MgDe+CcCZ8yTjduwrtJQyb6Mu6G7ijLrMGtRvaYS/7Wta4J5mTWIQ==, tarball: file:projects/arm-network-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-network-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -16149,7 +16193,7 @@ packages: dev: false file:projects/arm-network.tgz: - resolution: {integrity: sha512-eQHP8IQhv1YJFG8qEf79Mp6dy/wdGUdath54ehYt1mo20Z4EgiWk3w+BwfxfcfMJ2y5sfrite9mDU+cqCpzvDg==, tarball: file:projects/arm-network.tgz} + resolution: {integrity: sha512-vOA2VCY/em9VKCPioLDk9SLVRQeq0pZx2b3LsEifxeQM9EuzoGc7YBzdQxSURwm0Bm2A/LBYOTPD4EKPFiXATw==, tarball: file:projects/arm-network.tgz} name: '@rush-temp/arm-network' version: 0.0.0 dependencies: @@ -16194,7 +16238,7 @@ packages: dev: false file:projects/arm-networkanalytics.tgz: - resolution: {integrity: sha512-WMcXFpbOmUjWndQBHXko7omh64v9Njhf73TyInZFhMoFBfdJs4+MrO59Cki4c2FNxpNMIOlAvjsJmcpFCH0b5w==, tarball: file:projects/arm-networkanalytics.tgz} + resolution: {integrity: sha512-6cv35BUP2LOU6vh97jz2LAO/tgDlzz4nGcYSKcFSyl393EyTnN9IPFI9pG/RGLknj1dQa8gQvFexCZs0CcJ9kA==, tarball: file:projects/arm-networkanalytics.tgz} name: '@rush-temp/arm-networkanalytics' version: 0.0.0 dependencies: @@ -16223,7 +16267,7 @@ packages: dev: false file:projects/arm-networkcloud.tgz: - resolution: {integrity: sha512-y1JKCMBPFTuzG09ZkkFqvUy4isZ5SJAVVfRlIgxpU5EbDE5W0jyYlDVrrUSgtmb1wrEAG3H6ou1qSXZILJxT3A==, tarball: file:projects/arm-networkcloud.tgz} + resolution: {integrity: sha512-t/ImKh9WXALka7igXsEF138jv2Ca0xjlKh2imZ6GLUE3Rh5m9lSb7SdFEw7ltzjt6GkUw1NLLNnf4A3amCuuKw==, tarball: file:projects/arm-networkcloud.tgz} name: '@rush-temp/arm-networkcloud' version: 0.0.0 dependencies: @@ -16252,7 +16296,7 @@ packages: dev: false file:projects/arm-networkfunction.tgz: - resolution: {integrity: sha512-N/gTftZ7krOLLKLRonjO0lg/uQolyDq1TQQYRM4SLefI4Utr2dy4JZXHbKK/3SJLhIdDsz+hiVkAYEv+9fsdgg==, tarball: file:projects/arm-networkfunction.tgz} + resolution: {integrity: sha512-wVsX4WTOE2A1AtGb9imYPapa6zd5W3R/sfoe0/aSL8f6ZQuYgZjDQD46IY/WLJvi+/YyvB9qmHe2p2eEQX9qLg==, tarball: file:projects/arm-networkfunction.tgz} name: '@rush-temp/arm-networkfunction' version: 0.0.0 dependencies: @@ -16280,7 +16324,7 @@ packages: dev: false file:projects/arm-newrelicobservability.tgz: - resolution: {integrity: sha512-OBQm4GIT9c4l1yRm6LrGYneDsGYX/K/HqhDEog4vOXX/x8g7j9oiWrdABXBOAtoFsvb7oGC9hceV2SYhhFIU1w==, tarball: file:projects/arm-newrelicobservability.tgz} + resolution: {integrity: sha512-HjdnxvOJLA9b1A/EfIweyAmG/MIWft9IPvP6gJsX9kCMrgxyp+Z0o0YzL8K35+7t0wz6Zmvg3qkeqnNiARfWNA==, tarball: file:projects/arm-newrelicobservability.tgz} name: '@rush-temp/arm-newrelicobservability' version: 0.0.0 dependencies: @@ -16309,7 +16353,7 @@ packages: dev: false file:projects/arm-nginx.tgz: - resolution: {integrity: sha512-wFGM2Uc9WxkthUnVreHzzHD/61aFHQhOHxtReQDT/uqJaJ6Y0NufDpGRW3+T+d9fyJfA4EQKSngmf8yECM2cfw==, tarball: file:projects/arm-nginx.tgz} + resolution: {integrity: sha512-2dvVCei+K5dcM987Y2+WGg9nb8Zhmi+Ro+AlHUXY6NP9EaVe5xfMk/ItH9ohD5IloehWRzD7RuYHmKQwpQzmqg==, tarball: file:projects/arm-nginx.tgz} name: '@rush-temp/arm-nginx' version: 0.0.0 dependencies: @@ -16338,7 +16382,7 @@ packages: dev: false file:projects/arm-notificationhubs.tgz: - resolution: {integrity: sha512-eIrnxn86oYlBiZEWdNiwSkpBKruF2mfXZ8MbXF3BZp2YcMYXwC+TkNnbojL7+nxFpwS6KLnPq4tUx4Qt/lGLQg==, tarball: file:projects/arm-notificationhubs.tgz} + resolution: {integrity: sha512-1YgZxsmOyz2KHmCmbDeGH+eMHn3cNi5qAFVHAKCk+PyC2uob2TRBAkSbGAZaSmCIeWNQzu50JUkbe+Sf3dMzJg==, tarball: file:projects/arm-notificationhubs.tgz} name: '@rush-temp/arm-notificationhubs' version: 0.0.0 dependencies: @@ -16367,7 +16411,7 @@ packages: dev: false file:projects/arm-oep.tgz: - resolution: {integrity: sha512-knWWg2Swlyt1KPXGkKSW+vidSuc8UlRwD3lEf4O2uKv5m6MHDKA2web9PmGdhZUrxcf7+gIjZm0aOQ26dQ46Aw==, tarball: file:projects/arm-oep.tgz} + resolution: {integrity: sha512-LJDxAMF8LZkNgDE/kL9xKNd8y+h6fT0CtIgX+xDAGXDsGl2/h6pWRT/fGrF5sAUgo8HPaYfbZkcBfNAdGhusEQ==, tarball: file:projects/arm-oep.tgz} name: '@rush-temp/arm-oep' version: 0.0.0 dependencies: @@ -16395,7 +16439,7 @@ packages: dev: false file:projects/arm-operationalinsights.tgz: - resolution: {integrity: sha512-3utiKsX1hqzOfUQpBdDbl+5Z/CLona9vlI+UTdHRH6NM1kBKAWfrF+uMBgF/Obvlst9J64Ep2tVAgQSeOf3EhQ==, tarball: file:projects/arm-operationalinsights.tgz} + resolution: {integrity: sha512-vTExrvoycpkXUviooqsENBrLC7lOF9wKyS+59wlzOjJYqiOJNw4GCptK07/FjDHGJSLWULWhOPCwj/WOZJz9tw==, tarball: file:projects/arm-operationalinsights.tgz} name: '@rush-temp/arm-operationalinsights' version: 0.0.0 dependencies: @@ -16424,7 +16468,7 @@ packages: dev: false file:projects/arm-operations.tgz: - resolution: {integrity: sha512-rTgiE6HYMwf1zONRMiM3JzRoqvaKRV29r0PCNOe3g9aK8g4btVFnRxa06oUK81clwUaGndws1tTD+ENojHDZMw==, tarball: file:projects/arm-operations.tgz} + resolution: {integrity: sha512-h7sXNL371Yvic7oNqZYS8UzXJJ76+4f/aiqrkX+lbeXpXwn0XHrA+au+1ZjVM15iDMRgflWiEPqlDILfsjRCJQ==, tarball: file:projects/arm-operations.tgz} name: '@rush-temp/arm-operations' version: 0.0.0 dependencies: @@ -16452,7 +16496,7 @@ packages: dev: false file:projects/arm-oracledatabase.tgz: - resolution: {integrity: sha512-GYdRSEME/qNQBJP9BWYlBFDKKHaALLbuRYtfw+JTE/k0jUg3ceMJVafgtemcU1D6QZspDO+3ctgAET8RK+tBtw==, tarball: file:projects/arm-oracledatabase.tgz} + resolution: {integrity: sha512-2lTXWuyxPX66XDLfyOQJbqrdguRCrxIW+pPbhukUDawSGJCTF67gRtOZ5mLx3xo9bnZa672juP7YyO7V8Op8ZA==, tarball: file:projects/arm-oracledatabase.tgz} name: '@rush-temp/arm-oracledatabase' version: 0.0.0 dependencies: @@ -16482,7 +16526,7 @@ packages: dev: false file:projects/arm-orbital.tgz: - resolution: {integrity: sha512-xUq/1zdCMXbiHQ4/nxwYMVkTMp93ptsJ9ZzHgZWtxgQW+aWprXY9PTYjZlJI0wFCE1qBXdG96PctX/yQXIRhBQ==, tarball: file:projects/arm-orbital.tgz} + resolution: {integrity: sha512-ZkKu8369Qc3hjlkq3G4+ecB31zWz0p7w6zO/tNlqzJrRQFmbOfycaX4LrUYDhTZ0lUW2PMhqzjy5XN4ZfQVmMA==, tarball: file:projects/arm-orbital.tgz} name: '@rush-temp/arm-orbital' version: 0.0.0 dependencies: @@ -16511,7 +16555,7 @@ packages: dev: false file:projects/arm-paloaltonetworksngfw.tgz: - resolution: {integrity: sha512-59ajUKeipIz7tNmKHIQHJkbaI+Bny8ZA+LItsbyW48RnAVNJ6i2tbGyu6xFYIIfefIyaB/7wGYsFo73EiMjW4w==, tarball: file:projects/arm-paloaltonetworksngfw.tgz} + resolution: {integrity: sha512-SAwUdnRWwM9CbBiR+pjbGc0glhZhsERc3gvUFtGG1kAyOjijD0zZTpUY3N4xEaFksI1VAEeKwMWRzwL0Tr6NIA==, tarball: file:projects/arm-paloaltonetworksngfw.tgz} name: '@rush-temp/arm-paloaltonetworksngfw' version: 0.0.0 dependencies: @@ -16540,7 +16584,7 @@ packages: dev: false file:projects/arm-peering.tgz: - resolution: {integrity: sha512-9b0PWJFJs61WiLC35PG6XoVXh2aa6oUTN9++ARruzTCZCUBTEAh2C70x4OO/AnN3pbsn5wNKI0QwmcykygLDWg==, tarball: file:projects/arm-peering.tgz} + resolution: {integrity: sha512-1tC6f55xBiNeiO3mYByUxfon3mpPAqE5aPg8pQDW5T1WCtBeSuar0JgCxHPsxXHAI44tQ+Xi6g3vPMXgO0L1MQ==, tarball: file:projects/arm-peering.tgz} name: '@rush-temp/arm-peering' version: 0.0.0 dependencies: @@ -16566,7 +16610,7 @@ packages: dev: false file:projects/arm-playwrighttesting.tgz: - resolution: {integrity: sha512-zfWQ8KyadABPci2E6u87Lb7UA6d537G20DgRBM2cUV/LAoXGhw86G4kYvLwcxTKi3FAkOr5tEuUYtAJNTjqhkw==, tarball: file:projects/arm-playwrighttesting.tgz} + resolution: {integrity: sha512-+iQhcenHUtsr/Hvhb/ubIkqWJqDk4HFVd5IT1zvsDNF/qojZa+2/KqfzrlkxASYIjYzQHQJx1UXPS7Kd6Wt3Aw==, tarball: file:projects/arm-playwrighttesting.tgz} name: '@rush-temp/arm-playwrighttesting' version: 0.0.0 dependencies: @@ -16595,7 +16639,7 @@ packages: dev: false file:projects/arm-policy-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-CoEZnXIMK+UvW+dKbvtxJVFN0XCDLsrmo2FTjrviYa/nrEBb3dKWZq/4/sN1CfF7xo/WTB/UnSUd+YViVMb0xQ==, tarball: file:projects/arm-policy-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-/WCCpiHKI0MmMTMjzQP+eOg/f844z0zQGhhsUbgPixZA6zc+g3dz+UV+yBy7q3UjQlaU8kMaoM3sySclHCwdyg==, tarball: file:projects/arm-policy-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-policy-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -16622,7 +16666,7 @@ packages: dev: false file:projects/arm-policy.tgz: - resolution: {integrity: sha512-+G7SOAV6fHEXFs0lNudPUJ1uFJp/CCrR4NMgyHgfGCRKHdLrkZ0kpb/nMQhJNGYJe6RCtw83LM154TzvVWZyfg==, tarball: file:projects/arm-policy.tgz} + resolution: {integrity: sha512-kSUDqQflpAnZTlP1sbG+ZfwIWRK8DInvcNWXomF4voH+OeI1u6G16s9mPT5RRA/QJ0JVNEjOmHDCks5+lgQaig==, tarball: file:projects/arm-policy.tgz} name: '@rush-temp/arm-policy' version: 0.0.0 dependencies: @@ -16649,7 +16693,7 @@ packages: dev: false file:projects/arm-policyinsights.tgz: - resolution: {integrity: sha512-mTp57SBL4f17Omj7Ig14fsHpnfAb5BfR1HvfUUGGw+8srG4MHsJOO4A+/ygoWio61CUfi6MbIfzHXiU2nlHoow==, tarball: file:projects/arm-policyinsights.tgz} + resolution: {integrity: sha512-WtnMUKw8OpxMPUzvXXBX7lGySyhZMTNSZ6UrExWJWbLEl2AxyWFIdEEYZ4d2NOZNZXUL5vMweL2ql4b8kwK5QQ==, tarball: file:projects/arm-policyinsights.tgz} name: '@rush-temp/arm-policyinsights' version: 0.0.0 dependencies: @@ -16678,7 +16722,7 @@ packages: dev: false file:projects/arm-portal.tgz: - resolution: {integrity: sha512-cUjK1qUOV/CXGKbSZ+gDtDykg1tPus2kXqC8Uyh17Aq2eCUzrtSMeTZDhIVMSbBb8Ovdpfe7mIY7lj6Zvg0lug==, tarball: file:projects/arm-portal.tgz} + resolution: {integrity: sha512-+qlDdkEWsAT4+0S8Mh+gTxFvX8JRbi0IeTWhZkL1aagwq/wv88s2s/VWKfNOxFHR/l9hynIhaMLAI1YvLz97UQ==, tarball: file:projects/arm-portal.tgz} name: '@rush-temp/arm-portal' version: 0.0.0 dependencies: @@ -16705,7 +16749,7 @@ packages: dev: false file:projects/arm-postgresql-flexible.tgz: - resolution: {integrity: sha512-zTu+2rwZOEFzSycqDcfDXTb2nM67m3c6KP9cNs0s7tKWgprE6Ax+Nk3DClZUC0LDkQ8WyKBt7v0L9bmEbCA46A==, tarball: file:projects/arm-postgresql-flexible.tgz} + resolution: {integrity: sha512-WZnhcUqmvpIFOlUIqEDgWItjOvl94w1x4PEqrlNgHEw2sofpiIAH7/3E/UzEmW+YvUsOKy3aSRa+zIotJWFLzA==, tarball: file:projects/arm-postgresql-flexible.tgz} name: '@rush-temp/arm-postgresql-flexible' version: 0.0.0 dependencies: @@ -16734,7 +16778,7 @@ packages: dev: false file:projects/arm-postgresql.tgz: - resolution: {integrity: sha512-94ZoVbD1WzROHpT3wvDYLYWqeqclS77umkCZEIHUEFcuOfwrOdXXPvc8PvPxPaBhgYeVObpSwC4QsOWiSNT7SQ==, tarball: file:projects/arm-postgresql.tgz} + resolution: {integrity: sha512-jeHOhN2byFYESfd4eO6DdxxYXwfrbDxn9Q0AhUeuEzMdLx2t0hs1oCrv3leoHHZGwogqob0E14UW55ScauAq6A==, tarball: file:projects/arm-postgresql.tgz} name: '@rush-temp/arm-postgresql' version: 0.0.0 dependencies: @@ -16762,7 +16806,7 @@ packages: dev: false file:projects/arm-powerbidedicated.tgz: - resolution: {integrity: sha512-dszh/du0wV/iKJckDRKOmx3XLbcEOkeZ4uNXtH5mTu3f+lr+W0pI0/8GaPM21u+kXTiMymbb3X1NZpbc5bXjDQ==, tarball: file:projects/arm-powerbidedicated.tgz} + resolution: {integrity: sha512-1y8t/+eqkTQSsJu0hGeJVDVv3AuUkdJfoMRrQ2tiOhVgm6w4nr4dW08Bh+YjGHakXlB3GNGOYhcjVCtClpf/1Q==, tarball: file:projects/arm-powerbidedicated.tgz} name: '@rush-temp/arm-powerbidedicated' version: 0.0.0 dependencies: @@ -16791,7 +16835,7 @@ packages: dev: false file:projects/arm-powerbiembedded.tgz: - resolution: {integrity: sha512-BCU44wxk0RY5PmkQImCnaMuf91RDtsx7nACHPZ8C3eKpCvh+sZ7Le0BD7VKtbHIaqO0jYDODkW5lQ6vUpbZLzA==, tarball: file:projects/arm-powerbiembedded.tgz} + resolution: {integrity: sha512-UcOPNMRhTFQMLiTSlQdy2K748QHveU7L0q+ctfWKX7iUwzMOI9unt1tOTwEzvB7QiJnxPuXS0B6FLks37pjHog==, tarball: file:projects/arm-powerbiembedded.tgz} name: '@rush-temp/arm-powerbiembedded' version: 0.0.0 dependencies: @@ -16819,7 +16863,7 @@ packages: dev: false file:projects/arm-privatedns.tgz: - resolution: {integrity: sha512-WX+Cu4DFmujP3hoKhoWHhZjHfM1fq0DWB21KJeTLm12SqnpkopfjAob6cWNG6E9XDAE7IaWgjgVAUP22wNnkJw==, tarball: file:projects/arm-privatedns.tgz} + resolution: {integrity: sha512-EqBgKlJvvCuzZjeHf4EfrNUJDL0nRhYGhFw9+RdVP2uykpm52R0fUrjNx8dG0x3XBm7CbI8vQN76UEZhgdbcmw==, tarball: file:projects/arm-privatedns.tgz} name: '@rush-temp/arm-privatedns' version: 0.0.0 dependencies: @@ -16848,7 +16892,7 @@ packages: dev: false file:projects/arm-purview.tgz: - resolution: {integrity: sha512-4xpEPRtod6BnqZewbvcldzj9RnlLwDntceE50od7JSKkispWLPeWK6s6/gc//99V73aDWUBaSnMVwfNxKtXULQ==, tarball: file:projects/arm-purview.tgz} + resolution: {integrity: sha512-GkBxkqU1xsKwvgeWs+fcyRWbgSHoO15GTc7uw5h8vjmn7fHlukN8af1YeDze4C7bYaNJnVYLZRR4UScRPSlZJQ==, tarball: file:projects/arm-purview.tgz} name: '@rush-temp/arm-purview' version: 0.0.0 dependencies: @@ -16876,7 +16920,7 @@ packages: dev: false file:projects/arm-quantum.tgz: - resolution: {integrity: sha512-+zWhOB9Nn4DslZMZPxMrl7Ldd57F6Tkshif1B7V553UOScnmYp7w8BNhzIT9Zv1zSfoEizRGkEueS5coynaJZA==, tarball: file:projects/arm-quantum.tgz} + resolution: {integrity: sha512-/dbWf6xqg1f1lhiwyCXbqz/P2NpGGR4CbgBS2DixmFzlIX4rzoKt+Hgi2+Ik9rR0uQImUJcBXuPByBQgecmdAA==, tarball: file:projects/arm-quantum.tgz} name: '@rush-temp/arm-quantum' version: 0.0.0 dependencies: @@ -16905,7 +16949,7 @@ packages: dev: false file:projects/arm-qumulo.tgz: - resolution: {integrity: sha512-EAy42pn8A3GODPP/Ge25FYY5X6VOMv/N4ZfqlVZ2npwf9w//Ayed1FtEA0tp+j9T3qd7T/wvxzol54PRuTVDKQ==, tarball: file:projects/arm-qumulo.tgz} + resolution: {integrity: sha512-k740LG0yzBENHpIMcu2a+pvnPHtZBdRHrVlkp6z7V3HVJC89Nc1MtXTggBRNkVI3YmFwt3j4SvT/fji+DbXpVA==, tarball: file:projects/arm-qumulo.tgz} name: '@rush-temp/arm-qumulo' version: 0.0.0 dependencies: @@ -16934,7 +16978,7 @@ packages: dev: false file:projects/arm-quota.tgz: - resolution: {integrity: sha512-MaqWpvbB7zsqZe3nOZ0gNMgov0BSCbRprd+HHMLSoTRjJfI1PYh99sfG6ohJoJfZjyOrPhZm31yrie9ikvY2DA==, tarball: file:projects/arm-quota.tgz} + resolution: {integrity: sha512-jnrnMwbqx0jbsCDbHp5mER3jV6ueDeq/8ENvFeMwi2eJuwxV0EhBNSThu2vdzHLSYdyuAgpuUAXhysHUefqieg==, tarball: file:projects/arm-quota.tgz} name: '@rush-temp/arm-quota' version: 0.0.0 dependencies: @@ -16963,7 +17007,7 @@ packages: dev: false file:projects/arm-recoveryservices-siterecovery.tgz: - resolution: {integrity: sha512-ti25FZfgCkc77rk3HYDhLuEdJJwSBQ0/zPbra/pDa7r7it9Ccb9v8SBorShyvcCgdLfY7ENU+l0Q5hFyBH9l8w==, tarball: file:projects/arm-recoveryservices-siterecovery.tgz} + resolution: {integrity: sha512-b4t6aJuLlGwNZ0qChHGOeXKN+Jw0yyUd6gbS2u9vgy95X34Y9hvT5IJaGGRet4gb6UWdP8IdBM6jSALIJRCt0w==, tarball: file:projects/arm-recoveryservices-siterecovery.tgz} name: '@rush-temp/arm-recoveryservices-siterecovery' version: 0.0.0 dependencies: @@ -16992,7 +17036,7 @@ packages: dev: false file:projects/arm-recoveryservices.tgz: - resolution: {integrity: sha512-UdQEX8oLC5B+21UsarKGr/nzwk+jIzNdl0xnTL94Blym3LC7vpWH/d/Z8Jp62CzfKzmCrCusb5qAjCkODCNP1w==, tarball: file:projects/arm-recoveryservices.tgz} + resolution: {integrity: sha512-WEg0vmrOdGZiBjUa+Z6g0AEf1xx6Vlr56TxToLbDPuuWFHZDYBRIFLh0vZfTWDa4eSx/BZJsAzbjYycLTfEEyw==, tarball: file:projects/arm-recoveryservices.tgz} name: '@rush-temp/arm-recoveryservices' version: 0.0.0 dependencies: @@ -17022,7 +17066,7 @@ packages: dev: false file:projects/arm-recoveryservicesbackup.tgz: - resolution: {integrity: sha512-w25gT590pc1tLogB63hB8Zd2F+h7PMvZKqtxTL8Vft/VZphI0Ma6NGJxm2xzACsxFhNBcATRG1wsMeHzaV5wHA==, tarball: file:projects/arm-recoveryservicesbackup.tgz} + resolution: {integrity: sha512-GOEMl1ZXsiJZkr2ruNs8x06ZZl950xi2vgKaKQ30eFmNvyI3rJ6g7iwZsZGEcU2G/gs65thvO6VOdmWQryYOLQ==, tarball: file:projects/arm-recoveryservicesbackup.tgz} name: '@rush-temp/arm-recoveryservicesbackup' version: 0.0.0 dependencies: @@ -17053,7 +17097,7 @@ packages: dev: false file:projects/arm-recoveryservicesdatareplication.tgz: - resolution: {integrity: sha512-2+Z+i1RpIRS2tJFn8/G1IRTbXwDjruAtET2yCBFDufHp+VjNfeJh/mcymVbaIXtpGweWsJ+HZ4wkwIPm7Ug9PA==, tarball: file:projects/arm-recoveryservicesdatareplication.tgz} + resolution: {integrity: sha512-dEcrmbz/a6hZBOGcigMz0OYdOQdyIMf4DfFPL5duQ6bgkxZpH1J4YTuWzakbtbcBwXv2qDc0s2UqSLHyhy4lRA==, tarball: file:projects/arm-recoveryservicesdatareplication.tgz} name: '@rush-temp/arm-recoveryservicesdatareplication' version: 0.0.0 dependencies: @@ -17082,7 +17126,7 @@ packages: dev: false file:projects/arm-rediscache.tgz: - resolution: {integrity: sha512-ovHdUpIXMqY/obr09jQaP4teeZIzYqKhAeXqeQMitEL88PivaIehI4r+d/WgSfx9gF/5FWmyM8NLwPFIj+kw1A==, tarball: file:projects/arm-rediscache.tgz} + resolution: {integrity: sha512-0tpb/V28r+28I0jh3MmGTtPPn3O1amtqUbG505fEptNGAa6LLTpP3JxSkS0K+FgmIt85i2v6M84k/Wj4sR9WtA==, tarball: file:projects/arm-rediscache.tgz} name: '@rush-temp/arm-rediscache' version: 0.0.0 dependencies: @@ -17112,7 +17156,7 @@ packages: dev: false file:projects/arm-redisenterprisecache.tgz: - resolution: {integrity: sha512-oXySL86VTVRf3KogrwetkE/Jla1XrVxDD7Z8GRgIZkV9QrtGUgORG7P6hF8GE2ImRID0fU7zY28JxKHgb2hzng==, tarball: file:projects/arm-redisenterprisecache.tgz} + resolution: {integrity: sha512-jY/E0hCAAADYBlybdL1gIvuaRzBvMhsAHn8MGSEkci4DqDriTAESBc3EsRh8Nu7oz/rcf/QsoT7CEpQrBMPy1g==, tarball: file:projects/arm-redisenterprisecache.tgz} name: '@rush-temp/arm-redisenterprisecache' version: 0.0.0 dependencies: @@ -17141,7 +17185,7 @@ packages: dev: false file:projects/arm-relay.tgz: - resolution: {integrity: sha512-A5fqNVfnjRzucuk0Qsx6nSS3ovZ1qH8b9ipCpEtu0qKck1qktLuhj+4z5FbAfPWPNIaCRlbWOgXgK9vldo+r2A==, tarball: file:projects/arm-relay.tgz} + resolution: {integrity: sha512-QRwDYP/ORejhr9n2kKmgpndWSPdQS2DN+jWaUaLIeE/wLrY/0zwh0HSdiF0GiSXMcotHSc+0jLdw7kl/HPFElA==, tarball: file:projects/arm-relay.tgz} name: '@rush-temp/arm-relay' version: 0.0.0 dependencies: @@ -17170,7 +17214,7 @@ packages: dev: false file:projects/arm-reservations.tgz: - resolution: {integrity: sha512-skGUvYyWUJvroE5ubHZL02IhTA90jcJQ+vvX+IiqXxwqHmLbh34CUtOCZxvC/SQLRwsKItJtjvVOlxoEajnWhg==, tarball: file:projects/arm-reservations.tgz} + resolution: {integrity: sha512-IVAPfqK/g3rLbDzh6n3Ps/9OAZCnOffvrr+EaQoXuofw6Th26ccUuNqrR/zb92dw1ZmNtmVwk1yHVwNwEldh3g==, tarball: file:projects/arm-reservations.tgz} name: '@rush-temp/arm-reservations' version: 0.0.0 dependencies: @@ -17199,7 +17243,7 @@ packages: dev: false file:projects/arm-resourceconnector.tgz: - resolution: {integrity: sha512-VLL2CPpn3ATkG/7vd0a8ZJPnxtlVRRQapAEJmTBEL+6Tg/WiqTrNGOWnzoTc+HQP+kEa56SrFuExva/5OUosgQ==, tarball: file:projects/arm-resourceconnector.tgz} + resolution: {integrity: sha512-MJV24iqqP6ZZz6HeHLF7yhLjpOZWPHxk3jNG3PgejzP64a011hmVTNe2tf0GCvzzPFPQvNQiDwxrq9r12I0Lwg==, tarball: file:projects/arm-resourceconnector.tgz} name: '@rush-temp/arm-resourceconnector' version: 0.0.0 dependencies: @@ -17228,7 +17272,7 @@ packages: dev: false file:projects/arm-resourcegraph.tgz: - resolution: {integrity: sha512-p2EQW4TcQnI3f0QrYLWaW73WnVi5l1KFaW95ITpp7LBXD1pSbYEhhApP35eWVONCvsz/VuKzHAnejdxjQ6gP5w==, tarball: file:projects/arm-resourcegraph.tgz} + resolution: {integrity: sha512-uMbmAKDOqV290MdGbGcrmdGCxOrQFnTHVStrtGg5W2vZTgUmctnFGwRirzgx1XSK6KpFe+mzPwcX6MDB50xkrw==, tarball: file:projects/arm-resourcegraph.tgz} name: '@rush-temp/arm-resourcegraph' version: 0.0.0 dependencies: @@ -17254,7 +17298,7 @@ packages: dev: false file:projects/arm-resourcehealth.tgz: - resolution: {integrity: sha512-c/F/8nAPHRS/VhMwul0NHTtLDGGSNUYwF7HNcpxPxGUm9X4KeWTD2nFJJhSOtr5awatrEIjFPuaaXh9YuWuD5w==, tarball: file:projects/arm-resourcehealth.tgz} + resolution: {integrity: sha512-JBy35VTbAWRet0F2CUF+eJHFxGP6UHr2B05qgtEj75WKiXciyuNm0D1FVsvXwmMS7oP73jLLd6a40LMPwLVQ+Q==, tarball: file:projects/arm-resourcehealth.tgz} name: '@rush-temp/arm-resourcehealth' version: 0.0.0 dependencies: @@ -17281,7 +17325,7 @@ packages: dev: false file:projects/arm-resourcemover.tgz: - resolution: {integrity: sha512-iCjCMi1yR+BJ4cG6EN+B2QBWqsdgg7/ia3VqSsLM3gL33EJdeE2VlVjHyYeOMzb1yXn/G2WBjHJDSk+BLplXcQ==, tarball: file:projects/arm-resourcemover.tgz} + resolution: {integrity: sha512-WtC17pNqPtngET7s+Ns2wzorRgq0p4ofoTB1FBlJ3OQLzwrLUbhSwaZQVNIitqXsD6bYSFJBE7j/jV/akzXDqg==, tarball: file:projects/arm-resourcemover.tgz} name: '@rush-temp/arm-resourcemover' version: 0.0.0 dependencies: @@ -17310,7 +17354,7 @@ packages: dev: false file:projects/arm-resources-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-cXC9isUUlh6uHjMiD/C02XfGls35LVwnRjwBju9ZDecW1bY/kk1WZau3OnTq5NVEHwAA7iFjlPFLSOMpSuFFsQ==, tarball: file:projects/arm-resources-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-Rrj6pFQ3jB7OTrziWyNk9IGEWKMFp22VY4wYeA2VHVN6iRgsUrJFq3I/BY07TKIfdIg8AZ5EdLcP4RpsVdreGQ==, tarball: file:projects/arm-resources-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-resources-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -17339,7 +17383,7 @@ packages: dev: false file:projects/arm-resources-subscriptions.tgz: - resolution: {integrity: sha512-TBMsx5zp5df8p6x2UCsGQMIEo/hghPjPQ/0G05aqVqRLTA42yw3kvjvMnfE2kMAsTjocCpqDvOduDtbeXxOydg==, tarball: file:projects/arm-resources-subscriptions.tgz} + resolution: {integrity: sha512-H1Urw7GRbFVeFQAqf1s6STu3m6q6vRVGQ5VCUzEaEA8TnXWY9KOAW4n0iTj45Vvha9aEtkPZWJdkCQDjd0y/hg==, tarball: file:projects/arm-resources-subscriptions.tgz} name: '@rush-temp/arm-resources-subscriptions' version: 0.0.0 dependencies: @@ -17366,7 +17410,7 @@ packages: dev: false file:projects/arm-resources.tgz: - resolution: {integrity: sha512-liRTGGO0iRPluTl41njLlwI6NR3oRtyXT8A7chuQmNGsZtw6kD8JtAPh1AwtGsKaR1xbuUEy6aJgFvZczS+9Kw==, tarball: file:projects/arm-resources.tgz} + resolution: {integrity: sha512-G4HnsdwzInALl3ClUsR65NPZV5yBpLXbbIiOVmCA6FeUuMf00jN6hST+5SaVDOEQDzo5u8q2o4SKLldW9sDNzw==, tarball: file:projects/arm-resources.tgz} name: '@rush-temp/arm-resources' version: 0.0.0 dependencies: @@ -17395,7 +17439,7 @@ packages: dev: false file:projects/arm-resourcesdeploymentstacks.tgz: - resolution: {integrity: sha512-Tgb/HMrK6IkEqrq7ffVUqBFm9UyKpEU6SFe+WKz4Ynk3kV1fE44Yig7+KKHgA4Nf9TB04yTnl17YdMjWf5Iw9w==, tarball: file:projects/arm-resourcesdeploymentstacks.tgz} + resolution: {integrity: sha512-DSCkSNphYnkMszDLlOywH37NzGR3rjJRoXwIm+eJNfRrYrC2Rzeae0YjhLaJiZTMx2DiHd60y1h36MlZ501tBQ==, tarball: file:projects/arm-resourcesdeploymentstacks.tgz} name: '@rush-temp/arm-resourcesdeploymentstacks' version: 0.0.0 dependencies: @@ -17425,7 +17469,7 @@ packages: dev: false file:projects/arm-scvmm.tgz: - resolution: {integrity: sha512-hFSGMaYS+Br9CUJ5CL+6LlF7xzIiBaySBIR+XQ/dlpgKkeJKVIH0jVaBMSYY0DPSZ2HTNQDHRa1ZMuKj0X+FEw==, tarball: file:projects/arm-scvmm.tgz} + resolution: {integrity: sha512-9qLFturFEEc7D+yiOOLqVEV+H7y58wWjtjgE6AyIDQpPyWWbEeM8MY/UL6WdfkSX9q8BCyzzUw16Pj7R6z4CKg==, tarball: file:projects/arm-scvmm.tgz} name: '@rush-temp/arm-scvmm' version: 0.0.0 dependencies: @@ -17455,7 +17499,7 @@ packages: dev: false file:projects/arm-search.tgz: - resolution: {integrity: sha512-F5NQwoa1b8lgRq16TwyWGaBtWAydAGN9YNYV5uU+kWeGkD7U5n3ytQJhSKz3Gd4SD+FuEsyUSVcJP6tGNfX7LA==, tarball: file:projects/arm-search.tgz} + resolution: {integrity: sha512-8zZd15Pezs8SgJHhsgwBs8DMKQiFImifNjdoTr9jVHhxRIZVpRmSuZjQglicf/MkXOeTTS5qNtsbP/y4YwoBjw==, tarball: file:projects/arm-search.tgz} name: '@rush-temp/arm-search' version: 0.0.0 dependencies: @@ -17484,7 +17528,7 @@ packages: dev: false file:projects/arm-security.tgz: - resolution: {integrity: sha512-0OK7NhdXkwsUyurdv1GkVvGMCT0KaBXBmZ1CI+PyrYJ3Pn9yKmONfBlj0ezkDbauYl6fpS54TkisAfmsHD15qA==, tarball: file:projects/arm-security.tgz} + resolution: {integrity: sha512-xQtScW4zogId2Z3OVm/Rl1X3ZJ4lhC2JMPTLPw6xdnTClPiSt1M5aVCPjbLO5G9/Fw/aCI3o1fXlOhNiMYvuiw==, tarball: file:projects/arm-security.tgz} name: '@rush-temp/arm-security' version: 0.0.0 dependencies: @@ -17514,7 +17558,7 @@ packages: dev: false file:projects/arm-securitydevops.tgz: - resolution: {integrity: sha512-4UOaQfwiKZlI7IeCVeDRQ9ja3NjktVj9tqR3ZoTq14y+LvwobfpG5QjHXe1bhMr4E6BO0/H82MXezPJovXq2VA==, tarball: file:projects/arm-securitydevops.tgz} + resolution: {integrity: sha512-aTxmAjgYQIfmCl9FNhCUrK5vlxMyyrZhT575TIVMHcUQel+C++5CX5Ghv3tzdTC6cZXQmaeDIcTThMYmZrPM+g==, tarball: file:projects/arm-securitydevops.tgz} name: '@rush-temp/arm-securitydevops' version: 0.0.0 dependencies: @@ -17543,7 +17587,7 @@ packages: dev: false file:projects/arm-securityinsight.tgz: - resolution: {integrity: sha512-tU1Siof0ChbuCBN7ndrS6GcuOeM5NzsyrrKF6fHkFlu54VAhLNk9g0dvIwG64icB4p1rUjBCUsqObBH2rUxuFA==, tarball: file:projects/arm-securityinsight.tgz} + resolution: {integrity: sha512-Re7ka1pTDQ+TGCqJ7P6ZaxPadrqCfgqoG1cox7s68phZYtsrmBH+EOcSb16c6TLjpSN0mt3mzq4InSQzC5/2uA==, tarball: file:projects/arm-securityinsight.tgz} name: '@rush-temp/arm-securityinsight' version: 0.0.0 dependencies: @@ -17572,7 +17616,7 @@ packages: dev: false file:projects/arm-selfhelp.tgz: - resolution: {integrity: sha512-NjzOnV7yPplJfUvnETzF7c6iPNsTfElTsryZcbcDfQ6/nl7JSEo+tgfkj/pMjiEjqnLFYhJ7TyZHSIeizkJUiQ==, tarball: file:projects/arm-selfhelp.tgz} + resolution: {integrity: sha512-c8pzvjlAeYi/lpblVuEMRal/sY+MFP7UUa8GNINy4fwH9F2iARWzKMj97ujpJEa2+eBOrjcNpCU0RZ/vBAsN7w==, tarball: file:projects/arm-selfhelp.tgz} name: '@rush-temp/arm-selfhelp' version: 0.0.0 dependencies: @@ -17602,7 +17646,7 @@ packages: dev: false file:projects/arm-serialconsole.tgz: - resolution: {integrity: sha512-OwTICXKHPMhgmK0bwHSa0aw9kr9iz1gBYmde7HG2yDIbEvQyCh8Y2NK0rZeG3hKPizZymgB9+tSGqrs5uVNxvw==, tarball: file:projects/arm-serialconsole.tgz} + resolution: {integrity: sha512-WGrKlXHHyAser60GPdWd02wfYORMVAhbXwdyhuPTbuddKPc81rP8xo/MAjAiSV0ehA6v67t9l/9qmoJ7/hkjKA==, tarball: file:projects/arm-serialconsole.tgz} name: '@rush-temp/arm-serialconsole' version: 0.0.0 dependencies: @@ -17628,7 +17672,7 @@ packages: dev: false file:projects/arm-servicebus.tgz: - resolution: {integrity: sha512-FtfhdWulyL8411tX4MCTBbW64HN5zm/Ra6Tap91f1tt0sTVa3ZFcLJ+jRcjl1hgu3ecFvdoX4fz+I32Ap6CgSA==, tarball: file:projects/arm-servicebus.tgz} + resolution: {integrity: sha512-rSS1UF2NVWdUk3/2/rHv+aARUjbuAxPVV0/SFjAtqhTiK4rjRDgTJcSrrUj/8aWidiyc3urZLRIscXk+xF06Ig==, tarball: file:projects/arm-servicebus.tgz} name: '@rush-temp/arm-servicebus' version: 0.0.0 dependencies: @@ -17657,7 +17701,7 @@ packages: dev: false file:projects/arm-servicefabric-1.tgz: - resolution: {integrity: sha512-aRDYQsZhKBhTgfhryR0g6RM9BoV/Tdcx8GIp3orxmZT2KeI9uLD4sEKiQdjuMIOxadL4YDlqdbdu8BdDog9uEw==, tarball: file:projects/arm-servicefabric-1.tgz} + resolution: {integrity: sha512-dBlstDCbyyeETP9LVdNw0iawwCGxpwFiH0aVCOEDbfr42Gw1DuZd7t0qMR2gktU71b7otEwreu1pJVMtKLPloQ==, tarball: file:projects/arm-servicefabric-1.tgz} name: '@rush-temp/arm-servicefabric-1' version: 0.0.0 dependencies: @@ -17686,7 +17730,7 @@ packages: dev: false file:projects/arm-servicefabric.tgz: - resolution: {integrity: sha512-Ebcl4nQi3ussv3JgaXu7Rvt1aYskn4oK4EMECCs0IxBQsMaiZwYfQX9auJNZwqj/TQC5zRBu3FFU9qkzXes3gQ==, tarball: file:projects/arm-servicefabric.tgz} + resolution: {integrity: sha512-qa3SrNFc9qoSepnNuQAn2disGc4JZgKLulSfjsa+4A8nguJ4wwxC7Pcl0xIjzC4+owLBpZpqnRteiXpmQSwSjQ==, tarball: file:projects/arm-servicefabric.tgz} name: '@rush-temp/arm-servicefabric' version: 0.0.0 dependencies: @@ -17731,7 +17775,7 @@ packages: dev: false file:projects/arm-servicefabricmesh.tgz: - resolution: {integrity: sha512-38ktsf7A27k8cHr55pLAd1tc0fYPnBFGTaDPksecR8NtoEftJemi0om0tDgqvV8/7lzfTCN5s3GdK+qCIBjQug==, tarball: file:projects/arm-servicefabricmesh.tgz} + resolution: {integrity: sha512-K8ZZoXWv9oMr57N9VWNHkuuEQx3equPTdsxzQmvIIYNdnW9dKstHZW0OMLA52szo/Qsrhhi1+NIo3mXei1mwxA==, tarball: file:projects/arm-servicefabricmesh.tgz} name: '@rush-temp/arm-servicefabricmesh' version: 0.0.0 dependencies: @@ -17758,7 +17802,7 @@ packages: dev: false file:projects/arm-servicelinker.tgz: - resolution: {integrity: sha512-3pETBe2+/gv9ni4kinsLy3+wFDZJTz7C2cFwNKEZP0b99/DX3r/aNjSNp/MXuGZaxNbcgWHDKev3ECYXtlJ3Qg==, tarball: file:projects/arm-servicelinker.tgz} + resolution: {integrity: sha512-3oTSt9bxbrErz23+9iAV1xGmyAsU+ji+DfnPaIBHCxFBO4FrCFhuYs+hhozj8BQ344WSErqykpGhbHT3PXNWRQ==, tarball: file:projects/arm-servicelinker.tgz} name: '@rush-temp/arm-servicelinker' version: 0.0.0 dependencies: @@ -17787,7 +17831,7 @@ packages: dev: false file:projects/arm-servicemap.tgz: - resolution: {integrity: sha512-5fiZ8LyjoueeaKR3K6ey+jv5ND7SRkREusdZOk2E0ShOI448WnfAHz63t9yBFwd8+dITvcl67nyyBswhCegbww==, tarball: file:projects/arm-servicemap.tgz} + resolution: {integrity: sha512-k2J/0nwpELO86IdvKT9DlMqjj8q+ESvuGOb0I957WGw/V7jhrhbxiXBo0LugP+IPV9iKBxulwF0G5Z8IIxjp/g==, tarball: file:projects/arm-servicemap.tgz} name: '@rush-temp/arm-servicemap' version: 0.0.0 dependencies: @@ -17814,7 +17858,7 @@ packages: dev: false file:projects/arm-servicenetworking.tgz: - resolution: {integrity: sha512-yq7E2IcPiwuuTAm5s9BQs7WdPR0d0pN6fQGzif4nb5/JxK7KsnJ5O1qVsHlTJLFxctokNw/WYGx6r14H0/7RwA==, tarball: file:projects/arm-servicenetworking.tgz} + resolution: {integrity: sha512-5LYwicxFCv6LJadMMMrSOVG69mfjj2F8/XcQEjS2MIRhEDK01ADIUPrEcLCP483GYkReyY3ATsFqhhs2mPaThQ==, tarball: file:projects/arm-servicenetworking.tgz} name: '@rush-temp/arm-servicenetworking' version: 0.0.0 dependencies: @@ -17843,7 +17887,7 @@ packages: dev: false file:projects/arm-signalr.tgz: - resolution: {integrity: sha512-hQl8CZK9MVXJbwhM3+DcjmFLOc9GzOhcC07C9tm6C4qjy70tLPZ+QaAOzDAjnxDJOMWaX9Swd6X4wGN2JrZmbw==, tarball: file:projects/arm-signalr.tgz} + resolution: {integrity: sha512-nRgG9te1nB9fmFPZI0QiQ+w3yDGcppBppFdgcx2h3bmupMdBx+MxFNR9smOmEVQP8uQGn8RNXixn/5ZneXslhw==, tarball: file:projects/arm-signalr.tgz} name: '@rush-temp/arm-signalr' version: 0.0.0 dependencies: @@ -17872,7 +17916,7 @@ packages: dev: false file:projects/arm-sphere.tgz: - resolution: {integrity: sha512-ofsehjOO5GsL1vYP5Mw9tIU9QX9UVvioI9ePPTimHkRvnCZjtCRf0+AMBBv6hGBHjdTthycmRVgVbyTYO0Udfg==, tarball: file:projects/arm-sphere.tgz} + resolution: {integrity: sha512-wKEDGCV77isxOzXC53XmJarxtDkkw1bwKwIWi0Kif5Q3+TySXChUdg5l3vCeMxeH/ISM3/7l3401VUsktIETkg==, tarball: file:projects/arm-sphere.tgz} name: '@rush-temp/arm-sphere' version: 0.0.0 dependencies: @@ -17901,7 +17945,7 @@ packages: dev: false file:projects/arm-springappdiscovery.tgz: - resolution: {integrity: sha512-jF0qpXFHpmgIBgXJ3Bwng39K86am42+sqv8haOBESMzm2YSfNrrKs8E/gtbcZQ0AqfNF6zUA53RcVnTAV6OceA==, tarball: file:projects/arm-springappdiscovery.tgz} + resolution: {integrity: sha512-gMhc+2dj9Web3XXEf46M0JZ2Z+pXzjnVxxNTlRzF5E7rji9NVbJgPo5sM6zvlCYwjDfiepzRlufKcT8KURM0Kg==, tarball: file:projects/arm-springappdiscovery.tgz} name: '@rush-temp/arm-springappdiscovery' version: 0.0.0 dependencies: @@ -17930,7 +17974,7 @@ packages: dev: false file:projects/arm-sql.tgz: - resolution: {integrity: sha512-HCaH+In+Jza9gf//clcQUt5z4HuaSsVNOhBacI5rB+KBSv8nYs5B36E7rCqSC8pOAODgANvRsXihEyce3VJ56g==, tarball: file:projects/arm-sql.tgz} + resolution: {integrity: sha512-KEulvGTriJBDiokCqSYrCMEM03x30fr1FH7mVh59vPSGyPTEg6oxhaK3JhTUxANVRJCCyOyh0C/XoqHoirQ8Tw==, tarball: file:projects/arm-sql.tgz} name: '@rush-temp/arm-sql' version: 0.0.0 dependencies: @@ -17960,7 +18004,7 @@ packages: dev: false file:projects/arm-sqlvirtualmachine.tgz: - resolution: {integrity: sha512-o8Wk8HSfj97TPTs08bJNAY/XkJx6MQn8eqhvlHf/oqpoqw0rU4DAoxv0uma80vnVtznMrytFYV5BukBzig6qUw==, tarball: file:projects/arm-sqlvirtualmachine.tgz} + resolution: {integrity: sha512-ZFbnSUGHIz38rMR3STBYrigRLAwPZmVN/0T5xKE1scpO9DC4pHiMTPlFxD5ysM6t4Xuc1GP5tzhO/UsSxv5DbA==, tarball: file:projects/arm-sqlvirtualmachine.tgz} name: '@rush-temp/arm-sqlvirtualmachine' version: 0.0.0 dependencies: @@ -17989,7 +18033,7 @@ packages: dev: false file:projects/arm-standbypool.tgz: - resolution: {integrity: sha512-2YNUVw5kMRVvfvT8bt6I3mPN1L1tyfQl3uT3+7CSs0EXhDr7FYBYl67Ppx+BoMs9nmfsq+SJ6dAQTZRrk7CP6Q==, tarball: file:projects/arm-standbypool.tgz} + resolution: {integrity: sha512-6Pdg2WXkMjWZf3HYj2c6viyNEli2gMt0FPOCKwizOdt+IhHAv21DgA8Hegzwse4U4ByY472SIvuiG0BLqXdV4A==, tarball: file:projects/arm-standbypool.tgz} name: '@rush-temp/arm-standbypool' version: 0.0.0 dependencies: @@ -18019,7 +18063,7 @@ packages: dev: false file:projects/arm-storage-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-LiP05an9a6GKyoxf3BdMhbtmDVqk28Rf1wmpjBRVRRmv50vbl4h/boTzftItZf74icUR9YFRSLHsnCwHDfZ2tg==, tarball: file:projects/arm-storage-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-k4MXUduqfU9AuqQelts2zjbSWX1+oVf6kZJAZ8VzNAnQ1InYd6ex05KFp6RDJtKFEBlx6jRhhZTNFCf/Jmkqvg==, tarball: file:projects/arm-storage-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-storage-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -18048,7 +18092,7 @@ packages: dev: false file:projects/arm-storage.tgz: - resolution: {integrity: sha512-KCzPyOnwnOP1fv6IbS+8ORgZBZUDq+hb1Owsa8ZPWHuJ+tiobn1sXWle+I8ZZpsdjNYryi2wRqgLzeR4WcMR5w==, tarball: file:projects/arm-storage.tgz} + resolution: {integrity: sha512-rOz+SMyVmDbs4q2a4cH+dFHenkIOkIn25xOhTCvu87QVSHG3kNRiSLv21Xs+OK7KYPQ1ci6mfqYhgXbzZUvFFw==, tarball: file:projects/arm-storage.tgz} name: '@rush-temp/arm-storage' version: 0.0.0 dependencies: @@ -18078,7 +18122,7 @@ packages: dev: false file:projects/arm-storageactions.tgz: - resolution: {integrity: sha512-FVFKyYXMqHU1e84QZlE89uq7ydNvORGZFIg2lLSF8nn5evi0Cyr1YBsEMuZP0Aov7KS91grlf/ulZY39Ucq8dw==, tarball: file:projects/arm-storageactions.tgz} + resolution: {integrity: sha512-eb8n81pHvvvlAFFR8vVkyYqzVV7ChGxWoSVb3wlDCHr/B05R60ZuIbREPffo0IfbaxPXEySHex33xwYlaz6IpA==, tarball: file:projects/arm-storageactions.tgz} name: '@rush-temp/arm-storageactions' version: 0.0.0 dependencies: @@ -18107,7 +18151,7 @@ packages: dev: false file:projects/arm-storagecache.tgz: - resolution: {integrity: sha512-bGsFEbmaPmVg6cOsXrP78bWdGqiIGNamzw2YS1a5wG5qGINdYWkbmKEtKyT/BvhvOTE0Itf1qHne7UkexgzNDw==, tarball: file:projects/arm-storagecache.tgz} + resolution: {integrity: sha512-1ZZVAQALjknBQqAKSmV1wWFGdScJonWAY/r1w8EoYt0ba7u66FrjM+VCNtDS7tqK5pBmdj9oexeizr/05oSDvQ==, tarball: file:projects/arm-storagecache.tgz} name: '@rush-temp/arm-storagecache' version: 0.0.0 dependencies: @@ -18137,7 +18181,7 @@ packages: dev: false file:projects/arm-storageimportexport.tgz: - resolution: {integrity: sha512-BzGY3Zuyezu7Q08E/gMxAczw4CxaVKcQvzjdm9kDyISnNCKYd5ymNHffmRNV3V9furYxDz7I7R1f4K+Ofa5FXQ==, tarball: file:projects/arm-storageimportexport.tgz} + resolution: {integrity: sha512-s1Kvyhy0GgXdmf9pt2kRX5kMMOAEUDWq48eneG6/MvvZz8gDmosU/4ROjm8+varb2KZNFOC7iNqFNg+6VXmgUg==, tarball: file:projects/arm-storageimportexport.tgz} name: '@rush-temp/arm-storageimportexport' version: 0.0.0 dependencies: @@ -18164,7 +18208,7 @@ packages: dev: false file:projects/arm-storagemover.tgz: - resolution: {integrity: sha512-L/TfwDYkN56rFM5NT18+Xp7bARQkor9jZBUNwaUsnszj8aZwRGrMeLlHt6ZZXykQhUCx18C7uvbAE0RfVN69gQ==, tarball: file:projects/arm-storagemover.tgz} + resolution: {integrity: sha512-T76fyiQPTPkcq7mSbH3xnxUohsvdMm+EOrXjA+2jRqarV0RAmDLfeeYiZplQuT0vl4vAZDTELP1kEV8BDOzAmA==, tarball: file:projects/arm-storagemover.tgz} name: '@rush-temp/arm-storagemover' version: 0.0.0 dependencies: @@ -18194,7 +18238,7 @@ packages: dev: false file:projects/arm-storagesync.tgz: - resolution: {integrity: sha512-d1zZUc2sMIilceXgPqeb0galrVJoQ5d5vaI0g+voVi/l1N1mdhvYyJg3Q005LJZHkz9gF6neUIWVaxdtjPkvqg==, tarball: file:projects/arm-storagesync.tgz} + resolution: {integrity: sha512-tB+TYIqqrTwFqWwEwMN1gPv4cBCgO1McHXsi6sxAXKxyNJFnLNA/WLMNgMpvfoGFVqE1BDl+YqLYz1mg/6h/Ow==, tarball: file:projects/arm-storagesync.tgz} name: '@rush-temp/arm-storagesync' version: 0.0.0 dependencies: @@ -18222,7 +18266,7 @@ packages: dev: false file:projects/arm-storsimple1200series.tgz: - resolution: {integrity: sha512-PKzZkaS4fyNSZjv1WN8RTWZGWjzxhrcUJbY0hIPiAnuo28unMtB7v4RrHUia5AHwFpW+ZfW7NFklC4aCnzNUnw==, tarball: file:projects/arm-storsimple1200series.tgz} + resolution: {integrity: sha512-emzGbYD8tdVl35WXLTJEDzvarxhdMvxkAVzSOEXap0FJCke9nvSWtQgU3KVCQXo4c+xCZlKF3DkGecj+OJsq1Q==, tarball: file:projects/arm-storsimple1200series.tgz} name: '@rush-temp/arm-storsimple1200series' version: 0.0.0 dependencies: @@ -18250,7 +18294,7 @@ packages: dev: false file:projects/arm-storsimple8000series.tgz: - resolution: {integrity: sha512-hGrxPLJ2W7L6cQzK+XQ6fNwmjr5/1HzeiyCgffWMX7udeTb6uw6096xfrjQoiawPkEO5CeKSwOwTHMSlvt5kPg==, tarball: file:projects/arm-storsimple8000series.tgz} + resolution: {integrity: sha512-5Irwe50ZMZb5ZrdusgATl4NZTP+ronMdZwY52t5EEvYrdMsZ7KEhbIvH7GbLY1o/zm+pKx++ttgtQQe37Znk9Q==, tarball: file:projects/arm-storsimple8000series.tgz} name: '@rush-temp/arm-storsimple8000series' version: 0.0.0 dependencies: @@ -18278,7 +18322,7 @@ packages: dev: false file:projects/arm-streamanalytics.tgz: - resolution: {integrity: sha512-S70TdlqMj+nCZb4RrZ2Mx3MGW96LdFVW7IOcRNDiRispyfsIXnDR3ds3IDKRZI73bX5OxuDEluc/nUCNRa3Plw==, tarball: file:projects/arm-streamanalytics.tgz} + resolution: {integrity: sha512-a0pWXQS+ccjvVJANai/iVv3ZFWXnwaB2FsfFUYpEjgdq7VXYP2ccnKpJEg5031FuIIHZJGj/MLXmh4xx1p1qxg==, tarball: file:projects/arm-streamanalytics.tgz} name: '@rush-temp/arm-streamanalytics' version: 0.0.0 dependencies: @@ -18307,7 +18351,7 @@ packages: dev: false file:projects/arm-subscriptions-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-XF3DsngD/RvbaVZZ9uSf9Jk/vTxDGzBGZhfpBsOzNRUAtJRXAGx7PP3AoLXo3S+miUnIXW7b67NKUnWtNm/zTw==, tarball: file:projects/arm-subscriptions-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-Z8pzrkx66nf6mFF8B76hjrcn2m1/I+dATmltdy3FHXRcDdIE6s+4HKxNrfg/bah6WqJQj/zdkZdm0PIbuGq6Iw==, tarball: file:projects/arm-subscriptions-profile-2020-09-01-hybrid.tgz} name: '@rush-temp/arm-subscriptions-profile-2020-09-01-hybrid' version: 0.0.0 dependencies: @@ -18334,7 +18378,7 @@ packages: dev: false file:projects/arm-subscriptions.tgz: - resolution: {integrity: sha512-HgrcEtsaIaTYxTan2UVyi4laO1KXuil+SXPiilMXt1rmB/7R6d3hCP9FSKaytkYv/YjKtqbbIb4TDxjLRcm7yQ==, tarball: file:projects/arm-subscriptions.tgz} + resolution: {integrity: sha512-UzNFkOiVSMW6o7EE1BpU8OHyMxPfkZ71vQC/V/UiFrjL90/ypsQWTntgMaYVx6JKYpEm6+HxxOprWVO/GCuuFw==, tarball: file:projects/arm-subscriptions.tgz} name: '@rush-temp/arm-subscriptions' version: 0.0.0 dependencies: @@ -18362,7 +18406,7 @@ packages: dev: false file:projects/arm-support.tgz: - resolution: {integrity: sha512-zrITbcgGKdOyeQ3aATf4XK3xL62MySuZmVt6j3YR+wBKsuXxz+rxXF9G6s4rITWR8jGeMkcY9MNiZrwAThbb0Q==, tarball: file:projects/arm-support.tgz} + resolution: {integrity: sha512-a/itupnpjeLeITmsuBnbB4tu+K/Y6ohr2YV62Kh30FvTKwfaMGHutvSQeEbZ8LAYVwAdCIDzlJS5Bpugz7bgiA==, tarball: file:projects/arm-support.tgz} name: '@rush-temp/arm-support' version: 0.0.0 dependencies: @@ -18391,7 +18435,7 @@ packages: dev: false file:projects/arm-synapse.tgz: - resolution: {integrity: sha512-d26vcMynxvoVkihrgsKTVhapTL9zctEJ6r6PUOf/5JhW4IYuWNNBtmwPBhFly6Dk+6SLQBCr0H2PNWX2AhHdog==, tarball: file:projects/arm-synapse.tgz} + resolution: {integrity: sha512-5WnHWHLhMGwg9EMp5dDltDfnSfgVRDYlF1YuTFrodZiCaUXIZZ1X5KmD0kgk8XICaPlJnccafy3M5ZQvNlzP0w==, tarball: file:projects/arm-synapse.tgz} name: '@rush-temp/arm-synapse' version: 0.0.0 dependencies: @@ -18420,7 +18464,7 @@ packages: dev: false file:projects/arm-templatespecs.tgz: - resolution: {integrity: sha512-PTAq7dxP25BVmpjDQMG7Ou1vDwz4VSKSrTDAQCNOQUjXsHQwCjbE1k8rY2oXH6dZDiTLsb9RDE0RJI7jp0Ooiw==, tarball: file:projects/arm-templatespecs.tgz} + resolution: {integrity: sha512-1dojIbxzqbvDyAGC+Y+PX1VuQeMZrcl0fF6DjxnSyZI9VwX2+DJRwJPkJyAF/b/j4IXL2XLjHEtXDARlKU2Byw==, tarball: file:projects/arm-templatespecs.tgz} name: '@rush-temp/arm-templatespecs' version: 0.0.0 dependencies: @@ -18446,7 +18490,7 @@ packages: dev: false file:projects/arm-timeseriesinsights.tgz: - resolution: {integrity: sha512-rXgImofKVMkX6wrQdK8a5OQ3x4LGqTzHkL9fqWTeVPqlb+E/mbGnPApkISK8cMBxyl+f9E88FlMeHPZu31sxSw==, tarball: file:projects/arm-timeseriesinsights.tgz} + resolution: {integrity: sha512-jdGRt7ZxH5GriIJ5n2S5pl9bkK6HAUM4gu20IVqglQpsUHdLZyG34b8FtXgP+xPIs2nhSfuDGxsmcy/jFb35cA==, tarball: file:projects/arm-timeseriesinsights.tgz} name: '@rush-temp/arm-timeseriesinsights' version: 0.0.0 dependencies: @@ -18475,7 +18519,7 @@ packages: dev: false file:projects/arm-trafficmanager.tgz: - resolution: {integrity: sha512-4v38fABNzLkDHgrllX6AZZkXu5b0utxxGNjAphBaSdAf2MSFG2X452dhfN6JLCl+f37RJJeGmX6jUP7YfgUYag==, tarball: file:projects/arm-trafficmanager.tgz} + resolution: {integrity: sha512-p04LmmSRaP0OZKOiHuSolbrQUabmhdT7vSPz22aBkkMeDeb+0r9/C2KTmlIHVr4Gj5m1rMclA4GawNKR1dtiCg==, tarball: file:projects/arm-trafficmanager.tgz} name: '@rush-temp/arm-trafficmanager' version: 0.0.0 dependencies: @@ -18502,7 +18546,7 @@ packages: dev: false file:projects/arm-visualstudio.tgz: - resolution: {integrity: sha512-TeSRLidib8SMqJVwmcB0KcvfCamp3p8Ngpmm1WL8LiGp6tFgW/+QLbZ512xY15j4ZbZProRnfxk5WV7w+ZP0sw==, tarball: file:projects/arm-visualstudio.tgz} + resolution: {integrity: sha512-6/Hl7L/tmqnxTO4ktdeCbvOgM6eP1bw4dy+F0jfhWqomUotrJXbK/iufAV867j4uYIGMAzTEL0m1LVPKFgmUFw==, tarball: file:projects/arm-visualstudio.tgz} name: '@rush-temp/arm-visualstudio' version: 0.0.0 dependencies: @@ -18530,7 +18574,7 @@ packages: dev: false file:projects/arm-vmwarecloudsimple.tgz: - resolution: {integrity: sha512-4m8RnvZNYOHmanrcf3TeyDUFQC27ZvTZsitzDd62YIno+upA31XRX3pGY/HXtdZsY1+0ErblJ0P/Utkm64qtpA==, tarball: file:projects/arm-vmwarecloudsimple.tgz} + resolution: {integrity: sha512-3XhkpXkT5EFhoXhgUxWGqCM6tsqPvnkbZG3A/fCrRevtx3u/unaouHbtHMX6g+pisx126RrKiUS9HYpVw1ra5g==, tarball: file:projects/arm-vmwarecloudsimple.tgz} name: '@rush-temp/arm-vmwarecloudsimple' version: 0.0.0 dependencies: @@ -18559,7 +18603,7 @@ packages: dev: false file:projects/arm-voiceservices.tgz: - resolution: {integrity: sha512-YPoI6jwv2enblFOHhRtBCXZE2ZlCLVbQFZrGKiN84pYVxrORwCqHVX6JPBcZDDhmR2j1AThruQ/XCBl2kK/0Gw==, tarball: file:projects/arm-voiceservices.tgz} + resolution: {integrity: sha512-29/1TGSuIHuRJftv+qFJ26nocByL3RVsf25XoZdN6wMMDZQBr5pFX7hnnEQtb38NWTAZJIXbylsv2KwBapvd6w==, tarball: file:projects/arm-voiceservices.tgz} name: '@rush-temp/arm-voiceservices' version: 0.0.0 dependencies: @@ -18588,7 +18632,7 @@ packages: dev: false file:projects/arm-webpubsub.tgz: - resolution: {integrity: sha512-Mii1UybuZfxCvHW2qdEl2Tyd8Xr/lxo3xQPIB89soWCkBHq9nIm3FthWh/354oP3Yyc1Z3W6K/8kif9kDLJcJw==, tarball: file:projects/arm-webpubsub.tgz} + resolution: {integrity: sha512-l7CBQPPDCwBtDvZVVK/Rt96oQ9ncPDEK1gLMk+xFzMvXH0tIeG9aCTpMylo31NcF69YauUdusQl0YCWdZ1IGzQ==, tarball: file:projects/arm-webpubsub.tgz} name: '@rush-temp/arm-webpubsub' version: 0.0.0 dependencies: @@ -18617,7 +18661,7 @@ packages: dev: false file:projects/arm-webservices.tgz: - resolution: {integrity: sha512-40teYYT4jmHv/vvsd1Ue5ULqV2z4z56vxal+fX3y2C6bFb2LO28WhlZSRSFJubEYH7hjVm8Q5NL15JR3u0CFVA==, tarball: file:projects/arm-webservices.tgz} + resolution: {integrity: sha512-vNpmZcRLzhvJivYHBS80jMVjR1FGH8NRBNuewFEVSYExTJRaeT8GWQAYQYsdSevkgaFGckIfbMvtuxdMBhrvoQ==, tarball: file:projects/arm-webservices.tgz} name: '@rush-temp/arm-webservices' version: 0.0.0 dependencies: @@ -18645,7 +18689,7 @@ packages: dev: false file:projects/arm-workloads.tgz: - resolution: {integrity: sha512-YlGUjBL9+VuFlYMhaTpgeBMO+vfxDcgPHZgwTaeXHdmWzp7AkWsmGL0i+XNH+dVv0n14qDDg35697SVS8qerJw==, tarball: file:projects/arm-workloads.tgz} + resolution: {integrity: sha512-LzER2SGAGSbEefwb5O7bwxFMHlMYu8cOxKJ8CMo4XvtabZekA+rAD3opTmAUniXS331zFj+ONyoibuv2c66eig==, tarball: file:projects/arm-workloads.tgz} name: '@rush-temp/arm-workloads' version: 0.0.0 dependencies: @@ -18674,7 +18718,7 @@ packages: dev: false file:projects/arm-workloadssapvirtualinstance.tgz: - resolution: {integrity: sha512-aO2Rdwp09hSyjfVNCAKvVWJE6I6ZxUTACQki4kXFc7wBxjqg9T2G7F5kY4Rt+9NEUXklciMyi5xIWUlZ6q4Fqg==, tarball: file:projects/arm-workloadssapvirtualinstance.tgz} + resolution: {integrity: sha512-+7GBDBoRg/4d85ONwhdpvIIi0SXurluENIIs4Up+lC0wzpeEbKlKdktZEvaCWZrShv2QCq0MnrWABFA2wXJLXQ==, tarball: file:projects/arm-workloadssapvirtualinstance.tgz} name: '@rush-temp/arm-workloadssapvirtualinstance' version: 0.0.0 dependencies: @@ -18703,7 +18747,7 @@ packages: dev: false file:projects/arm-workspaces.tgz: - resolution: {integrity: sha512-lMwmy3/U+Q12HH7zFdVSSHpmnmX3p88vbSSP65clrtdoBCjuDXKWleLxj1XaU+p+J8KXW6aFEGqK2MqzXUgQrg==, tarball: file:projects/arm-workspaces.tgz} + resolution: {integrity: sha512-DoRNtV7hSLCz4/8SmHI4mCxV2xPZvZpFrob0NNkqpEGcpUYUsOWmfs9trOx3wHldN2evkIBhm0o37K+rykMtrA==, tarball: file:projects/arm-workspaces.tgz} name: '@rush-temp/arm-workspaces' version: 0.0.0 dependencies: @@ -18729,7 +18773,7 @@ packages: dev: false file:projects/attestation.tgz: - resolution: {integrity: sha512-5uzEosTcn9Xi9vj5mbotYp9HTiGQJV1NsFzprJR9YsHJamULryOgYN90bOEI5FVvXIL2TZDTD7p2oxtR926gTw==, tarball: file:projects/attestation.tgz} + resolution: {integrity: sha512-kMx2ji350PWgYLmfSB7RDfGRvub7cOCL5mn08ESdFQFmO5HLN7m98sKR3fT+Kc4TRErXq1Lp1M04RWLI6I+Hiw==, tarball: file:projects/attestation.tgz} name: '@rush-temp/attestation' version: 0.0.0 dependencies: @@ -18779,7 +18823,7 @@ packages: dev: false file:projects/communication-alpha-ids.tgz: - resolution: {integrity: sha512-Iv/iR9eaqC4EmPwvKOMcMV6zyu7LeAiL1Lu/2/2D3roA7UfrwyAKkp0yHIKezgW0gBHHshhJkx0SYWbN05mu9A==, tarball: file:projects/communication-alpha-ids.tgz} + resolution: {integrity: sha512-JX3Q2c/NclvEto8CaC7JqMIi9/pom+1PZjftZwmBp5tEmWtMlzQagFFfpl0OOhPXHe6iEnMH2PVwZP+haH4R1w==, tarball: file:projects/communication-alpha-ids.tgz} name: '@rush-temp/communication-alpha-ids' version: 0.0.0 dependencies: @@ -18822,7 +18866,7 @@ packages: dev: false file:projects/communication-call-automation.tgz: - resolution: {integrity: sha512-oTShTmrbxfrNzMYL0F+FWWm8FWIZEDn6BeNTctZCmKr8qpJbTGRGnxA/zh81Ld6j9i6K4FjMTgFis/igaPlawg==, tarball: file:projects/communication-call-automation.tgz} + resolution: {integrity: sha512-jAos4/wgxHBUTIdT2cECNXGw3ppGrA/xsy1He0en7VfbdACLQ4/g1lfbieASMwMYMLA3DH7HzdjZ9JaEGauYFg==, tarball: file:projects/communication-call-automation.tgz} name: '@rush-temp/communication-call-automation' version: 0.0.0 dependencies: @@ -18869,7 +18913,7 @@ packages: dev: false file:projects/communication-chat.tgz: - resolution: {integrity: sha512-cc0ERZbLnKcmY9v51G5nO7orEuYNAyQip/zx5EBDVf1WgZhspAgJ/LbMoAfBBcEswNlyqPkKm+rnTADhuz6+GQ==, tarball: file:projects/communication-chat.tgz} + resolution: {integrity: sha512-h2gowp+GzdE2NT3Eq8Q/F7iDu5KpDv/Bov9MqI3PpW46Hmn2iBSoBx5Uwe0kHiIYqlIHLSFn3PCc02TzKXNYLw==, tarball: file:projects/communication-chat.tgz} name: '@rush-temp/communication-chat' version: 0.0.0 dependencies: @@ -18920,7 +18964,7 @@ packages: dev: false file:projects/communication-common.tgz: - resolution: {integrity: sha512-qUFjssxs3gQnMSOnp9mrxweEnaeXP1NZXhyiZT/EsjQRkYm1jF2kg92stA3CHfVFvpJ6t+gN9K75Kv30hs6RiQ==, tarball: file:projects/communication-common.tgz} + resolution: {integrity: sha512-IX5O8uhhwOhyHTeNlA59GkE9zYim4bylUUozb2OMRbeQ8qMmguv7KQmuBUk+vRnKcfsMufnuRCNaxSE6L6+Dlg==, tarball: file:projects/communication-common.tgz} name: '@rush-temp/communication-common' version: 0.0.0 dependencies: @@ -18966,7 +19010,7 @@ packages: dev: false file:projects/communication-email.tgz: - resolution: {integrity: sha512-x//4ITCLpNDIhQGqn3kWrqEVNnHZqEvT9lj0TxPOQ60XAP1Ff0nsqBMXB9bWPnHRbN+DmHJwzQVyDJkczBKfuQ==, tarball: file:projects/communication-email.tgz} + resolution: {integrity: sha512-OuCJlT8sUnZ9SsPiqOGk37mDBzEMrl+te6kMREDsr0h8T+kxKGVoeol/fzBU1IBfVL7MpG/5pETgOX0pz1y64Q==, tarball: file:projects/communication-email.tgz} name: '@rush-temp/communication-email' version: 0.0.0 dependencies: @@ -19007,7 +19051,7 @@ packages: dev: false file:projects/communication-identity.tgz: - resolution: {integrity: sha512-T4cZMXQYtflWwuGBEG4RRuX0s31eUgfIdN9e9wywjO7iIcajEB8I4RGoma/1lrjcWoUSBf5W0uWYwxIlrn+qKA==, tarball: file:projects/communication-identity.tgz} + resolution: {integrity: sha512-HOyz7vBC4zY8fZ0GKnOqDEktnddn3+bL7+SZtenyOh6MfT1fVg4BlKG8h710XvkSTxq55C94nOIO9xwrE/u5NA==, tarball: file:projects/communication-identity.tgz} name: '@rush-temp/communication-identity' version: 0.0.0 dependencies: @@ -19054,7 +19098,7 @@ packages: dev: false file:projects/communication-job-router-1.tgz: - resolution: {integrity: sha512-fuDq0GkOtNjKy0J97RLBFjh/1cPXWOuIBu2mldGod6+1WOwnXKPL/9foBVKzJpLuChRi3+SFohfwdxmxV2/vuQ==, tarball: file:projects/communication-job-router-1.tgz} + resolution: {integrity: sha512-wosnJN2k3Y5hRfua1oRxhXu8JQeeuQ/C5ULFLR11BuZfCHHW6QzVSQeFZlm2tFiLwu+6df8U/4ab5cK37x7+tA==, tarball: file:projects/communication-job-router-1.tgz} name: '@rush-temp/communication-job-router-1' version: 0.0.0 dependencies: @@ -19102,7 +19146,7 @@ packages: dev: false file:projects/communication-job-router.tgz: - resolution: {integrity: sha512-O7UgjEEUiap78t15DQtyT3jUXNIw2cpHDl6auJYpl9YmRqypQioSuOcNDpy2FQQbJrwfJ+7eBdkttKevlnTWRQ==, tarball: file:projects/communication-job-router.tgz} + resolution: {integrity: sha512-6HiMo/jZZOVl9X8BCfXFQH0D9XXOX26WIDSicMrYAEiApd5HfesgR5VcYeKoIPLxxZsv0JziJYBm77Ljwu5sMg==, tarball: file:projects/communication-job-router.tgz} name: '@rush-temp/communication-job-router' version: 0.0.0 dependencies: @@ -19146,7 +19190,7 @@ packages: dev: false file:projects/communication-messages.tgz: - resolution: {integrity: sha512-rMLvisbcoRfJdHgikZ/ZonCb7BkrloOeFdi0Hf02b1d+LdOcf+FO9yB0zzrXrYpp5cGMYLHOOdRM58RGNnwHAQ==, tarball: file:projects/communication-messages.tgz} + resolution: {integrity: sha512-o6dEljhclDvT0dXpYFC2DmM8Rfqf/QUDuROlsZFGErRnn4w9dEmWmbuYlCo4M5iH3UdTNqtAQYaaj4WCeRaBMw==, tarball: file:projects/communication-messages.tgz} name: '@rush-temp/communication-messages' version: 0.0.0 dependencies: @@ -19190,7 +19234,7 @@ packages: dev: false file:projects/communication-phone-numbers.tgz: - resolution: {integrity: sha512-z30i87Tj/o1XVYnXaMkhQH0Ilmbt363WMxoRpVVyej7/4DGtEDbdCuNgUf2Tl97jWf71eT/k5TzTKZQzNgYj6w==, tarball: file:projects/communication-phone-numbers.tgz} + resolution: {integrity: sha512-e0Ttjo0vjHBekpnavUXToRLKBT9m8kUH2vxPZHQD9CjOySD3e0iBeFBNmEiPpVoTS8YT3xK9MyTB0jVHGc7uLA==, tarball: file:projects/communication-phone-numbers.tgz} name: '@rush-temp/communication-phone-numbers' version: 0.0.0 dependencies: @@ -19235,7 +19279,7 @@ packages: dev: false file:projects/communication-recipient-verification.tgz: - resolution: {integrity: sha512-yJ9IapbdwC5pyghsX1L19oGw/iadSXb0STsyJvCeUuUt87d6ojqYTR+R9Scz4VrJ6yKQLROmYydzCoJpB6akBQ==, tarball: file:projects/communication-recipient-verification.tgz} + resolution: {integrity: sha512-5M9kCP0nlo3eUMOc6ML4GOLhY1hxMrmhTWDEsjjToWD5bt6PQnqMT109dzFH/VtAMW+exh6Pcpy5GlfN8lRtfw==, tarball: file:projects/communication-recipient-verification.tgz} name: '@rush-temp/communication-recipient-verification' version: 0.0.0 dependencies: @@ -19281,7 +19325,7 @@ packages: dev: false file:projects/communication-rooms.tgz: - resolution: {integrity: sha512-9WzQ8V3bJICGPHvdYp3lr6jnILw7/c3reSRf3pRhpx/Zhq4mXZD19DDf2C+XgkDqYOd0zg0i0Bf6R+n+AdqvZA==, tarball: file:projects/communication-rooms.tgz} + resolution: {integrity: sha512-dJUJiVv/PWc8+Daf0d8MK849btRZ6mhKUe9fY8KzDw40szhLu+O4U8geDwVF8aVkMxOg3V0Ve00wVv1+IDMXjg==, tarball: file:projects/communication-rooms.tgz} name: '@rush-temp/communication-rooms' version: 0.0.0 dependencies: @@ -19316,7 +19360,7 @@ packages: dev: false file:projects/communication-short-codes.tgz: - resolution: {integrity: sha512-1kFmfoEmzLNCbQg1IBSng+PML2gnc0L1gIeOyyNs4GmHcxiEA5Pgi05GkXvmCVZPvta5W2/NpOCR6kXS6Y9BOA==, tarball: file:projects/communication-short-codes.tgz} + resolution: {integrity: sha512-y3Uf7EoqkTaYRDJpQF+u3FWmeH6TtoXWUmw0QV0xyekW2Id/Qis6QpOjqSuGhoXYaHOQnsS/jYHqoBBgcWfjzg==, tarball: file:projects/communication-short-codes.tgz} name: '@rush-temp/communication-short-codes' version: 0.0.0 dependencies: @@ -19362,7 +19406,7 @@ packages: dev: false file:projects/communication-sms.tgz: - resolution: {integrity: sha512-86Bir0Wm3yqxRqwxv9D8vaLiZJdlwctTDowtvABBwYVQGAPevMr4U735yqFcle9wjqYo3OJP09gxOwqBAYQIKA==, tarball: file:projects/communication-sms.tgz} + resolution: {integrity: sha512-L/lrm9ZPN7YtA/v1LLWjFje+14h2mQXIq0x7l62bQZG0pETgGNSvYMjGfUyblChg7RwOs7VnQIGqjcanzLtjeg==, tarball: file:projects/communication-sms.tgz} name: '@rush-temp/communication-sms' version: 0.0.0 dependencies: @@ -19407,7 +19451,7 @@ packages: dev: false file:projects/communication-tiering.tgz: - resolution: {integrity: sha512-n6Y3PgAwuQVbHVOsaI/uZ27Y7Oz9EoWkYTOR7b5PGQiaGw4yyZy+RX+SrkU5tCZ2sVsyNrW9WvVWIvTFV7kSWg==, tarball: file:projects/communication-tiering.tgz} + resolution: {integrity: sha512-b3/i77qoy68LD1a1A+arWcnVMSQAPJloPe0aGMILeb77fc63/eWpriD6Nn4DZioxujviWU8wJ9HHQMpsQgjj0g==, tarball: file:projects/communication-tiering.tgz} name: '@rush-temp/communication-tiering' version: 0.0.0 dependencies: @@ -19453,7 +19497,7 @@ packages: dev: false file:projects/communication-toll-free-verification.tgz: - resolution: {integrity: sha512-TV1+jzzGsdIN/W9KEwnEX3Vs/nlZczIxGADci+JcW9WuZEfPp4UJUA9cymTtFJiFK4p+Tiad3TGk2xT4i7E6jg==, tarball: file:projects/communication-toll-free-verification.tgz} + resolution: {integrity: sha512-6LCIhAB9mmJ3GC0tncswnyb8f51bv/4t+wybqRGG6bTN/12Kcje+YAuGE7t+DbrQH2ZcdZZ4izoV9U43BYYYaw==, tarball: file:projects/communication-toll-free-verification.tgz} name: '@rush-temp/communication-toll-free-verification' version: 0.0.0 dependencies: @@ -19496,7 +19540,7 @@ packages: dev: false file:projects/confidential-ledger.tgz: - resolution: {integrity: sha512-et/vUr3fTLColYEsTVHx/inlNxuMoNQGgOpIgDXJGcAwS4USy1Yg+HtZAtAC2ewKAPNDaJR0TWQGrH01etU2qg==, tarball: file:projects/confidential-ledger.tgz} + resolution: {integrity: sha512-OT9MPmflZRpaTc55larxwUPLKhKTGjIbxmn5+dBlIAlhIJ3A5iqFV/FFA4qooOq5toBpfH6IXjg+7rfNpyHLvg==, tarball: file:projects/confidential-ledger.tgz} name: '@rush-temp/confidential-ledger' version: 0.0.0 dependencies: @@ -19525,7 +19569,7 @@ packages: dev: false file:projects/container-registry.tgz: - resolution: {integrity: sha512-c8/zQeKUKYpwZ8q1xu2uj3NZJMfjrfq/xaKLOqZ3M0qAQy5l/ztYH99aI4Qc8mGIlB5Coof3ver4luBlQIXOfQ==, tarball: file:projects/container-registry.tgz} + resolution: {integrity: sha512-l3CTTknzsFefvYuNJiPTc9eWTpHakDR3AZ53ULVaHoHprg0VWghIb2kYE8Af9RAlkw8to9eFVrxSQIaRPus1hQ==, tarball: file:projects/container-registry.tgz} name: '@rush-temp/container-registry' version: 0.0.0 dependencies: @@ -19569,7 +19613,7 @@ packages: dev: false file:projects/core-amqp.tgz: - resolution: {integrity: sha512-VeXTJC8jYIwaV9tCJLa8bAKkryIfLDqpI+1aVbAFscah+heh/D3WVOEfCZpzCdPMiL10D8CLehidNmO6NpbCQg==, tarball: file:projects/core-amqp.tgz} + resolution: {integrity: sha512-ZjYrx5v04yA7RExHNqNQkXV/+B21xqySJj+SbYbdkjSTMtmyBMipPz7X2kkVIRjuU7E6w8/gl2ZhB0gvRd4HcQ==, tarball: file:projects/core-amqp.tgz} name: '@rush-temp/core-amqp' version: 0.0.0 dependencies: @@ -19615,7 +19659,7 @@ packages: dev: false file:projects/core-auth.tgz: - resolution: {integrity: sha512-7iyjse2g7WxtxBmF6zCY3c/2bMCKAHe9QBpYOo7c+2pJO98i1lngl7kAcTV/mIFHa9o38r7TLhk5sYrIXNMSBA==, tarball: file:projects/core-auth.tgz} + resolution: {integrity: sha512-9VWQfgxgTaK84wuHGrS8uoaCRHfvvgHHMDavE11Jt8Y3Ocv/1qU8X87aQ4r3mfbqpCsxEgeGIvcT+tf1Gp6PAw==, tarball: file:projects/core-auth.tgz} name: '@rush-temp/core-auth' version: 0.0.0 dependencies: @@ -19647,7 +19691,7 @@ packages: dev: false file:projects/core-client-1.tgz: - resolution: {integrity: sha512-2mV5ZllE/yavgjDaezjpzGs06hbMWyCjd1pOO0P0kiziccxKDv4OyxkDHzeJkHB6hW0RIWnWUXH4ZhK9/J7nJA==, tarball: file:projects/core-client-1.tgz} + resolution: {integrity: sha512-0nYbq5NuDug7JjQf2cPbnGU5j08stiIYVshxJNET9rY/c3wV4vaLjZz0AB4hH+dMqMPaYS0GtjTc6sEHU2pZRg==, tarball: file:projects/core-client-1.tgz} name: '@rush-temp/core-client-1' version: 0.0.0 dependencies: @@ -19679,7 +19723,7 @@ packages: dev: false file:projects/core-client.tgz: - resolution: {integrity: sha512-fymVoajwSZvZH++oNT9jJHybX3UF9qJyenhnh/vYrc5fPEK5kJzzMh7XNSrusyQf44fCXlMW8IppYBAidKKBhA==, tarball: file:projects/core-client.tgz} + resolution: {integrity: sha512-KKsaxRn3nqcO11eDCJAvyzxuV+IkVV251+BFvni4DqfnYpROKS5WQKDFKaV46JHXRxxkaadsj/lqSQhq/jkphg==, tarball: file:projects/core-client.tgz} name: '@rush-temp/core-client' version: 0.0.0 dependencies: @@ -19711,7 +19755,7 @@ packages: dev: false file:projects/core-http-compat.tgz: - resolution: {integrity: sha512-mq+o1iBTSxisXhAjPLeV3RZe+hM4uefe1A6gn1pQcGydEpuPy4AB0vXLINpWe5BMT3vY26/pXVzq1OvUNm6DIg==, tarball: file:projects/core-http-compat.tgz} + resolution: {integrity: sha512-RE2tHJrgZB9ibLcOSohoO5CU6OrTaAoeXHIa4NX+VfGNupmsXxjz8n9pCyziNalKNNxUoxXOI82sVE/Qz1NcPw==, tarball: file:projects/core-http-compat.tgz} name: '@rush-temp/core-http-compat' version: 0.0.0 dependencies: @@ -19742,7 +19786,7 @@ packages: dev: false file:projects/core-lro.tgz: - resolution: {integrity: sha512-AwF0waUo4lgqxSlKWqA6Jey9O8wchTNuGHkzykZEHIZBPUMpoUL4IvOs1X3AzAGohMa0KokCpBQojA3n/oxlmg==, tarball: file:projects/core-lro.tgz} + resolution: {integrity: sha512-fxatJCYwyEZIIBoNeYNb4A7aH95Aigb3phSM6Ijp8GQRAPPYtsXY1DypmsyTQs5BDrX3Lh02C3xAVVblKLL73g==, tarball: file:projects/core-lro.tgz} name: '@rush-temp/core-lro' version: 0.0.0 dependencies: @@ -19774,7 +19818,7 @@ packages: dev: false file:projects/core-paging.tgz: - resolution: {integrity: sha512-ojU9hbVYB9SegNJi6c4Zj1tX1/w1FMs75clNvRzn3al1wOCTdVdNJR4CHkywNqPR2Ga7axAxvWvs1F9v1P/iog==, tarball: file:projects/core-paging.tgz} + resolution: {integrity: sha512-ox65afz9MB+T9Zj90giklpPlMDRiFNUHmOFWdsP9JR58igmrBvduJKdHnejmF9jjIPLOFYDnEOZA2k90VLttIw==, tarball: file:projects/core-paging.tgz} name: '@rush-temp/core-paging' version: 0.0.0 dependencies: @@ -19806,7 +19850,7 @@ packages: dev: false file:projects/core-rest-pipeline.tgz: - resolution: {integrity: sha512-6WcA4ar0BJxVKcnmNb46JLNJrVc4Su+5sCRxYKaqE66pOKvmYf0Dd1TwAH4Sd9qdY48nnfivO2VDi6J6T7U+Jg==, tarball: file:projects/core-rest-pipeline.tgz} + resolution: {integrity: sha512-ASxYbT0SGucrUXvwB5yal4vaqAUZ6uvnBYCaniBxcuc4CnYwBAWE55Fg8weLdOaQ6A69wsObhUjTu4UDGfqpiQ==, tarball: file:projects/core-rest-pipeline.tgz} name: '@rush-temp/core-rest-pipeline' version: 0.0.0 dependencies: @@ -19840,7 +19884,7 @@ packages: dev: false file:projects/core-sse.tgz: - resolution: {integrity: sha512-AuDhXgVXu9jSYj/ZsQGCMi72EQjNfzFy6lAnBQ54kQtOYXafVlPWIUBMFtw7fJCZMX/muevalrGZkxpZyr5y7g==, tarball: file:projects/core-sse.tgz} + resolution: {integrity: sha512-3CN7Pjj4NLytg11Ez6OajHQmrXgs0ybUVTzdrQYztBoJYdUPRTqSWOdUci0Z6NkoAb+v+Q8f/w1smeqTNBAAbQ==, tarball: file:projects/core-sse.tgz} name: '@rush-temp/core-sse' version: 0.0.0 dependencies: @@ -19873,7 +19917,7 @@ packages: dev: false file:projects/core-tracing.tgz: - resolution: {integrity: sha512-bHuJPXtp+OvVMH1KVhHTHZTgr2Q/ND+kpT57ZzUhZq84NWUUYEp6tfkbiGGqeZ6V/F2j6/daYM84XaVqdsdS8A==, tarball: file:projects/core-tracing.tgz} + resolution: {integrity: sha512-HULrg+t9TvBIa5EUmMAXtQiETAuw0o7UsgK2c5V1DrhGLDedJJETvzPgjJXXgnGq0DJRJgY9H12ElKzb1qWx3g==, tarball: file:projects/core-tracing.tgz} name: '@rush-temp/core-tracing' version: 0.0.0 dependencies: @@ -19905,7 +19949,7 @@ packages: dev: false file:projects/core-util.tgz: - resolution: {integrity: sha512-mgR/sT3WvDHz/psArcyZJjU6KrgRSuPos68HrEjHUv8JTe6TT48DDlVqnZnKc71w09CxZpdIu2N3V6SvYT1vpQ==, tarball: file:projects/core-util.tgz} + resolution: {integrity: sha512-AK6a/OcUEuDGGCZiPw9nJlQ+48une2YsFOqHTIDtxSemMnjhnTSv/ETtMM3cJGCnqgRFTxyJ2UN2sGMpH1v7MQ==, tarball: file:projects/core-util.tgz} name: '@rush-temp/core-util' version: 0.0.0 dependencies: @@ -19937,7 +19981,7 @@ packages: dev: false file:projects/core-xml.tgz: - resolution: {integrity: sha512-8MDEt8UlVs4wVG0s9KiMin/U+0RcwA4RvWH+UKnV6dtHNzlPk7DyTSDJwp+3vZR9DN+KR8dlGX7Yx26mSiIcbw==, tarball: file:projects/core-xml.tgz} + resolution: {integrity: sha512-a1zwuH3CEl/Lb9O0LSM1pE1FdtXo558qbCfOQ24nohMyy1l7+L9cIJsHIdb1E2tCBcmXjEa+tco89B6Qit50dQ==, tarball: file:projects/core-xml.tgz} name: '@rush-temp/core-xml' version: 0.0.0 dependencies: @@ -19971,7 +20015,7 @@ packages: dev: false file:projects/cosmos.tgz: - resolution: {integrity: sha512-R9rp1yr6p5OLwo9cKBYczfDPMW/V1Oop2kOi7BDSQyqLlWU/zTK/mb23trNdt80l1529l6l7JHokzcp812jZBw==, tarball: file:projects/cosmos.tgz} + resolution: {integrity: sha512-TPCmO0svK31qxrQ2A0ytcsl63ygXBaI57gPDHXi2e08l7Ww43iuV4rbY571mb8LOKIjun3r3zj4pz57PSDnADw==, tarball: file:projects/cosmos.tgz} name: '@rush-temp/cosmos' version: 0.0.0 dependencies: @@ -20011,7 +20055,7 @@ packages: dev: false file:projects/data-tables.tgz: - resolution: {integrity: sha512-sf1j/dYwJNs6be2DqHXrwxkViYkSDt65T7KSryMCuziAp+bv8AO8fkBmblGLXaTN8jxm1fd4ckCmyR8k40t0Ng==, tarball: file:projects/data-tables.tgz} + resolution: {integrity: sha512-k9hkV6GDolchp9uuyD1nZ3u4TFaonZB1De1ehQr4Wg5S9AYrYhoAbG+Vj2A7KjVHU24QRgurrCZoisZvOqjeuA==, tarball: file:projects/data-tables.tgz} name: '@rush-temp/data-tables' version: 0.0.0 dependencies: @@ -20054,7 +20098,7 @@ packages: dev: false file:projects/defender-easm.tgz: - resolution: {integrity: sha512-h5Uo7ldIwobzRrXyhbu70jZGV8YpSCcUp05agKjWkjKnRJPulowiLgvc0zEL6+F+uQM+U680BTpXNh5OvWEsFg==, tarball: file:projects/defender-easm.tgz} + resolution: {integrity: sha512-UstHBUzPGcAQfQ5zDXd6Uk+MHpRA37wNFiPfrU29hl3Q2ceYLwuMhSxgaHDTAP9AcbkYhZFXqXNvmtOvpQXcXA==, tarball: file:projects/defender-easm.tgz} name: '@rush-temp/defender-easm' version: 0.0.0 dependencies: @@ -20100,7 +20144,7 @@ packages: dev: false file:projects/dev-tool.tgz: - resolution: {integrity: sha512-EIC4Z/tMm9wzK39F2FYiZG9qwwOSIiysEcpvb/YLip2ooqv0oGWMDBzRDwOl/6iQ+UcsUH8QppzDc6/5OyuSBw==, tarball: file:projects/dev-tool.tgz} + resolution: {integrity: sha512-4yaT0Id5IYs2ZM2Nd3XFSVUdM13TYgBg63sR98VFKC3cjv6Bluf03VHrA3ARHYe8kve5XMHzEV7oqR1pAinkjw==, tarball: file:projects/dev-tool.tgz} name: '@rush-temp/dev-tool' version: 0.0.0 dependencies: @@ -20167,7 +20211,7 @@ packages: dev: false file:projects/developer-devcenter.tgz: - resolution: {integrity: sha512-R3AsW15sEqvB4XaZIsPem9ivdVKk6jVZF/oL684t747eHk+icSk+Sqm4sTWERkH7gtsBJ3EwZGtGzo16U1k0rw==, tarball: file:projects/developer-devcenter.tgz} + resolution: {integrity: sha512-lGaGDQFaU5+nR0+ClTTFi1IpYERIfG96aw+WdQi+MhOTRnUuxDPYbhgSDJmgEgZ/EW9VH739Z6EgUg/lEXfWdw==, tarball: file:projects/developer-devcenter.tgz} name: '@rush-temp/developer-devcenter' version: 0.0.0 dependencies: @@ -20204,7 +20248,7 @@ packages: dev: false file:projects/digital-twins-core.tgz: - resolution: {integrity: sha512-iD/t5pb5P4Slw3Miptm+rad/e/5coffa8RZU+gFbfPbVdFwOcIXIICUxj936Q6LWf0oM1PpJM9nlqyvgCpK77w==, tarball: file:projects/digital-twins-core.tgz} + resolution: {integrity: sha512-THgGU//tAVfF1oOJgz2bxmeZeof303x2zROWH4t96LVlqZSJjIi1y4Pgcy333p4qKj+Z7biTRRVyUNqcxqJyIg==, tarball: file:projects/digital-twins-core.tgz} name: '@rush-temp/digital-twins-core' version: 0.0.0 dependencies: @@ -20249,7 +20293,7 @@ packages: dev: false file:projects/eslint-plugin-azure-sdk-helper.tgz: - resolution: {integrity: sha512-Tyz5l/Zqj2EX2OdLERsw7lz1qJuOQ8OvrUbYuv8yCUR2PLflYsCbCP6RCYZGg+Te0aCqTd9ZlGy9ojtXTrbLPg==, tarball: file:projects/eslint-plugin-azure-sdk-helper.tgz} + resolution: {integrity: sha512-+jKp7kJQUdx9hTcsgZGgUVry7uA6whURH26UpmCUtW+Zlx6JgRs2z5jZ2SSSxsge045zHFenEgF+bc7qO2OB0A==, tarball: file:projects/eslint-plugin-azure-sdk-helper.tgz} name: '@rush-temp/eslint-plugin-azure-sdk-helper' version: 0.0.0 dependencies: @@ -20277,7 +20321,7 @@ packages: dev: false file:projects/eslint-plugin-azure-sdk.tgz: - resolution: {integrity: sha512-o9Sx9CFIU6xi4l9BWsAO79v6CLVusKkgqJIumnejmsUAlXXjcoqXiZmLxtcKld5Rtf7fmGrbqe5XM5kVt/A1Xw==, tarball: file:projects/eslint-plugin-azure-sdk.tgz} + resolution: {integrity: sha512-UBB/CxBwH43rx6dpMzbmraKzS+C27pg6awk5iYNvXv+Rj3N5zMg2VuhXYF6CCf0HniLYzh1oWEPwnX2zIegB1A==, tarball: file:projects/eslint-plugin-azure-sdk.tgz} name: '@rush-temp/eslint-plugin-azure-sdk' version: 0.0.0 dependencies: @@ -20327,7 +20371,7 @@ packages: dev: false file:projects/event-hubs.tgz: - resolution: {integrity: sha512-kLzvIA4Ecp1gLp6oew8JoDxagvXEPAKB9IcNHpes6nKmG3darjaRUVi/Xzs3VUq+tUxzRWkbJQoPEHLLpYlTAA==, tarball: file:projects/event-hubs.tgz} + resolution: {integrity: sha512-yN7AhCoHCrvlkNA0sIpr4JMHpPTXr4WGSWd9TgJ1xMlKfTKfrQaMagpJ+3otVoZm+RC/Ejd1TZUVKpMLTjUL6A==, tarball: file:projects/event-hubs.tgz} name: '@rush-temp/event-hubs' version: 0.0.0 dependencies: @@ -20387,7 +20431,7 @@ packages: dev: false file:projects/eventgrid-namespaces.tgz: - resolution: {integrity: sha512-Vv8DiuUewfkTs7hcWqU41DOHhZzikfNQRXtSHtfJb3/nSyNBNhDrCdjw0hs6sIuLJdyzU6ggYtWa4g/JKkqdww==, tarball: file:projects/eventgrid-namespaces.tgz} + resolution: {integrity: sha512-F0lWgErLGBS3AlFe/QOXfn2N3wOO7tmZ9cYKr6069NbG9DpTfVwZc6syefE9uf4HTPHjbZwi1FPlMw22mTvZcg==, tarball: file:projects/eventgrid-namespaces.tgz} name: '@rush-temp/eventgrid-namespaces' version: 0.0.0 dependencies: @@ -20433,7 +20477,7 @@ packages: dev: false file:projects/eventgrid-system-events.tgz: - resolution: {integrity: sha512-iee4izH8THycmrOu9sGdUBeHzgUV6/j145w8GlZv4JNts6Ma7vZJ7r/SbkWpweCs0mZ987c1g827+NwmwctNFA==, tarball: file:projects/eventgrid-system-events.tgz} + resolution: {integrity: sha512-8RxvhSR1USNr9H1v4GJAooWKtEsQyAnXBVYgh7csCaGDgy83HEghJZri9LO7pX3HT50thCbezm8U+JG/rFtktA==, tarball: file:projects/eventgrid-system-events.tgz} name: '@rush-temp/eventgrid-system-events' version: 0.0.0 dependencies: @@ -20480,7 +20524,7 @@ packages: dev: false file:projects/eventgrid.tgz: - resolution: {integrity: sha512-fxmM1LIwTgjImV8uke9XkzXuyZwjC/ZMpUd/T/a3W5IFSYn03ahKyx/kpGtKBpJSKnNvwOZxEunBzfBfB+t4rg==, tarball: file:projects/eventgrid.tgz} + resolution: {integrity: sha512-rUjIFY9it6/5e886B34KxrydjNRuQntcTjwm834fi9CnRSmEhUB4jWmREOP3+an8X4RdTZVS8ac4MoRlMmq4sQ==, tarball: file:projects/eventgrid.tgz} name: '@rush-temp/eventgrid' version: 0.0.0 dependencies: @@ -20523,7 +20567,7 @@ packages: dev: false file:projects/eventhubs-checkpointstore-blob.tgz: - resolution: {integrity: sha512-WT+sMV4G+l5nLfUcX9hm/6LygU/UCh64auooqLC1g2xgf+sbLnfQz/Bon6UzosLcUDB+VQ36OEj9ZcUYVmkZjQ==, tarball: file:projects/eventhubs-checkpointstore-blob.tgz} + resolution: {integrity: sha512-bXh6wrJKc5kE1MRnpkJ/IXVBMBfRNuGgI+6yucpjWKKsmAqVQ0ZQixbLKTkCYz/PgIFXQK7bIu+QyFbGxBMKYw==, tarball: file:projects/eventhubs-checkpointstore-blob.tgz} name: '@rush-temp/eventhubs-checkpointstore-blob' version: 0.0.0 dependencies: @@ -20571,7 +20615,7 @@ packages: dev: false file:projects/eventhubs-checkpointstore-table.tgz: - resolution: {integrity: sha512-dWuxEt5NklEbYNV8GGmiguQpZuLOhMuDYrSBl+2YbjoTXILyawQPSQMMfs+z9kS4CrebOtsX3eR6dem2msW4bQ==, tarball: file:projects/eventhubs-checkpointstore-table.tgz} + resolution: {integrity: sha512-a84kaTe+d3dl27tZHY8qvZGysvOtd1Ci+CdbYIXa5PWiknZ+YYPCvx2ru9jzX2O8mnEVn56mAnXCbwXh5Y9Ytw==, tarball: file:projects/eventhubs-checkpointstore-table.tgz} name: '@rush-temp/eventhubs-checkpointstore-table' version: 0.0.0 dependencies: @@ -20618,7 +20662,7 @@ packages: dev: false file:projects/functions-authentication-events.tgz: - resolution: {integrity: sha512-PF6B7VDVEQ+UaCduyfC+goQkml/lldhRufnQGGCWsn0qISXgpKh1aUMKZL7P2Gr4oLUivsvJ5Sm2K5ZphV/X8w==, tarball: file:projects/functions-authentication-events.tgz} + resolution: {integrity: sha512-jKxXKfwrhDOxhH7X6d+qRz4tKJqkWrCZg+HkpJ6iamVArnGewzpqTfddtin4xAY3291V6YwY5UQXn6+I+GgW1A==, tarball: file:projects/functions-authentication-events.tgz} name: '@rush-temp/functions-authentication-events' version: 0.0.0 dependencies: @@ -20662,7 +20706,7 @@ packages: dev: false file:projects/health-insights-cancerprofiling.tgz: - resolution: {integrity: sha512-yig0p0axMGmMSLZX0+9BFs+lX38yroe1+f/Lxm1sT9UObWVKFY1fYNUWchQ6GUbu80Qa/rHfO37gs0xn6N+RDQ==, tarball: file:projects/health-insights-cancerprofiling.tgz} + resolution: {integrity: sha512-3UtyKazmssBVW3dYACoTsMnfzMJd7/hRI5ZRGzSEe4rTK2bCvlIBPdOZUYPfFcRM5lri7GBETPY07HVIeSTdbQ==, tarball: file:projects/health-insights-cancerprofiling.tgz} name: '@rush-temp/health-insights-cancerprofiling' version: 0.0.0 dependencies: @@ -20708,7 +20752,7 @@ packages: dev: false file:projects/health-insights-clinicalmatching.tgz: - resolution: {integrity: sha512-O8740G3sfQAsFHd2W6+5v3140AYGcGQ5Jh0btWU+F38BiYAwN3rAW6vMs1Eiq2CbyHt866TIcYHkg4KQHDTdCg==, tarball: file:projects/health-insights-clinicalmatching.tgz} + resolution: {integrity: sha512-/CgrCty1l+uhbuaoSm93LHeTEGRvDXIlUfrbMMlU08/TBPmz3w2Bv2mhdh8MrdXn8rKlvlwjhQVkRRPubIoTXQ==, tarball: file:projects/health-insights-clinicalmatching.tgz} name: '@rush-temp/health-insights-clinicalmatching' version: 0.0.0 dependencies: @@ -20754,7 +20798,7 @@ packages: dev: false file:projects/health-insights-radiologyinsights.tgz: - resolution: {integrity: sha512-K5SKMWt5LcIjOVq+XoafTgteC0iWcON7DnepA0ExvSp6/HZ4nshfaxkddMvQMgGKPptn8B/Y9bImk8S4E/sDCg==, tarball: file:projects/health-insights-radiologyinsights.tgz} + resolution: {integrity: sha512-1SA/faJ+VhGlXfpZUdtZHwsXpLTOuHB64cE/WhUhURSR94tyVPSpZDnGcmAoax7nsD4EqkmyJ3CdBfSzhiGesg==, tarball: file:projects/health-insights-radiologyinsights.tgz} name: '@rush-temp/health-insights-radiologyinsights' version: 0.0.0 dependencies: @@ -20800,7 +20844,7 @@ packages: dev: false file:projects/identity-broker.tgz: - resolution: {integrity: sha512-U+3PZIkUkivp8f1FUuKyybnJFg6VHmLnYwJY6SuPFvPVXRczHpNIbywzcrxuqtBcQd9SBl+CCzkjKNaxCgSsrw==, tarball: file:projects/identity-broker.tgz} + resolution: {integrity: sha512-GaBqD9Vj/x7VDgx8bRtNCJB+zi+Q5oCrgvdPZxgxbQw15UZP7UTZEeHmNoOY++sE6Pjc0kaANW+CsW1iAAfIEA==, tarball: file:projects/identity-broker.tgz} name: '@rush-temp/identity-broker' version: 0.0.0 dependencies: @@ -20827,7 +20871,7 @@ packages: dev: false file:projects/identity-cache-persistence.tgz: - resolution: {integrity: sha512-nz7IkpQuj4gugD375R4wUB24Z7D+aptwjAmEn4qLqa/uqhpUECBFerYhMRQ5i50xBb8nyOdcHPzFc3iVqArkSg==, tarball: file:projects/identity-cache-persistence.tgz} + resolution: {integrity: sha512-mqkgDGORjW3azUX6FLzXwPxryfcg670Tv62/MouduKzc5SLvoraSLL0t6S6wcKttn+/zsHW38A4DMgsLQMHtYw==, tarball: file:projects/identity-cache-persistence.tgz} name: '@rush-temp/identity-cache-persistence' version: 0.0.0 dependencies: @@ -20862,7 +20906,7 @@ packages: dev: false file:projects/identity-vscode.tgz: - resolution: {integrity: sha512-NzSmUjODZhe4R73ASVk3nesLA9HstpAedqiahAcPQNPDJIyQqyFrrDDhuskrpcn2jHFhV+f5AF5xb9AS1BUgKQ==, tarball: file:projects/identity-vscode.tgz} + resolution: {integrity: sha512-2F9GnUpI/mje2JWJyaRaPEXZ3eYWLmt5I6BTAYQ7pxeJ5oqzHg2VvxcJktjg9qkXON97JalI/S1kuKK0Fgu/wg==, tarball: file:projects/identity-vscode.tgz} name: '@rush-temp/identity-vscode' version: 0.0.0 dependencies: @@ -20896,7 +20940,7 @@ packages: dev: false file:projects/identity.tgz: - resolution: {integrity: sha512-54VWfXKgrZ6Ngt+Ue1TCa0NkMtkpOs270qrsApAnlR7c/FtAwT/rr4WabPA0InJChTzAv4kkn412PJgJcEFrWQ==, tarball: file:projects/identity.tgz} + resolution: {integrity: sha512-CSk/UvF0onGHTdTf9EXEHlnW4ilHKigtb52usPeM0nU4ZZA15GcKxoKdYH51ZY/oIjQrobpsQDIIaJX+dVJxlQ==, tarball: file:projects/identity.tgz} name: '@rush-temp/identity' version: 0.0.0 dependencies: @@ -20953,7 +20997,7 @@ packages: dev: false file:projects/iot-device-update.tgz: - resolution: {integrity: sha512-VnUpKCtv3B9IdIWq5JMNS7MbVb7Fk0/7s2loC0+cc6k9rvMtFf0FdO6tHyIz/F38Od7DucqDTiJWoqJj50W+YA==, tarball: file:projects/iot-device-update.tgz} + resolution: {integrity: sha512-d6nrvibhfUzZDl986kASMuQ4cahdGa0iKjgJ+D+GT5lPhtSXn4z5Xiso/foSGIHm7MwNgpYNoRPPBBNV1ojr+A==, tarball: file:projects/iot-device-update.tgz} name: '@rush-temp/iot-device-update' version: 0.0.0 dependencies: @@ -20999,7 +21043,7 @@ packages: dev: false file:projects/iot-modelsrepository.tgz: - resolution: {integrity: sha512-t60+FhsdAnE22BzXtH/yp8RKsM/wRnCUM8WnlmCDeIpjzktE2sSs0nJgi8sW/6XXZqHdZMAVX6l7Co1Jx55FpA==, tarball: file:projects/iot-modelsrepository.tgz} + resolution: {integrity: sha512-BckB8vSfxgT61GGc6n0zF5nEzoE8UJeZMgvqqA/1JiniYwHn3ykExCp8kUvW64G8wpcqXcY+he+MrOoiITZlRQ==, tarball: file:projects/iot-modelsrepository.tgz} name: '@rush-temp/iot-modelsrepository' version: 0.0.0 dependencies: @@ -21043,7 +21087,7 @@ packages: dev: false file:projects/keyvault-admin.tgz: - resolution: {integrity: sha512-KSFKuk2FVkq0wr9uddcRFS/TDaOLx1/JH9UD+3g24wVCgtttZjUWXEr/zFnphbJUx3vZ5a08IX6EFWVkx5+ELw==, tarball: file:projects/keyvault-admin.tgz} + resolution: {integrity: sha512-8iWmu4z6emopwKr8wpGwLn5BR+N+yRD5UYJRwIVFFmn9tcuXVZWGgvmKCAu82wfXs4g/uhA+2phbH5noA8/MRw==, tarball: file:projects/keyvault-admin.tgz} name: '@rush-temp/keyvault-admin' version: 0.0.0 dependencies: @@ -21075,7 +21119,7 @@ packages: dev: false file:projects/keyvault-certificates.tgz: - resolution: {integrity: sha512-cBxwxpJCwb6shJlWE7qEUttwf++wFpmBfb6lvmHPU13ISDnrVjOAmz/QsR9nYXFSR2/KLWrh5A6CojibE5bbNg==, tarball: file:projects/keyvault-certificates.tgz} + resolution: {integrity: sha512-+1JTSq3CY2M/Q6YIPQHE0Ih4yb3Wkt6Pq08qXZjBTLpAjta19Rj/vvqfWo87sMtcVOiPjHm9EXEeFP2m5YFncw==, tarball: file:projects/keyvault-certificates.tgz} name: '@rush-temp/keyvault-certificates' version: 0.0.0 dependencies: @@ -21120,7 +21164,7 @@ packages: dev: false file:projects/keyvault-common.tgz: - resolution: {integrity: sha512-+YM6Mpn6QYH770pSjsKkoBT/OeXlAn0JGu8/VcwqFJMGq+Elo2DtvNAHPNPD94WhzLAATNUzq29bpqOU905QtQ==, tarball: file:projects/keyvault-common.tgz} + resolution: {integrity: sha512-E41ss1ffhaMY+Tm0zVLbHCSQHNt2BQ7v+JR1vVCHpFA20NIW51BcI7ZlD488NmEjIPh/7zrWdOOJLEyefCTgew==, tarball: file:projects/keyvault-common.tgz} name: '@rush-temp/keyvault-common' version: 0.0.0 dependencies: @@ -21148,7 +21192,7 @@ packages: dev: false file:projects/keyvault-keys.tgz: - resolution: {integrity: sha512-n922Qdgx0Fp8P8LeDyAw3n5IoTO21NiAZ+IyRkpSW05Pl6vfYPymBQdhWFSlWtS600KsXlJXVKOfzCOVVie5tw==, tarball: file:projects/keyvault-keys.tgz} + resolution: {integrity: sha512-l416rX8BuL9VefCU7tjzg16EWRzMIjaZWCKrVfbulDKHPbmoNx3cP8oeKo+7iRAaDbsI7h/AOlSy3yQAQ31KXQ==, tarball: file:projects/keyvault-keys.tgz} name: '@rush-temp/keyvault-keys' version: 0.0.0 dependencies: @@ -21194,7 +21238,7 @@ packages: dev: false file:projects/keyvault-secrets.tgz: - resolution: {integrity: sha512-B36dJ6KelZ1+llyrtL4vezmiWksUvqb0AwtOteALVO1BZnrziNkAbarefueUcBBOZT1glx+PTAN3eUxLIFYNLw==, tarball: file:projects/keyvault-secrets.tgz} + resolution: {integrity: sha512-Btn/43rgl2Twxbiqhe+rNwe+udfXl18jsFbTe4Ey6B3HreohqF/1B3bHkY5dwmi123OgJ0pEY1mT9xgiWd+87g==, tarball: file:projects/keyvault-secrets.tgz} name: '@rush-temp/keyvault-secrets' version: 0.0.0 dependencies: @@ -21237,7 +21281,7 @@ packages: dev: false file:projects/load-testing.tgz: - resolution: {integrity: sha512-9aO4O0IlPtGhDs+u+NRB+SnvCT44vdxKVpy+lQBTbOOnq2L3DyDXN1ZuxRa7mU9/14gkG3b/KJ6b85RqmBzg6w==, tarball: file:projects/load-testing.tgz} + resolution: {integrity: sha512-5agthlbBMPHN0ENVqSwR/Ii3YdD73NL5idFi1Ya3PcBGMVAPzhqesfKSW2TZK9BMjlgJepE5ywz4h5HU0UBs2w==, tarball: file:projects/load-testing.tgz} name: '@rush-temp/load-testing' version: 0.0.0 dependencies: @@ -21285,7 +21329,7 @@ packages: dev: false file:projects/logger.tgz: - resolution: {integrity: sha512-QndpT+F5PaincETzvQEpL0rQDlyhscmkjRq8uZiCFF9RLsS90bO+28gbnDNZjZrJrloC7tPBPgHgR7a8KbM2zg==, tarball: file:projects/logger.tgz} + resolution: {integrity: sha512-YEifo8hRqS2gPKOEhhZWpoa/0VkQQYfeHBzYXY0f1Ijz1/iOBINWzpsPoJ81Zg5IyjbMtKdoBO1GbvfkJ3mvGw==, tarball: file:projects/logger.tgz} name: '@rush-temp/logger' version: 0.0.0 dependencies: @@ -21318,7 +21362,7 @@ packages: dev: false file:projects/maps-common.tgz: - resolution: {integrity: sha512-ie4mmvoq1Eumbi10tW4xGkWfjJMg90DWyWAMJ0yUz/lsToiplEIDJhng7MkYe6X8RwnsEzh2I7eDLFZ6WugsXw==, tarball: file:projects/maps-common.tgz} + resolution: {integrity: sha512-CMbuqIiqnFrFojx4SrpNwONizw7JiJtje064R9+FRWbPa/083Fyb5by9Elt5Sr8Fq4B//sYBadKGGQZFD4+IQg==, tarball: file:projects/maps-common.tgz} name: '@rush-temp/maps-common' version: 0.0.0 dependencies: @@ -21337,7 +21381,7 @@ packages: dev: false file:projects/maps-geolocation.tgz: - resolution: {integrity: sha512-GrFSJHsJNL/g7xGWtBtsnnrRjtCGju51cXXsdu0gE0lekUvt62c34G4YQ8qqU6f5M7qbV2y5STjCLQav/pfhcw==, tarball: file:projects/maps-geolocation.tgz} + resolution: {integrity: sha512-xbiORisW3U67cVdTTVaP2AwX99LH6XGi8uJg3sAkS0UPJDXyUybUwR9h7FAvkW6YBFa/MkRcL5ZUWNcCfB1+AA==, tarball: file:projects/maps-geolocation.tgz} name: '@rush-temp/maps-geolocation' version: 0.0.0 dependencies: @@ -21382,7 +21426,7 @@ packages: dev: false file:projects/maps-render.tgz: - resolution: {integrity: sha512-2bcud4nkGwDpYw0dp4Kx7k6WbxIrntskSV47XkAnN7mb5L5KQCLjuDncQoVPpvz1g2JA1pY38VzuZ+lKVOO9Tw==, tarball: file:projects/maps-render.tgz} + resolution: {integrity: sha512-QNDyC2y1/XQn/tqh69nA+5iJF12wT+z23Ti3eho0iMn8tpMMhB/1meiOkDMeQ335jUlLjUe/2GNxRX2UGZ3L4Q==, tarball: file:projects/maps-render.tgz} name: '@rush-temp/maps-render' version: 0.0.0 dependencies: @@ -21427,7 +21471,7 @@ packages: dev: false file:projects/maps-route.tgz: - resolution: {integrity: sha512-z8TiYfGSj7iFSdDANOjM5vIz4FcXVeD07gYtOsB8vWMumXmYJ8pVQkKsCOrMViZ3sKwZuPhqD9clFd+WAA9xYQ==, tarball: file:projects/maps-route.tgz} + resolution: {integrity: sha512-y935GKYGt8ZNbpfLek6SS1fhlJI8YOl3/wLAXjW5mzGIPoDA9ZZhrqoksyP9/Gg8syUAHhzz12E2JaN7IzaCNg==, tarball: file:projects/maps-route.tgz} name: '@rush-temp/maps-route' version: 0.0.0 dependencies: @@ -21473,7 +21517,7 @@ packages: dev: false file:projects/maps-search.tgz: - resolution: {integrity: sha512-jwWWO2OdoN3yjBZyLh+OkVTfWM/z/l/QOkQgLf+k0WD6bogui2J1pLOspvDE3d8FqzJj4HRdWcBPDW87lvf+Rw==, tarball: file:projects/maps-search.tgz} + resolution: {integrity: sha512-FbVFTwnJcPbxTt2o51nTbt3oKj2U+vtvvZInw1T/LxBDlkoWJRpF5TBQrRRgsLmdDowZnM44+RJyUMVIHbUm5w==, tarball: file:projects/maps-search.tgz} name: '@rush-temp/maps-search' version: 0.0.0 dependencies: @@ -21519,7 +21563,7 @@ packages: dev: false file:projects/mixed-reality-authentication.tgz: - resolution: {integrity: sha512-adXYa6cLCcF45ztJ7aE2CgyUpR5mEQzxnWxqvkoEmnE5yRMx7G6371i0SFmOXTZMYEjiSnUbaG9v4TwpOgkK6A==, tarball: file:projects/mixed-reality-authentication.tgz} + resolution: {integrity: sha512-2lGfF6hN64COe2qoohcBPdnw9zFX8JarL4VqEjSz+aClIT0sCt1XW9+u5HUDb2BrLe2uBJZtHFQKy02CZH8yHw==, tarball: file:projects/mixed-reality-authentication.tgz} name: '@rush-temp/mixed-reality-authentication' version: 0.0.0 dependencies: @@ -21562,7 +21606,7 @@ packages: dev: false file:projects/mixed-reality-remote-rendering.tgz: - resolution: {integrity: sha512-JdtEAsWAlW15ZHQ4pI5NnliGShDIZjsecAOFYWrZXNLcpJ92toobkzAH87osNEl28ece4OPO+DPf17M2woM2GA==, tarball: file:projects/mixed-reality-remote-rendering.tgz} + resolution: {integrity: sha512-HqSQ9+foIaGACv3TKVS2/Lq47mZkBKkxBzDew0Ms1zzgBmsQdgSu0NnDxmV6lGvf7HbvMveZ3S6pquUN55ZXhg==, tarball: file:projects/mixed-reality-remote-rendering.tgz} name: '@rush-temp/mixed-reality-remote-rendering' version: 0.0.0 dependencies: @@ -21609,7 +21653,7 @@ packages: dev: false file:projects/mock-hub.tgz: - resolution: {integrity: sha512-4WhizFIjyuL8FOmA9YLGc6ikFKryBeJ0rq/2I+9HRmMcgyb3JWmBh1GXIpvSct/k0uDkAMJrmiSbN6IUyu9ajQ==, tarball: file:projects/mock-hub.tgz} + resolution: {integrity: sha512-YM2/69o8v9wKv35ao8/RFV2UbYlR+vBLN85OjeJEYZfSxxhJv4sQFA1A/YDYWQw51+tTeEVyd0WZsDIUzGRqPA==, tarball: file:projects/mock-hub.tgz} name: '@rush-temp/mock-hub' version: 0.0.0 dependencies: @@ -21629,7 +21673,7 @@ packages: dev: false file:projects/monitor-ingestion.tgz: - resolution: {integrity: sha512-YKeHQblbgAYEPtVucptissdrlsIIBOO/9dQDh6gJd37gbX0EsWL0ULj8as9g1PeMqC++6E4cgYAFHnKMOXlyjA==, tarball: file:projects/monitor-ingestion.tgz} + resolution: {integrity: sha512-3Ds6pVN2lNVppqWk7Oh4aH4N4vr9uORdJPv+BwmqXXjfC9rq7bbULYruQUqx0+IfUf+GBXOmqU6WE+hXyiqxFg==, tarball: file:projects/monitor-ingestion.tgz} name: '@rush-temp/monitor-ingestion' version: 0.0.0 dependencies: @@ -21677,7 +21721,7 @@ packages: dev: false file:projects/monitor-opentelemetry-exporter.tgz: - resolution: {integrity: sha512-DLCBs7B7jFnBanhI5OmCu48+jh4q1tbf3Rf+qui9tVPBPJAxx7LWuyz3rAbD1cLxC/pIZDzOA2IXLtuRO3ai2w==, tarball: file:projects/monitor-opentelemetry-exporter.tgz} + resolution: {integrity: sha512-THCZ8/z1Qc+U4/4ntiTnclMUB2OL5GkjYwcdQ9zNpO1ImMSNzFPwjMyEEAV/O9VEY2uz449K6X23ykolvK/XHQ==, tarball: file:projects/monitor-opentelemetry-exporter.tgz} name: '@rush-temp/monitor-opentelemetry-exporter' version: 0.0.0 dependencies: @@ -21712,7 +21756,7 @@ packages: dev: false file:projects/monitor-opentelemetry.tgz: - resolution: {integrity: sha512-DT1Mvtth5r6VJMLmtDrn2mhYxNWlNmrVkyo1axOv61TStfwCNiDDnJLhsBNYDpKn0aaVWyBN3nkepjYvR2CIpQ==, tarball: file:projects/monitor-opentelemetry.tgz} + resolution: {integrity: sha512-Hq9xVY3qP2881jkZqlLQPKdMlggy5/5zOGhyHRYrcM4kPj/g/L/WN8V9BbnTi3dUilDFtCsQwj2+ZPyR3T7eYg==, tarball: file:projects/monitor-opentelemetry.tgz} name: '@rush-temp/monitor-opentelemetry' version: 0.0.0 dependencies: @@ -21760,7 +21804,7 @@ packages: dev: false file:projects/monitor-query.tgz: - resolution: {integrity: sha512-jkj74IfR/qV//DfXlxr10OsWEf1Q4QIrtU/DFYN4NA+fdvNBAGmvAiTwaeR9Uwc0SYK7FXxSSqNtwRYeQkoBNA==, tarball: file:projects/monitor-query.tgz} + resolution: {integrity: sha512-KEsOGWg1acrJfys024t4+thhVcD5v9tlH5mByFbTpnNCFIsjAVq5NErGDCrmq4Cz32UHkDDCHg4e1vUyCKG8ow==, tarball: file:projects/monitor-query.tgz} name: '@rush-temp/monitor-query' version: 0.0.0 dependencies: @@ -21804,7 +21848,7 @@ packages: dev: false file:projects/notification-hubs.tgz: - resolution: {integrity: sha512-GdcZTYC2d2GYAnr+Hw/rDxDN6oFoCjQfpMHewtM+YUohSG08NWD1934VeLXumqPSlIqtl189DwPyETod5cg6hA==, tarball: file:projects/notification-hubs.tgz} + resolution: {integrity: sha512-9X7n3eHV7pvBIBeeCKWAvJCdi5mV6BurnW3xlnWz+oVPyoO8qdy/VyJ90Lh9Gq2YSUawHKqJPlejh6ZE16o6Iw==, tarball: file:projects/notification-hubs.tgz} name: '@rush-temp/notification-hubs' version: 0.0.0 dependencies: @@ -21838,7 +21882,7 @@ packages: dev: false file:projects/openai-1.tgz: - resolution: {integrity: sha512-xnzyX3aeDMcNWCHFipw6d0giShFMsPA7DEhYsXuzILJ7zioQcQiUMZik1g3ncWtsDe8YY6DnsLwmZj0sIydQ/A==, tarball: file:projects/openai-1.tgz} + resolution: {integrity: sha512-Sm4iRoMeO31dhGyG2e6EuVHfM5FIrgU3dsS1ogGU5YpR9CgrpEcu8rP2OO03RK7ILfiFBfCEYiADdG6+/Ks0gQ==, tarball: file:projects/openai-1.tgz} name: '@rush-temp/openai-1' version: 0.0.0 dependencies: @@ -21882,7 +21926,7 @@ packages: dev: false file:projects/openai-assistants.tgz: - resolution: {integrity: sha512-k6f6vS3s1LcV4i2YM36uFS5FIq6JS9ugbABQjPB9NihzTukmyDarRdPfmFhLf3sAsAOBslLRmhoHWTXASoVDWg==, tarball: file:projects/openai-assistants.tgz} + resolution: {integrity: sha512-uxNQA3OyuuVvMiE4Tfcph3IhRWmwCVsV9n6i0eIcBAX7QbAEExP/5z9c0xgzGqRUDls75DbKL1MhJmAlSkQVmg==, tarball: file:projects/openai-assistants.tgz} name: '@rush-temp/openai-assistants' version: 0.0.0 dependencies: @@ -21924,7 +21968,7 @@ packages: dev: false file:projects/openai.tgz: - resolution: {integrity: sha512-hfjSqU0PVUz4N6GgVUsLpJeA0IzDq6DmrVJf5526aDFr5PapDGZ+Eoqg/rlfnwU/ZY43hB5qt5+O4MfI4xEObA==, tarball: file:projects/openai.tgz} + resolution: {integrity: sha512-ugzNwxKtjXxpy5MrhoBBptL4QGHxU07I5J9Lk5S8x8k2/01hcZF18tkJ+7b43RSjVqTBOGtSRMtYSlpz5l2sPw==, tarball: file:projects/openai.tgz} name: '@rush-temp/openai' version: 0.0.0 dependencies: @@ -21946,7 +21990,7 @@ packages: dev: false file:projects/opentelemetry-instrumentation-azure-sdk.tgz: - resolution: {integrity: sha512-tFeuc1SyGC8FwcA3a3Hz+UByxiKGHshmcS1Pdx7htfN/GqvdG2vNg2HZ0WJZ5iF6WwdnzLjqTv87XXiKoBEAEg==, tarball: file:projects/opentelemetry-instrumentation-azure-sdk.tgz} + resolution: {integrity: sha512-Ls1/YZuM4cIFlGDbRrYIpBAgpuCrnbXY+HVl1tU7N3YMP7k8VJH4i0aUmmniNYRhWTWF8z6hU+6uhzyxdQG0MA==, tarball: file:projects/opentelemetry-instrumentation-azure-sdk.tgz} name: '@rush-temp/opentelemetry-instrumentation-azure-sdk' version: 0.0.0 dependencies: @@ -21990,7 +22034,7 @@ packages: dev: false file:projects/perf-ai-form-recognizer.tgz: - resolution: {integrity: sha512-+KuBP2SR384YNmeHYlFU+GHOCFUAcPKBe9f+Cl56R3r88f2XM8B0ihGyHjnySyVnMhmu7x4+XQlUHTeDH32FTQ==, tarball: file:projects/perf-ai-form-recognizer.tgz} + resolution: {integrity: sha512-ZimQvFagjld3NUguPTSBqCAkN2OD+/Vxip7+JCyUohmTx+2SFQA7tq7XVKHhqnmfqYuUcwNSLUSgmKbcypWb7w==, tarball: file:projects/perf-ai-form-recognizer.tgz} name: '@rush-temp/perf-ai-form-recognizer' version: 0.0.0 dependencies: @@ -22008,7 +22052,7 @@ packages: dev: false file:projects/perf-ai-language-text.tgz: - resolution: {integrity: sha512-6oeGwzLVSA/kQ/iPpvVa/ZxtAvkpu5NUg7EcpiT0sEES0zTnM5qwpE9JD1raeugKyegZy83cQWe1KQm2ReO7Xg==, tarball: file:projects/perf-ai-language-text.tgz} + resolution: {integrity: sha512-/XM+YL0cOh4QA/6y6SDesog75dZl2OidXiXV3FbZ9o25/WDXbhzo+s82E9xfhJNG2xbu7YeCiRTXrMPeX4+eUg==, tarball: file:projects/perf-ai-language-text.tgz} name: '@rush-temp/perf-ai-language-text' version: 0.0.0 dependencies: @@ -22026,7 +22070,7 @@ packages: dev: false file:projects/perf-ai-metrics-advisor.tgz: - resolution: {integrity: sha512-riEJQZzStyZFOn9DFvVALh1u7l4m1LE2gJR539zMtCG35DtvYIpXctYBFQiSk2yNz2iF4NBJx2Mb/w+UouPryA==, tarball: file:projects/perf-ai-metrics-advisor.tgz} + resolution: {integrity: sha512-uFklYxMKebBVlMr+MfLCoHnh+blJN/nyNCckjRwF8c8QrO4hQG/7TP0rNn8bRZH1YPlETazOzdhm9Ze7ReDC+A==, tarball: file:projects/perf-ai-metrics-advisor.tgz} name: '@rush-temp/perf-ai-metrics-advisor' version: 0.0.0 dependencies: @@ -22044,7 +22088,7 @@ packages: dev: false file:projects/perf-ai-text-analytics.tgz: - resolution: {integrity: sha512-wdNACB1vF5oYMAmUQiRpDCLfXVCU+4ZNvIO3MbGiihju6G2nEjrT0qVKpWYVgDSHNX92D/MjucrSsTocPziNgA==, tarball: file:projects/perf-ai-text-analytics.tgz} + resolution: {integrity: sha512-vWMNlBzzWZKsIZkZAkIqJeZ0wZw968O5NlKcIbMWEhT4ktToyeCOkzWlr+eHuREo9zK2l7+nsjOK0FzHodfsVQ==, tarball: file:projects/perf-ai-text-analytics.tgz} name: '@rush-temp/perf-ai-text-analytics' version: 0.0.0 dependencies: @@ -22062,7 +22106,7 @@ packages: dev: false file:projects/perf-app-configuration.tgz: - resolution: {integrity: sha512-jIpIH7Psl3P7saITtpqFL77GAPSmJ7HaOI9UT2u8vumSrFWGko26d5rpM+EFE0s6VSEenLN/8xxFGXmDO1/1zw==, tarball: file:projects/perf-app-configuration.tgz} + resolution: {integrity: sha512-yH3GCyUaVFuIc5Fx/xHuToZK0NanODuc0k8TRzfcaEN0+xEr0j8bOkHGZ5F7ryyROO9jaJzc/pz7b6hyxOqtnw==, tarball: file:projects/perf-app-configuration.tgz} name: '@rush-temp/perf-app-configuration' version: 0.0.0 dependencies: @@ -22081,7 +22125,7 @@ packages: dev: false file:projects/perf-container-registry.tgz: - resolution: {integrity: sha512-W9DFe+27HoYl8e9bCYWQPaFjtRxJPG8sJkPOON4aIHELO22NDNY4oPlQ6OYFKrOfApORU207jYaQV/xIS8pblg==, tarball: file:projects/perf-container-registry.tgz} + resolution: {integrity: sha512-PP4GcU3xYYApVoB1YxZ+mbp+WkmPKNvPV5tB3IgShYa/yrDfrCGMAaSKZS4UpMzOde7++xi93R9aHhnZnOhqzg==, tarball: file:projects/perf-container-registry.tgz} name: '@rush-temp/perf-container-registry' version: 0.0.0 dependencies: @@ -22099,7 +22143,7 @@ packages: dev: false file:projects/perf-core-rest-pipeline.tgz: - resolution: {integrity: sha512-332Okh8wMvpl53GnWplq/bz9rXOJr5Loe5NsUr+BWzHyZ582cQLfKxEOC0laNQkcn5ijCRuvBRXjzHj5L4c/MQ==, tarball: file:projects/perf-core-rest-pipeline.tgz} + resolution: {integrity: sha512-gUEA7TVFT7UbP+NwVhQYhS9SML8v7EbO/WdcqoN3cRNIuyYRJ0ON6sEHrjm5h2vgGyv+9BpLipxvJ/CsCz7hWw==, tarball: file:projects/perf-core-rest-pipeline.tgz} name: '@rush-temp/perf-core-rest-pipeline' version: 0.0.0 dependencies: @@ -22121,7 +22165,7 @@ packages: dev: false file:projects/perf-data-tables.tgz: - resolution: {integrity: sha512-CJ8Nveln5WMWkLqE06GVZtTumulIwjnQX3dWnCqi8lytwoGrH8H+fFGpkXcJCAVhWtGKHsVtV9Cu6xFyzYr/Ng==, tarball: file:projects/perf-data-tables.tgz} + resolution: {integrity: sha512-CuECh5wyMvGA21e1ZxnnKsD0OHmJ6u9iIzn58P37BMp2U6AOdzA1+6Ve/6I+GP82FdehQzHP4DILidorrZrdnw==, tarball: file:projects/perf-data-tables.tgz} name: '@rush-temp/perf-data-tables' version: 0.0.0 dependencies: @@ -22139,7 +22183,7 @@ packages: dev: false file:projects/perf-event-hubs.tgz: - resolution: {integrity: sha512-meAKpjq71yJrPhlM9k9d7zyWdAGXF/YppSZIvyM7UgkrTESMlXScx/rCkeK1c3IfM9PuV380C4xM//0UGiCmLQ==, tarball: file:projects/perf-event-hubs.tgz} + resolution: {integrity: sha512-XcspnaxQqDYmY/ATVfrjDlzOgx1LzCFQuWvOkXDYydfUTYwOEEtZhz5ZVXIJ26vVmDTWg5AlBs1vZ+UAOCItsQ==, tarball: file:projects/perf-event-hubs.tgz} name: '@rush-temp/perf-event-hubs' version: 0.0.0 dependencies: @@ -22162,7 +22206,7 @@ packages: dev: false file:projects/perf-eventgrid.tgz: - resolution: {integrity: sha512-rfPtLsSSCICLcAc4tY6LPolQ1k5BkEPYAmLu806stsdp40OMn1m7HFPOQiezG8eL22FbUjfiTMWKd9f5AvxTLg==, tarball: file:projects/perf-eventgrid.tgz} + resolution: {integrity: sha512-UNKjJtAuoW6BpkNXnjYeyREI/tjYC40HaFGK0yS8UZabqUOImYQ+soj3WdMmbB08T9uz1t0BggIWwKHW9lX2mw==, tarball: file:projects/perf-eventgrid.tgz} name: '@rush-temp/perf-eventgrid' version: 0.0.0 dependencies: @@ -22180,7 +22224,7 @@ packages: dev: false file:projects/perf-identity.tgz: - resolution: {integrity: sha512-I/Rr69oEo8wyK3wMUTsjq1Nl7gCfdSasGE6f0opDQ7FDPLpDgh2o2ZGPPaK7A8h93hH+UdFXlYzztIMNum7F0A==, tarball: file:projects/perf-identity.tgz} + resolution: {integrity: sha512-ekjjCME0fGFHQkZSjPlq5+EJCXPu9wPbI4bEYLIxCse5EKIdUD50FuIG2U1Sody36engDiaoB7DNKg6KGU4xuQ==, tarball: file:projects/perf-identity.tgz} name: '@rush-temp/perf-identity' version: 0.0.0 dependencies: @@ -22199,7 +22243,7 @@ packages: dev: false file:projects/perf-keyvault-certificates.tgz: - resolution: {integrity: sha512-WG5HIpno7Oy1FdN7LyUBEUBGttho6QCbRVe2vlS9AjqJJpzJb37Bso+sNkLo/J6XQYko1S0TY2ve5YX04Hgovw==, tarball: file:projects/perf-keyvault-certificates.tgz} + resolution: {integrity: sha512-5JhTF+z68ew3rhHlZ6dFWw/CrnyMPItsU/nfvwO4CgD+TBHUfBii6PDtGcSMKbl2JPaYlz32W9qWOKJZ5wgUdg==, tarball: file:projects/perf-keyvault-certificates.tgz} name: '@rush-temp/perf-keyvault-certificates' version: 0.0.0 dependencies: @@ -22219,7 +22263,7 @@ packages: dev: false file:projects/perf-keyvault-keys.tgz: - resolution: {integrity: sha512-/fK2sMtFBEwTyUZAMuHuA6KuB8szrK1r4yElXef+7zJrfGi/MP0TEmHjBER56fLTcmW7s2vXWaa2skOC2Sb91A==, tarball: file:projects/perf-keyvault-keys.tgz} + resolution: {integrity: sha512-6R0jvXOe17ec35pOLCzqCU1yz7/OT+Ck2KjnVt3QWfG6280ED0Fy86NubpnNUiEQkdROHb8HSqMxXiHZAJUeMg==, tarball: file:projects/perf-keyvault-keys.tgz} name: '@rush-temp/perf-keyvault-keys' version: 0.0.0 dependencies: @@ -22239,7 +22283,7 @@ packages: dev: false file:projects/perf-keyvault-secrets.tgz: - resolution: {integrity: sha512-1Mt4IwhuM/wkuEfAXuWkOnB9V8owMtSL3vCyfZnTutSV3zIPabBQVUIYDZmEas0mtCgD6ZCYSgBk3qZmzWBN0w==, tarball: file:projects/perf-keyvault-secrets.tgz} + resolution: {integrity: sha512-/THA+W+LGpKYCY114rxmy+zC7Z8kEYoB2CXdTx09tw9qjVXhL/d1sz1iob0BJtdo8lATr+6aLznWDs+Iy/7b/g==, tarball: file:projects/perf-keyvault-secrets.tgz} name: '@rush-temp/perf-keyvault-secrets' version: 0.0.0 dependencies: @@ -22259,7 +22303,7 @@ packages: dev: false file:projects/perf-monitor-ingestion.tgz: - resolution: {integrity: sha512-YOfywZ7xx/0VpGv9NWgJ+ye2Q4eiewnZM/TYWIhqvEqhuByvSgUwUsHx07VNcjA6VLbIT8kBKS0WulhVHruFYg==, tarball: file:projects/perf-monitor-ingestion.tgz} + resolution: {integrity: sha512-A6lSPloVzlOrWadm3W9hFSoSEW61biKjfezBS2tpsEKckalCSxWX/Oxki05txlgr01aquouoe2pd1T7orhpnTQ==, tarball: file:projects/perf-monitor-ingestion.tgz} name: '@rush-temp/perf-monitor-ingestion' version: 0.0.0 dependencies: @@ -22277,7 +22321,7 @@ packages: dev: false file:projects/perf-monitor-opentelemetry.tgz: - resolution: {integrity: sha512-I1eo+a1dvIARu67MYq0TWZN6HH3Tf8Wn04d6MDDQOmzPPoa5MvaDV+Y78BrvTbSbqmc83l/yzONPy0zoV+zCmA==, tarball: file:projects/perf-monitor-opentelemetry.tgz} + resolution: {integrity: sha512-2v5GOjmE5tbEyGbufxPszhxguQnQumLT9S3bZEbmmbq14VrQOIJl+m4IYAgnSXO+JRU0Gr8cdW0MstGnam7cdg==, tarball: file:projects/perf-monitor-opentelemetry.tgz} name: '@rush-temp/perf-monitor-opentelemetry' version: 0.0.0 dependencies: @@ -22295,7 +22339,7 @@ packages: dev: false file:projects/perf-monitor-query.tgz: - resolution: {integrity: sha512-En708rGZKye3xCHfJ4OOeUsWvbMFkOEnrfk0I6tJrao2bwjFmviPaxXS3U/AMUINtaJUNeHeGsbjZBzRM1ojAA==, tarball: file:projects/perf-monitor-query.tgz} + resolution: {integrity: sha512-PUW86zARf42nX9tiVdRECJ1lHO4r8GSkmch3OpOhBHONP5pEgGnKS+aI3b70RVBw8f8xlXzyjWGPLBNgZIqLkg==, tarball: file:projects/perf-monitor-query.tgz} name: '@rush-temp/perf-monitor-query' version: 0.0.0 dependencies: @@ -22313,7 +22357,7 @@ packages: dev: false file:projects/perf-schema-registry-avro.tgz: - resolution: {integrity: sha512-qhvn9WUH2xCEB5bLOlKODSDzNrhmL+zElkWDEWefNnbXjaPT6zy0NCilt8L+sTnVXxnxqGRfZkmKPMaykpPVZw==, tarball: file:projects/perf-schema-registry-avro.tgz} + resolution: {integrity: sha512-vkVXGUo194Qcb2l1q0ezK8SEobpLNzJgSu7SadVoME4oux8RazFtPl0nQqZ4MlxD8pUiNrpEJwV7QA/EYSU19w==, tarball: file:projects/perf-schema-registry-avro.tgz} name: '@rush-temp/perf-schema-registry-avro' version: 0.0.0 dependencies: @@ -22331,7 +22375,7 @@ packages: dev: false file:projects/perf-search-documents.tgz: - resolution: {integrity: sha512-7g1zS4ojRIdEZK4JWfqTN5QRJVoFl8OHhWUOGIPGf4/BZYv79frZv6KuaPEaomNPbF/a7BxMSvkCEQVmnk8QIA==, tarball: file:projects/perf-search-documents.tgz} + resolution: {integrity: sha512-7WoDqB4mrgS/tChG5YTjyFg1sTPooIPqof6nhCjmvIUYxnHl3RWHWR2BnXWSO2wnMMf9uzpe21oiWKNFN3qWgQ==, tarball: file:projects/perf-search-documents.tgz} name: '@rush-temp/perf-search-documents' version: 0.0.0 dependencies: @@ -22350,7 +22394,7 @@ packages: dev: false file:projects/perf-service-bus.tgz: - resolution: {integrity: sha512-x4szD9pboHyqNa0Zc2HU/3teE3PlPsHnwF+vEXNjR2YFfrfVo6sGEk9KmEzpO9lYKHF5AKh8HvBAltXdFpwEaw==, tarball: file:projects/perf-service-bus.tgz} + resolution: {integrity: sha512-BEwGslYbUSg8CGxjLxn+dXxWy11xELFDFH964lrP1DV8g1eVypQND/FTFCZyFUjyQ5a+Q9SAy8ISQ0m8Kk9n9Q==, tarball: file:projects/perf-service-bus.tgz} name: '@rush-temp/perf-service-bus' version: 0.0.0 dependencies: @@ -22370,7 +22414,7 @@ packages: dev: false file:projects/perf-storage-blob.tgz: - resolution: {integrity: sha512-yVTYNRP9+9rQ/Nhkii511c+hb3A90XY065OHEXM5vGCEZ1hyVeMZ7Gd+z8UYy3xh/fr+Oi+IncW4hZceLI9ObQ==, tarball: file:projects/perf-storage-blob.tgz} + resolution: {integrity: sha512-dQH/HCO5kW72KABjr8hCRLsNc2GHR4g0+OQhY6mu5gpDD/vpdIYFQF5zLJitWQeeoxsuZD1nPBUFZhuEILTrxw==, tarball: file:projects/perf-storage-blob.tgz} name: '@rush-temp/perf-storage-blob' version: 0.0.0 dependencies: @@ -22389,7 +22433,7 @@ packages: dev: false file:projects/perf-storage-file-datalake.tgz: - resolution: {integrity: sha512-x8YgFWyPt+2hyvC+q08NQ2D2/s3QOoNjBFXNWAU4auGP3l2jdddxIhh3bnJbSyp7IGU07zQo6vKEJ9bxQk78sw==, tarball: file:projects/perf-storage-file-datalake.tgz} + resolution: {integrity: sha512-sthamhhXTGk8YBAsCfhcJhx8AEPNLry8p4rF4UjJXdU08FxPoYR9l2FRrxLOBFdoL7lpDqT5AKrM1rAOiufKyg==, tarball: file:projects/perf-storage-file-datalake.tgz} name: '@rush-temp/perf-storage-file-datalake' version: 0.0.0 dependencies: @@ -22408,7 +22452,7 @@ packages: dev: false file:projects/perf-storage-file-share.tgz: - resolution: {integrity: sha512-ZK5goSLQ8IOlRiT6Waazk7vEPK3Y+jqO7H4O4z/bMwDgEtdCCOOe55+t1i5Zvyyj/Ig57o8PtKmPwj89XgvSRw==, tarball: file:projects/perf-storage-file-share.tgz} + resolution: {integrity: sha512-WiIi9DG+2U8Gh/1+NJ/OraG2LIa2jUue2p5rP6llrxHXU1blLhc3c5YvFJVUS6YGlP+mgBc2x6qqY54YUhheAA==, tarball: file:projects/perf-storage-file-share.tgz} name: '@rush-temp/perf-storage-file-share' version: 0.0.0 dependencies: @@ -22427,7 +22471,7 @@ packages: dev: false file:projects/perf-template.tgz: - resolution: {integrity: sha512-IaVbMRCx5IFaokjjVlo4hVgBwM2Mf2i+TtMavjV8cK2iuAc2IuqeE6Kxyaz55tgdxVyfsaXdkwlOEXWJh2oP9Q==, tarball: file:projects/perf-template.tgz} + resolution: {integrity: sha512-rymJHtIczFZ6/i2F0Bfc6oWE3aWfef6UVLHJEH1I8UK88gBI3YvYQFO04FHlSAoCzD1jV22Y7V2cXpR9vwsfqw==, tarball: file:projects/perf-template.tgz} name: '@rush-temp/perf-template' version: 0.0.0 dependencies: @@ -22446,7 +22490,7 @@ packages: dev: false file:projects/purview-administration.tgz: - resolution: {integrity: sha512-im4fbXzLqROlt842GEBrYAXOMmU2eRHYS1wMT1cjRcT16/DmjDVvEMJa0GXeLUK+PCH4JYjFytZAyyytprmmUA==, tarball: file:projects/purview-administration.tgz} + resolution: {integrity: sha512-vMx3NJPGFhVdB1LGh1JDI95OHXASjGjZVb4V66d+fATyCH2cgwrtan1ko2tJiuLtiaXZfYor5EJcKk8P2mdx4A==, tarball: file:projects/purview-administration.tgz} name: '@rush-temp/purview-administration' version: 0.0.0 dependencies: @@ -22489,7 +22533,7 @@ packages: dev: false file:projects/purview-catalog.tgz: - resolution: {integrity: sha512-622i6Nn7KvO6DwBs5hnR9Zh3lIMJ3rURicey9qoumuPHHNX0QNeNeyzs79Lnj2xNRCrWWY8u6OTyt8IB9kpzDA==, tarball: file:projects/purview-catalog.tgz} + resolution: {integrity: sha512-3fZ7A9m/SpZ8QEmx6SDl7gFFWIucSWOzQL/3+KfIvfrRM9cGiNodQ0AFs2CbmBb9IZ1jxhtYN1GH9GQ2lBfH+A==, tarball: file:projects/purview-catalog.tgz} name: '@rush-temp/purview-catalog' version: 0.0.0 dependencies: @@ -22533,7 +22577,7 @@ packages: dev: false file:projects/purview-datamap.tgz: - resolution: {integrity: sha512-MKf154evmKFTBD68rwGXTKraZkk3566Pigr7ELV6oezp0AqzSOHm7hvkY7ClsIbUFbKjKFYthhZIJz8lJU2P2Q==, tarball: file:projects/purview-datamap.tgz} + resolution: {integrity: sha512-/wH0Gtw/rsHl5fbtl0c8YTT7PBiKGk3OUBP79il72qMkKGlz2Oo+XJdgFG6oaiRuDP3WBci8zV3kCu/Jfba2Xg==, tarball: file:projects/purview-datamap.tgz} name: '@rush-temp/purview-datamap' version: 0.0.0 dependencies: @@ -22577,7 +22621,7 @@ packages: dev: false file:projects/purview-scanning.tgz: - resolution: {integrity: sha512-nPvweTsQ0oCksf0hLp6MMzEaPxR8xOoMh2Eaz7X/0CsaOhPQco1ZjNBDdBzfnpBSsqVRQWIW5UnzzlBMPumeKw==, tarball: file:projects/purview-scanning.tgz} + resolution: {integrity: sha512-+PdB3VYaastBuSOUUgCR0G9dxMk32R4INgxwy9jCZ2nTbeFbT9GzGZJ6eWFLu3Hbu1ZBIsQHprEjN1qvXWAxKw==, tarball: file:projects/purview-scanning.tgz} name: '@rush-temp/purview-scanning' version: 0.0.0 dependencies: @@ -22620,7 +22664,7 @@ packages: dev: false file:projects/purview-sharing.tgz: - resolution: {integrity: sha512-fjfwG3L6utC26BjuhJxdPBZ+8b89gJK3IwXSepOZ1UOMOxalT/GYhXiHojtEfVNNeOGAITzWtzM7egmuem5N0g==, tarball: file:projects/purview-sharing.tgz} + resolution: {integrity: sha512-2rIaMJI0TxveJQ15Q7a2HAF2LeUigzaoO5zu1Y/I98Ec0c5z4Ga+UsBKOPf1tHXTFI+MR0HSaGfkR2TxxCOPDg==, tarball: file:projects/purview-sharing.tgz} name: '@rush-temp/purview-sharing' version: 0.0.0 dependencies: @@ -22666,7 +22710,7 @@ packages: dev: false file:projects/purview-workflow.tgz: - resolution: {integrity: sha512-0iq889KVzdMeQkSfwB720ucrrzyK+hVWRkpFRhXfXwaFh0qgDq8GUWSlQqBpWenZLt4C01WjnoZVXqJUyaEm3w==, tarball: file:projects/purview-workflow.tgz} + resolution: {integrity: sha512-qkR+9zCgCeW0/TYL3OrdjZYLO/Qrgzz202WSGIrGy+rfeXPNUIa3FhYCDfcnaBW49ABCW2qq8VS7Gy1bUW6sAw==, tarball: file:projects/purview-workflow.tgz} name: '@rush-temp/purview-workflow' version: 0.0.0 dependencies: @@ -22710,7 +22754,7 @@ packages: dev: false file:projects/quantum-jobs.tgz: - resolution: {integrity: sha512-pZLcYMpSFLDoPvDvztVyjdfyszUKKqvUBTV2IqCjb6Y6Kk4YQ4mPkwlHGBrX4p73ux9bWGxrO3atweX5iIMIrg==, tarball: file:projects/quantum-jobs.tgz} + resolution: {integrity: sha512-yNPal5A4gvvoZ9seppzjmNeBH7ojgwz0Kwrfq/b8TlIubpMGNzfXoR38/bJgCCuZVHUpE4gY4f+nSLbllRI9fg==, tarball: file:projects/quantum-jobs.tgz} name: '@rush-temp/quantum-jobs' version: 0.0.0 dependencies: @@ -22755,7 +22799,7 @@ packages: dev: false file:projects/schema-registry-avro.tgz: - resolution: {integrity: sha512-KPL0FKTqgBdzoqHYqedoIUGnyIlJ2Xklv31EF3e78hht3nt3LspU6PS8PABPhPAqL3CF4IFZPiha37AT/UrPtw==, tarball: file:projects/schema-registry-avro.tgz} + resolution: {integrity: sha512-Gm5vHnie5jPhp9aanl4VBKIoVrxd+13jYr0eQUTBBBjm55r/OKSBDWNPokER3F3beHi4DBbKmKWuwk0bHbW9vw==, tarball: file:projects/schema-registry-avro.tgz} name: '@rush-temp/schema-registry-avro' version: 0.0.0 dependencies: @@ -22807,7 +22851,7 @@ packages: dev: false file:projects/schema-registry-json.tgz: - resolution: {integrity: sha512-z4JToPZ+EFopQmRgmCBw6vKf/wX/8toBBOK9H7uUxIcfakNULR7FzdOesJXHSahv3U/Evyukhctau7SQvdL9Cg==, tarball: file:projects/schema-registry-json.tgz} + resolution: {integrity: sha512-4IxvYMDFP9mEQ6x4A0ULwrLYMZSHTmZnMfNAmSABINchu4Icb30kgeBFQzoPYd8AKr522Zm7e88kme6rqZrkJg==, tarball: file:projects/schema-registry-json.tgz} name: '@rush-temp/schema-registry-json' version: 0.0.0 dependencies: @@ -22849,7 +22893,7 @@ packages: dev: false file:projects/schema-registry.tgz: - resolution: {integrity: sha512-0AQFMuV0RfAWQlONt9Oz75hqc3au0FLrUvTo9m8627LTozD2xPZTQaYiMRHXztbNEagrddwyo84pQDYdOH8yhQ==, tarball: file:projects/schema-registry.tgz} + resolution: {integrity: sha512-rCi7wZYVujYHihPaRNexA+j50HDubrNncm9ruEsUXG36Ly2m0Ya2VnNPwq9NZlyjk29hrh+lDXahHvRqO7JvzQ==, tarball: file:projects/schema-registry.tgz} name: '@rush-temp/schema-registry' version: 0.0.0 dependencies: @@ -22888,7 +22932,7 @@ packages: dev: false file:projects/search-documents.tgz: - resolution: {integrity: sha512-zanMzhWJtZDhvVpMIICKmTsfWtVi2bSY6/x2TdBtERnkoKbw8H20vaGWao2J31rs+HWArOZxJP+auHksczd8CA==, tarball: file:projects/search-documents.tgz} + resolution: {integrity: sha512-pAU3jjTRaXh8UIP1AEeSL0oIGMy3ou9iXzaCBTu9MfVCD/2Fs3pTfFD84LYtbIspO5IjhFCNcHTG7Us7CL2Ang==, tarball: file:projects/search-documents.tgz} name: '@rush-temp/search-documents' version: 0.0.0 dependencies: @@ -22933,7 +22977,7 @@ packages: dev: false file:projects/service-bus.tgz: - resolution: {integrity: sha512-7yDrfPbhyTLGTZiyPKra7plgC97PFtCnlCFIW3W7fWgGjsL+doJm5IdUIAYSRphKUc5TUt1/BPpc8eVjmAz7EQ==, tarball: file:projects/service-bus.tgz} + resolution: {integrity: sha512-PqsknLTye/1v7w5WwJCpm94B2Wr7Cpb+D1xV5vvOjlwN1l5pDaahz04L67oHEI7sDMC07zRjcjXAInEkF2xdGQ==, tarball: file:projects/service-bus.tgz} name: '@rush-temp/service-bus' version: 0.0.0 dependencies: @@ -22994,7 +23038,7 @@ packages: dev: false file:projects/storage-blob-changefeed.tgz: - resolution: {integrity: sha512-/6nPi0ZWuSgxjWNiQ4lduzPI+3xq1ZlbqmoRWP2rstmKT0eGFsPlbVe7z0ktWGVwBLwxvSzNXhWR1nWy+tjLhA==, tarball: file:projects/storage-blob-changefeed.tgz} + resolution: {integrity: sha512-qAG0n6MZaPeKxnChSFe1ymbgFg2xYxliByoSXvQLdUqOKt/0IkSkMGUmMzpPdS47TmZ2kee/cLQmRVDy1JW15Q==, tarball: file:projects/storage-blob-changefeed.tgz} name: '@rush-temp/storage-blob-changefeed' version: 0.0.0 dependencies: @@ -23045,7 +23089,7 @@ packages: dev: false file:projects/storage-blob.tgz: - resolution: {integrity: sha512-yNHvj3p3taJOEZK7CsXcdGnUWJGy44d0ZBA8IJh1owL1ZZeFYWZcOvWa1lF520nKwJrS4UT7TPh7UWYcovcDag==, tarball: file:projects/storage-blob.tgz} + resolution: {integrity: sha512-lNIOWi3wktAFVC6+0agHamR/CNganyc/0Ozm3/8Zpztp+n/Nmr154vxMK8pWGk4AGfg5ARyXwP+QHDU86TWC3A==, tarball: file:projects/storage-blob.tgz} name: '@rush-temp/storage-blob' version: 0.0.0 dependencies: @@ -23092,7 +23136,7 @@ packages: dev: false file:projects/storage-file-datalake.tgz: - resolution: {integrity: sha512-umEMOBWLGZ7d5msBIBNBn/5EiW2izZRInlePkXHyeAg2PaBgx3R6R/mevaThJIe8Z5JIySWQa9oOgrJ1C9Fslg==, tarball: file:projects/storage-file-datalake.tgz} + resolution: {integrity: sha512-A2fpEl32wJHsg96KHVRMyiEn0WSFcIXmEeGJTkCpFmB1eKEYogZ3RRLBm6J7J1pjkqa5L3fTvJcWeDlzsklJbA==, tarball: file:projects/storage-file-datalake.tgz} name: '@rush-temp/storage-file-datalake' version: 0.0.0 dependencies: @@ -23142,7 +23186,7 @@ packages: dev: false file:projects/storage-file-share.tgz: - resolution: {integrity: sha512-ET7Wvh7Zfk4gvNvHLRWuXS/+U60VXFJ5UHuEo0XNJi3QXtdC5a3a0r7uhPq9vpNsCKsC3g713GE/nsdtRRD8Sg==, tarball: file:projects/storage-file-share.tgz} + resolution: {integrity: sha512-orFzFDkqN669Byd9dWu6DAiUG5+Wb1AaG3zvGns4zy5DMdOrALxy/esgkzpG4QEGwCSj36fJXeXQitASYXfuXA==, tarball: file:projects/storage-file-share.tgz} name: '@rush-temp/storage-file-share' version: 0.0.0 dependencies: @@ -23191,7 +23235,7 @@ packages: dev: false file:projects/storage-internal-avro.tgz: - resolution: {integrity: sha512-errCPfgbxM3gUR0ZM7vjXhVcxbAE7G8WGyMJKpmV13H8nqoF0rmiVe4YbuQqbxWbVAzyXELBm23Zi7U+F5NSSg==, tarball: file:projects/storage-internal-avro.tgz} + resolution: {integrity: sha512-tw3AM3j/kFVBHmpE7/HcAx4ZrK/dIWmZNSn6U4m3+7Tf7DlPsMeiVh8YJWgNIEVKGliPIpbRqsccDxIqkNEoMA==, tarball: file:projects/storage-internal-avro.tgz} name: '@rush-temp/storage-internal-avro' version: 0.0.0 dependencies: @@ -23234,7 +23278,7 @@ packages: dev: false file:projects/storage-queue.tgz: - resolution: {integrity: sha512-11OI0gBARJECuXDKU6ApqucMTta6YMKbDLURgElWvHYTGK0IvP+yPGba9XJ7+Gl0z3a8NpeJqSeos99tT2lm8g==, tarball: file:projects/storage-queue.tgz} + resolution: {integrity: sha512-P34zWQy/I10oVISLghLaPmxEmyf0/YtS4u/l8l+fKsDTvdo7NhC8aC1Kp6x4Vrk3MYcw2BKrAxUHtViQ15xu8w==, tarball: file:projects/storage-queue.tgz} name: '@rush-temp/storage-queue' version: 0.0.0 dependencies: @@ -23280,7 +23324,7 @@ packages: dev: false file:projects/synapse-access-control-1.tgz: - resolution: {integrity: sha512-a/9dZpl4XgeJ+haQiZNpkZSYy9orW5z5bQB7Oyxydpc/U7TZljmv9uLIZOA8aQuUQVpDh4p8UBDbxmOg572mow==, tarball: file:projects/synapse-access-control-1.tgz} + resolution: {integrity: sha512-YF8ESmemr1ONKVGjHravsd0aF7i4JF+qc1M8VSW/1lfzEqws/zFR0miEwmUBKuuq3e+ZdfxRwjs55Nr1SE1cyg==, tarball: file:projects/synapse-access-control-1.tgz} name: '@rush-temp/synapse-access-control-1' version: 0.0.0 dependencies: @@ -23326,7 +23370,7 @@ packages: dev: false file:projects/synapse-access-control.tgz: - resolution: {integrity: sha512-FaOKM84HA3ywWOckOfcLFknsd0AXav8aA5fAGq+YkLNDHmp9lzDZkh6Nj6AaKMtJN84SWRUU2cp1i5WvaXSPrg==, tarball: file:projects/synapse-access-control.tgz} + resolution: {integrity: sha512-JSX+35RVG73WMGPoZEvbdi9XJ4cl5G6mmPPXa9KJL8Bulh9cDt0pZxi71rfoIEV8fxqWsC04PyEhYH4ycT3ajQ==, tarball: file:projects/synapse-access-control.tgz} name: '@rush-temp/synapse-access-control' version: 0.0.0 dependencies: @@ -23374,7 +23418,7 @@ packages: dev: false file:projects/synapse-artifacts.tgz: - resolution: {integrity: sha512-eP7zsNMYb2aGid9uU/PWD5lfzeN+OA1jRwl8l0mL5b5KhTIsSFaQTKh+AUm2sgFdxVK6HLXYZIKyJtbHzAbPNw==, tarball: file:projects/synapse-artifacts.tgz} + resolution: {integrity: sha512-qi+Y3kTZv7hTD5xMRmOZSaJ30uRzkrF594aH3qcMwDeeXZ5TPehVTOIFE8WRofuI2I9EOUs8jtQTQKIaktzLog==, tarball: file:projects/synapse-artifacts.tgz} name: '@rush-temp/synapse-artifacts' version: 0.0.0 dependencies: @@ -23424,7 +23468,7 @@ packages: dev: false file:projects/synapse-managed-private-endpoints.tgz: - resolution: {integrity: sha512-0FONmRyT374Y0xbcOo1xHkLuIIBhouvH5Me2+ZNUOlgfwLqDqrp+F3XgFamLOF2oVsKcs+aN4+kd/bhsUWrPyA==, tarball: file:projects/synapse-managed-private-endpoints.tgz} + resolution: {integrity: sha512-1iRvwOJt5zFH9cFtaWGHntCTqqDjVD+fKM0Y39fW8aw9AMTEzkZxAmhiQKxsAubwcddWJgxqIkDn4b7jg1jmQQ==, tarball: file:projects/synapse-managed-private-endpoints.tgz} name: '@rush-temp/synapse-managed-private-endpoints' version: 0.0.0 dependencies: @@ -23467,7 +23511,7 @@ packages: dev: false file:projects/synapse-monitoring.tgz: - resolution: {integrity: sha512-g+ViDkGo+YoqD/9+6UekM5d/AUy9d03el1qY54IsvDxiEoSWt8eGm/eYLvNSEEO+L7SO0wWuSkcXMwZPzVUnJA==, tarball: file:projects/synapse-monitoring.tgz} + resolution: {integrity: sha512-P5Fd8EPEmT9YnQzs/cAm0P6tCrCLRmCe813RAomQqwS+VEh3qSfhkcwFUU0ZZ41aPTDM0pWi1QA+UI0XEYSljw==, tarball: file:projects/synapse-monitoring.tgz} name: '@rush-temp/synapse-monitoring' version: 0.0.0 dependencies: @@ -23504,7 +23548,7 @@ packages: dev: false file:projects/synapse-spark.tgz: - resolution: {integrity: sha512-AjZYhUxgZjKU3vweVyykeN0cd2OuXrFV3TTiX1XEnPS9QMyMvA1tS5ZjaMcDyW+Xj8CS+uEbICKfW+64uCsskg==, tarball: file:projects/synapse-spark.tgz} + resolution: {integrity: sha512-9Ecly4K6TLNWdqwlBcuLDwGv58STtdODBMMhSp5CSHTDepi+CjkGn0ip9wboIJMViYNIQ0brK+VoDs10tdS/+A==, tarball: file:projects/synapse-spark.tgz} name: '@rush-temp/synapse-spark' version: 0.0.0 dependencies: @@ -23547,7 +23591,7 @@ packages: dev: false file:projects/template-dpg.tgz: - resolution: {integrity: sha512-K7U5XtGU2ce8ny2y+gaDEBOaqsEErd9ZtatTo91UnWAsUunX6FQs95Aew5buHrg8hpRyI9K2DJ4di/PVnNuVag==, tarball: file:projects/template-dpg.tgz} + resolution: {integrity: sha512-FGFRCXKGxrgO/p86CzaSu30Va+ouEEz+eERbrLB42v2qD/NQwkGqZYUm488IvvEphPPG5Zo6Ko25CR0FCHREwA==, tarball: file:projects/template-dpg.tgz} name: '@rush-temp/template-dpg' version: 0.0.0 dependencies: @@ -23590,7 +23634,7 @@ packages: dev: false file:projects/template.tgz: - resolution: {integrity: sha512-nkuAF7Y5yoGDf/AIBOxXIS1HTLiwPy9h16GG/HcntNhcjLsb/f5xvZC1wUmaS+DbUJ8GmTbXdOYfoH3hajHBbg==, tarball: file:projects/template.tgz} + resolution: {integrity: sha512-+X+lDUugjcBpMUc3gmHVNiXm2Jtycj0r2MPotC52CHCR5tcnd76RmuS0PDKeXzrfdCaMytDdGDBwz7WUT3bQ4w==, tarball: file:projects/template.tgz} name: '@rush-temp/template' version: 0.0.0 dependencies: @@ -23627,7 +23671,7 @@ packages: dev: false file:projects/test-credential.tgz: - resolution: {integrity: sha512-OIJ13Wk28mUnypyUG4Bxp8Y0TwqJAnwBa9eJzbhy+3TLrYAyVYPJgIFNaVzG4jqW0trLi0Kj2MA3ukfvNNAzCg==, tarball: file:projects/test-credential.tgz} + resolution: {integrity: sha512-hp/FOUJCpF2M/wvJlBXNJD7xZVgWjkzfLsfKIlT/UXhGapXhlCigqVGZlaFfNU6JaWoJxS7/tV9GNTjH+HosNg==, tarball: file:projects/test-credential.tgz} name: '@rush-temp/test-credential' version: 0.0.0 dependencies: @@ -23645,7 +23689,7 @@ packages: dev: false file:projects/test-perf.tgz: - resolution: {integrity: sha512-dX/wq5312VP4IMXht+BTHOav8o0LunXWx0mcsyUKnzAuhD4HGg00AYZcAIuP4S93TsS+sNEJ2IUSPfDfdhrLTA==, tarball: file:projects/test-perf.tgz} + resolution: {integrity: sha512-dV5mAryJelTRusThrDkqIKakjuFlNr1LfE8QZVyTIOMZf+mxjaYa+gItkPOXhU7wnHAHVQGVGgSbdJFT/RF+IA==, tarball: file:projects/test-perf.tgz} name: '@rush-temp/test-perf' version: 0.0.0 dependencies: @@ -23673,7 +23717,7 @@ packages: dev: false file:projects/test-recorder.tgz: - resolution: {integrity: sha512-/t/b+ayJuVLALnuZn2kUJrs9nNQWyPfRY20j9b1/KLHhvwNHcZlztu+OtdjgDCo6eMhpxtmBEvCqfMpwDMJq/A==, tarball: file:projects/test-recorder.tgz} + resolution: {integrity: sha512-W7qvPnEPSlcY1eGGqfIwpnuOy34md69n8TaPcZIUMQnDWN8PchMnIeWfWLwifhBMZ8HaxHpgnUbIkQjWbl0Kuw==, tarball: file:projects/test-recorder.tgz} name: '@rush-temp/test-recorder' version: 0.0.0 dependencies: @@ -23709,7 +23753,7 @@ packages: dev: false file:projects/test-utils.tgz: - resolution: {integrity: sha512-/zW3HGJRjx4SIrcG1OW/0MELjHiqK+jzymjKCSQScVVjjsV9Bay/8Yy4KJD4DVkYMu6zcObo92mFgbWca33XGg==, tarball: file:projects/test-utils.tgz} + resolution: {integrity: sha512-dy4yWOviUvykLKxFyvx0+Gm2BCVCmsoPEPu6zkl0yOe8nmR7y0Ee0O2/h03m7Nvj0p+qaP9s+iVOoy3tcV0vFg==, tarball: file:projects/test-utils.tgz} name: '@rush-temp/test-utils' version: 0.0.0 dependencies: @@ -23746,7 +23790,7 @@ packages: dev: false file:projects/ts-http-runtime.tgz: - resolution: {integrity: sha512-gYsRh+AQMdE3oMy/aR5ZP5HvrZro4FlLtA+EwS396BCSNp7zCeVHQbjZwJrIYZCj6M0GWrnsawwer80v3mykFg==, tarball: file:projects/ts-http-runtime.tgz} + resolution: {integrity: sha512-RqLmduToy03M0cnWkM6DITq/0n0r8AUQ7XuYOMKj5X/ZU1MCJ3IBaRpAkCRrVoShf1HLkD8MKjFE/cxBfU44LQ==, tarball: file:projects/ts-http-runtime.tgz} name: '@rush-temp/ts-http-runtime' version: 0.0.0 dependencies: @@ -23781,7 +23825,7 @@ packages: dev: false file:projects/vite-plugin-browser-test-map.tgz: - resolution: {integrity: sha512-3iQMKaAXcKlDCY9v9SwnmVRbUkHZZl8+KbgTY2fxhLVaL4Jismy5/R993xZyWorX9GbgtrstQ/2RhwP5AwWxlA==, tarball: file:projects/vite-plugin-browser-test-map.tgz} + resolution: {integrity: sha512-nGr99vbl3D1xlctU+yNMcCdj33skK2ejQ68QJtgEeu3pPt/viumiZbiYEmRf1DtYQuSXKQMeIkL/gc9KSzyMTg==, tarball: file:projects/vite-plugin-browser-test-map.tgz} name: '@rush-temp/vite-plugin-browser-test-map' version: 0.0.0 dependencies: @@ -23796,7 +23840,7 @@ packages: dev: false file:projects/web-pubsub-client-protobuf.tgz: - resolution: {integrity: sha512-wVESRObySO4PLnbkLpHwMlpN49wQC/tqptYIhxb8mIhtbFFHc5w7kWwy1RQp9qkXy121pYR4Ygnx40XaqtQFFw==, tarball: file:projects/web-pubsub-client-protobuf.tgz} + resolution: {integrity: sha512-mQTkQKaFDYzaxKpvffb8cgxOf/DajobTANJ6eEeOSek0fTFCbdwWn6J3Uou+dK61cELyQMuaxcKB66kKClbZTQ==, tarball: file:projects/web-pubsub-client-protobuf.tgz} name: '@rush-temp/web-pubsub-client-protobuf' version: 0.0.0 dependencies: @@ -23855,7 +23899,7 @@ packages: dev: false file:projects/web-pubsub-client.tgz: - resolution: {integrity: sha512-TOQHE4y7gQWPp98MGsy6ow+Iz8atcs7Lz+HBUDTeur0WfCC5ylXgJicEh1QqB4CyN4mXrNWQTZlJAza1cdn22w==, tarball: file:projects/web-pubsub-client.tgz} + resolution: {integrity: sha512-gew2iNf4DCi1CpeyojCqC7Qzv13YAEgvAPYH2SbxdUegFD5SMqOZ8lEm+cNeiCtTkaUZ7tWw1XS0i9VsBAxx0g==, tarball: file:projects/web-pubsub-client.tgz} name: '@rush-temp/web-pubsub-client' version: 0.0.0 dependencies: @@ -23909,7 +23953,7 @@ packages: dev: false file:projects/web-pubsub-express.tgz: - resolution: {integrity: sha512-6Pl4j+FJLbABdaBsq2PzPdKgFBlKeHMcEfVo2kAassvFEhiahSG7k0br3DidGJ/ZODKSLL1kFgRPrQTrC/5aoA==, tarball: file:projects/web-pubsub-express.tgz} + resolution: {integrity: sha512-oyJcorTyJRrRe1foDzPTCsdJpAJiJtXjo3pKdaxHihBVGc/9yX/6z6SwrI7h//OFU4z9rfza4GRQMglyVJn3rQ==, tarball: file:projects/web-pubsub-express.tgz} name: '@rush-temp/web-pubsub-express' version: 0.0.0 dependencies: @@ -23946,7 +23990,7 @@ packages: dev: false file:projects/web-pubsub.tgz: - resolution: {integrity: sha512-lbfKcpXc6tDMH+XbxiAa6VKzd3J+SpIDwm4OSZxA0jeuIkzGiL23vZIP/ddbXXMTNvqAfgGl7EVZ02JHyoEDhg==, tarball: file:projects/web-pubsub.tgz} + resolution: {integrity: sha512-n0OPorulrRol6sRw3kjX4ETvSTRIGd/oqyS7yApVzMM4skHd5HQVJ/+K77Bcv8zzDIEmO92sMNbFSemld95ExA==, tarball: file:projects/web-pubsub.tgz} name: '@rush-temp/web-pubsub' version: 0.0.0 dependencies: diff --git a/eng/ignore-links.txt b/eng/ignore-links.txt index b2d5fc4d3900..baf8d8db8864 100644 --- a/eng/ignore-links.txt +++ b/eng/ignore-links.txt @@ -26,3 +26,4 @@ https://docs.microsoft.com/javascript/api/@azure/arm-standbypool?view=azure-node https://docs.microsoft.com/javascript/api/@azure/arm-devopsinfrastructure?view=azure-node-preview https://docs.microsoft.com/javascript/api/@azure/arm-informaticadatamanagement?view=azure-node-preview https://docs.microsoft.com/javascript/api/@azure/arm-oracledatabase?view=azure-node-preview +https://docs.microsoft.com/javascript/api/@azure/arm-mongocluster?view=azure-node-preview diff --git a/rush.json b/rush.json index 804c34b4bafe..831acf69301a 100644 --- a/rush.json +++ b/rush.json @@ -2232,6 +2232,11 @@ "projectFolder": "sdk/oracledatabase/arm-oracledatabase", "versionPolicyName": "management" }, + { + "packageName": "@azure/arm-mongocluster", + "projectFolder": "sdk/mongocluster/arm-mongocluster", + "versionPolicyName": "management" + }, { "packageName": "@azure-rest/ai-inference", "projectFolder": "sdk/ai/ai-inference-rest", diff --git a/sdk/mongocluster/arm-mongocluster/.eslintrc.json b/sdk/mongocluster/arm-mongocluster/.eslintrc.json new file mode 100644 index 000000000000..8793fba07e9d --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/.eslintrc.json @@ -0,0 +1,14 @@ +{ + "plugins": ["@azure/azure-sdk"], + "extends": ["plugin:@azure/azure-sdk/azure-sdk-base"], + "rules": { + "@azure/azure-sdk/ts-modules-only-named": "warn", + "@azure/azure-sdk/ts-apiextractor-json-types": "warn", + "@azure/azure-sdk/ts-package-json-types": "warn", + "@azure/azure-sdk/ts-package-json-engine-is-present": "warn", + "tsdoc/syntax": "warn", + "@azure/azure-sdk/ts-package-json-module": "off", + "@azure/azure-sdk/ts-package-json-files-required": "off", + "@azure/azure-sdk/ts-package-json-main-is-cjs": "off" + } +} diff --git a/sdk/mongocluster/arm-mongocluster/.tshy/browser.json b/sdk/mongocluster/arm-mongocluster/.tshy/browser.json new file mode 100644 index 000000000000..144e29682df7 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/.tshy/browser.json @@ -0,0 +1,15 @@ +{ + "extends": "./build.json", + "include": [ + "../src/**/*.ts", + "../src/**/*.mts", + "../src/**/*.tsx", + "../src/**/*.json" + ], + "exclude": [ + "../src/package.json" + ], + "compilerOptions": { + "outDir": "../.tshy-build/browser" + } +} diff --git a/sdk/mongocluster/arm-mongocluster/.tshy/build.json b/sdk/mongocluster/arm-mongocluster/.tshy/build.json new file mode 100644 index 000000000000..aea1a9e93b5d --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/.tshy/build.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "../src", + "module": "nodenext", + "moduleResolution": "nodenext" + } +} diff --git a/sdk/mongocluster/arm-mongocluster/.tshy/commonjs.json b/sdk/mongocluster/arm-mongocluster/.tshy/commonjs.json new file mode 100644 index 000000000000..7c9db50b6a5c --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/.tshy/commonjs.json @@ -0,0 +1,16 @@ +{ + "extends": "./build.json", + "include": [ + "../src/**/*.ts", + "../src/**/*.cts", + "../src/**/*.tsx", + "../src/**/*.json" + ], + "exclude": [ + "../src/**/*.mts", + "../src/package.json" + ], + "compilerOptions": { + "outDir": "../.tshy-build/commonjs" + } +} diff --git a/sdk/mongocluster/arm-mongocluster/.tshy/esm.json b/sdk/mongocluster/arm-mongocluster/.tshy/esm.json new file mode 100644 index 000000000000..959294a84294 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/.tshy/esm.json @@ -0,0 +1,15 @@ +{ + "extends": "./build.json", + "include": [ + "../src/**/*.ts", + "../src/**/*.mts", + "../src/**/*.tsx", + "../src/**/*.json" + ], + "exclude": [ + "../src/package.json" + ], + "compilerOptions": { + "outDir": "../.tshy-build/esm" + } +} diff --git a/sdk/mongocluster/arm-mongocluster/.tshy/react-native.json b/sdk/mongocluster/arm-mongocluster/.tshy/react-native.json new file mode 100644 index 000000000000..e3a9d50023d6 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/.tshy/react-native.json @@ -0,0 +1,15 @@ +{ + "extends": "./build.json", + "include": [ + "../src/**/*.ts", + "../src/**/*.mts", + "../src/**/*.tsx", + "../src/**/*.json" + ], + "exclude": [ + "../src/package.json" + ], + "compilerOptions": { + "outDir": "../.tshy-build/react-native" + } +} diff --git a/sdk/mongocluster/arm-mongocluster/CHANGELOG.md b/sdk/mongocluster/arm-mongocluster/CHANGELOG.md new file mode 100644 index 000000000000..8e209ef8d4e2 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/CHANGELOG.md @@ -0,0 +1,7 @@ +# Release History + +## 1.0.0-beta.1 (2024-07-05) + +### Features Added + +Initial release of the Azure MongoCluster package diff --git a/sdk/mongocluster/arm-mongocluster/LICENSE b/sdk/mongocluster/arm-mongocluster/LICENSE new file mode 100644 index 000000000000..fd1f95e88239 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2024 Microsoft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sdk/mongocluster/arm-mongocluster/README.md b/sdk/mongocluster/arm-mongocluster/README.md new file mode 100644 index 000000000000..6a44bd447e4e --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/README.md @@ -0,0 +1,109 @@ +# Azure MongoClusterManagement client library for JavaScript + +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for Azure MongoClusterManagement client. + +The Microsoft Azure management API provides create, read, update, and delete functionality for Azure Cosmos DB for MongoDB vCore resources including clusters and firewall rules. + +[Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/mongocluster/arm-mongocluster) | +[Package (NPM)](https://www.npmjs.com/package/@azure/arm-mongocluster) | +[API reference documentation](https://docs.microsoft.com/javascript/api/@azure/arm-mongocluster?view=azure-node-preview) | +[Samples](https://github.com/Azure-Samples/azure-samples-js-management) + +## Getting started + +### Currently supported environments + +- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) +- Latest versions of Safari, Chrome, Edge and Firefox. + +See our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) for more details. + +### Prerequisites + +- An [Azure subscription][azure_sub]. + +### Install the `@azure/arm-mongocluster` package + +Install the Azure MongoClusterManagement client library for JavaScript with `npm`: + +```bash +npm install @azure/arm-mongocluster +``` + +### Create and authenticate a `MongoClusterManagementClient` + +To create a client object to access the Azure MongoClusterManagement API, you will need the `endpoint` of your Azure MongoClusterManagement resource and a `credential`. The Azure MongoClusterManagement client can use Azure Active Directory credentials to authenticate. +You can find the endpoint for your Azure MongoClusterManagement resource in the [Azure Portal][azure_portal]. + +You can authenticate with Azure Active Directory using a credential from the [@azure/identity][azure_identity] library or [an existing AAD Token](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-with-a-pre-fetched-access-token). + +To use the [DefaultAzureCredential][defaultazurecredential] provider shown below, or other credential providers provided with the Azure SDK, please install the `@azure/identity` package: + +```bash +npm install @azure/identity +``` + +You will also need to **register a new AAD application and grant access to Azure MongoClusterManagement** by assigning the suitable role to your service principal (note: roles such as `"Owner"` will not grant the necessary permissions). +Set the values of the client ID, tenant ID, and client secret of the AAD application as environment variables: `AZURE_CLIENT_ID`, `AZURE_TENANT_ID`, `AZURE_CLIENT_SECRET`. + +For more information about how to create an Azure AD Application check out [this guide](https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal). + +```javascript +const { MongoClusterManagementClient } = require("@azure/arm-mongocluster"); +const { DefaultAzureCredential } = require("@azure/identity"); +// For client-side applications running in the browser, use InteractiveBrowserCredential instead of DefaultAzureCredential. See https://aka.ms/azsdk/js/identity/examples for more details. + +const subscriptionId = "00000000-0000-0000-0000-000000000000"; +const client = new MongoClusterManagementClient(new DefaultAzureCredential(), subscriptionId); + +// For client-side applications running in the browser, use this code instead: +// const credential = new InteractiveBrowserCredential({ +// tenantId: "", +// clientId: "" +// }); +// const client = new MongoClusterManagementClient(credential, subscriptionId); +``` + + +### JavaScript Bundle +To use this client library in the browser, first you need to use a bundler. For details on how to do this, please refer to our [bundling documentation](https://aka.ms/AzureSDKBundling). + +## Key concepts + +### MongoClusterManagementClient + +`MongoClusterManagementClient` is the primary interface for developers using the Azure MongoClusterManagement client library. Explore the methods on this client object to understand the different features of the Azure MongoClusterManagement service that you can access. + +## Troubleshooting + +### Logging + +Enabling logging may help uncover useful information about failures. In order to see a log of HTTP requests and responses, set the `AZURE_LOG_LEVEL` environment variable to `info`. Alternatively, logging can be enabled at runtime by calling `setLogLevel` in the `@azure/logger`: + +```javascript +const { setLogLevel } = require("@azure/logger"); +setLogLevel("info"); +``` + +For more detailed instructions on how to enable logs, you can look at the [@azure/logger package docs](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger). + +## Next steps + +Please take a look at the [samples](https://github.com/Azure-Samples/azure-samples-js-management) directory for detailed examples on how to use this library. + +## Contributing + +If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. + +## Related projects + +- [Microsoft Azure SDK for JavaScript](https://github.com/Azure/azure-sdk-for-js) + +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fmongocluster%2Farm-mongocluster%2FREADME.png) + +[azure_cli]: https://docs.microsoft.com/cli/azure +[azure_sub]: https://azure.microsoft.com/free/ +[azure_sub]: https://azure.microsoft.com/free/ +[azure_portal]: https://portal.azure.com +[azure_identity]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity +[defaultazurecredential]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#defaultazurecredential diff --git a/sdk/mongocluster/arm-mongocluster/api-extractor.json b/sdk/mongocluster/arm-mongocluster/api-extractor.json new file mode 100644 index 000000000000..2e201623f120 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/api-extractor.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + "mainEntryPointFilePath": "./dist/esm/index.d.ts", + "docModel": { "enabled": true }, + "apiReport": { "enabled": true, "reportFolder": "./review" }, + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "", + "publicTrimmedFilePath": "./types/arm-mongocluster.d.ts" + }, + "messages": { + "tsdocMessageReporting": { "default": { "logLevel": "none" } }, + "extractorMessageReporting": { + "ae-missing-release-tag": { "logLevel": "none" }, + "ae-unresolved-link": { "logLevel": "none" } + } + } +} diff --git a/sdk/mongocluster/arm-mongocluster/assets.json b/sdk/mongocluster/arm-mongocluster/assets.json new file mode 100644 index 000000000000..68dd7eb189ad --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/assets.json @@ -0,0 +1,6 @@ +{ + "AssetsRepo": "Azure/azure-sdk-assets", + "AssetsRepoPrefixPath": "js", + "TagPrefix": "js/mongocluster/arm-mongocluster", + "Tag": "js/mongocluster/arm-mongocluster_c6236b1752" +} diff --git a/sdk/mongocluster/arm-mongocluster/karma.conf.js b/sdk/mongocluster/arm-mongocluster/karma.conf.js new file mode 100644 index 000000000000..a9d5f1b5fc59 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/karma.conf.js @@ -0,0 +1,133 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +// https://github.com/karma-runner/karma-chrome-launcher +process.env.CHROME_BIN = require("puppeteer").executablePath(); +require("dotenv").config(); +const { relativeRecordingsPath } = require("@azure-tools/test-recorder"); +process.env.RECORDINGS_RELATIVE_PATH = relativeRecordingsPath(); + +module.exports = function (config) { + config.set({ + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: "./", + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ["source-map-support", "mocha"], + + plugins: [ + "karma-mocha", + "karma-mocha-reporter", + "karma-chrome-launcher", + "karma-firefox-launcher", + "karma-env-preprocessor", + "karma-coverage", + "karma-sourcemap-loader", + "karma-junit-reporter", + "karma-source-map-support", + ], + + // list of files / patterns to load in the browser + files: [ + "dist-test/index.browser.js", + { + pattern: "dist-test/index.browser.js.map", + type: "html", + included: false, + served: true, + }, + ], + + // list of files / patterns to exclude + exclude: [], + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + "**/*.js": ["sourcemap", "env"], + // IMPORTANT: COMMENT following line if you want to debug in your browsers!! + // Preprocess source file to calculate code coverage, however this will make source file unreadable + // "dist-test/index.js": ["coverage"] + }, + + envPreprocessor: [ + "TEST_MODE", + "ENDPOINT", + "AZURE_CLIENT_SECRET", + "AZURE_CLIENT_ID", + "AZURE_TENANT_ID", + "SUBSCRIPTION_ID", + "RECORDINGS_RELATIVE_PATH", + ], + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ["mocha", "coverage", "junit"], + + coverageReporter: { + // specify a common output directory + dir: "coverage-browser/", + reporters: [ + { type: "json", subdir: ".", file: "coverage.json" }, + { type: "lcovonly", subdir: ".", file: "lcov.info" }, + { type: "html", subdir: "html" }, + { type: "cobertura", subdir: ".", file: "cobertura-coverage.xml" }, + ], + }, + + junitReporter: { + outputDir: "", // results will be saved as $outputDir/$browserName.xml + outputFile: "test-results.browser.xml", // if included, results will be saved as $outputDir/$browserName/$outputFile + suite: "", // suite will become the package name attribute in xml testsuite element + useBrowserName: false, // add browser name to report and classes names + nameFormatter: undefined, // function (browser, result) to customize the name attribute in xml testcase element + classNameFormatter: undefined, // function (browser, result) to customize the classname attribute in xml testcase element + properties: {}, // key value pair of properties to add to the section of the report + }, + + // web server port + port: 9876, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // --no-sandbox allows our tests to run in Linux without having to change the system. + // --disable-web-security allows us to authenticate from the browser without having to write tests using interactive auth, which would be far more complex. + browsers: ["ChromeHeadlessNoSandbox"], + customLaunchers: { + ChromeHeadlessNoSandbox: { + base: "ChromeHeadless", + flags: ["--no-sandbox", "--disable-web-security"], + }, + }, + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: 1, + + browserNoActivityTimeout: 60000000, + browserDisconnectTimeout: 10000, + browserDisconnectTolerance: 3, + + client: { + mocha: { + // change Karma's debug.html to the mocha web reporter + reporter: "html", + timeout: "600000", + }, + }, + }); +}; diff --git a/sdk/mongocluster/arm-mongocluster/package.json b/sdk/mongocluster/arm-mongocluster/package.json new file mode 100644 index 000000000000..e45c0c2e79dc --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/package.json @@ -0,0 +1,187 @@ +{ + "name": "@azure/arm-mongocluster", + "version": "1.0.0-beta.1", + "description": "DocumentDB MongoCluster Service", + "engines": { + "node": ">=18.0.0" + }, + "sideEffects": false, + "autoPublish": false, + "tshy": { + "exports": { + "./package.json": "./package.json", + ".": "./src/index.ts", + "./api": "./src/api/index.ts", + "./models": "./src/models/index.ts" + }, + "dialects": [ + "esm", + "commonjs" + ], + "esmDialects": [ + "browser", + "react-native" + ], + "selfLink": false + }, + "type": "module", + "keywords": [ + "node", + "azure", + "cloud", + "typescript", + "browser", + "isomorphic" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "files": [ + "dist", + "README.md", + "LICENSE", + "review/*" + ], + "sdk-type": "mgmt", + "repository": "github:Azure/azure-sdk-for-js", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", + "//metadata": { + "constantPaths": [ + { + "path": "src/rest/documentDBClient.ts", + "prefix": "package-version" + } + ] + }, + "dependencies": { + "@azure-rest/core-client": "^2.1.0", + "@azure/core-auth": "^1.6.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2", + "@azure/core-lro": "^3.0.0", + "@azure/abort-controller": "^2.1.2", + "@azure/core-paging": "^1.5.0" + }, + "devDependencies": { + "dotenv": "^16.0.0", + "@microsoft/api-extractor": "^7.40.3", + "@types/node": "^18.0.0", + "eslint": "^8.55.0", + "prettier": "^3.2.5", + "rimraf": "^5.0.5", + "mkdirp": "^3.0.1", + "typescript": "~5.4.5", + "tshy": "^1.11.1", + "@azure/core-util": "^1.0.0", + "@azure/identity": "^4.2.1", + "@vitest/browser": "^1.3.1", + "@vitest/coverage-istanbul": "^1.3.1", + "playwright": "^1.41.2", + "vitest": "^1.3.1", + "@azure-tools/test-credential": "^2.0.0", + "@azure-tools/test-recorder": "^4.0.0", + "@azure/dev-tool": "^1.0.0", + "@azure/eslint-plugin-azure-sdk": "^3.0.0", + "@azure/arm-network": "^33.2.0" + }, + "scripts": { + "clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log", + "extract-api": "rimraf review && mkdirp ./review && dev-tool run extract-api", + "pack": "npm pack 2>&1", + "lint": "echo skipped", + "lint:fix": "echo skipped", + "unit-test": "npm run unit-test:node && npm run unit-test:browser", + "unit-test:browser": "npm run build:test && dev-tool run test:vitest --browser", + "unit-test:node": "dev-tool run test:vitest", + "integration-test": "npm run integration-test:node && npm run integration-test:browser", + "integration-test:browser": "echo skipped", + "integration-test:node": "echo skipped", + "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build:samples": "echo skipped", + "check-format": "echo skipped", + "execute:samples": "echo skipped", + "format": "echo skipped", + "generate:client": "echo skipped", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "minify": "uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js", + "build:test": "npm run clean && tshy && dev-tool run build-test", + "build": "npm run clean && tshy && mkdirp ./review && dev-tool run extract-api", + "test:node": "npm run clean && tshy && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && tshy && npm run unit-test:node && dev-tool run bundle && npm run unit-test:browser && npm run integration-test" + }, + "exports": { + "./package.json": "./package.json", + ".": { + "browser": { + "source": "./src/index.ts", + "types": "./dist/browser/index.d.ts", + "default": "./dist/browser/index.js" + }, + "react-native": { + "source": "./src/index.ts", + "types": "./dist/react-native/index.d.ts", + "default": "./dist/react-native/index.js" + }, + "import": { + "source": "./src/index.ts", + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "source": "./src/index.ts", + "types": "./dist/commonjs/index.d.ts", + "default": "./dist/commonjs/index.js" + } + }, + "./api": { + "browser": { + "source": "./src/api/index.ts", + "types": "./dist/browser/api/index.d.ts", + "default": "./dist/browser/api/index.js" + }, + "react-native": { + "source": "./src/api/index.ts", + "types": "./dist/react-native/api/index.d.ts", + "default": "./dist/react-native/api/index.js" + }, + "import": { + "source": "./src/api/index.ts", + "types": "./dist/esm/api/index.d.ts", + "default": "./dist/esm/api/index.js" + }, + "require": { + "source": "./src/api/index.ts", + "types": "./dist/commonjs/api/index.d.ts", + "default": "./dist/commonjs/api/index.js" + } + }, + "./models": { + "browser": { + "source": "./src/models/index.ts", + "types": "./dist/browser/models/index.d.ts", + "default": "./dist/browser/models/index.js" + }, + "react-native": { + "source": "./src/models/index.ts", + "types": "./dist/react-native/models/index.d.ts", + "default": "./dist/react-native/models/index.js" + }, + "import": { + "source": "./src/models/index.ts", + "types": "./dist/esm/models/index.d.ts", + "default": "./dist/esm/models/index.js" + }, + "require": { + "source": "./src/models/index.ts", + "types": "./dist/commonjs/models/index.d.ts", + "default": "./dist/commonjs/models/index.js" + } + } + }, + "main": "./dist/commonjs/index.js", + "types": "./dist/commonjs/index.d.ts", + "module": "./dist/esm/index.js" +} diff --git a/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster-api.api.md b/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster-api.api.md new file mode 100644 index 000000000000..4383840fa91e --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster-api.api.md @@ -0,0 +1,88 @@ +## API Report File for "@azure/arm-mongocluster" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { Client } from '@azure-rest/core-client'; +import { ClientOptions } from '@azure-rest/core-client'; +import { HttpResponse } from '@azure-rest/core-client'; +import { OperationOptions } from '@azure-rest/core-client'; +import { OperationState } from '@azure/core-lro'; +import { Paged } from '@azure/core-paging'; +import { PollerLike } from '@azure/core-lro'; +import { RawHttpHeaders } from '@azure/core-rest-pipeline'; +import { RequestParameters } from '@azure-rest/core-client'; +import { StreamableMethod } from '@azure-rest/core-client'; +import { TokenCredential } from '@azure/core-auth'; + +// @public +export function createMongoClusterManagement(credential: TokenCredential, options?: MongoClusterManagementClientOptionalParams): DocumentDBContext; + +// @public (undocumented) +export type DocumentDBContext = Client & { + path: Routes; +}; + +// @public +export function firewallRulesCreateOrUpdate(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, firewallRuleName: string, resource: FirewallRule_2, options?: FirewallRulesCreateOrUpdateOptionalParams): PollerLike, FirewallRule_2>; + +// @public +export function firewallRulesDelete(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, firewallRuleName: string, options?: FirewallRulesDeleteOptionalParams): PollerLike, void>; + +// @public +export function firewallRulesGet(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, firewallRuleName: string, options?: FirewallRulesGetOptionalParams): Promise; + +// @public +export function firewallRulesListByMongoCluster(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, options?: FirewallRulesListByMongoClusterOptionalParams): PagedAsyncIterableIterator; + +// @public +export interface MongoClusterManagementClientOptionalParams extends ClientOptions { + apiVersion?: string; +} + +// @public +export function mongoClustersCheckNameAvailability(context: DocumentDBContext, subscriptionId: string, location: string, body: CheckNameAvailabilityRequest_2, options?: MongoClustersCheckNameAvailabilityOptionalParams): Promise; + +// @public +export function mongoClustersCreateOrUpdate(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, resource: MongoCluster_2, options?: MongoClustersCreateOrUpdateOptionalParams): PollerLike, MongoCluster_2>; + +// @public +export function mongoClustersDelete(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, options?: MongoClustersDeleteOptionalParams): PollerLike, void>; + +// @public +export function mongoClustersGet(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, options?: MongoClustersGetOptionalParams): Promise; + +// @public +export function mongoClustersList(context: DocumentDBContext, subscriptionId: string, options?: MongoClustersListOptionalParams): PagedAsyncIterableIterator; + +// @public +export function mongoClustersListByResourceGroup(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, options?: MongoClustersListByResourceGroupOptionalParams): PagedAsyncIterableIterator; + +// @public +export function mongoClustersListConnectionStrings(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, options?: MongoClustersListConnectionStringsOptionalParams): Promise; + +// @public +export function mongoClustersUpdate(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, properties: MongoClusterUpdate_2, options?: MongoClustersUpdateOptionalParams): PollerLike, MongoCluster_2>; + +// @public +export function operationsList(context: DocumentDBContext, options?: OperationsListOptionalParams): PagedAsyncIterableIterator; + +// @public +export function privateEndpointConnectionsCreate(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, privateEndpointConnectionName: string, resource: PrivateEndpointConnectionResource_2, options?: PrivateEndpointConnectionsCreateOptionalParams): PollerLike, PrivateEndpointConnectionResource_2>; + +// @public +export function privateEndpointConnectionsDelete(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, privateEndpointConnectionName: string, options?: PrivateEndpointConnectionsDeleteOptionalParams): PollerLike, void>; + +// @public +export function privateEndpointConnectionsGet(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, privateEndpointConnectionName: string, options?: PrivateEndpointConnectionsGetOptionalParams): Promise; + +// @public +export function privateEndpointConnectionsListByMongoCluster(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, options?: PrivateEndpointConnectionsListByMongoClusterOptionalParams): PagedAsyncIterableIterator; + +// @public +export function privateLinksListByMongoCluster(context: DocumentDBContext, subscriptionId: string, resourceGroupName: string, mongoClusterName: string, options?: PrivateLinksListByMongoClusterOptionalParams): PagedAsyncIterableIterator; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster-models.api.md b/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster-models.api.md new file mode 100644 index 000000000000..58c737d81839 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster-models.api.md @@ -0,0 +1,417 @@ +## API Report File for "@azure/arm-mongocluster" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { OperationOptions } from '@azure-rest/core-client'; + +// @public +export type ActionType = string; + +// @public +export type CheckNameAvailabilityReason = string; + +// @public +export interface CheckNameAvailabilityRequest { + name?: string; + type?: string; +} + +// @public +export interface CheckNameAvailabilityResponse { + message?: string; + nameAvailable?: boolean; + reason?: CheckNameAvailabilityReason; +} + +// @public +export interface ConnectionString { + readonly connectionString?: string; + readonly description?: string; +} + +// @public +export type ContinuablePage = TPage & { + continuationToken?: string; +}; + +// @public +export type CreatedByType = string; + +// @public +export type CreateMode = string; + +// @public +export interface ErrorAdditionalInfo { + readonly info?: Record; + readonly type?: string; +} + +// @public +export interface ErrorDetail { + readonly additionalInfo?: ErrorAdditionalInfo[]; + readonly code?: string; + readonly details?: ErrorDetail[]; + readonly message?: string; + readonly target?: string; +} + +// @public +export interface ErrorResponse { + error?: ErrorDetail; +} + +// @public +export interface FirewallRule extends ProxyResource { + properties?: FirewallRuleProperties; +} + +// @public +export interface FirewallRuleProperties { + endIpAddress: string; + readonly provisioningState?: ProvisioningState; + startIpAddress: string; +} + +// @public +export interface FirewallRulesCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface FirewallRulesDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface FirewallRulesGetOptionalParams extends OperationOptions { +} + +// @public +export interface FirewallRulesListByMongoClusterOptionalParams extends OperationOptions { +} + +// @public +export enum KnownActionType { + Internal = "Internal" +} + +// @public +export enum KnownCheckNameAvailabilityReason { + AlreadyExists = "AlreadyExists", + Invalid = "Invalid" +} + +// @public +export enum KnownCreatedByType { + Application = "Application", + Key = "Key", + ManagedIdentity = "ManagedIdentity", + User = "User" +} + +// @public +export enum KnownCreateMode { + Default = "Default", + PointInTimeRestore = "PointInTimeRestore" +} + +// @public +export enum KnownMongoClusterStatus { + Dropping = "Dropping", + Provisioning = "Provisioning", + Ready = "Ready", + Starting = "Starting", + Stopped = "Stopped", + Stopping = "Stopping", + Updating = "Updating" +} + +// @public +export enum KnownNodeKind { + Shard = "Shard" +} + +// @public +export enum KnownOrigin { + "user,system" = "user,system", + system = "system", + user = "user" +} + +// @public +export enum KnownPrivateEndpointConnectionProvisioningState { + Creating = "Creating", + Deleting = "Deleting", + Failed = "Failed", + Succeeded = "Succeeded" +} + +// @public +export enum KnownPrivateEndpointServiceConnectionStatus { + Approved = "Approved", + Pending = "Pending", + Rejected = "Rejected" +} + +// @public +export enum KnownPublicNetworkAccess { + Disabled = "Disabled", + Enabled = "Enabled" +} + +// @public +export enum KnownResourceProvisioningState { + Canceled = "Canceled", + Failed = "Failed", + Succeeded = "Succeeded" +} + +// @public +export interface ListConnectionStringsResult { + readonly connectionStrings?: ConnectionString[]; +} + +// @public +export interface MongoCluster extends TrackedResource { + properties?: MongoClusterProperties; +} + +// @public +export interface MongoClusterProperties { + administratorLogin?: string; + administratorLoginPassword?: string; + readonly clusterStatus?: MongoClusterStatus; + readonly connectionString?: string; + createMode?: CreateMode; + readonly earliestRestoreTime?: string; + nodeGroupSpecs?: NodeGroupSpec[]; + readonly privateEndpointConnections?: PrivateEndpointConnection[]; + readonly provisioningState?: ProvisioningState; + publicNetworkAccess?: PublicNetworkAccess; + restoreParameters?: MongoClusterRestoreParameters; + serverVersion?: string; +} + +// @public +export interface MongoClusterRestoreParameters { + pointInTimeUTC?: Date; + sourceResourceId?: string; +} + +// @public +export interface MongoClustersCheckNameAvailabilityOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface MongoClustersDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface MongoClustersGetOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersListByResourceGroupOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersListConnectionStringsOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersListOptionalParams extends OperationOptions { +} + +// @public +export type MongoClusterStatus = string; + +// @public +export interface MongoClustersUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface MongoClusterUpdate { + // (undocumented) + properties?: MongoClusterUpdateProperties; + tags?: Record; +} + +// @public +export interface MongoClusterUpdateProperties { + administratorLogin?: string; + administratorLoginPassword?: string; + nodeGroupSpecs?: NodeGroupSpec[]; + publicNetworkAccess?: PublicNetworkAccess; + serverVersion?: string; +} + +// @public +export interface NodeGroupSpec { + diskSizeGB?: number; + enableHa?: boolean; + kind?: NodeKind; + nodeCount?: number; + sku?: string; +} + +// @public +export type NodeKind = string; + +// @public +export interface Operation { + actionType?: ActionType; + display?: OperationDisplay; + readonly isDataAction?: boolean; + readonly name?: string; + readonly origin?: Origin; +} + +// @public +export interface OperationDisplay { + description?: string; + operation?: string; + provider?: string; + resource?: string; +} + +// @public +export interface OperationsListOptionalParams extends OperationOptions { +} + +// @public +export type Origin = string; + +// @public +export interface PagedAsyncIterableIterator { + [Symbol.asyncIterator](): PagedAsyncIterableIterator; + byPage: (settings?: TPageSettings) => AsyncIterableIterator>; + next(): Promise>; +} + +// @public +export interface PageSettings { + continuationToken?: string; +} + +// @public +export interface PrivateEndpoint { + readonly id?: string; +} + +// @public +export interface PrivateEndpointConnection extends Resource { + properties?: PrivateEndpointConnectionProperties; +} + +// @public +export interface PrivateEndpointConnectionProperties { + readonly groupIds?: string[]; + privateEndpoint?: PrivateEndpoint; + privateLinkServiceConnectionState: PrivateLinkServiceConnectionState; + readonly provisioningState?: PrivateEndpointConnectionProvisioningState; +} + +// @public +export type PrivateEndpointConnectionProvisioningState = string; + +// @public +export interface PrivateEndpointConnectionResource extends ProxyResource { + properties?: PrivateEndpointConnectionProperties; +} + +// @public +export interface PrivateEndpointConnectionsCreateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface PrivateEndpointConnectionsDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface PrivateEndpointConnectionsGetOptionalParams extends OperationOptions { +} + +// @public +export interface PrivateEndpointConnectionsListByMongoClusterOptionalParams extends OperationOptions { +} + +// @public +export type PrivateEndpointServiceConnectionStatus = string; + +// @public +export interface PrivateLinkResource extends ProxyResource { + properties?: PrivateLinkResourceProperties; +} + +// @public +export interface PrivateLinkResourceProperties { + readonly groupId?: string; + readonly requiredMembers?: string[]; + requiredZoneNames?: string[]; +} + +// @public +export interface PrivateLinkServiceConnectionState { + actionsRequired?: string; + description?: string; + status?: PrivateEndpointServiceConnectionStatus; +} + +// @public +export interface PrivateLinksListByMongoClusterOptionalParams extends OperationOptions { +} + +// @public +export type ProvisioningState = string | ResourceProvisioningState | "InProgress" | "Updating" | "Dropping"; + +// @public +export interface ProxyResource extends Resource { +} + +// @public +export type PublicNetworkAccess = string; + +// @public +export interface Resource { + readonly id?: string; + readonly name?: string; + readonly systemData?: SystemData; + readonly type?: string; +} + +// @public +export type ResourceProvisioningState = string; + +// @public +export interface SystemData { + createdAt?: Date; + createdBy?: string; + createdByType?: CreatedByType; + lastModifiedAt?: Date; + lastModifiedBy?: string; + lastModifiedByType?: CreatedByType; +} + +// @public +export interface TrackedResource extends Resource { + location: string; + tags?: Record; +} + +// @public +export type Versions = "2024-03-01-preview"; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster.api.md b/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster.api.md new file mode 100644 index 000000000000..6e8b7f81f4d6 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/review/arm-mongocluster.api.md @@ -0,0 +1,488 @@ +## API Report File for "@azure/arm-mongocluster" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { AbortSignalLike } from '@azure/abort-controller'; +import { ClientOptions } from '@azure-rest/core-client'; +import { OperationOptions } from '@azure-rest/core-client'; +import { OperationState } from '@azure/core-lro'; +import { PathUncheckedResponse } from '@azure-rest/core-client'; +import { Pipeline } from '@azure/core-rest-pipeline'; +import { PollerLike } from '@azure/core-lro'; +import { TokenCredential } from '@azure/core-auth'; + +// @public +export type ActionType = string; + +// @public +export type CheckNameAvailabilityReason = string; + +// @public +export interface CheckNameAvailabilityRequest { + name?: string; + type?: string; +} + +// @public +export interface CheckNameAvailabilityResponse { + message?: string; + nameAvailable?: boolean; + reason?: CheckNameAvailabilityReason; +} + +// @public +export interface ConnectionString { + readonly connectionString?: string; + readonly description?: string; +} + +// @public +export type ContinuablePage = TPage & { + continuationToken?: string; +}; + +// @public +export type CreatedByType = string; + +// @public +export type CreateMode = string; + +// @public +export interface ErrorAdditionalInfo { + readonly info?: Record; + readonly type?: string; +} + +// @public +export interface ErrorDetail { + readonly additionalInfo?: ErrorAdditionalInfo[]; + readonly code?: string; + readonly details?: ErrorDetail[]; + readonly message?: string; + readonly target?: string; +} + +// @public +export interface ErrorResponse { + error?: ErrorDetail; +} + +// @public +export interface FirewallRule extends ProxyResource { + properties?: FirewallRuleProperties; +} + +// @public +export interface FirewallRuleProperties { + endIpAddress: string; + readonly provisioningState?: ProvisioningState; + startIpAddress: string; +} + +// @public +export interface FirewallRulesCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface FirewallRulesDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface FirewallRulesGetOptionalParams extends OperationOptions { +} + +// @public +export interface FirewallRulesListByMongoClusterOptionalParams extends OperationOptions { +} + +// @public +export interface FirewallRulesOperations { + createOrUpdate: (resourceGroupName: string, mongoClusterName: string, firewallRuleName: string, resource: FirewallRule, options?: FirewallRulesCreateOrUpdateOptionalParams) => PollerLike, FirewallRule>; + delete: (resourceGroupName: string, mongoClusterName: string, firewallRuleName: string, options?: FirewallRulesDeleteOptionalParams) => PollerLike, void>; + get: (resourceGroupName: string, mongoClusterName: string, firewallRuleName: string, options?: FirewallRulesGetOptionalParams) => Promise; + listByMongoCluster: (resourceGroupName: string, mongoClusterName: string, options?: FirewallRulesListByMongoClusterOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export enum KnownActionType { + Internal = "Internal" +} + +// @public +export enum KnownCheckNameAvailabilityReason { + AlreadyExists = "AlreadyExists", + Invalid = "Invalid" +} + +// @public +export enum KnownCreatedByType { + Application = "Application", + Key = "Key", + ManagedIdentity = "ManagedIdentity", + User = "User" +} + +// @public +export enum KnownCreateMode { + Default = "Default", + PointInTimeRestore = "PointInTimeRestore" +} + +// @public +export enum KnownMongoClusterStatus { + Dropping = "Dropping", + Provisioning = "Provisioning", + Ready = "Ready", + Starting = "Starting", + Stopped = "Stopped", + Stopping = "Stopping", + Updating = "Updating" +} + +// @public +export enum KnownNodeKind { + Shard = "Shard" +} + +// @public +export enum KnownOrigin { + "user,system" = "user,system", + system = "system", + user = "user" +} + +// @public +export enum KnownPrivateEndpointConnectionProvisioningState { + Creating = "Creating", + Deleting = "Deleting", + Failed = "Failed", + Succeeded = "Succeeded" +} + +// @public +export enum KnownPrivateEndpointServiceConnectionStatus { + Approved = "Approved", + Pending = "Pending", + Rejected = "Rejected" +} + +// @public +export enum KnownPublicNetworkAccess { + Disabled = "Disabled", + Enabled = "Enabled" +} + +// @public +export enum KnownResourceProvisioningState { + Canceled = "Canceled", + Failed = "Failed", + Succeeded = "Succeeded" +} + +// @public +export interface ListConnectionStringsResult { + readonly connectionStrings?: ConnectionString[]; +} + +// @public +export interface MongoCluster extends TrackedResource { + properties?: MongoClusterProperties; +} + +// @public (undocumented) +export class MongoClusterManagementClient { + constructor(credential: TokenCredential, subscriptionId: string, options?: MongoClusterManagementClientOptionalParams); + readonly firewallRules: FirewallRulesOperations; + readonly mongoClusters: MongoClustersOperations; + readonly operations: OperationsOperations; + readonly pipeline: Pipeline; + readonly privateEndpointConnections: PrivateEndpointConnectionsOperations; + readonly privateLinks: PrivateLinksOperations; +} + +// @public +export interface MongoClusterManagementClientOptionalParams extends ClientOptions { + apiVersion?: string; +} + +// @public +export interface MongoClusterProperties { + administratorLogin?: string; + administratorLoginPassword?: string; + readonly clusterStatus?: MongoClusterStatus; + readonly connectionString?: string; + createMode?: CreateMode; + readonly earliestRestoreTime?: string; + nodeGroupSpecs?: NodeGroupSpec[]; + readonly privateEndpointConnections?: PrivateEndpointConnection[]; + readonly provisioningState?: ProvisioningState; + publicNetworkAccess?: PublicNetworkAccess; + restoreParameters?: MongoClusterRestoreParameters; + serverVersion?: string; +} + +// @public +export interface MongoClusterRestoreParameters { + pointInTimeUTC?: Date; + sourceResourceId?: string; +} + +// @public +export interface MongoClustersCheckNameAvailabilityOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface MongoClustersDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface MongoClustersGetOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersListByResourceGroupOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersListConnectionStringsOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersListOptionalParams extends OperationOptions { +} + +// @public +export interface MongoClustersOperations { + checkNameAvailability: (location: string, body: CheckNameAvailabilityRequest, options?: MongoClustersCheckNameAvailabilityOptionalParams) => Promise; + createOrUpdate: (resourceGroupName: string, mongoClusterName: string, resource: MongoCluster, options?: MongoClustersCreateOrUpdateOptionalParams) => PollerLike, MongoCluster>; + delete: (resourceGroupName: string, mongoClusterName: string, options?: MongoClustersDeleteOptionalParams) => PollerLike, void>; + get: (resourceGroupName: string, mongoClusterName: string, options?: MongoClustersGetOptionalParams) => Promise; + list: (options?: MongoClustersListOptionalParams) => PagedAsyncIterableIterator; + listByResourceGroup: (resourceGroupName: string, options?: MongoClustersListByResourceGroupOptionalParams) => PagedAsyncIterableIterator; + listConnectionStrings: (resourceGroupName: string, mongoClusterName: string, options?: MongoClustersListConnectionStringsOptionalParams) => Promise; + update: (resourceGroupName: string, mongoClusterName: string, properties: MongoClusterUpdate, options?: MongoClustersUpdateOptionalParams) => PollerLike, MongoCluster>; +} + +// @public +export type MongoClusterStatus = string; + +// @public +export interface MongoClustersUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface MongoClusterUpdate { + // (undocumented) + properties?: MongoClusterUpdateProperties; + tags?: Record; +} + +// @public +export interface MongoClusterUpdateProperties { + administratorLogin?: string; + administratorLoginPassword?: string; + nodeGroupSpecs?: NodeGroupSpec[]; + publicNetworkAccess?: PublicNetworkAccess; + serverVersion?: string; +} + +// @public +export interface NodeGroupSpec { + diskSizeGB?: number; + enableHa?: boolean; + kind?: NodeKind; + nodeCount?: number; + sku?: string; +} + +// @public +export type NodeKind = string; + +// @public +export interface Operation { + actionType?: ActionType; + display?: OperationDisplay; + readonly isDataAction?: boolean; + readonly name?: string; + readonly origin?: Origin; +} + +// @public +export interface OperationDisplay { + description?: string; + operation?: string; + provider?: string; + resource?: string; +} + +// @public +export interface OperationsListOptionalParams extends OperationOptions { +} + +// @public +export interface OperationsOperations { + list: (options?: OperationsListOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export type Origin = string; + +// @public +export interface PagedAsyncIterableIterator { + [Symbol.asyncIterator](): PagedAsyncIterableIterator; + byPage: (settings?: TPageSettings) => AsyncIterableIterator>; + next(): Promise>; +} + +// @public +export interface PageSettings { + continuationToken?: string; +} + +// @public +export interface PrivateEndpoint { + readonly id?: string; +} + +// @public +export interface PrivateEndpointConnection extends Resource { + properties?: PrivateEndpointConnectionProperties; +} + +// @public +export interface PrivateEndpointConnectionProperties { + readonly groupIds?: string[]; + privateEndpoint?: PrivateEndpoint; + privateLinkServiceConnectionState: PrivateLinkServiceConnectionState; + readonly provisioningState?: PrivateEndpointConnectionProvisioningState; +} + +// @public +export type PrivateEndpointConnectionProvisioningState = string; + +// @public +export interface PrivateEndpointConnectionResource extends ProxyResource { + properties?: PrivateEndpointConnectionProperties; +} + +// @public +export interface PrivateEndpointConnectionsCreateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface PrivateEndpointConnectionsDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface PrivateEndpointConnectionsGetOptionalParams extends OperationOptions { +} + +// @public +export interface PrivateEndpointConnectionsListByMongoClusterOptionalParams extends OperationOptions { +} + +// @public +export interface PrivateEndpointConnectionsOperations { + create: (resourceGroupName: string, mongoClusterName: string, privateEndpointConnectionName: string, resource: PrivateEndpointConnectionResource, options?: PrivateEndpointConnectionsCreateOptionalParams) => PollerLike, PrivateEndpointConnectionResource>; + delete: (resourceGroupName: string, mongoClusterName: string, privateEndpointConnectionName: string, options?: PrivateEndpointConnectionsDeleteOptionalParams) => PollerLike, void>; + get: (resourceGroupName: string, mongoClusterName: string, privateEndpointConnectionName: string, options?: PrivateEndpointConnectionsGetOptionalParams) => Promise; + listByMongoCluster: (resourceGroupName: string, mongoClusterName: string, options?: PrivateEndpointConnectionsListByMongoClusterOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export type PrivateEndpointServiceConnectionStatus = string; + +// @public +export interface PrivateLinkResource extends ProxyResource { + properties?: PrivateLinkResourceProperties; +} + +// @public +export interface PrivateLinkResourceProperties { + readonly groupId?: string; + readonly requiredMembers?: string[]; + requiredZoneNames?: string[]; +} + +// @public +export interface PrivateLinkServiceConnectionState { + actionsRequired?: string; + description?: string; + status?: PrivateEndpointServiceConnectionStatus; +} + +// @public +export interface PrivateLinksListByMongoClusterOptionalParams extends OperationOptions { +} + +// @public +export interface PrivateLinksOperations { + listByMongoCluster: (resourceGroupName: string, mongoClusterName: string, options?: PrivateLinksListByMongoClusterOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export type ProvisioningState = string | ResourceProvisioningState | "InProgress" | "Updating" | "Dropping"; + +// @public +export interface ProxyResource extends Resource { +} + +// @public +export type PublicNetworkAccess = string; + +// @public +export interface Resource { + readonly id?: string; + readonly name?: string; + readonly systemData?: SystemData; + readonly type?: string; +} + +// @public +export type ResourceProvisioningState = string; + +// @public +export function restorePoller(client: MongoClusterManagementClient, serializedState: string, sourceOperation: (...args: any[]) => PollerLike, TResult>, options?: RestorePollerOptions): PollerLike, TResult>; + +// @public (undocumented) +export interface RestorePollerOptions extends OperationOptions { + abortSignal?: AbortSignalLike; + processResponseBody?: (result: TResponse) => Promise; + updateIntervalInMs?: number; +} + +// @public +export interface SystemData { + createdAt?: Date; + createdBy?: string; + createdByType?: CreatedByType; + lastModifiedAt?: Date; + lastModifiedBy?: string; + lastModifiedByType?: CreatedByType; +} + +// @public +export interface TrackedResource extends Resource { + location: string; + tags?: Record; +} + +// @public +export type Versions = "2024-03-01-preview"; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/mongocluster/arm-mongocluster/src/api/firewallRules/index.ts b/sdk/mongocluster/arm-mongocluster/src/api/firewallRules/index.ts new file mode 100644 index 000000000000..fd091b8cd3cd --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/firewallRules/index.ts @@ -0,0 +1,376 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { getLongRunningPoller } from "../pollingHelpers.js"; +import { PollerLike, OperationState } from "@azure/core-lro"; +import { + firewallRulePropertiesSerializer, + FirewallRule, + _FirewallRuleListResult, +} from "../../models/models.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { buildPagedAsyncIterator } from "../pagingHelpers.js"; +import { + isUnexpected, + DocumentDBContext as Client, + FirewallRulesCreateOrUpdate200Response, + FirewallRulesCreateOrUpdate201Response, + FirewallRulesCreateOrUpdate202Response, + FirewallRulesCreateOrUpdateDefaultResponse, + FirewallRulesCreateOrUpdateLogicalResponse, + FirewallRulesDelete202Response, + FirewallRulesDelete204Response, + FirewallRulesDeleteDefaultResponse, + FirewallRulesDeleteLogicalResponse, + FirewallRulesGet200Response, + FirewallRulesGetDefaultResponse, + FirewallRulesListByMongoCluster200Response, + FirewallRulesListByMongoClusterDefaultResponse, +} from "../../rest/index.js"; +import { + StreamableMethod, + operationOptionsToRequestParameters, + createRestError, +} from "@azure-rest/core-client"; +import { + FirewallRulesGetOptionalParams, + FirewallRulesCreateOrUpdateOptionalParams, + FirewallRulesDeleteOptionalParams, + FirewallRulesListByMongoClusterOptionalParams, +} from "../../models/options.js"; + +export function _firewallRulesGetSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + options: FirewallRulesGetOptionalParams = { requestOptions: {} }, +): StreamableMethod< + FirewallRulesGet200Response | FirewallRulesGetDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + ) + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _firewallRulesGetDeserialize( + result: FirewallRulesGet200Response | FirewallRulesGetDefaultResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + id: result.body["id"], + name: result.body["name"], + type: result.body["type"], + systemData: !result.body.systemData + ? undefined + : { + createdBy: result.body.systemData?.["createdBy"], + createdByType: result.body.systemData?.["createdByType"], + createdAt: + result.body.systemData?.["createdAt"] !== undefined + ? new Date(result.body.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: result.body.systemData?.["lastModifiedBy"], + lastModifiedByType: result.body.systemData?.["lastModifiedByType"], + lastModifiedAt: + result.body.systemData?.["lastModifiedAt"] !== undefined + ? new Date(result.body.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !result.body.properties + ? undefined + : { + provisioningState: result.body.properties?.["provisioningState"], + startIpAddress: result.body.properties?.["startIpAddress"], + endIpAddress: result.body.properties?.["endIpAddress"], + }, + }; +} + +/** Gets information about a mongo cluster firewall rule. */ +export async function firewallRulesGet( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + options: FirewallRulesGetOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _firewallRulesGetSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + options, + ); + return _firewallRulesGetDeserialize(result); +} + +export function _firewallRulesCreateOrUpdateSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + resource: FirewallRule, + options: FirewallRulesCreateOrUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod< + | FirewallRulesCreateOrUpdate200Response + | FirewallRulesCreateOrUpdate201Response + | FirewallRulesCreateOrUpdate202Response + | FirewallRulesCreateOrUpdateDefaultResponse + | FirewallRulesCreateOrUpdateLogicalResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + ) + .put({ + ...operationOptionsToRequestParameters(options), + body: { + properties: !resource.properties + ? resource.properties + : firewallRulePropertiesSerializer(resource.properties), + }, + }); +} + +export async function _firewallRulesCreateOrUpdateDeserialize( + result: + | FirewallRulesCreateOrUpdate200Response + | FirewallRulesCreateOrUpdate201Response + | FirewallRulesCreateOrUpdate202Response + | FirewallRulesCreateOrUpdateDefaultResponse + | FirewallRulesCreateOrUpdateLogicalResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + result = result as FirewallRulesCreateOrUpdateLogicalResponse; + return { + id: result.body["id"], + name: result.body["name"], + type: result.body["type"], + systemData: !result.body.systemData + ? undefined + : { + createdBy: result.body.systemData?.["createdBy"], + createdByType: result.body.systemData?.["createdByType"], + createdAt: + result.body.systemData?.["createdAt"] !== undefined + ? new Date(result.body.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: result.body.systemData?.["lastModifiedBy"], + lastModifiedByType: result.body.systemData?.["lastModifiedByType"], + lastModifiedAt: + result.body.systemData?.["lastModifiedAt"] !== undefined + ? new Date(result.body.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !result.body.properties + ? undefined + : { + provisioningState: result.body.properties?.["provisioningState"], + startIpAddress: result.body.properties?.["startIpAddress"], + endIpAddress: result.body.properties?.["endIpAddress"], + }, + }; +} + +/** Creates a new firewall rule or updates an existing firewall rule on a mongo cluster. */ +export function firewallRulesCreateOrUpdate( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + resource: FirewallRule, + options: FirewallRulesCreateOrUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, FirewallRule> { + return getLongRunningPoller( + context, + _firewallRulesCreateOrUpdateDeserialize, + { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _firewallRulesCreateOrUpdateSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + resource, + options, + ), + }, + ) as PollerLike, FirewallRule>; +} + +export function _firewallRulesDeleteSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + options: FirewallRulesDeleteOptionalParams = { requestOptions: {} }, +): StreamableMethod< + | FirewallRulesDelete202Response + | FirewallRulesDelete204Response + | FirewallRulesDeleteDefaultResponse + | FirewallRulesDeleteLogicalResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + ) + .delete({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _firewallRulesDeleteDeserialize( + result: + | FirewallRulesDelete202Response + | FirewallRulesDelete204Response + | FirewallRulesDeleteDefaultResponse + | FirewallRulesDeleteLogicalResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + result = result as FirewallRulesDeleteLogicalResponse; + return; +} + +/** Deletes a mongo cluster firewall rule. */ +export function firewallRulesDelete( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + options: FirewallRulesDeleteOptionalParams = { requestOptions: {} }, +): PollerLike, void> { + return getLongRunningPoller(context, _firewallRulesDeleteDeserialize, { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _firewallRulesDeleteSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + options, + ), + }) as PollerLike, void>; +} + +export function _firewallRulesListByMongoClusterSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: FirewallRulesListByMongoClusterOptionalParams = { + requestOptions: {}, + }, +): StreamableMethod< + | FirewallRulesListByMongoCluster200Response + | FirewallRulesListByMongoClusterDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules", + subscriptionId, + resourceGroupName, + mongoClusterName, + ) + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _firewallRulesListByMongoClusterDeserialize( + result: + | FirewallRulesListByMongoCluster200Response + | FirewallRulesListByMongoClusterDefaultResponse, +): Promise<_FirewallRuleListResult> { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + value: result.body["value"].map((p) => ({ + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + provisioningState: p.properties?.["provisioningState"], + startIpAddress: p.properties?.["startIpAddress"], + endIpAddress: p.properties?.["endIpAddress"], + }, + })), + nextLink: result.body["nextLink"], + }; +} + +/** List all the firewall rules in a given mongo cluster. */ +export function firewallRulesListByMongoCluster( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: FirewallRulesListByMongoClusterOptionalParams = { + requestOptions: {}, + }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => + _firewallRulesListByMongoClusterSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + _firewallRulesListByMongoClusterDeserialize, + { itemName: "value", nextLinkName: "nextLink" }, + ); +} diff --git a/sdk/mongocluster/arm-mongocluster/src/api/index.ts b/sdk/mongocluster/arm-mongocluster/src/api/index.ts new file mode 100644 index 000000000000..f0ef42ebc82e --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/index.ts @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +export { + createMongoClusterManagement, + MongoClusterManagementClientOptionalParams, + DocumentDBContext, +} from "./mongoClusterManagementContext.js"; +export { + firewallRulesGet, + firewallRulesCreateOrUpdate, + firewallRulesDelete, + firewallRulesListByMongoCluster, +} from "./firewallRules/index.js"; +export { + mongoClustersGet, + mongoClustersCreateOrUpdate, + mongoClustersUpdate, + mongoClustersDelete, + mongoClustersListByResourceGroup, + mongoClustersList, + mongoClustersListConnectionStrings, + mongoClustersCheckNameAvailability, +} from "./mongoClusters/index.js"; +export { operationsList } from "./operations/index.js"; +export { + privateEndpointConnectionsListByMongoCluster, + privateEndpointConnectionsGet, + privateEndpointConnectionsCreate, + privateEndpointConnectionsDelete, +} from "./privateEndpointConnections/index.js"; +export { privateLinksListByMongoCluster } from "./privateLinks/index.js"; diff --git a/sdk/mongocluster/arm-mongocluster/src/api/mongoClusterManagementContext.ts b/sdk/mongocluster/arm-mongocluster/src/api/mongoClusterManagementContext.ts new file mode 100644 index 000000000000..3e2901972fff --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/mongoClusterManagementContext.ts @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { TokenCredential } from "@azure/core-auth"; +import { ClientOptions } from "@azure-rest/core-client"; +import { DocumentDBContext } from "../rest/index.js"; +import getClient from "../rest/index.js"; + +/** Optional parameters for the client. */ +export interface MongoClusterManagementClientOptionalParams extends ClientOptions { + /** The API version to use for this operation. */ + apiVersion?: string; +} + +export { DocumentDBContext } from "../rest/index.js"; + +/** The Microsoft Azure management API provides create, read, update, and delete functionality for Azure Cosmos DB for MongoDB vCore resources including clusters and firewall rules. */ +export function createMongoClusterManagement( + credential: TokenCredential, + options: MongoClusterManagementClientOptionalParams = {}, +): DocumentDBContext { + const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; + const userAgentPrefix = prefixFromOptions + ? `${prefixFromOptions} azsdk-js-api` + : "azsdk-js-api"; + + const clientContext = getClient(credential, { + ...options, + userAgentOptions: { userAgentPrefix }, + }); + return clientContext; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/api/mongoClusters/index.ts b/sdk/mongocluster/arm-mongocluster/src/api/mongoClusters/index.ts new file mode 100644 index 000000000000..2a33b7cff46b --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/mongoClusters/index.ts @@ -0,0 +1,1097 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { getLongRunningPoller } from "../pollingHelpers.js"; +import { PollerLike, OperationState } from "@azure/core-lro"; +import { + mongoClusterPropertiesSerializer, + mongoClusterUpdatePropertiesSerializer, + MongoCluster, + MongoClusterUpdate, + ListConnectionStringsResult, + CheckNameAvailabilityRequest, + CheckNameAvailabilityResponse, + _MongoClusterListResult, +} from "../../models/models.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { buildPagedAsyncIterator } from "../pagingHelpers.js"; +import { + isUnexpected, + DocumentDBContext as Client, + MongoClustersCheckNameAvailability200Response, + MongoClustersCheckNameAvailabilityDefaultResponse, + MongoClustersCreateOrUpdate200Response, + MongoClustersCreateOrUpdate201Response, + MongoClustersCreateOrUpdateDefaultResponse, + MongoClustersCreateOrUpdateLogicalResponse, + MongoClustersDelete202Response, + MongoClustersDelete204Response, + MongoClustersDeleteDefaultResponse, + MongoClustersDeleteLogicalResponse, + MongoClustersGet200Response, + MongoClustersGetDefaultResponse, + MongoClustersList200Response, + MongoClustersListByResourceGroup200Response, + MongoClustersListByResourceGroupDefaultResponse, + MongoClustersListConnectionStrings200Response, + MongoClustersListConnectionStringsDefaultResponse, + MongoClustersListDefaultResponse, + MongoClustersUpdate200Response, + MongoClustersUpdate202Response, + MongoClustersUpdateDefaultResponse, + MongoClustersUpdateLogicalResponse, +} from "../../rest/index.js"; +import { + StreamableMethod, + operationOptionsToRequestParameters, + createRestError, +} from "@azure-rest/core-client"; +import { serializeRecord } from "../../helpers/serializerHelpers.js"; +import { + MongoClustersGetOptionalParams, + MongoClustersCreateOrUpdateOptionalParams, + MongoClustersUpdateOptionalParams, + MongoClustersDeleteOptionalParams, + MongoClustersListByResourceGroupOptionalParams, + MongoClustersListOptionalParams, + MongoClustersListConnectionStringsOptionalParams, + MongoClustersCheckNameAvailabilityOptionalParams, +} from "../../models/options.js"; + +export function _mongoClustersGetSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: MongoClustersGetOptionalParams = { requestOptions: {} }, +): StreamableMethod< + MongoClustersGet200Response | MongoClustersGetDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + ) + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _mongoClustersGetDeserialize( + result: MongoClustersGet200Response | MongoClustersGetDefaultResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + tags: result.body["tags"], + location: result.body["location"], + id: result.body["id"], + name: result.body["name"], + type: result.body["type"], + systemData: !result.body.systemData + ? undefined + : { + createdBy: result.body.systemData?.["createdBy"], + createdByType: result.body.systemData?.["createdByType"], + createdAt: + result.body.systemData?.["createdAt"] !== undefined + ? new Date(result.body.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: result.body.systemData?.["lastModifiedBy"], + lastModifiedByType: result.body.systemData?.["lastModifiedByType"], + lastModifiedAt: + result.body.systemData?.["lastModifiedAt"] !== undefined + ? new Date(result.body.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !result.body.properties + ? undefined + : { + createMode: result.body.properties?.["createMode"], + restoreParameters: !result.body.properties?.restoreParameters + ? undefined + : { + pointInTimeUTC: + result.body.properties?.restoreParameters?.[ + "pointInTimeUTC" + ] !== undefined + ? new Date( + result.body.properties?.restoreParameters?.[ + "pointInTimeUTC" + ], + ) + : undefined, + sourceResourceId: + result.body.properties?.restoreParameters?.[ + "sourceResourceId" + ], + }, + administratorLogin: result.body.properties?.["administratorLogin"], + administratorLoginPassword: + result.body.properties?.["administratorLoginPassword"], + serverVersion: result.body.properties?.["serverVersion"], + connectionString: result.body.properties?.["connectionString"], + earliestRestoreTime: result.body.properties?.["earliestRestoreTime"], + provisioningState: result.body.properties?.["provisioningState"], + clusterStatus: result.body.properties?.["clusterStatus"], + publicNetworkAccess: result.body.properties?.["publicNetworkAccess"], + nodeGroupSpecs: + result.body.properties?.["nodeGroupSpecs"] === undefined + ? result.body.properties?.["nodeGroupSpecs"] + : result.body.properties?.["nodeGroupSpecs"].map((p) => ({ + sku: p["sku"], + diskSizeGB: p["diskSizeGB"], + enableHa: p["enableHa"], + kind: p["kind"], + nodeCount: p["nodeCount"], + })), + privateEndpointConnections: + result.body.properties?.["privateEndpointConnections"] === undefined + ? result.body.properties?.["privateEndpointConnections"] + : result.body.properties?.["privateEndpointConnections"].map( + (p) => ({ + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: + p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + groupIds: p.properties?.["groupIds"], + privateEndpoint: !p.properties?.privateEndpoint + ? undefined + : { id: p.properties?.privateEndpoint?.["id"] }, + privateLinkServiceConnectionState: { + status: + p.properties?.privateLinkServiceConnectionState[ + "status" + ], + description: + p.properties?.privateLinkServiceConnectionState[ + "description" + ], + actionsRequired: + p.properties?.privateLinkServiceConnectionState[ + "actionsRequired" + ], + }, + provisioningState: + p.properties?.["provisioningState"], + }, + }), + ), + }, + }; +} + +/** Gets information about a mongo cluster. */ +export async function mongoClustersGet( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: MongoClustersGetOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _mongoClustersGetSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ); + return _mongoClustersGetDeserialize(result); +} + +export function _mongoClustersCreateOrUpdateSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + resource: MongoCluster, + options: MongoClustersCreateOrUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod< + | MongoClustersCreateOrUpdate200Response + | MongoClustersCreateOrUpdate201Response + | MongoClustersCreateOrUpdateDefaultResponse + | MongoClustersCreateOrUpdateLogicalResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + ) + .put({ + ...operationOptionsToRequestParameters(options), + body: { + tags: !resource.tags + ? resource.tags + : (serializeRecord(resource.tags as any) as any), + location: resource["location"], + properties: !resource.properties + ? resource.properties + : mongoClusterPropertiesSerializer(resource.properties), + }, + }); +} + +export async function _mongoClustersCreateOrUpdateDeserialize( + result: + | MongoClustersCreateOrUpdate200Response + | MongoClustersCreateOrUpdate201Response + | MongoClustersCreateOrUpdateDefaultResponse + | MongoClustersCreateOrUpdateLogicalResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + result = result as MongoClustersCreateOrUpdateLogicalResponse; + return { + tags: result.body["tags"], + location: result.body["location"], + id: result.body["id"], + name: result.body["name"], + type: result.body["type"], + systemData: !result.body.systemData + ? undefined + : { + createdBy: result.body.systemData?.["createdBy"], + createdByType: result.body.systemData?.["createdByType"], + createdAt: + result.body.systemData?.["createdAt"] !== undefined + ? new Date(result.body.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: result.body.systemData?.["lastModifiedBy"], + lastModifiedByType: result.body.systemData?.["lastModifiedByType"], + lastModifiedAt: + result.body.systemData?.["lastModifiedAt"] !== undefined + ? new Date(result.body.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !result.body.properties + ? undefined + : { + createMode: result.body.properties?.["createMode"], + restoreParameters: !result.body.properties?.restoreParameters + ? undefined + : { + pointInTimeUTC: + result.body.properties?.restoreParameters?.[ + "pointInTimeUTC" + ] !== undefined + ? new Date( + result.body.properties?.restoreParameters?.[ + "pointInTimeUTC" + ], + ) + : undefined, + sourceResourceId: + result.body.properties?.restoreParameters?.[ + "sourceResourceId" + ], + }, + administratorLogin: result.body.properties?.["administratorLogin"], + administratorLoginPassword: + result.body.properties?.["administratorLoginPassword"], + serverVersion: result.body.properties?.["serverVersion"], + connectionString: result.body.properties?.["connectionString"], + earliestRestoreTime: result.body.properties?.["earliestRestoreTime"], + provisioningState: result.body.properties?.["provisioningState"], + clusterStatus: result.body.properties?.["clusterStatus"], + publicNetworkAccess: result.body.properties?.["publicNetworkAccess"], + nodeGroupSpecs: + result.body.properties?.["nodeGroupSpecs"] === undefined + ? result.body.properties?.["nodeGroupSpecs"] + : result.body.properties?.["nodeGroupSpecs"].map((p) => ({ + sku: p["sku"], + diskSizeGB: p["diskSizeGB"], + enableHa: p["enableHa"], + kind: p["kind"], + nodeCount: p["nodeCount"], + })), + privateEndpointConnections: + result.body.properties?.["privateEndpointConnections"] === undefined + ? result.body.properties?.["privateEndpointConnections"] + : result.body.properties?.["privateEndpointConnections"].map( + (p) => ({ + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: + p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + groupIds: p.properties?.["groupIds"], + privateEndpoint: !p.properties?.privateEndpoint + ? undefined + : { id: p.properties?.privateEndpoint?.["id"] }, + privateLinkServiceConnectionState: { + status: + p.properties?.privateLinkServiceConnectionState[ + "status" + ], + description: + p.properties?.privateLinkServiceConnectionState[ + "description" + ], + actionsRequired: + p.properties?.privateLinkServiceConnectionState[ + "actionsRequired" + ], + }, + provisioningState: + p.properties?.["provisioningState"], + }, + }), + ), + }, + }; +} + +/** Create or update a mongo cluster. Update overwrites all properties for the resource. To only modify some of the properties, use PATCH. */ +export function mongoClustersCreateOrUpdate( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + resource: MongoCluster, + options: MongoClustersCreateOrUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, MongoCluster> { + return getLongRunningPoller( + context, + _mongoClustersCreateOrUpdateDeserialize, + { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _mongoClustersCreateOrUpdateSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + resource, + options, + ), + }, + ) as PollerLike, MongoCluster>; +} + +export function _mongoClustersUpdateSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + properties: MongoClusterUpdate, + options: MongoClustersUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod< + | MongoClustersUpdate200Response + | MongoClustersUpdate202Response + | MongoClustersUpdateDefaultResponse + | MongoClustersUpdateLogicalResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + ) + .patch({ + ...operationOptionsToRequestParameters(options), + body: { + tags: !properties.tags + ? properties.tags + : (serializeRecord(properties.tags as any) as any), + properties: !properties.properties + ? properties.properties + : mongoClusterUpdatePropertiesSerializer(properties.properties), + }, + }); +} + +export async function _mongoClustersUpdateDeserialize( + result: + | MongoClustersUpdate200Response + | MongoClustersUpdate202Response + | MongoClustersUpdateDefaultResponse + | MongoClustersUpdateLogicalResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + result = result as MongoClustersUpdateLogicalResponse; + return { + tags: result.body["tags"], + location: result.body["location"], + id: result.body["id"], + name: result.body["name"], + type: result.body["type"], + systemData: !result.body.systemData + ? undefined + : { + createdBy: result.body.systemData?.["createdBy"], + createdByType: result.body.systemData?.["createdByType"], + createdAt: + result.body.systemData?.["createdAt"] !== undefined + ? new Date(result.body.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: result.body.systemData?.["lastModifiedBy"], + lastModifiedByType: result.body.systemData?.["lastModifiedByType"], + lastModifiedAt: + result.body.systemData?.["lastModifiedAt"] !== undefined + ? new Date(result.body.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !result.body.properties + ? undefined + : { + createMode: result.body.properties?.["createMode"], + restoreParameters: !result.body.properties?.restoreParameters + ? undefined + : { + pointInTimeUTC: + result.body.properties?.restoreParameters?.[ + "pointInTimeUTC" + ] !== undefined + ? new Date( + result.body.properties?.restoreParameters?.[ + "pointInTimeUTC" + ], + ) + : undefined, + sourceResourceId: + result.body.properties?.restoreParameters?.[ + "sourceResourceId" + ], + }, + administratorLogin: result.body.properties?.["administratorLogin"], + administratorLoginPassword: + result.body.properties?.["administratorLoginPassword"], + serverVersion: result.body.properties?.["serverVersion"], + connectionString: result.body.properties?.["connectionString"], + earliestRestoreTime: result.body.properties?.["earliestRestoreTime"], + provisioningState: result.body.properties?.["provisioningState"], + clusterStatus: result.body.properties?.["clusterStatus"], + publicNetworkAccess: result.body.properties?.["publicNetworkAccess"], + nodeGroupSpecs: + result.body.properties?.["nodeGroupSpecs"] === undefined + ? result.body.properties?.["nodeGroupSpecs"] + : result.body.properties?.["nodeGroupSpecs"].map((p) => ({ + sku: p["sku"], + diskSizeGB: p["diskSizeGB"], + enableHa: p["enableHa"], + kind: p["kind"], + nodeCount: p["nodeCount"], + })), + privateEndpointConnections: + result.body.properties?.["privateEndpointConnections"] === undefined + ? result.body.properties?.["privateEndpointConnections"] + : result.body.properties?.["privateEndpointConnections"].map( + (p) => ({ + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: + p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + groupIds: p.properties?.["groupIds"], + privateEndpoint: !p.properties?.privateEndpoint + ? undefined + : { id: p.properties?.privateEndpoint?.["id"] }, + privateLinkServiceConnectionState: { + status: + p.properties?.privateLinkServiceConnectionState[ + "status" + ], + description: + p.properties?.privateLinkServiceConnectionState[ + "description" + ], + actionsRequired: + p.properties?.privateLinkServiceConnectionState[ + "actionsRequired" + ], + }, + provisioningState: + p.properties?.["provisioningState"], + }, + }), + ), + }, + }; +} + +/** Updates an existing mongo cluster. The request body can contain one to many of the properties present in the normal mongo cluster definition. */ +export function mongoClustersUpdate( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + properties: MongoClusterUpdate, + options: MongoClustersUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, MongoCluster> { + return getLongRunningPoller(context, _mongoClustersUpdateDeserialize, { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _mongoClustersUpdateSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + properties, + options, + ), + }) as PollerLike, MongoCluster>; +} + +export function _mongoClustersDeleteSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: MongoClustersDeleteOptionalParams = { requestOptions: {} }, +): StreamableMethod< + | MongoClustersDelete202Response + | MongoClustersDelete204Response + | MongoClustersDeleteDefaultResponse + | MongoClustersDeleteLogicalResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + ) + .delete({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _mongoClustersDeleteDeserialize( + result: + | MongoClustersDelete202Response + | MongoClustersDelete204Response + | MongoClustersDeleteDefaultResponse + | MongoClustersDeleteLogicalResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + result = result as MongoClustersDeleteLogicalResponse; + return; +} + +/** Deletes a mongo cluster. */ +export function mongoClustersDelete( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: MongoClustersDeleteOptionalParams = { requestOptions: {} }, +): PollerLike, void> { + return getLongRunningPoller(context, _mongoClustersDeleteDeserialize, { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _mongoClustersDeleteSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + }) as PollerLike, void>; +} + +export function _mongoClustersListByResourceGroupSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + options: MongoClustersListByResourceGroupOptionalParams = { + requestOptions: {}, + }, +): StreamableMethod< + | MongoClustersListByResourceGroup200Response + | MongoClustersListByResourceGroupDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters", + subscriptionId, + resourceGroupName, + ) + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _mongoClustersListByResourceGroupDeserialize( + result: + | MongoClustersListByResourceGroup200Response + | MongoClustersListByResourceGroupDefaultResponse, +): Promise<_MongoClusterListResult> { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + value: result.body["value"].map((p) => ({ + tags: p["tags"], + location: p["location"], + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + createMode: p.properties?.["createMode"], + restoreParameters: !p.properties?.restoreParameters + ? undefined + : { + pointInTimeUTC: + p.properties?.restoreParameters?.["pointInTimeUTC"] !== + undefined + ? new Date( + p.properties?.restoreParameters?.["pointInTimeUTC"], + ) + : undefined, + sourceResourceId: + p.properties?.restoreParameters?.["sourceResourceId"], + }, + administratorLogin: p.properties?.["administratorLogin"], + administratorLoginPassword: + p.properties?.["administratorLoginPassword"], + serverVersion: p.properties?.["serverVersion"], + connectionString: p.properties?.["connectionString"], + earliestRestoreTime: p.properties?.["earliestRestoreTime"], + provisioningState: p.properties?.["provisioningState"], + clusterStatus: p.properties?.["clusterStatus"], + publicNetworkAccess: p.properties?.["publicNetworkAccess"], + nodeGroupSpecs: + p.properties?.["nodeGroupSpecs"] === undefined + ? p.properties?.["nodeGroupSpecs"] + : p.properties?.["nodeGroupSpecs"].map((p) => ({ + sku: p["sku"], + diskSizeGB: p["diskSizeGB"], + enableHa: p["enableHa"], + kind: p["kind"], + nodeCount: p["nodeCount"], + })), + privateEndpointConnections: + p.properties?.["privateEndpointConnections"] === undefined + ? p.properties?.["privateEndpointConnections"] + : p.properties?.["privateEndpointConnections"].map((p) => ({ + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: + p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + groupIds: p.properties?.["groupIds"], + privateEndpoint: !p.properties?.privateEndpoint + ? undefined + : { id: p.properties?.privateEndpoint?.["id"] }, + privateLinkServiceConnectionState: { + status: + p.properties?.privateLinkServiceConnectionState[ + "status" + ], + description: + p.properties?.privateLinkServiceConnectionState[ + "description" + ], + actionsRequired: + p.properties?.privateLinkServiceConnectionState[ + "actionsRequired" + ], + }, + provisioningState: + p.properties?.["provisioningState"], + }, + })), + }, + })), + nextLink: result.body["nextLink"], + }; +} + +/** List all the mongo clusters in a given resource group. */ +export function mongoClustersListByResourceGroup( + context: Client, + subscriptionId: string, + resourceGroupName: string, + options: MongoClustersListByResourceGroupOptionalParams = { + requestOptions: {}, + }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => + _mongoClustersListByResourceGroupSend( + context, + subscriptionId, + resourceGroupName, + options, + ), + _mongoClustersListByResourceGroupDeserialize, + { itemName: "value", nextLinkName: "nextLink" }, + ); +} + +export function _mongoClustersListSend( + context: Client, + subscriptionId: string, + options: MongoClustersListOptionalParams = { requestOptions: {} }, +): StreamableMethod< + MongoClustersList200Response | MongoClustersListDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/mongoClusters", + subscriptionId, + ) + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _mongoClustersListDeserialize( + result: MongoClustersList200Response | MongoClustersListDefaultResponse, +): Promise<_MongoClusterListResult> { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + value: result.body["value"].map((p) => ({ + tags: p["tags"], + location: p["location"], + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + createMode: p.properties?.["createMode"], + restoreParameters: !p.properties?.restoreParameters + ? undefined + : { + pointInTimeUTC: + p.properties?.restoreParameters?.["pointInTimeUTC"] !== + undefined + ? new Date( + p.properties?.restoreParameters?.["pointInTimeUTC"], + ) + : undefined, + sourceResourceId: + p.properties?.restoreParameters?.["sourceResourceId"], + }, + administratorLogin: p.properties?.["administratorLogin"], + administratorLoginPassword: + p.properties?.["administratorLoginPassword"], + serverVersion: p.properties?.["serverVersion"], + connectionString: p.properties?.["connectionString"], + earliestRestoreTime: p.properties?.["earliestRestoreTime"], + provisioningState: p.properties?.["provisioningState"], + clusterStatus: p.properties?.["clusterStatus"], + publicNetworkAccess: p.properties?.["publicNetworkAccess"], + nodeGroupSpecs: + p.properties?.["nodeGroupSpecs"] === undefined + ? p.properties?.["nodeGroupSpecs"] + : p.properties?.["nodeGroupSpecs"].map((p) => ({ + sku: p["sku"], + diskSizeGB: p["diskSizeGB"], + enableHa: p["enableHa"], + kind: p["kind"], + nodeCount: p["nodeCount"], + })), + privateEndpointConnections: + p.properties?.["privateEndpointConnections"] === undefined + ? p.properties?.["privateEndpointConnections"] + : p.properties?.["privateEndpointConnections"].map((p) => ({ + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: + p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + groupIds: p.properties?.["groupIds"], + privateEndpoint: !p.properties?.privateEndpoint + ? undefined + : { id: p.properties?.privateEndpoint?.["id"] }, + privateLinkServiceConnectionState: { + status: + p.properties?.privateLinkServiceConnectionState[ + "status" + ], + description: + p.properties?.privateLinkServiceConnectionState[ + "description" + ], + actionsRequired: + p.properties?.privateLinkServiceConnectionState[ + "actionsRequired" + ], + }, + provisioningState: + p.properties?.["provisioningState"], + }, + })), + }, + })), + nextLink: result.body["nextLink"], + }; +} + +/** List all the mongo clusters in a given subscription. */ +export function mongoClustersList( + context: Client, + subscriptionId: string, + options: MongoClustersListOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _mongoClustersListSend(context, subscriptionId, options), + _mongoClustersListDeserialize, + { itemName: "value", nextLinkName: "nextLink" }, + ); +} + +export function _mongoClustersListConnectionStringsSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: MongoClustersListConnectionStringsOptionalParams = { + requestOptions: {}, + }, +): StreamableMethod< + | MongoClustersListConnectionStrings200Response + | MongoClustersListConnectionStringsDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/listConnectionStrings", + subscriptionId, + resourceGroupName, + mongoClusterName, + ) + .post({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _mongoClustersListConnectionStringsDeserialize( + result: + | MongoClustersListConnectionStrings200Response + | MongoClustersListConnectionStringsDefaultResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + connectionStrings: + result.body["connectionStrings"] === undefined + ? result.body["connectionStrings"] + : result.body["connectionStrings"].map((p) => ({ + connectionString: p["connectionString"], + description: p["description"], + })), + }; +} + +/** List mongo cluster connection strings. This includes the default connection string using SCRAM-SHA-256, as well as other connection strings supported by the cluster. */ +export async function mongoClustersListConnectionStrings( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: MongoClustersListConnectionStringsOptionalParams = { + requestOptions: {}, + }, +): Promise { + const result = await _mongoClustersListConnectionStringsSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ); + return _mongoClustersListConnectionStringsDeserialize(result); +} + +export function _mongoClustersCheckNameAvailabilitySend( + context: Client, + subscriptionId: string, + location: string, + body: CheckNameAvailabilityRequest, + options: MongoClustersCheckNameAvailabilityOptionalParams = { + requestOptions: {}, + }, +): StreamableMethod< + | MongoClustersCheckNameAvailability200Response + | MongoClustersCheckNameAvailabilityDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/checkMongoClusterNameAvailability", + subscriptionId, + location, + ) + .post({ + ...operationOptionsToRequestParameters(options), + body: { name: body["name"], type: body["type"] }, + }); +} + +export async function _mongoClustersCheckNameAvailabilityDeserialize( + result: + | MongoClustersCheckNameAvailability200Response + | MongoClustersCheckNameAvailabilityDefaultResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + nameAvailable: result.body["nameAvailable"], + reason: result.body["reason"], + message: result.body["message"], + }; +} + +/** Check if mongo cluster name is available for use. */ +export async function mongoClustersCheckNameAvailability( + context: Client, + subscriptionId: string, + location: string, + body: CheckNameAvailabilityRequest, + options: MongoClustersCheckNameAvailabilityOptionalParams = { + requestOptions: {}, + }, +): Promise { + const result = await _mongoClustersCheckNameAvailabilitySend( + context, + subscriptionId, + location, + body, + options, + ); + return _mongoClustersCheckNameAvailabilityDeserialize(result); +} diff --git a/sdk/mongocluster/arm-mongocluster/src/api/operations/index.ts b/sdk/mongocluster/arm-mongocluster/src/api/operations/index.ts new file mode 100644 index 000000000000..2283aeabb7a2 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/operations/index.ts @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { Operation, _OperationListResult } from "../../models/models.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { buildPagedAsyncIterator } from "../pagingHelpers.js"; +import { + isUnexpected, + DocumentDBContext as Client, + OperationsList200Response, + OperationsListDefaultResponse, +} from "../../rest/index.js"; +import { + StreamableMethod, + operationOptionsToRequestParameters, + createRestError, +} from "@azure-rest/core-client"; +import { OperationsListOptionalParams } from "../../models/options.js"; + +export function _operationsListSend( + context: Client, + options: OperationsListOptionalParams = { requestOptions: {} }, +): StreamableMethod { + return context + .path("/providers/Microsoft.DocumentDB/operations") + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _operationsListDeserialize( + result: OperationsList200Response | OperationsListDefaultResponse, +): Promise<_OperationListResult> { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + value: result.body["value"].map((p) => ({ + name: p["name"], + isDataAction: p["isDataAction"], + display: !p.display + ? undefined + : { + provider: p.display?.["provider"], + resource: p.display?.["resource"], + operation: p.display?.["operation"], + description: p.display?.["description"], + }, + origin: p["origin"], + actionType: p["actionType"], + })), + nextLink: result.body["nextLink"], + }; +} + +/** List the operations for the provider */ +export function operationsList( + context: Client, + options: OperationsListOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _operationsListSend(context, options), + _operationsListDeserialize, + { itemName: "value", nextLinkName: "nextLink" }, + ); +} diff --git a/sdk/mongocluster/arm-mongocluster/src/api/pagingHelpers.ts b/sdk/mongocluster/arm-mongocluster/src/api/pagingHelpers.ts new file mode 100644 index 000000000000..9780e76e04a6 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/pagingHelpers.ts @@ -0,0 +1,191 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + Client, + createRestError, + PathUncheckedResponse, +} from "@azure-rest/core-client"; +import { RestError } from "@azure/core-rest-pipeline"; +import { + BuildPagedAsyncIteratorOptions, + ContinuablePage, + PageSettings, + PagedAsyncIterableIterator, + PagedResult, +} from "../models/pagingTypes.js"; +import { isUnexpected } from "../rest/index.js"; + +/** + * Helper to paginate results in a generic way and return a PagedAsyncIterableIterator + */ +export function buildPagedAsyncIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, + TResponse extends PathUncheckedResponse = PathUncheckedResponse, +>( + client: Client, + getInitialResponse: () => PromiseLike, + processResponseBody: (result: TResponse) => PromiseLike, + options: BuildPagedAsyncIteratorOptions = {}, +): PagedAsyncIterableIterator { + const itemName = options.itemName ?? "value"; + const nextLinkName = options.nextLinkName ?? "nextLink"; + const pagedResult: PagedResult = { + getPage: async (pageLink?: string) => { + const result = + pageLink === undefined + ? await getInitialResponse() + : await client.pathUnchecked(pageLink).get(); + checkPagingRequest(result); + const results = await processResponseBody(result as TResponse); + const nextLink = getNextLink(results, nextLinkName); + const values = getElements(results, itemName) as TPage; + return { + page: values, + nextPageLink: nextLink, + }; + }, + byPage: (settings?: TPageSettings) => { + const { continuationToken } = settings ?? {}; + return getPageAsyncIterator(pagedResult, { + pageLink: continuationToken, + }); + }, + }; + return getPagedAsyncIterator(pagedResult); +} + +/** + * returns an async iterator that iterates over results. It also has a `byPage` + * method that returns pages of items at once. + * + * @param pagedResult - an object that specifies how to get pages. + * @returns a paged async iterator that iterates over results. + */ + +function getPagedAsyncIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +>( + pagedResult: PagedResult, +): PagedAsyncIterableIterator { + const iter = getItemAsyncIterator( + pagedResult, + ); + return { + next() { + return iter.next(); + }, + [Symbol.asyncIterator]() { + return this; + }, + byPage: + pagedResult?.byPage ?? + ((settings?: TPageSettings) => { + const { continuationToken } = settings ?? {}; + return getPageAsyncIterator(pagedResult, { + pageLink: continuationToken, + }); + }), + }; +} + +async function* getItemAsyncIterator< + TElement, + TPage, + TPageSettings extends PageSettings, +>( + pagedResult: PagedResult, +): AsyncIterableIterator { + const pages = getPageAsyncIterator(pagedResult); + for await (const page of pages) { + yield* page as unknown as TElement[]; + } +} + +async function* getPageAsyncIterator< + TElement, + TPage, + TPageSettings extends PageSettings, +>( + pagedResult: PagedResult, + options: { + pageLink?: string; + } = {}, +): AsyncIterableIterator> { + const { pageLink } = options; + let response = await pagedResult.getPage( + pageLink ?? pagedResult.firstPageLink, + ); + if (!response) { + return; + } + let result = response.page as ContinuablePage; + result.continuationToken = response.nextPageLink; + yield result; + while (response.nextPageLink) { + response = await pagedResult.getPage(response.nextPageLink); + if (!response) { + return; + } + result = response.page as ContinuablePage; + result.continuationToken = response.nextPageLink; + yield result; + } +} + +/** + * Gets for the value of nextLink in the body + */ +function getNextLink(body: unknown, nextLinkName?: string): string | undefined { + if (!nextLinkName) { + return undefined; + } + + const nextLink = (body as Record)[nextLinkName]; + + if ( + typeof nextLink !== "string" && + typeof nextLink !== "undefined" && + nextLink !== null + ) { + throw new RestError( + `Body Property ${nextLinkName} should be a string or undefined or null but got ${typeof nextLink}`, + ); + } + + if (nextLink === null) { + return undefined; + } + + return nextLink; +} + +/** + * Gets the elements of the current request in the body. + */ +function getElements(body: unknown, itemName: string): T[] { + const value = (body as Record)[itemName] as T[]; + if (!Array.isArray(value)) { + throw new RestError( + `Couldn't paginate response\n Body doesn't contain an array property with name: ${itemName}`, + ); + } + + return value ?? []; +} + +/** + * Checks if a request failed + */ +function checkPagingRequest(response: PathUncheckedResponse): void { + if (isUnexpected(response)) { + throw createRestError( + `Pagination failed with unexpected statusCode ${response.status}`, + response, + ); + } +} diff --git a/sdk/mongocluster/arm-mongocluster/src/api/pollingHelpers.ts b/sdk/mongocluster/arm-mongocluster/src/api/pollingHelpers.ts new file mode 100644 index 000000000000..f3bd59e41b4f --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/pollingHelpers.ts @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + PollerLike, + OperationState, + ResourceLocationConfig, + RunningOperation, + createHttpPoller, + OperationResponse, +} from "@azure/core-lro"; + +import { + Client, + PathUncheckedResponse, + createRestError, +} from "@azure-rest/core-client"; +import { AbortSignalLike } from "@azure/abort-controller"; +import { isUnexpected } from "../rest/index.js"; + +export interface GetLongRunningPollerOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** + * The signal which can be used to abort requests. + */ + abortSignal?: AbortSignalLike; + /** + * The potential location of the result of the LRO if specified by the LRO extension in the swagger. + */ + resourceLocationConfig?: ResourceLocationConfig; + /** + * The original url of the LRO + * Should not be null when restoreFrom is set + */ + initialRequestUrl?: string; + /** + * A serialized poller which can be used to resume an existing paused Long-Running-Operation. + */ + restoreFrom?: string; + /** + * The function to get the initial response + */ + getInitialResponse?: () => PromiseLike; +} +export function getLongRunningPoller< + TResponse extends PathUncheckedResponse, + TResult = void, +>( + client: Client, + processResponseBody: (result: TResponse) => Promise, + options: GetLongRunningPollerOptions, +): PollerLike, TResult> { + const { restoreFrom, getInitialResponse } = options; + if (!restoreFrom && !getInitialResponse) { + throw new Error( + "Either restoreFrom or getInitialResponse must be specified", + ); + } + let initialResponse: TResponse | undefined = undefined; + const pollAbortController = new AbortController(); + const poller: RunningOperation = { + sendInitialRequest: async () => { + if (!getInitialResponse) { + throw new Error( + "getInitialResponse is required when initializing a new poller", + ); + } + initialResponse = await getInitialResponse(); + return getLroResponse(initialResponse); + }, + sendPollRequest: async ( + path: string, + pollOptions?: { + abortSignal?: AbortSignalLike; + }, + ) => { + // The poll request would both listen to the user provided abort signal and the poller's own abort signal + function abortListener(): void { + pollAbortController.abort(); + } + const abortSignal = pollAbortController.signal; + if (options.abortSignal?.aborted) { + pollAbortController.abort(); + } else if (pollOptions?.abortSignal?.aborted) { + pollAbortController.abort(); + } else if (!abortSignal.aborted) { + options.abortSignal?.addEventListener("abort", abortListener, { + once: true, + }); + pollOptions?.abortSignal?.addEventListener("abort", abortListener, { + once: true, + }); + } + let response; + try { + response = await client.pathUnchecked(path).get({ abortSignal }); + } finally { + options.abortSignal?.removeEventListener("abort", abortListener); + pollOptions?.abortSignal?.removeEventListener("abort", abortListener); + } + if (options.initialRequestUrl || initialResponse) { + response.headers["x-ms-original-url"] = + options.initialRequestUrl ?? initialResponse!.request.url; + } + + return getLroResponse(response as TResponse); + }, + }; + return createHttpPoller(poller, { + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: options?.resourceLocationConfig, + restoreFrom: options?.restoreFrom, + processResult: (result: unknown) => { + return processResponseBody(result as TResponse); + }, + }); +} +/** + * Converts a Rest Client response to a response that the LRO implementation understands + * @param response - a rest client http response + * @param deserializeFn - deserialize function to convert Rest response to modular output + * @returns - An LRO response that the LRO implementation understands + */ +function getLroResponse( + response: TResponse, +): OperationResponse { + if (isUnexpected(response as PathUncheckedResponse)) { + throw createRestError(response); + } + return { + flatResponse: response, + rawResponse: { + ...response, + statusCode: Number.parseInt(response.status), + body: response.body, + }, + }; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/api/privateEndpointConnections/index.ts b/sdk/mongocluster/arm-mongocluster/src/api/privateEndpointConnections/index.ts new file mode 100644 index 000000000000..d6356caf7574 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/privateEndpointConnections/index.ts @@ -0,0 +1,440 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { getLongRunningPoller } from "../pollingHelpers.js"; +import { PollerLike, OperationState } from "@azure/core-lro"; +import { + privateEndpointConnectionPropertiesSerializer, + PrivateEndpointConnectionResource, + _PrivateEndpointConnectionResourceListResult, +} from "../../models/models.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { buildPagedAsyncIterator } from "../pagingHelpers.js"; +import { + isUnexpected, + DocumentDBContext as Client, + PrivateEndpointConnectionsCreate200Response, + PrivateEndpointConnectionsCreate201Response, + PrivateEndpointConnectionsCreate202Response, + PrivateEndpointConnectionsCreateDefaultResponse, + PrivateEndpointConnectionsCreateLogicalResponse, + PrivateEndpointConnectionsDelete202Response, + PrivateEndpointConnectionsDelete204Response, + PrivateEndpointConnectionsDeleteDefaultResponse, + PrivateEndpointConnectionsDeleteLogicalResponse, + PrivateEndpointConnectionsGet200Response, + PrivateEndpointConnectionsGetDefaultResponse, + PrivateEndpointConnectionsListByMongoCluster200Response, + PrivateEndpointConnectionsListByMongoClusterDefaultResponse, +} from "../../rest/index.js"; +import { + StreamableMethod, + operationOptionsToRequestParameters, + createRestError, +} from "@azure-rest/core-client"; +import { + PrivateEndpointConnectionsListByMongoClusterOptionalParams, + PrivateEndpointConnectionsGetOptionalParams, + PrivateEndpointConnectionsCreateOptionalParams, + PrivateEndpointConnectionsDeleteOptionalParams, +} from "../../models/options.js"; + +export function _privateEndpointConnectionsListByMongoClusterSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: PrivateEndpointConnectionsListByMongoClusterOptionalParams = { + requestOptions: {}, + }, +): StreamableMethod< + | PrivateEndpointConnectionsListByMongoCluster200Response + | PrivateEndpointConnectionsListByMongoClusterDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections", + subscriptionId, + resourceGroupName, + mongoClusterName, + ) + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _privateEndpointConnectionsListByMongoClusterDeserialize( + result: + | PrivateEndpointConnectionsListByMongoCluster200Response + | PrivateEndpointConnectionsListByMongoClusterDefaultResponse, +): Promise<_PrivateEndpointConnectionResourceListResult> { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + value: result.body["value"].map((p) => ({ + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + groupIds: p.properties?.["groupIds"], + privateEndpoint: !p.properties?.privateEndpoint + ? undefined + : { id: p.properties?.privateEndpoint?.["id"] }, + privateLinkServiceConnectionState: { + status: p.properties?.privateLinkServiceConnectionState["status"], + description: + p.properties?.privateLinkServiceConnectionState["description"], + actionsRequired: + p.properties?.privateLinkServiceConnectionState[ + "actionsRequired" + ], + }, + provisioningState: p.properties?.["provisioningState"], + }, + })), + nextLink: result.body["nextLink"], + }; +} + +/** List existing private connections */ +export function privateEndpointConnectionsListByMongoCluster( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: PrivateEndpointConnectionsListByMongoClusterOptionalParams = { + requestOptions: {}, + }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => + _privateEndpointConnectionsListByMongoClusterSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + _privateEndpointConnectionsListByMongoClusterDeserialize, + { itemName: "value", nextLinkName: "nextLink" }, + ); +} + +export function _privateEndpointConnectionsGetSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + options: PrivateEndpointConnectionsGetOptionalParams = { requestOptions: {} }, +): StreamableMethod< + | PrivateEndpointConnectionsGet200Response + | PrivateEndpointConnectionsGetDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + ) + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _privateEndpointConnectionsGetDeserialize( + result: + | PrivateEndpointConnectionsGet200Response + | PrivateEndpointConnectionsGetDefaultResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + id: result.body["id"], + name: result.body["name"], + type: result.body["type"], + systemData: !result.body.systemData + ? undefined + : { + createdBy: result.body.systemData?.["createdBy"], + createdByType: result.body.systemData?.["createdByType"], + createdAt: + result.body.systemData?.["createdAt"] !== undefined + ? new Date(result.body.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: result.body.systemData?.["lastModifiedBy"], + lastModifiedByType: result.body.systemData?.["lastModifiedByType"], + lastModifiedAt: + result.body.systemData?.["lastModifiedAt"] !== undefined + ? new Date(result.body.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !result.body.properties + ? undefined + : { + groupIds: result.body.properties?.["groupIds"], + privateEndpoint: !result.body.properties?.privateEndpoint + ? undefined + : { id: result.body.properties?.privateEndpoint?.["id"] }, + privateLinkServiceConnectionState: { + status: + result.body.properties?.privateLinkServiceConnectionState[ + "status" + ], + description: + result.body.properties?.privateLinkServiceConnectionState[ + "description" + ], + actionsRequired: + result.body.properties?.privateLinkServiceConnectionState[ + "actionsRequired" + ], + }, + provisioningState: result.body.properties?.["provisioningState"], + }, + }; +} + +/** Get a specific private connection */ +export async function privateEndpointConnectionsGet( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + options: PrivateEndpointConnectionsGetOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _privateEndpointConnectionsGetSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + options, + ); + return _privateEndpointConnectionsGetDeserialize(result); +} + +export function _privateEndpointConnectionsCreateSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + resource: PrivateEndpointConnectionResource, + options: PrivateEndpointConnectionsCreateOptionalParams = { + requestOptions: {}, + }, +): StreamableMethod< + | PrivateEndpointConnectionsCreate200Response + | PrivateEndpointConnectionsCreate201Response + | PrivateEndpointConnectionsCreate202Response + | PrivateEndpointConnectionsCreateDefaultResponse + | PrivateEndpointConnectionsCreateLogicalResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + ) + .put({ + ...operationOptionsToRequestParameters(options), + body: { + properties: !resource.properties + ? resource.properties + : privateEndpointConnectionPropertiesSerializer(resource.properties), + }, + }); +} + +export async function _privateEndpointConnectionsCreateDeserialize( + result: + | PrivateEndpointConnectionsCreate200Response + | PrivateEndpointConnectionsCreate201Response + | PrivateEndpointConnectionsCreate202Response + | PrivateEndpointConnectionsCreateDefaultResponse + | PrivateEndpointConnectionsCreateLogicalResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + result = result as PrivateEndpointConnectionsCreateLogicalResponse; + return { + id: result.body["id"], + name: result.body["name"], + type: result.body["type"], + systemData: !result.body.systemData + ? undefined + : { + createdBy: result.body.systemData?.["createdBy"], + createdByType: result.body.systemData?.["createdByType"], + createdAt: + result.body.systemData?.["createdAt"] !== undefined + ? new Date(result.body.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: result.body.systemData?.["lastModifiedBy"], + lastModifiedByType: result.body.systemData?.["lastModifiedByType"], + lastModifiedAt: + result.body.systemData?.["lastModifiedAt"] !== undefined + ? new Date(result.body.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !result.body.properties + ? undefined + : { + groupIds: result.body.properties?.["groupIds"], + privateEndpoint: !result.body.properties?.privateEndpoint + ? undefined + : { id: result.body.properties?.privateEndpoint?.["id"] }, + privateLinkServiceConnectionState: { + status: + result.body.properties?.privateLinkServiceConnectionState[ + "status" + ], + description: + result.body.properties?.privateLinkServiceConnectionState[ + "description" + ], + actionsRequired: + result.body.properties?.privateLinkServiceConnectionState[ + "actionsRequired" + ], + }, + provisioningState: result.body.properties?.["provisioningState"], + }, + }; +} + +/** Create a Private endpoint connection */ +export function privateEndpointConnectionsCreate( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + resource: PrivateEndpointConnectionResource, + options: PrivateEndpointConnectionsCreateOptionalParams = { + requestOptions: {}, + }, +): PollerLike< + OperationState, + PrivateEndpointConnectionResource +> { + return getLongRunningPoller( + context, + _privateEndpointConnectionsCreateDeserialize, + { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _privateEndpointConnectionsCreateSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + resource, + options, + ), + }, + ) as PollerLike< + OperationState, + PrivateEndpointConnectionResource + >; +} + +export function _privateEndpointConnectionsDeleteSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + options: PrivateEndpointConnectionsDeleteOptionalParams = { + requestOptions: {}, + }, +): StreamableMethod< + | PrivateEndpointConnectionsDelete202Response + | PrivateEndpointConnectionsDelete204Response + | PrivateEndpointConnectionsDeleteDefaultResponse + | PrivateEndpointConnectionsDeleteLogicalResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}", + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + ) + .delete({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _privateEndpointConnectionsDeleteDeserialize( + result: + | PrivateEndpointConnectionsDelete202Response + | PrivateEndpointConnectionsDelete204Response + | PrivateEndpointConnectionsDeleteDefaultResponse + | PrivateEndpointConnectionsDeleteLogicalResponse, +): Promise { + if (isUnexpected(result)) { + throw createRestError(result); + } + + result = result as PrivateEndpointConnectionsDeleteLogicalResponse; + return; +} + +/** Delete the private endpoint connection */ +export function privateEndpointConnectionsDelete( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + options: PrivateEndpointConnectionsDeleteOptionalParams = { + requestOptions: {}, + }, +): PollerLike, void> { + return getLongRunningPoller( + context, + _privateEndpointConnectionsDeleteDeserialize, + { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _privateEndpointConnectionsDeleteSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + options, + ), + }, + ) as PollerLike, void>; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/api/privateLinks/index.ts b/sdk/mongocluster/arm-mongocluster/src/api/privateLinks/index.ts new file mode 100644 index 000000000000..99c6aa631e25 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/api/privateLinks/index.ts @@ -0,0 +1,110 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + PrivateLinkResource, + _PrivateLinkResourceListResult, +} from "../../models/models.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { buildPagedAsyncIterator } from "../pagingHelpers.js"; +import { + isUnexpected, + DocumentDBContext as Client, + PrivateLinksListByMongoCluster200Response, + PrivateLinksListByMongoClusterDefaultResponse, +} from "../../rest/index.js"; +import { + StreamableMethod, + operationOptionsToRequestParameters, + createRestError, +} from "@azure-rest/core-client"; +import { PrivateLinksListByMongoClusterOptionalParams } from "../../models/options.js"; + +export function _privateLinksListByMongoClusterSend( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: PrivateLinksListByMongoClusterOptionalParams = { + requestOptions: {}, + }, +): StreamableMethod< + | PrivateLinksListByMongoCluster200Response + | PrivateLinksListByMongoClusterDefaultResponse +> { + return context + .path( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateLinkResources", + subscriptionId, + resourceGroupName, + mongoClusterName, + ) + .get({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _privateLinksListByMongoClusterDeserialize( + result: + | PrivateLinksListByMongoCluster200Response + | PrivateLinksListByMongoClusterDefaultResponse, +): Promise<_PrivateLinkResourceListResult> { + if (isUnexpected(result)) { + throw createRestError(result); + } + + return { + value: result.body["value"].map((p) => ({ + id: p["id"], + name: p["name"], + type: p["type"], + systemData: !p.systemData + ? undefined + : { + createdBy: p.systemData?.["createdBy"], + createdByType: p.systemData?.["createdByType"], + createdAt: + p.systemData?.["createdAt"] !== undefined + ? new Date(p.systemData?.["createdAt"]) + : undefined, + lastModifiedBy: p.systemData?.["lastModifiedBy"], + lastModifiedByType: p.systemData?.["lastModifiedByType"], + lastModifiedAt: + p.systemData?.["lastModifiedAt"] !== undefined + ? new Date(p.systemData?.["lastModifiedAt"]) + : undefined, + }, + properties: !p.properties + ? undefined + : { + groupId: p.properties?.["groupId"], + requiredMembers: p.properties?.["requiredMembers"], + requiredZoneNames: p.properties?.["requiredZoneNames"], + }, + })), + nextLink: result.body["nextLink"], + }; +} + +/** list private links on the given resource */ +export function privateLinksListByMongoCluster( + context: Client, + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + options: PrivateLinksListByMongoClusterOptionalParams = { + requestOptions: {}, + }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => + _privateLinksListByMongoClusterSend( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + _privateLinksListByMongoClusterDeserialize, + { itemName: "value", nextLinkName: "nextLink" }, + ); +} diff --git a/sdk/mongocluster/arm-mongocluster/src/classic/firewallRules/index.ts b/sdk/mongocluster/arm-mongocluster/src/classic/firewallRules/index.ts new file mode 100644 index 000000000000..6ff337f450ec --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/classic/firewallRules/index.ts @@ -0,0 +1,124 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { DocumentDBContext } from "../../api/mongoClusterManagementContext.js"; +import { FirewallRule } from "../../models/models.js"; +import { + firewallRulesGet, + firewallRulesCreateOrUpdate, + firewallRulesDelete, + firewallRulesListByMongoCluster, +} from "../../api/firewallRules/index.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { PollerLike, OperationState } from "@azure/core-lro"; +import { + FirewallRulesGetOptionalParams, + FirewallRulesCreateOrUpdateOptionalParams, + FirewallRulesDeleteOptionalParams, + FirewallRulesListByMongoClusterOptionalParams, +} from "../../models/options.js"; + +/** Interface representing a FirewallRules operations. */ +export interface FirewallRulesOperations { + /** Gets information about a mongo cluster firewall rule. */ + get: ( + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + options?: FirewallRulesGetOptionalParams, + ) => Promise; + /** Creates a new firewall rule or updates an existing firewall rule on a mongo cluster. */ + createOrUpdate: ( + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + resource: FirewallRule, + options?: FirewallRulesCreateOrUpdateOptionalParams, + ) => PollerLike, FirewallRule>; + /** Deletes a mongo cluster firewall rule. */ + delete: ( + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + options?: FirewallRulesDeleteOptionalParams, + ) => PollerLike, void>; + /** List all the firewall rules in a given mongo cluster. */ + listByMongoCluster: ( + resourceGroupName: string, + mongoClusterName: string, + options?: FirewallRulesListByMongoClusterOptionalParams, + ) => PagedAsyncIterableIterator; +} + +export function getFirewallRules( + context: DocumentDBContext, + subscriptionId: string, +) { + return { + get: ( + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + options?: FirewallRulesGetOptionalParams, + ) => + firewallRulesGet( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + options, + ), + createOrUpdate: ( + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + resource: FirewallRule, + options?: FirewallRulesCreateOrUpdateOptionalParams, + ) => + firewallRulesCreateOrUpdate( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + resource, + options, + ), + delete: ( + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + options?: FirewallRulesDeleteOptionalParams, + ) => + firewallRulesDelete( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + firewallRuleName, + options, + ), + listByMongoCluster: ( + resourceGroupName: string, + mongoClusterName: string, + options?: FirewallRulesListByMongoClusterOptionalParams, + ) => + firewallRulesListByMongoCluster( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + }; +} + +export function getFirewallRulesOperations( + context: DocumentDBContext, + subscriptionId: string, +): FirewallRulesOperations { + return { + ...getFirewallRules(context, subscriptionId), + }; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/classic/index.ts b/sdk/mongocluster/arm-mongocluster/src/classic/index.ts new file mode 100644 index 000000000000..d1346c8aa74d --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/classic/index.ts @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +export { FirewallRulesOperations } from "./firewallRules/index.js"; +export { MongoClustersOperations } from "./mongoClusters/index.js"; +export { OperationsOperations } from "./operations/index.js"; +export { PrivateEndpointConnectionsOperations } from "./privateEndpointConnections/index.js"; +export { PrivateLinksOperations } from "./privateLinks/index.js"; diff --git a/sdk/mongocluster/arm-mongocluster/src/classic/mongoClusters/index.ts b/sdk/mongocluster/arm-mongocluster/src/classic/mongoClusters/index.ts new file mode 100644 index 000000000000..706e8e1492e7 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/classic/mongoClusters/index.ts @@ -0,0 +1,189 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { DocumentDBContext } from "../../api/mongoClusterManagementContext.js"; +import { + MongoCluster, + MongoClusterUpdate, + ListConnectionStringsResult, + CheckNameAvailabilityRequest, + CheckNameAvailabilityResponse, +} from "../../models/models.js"; +import { + mongoClustersGet, + mongoClustersCreateOrUpdate, + mongoClustersUpdate, + mongoClustersDelete, + mongoClustersListByResourceGroup, + mongoClustersList, + mongoClustersListConnectionStrings, + mongoClustersCheckNameAvailability, +} from "../../api/mongoClusters/index.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { PollerLike, OperationState } from "@azure/core-lro"; +import { + MongoClustersGetOptionalParams, + MongoClustersCreateOrUpdateOptionalParams, + MongoClustersUpdateOptionalParams, + MongoClustersDeleteOptionalParams, + MongoClustersListByResourceGroupOptionalParams, + MongoClustersListOptionalParams, + MongoClustersListConnectionStringsOptionalParams, + MongoClustersCheckNameAvailabilityOptionalParams, +} from "../../models/options.js"; + +/** Interface representing a MongoClusters operations. */ +export interface MongoClustersOperations { + /** Gets information about a mongo cluster. */ + get: ( + resourceGroupName: string, + mongoClusterName: string, + options?: MongoClustersGetOptionalParams, + ) => Promise; + /** Create or update a mongo cluster. Update overwrites all properties for the resource. To only modify some of the properties, use PATCH. */ + createOrUpdate: ( + resourceGroupName: string, + mongoClusterName: string, + resource: MongoCluster, + options?: MongoClustersCreateOrUpdateOptionalParams, + ) => PollerLike, MongoCluster>; + /** Updates an existing mongo cluster. The request body can contain one to many of the properties present in the normal mongo cluster definition. */ + update: ( + resourceGroupName: string, + mongoClusterName: string, + properties: MongoClusterUpdate, + options?: MongoClustersUpdateOptionalParams, + ) => PollerLike, MongoCluster>; + /** Deletes a mongo cluster. */ + delete: ( + resourceGroupName: string, + mongoClusterName: string, + options?: MongoClustersDeleteOptionalParams, + ) => PollerLike, void>; + /** List all the mongo clusters in a given resource group. */ + listByResourceGroup: ( + resourceGroupName: string, + options?: MongoClustersListByResourceGroupOptionalParams, + ) => PagedAsyncIterableIterator; + /** List all the mongo clusters in a given subscription. */ + list: ( + options?: MongoClustersListOptionalParams, + ) => PagedAsyncIterableIterator; + /** List mongo cluster connection strings. This includes the default connection string using SCRAM-SHA-256, as well as other connection strings supported by the cluster. */ + listConnectionStrings: ( + resourceGroupName: string, + mongoClusterName: string, + options?: MongoClustersListConnectionStringsOptionalParams, + ) => Promise; + /** Check if mongo cluster name is available for use. */ + checkNameAvailability: ( + location: string, + body: CheckNameAvailabilityRequest, + options?: MongoClustersCheckNameAvailabilityOptionalParams, + ) => Promise; +} + +export function getMongoClusters( + context: DocumentDBContext, + subscriptionId: string, +) { + return { + get: ( + resourceGroupName: string, + mongoClusterName: string, + options?: MongoClustersGetOptionalParams, + ) => + mongoClustersGet( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + createOrUpdate: ( + resourceGroupName: string, + mongoClusterName: string, + resource: MongoCluster, + options?: MongoClustersCreateOrUpdateOptionalParams, + ) => + mongoClustersCreateOrUpdate( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + resource, + options, + ), + update: ( + resourceGroupName: string, + mongoClusterName: string, + properties: MongoClusterUpdate, + options?: MongoClustersUpdateOptionalParams, + ) => + mongoClustersUpdate( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + properties, + options, + ), + delete: ( + resourceGroupName: string, + mongoClusterName: string, + options?: MongoClustersDeleteOptionalParams, + ) => + mongoClustersDelete( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + listByResourceGroup: ( + resourceGroupName: string, + options?: MongoClustersListByResourceGroupOptionalParams, + ) => + mongoClustersListByResourceGroup( + context, + subscriptionId, + resourceGroupName, + options, + ), + list: (options?: MongoClustersListOptionalParams) => + mongoClustersList(context, subscriptionId, options), + listConnectionStrings: ( + resourceGroupName: string, + mongoClusterName: string, + options?: MongoClustersListConnectionStringsOptionalParams, + ) => + mongoClustersListConnectionStrings( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + checkNameAvailability: ( + location: string, + body: CheckNameAvailabilityRequest, + options?: MongoClustersCheckNameAvailabilityOptionalParams, + ) => + mongoClustersCheckNameAvailability( + context, + subscriptionId, + location, + body, + options, + ), + }; +} + +export function getMongoClustersOperations( + context: DocumentDBContext, + subscriptionId: string, +): MongoClustersOperations { + return { + ...getMongoClusters(context, subscriptionId), + }; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/classic/operations/index.ts b/sdk/mongocluster/arm-mongocluster/src/classic/operations/index.ts new file mode 100644 index 000000000000..f2380312152b --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/classic/operations/index.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { DocumentDBContext } from "../../api/mongoClusterManagementContext.js"; +import { Operation } from "../../models/models.js"; +import { operationsList } from "../../api/operations/index.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { OperationsListOptionalParams } from "../../models/options.js"; + +/** Interface representing a Operations operations. */ +export interface OperationsOperations { + /** List the operations for the provider */ + list: ( + options?: OperationsListOptionalParams, + ) => PagedAsyncIterableIterator; +} + +export function getOperations(context: DocumentDBContext) { + return { + list: (options?: OperationsListOptionalParams) => + operationsList(context, options), + }; +} + +export function getOperationsOperations( + context: DocumentDBContext, +): OperationsOperations { + return { + ...getOperations(context), + }; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/classic/privateEndpointConnections/index.ts b/sdk/mongocluster/arm-mongocluster/src/classic/privateEndpointConnections/index.ts new file mode 100644 index 000000000000..10814cea2ead --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/classic/privateEndpointConnections/index.ts @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { DocumentDBContext } from "../../api/mongoClusterManagementContext.js"; +import { PrivateEndpointConnectionResource } from "../../models/models.js"; +import { + privateEndpointConnectionsListByMongoCluster, + privateEndpointConnectionsGet, + privateEndpointConnectionsCreate, + privateEndpointConnectionsDelete, +} from "../../api/privateEndpointConnections/index.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { PollerLike, OperationState } from "@azure/core-lro"; +import { + PrivateEndpointConnectionsListByMongoClusterOptionalParams, + PrivateEndpointConnectionsGetOptionalParams, + PrivateEndpointConnectionsCreateOptionalParams, + PrivateEndpointConnectionsDeleteOptionalParams, +} from "../../models/options.js"; + +/** Interface representing a PrivateEndpointConnections operations. */ +export interface PrivateEndpointConnectionsOperations { + /** List existing private connections */ + listByMongoCluster: ( + resourceGroupName: string, + mongoClusterName: string, + options?: PrivateEndpointConnectionsListByMongoClusterOptionalParams, + ) => PagedAsyncIterableIterator; + /** Get a specific private connection */ + get: ( + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + options?: PrivateEndpointConnectionsGetOptionalParams, + ) => Promise; + /** Create a Private endpoint connection */ + create: ( + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + resource: PrivateEndpointConnectionResource, + options?: PrivateEndpointConnectionsCreateOptionalParams, + ) => PollerLike< + OperationState, + PrivateEndpointConnectionResource + >; + /** Delete the private endpoint connection */ + delete: ( + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + options?: PrivateEndpointConnectionsDeleteOptionalParams, + ) => PollerLike, void>; +} + +export function getPrivateEndpointConnections( + context: DocumentDBContext, + subscriptionId: string, +) { + return { + listByMongoCluster: ( + resourceGroupName: string, + mongoClusterName: string, + options?: PrivateEndpointConnectionsListByMongoClusterOptionalParams, + ) => + privateEndpointConnectionsListByMongoCluster( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + get: ( + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + options?: PrivateEndpointConnectionsGetOptionalParams, + ) => + privateEndpointConnectionsGet( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + options, + ), + create: ( + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + resource: PrivateEndpointConnectionResource, + options?: PrivateEndpointConnectionsCreateOptionalParams, + ) => + privateEndpointConnectionsCreate( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + resource, + options, + ), + delete: ( + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + options?: PrivateEndpointConnectionsDeleteOptionalParams, + ) => + privateEndpointConnectionsDelete( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + privateEndpointConnectionName, + options, + ), + }; +} + +export function getPrivateEndpointConnectionsOperations( + context: DocumentDBContext, + subscriptionId: string, +): PrivateEndpointConnectionsOperations { + return { + ...getPrivateEndpointConnections(context, subscriptionId), + }; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/classic/privateLinks/index.ts b/sdk/mongocluster/arm-mongocluster/src/classic/privateLinks/index.ts new file mode 100644 index 000000000000..0e993017854a --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/classic/privateLinks/index.ts @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { DocumentDBContext } from "../../api/mongoClusterManagementContext.js"; +import { PrivateLinkResource } from "../../models/models.js"; +import { privateLinksListByMongoCluster } from "../../api/privateLinks/index.js"; +import { PagedAsyncIterableIterator } from "../../models/pagingTypes.js"; +import { PrivateLinksListByMongoClusterOptionalParams } from "../../models/options.js"; + +/** Interface representing a PrivateLinks operations. */ +export interface PrivateLinksOperations { + /** list private links on the given resource */ + listByMongoCluster: ( + resourceGroupName: string, + mongoClusterName: string, + options?: PrivateLinksListByMongoClusterOptionalParams, + ) => PagedAsyncIterableIterator; +} + +export function getPrivateLinks( + context: DocumentDBContext, + subscriptionId: string, +) { + return { + listByMongoCluster: ( + resourceGroupName: string, + mongoClusterName: string, + options?: PrivateLinksListByMongoClusterOptionalParams, + ) => + privateLinksListByMongoCluster( + context, + subscriptionId, + resourceGroupName, + mongoClusterName, + options, + ), + }; +} + +export function getPrivateLinksOperations( + context: DocumentDBContext, + subscriptionId: string, +): PrivateLinksOperations { + return { + ...getPrivateLinks(context, subscriptionId), + }; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/helpers/serializerHelpers.ts b/sdk/mongocluster/arm-mongocluster/src/helpers/serializerHelpers.ts new file mode 100644 index 000000000000..332381cdb695 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/helpers/serializerHelpers.ts @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +export function serializeRecord< + T extends string | number | boolean | Date | null, + R, +>(item: Record): Record; +export function serializeRecord( + item: Record, + serializer: (item: T) => R, +): Record; +export function serializeRecord( + item: Record, + serializer?: (item: T) => R, +): Record { + return Object.keys(item).reduce( + (acc, key) => { + if (isSupportedRecordType(item[key])) { + acc[key] = item[key] as any; + } else if (serializer) { + const value = item[key]; + if (value !== undefined) { + acc[key] = serializer(value); + } + } else { + console.warn(`Don't know how to serialize ${item[key]}`); + acc[key] = item[key] as any; + } + return acc; + }, + {} as Record, + ); +} + +function isSupportedRecordType(t: any) { + return ( + ["number", "string", "boolean", "null"].includes(typeof t) || + t instanceof Date + ); +} diff --git a/sdk/mongocluster/arm-mongocluster/src/index.ts b/sdk/mongocluster/arm-mongocluster/src/index.ts new file mode 100644 index 000000000000..ad8c9b8dde82 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/index.ts @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +export { + MongoClusterManagementClient, + MongoClusterManagementClientOptionalParams, +} from "./mongoClusterManagementClient.js"; +export { restorePoller, RestorePollerOptions } from "./restorePollerHelpers.js"; +export { + Resource, + SystemData, + KnownCreatedByType, + CreatedByType, + ProxyResource, + PrivateLinkResource, + PrivateLinkResourceProperties, + ErrorResponse, + ErrorDetail, + ErrorAdditionalInfo, + PrivateEndpointConnectionResource, + PrivateEndpointConnectionProperties, + PrivateEndpoint, + PrivateLinkServiceConnectionState, + KnownPrivateEndpointServiceConnectionStatus, + PrivateEndpointServiceConnectionStatus, + KnownPrivateEndpointConnectionProvisioningState, + PrivateEndpointConnectionProvisioningState, + FirewallRule, + FirewallRuleProperties, + KnownResourceProvisioningState, + ResourceProvisioningState, + TrackedResource, + MongoCluster, + MongoClusterProperties, + KnownCreateMode, + CreateMode, + MongoClusterRestoreParameters, + KnownMongoClusterStatus, + MongoClusterStatus, + KnownPublicNetworkAccess, + PublicNetworkAccess, + NodeGroupSpec, + KnownNodeKind, + NodeKind, + PrivateEndpointConnection, + MongoClusterUpdate, + MongoClusterUpdateProperties, + ListConnectionStringsResult, + ConnectionString, + CheckNameAvailabilityRequest, + CheckNameAvailabilityResponse, + KnownCheckNameAvailabilityReason, + CheckNameAvailabilityReason, + Operation, + OperationDisplay, + KnownOrigin, + Origin, + KnownActionType, + ActionType, + Versions, + ProvisioningState, + OperationsListOptionalParams, + MongoClustersGetOptionalParams, + MongoClustersCreateOrUpdateOptionalParams, + MongoClustersUpdateOptionalParams, + MongoClustersDeleteOptionalParams, + MongoClustersListByResourceGroupOptionalParams, + MongoClustersListOptionalParams, + MongoClustersListConnectionStringsOptionalParams, + MongoClustersCheckNameAvailabilityOptionalParams, + FirewallRulesGetOptionalParams, + FirewallRulesCreateOrUpdateOptionalParams, + FirewallRulesDeleteOptionalParams, + FirewallRulesListByMongoClusterOptionalParams, + PrivateEndpointConnectionsListByMongoClusterOptionalParams, + PrivateEndpointConnectionsGetOptionalParams, + PrivateEndpointConnectionsCreateOptionalParams, + PrivateEndpointConnectionsDeleteOptionalParams, + PrivateLinksListByMongoClusterOptionalParams, + PageSettings, + ContinuablePage, + PagedAsyncIterableIterator, +} from "./models/index.js"; +export { + FirewallRulesOperations, + MongoClustersOperations, + OperationsOperations, + PrivateEndpointConnectionsOperations, + PrivateLinksOperations, +} from "./classic/index.js"; diff --git a/sdk/mongocluster/arm-mongocluster/src/logger.ts b/sdk/mongocluster/arm-mongocluster/src/logger.ts new file mode 100644 index 000000000000..daf5a3b92a66 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/logger.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { createClientLogger } from "@azure/logger"; +export const logger = createClientLogger("arm-mongocluster"); diff --git a/sdk/mongocluster/arm-mongocluster/src/models/index.ts b/sdk/mongocluster/arm-mongocluster/src/models/index.ts new file mode 100644 index 000000000000..1a7acb51b8ec --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/models/index.ts @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +export { + Resource, + SystemData, + KnownCreatedByType, + CreatedByType, + ProxyResource, + PrivateLinkResource, + PrivateLinkResourceProperties, + ErrorResponse, + ErrorDetail, + ErrorAdditionalInfo, + PrivateEndpointConnectionResource, + PrivateEndpointConnectionProperties, + PrivateEndpoint, + PrivateLinkServiceConnectionState, + KnownPrivateEndpointServiceConnectionStatus, + PrivateEndpointServiceConnectionStatus, + KnownPrivateEndpointConnectionProvisioningState, + PrivateEndpointConnectionProvisioningState, + FirewallRule, + FirewallRuleProperties, + KnownResourceProvisioningState, + ResourceProvisioningState, + TrackedResource, + MongoCluster, + MongoClusterProperties, + KnownCreateMode, + CreateMode, + MongoClusterRestoreParameters, + KnownMongoClusterStatus, + MongoClusterStatus, + KnownPublicNetworkAccess, + PublicNetworkAccess, + NodeGroupSpec, + KnownNodeKind, + NodeKind, + PrivateEndpointConnection, + MongoClusterUpdate, + MongoClusterUpdateProperties, + ListConnectionStringsResult, + ConnectionString, + CheckNameAvailabilityRequest, + CheckNameAvailabilityResponse, + KnownCheckNameAvailabilityReason, + CheckNameAvailabilityReason, + Operation, + OperationDisplay, + KnownOrigin, + Origin, + KnownActionType, + ActionType, + Versions, + ProvisioningState, +} from "./models.js"; +export { + OperationsListOptionalParams, + MongoClustersGetOptionalParams, + MongoClustersCreateOrUpdateOptionalParams, + MongoClustersUpdateOptionalParams, + MongoClustersDeleteOptionalParams, + MongoClustersListByResourceGroupOptionalParams, + MongoClustersListOptionalParams, + MongoClustersListConnectionStringsOptionalParams, + MongoClustersCheckNameAvailabilityOptionalParams, + FirewallRulesGetOptionalParams, + FirewallRulesCreateOrUpdateOptionalParams, + FirewallRulesDeleteOptionalParams, + FirewallRulesListByMongoClusterOptionalParams, + PrivateEndpointConnectionsListByMongoClusterOptionalParams, + PrivateEndpointConnectionsGetOptionalParams, + PrivateEndpointConnectionsCreateOptionalParams, + PrivateEndpointConnectionsDeleteOptionalParams, + PrivateLinksListByMongoClusterOptionalParams, +} from "./options.js"; +export { + PageSettings, + ContinuablePage, + PagedAsyncIterableIterator, +} from "./pagingTypes.js"; diff --git a/sdk/mongocluster/arm-mongocluster/src/models/models.ts b/sdk/mongocluster/arm-mongocluster/src/models/models.ts new file mode 100644 index 000000000000..b06a814c81a1 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/models/models.ts @@ -0,0 +1,727 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { serializeRecord } from "../helpers/serializerHelpers.js"; +import { + PrivateEndpointConnectionResource as PrivateEndpointConnectionResourceRest, + PrivateEndpointConnectionProperties as PrivateEndpointConnectionPropertiesRest, + PrivateLinkServiceConnectionState as PrivateLinkServiceConnectionStateRest, + FirewallRule as FirewallRuleRest, + FirewallRuleProperties as FirewallRulePropertiesRest, + TrackedResource as TrackedResourceRest, + MongoCluster as MongoClusterRest, + MongoClusterProperties as MongoClusterPropertiesRest, + MongoClusterRestoreParameters as MongoClusterRestoreParametersRest, + NodeGroupSpec as NodeGroupSpecRest, + MongoClusterUpdate as MongoClusterUpdateRest, + MongoClusterUpdateProperties as MongoClusterUpdatePropertiesRest, + CheckNameAvailabilityRequest as CheckNameAvailabilityRequestRest, +} from "../rest/index.js"; + +/** The response of a PrivateLinkResource list operation. */ +export interface _PrivateLinkResourceListResult { + /** The PrivateLinkResource items on this page */ + value: PrivateLinkResource[]; + /** The link to the next page of items */ + nextLink?: string; +} + +/** Common fields that are returned in the response for all Azure Resource Manager resources */ +export interface Resource { + /** Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} */ + readonly id?: string; + /** The name of the resource */ + readonly name?: string; + /** The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" */ + readonly type?: string; + /** Azure Resource Manager metadata containing createdBy and modifiedBy information. */ + readonly systemData?: SystemData; +} + +export function resourceSerializer(item: Resource) { + return item as any; +} + +/** Metadata pertaining to creation and last modification of the resource. */ +export interface SystemData { + /** The identity that created the resource. */ + createdBy?: string; + /** The type of identity that created the resource. */ + createdByType?: CreatedByType; + /** The timestamp of resource creation (UTC). */ + createdAt?: Date; + /** The identity that last modified the resource. */ + lastModifiedBy?: string; + /** The type of identity that last modified the resource. */ + lastModifiedByType?: CreatedByType; + /** The timestamp of resource last modification (UTC) */ + lastModifiedAt?: Date; +} + +/** Known values of {@link CreatedByType} that the service accepts. */ +export enum KnownCreatedByType { + /** User */ + User = "User", + /** Application */ + Application = "Application", + /** ManagedIdentity */ + ManagedIdentity = "ManagedIdentity", + /** Key */ + Key = "Key", +} + +/** + * The kind of entity that created the resource. \ + * {@link KnownCreatedByType} can be used interchangeably with CreatedByType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **User** \ + * **Application** \ + * **ManagedIdentity** \ + * **Key** + */ +export type CreatedByType = string; + +/** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */ +export interface ProxyResource extends Resource {} + +export function proxyResourceSerializer(item: ProxyResource) { + return item as any; +} + +/** Concrete proxy resource types can be created by aliasing this type using a specific property type. */ +export interface PrivateLinkResource extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: PrivateLinkResourceProperties; +} + +/** Properties of a private link resource. */ +export interface PrivateLinkResourceProperties { + /** The private link resource group id. */ + readonly groupId?: string; + /** The private link resource required member names. */ + readonly requiredMembers?: string[]; + /** The private link resource private link DNS zone name. */ + requiredZoneNames?: string[]; +} + +/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. */ +export interface ErrorResponse { + /** The error object. */ + error?: ErrorDetail; +} + +/** The error detail. */ +export interface ErrorDetail { + /** The error code. */ + readonly code?: string; + /** The error message. */ + readonly message?: string; + /** The error target. */ + readonly target?: string; + /** The error details. */ + readonly details?: ErrorDetail[]; + /** The error additional info. */ + readonly additionalInfo?: ErrorAdditionalInfo[]; +} + +/** The resource management error additional info. */ +export interface ErrorAdditionalInfo { + /** The additional info type. */ + readonly type?: string; + /** The additional info. */ + readonly info?: Record; +} + +/** The response of a PrivateEndpointConnectionResource list operation. */ +export interface _PrivateEndpointConnectionResourceListResult { + /** The PrivateEndpointConnectionResource items on this page */ + value: PrivateEndpointConnectionResource[]; + /** The link to the next page of items */ + nextLink?: string; +} + +/** Concrete proxy resource types can be created by aliasing this type using a specific property type. */ +export interface PrivateEndpointConnectionResource extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: PrivateEndpointConnectionProperties; +} + +export function privateEndpointConnectionResourceSerializer( + item: PrivateEndpointConnectionResource, +): PrivateEndpointConnectionResourceRest { + return { + properties: !item.properties + ? item.properties + : privateEndpointConnectionPropertiesSerializer(item.properties), + }; +} + +/** Properties of the private endpoint connection. */ +export interface PrivateEndpointConnectionProperties { + /** The group ids for the private endpoint resource. */ + readonly groupIds?: string[]; + /** The private endpoint resource. */ + privateEndpoint?: PrivateEndpoint; + /** A collection of information about the state of the connection between service consumer and provider. */ + privateLinkServiceConnectionState: PrivateLinkServiceConnectionState; + /** The provisioning state of the private endpoint connection resource. */ + readonly provisioningState?: PrivateEndpointConnectionProvisioningState; +} + +export function privateEndpointConnectionPropertiesSerializer( + item: PrivateEndpointConnectionProperties, +): PrivateEndpointConnectionPropertiesRest { + return { + privateEndpoint: !item.privateEndpoint + ? item.privateEndpoint + : privateEndpointSerializer(item.privateEndpoint), + privateLinkServiceConnectionState: + privateLinkServiceConnectionStateSerializer( + item.privateLinkServiceConnectionState, + ), + }; +} + +/** The Private Endpoint resource. */ +export interface PrivateEndpoint { + /** The resource identifier for private endpoint */ + readonly id?: string; +} + +export function privateEndpointSerializer(item: PrivateEndpoint) { + return item as any; +} + +/** A collection of information about the state of the connection between service consumer and provider. */ +export interface PrivateLinkServiceConnectionState { + /** Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. */ + status?: PrivateEndpointServiceConnectionStatus; + /** The reason for approval/rejection of the connection. */ + description?: string; + /** A message indicating if changes on the service provider require any updates on the consumer. */ + actionsRequired?: string; +} + +export function privateLinkServiceConnectionStateSerializer( + item: PrivateLinkServiceConnectionState, +): PrivateLinkServiceConnectionStateRest { + return { + status: item["status"], + description: item["description"], + actionsRequired: item["actionsRequired"], + }; +} + +/** Known values of {@link PrivateEndpointServiceConnectionStatus} that the service accepts. */ +export enum KnownPrivateEndpointServiceConnectionStatus { + /** Pending */ + Pending = "Pending", + /** Approved */ + Approved = "Approved", + /** Rejected */ + Rejected = "Rejected", +} + +/** + * The private endpoint connection status. \ + * {@link KnownPrivateEndpointServiceConnectionStatus} can be used interchangeably with PrivateEndpointServiceConnectionStatus, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Pending** \ + * **Approved** \ + * **Rejected** + */ +export type PrivateEndpointServiceConnectionStatus = string; + +/** Known values of {@link PrivateEndpointConnectionProvisioningState} that the service accepts. */ +export enum KnownPrivateEndpointConnectionProvisioningState { + /** Succeeded */ + Succeeded = "Succeeded", + /** Creating */ + Creating = "Creating", + /** Deleting */ + Deleting = "Deleting", + /** Failed */ + Failed = "Failed", +} + +/** + * The current provisioning state. \ + * {@link KnownPrivateEndpointConnectionProvisioningState} can be used interchangeably with PrivateEndpointConnectionProvisioningState, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Succeeded** \ + * **Creating** \ + * **Deleting** \ + * **Failed** + */ +export type PrivateEndpointConnectionProvisioningState = string; + +/** Represents a mongo cluster firewall rule. */ +export interface FirewallRule extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: FirewallRuleProperties; +} + +export function firewallRuleSerializer(item: FirewallRule): FirewallRuleRest { + return { + properties: !item.properties + ? item.properties + : firewallRulePropertiesSerializer(item.properties), + }; +} + +/** The properties of a mongo cluster firewall rule. */ +export interface FirewallRuleProperties { + /** The provisioning state of the firewall rule. */ + readonly provisioningState?: ProvisioningState; + /** The start IP address of the mongo cluster firewall rule. Must be IPv4 format. */ + startIpAddress: string; + /** The end IP address of the mongo cluster firewall rule. Must be IPv4 format. */ + endIpAddress: string; +} + +export function firewallRulePropertiesSerializer( + item: FirewallRuleProperties, +): FirewallRulePropertiesRest { + return { + startIpAddress: item["startIpAddress"], + endIpAddress: item["endIpAddress"], + }; +} + +/** Known values of {@link ResourceProvisioningState} that the service accepts. */ +export enum KnownResourceProvisioningState { + /** Succeeded */ + Succeeded = "Succeeded", + /** Failed */ + Failed = "Failed", + /** Canceled */ + Canceled = "Canceled", +} + +/** + * The provisioning state of a resource type. \ + * {@link KnownResourceProvisioningState} can be used interchangeably with ResourceProvisioningState, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Succeeded** \ + * **Failed** \ + * **Canceled** + */ +export type ResourceProvisioningState = string; + +/** The response of a FirewallRule list operation. */ +export interface _FirewallRuleListResult { + /** The FirewallRule items on this page */ + value: FirewallRule[]; + /** The link to the next page of items */ + nextLink?: string; +} + +/** The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location' */ +export interface TrackedResource extends Resource { + /** Resource tags. */ + tags?: Record; + /** The geo-location where the resource lives */ + location: string; +} + +export function trackedResourceSerializer( + item: TrackedResource, +): TrackedResourceRest { + return { + tags: !item.tags ? item.tags : (serializeRecord(item.tags as any) as any), + location: item["location"], + }; +} + +/** Represents a mongo cluster resource. */ +export interface MongoCluster extends TrackedResource { + /** The resource-specific properties for this resource. */ + properties?: MongoClusterProperties; +} + +export function mongoClusterSerializer(item: MongoCluster): MongoClusterRest { + return { + tags: !item.tags ? item.tags : (serializeRecord(item.tags as any) as any), + location: item["location"], + properties: !item.properties + ? item.properties + : mongoClusterPropertiesSerializer(item.properties), + }; +} + +/** The properties of a mongo cluster. */ +export interface MongoClusterProperties { + /** The mode to create a mongo cluster. */ + createMode?: CreateMode; + /** The parameters to create a point-in-time restore mongo cluster. */ + restoreParameters?: MongoClusterRestoreParameters; + /** The administrator's login for the mongo cluster. */ + administratorLogin?: string; + /** The password of the administrator login. */ + administratorLoginPassword?: string; + /** The Mongo DB server version. Defaults to the latest available version if not specified. */ + serverVersion?: string; + /** The default mongo connection string for the cluster. */ + readonly connectionString?: string; + /** Earliest restore timestamp in UTC ISO8601 format. */ + readonly earliestRestoreTime?: string; + /** The provisioning state of the mongo cluster. */ + readonly provisioningState?: ProvisioningState; + /** The status of the mongo cluster. */ + readonly clusterStatus?: MongoClusterStatus; + /** Whether or not public endpoint access is allowed for this mongo cluster. */ + publicNetworkAccess?: PublicNetworkAccess; + /** The list of node group specs in the cluster. */ + nodeGroupSpecs?: NodeGroupSpec[]; + /** List of private endpoint connections. */ + readonly privateEndpointConnections?: PrivateEndpointConnection[]; +} + +export function mongoClusterPropertiesSerializer( + item: MongoClusterProperties, +): MongoClusterPropertiesRest { + return { + createMode: item["createMode"], + restoreParameters: !item.restoreParameters + ? item.restoreParameters + : mongoClusterRestoreParametersSerializer(item.restoreParameters), + administratorLogin: item["administratorLogin"], + administratorLoginPassword: item["administratorLoginPassword"], + serverVersion: item["serverVersion"], + publicNetworkAccess: item["publicNetworkAccess"], + nodeGroupSpecs: + item["nodeGroupSpecs"] === undefined + ? item["nodeGroupSpecs"] + : item["nodeGroupSpecs"].map(nodeGroupSpecSerializer), + }; +} + +/** Known values of {@link CreateMode} that the service accepts. */ +export enum KnownCreateMode { + /** Default */ + Default = "Default", + /** PointInTimeRestore */ + PointInTimeRestore = "PointInTimeRestore", +} + +/** + * The mode that the Mongo Cluster is created with. \ + * {@link KnownCreateMode} can be used interchangeably with CreateMode, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Default** \ + * **PointInTimeRestore** + */ +export type CreateMode = string; + +/** Parameters used for restore operations */ +export interface MongoClusterRestoreParameters { + /** UTC point in time to restore a mongo cluster */ + pointInTimeUTC?: Date; + /** Resource ID to locate the source cluster to restore */ + sourceResourceId?: string; +} + +export function mongoClusterRestoreParametersSerializer( + item: MongoClusterRestoreParameters, +): MongoClusterRestoreParametersRest { + return { + pointInTimeUTC: item["pointInTimeUTC"]?.toISOString(), + sourceResourceId: item["sourceResourceId"], + }; +} + +/** Known values of {@link MongoClusterStatus} that the service accepts. */ +export enum KnownMongoClusterStatus { + /** Ready */ + Ready = "Ready", + /** Provisioning */ + Provisioning = "Provisioning", + /** Updating */ + Updating = "Updating", + /** Starting */ + Starting = "Starting", + /** Stopping */ + Stopping = "Stopping", + /** Stopped */ + Stopped = "Stopped", + /** Dropping */ + Dropping = "Dropping", +} + +/** + * The status of the Mongo cluster resource. \ + * {@link KnownMongoClusterStatus} can be used interchangeably with MongoClusterStatus, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Ready** \ + * **Provisioning** \ + * **Updating** \ + * **Starting** \ + * **Stopping** \ + * **Stopped** \ + * **Dropping** + */ +export type MongoClusterStatus = string; + +/** Known values of {@link PublicNetworkAccess} that the service accepts. */ +export enum KnownPublicNetworkAccess { + /** Enabled */ + Enabled = "Enabled", + /** Disabled */ + Disabled = "Disabled", +} + +/** + * Whether or not public endpoint access is allowed for this Mongo cluster. Value is optional and default value is 'Enabled' \ + * {@link KnownPublicNetworkAccess} can be used interchangeably with PublicNetworkAccess, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Enabled** \ + * **Disabled** + */ +export type PublicNetworkAccess = string; + +/** Specification for a node group. */ +export interface NodeGroupSpec { + /** The resource sku for the node group. This defines the size of CPU and memory that is provisioned for each node. Example values: 'M30', 'M40'. */ + sku?: string; + /** The disk storage size for the node group in GB. Example values: 128, 256, 512, 1024. */ + diskSizeGB?: number; + /** Whether high availability is enabled on the node group. */ + enableHa?: boolean; + /** The node type deployed in the node group. */ + kind?: NodeKind; + /** The number of nodes in the node group. */ + nodeCount?: number; +} + +export function nodeGroupSpecSerializer( + item: NodeGroupSpec, +): NodeGroupSpecRest { + return { + sku: item["sku"], + diskSizeGB: item["diskSizeGB"], + enableHa: item["enableHa"], + kind: item["kind"], + nodeCount: item["nodeCount"], + }; +} + +/** Known values of {@link NodeKind} that the service accepts. */ +export enum KnownNodeKind { + /** Shard */ + Shard = "Shard", +} + +/** + * The kind of the node on the cluster. \ + * {@link KnownNodeKind} can be used interchangeably with NodeKind, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Shard** + */ +export type NodeKind = string; + +/** The private endpoint connection resource */ +export interface PrivateEndpointConnection extends Resource { + /** The private endpoint connection properties */ + properties?: PrivateEndpointConnectionProperties; +} + +/** The type used for update operations of the MongoCluster. */ +export interface MongoClusterUpdate { + /** Resource tags. */ + tags?: Record; + properties?: MongoClusterUpdateProperties; +} + +export function mongoClusterUpdateSerializer( + item: MongoClusterUpdate, +): MongoClusterUpdateRest { + return { + tags: !item.tags ? item.tags : (serializeRecord(item.tags as any) as any), + properties: !item.properties + ? item.properties + : mongoClusterUpdatePropertiesSerializer(item.properties), + }; +} + +/** The updatable properties of the MongoCluster. */ +export interface MongoClusterUpdateProperties { + /** The administrator's login for the mongo cluster. */ + administratorLogin?: string; + /** The password of the administrator login. */ + administratorLoginPassword?: string; + /** The Mongo DB server version. Defaults to the latest available version if not specified. */ + serverVersion?: string; + /** Whether or not public endpoint access is allowed for this mongo cluster. */ + publicNetworkAccess?: PublicNetworkAccess; + /** The list of node group specs in the cluster. */ + nodeGroupSpecs?: NodeGroupSpec[]; +} + +export function mongoClusterUpdatePropertiesSerializer( + item: MongoClusterUpdateProperties, +): MongoClusterUpdatePropertiesRest { + return { + administratorLogin: item["administratorLogin"], + administratorLoginPassword: item["administratorLoginPassword"], + serverVersion: item["serverVersion"], + publicNetworkAccess: item["publicNetworkAccess"], + nodeGroupSpecs: + item["nodeGroupSpecs"] === undefined + ? item["nodeGroupSpecs"] + : item["nodeGroupSpecs"].map(nodeGroupSpecSerializer), + }; +} + +/** The response of a MongoCluster list operation. */ +export interface _MongoClusterListResult { + /** The MongoCluster items on this page */ + value: MongoCluster[]; + /** The link to the next page of items */ + nextLink?: string; +} + +/** The connection strings for the given mongo cluster. */ +export interface ListConnectionStringsResult { + /** An array that contains the connection strings for a mongo cluster. */ + readonly connectionStrings?: ConnectionString[]; +} + +/** Connection string for the mongo cluster */ +export interface ConnectionString { + /** Value of the connection string */ + readonly connectionString?: string; + /** Description of the connection string */ + readonly description?: string; +} + +/** The check availability request body. */ +export interface CheckNameAvailabilityRequest { + /** The name of the resource for which availability needs to be checked. */ + name?: string; + /** The resource type. */ + type?: string; +} + +export function checkNameAvailabilityRequestSerializer( + item: CheckNameAvailabilityRequest, +): CheckNameAvailabilityRequestRest { + return { + name: item["name"], + type: item["type"], + }; +} + +/** The check availability result. */ +export interface CheckNameAvailabilityResponse { + /** Indicates if the resource name is available. */ + nameAvailable?: boolean; + /** The reason why the given name is not available. */ + reason?: CheckNameAvailabilityReason; + /** Detailed reason why the given name is not available. */ + message?: string; +} + +/** Known values of {@link CheckNameAvailabilityReason} that the service accepts. */ +export enum KnownCheckNameAvailabilityReason { + /** Invalid */ + Invalid = "Invalid", + /** AlreadyExists */ + AlreadyExists = "AlreadyExists", +} + +/** + * Possible reasons for a name not being available. \ + * {@link KnownCheckNameAvailabilityReason} can be used interchangeably with CheckNameAvailabilityReason, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Invalid** \ + * **AlreadyExists** + */ +export type CheckNameAvailabilityReason = string; + +/** A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to get the next set of results. */ +export interface _OperationListResult { + /** The Operation items on this page */ + value: Operation[]; + /** The link to the next page of items */ + nextLink?: string; +} + +/** Details of a REST API operation, returned from the Resource Provider Operations API */ +export interface Operation { + /** The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write", "Microsoft.Compute/virtualMachines/capture/action" */ + readonly name?: string; + /** Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for Azure Resource Manager/control-plane operations. */ + readonly isDataAction?: boolean; + /** Localized display information for this particular operation. */ + display?: OperationDisplay; + /** The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" */ + readonly origin?: Origin; + /** Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. */ + actionType?: ActionType; +} + +/** Localized display information for and operation. */ +export interface OperationDisplay { + /** The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft Compute". */ + provider?: string; + /** The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job Schedule Collections". */ + resource?: string; + /** The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual Machine", "Restart Virtual Machine". */ + operation?: string; + /** The short, localized friendly description of the operation; suitable for tool tips and detailed views. */ + description?: string; +} + +/** Known values of {@link Origin} that the service accepts. */ +export enum KnownOrigin { + /** user */ + user = "user", + /** system */ + system = "system", + /** user,system */ + "user,system" = "user,system", +} + +/** + * The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" \ + * {@link KnownOrigin} can be used interchangeably with Origin, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **user** \ + * **system** \ + * **user,system** + */ +export type Origin = string; + +/** Known values of {@link ActionType} that the service accepts. */ +export enum KnownActionType { + /** Internal */ + Internal = "Internal", +} + +/** + * Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. \ + * {@link KnownActionType} can be used interchangeably with ActionType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Internal** + */ +export type ActionType = string; +/** The available API versions. */ +export type Versions = "2024-03-01-preview"; +/** Alias for ProvisioningState */ +export type ProvisioningState = + | string + | ResourceProvisioningState + | "InProgress" + | "Updating" + | "Dropping"; diff --git a/sdk/mongocluster/arm-mongocluster/src/models/options.ts b/sdk/mongocluster/arm-mongocluster/src/models/options.ts new file mode 100644 index 000000000000..fe9a7516bfd9 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/models/options.ts @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface OperationsListOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface MongoClustersGetOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface MongoClustersCreateOrUpdateOptionalParams + extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface MongoClustersUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface MongoClustersDeleteOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface MongoClustersListByResourceGroupOptionalParams + extends OperationOptions {} + +/** Optional parameters. */ +export interface MongoClustersListOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface MongoClustersListConnectionStringsOptionalParams + extends OperationOptions {} + +/** Optional parameters. */ +export interface MongoClustersCheckNameAvailabilityOptionalParams + extends OperationOptions {} + +/** Optional parameters. */ +export interface FirewallRulesGetOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface FirewallRulesCreateOrUpdateOptionalParams + extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface FirewallRulesDeleteOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface FirewallRulesListByMongoClusterOptionalParams + extends OperationOptions {} + +/** Optional parameters. */ +export interface PrivateEndpointConnectionsListByMongoClusterOptionalParams + extends OperationOptions {} + +/** Optional parameters. */ +export interface PrivateEndpointConnectionsGetOptionalParams + extends OperationOptions {} + +/** Optional parameters. */ +export interface PrivateEndpointConnectionsCreateOptionalParams + extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface PrivateEndpointConnectionsDeleteOptionalParams + extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface PrivateLinksListByMongoClusterOptionalParams + extends OperationOptions {} diff --git a/sdk/mongocluster/arm-mongocluster/src/models/pagingTypes.ts b/sdk/mongocluster/arm-mongocluster/src/models/pagingTypes.ts new file mode 100644 index 000000000000..f734b48e62f9 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/models/pagingTypes.ts @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/** + * Options for the byPage method + */ +export interface PageSettings { + /** + * A reference to a specific page to start iterating from. + */ + continuationToken?: string; +} + +/** + * An interface that describes a page of results. + */ +export type ContinuablePage = TPage & { + /** + * The token that keeps track of where to continue the iterator + */ + continuationToken?: string; +}; + +/** + * An interface that allows async iterable iteration both to completion and by page. + */ +export interface PagedAsyncIterableIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +> { + /** + * The next method, part of the iteration protocol + */ + next(): Promise>; + /** + * The connection to the async iterator, part of the iteration protocol + */ + [Symbol.asyncIterator](): PagedAsyncIterableIterator< + TElement, + TPage, + TPageSettings + >; + /** + * Return an AsyncIterableIterator that works a page at a time + */ + byPage: ( + settings?: TPageSettings, + ) => AsyncIterableIterator>; +} + +/** + * An interface that describes how to communicate with the service. + */ +export interface PagedResult< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +> { + /** + * Link to the first page of results. + */ + firstPageLink?: string; + /** + * A method that returns a page of results. + */ + getPage: ( + pageLink?: string, + ) => Promise<{ page: TPage; nextPageLink?: string } | undefined>; + /** + * a function to implement the `byPage` method on the paged async iterator. + */ + byPage?: ( + settings?: TPageSettings, + ) => AsyncIterableIterator>; + + /** + * A function to extract elements from a page. + */ + toElements?: (page: TPage) => TElement[]; +} + +/** + * Options for the paging helper + */ +export interface BuildPagedAsyncIteratorOptions { + itemName?: string; + nextLinkName?: string; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/mongoClusterManagementClient.ts b/sdk/mongocluster/arm-mongocluster/src/mongoClusterManagementClient.ts new file mode 100644 index 000000000000..280e6b383ab3 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/mongoClusterManagementClient.ts @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { TokenCredential } from "@azure/core-auth"; +import { Pipeline } from "@azure/core-rest-pipeline"; +import { + getOperationsOperations, + OperationsOperations, +} from "./classic/operations/index.js"; +import { + getMongoClustersOperations, + MongoClustersOperations, +} from "./classic/mongoClusters/index.js"; +import { + getFirewallRulesOperations, + FirewallRulesOperations, +} from "./classic/firewallRules/index.js"; +import { + getPrivateEndpointConnectionsOperations, + PrivateEndpointConnectionsOperations, +} from "./classic/privateEndpointConnections/index.js"; +import { + getPrivateLinksOperations, + PrivateLinksOperations, +} from "./classic/privateLinks/index.js"; +import { + createMongoClusterManagement, + MongoClusterManagementClientOptionalParams, + DocumentDBContext, +} from "./api/index.js"; + +export { MongoClusterManagementClientOptionalParams } from "./api/mongoClusterManagementContext.js"; + +export class MongoClusterManagementClient { + private _client: DocumentDBContext; + /** The pipeline used by this client to make requests */ + public readonly pipeline: Pipeline; + + /** The Microsoft Azure management API provides create, read, update, and delete functionality for Azure Cosmos DB for MongoDB vCore resources including clusters and firewall rules. */ + constructor( + credential: TokenCredential, + subscriptionId: string, + options: MongoClusterManagementClientOptionalParams = {}, + ) { + const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; + const userAgentPrefix = prefixFromOptions + ? `${prefixFromOptions} azsdk-js-client` + : "azsdk-js-client"; + + this._client = createMongoClusterManagement(credential, { + ...options, + userAgentOptions: { userAgentPrefix }, + }); + this.pipeline = this._client.pipeline; + this.operations = getOperationsOperations(this._client); + this.mongoClusters = getMongoClustersOperations( + this._client, + subscriptionId, + ); + this.firewallRules = getFirewallRulesOperations( + this._client, + subscriptionId, + ); + this.privateEndpointConnections = getPrivateEndpointConnectionsOperations( + this._client, + subscriptionId, + ); + this.privateLinks = getPrivateLinksOperations(this._client, subscriptionId); + } + + /** The operation groups for Operations */ + public readonly operations: OperationsOperations; + /** The operation groups for MongoClusters */ + public readonly mongoClusters: MongoClustersOperations; + /** The operation groups for FirewallRules */ + public readonly firewallRules: FirewallRulesOperations; + /** The operation groups for PrivateEndpointConnections */ + public readonly privateEndpointConnections: PrivateEndpointConnectionsOperations; + /** The operation groups for PrivateLinks */ + public readonly privateLinks: PrivateLinksOperations; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/clientDefinitions.ts b/sdk/mongocluster/arm-mongocluster/src/rest/clientDefinitions.ts new file mode 100644 index 000000000000..46836515deba --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/clientDefinitions.ts @@ -0,0 +1,312 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + OperationsListParameters, + MongoClustersGetParameters, + MongoClustersCreateOrUpdateParameters, + MongoClustersUpdateParameters, + MongoClustersDeleteParameters, + MongoClustersListByResourceGroupParameters, + MongoClustersListParameters, + MongoClustersListConnectionStringsParameters, + MongoClustersCheckNameAvailabilityParameters, + FirewallRulesGetParameters, + FirewallRulesCreateOrUpdateParameters, + FirewallRulesDeleteParameters, + FirewallRulesListByMongoClusterParameters, + PrivateEndpointConnectionsListByMongoClusterParameters, + PrivateEndpointConnectionsGetParameters, + PrivateEndpointConnectionsCreateParameters, + PrivateEndpointConnectionsDeleteParameters, + PrivateLinksListByMongoClusterParameters, +} from "./parameters.js"; +import { + OperationsList200Response, + OperationsListDefaultResponse, + MongoClustersGet200Response, + MongoClustersGetDefaultResponse, + MongoClustersCreateOrUpdate200Response, + MongoClustersCreateOrUpdate201Response, + MongoClustersCreateOrUpdateDefaultResponse, + MongoClustersUpdate200Response, + MongoClustersUpdate202Response, + MongoClustersUpdateDefaultResponse, + MongoClustersDelete202Response, + MongoClustersDelete204Response, + MongoClustersDeleteDefaultResponse, + MongoClustersListByResourceGroup200Response, + MongoClustersListByResourceGroupDefaultResponse, + MongoClustersList200Response, + MongoClustersListDefaultResponse, + MongoClustersListConnectionStrings200Response, + MongoClustersListConnectionStringsDefaultResponse, + MongoClustersCheckNameAvailability200Response, + MongoClustersCheckNameAvailabilityDefaultResponse, + FirewallRulesGet200Response, + FirewallRulesGetDefaultResponse, + FirewallRulesCreateOrUpdate200Response, + FirewallRulesCreateOrUpdate201Response, + FirewallRulesCreateOrUpdate202Response, + FirewallRulesCreateOrUpdateDefaultResponse, + FirewallRulesDelete202Response, + FirewallRulesDelete204Response, + FirewallRulesDeleteDefaultResponse, + FirewallRulesListByMongoCluster200Response, + FirewallRulesListByMongoClusterDefaultResponse, + PrivateEndpointConnectionsListByMongoCluster200Response, + PrivateEndpointConnectionsListByMongoClusterDefaultResponse, + PrivateEndpointConnectionsGet200Response, + PrivateEndpointConnectionsGetDefaultResponse, + PrivateEndpointConnectionsCreate200Response, + PrivateEndpointConnectionsCreate201Response, + PrivateEndpointConnectionsCreate202Response, + PrivateEndpointConnectionsCreateDefaultResponse, + PrivateEndpointConnectionsDelete202Response, + PrivateEndpointConnectionsDelete204Response, + PrivateEndpointConnectionsDeleteDefaultResponse, + PrivateLinksListByMongoCluster200Response, + PrivateLinksListByMongoClusterDefaultResponse, +} from "./responses.js"; +import { Client, StreamableMethod } from "@azure-rest/core-client"; + +export interface OperationsList { + /** List the operations for the provider */ + get( + options?: OperationsListParameters, + ): StreamableMethod< + OperationsList200Response | OperationsListDefaultResponse + >; +} + +export interface MongoClustersGet { + /** Gets information about a mongo cluster. */ + get( + options?: MongoClustersGetParameters, + ): StreamableMethod< + MongoClustersGet200Response | MongoClustersGetDefaultResponse + >; + /** Create or update a mongo cluster. Update overwrites all properties for the resource. To only modify some of the properties, use PATCH. */ + put( + options: MongoClustersCreateOrUpdateParameters, + ): StreamableMethod< + | MongoClustersCreateOrUpdate200Response + | MongoClustersCreateOrUpdate201Response + | MongoClustersCreateOrUpdateDefaultResponse + >; + /** Updates an existing mongo cluster. The request body can contain one to many of the properties present in the normal mongo cluster definition. */ + patch( + options: MongoClustersUpdateParameters, + ): StreamableMethod< + | MongoClustersUpdate200Response + | MongoClustersUpdate202Response + | MongoClustersUpdateDefaultResponse + >; + /** Deletes a mongo cluster. */ + delete( + options?: MongoClustersDeleteParameters, + ): StreamableMethod< + | MongoClustersDelete202Response + | MongoClustersDelete204Response + | MongoClustersDeleteDefaultResponse + >; +} + +export interface MongoClustersListByResourceGroup { + /** List all the mongo clusters in a given resource group. */ + get( + options?: MongoClustersListByResourceGroupParameters, + ): StreamableMethod< + | MongoClustersListByResourceGroup200Response + | MongoClustersListByResourceGroupDefaultResponse + >; +} + +export interface MongoClustersList { + /** List all the mongo clusters in a given subscription. */ + get( + options?: MongoClustersListParameters, + ): StreamableMethod< + MongoClustersList200Response | MongoClustersListDefaultResponse + >; +} + +export interface MongoClustersListConnectionStrings { + /** List mongo cluster connection strings. This includes the default connection string using SCRAM-SHA-256, as well as other connection strings supported by the cluster. */ + post( + options: MongoClustersListConnectionStringsParameters, + ): StreamableMethod< + | MongoClustersListConnectionStrings200Response + | MongoClustersListConnectionStringsDefaultResponse + >; +} + +export interface MongoClustersCheckNameAvailability { + /** Check if mongo cluster name is available for use. */ + post( + options: MongoClustersCheckNameAvailabilityParameters, + ): StreamableMethod< + | MongoClustersCheckNameAvailability200Response + | MongoClustersCheckNameAvailabilityDefaultResponse + >; +} + +export interface FirewallRulesGet { + /** Gets information about a mongo cluster firewall rule. */ + get( + options?: FirewallRulesGetParameters, + ): StreamableMethod< + FirewallRulesGet200Response | FirewallRulesGetDefaultResponse + >; + /** Creates a new firewall rule or updates an existing firewall rule on a mongo cluster. */ + put( + options: FirewallRulesCreateOrUpdateParameters, + ): StreamableMethod< + | FirewallRulesCreateOrUpdate200Response + | FirewallRulesCreateOrUpdate201Response + | FirewallRulesCreateOrUpdate202Response + | FirewallRulesCreateOrUpdateDefaultResponse + >; + /** Deletes a mongo cluster firewall rule. */ + delete( + options?: FirewallRulesDeleteParameters, + ): StreamableMethod< + | FirewallRulesDelete202Response + | FirewallRulesDelete204Response + | FirewallRulesDeleteDefaultResponse + >; +} + +export interface FirewallRulesListByMongoCluster { + /** List all the firewall rules in a given mongo cluster. */ + get( + options?: FirewallRulesListByMongoClusterParameters, + ): StreamableMethod< + | FirewallRulesListByMongoCluster200Response + | FirewallRulesListByMongoClusterDefaultResponse + >; +} + +export interface PrivateEndpointConnectionsListByMongoCluster { + /** List existing private connections */ + get( + options?: PrivateEndpointConnectionsListByMongoClusterParameters, + ): StreamableMethod< + | PrivateEndpointConnectionsListByMongoCluster200Response + | PrivateEndpointConnectionsListByMongoClusterDefaultResponse + >; +} + +export interface PrivateEndpointConnectionsGet { + /** Get a specific private connection */ + get( + options?: PrivateEndpointConnectionsGetParameters, + ): StreamableMethod< + | PrivateEndpointConnectionsGet200Response + | PrivateEndpointConnectionsGetDefaultResponse + >; + /** Create a Private endpoint connection */ + put( + options: PrivateEndpointConnectionsCreateParameters, + ): StreamableMethod< + | PrivateEndpointConnectionsCreate200Response + | PrivateEndpointConnectionsCreate201Response + | PrivateEndpointConnectionsCreate202Response + | PrivateEndpointConnectionsCreateDefaultResponse + >; + /** Delete the private endpoint connection */ + delete( + options?: PrivateEndpointConnectionsDeleteParameters, + ): StreamableMethod< + | PrivateEndpointConnectionsDelete202Response + | PrivateEndpointConnectionsDelete204Response + | PrivateEndpointConnectionsDeleteDefaultResponse + >; +} + +export interface PrivateLinksListByMongoCluster { + /** list private links on the given resource */ + get( + options?: PrivateLinksListByMongoClusterParameters, + ): StreamableMethod< + | PrivateLinksListByMongoCluster200Response + | PrivateLinksListByMongoClusterDefaultResponse + >; +} + +export interface Routes { + /** Resource for '/providers/Microsoft.DocumentDB/operations' has methods for the following verbs: get */ + (path: "/providers/Microsoft.DocumentDB/operations"): OperationsList; + /** Resource for '/subscriptions/\{subscriptionId\}/resourceGroups/\{resourceGroupName\}/providers/Microsoft.DocumentDB/mongoClusters/\{mongoClusterName\}' has methods for the following verbs: get, put, patch, delete */ + ( + path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + ): MongoClustersGet; + /** Resource for '/subscriptions/\{subscriptionId\}/resourceGroups/\{resourceGroupName\}/providers/Microsoft.DocumentDB/mongoClusters' has methods for the following verbs: get */ + ( + path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters", + subscriptionId: string, + resourceGroupName: string, + ): MongoClustersListByResourceGroup; + /** Resource for '/subscriptions/\{subscriptionId\}/providers/Microsoft.DocumentDB/mongoClusters' has methods for the following verbs: get */ + ( + path: "/subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/mongoClusters", + subscriptionId: string, + ): MongoClustersList; + /** Resource for '/subscriptions/\{subscriptionId\}/resourceGroups/\{resourceGroupName\}/providers/Microsoft.DocumentDB/mongoClusters/\{mongoClusterName\}/listConnectionStrings' has methods for the following verbs: post */ + ( + path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/listConnectionStrings", + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + ): MongoClustersListConnectionStrings; + /** Resource for '/subscriptions/\{subscriptionId\}/providers/Microsoft.DocumentDB/locations/\{location\}/checkMongoClusterNameAvailability' has methods for the following verbs: post */ + ( + path: "/subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/checkMongoClusterNameAvailability", + subscriptionId: string, + location: string, + ): MongoClustersCheckNameAvailability; + /** Resource for '/subscriptions/\{subscriptionId\}/resourceGroups/\{resourceGroupName\}/providers/Microsoft.DocumentDB/mongoClusters/\{mongoClusterName\}/firewallRules/\{firewallRuleName\}' has methods for the following verbs: get, put, delete */ + ( + path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + firewallRuleName: string, + ): FirewallRulesGet; + /** Resource for '/subscriptions/\{subscriptionId\}/resourceGroups/\{resourceGroupName\}/providers/Microsoft.DocumentDB/mongoClusters/\{mongoClusterName\}/firewallRules' has methods for the following verbs: get */ + ( + path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules", + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + ): FirewallRulesListByMongoCluster; + /** Resource for '/subscriptions/\{subscriptionId\}/resourceGroups/\{resourceGroupName\}/providers/Microsoft.DocumentDB/mongoClusters/\{mongoClusterName\}/privateEndpointConnections' has methods for the following verbs: get */ + ( + path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections", + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + ): PrivateEndpointConnectionsListByMongoCluster; + /** Resource for '/subscriptions/\{subscriptionId\}/resourceGroups/\{resourceGroupName\}/providers/Microsoft.DocumentDB/mongoClusters/\{mongoClusterName\}/privateEndpointConnections/\{privateEndpointConnectionName\}' has methods for the following verbs: get, put, delete */ + ( + path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}", + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + privateEndpointConnectionName: string, + ): PrivateEndpointConnectionsGet; + /** Resource for '/subscriptions/\{subscriptionId\}/resourceGroups/\{resourceGroupName\}/providers/Microsoft.DocumentDB/mongoClusters/\{mongoClusterName\}/privateLinkResources' has methods for the following verbs: get */ + ( + path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateLinkResources", + subscriptionId: string, + resourceGroupName: string, + mongoClusterName: string, + ): PrivateLinksListByMongoCluster; +} + +export type DocumentDBContext = Client & { + path: Routes; +}; diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/documentDBClient.ts b/sdk/mongocluster/arm-mongocluster/src/rest/documentDBClient.ts new file mode 100644 index 000000000000..d2952d1acbf2 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/documentDBClient.ts @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { getClient, ClientOptions } from "@azure-rest/core-client"; +import { logger } from "../logger.js"; +import { TokenCredential } from "@azure/core-auth"; +import { DocumentDBContext } from "./clientDefinitions.js"; + +/** The optional parameters for the client */ +export interface DocumentDBContextOptions extends ClientOptions { + /** The api version option of the client */ + apiVersion?: string; +} + +/** + * Initialize a new instance of `DocumentDBContext` + * @param credentials - uniquely identify client credential + * @param options - the parameter for all optional parameters + */ +export default function createClient( + credentials: TokenCredential, + { + apiVersion = "2024-03-01-preview", + ...options + }: DocumentDBContextOptions = {}, +): DocumentDBContext { + const endpointUrl = + options.endpoint ?? options.baseUrl ?? `https://management.azure.com`; + const userAgentInfo = `azsdk-js-arm-mongocluster/1.0.0-beta.1`; + const userAgentPrefix = + options.userAgentOptions && options.userAgentOptions.userAgentPrefix + ? `${options.userAgentOptions.userAgentPrefix} ${userAgentInfo}` + : `${userAgentInfo}`; + options = { + ...options, + userAgentOptions: { + userAgentPrefix, + }, + loggingOptions: { + logger: options.loggingOptions?.logger ?? logger.info, + }, + credentials: { + scopes: options.credentials?.scopes ?? [`${endpointUrl}/.default`], + }, + }; + const client = getClient( + endpointUrl, + credentials, + options, + ) as DocumentDBContext; + + client.pipeline.removePolicy({ name: "ApiVersionPolicy" }); + client.pipeline.addPolicy({ + name: "ClientApiVersionPolicy", + sendRequest: (req, next) => { + // Use the apiVersion defined in request url directly + // Append one if there is no apiVersion and we have one at client options + const url = new URL(req.url); + if (!url.searchParams.get("api-version") && apiVersion) { + req.url = `${req.url}${ + Array.from(url.searchParams.keys()).length > 0 ? "&" : "?" + }api-version=${apiVersion}`; + } + + return next(req); + }, + }); + return client; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/index.ts b/sdk/mongocluster/arm-mongocluster/src/rest/index.ts new file mode 100644 index 000000000000..1e93ef0cbc8a --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/index.ts @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import DocumentDBClient from "./documentDBClient.js"; + +export * from "./documentDBClient.js"; +export * from "./parameters.js"; +export * from "./responses.js"; +export * from "./clientDefinitions.js"; +export * from "./isUnexpected.js"; +export * from "./models.js"; +export * from "./outputModels.js"; +export * from "./paginateHelper.js"; +export * from "./pollingHelper.js"; + +export default DocumentDBClient; diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/isUnexpected.ts b/sdk/mongocluster/arm-mongocluster/src/rest/isUnexpected.ts new file mode 100644 index 000000000000..8b33bc12ff07 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/isUnexpected.ts @@ -0,0 +1,349 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + OperationsList200Response, + OperationsListDefaultResponse, + MongoClustersGet200Response, + MongoClustersGetDefaultResponse, + MongoClustersCreateOrUpdate200Response, + MongoClustersCreateOrUpdate201Response, + MongoClustersCreateOrUpdateLogicalResponse, + MongoClustersCreateOrUpdateDefaultResponse, + MongoClustersUpdate200Response, + MongoClustersUpdate202Response, + MongoClustersUpdateLogicalResponse, + MongoClustersUpdateDefaultResponse, + MongoClustersDelete202Response, + MongoClustersDelete204Response, + MongoClustersDeleteLogicalResponse, + MongoClustersDeleteDefaultResponse, + MongoClustersListByResourceGroup200Response, + MongoClustersListByResourceGroupDefaultResponse, + MongoClustersList200Response, + MongoClustersListDefaultResponse, + MongoClustersListConnectionStrings200Response, + MongoClustersListConnectionStringsDefaultResponse, + MongoClustersCheckNameAvailability200Response, + MongoClustersCheckNameAvailabilityDefaultResponse, + FirewallRulesGet200Response, + FirewallRulesGetDefaultResponse, + FirewallRulesCreateOrUpdate200Response, + FirewallRulesCreateOrUpdate201Response, + FirewallRulesCreateOrUpdate202Response, + FirewallRulesCreateOrUpdateLogicalResponse, + FirewallRulesCreateOrUpdateDefaultResponse, + FirewallRulesDelete202Response, + FirewallRulesDelete204Response, + FirewallRulesDeleteLogicalResponse, + FirewallRulesDeleteDefaultResponse, + FirewallRulesListByMongoCluster200Response, + FirewallRulesListByMongoClusterDefaultResponse, + PrivateEndpointConnectionsListByMongoCluster200Response, + PrivateEndpointConnectionsListByMongoClusterDefaultResponse, + PrivateEndpointConnectionsGet200Response, + PrivateEndpointConnectionsGetDefaultResponse, + PrivateEndpointConnectionsCreate200Response, + PrivateEndpointConnectionsCreate201Response, + PrivateEndpointConnectionsCreate202Response, + PrivateEndpointConnectionsCreateLogicalResponse, + PrivateEndpointConnectionsCreateDefaultResponse, + PrivateEndpointConnectionsDelete202Response, + PrivateEndpointConnectionsDelete204Response, + PrivateEndpointConnectionsDeleteLogicalResponse, + PrivateEndpointConnectionsDeleteDefaultResponse, + PrivateLinksListByMongoCluster200Response, + PrivateLinksListByMongoClusterDefaultResponse, +} from "./responses.js"; + +const responseMap: Record = { + "GET /providers/Microsoft.DocumentDB/operations": ["200"], + "GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}": + ["200"], + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}": + ["200", "201"], + "PATCH /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}": + ["200", "202"], + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}": + ["202", "204"], + "GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters": + ["200"], + "GET /subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/mongoClusters": + ["200"], + "POST /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/listConnectionStrings": + ["200"], + "POST /subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/checkMongoClusterNameAvailability": + ["200"], + "GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}": + ["200"], + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}": + ["200", "201", "202"], + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}": + ["202", "204"], + "GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules": + ["200"], + "GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections": + ["200"], + "GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}": + ["200"], + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}": + ["200", "201", "202"], + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}": + ["202", "204"], + "GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateLinkResources": + ["200"], +}; + +export function isUnexpected( + response: OperationsList200Response | OperationsListDefaultResponse, +): response is OperationsListDefaultResponse; +export function isUnexpected( + response: MongoClustersGet200Response | MongoClustersGetDefaultResponse, +): response is MongoClustersGetDefaultResponse; +export function isUnexpected( + response: + | MongoClustersCreateOrUpdate200Response + | MongoClustersCreateOrUpdate201Response + | MongoClustersCreateOrUpdateLogicalResponse + | MongoClustersCreateOrUpdateDefaultResponse, +): response is MongoClustersCreateOrUpdateDefaultResponse; +export function isUnexpected( + response: + | MongoClustersUpdate200Response + | MongoClustersUpdate202Response + | MongoClustersUpdateLogicalResponse + | MongoClustersUpdateDefaultResponse, +): response is MongoClustersUpdateDefaultResponse; +export function isUnexpected( + response: + | MongoClustersDelete202Response + | MongoClustersDelete204Response + | MongoClustersDeleteLogicalResponse + | MongoClustersDeleteDefaultResponse, +): response is MongoClustersDeleteDefaultResponse; +export function isUnexpected( + response: + | MongoClustersListByResourceGroup200Response + | MongoClustersListByResourceGroupDefaultResponse, +): response is MongoClustersListByResourceGroupDefaultResponse; +export function isUnexpected( + response: MongoClustersList200Response | MongoClustersListDefaultResponse, +): response is MongoClustersListDefaultResponse; +export function isUnexpected( + response: + | MongoClustersListConnectionStrings200Response + | MongoClustersListConnectionStringsDefaultResponse, +): response is MongoClustersListConnectionStringsDefaultResponse; +export function isUnexpected( + response: + | MongoClustersCheckNameAvailability200Response + | MongoClustersCheckNameAvailabilityDefaultResponse, +): response is MongoClustersCheckNameAvailabilityDefaultResponse; +export function isUnexpected( + response: FirewallRulesGet200Response | FirewallRulesGetDefaultResponse, +): response is FirewallRulesGetDefaultResponse; +export function isUnexpected( + response: + | FirewallRulesCreateOrUpdate200Response + | FirewallRulesCreateOrUpdate201Response + | FirewallRulesCreateOrUpdate202Response + | FirewallRulesCreateOrUpdateLogicalResponse + | FirewallRulesCreateOrUpdateDefaultResponse, +): response is FirewallRulesCreateOrUpdateDefaultResponse; +export function isUnexpected( + response: + | FirewallRulesDelete202Response + | FirewallRulesDelete204Response + | FirewallRulesDeleteLogicalResponse + | FirewallRulesDeleteDefaultResponse, +): response is FirewallRulesDeleteDefaultResponse; +export function isUnexpected( + response: + | FirewallRulesListByMongoCluster200Response + | FirewallRulesListByMongoClusterDefaultResponse, +): response is FirewallRulesListByMongoClusterDefaultResponse; +export function isUnexpected( + response: + | PrivateEndpointConnectionsListByMongoCluster200Response + | PrivateEndpointConnectionsListByMongoClusterDefaultResponse, +): response is PrivateEndpointConnectionsListByMongoClusterDefaultResponse; +export function isUnexpected( + response: + | PrivateEndpointConnectionsGet200Response + | PrivateEndpointConnectionsGetDefaultResponse, +): response is PrivateEndpointConnectionsGetDefaultResponse; +export function isUnexpected( + response: + | PrivateEndpointConnectionsCreate200Response + | PrivateEndpointConnectionsCreate201Response + | PrivateEndpointConnectionsCreate202Response + | PrivateEndpointConnectionsCreateLogicalResponse + | PrivateEndpointConnectionsCreateDefaultResponse, +): response is PrivateEndpointConnectionsCreateDefaultResponse; +export function isUnexpected( + response: + | PrivateEndpointConnectionsDelete202Response + | PrivateEndpointConnectionsDelete204Response + | PrivateEndpointConnectionsDeleteLogicalResponse + | PrivateEndpointConnectionsDeleteDefaultResponse, +): response is PrivateEndpointConnectionsDeleteDefaultResponse; +export function isUnexpected( + response: + | PrivateLinksListByMongoCluster200Response + | PrivateLinksListByMongoClusterDefaultResponse, +): response is PrivateLinksListByMongoClusterDefaultResponse; +export function isUnexpected( + response: + | OperationsList200Response + | OperationsListDefaultResponse + | MongoClustersGet200Response + | MongoClustersGetDefaultResponse + | MongoClustersCreateOrUpdate200Response + | MongoClustersCreateOrUpdate201Response + | MongoClustersCreateOrUpdateLogicalResponse + | MongoClustersCreateOrUpdateDefaultResponse + | MongoClustersUpdate200Response + | MongoClustersUpdate202Response + | MongoClustersUpdateLogicalResponse + | MongoClustersUpdateDefaultResponse + | MongoClustersDelete202Response + | MongoClustersDelete204Response + | MongoClustersDeleteLogicalResponse + | MongoClustersDeleteDefaultResponse + | MongoClustersListByResourceGroup200Response + | MongoClustersListByResourceGroupDefaultResponse + | MongoClustersList200Response + | MongoClustersListDefaultResponse + | MongoClustersListConnectionStrings200Response + | MongoClustersListConnectionStringsDefaultResponse + | MongoClustersCheckNameAvailability200Response + | MongoClustersCheckNameAvailabilityDefaultResponse + | FirewallRulesGet200Response + | FirewallRulesGetDefaultResponse + | FirewallRulesCreateOrUpdate200Response + | FirewallRulesCreateOrUpdate201Response + | FirewallRulesCreateOrUpdate202Response + | FirewallRulesCreateOrUpdateLogicalResponse + | FirewallRulesCreateOrUpdateDefaultResponse + | FirewallRulesDelete202Response + | FirewallRulesDelete204Response + | FirewallRulesDeleteLogicalResponse + | FirewallRulesDeleteDefaultResponse + | FirewallRulesListByMongoCluster200Response + | FirewallRulesListByMongoClusterDefaultResponse + | PrivateEndpointConnectionsListByMongoCluster200Response + | PrivateEndpointConnectionsListByMongoClusterDefaultResponse + | PrivateEndpointConnectionsGet200Response + | PrivateEndpointConnectionsGetDefaultResponse + | PrivateEndpointConnectionsCreate200Response + | PrivateEndpointConnectionsCreate201Response + | PrivateEndpointConnectionsCreate202Response + | PrivateEndpointConnectionsCreateLogicalResponse + | PrivateEndpointConnectionsCreateDefaultResponse + | PrivateEndpointConnectionsDelete202Response + | PrivateEndpointConnectionsDelete204Response + | PrivateEndpointConnectionsDeleteLogicalResponse + | PrivateEndpointConnectionsDeleteDefaultResponse + | PrivateLinksListByMongoCluster200Response + | PrivateLinksListByMongoClusterDefaultResponse, +): response is + | OperationsListDefaultResponse + | MongoClustersGetDefaultResponse + | MongoClustersCreateOrUpdateDefaultResponse + | MongoClustersUpdateDefaultResponse + | MongoClustersDeleteDefaultResponse + | MongoClustersListByResourceGroupDefaultResponse + | MongoClustersListDefaultResponse + | MongoClustersListConnectionStringsDefaultResponse + | MongoClustersCheckNameAvailabilityDefaultResponse + | FirewallRulesGetDefaultResponse + | FirewallRulesCreateOrUpdateDefaultResponse + | FirewallRulesDeleteDefaultResponse + | FirewallRulesListByMongoClusterDefaultResponse + | PrivateEndpointConnectionsListByMongoClusterDefaultResponse + | PrivateEndpointConnectionsGetDefaultResponse + | PrivateEndpointConnectionsCreateDefaultResponse + | PrivateEndpointConnectionsDeleteDefaultResponse + | PrivateLinksListByMongoClusterDefaultResponse { + const lroOriginal = response.headers["x-ms-original-url"]; + const url = new URL(lroOriginal ?? response.request.url); + const method = response.request.method; + let pathDetails = responseMap[`${method} ${url.pathname}`]; + if (!pathDetails) { + pathDetails = getParametrizedPathSuccess(method, url.pathname); + } + return !pathDetails.includes(response.status); +} + +function getParametrizedPathSuccess(method: string, path: string): string[] { + const pathParts = path.split("/"); + + // Traverse list to match the longest candidate + // matchedLen: the length of candidate path + // matchedValue: the matched status code array + let matchedLen = -1, + matchedValue: string[] = []; + + // Iterate the responseMap to find a match + for (const [key, value] of Object.entries(responseMap)) { + // Extracting the path from the map key which is in format + // GET /path/foo + if (!key.startsWith(method)) { + continue; + } + const candidatePath = getPathFromMapKey(key); + // Get each part of the url path + const candidateParts = candidatePath.split("/"); + + // track if we have found a match to return the values found. + let found = true; + for ( + let i = candidateParts.length - 1, j = pathParts.length - 1; + i >= 1 && j >= 1; + i--, j-- + ) { + if ( + candidateParts[i]?.startsWith("{") && + candidateParts[i]?.indexOf("}") !== -1 + ) { + const start = candidateParts[i]!.indexOf("}") + 1, + end = candidateParts[i]?.length; + // If the current part of the candidate is a "template" part + // Try to use the suffix of pattern to match the path + // {guid} ==> $ + // {guid}:export ==> :export$ + const isMatched = new RegExp( + `${candidateParts[i]?.slice(start, end)}`, + ).test(pathParts[j] || ""); + + if (!isMatched) { + found = false; + break; + } + continue; + } + + // If the candidate part is not a template and + // the parts don't match mark the candidate as not found + // to move on with the next candidate path. + if (candidateParts[i] !== pathParts[j]) { + found = false; + break; + } + } + + // We finished evaluating the current candidate parts + // Update the matched value if and only if we found the longer pattern + if (found && candidatePath.length > matchedLen) { + matchedLen = candidatePath.length; + matchedValue = value; + } + } + + return matchedValue; +} + +function getPathFromMapKey(mapKey: string): string { + const pathStart = mapKey.indexOf("/"); + return mapKey.slice(pathStart); +} diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/models.ts b/sdk/mongocluster/arm-mongocluster/src/rest/models.ts new file mode 100644 index 000000000000..cb9086ebbf51 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/models.ts @@ -0,0 +1,258 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/** Represents a mongo cluster resource. */ +export interface MongoCluster extends TrackedResource { + /** The resource-specific properties for this resource. */ + properties?: MongoClusterProperties; +} + +/** The properties of a mongo cluster. */ +export interface MongoClusterProperties { + /** The mode to create a mongo cluster. */ + createMode?: CreateMode; + /** The parameters to create a point-in-time restore mongo cluster. */ + restoreParameters?: MongoClusterRestoreParameters; + /** The administrator's login for the mongo cluster. */ + administratorLogin?: string; + /** The password of the administrator login. */ + administratorLoginPassword?: string; + /** The Mongo DB server version. Defaults to the latest available version if not specified. */ + serverVersion?: string; + /** Whether or not public endpoint access is allowed for this mongo cluster. */ + publicNetworkAccess?: PublicNetworkAccess; + /** The list of node group specs in the cluster. */ + nodeGroupSpecs?: Array; +} + +/** Parameters used for restore operations */ +export interface MongoClusterRestoreParameters { + /** UTC point in time to restore a mongo cluster */ + pointInTimeUTC?: Date | string; + /** Resource ID to locate the source cluster to restore */ + sourceResourceId?: string; +} + +/** Specification for a node group. */ +export interface NodeGroupSpec { + /** The resource sku for the node group. This defines the size of CPU and memory that is provisioned for each node. Example values: 'M30', 'M40'. */ + sku?: string; + /** The disk storage size for the node group in GB. Example values: 128, 256, 512, 1024. */ + diskSizeGB?: number; + /** Whether high availability is enabled on the node group. */ + enableHa?: boolean; + /** The node type deployed in the node group. */ + kind?: NodeKind; + /** The number of nodes in the node group. */ + nodeCount?: number; +} + +/** The private endpoint connection resource */ +export interface PrivateEndpointConnection extends Resource { + /** The private endpoint connection properties */ + properties?: PrivateEndpointConnectionProperties; +} + +/** Properties of the private endpoint connection. */ +export interface PrivateEndpointConnectionProperties { + /** The private endpoint resource. */ + privateEndpoint?: PrivateEndpoint; + /** A collection of information about the state of the connection between service consumer and provider. */ + privateLinkServiceConnectionState: PrivateLinkServiceConnectionState; +} + +/** The Private Endpoint resource. */ +export interface PrivateEndpoint {} + +/** A collection of information about the state of the connection between service consumer and provider. */ +export interface PrivateLinkServiceConnectionState { + /** Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. */ + status?: PrivateEndpointServiceConnectionStatus; + /** The reason for approval/rejection of the connection. */ + description?: string; + /** A message indicating if changes on the service provider require any updates on the consumer. */ + actionsRequired?: string; +} + +/** Common fields that are returned in the response for all Azure Resource Manager resources */ +export interface Resource {} + +/** Metadata pertaining to creation and last modification of the resource. */ +export interface SystemData { + /** The identity that created the resource. */ + createdBy?: string; + /** The type of identity that created the resource. */ + createdByType?: CreatedByType; + /** The timestamp of resource creation (UTC). */ + createdAt?: Date | string; + /** The identity that last modified the resource. */ + lastModifiedBy?: string; + /** The type of identity that last modified the resource. */ + lastModifiedByType?: CreatedByType; + /** The timestamp of resource last modification (UTC) */ + lastModifiedAt?: Date | string; +} + +/** The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location' */ +export interface TrackedResource extends Resource { + /** Resource tags. */ + tags?: Record; + /** The geo-location where the resource lives */ + location: string; +} + +/** The resource model definition containing the full set of allowed properties for a resource. Except properties bag, there cannot be a top level property outside of this set. */ +export interface ResourceModelWithAllowedPropertySet extends TrackedResource { + /** + * The fully qualified resource ID of the resource that manages this resource. Indicates if this resource is managed by another Azure resource. + * If this is present, complete mode deployment will not delete the resource if it is removed from the template since it is managed by another resource. + */ + managedBy?: string; + /** + * Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. + * If supported, the resource provider must validate and persist this value. + */ + kind?: string; + /** + * The etag field is *not* required. If it is provided in the response body, it must also be provided as a header per the normal etag convention. + * Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), + * If-Match (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields. + */ + eTag?: string; + identity?: Identity; + sku?: Sku; + plan?: Plan; +} + +/** Identity for the resource. */ +export interface Identity { + /** The identity type. */ + type?: ResourceIdentityType; +} + +/** The resource model definition representing SKU */ +export interface Sku { + /** The name of the SKU. Ex - P3. It is typically a letter+number code */ + name: string; + /** This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required on a PUT. */ + tier?: SkuTier; + /** The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code. */ + size?: string; + /** If the service has different generations of hardware, for the same SKU, then that can be captured here. */ + family?: string; + /** If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the resource this may be omitted. */ + capacity?: number; +} + +/** Plan for the resource. */ +export interface Plan { + /** A user defined name of the 3rd Party Artifact that is being procured. */ + name: string; + /** The publisher of the 3rd Party Artifact that is being bought. E.g. NewRelic */ + publisher: string; + /** The 3rd Party artifact that is being procured. E.g. NewRelic. Product maps to the OfferID specified for the artifact at the time of Data Market onboarding. */ + product: string; + /** A publisher provided promotion code as provisioned in Data Market for the said product/artifact. */ + promotionCode?: string; + /** The version of the desired product/artifact. */ + version?: string; +} + +/** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */ +export interface ProxyResource extends Resource {} + +/** Represents a mongo cluster firewall rule. */ +export interface FirewallRule extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: FirewallRuleProperties; +} + +/** The properties of a mongo cluster firewall rule. */ +export interface FirewallRuleProperties { + /** The start IP address of the mongo cluster firewall rule. Must be IPv4 format. */ + startIpAddress: string; + /** The end IP address of the mongo cluster firewall rule. Must be IPv4 format. */ + endIpAddress: string; +} + +/** Concrete proxy resource types can be created by aliasing this type using a specific property type. */ +export interface PrivateEndpointConnectionResource extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: PrivateEndpointConnectionProperties; +} + +/** Concrete proxy resource types can be created by aliasing this type using a specific property type. */ +export interface PrivateLinkResource extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: PrivateLinkResourceProperties; +} + +/** Properties of a private link resource. */ +export interface PrivateLinkResourceProperties { + /** The private link resource private link DNS zone name. */ + requiredZoneNames?: string[]; +} + +/** The base extension resource. */ +export interface ExtensionResource extends Resource {} + +/** The resource model definition for an Azure Resource Manager resource with an etag. */ +export interface AzureEntityResource extends Resource {} + +/** A private link resource. */ +export interface PrivateLinkResource extends Resource { + /** Resource properties. */ + properties?: PrivateLinkResourceProperties; +} + +/** The type used for update operations of the MongoCluster. */ +export interface MongoClusterUpdate { + /** Resource tags. */ + tags?: Record; + properties?: MongoClusterUpdateProperties; +} + +/** The updatable properties of the MongoCluster. */ +export interface MongoClusterUpdateProperties { + /** The administrator's login for the mongo cluster. */ + administratorLogin?: string; + /** The password of the administrator login. */ + administratorLoginPassword?: string; + /** The Mongo DB server version. Defaults to the latest available version if not specified. */ + serverVersion?: string; + /** Whether or not public endpoint access is allowed for this mongo cluster. */ + publicNetworkAccess?: PublicNetworkAccess; + /** The list of node group specs in the cluster. */ + nodeGroupSpecs?: Array; +} + +/** The check availability request body. */ +export interface CheckNameAvailabilityRequest { + /** The name of the resource for which availability needs to be checked. */ + name?: string; + /** The resource type. */ + type?: string; +} + +/** Alias for CreateMode */ +export type CreateMode = string; +/** Alias for ResourceProvisioningState */ +export type ResourceProvisioningState = string; +/** Alias for ProvisioningState */ +export type ProvisioningState = string; +/** Alias for MongoClusterStatus */ +export type MongoClusterStatus = string; +/** Alias for PublicNetworkAccess */ +export type PublicNetworkAccess = string; +/** Alias for NodeKind */ +export type NodeKind = string; +/** Alias for PrivateEndpointServiceConnectionStatus */ +export type PrivateEndpointServiceConnectionStatus = string; +/** Alias for PrivateEndpointConnectionProvisioningState */ +export type PrivateEndpointConnectionProvisioningState = string; +/** Alias for CreatedByType */ +export type CreatedByType = string; +/** Alias for ResourceIdentityType */ +export type ResourceIdentityType = "SystemAssigned"; +/** Alias for SkuTier */ +export type SkuTier = "Free" | "Basic" | "Standard" | "Premium"; diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/outputModels.ts b/sdk/mongocluster/arm-mongocluster/src/rest/outputModels.ts new file mode 100644 index 000000000000..0d906537b222 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/outputModels.ts @@ -0,0 +1,368 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { Paged } from "@azure/core-paging"; + +/** Details of a REST API operation, returned from the Resource Provider Operations API */ +export interface OperationOutput { + /** The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write", "Microsoft.Compute/virtualMachines/capture/action" */ + readonly name?: string; + /** Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for Azure Resource Manager/control-plane operations. */ + readonly isDataAction?: boolean; + /** Localized display information for this particular operation. */ + display?: OperationDisplayOutput; + /** The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" */ + readonly origin?: OriginOutput; + /** Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. */ + actionType?: ActionTypeOutput; +} + +/** Localized display information for and operation. */ +export interface OperationDisplayOutput { + /** The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft Compute". */ + provider?: string; + /** The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job Schedule Collections". */ + resource?: string; + /** The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual Machine", "Restart Virtual Machine". */ + operation?: string; + /** The short, localized friendly description of the operation; suitable for tool tips and detailed views. */ + description?: string; +} + +/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. */ +export interface ErrorResponseOutput { + /** The error object. */ + error?: ErrorDetailOutput; +} + +/** The error detail. */ +export interface ErrorDetailOutput { + /** The error code. */ + readonly code?: string; + /** The error message. */ + readonly message?: string; + /** The error target. */ + readonly target?: string; + /** The error details. */ + readonly details?: Array; + /** The error additional info. */ + readonly additionalInfo?: Array; +} + +/** The resource management error additional info. */ +export interface ErrorAdditionalInfoOutput { + /** The additional info type. */ + readonly type?: string; + /** The additional info. */ + readonly info?: Record; +} + +/** Represents a mongo cluster resource. */ +export interface MongoClusterOutput extends TrackedResourceOutput { + /** The resource-specific properties for this resource. */ + properties?: MongoClusterPropertiesOutput; +} + +/** The properties of a mongo cluster. */ +export interface MongoClusterPropertiesOutput { + /** The mode to create a mongo cluster. */ + createMode?: CreateModeOutput; + /** The parameters to create a point-in-time restore mongo cluster. */ + restoreParameters?: MongoClusterRestoreParametersOutput; + /** The administrator's login for the mongo cluster. */ + administratorLogin?: string; + /** The password of the administrator login. */ + administratorLoginPassword?: string; + /** The Mongo DB server version. Defaults to the latest available version if not specified. */ + serverVersion?: string; + /** The default mongo connection string for the cluster. */ + readonly connectionString?: string; + /** Earliest restore timestamp in UTC ISO8601 format. */ + readonly earliestRestoreTime?: string; + /** The provisioning state of the mongo cluster. */ + readonly provisioningState?: ProvisioningStateOutput; + /** The status of the mongo cluster. */ + readonly clusterStatus?: MongoClusterStatusOutput; + /** Whether or not public endpoint access is allowed for this mongo cluster. */ + publicNetworkAccess?: PublicNetworkAccessOutput; + /** The list of node group specs in the cluster. */ + nodeGroupSpecs?: Array; + /** List of private endpoint connections. */ + readonly privateEndpointConnections?: Array; +} + +/** Parameters used for restore operations */ +export interface MongoClusterRestoreParametersOutput { + /** UTC point in time to restore a mongo cluster */ + pointInTimeUTC?: string; + /** Resource ID to locate the source cluster to restore */ + sourceResourceId?: string; +} + +/** Specification for a node group. */ +export interface NodeGroupSpecOutput { + /** The resource sku for the node group. This defines the size of CPU and memory that is provisioned for each node. Example values: 'M30', 'M40'. */ + sku?: string; + /** The disk storage size for the node group in GB. Example values: 128, 256, 512, 1024. */ + diskSizeGB?: number; + /** Whether high availability is enabled on the node group. */ + enableHa?: boolean; + /** The node type deployed in the node group. */ + kind?: NodeKindOutput; + /** The number of nodes in the node group. */ + nodeCount?: number; +} + +/** The private endpoint connection resource */ +export interface PrivateEndpointConnectionOutput extends ResourceOutput { + /** The private endpoint connection properties */ + properties?: PrivateEndpointConnectionPropertiesOutput; +} + +/** Properties of the private endpoint connection. */ +export interface PrivateEndpointConnectionPropertiesOutput { + /** The group ids for the private endpoint resource. */ + readonly groupIds?: string[]; + /** The private endpoint resource. */ + privateEndpoint?: PrivateEndpointOutput; + /** A collection of information about the state of the connection between service consumer and provider. */ + privateLinkServiceConnectionState: PrivateLinkServiceConnectionStateOutput; + /** The provisioning state of the private endpoint connection resource. */ + readonly provisioningState?: PrivateEndpointConnectionProvisioningStateOutput; +} + +/** The Private Endpoint resource. */ +export interface PrivateEndpointOutput { + /** The resource identifier for private endpoint */ + readonly id?: string; +} + +/** A collection of information about the state of the connection between service consumer and provider. */ +export interface PrivateLinkServiceConnectionStateOutput { + /** Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. */ + status?: PrivateEndpointServiceConnectionStatusOutput; + /** The reason for approval/rejection of the connection. */ + description?: string; + /** A message indicating if changes on the service provider require any updates on the consumer. */ + actionsRequired?: string; +} + +/** Common fields that are returned in the response for all Azure Resource Manager resources */ +export interface ResourceOutput { + /** Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} */ + readonly id?: string; + /** The name of the resource */ + readonly name?: string; + /** The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" */ + readonly type?: string; + /** Azure Resource Manager metadata containing createdBy and modifiedBy information. */ + readonly systemData?: SystemDataOutput; +} + +/** Metadata pertaining to creation and last modification of the resource. */ +export interface SystemDataOutput { + /** The identity that created the resource. */ + createdBy?: string; + /** The type of identity that created the resource. */ + createdByType?: CreatedByTypeOutput; + /** The timestamp of resource creation (UTC). */ + createdAt?: string; + /** The identity that last modified the resource. */ + lastModifiedBy?: string; + /** The type of identity that last modified the resource. */ + lastModifiedByType?: CreatedByTypeOutput; + /** The timestamp of resource last modification (UTC) */ + lastModifiedAt?: string; +} + +/** The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location' */ +export interface TrackedResourceOutput extends ResourceOutput { + /** Resource tags. */ + tags?: Record; + /** The geo-location where the resource lives */ + location: string; +} + +/** The resource model definition containing the full set of allowed properties for a resource. Except properties bag, there cannot be a top level property outside of this set. */ +export interface ResourceModelWithAllowedPropertySetOutput + extends TrackedResourceOutput { + /** + * The fully qualified resource ID of the resource that manages this resource. Indicates if this resource is managed by another Azure resource. + * If this is present, complete mode deployment will not delete the resource if it is removed from the template since it is managed by another resource. + */ + managedBy?: string; + /** + * Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. + * If supported, the resource provider must validate and persist this value. + */ + kind?: string; + /** + * The etag field is *not* required. If it is provided in the response body, it must also be provided as a header per the normal etag convention. + * Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), + * If-Match (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields. + */ + eTag?: string; + identity?: IdentityOutput; + sku?: SkuOutput; + plan?: PlanOutput; +} + +/** Identity for the resource. */ +export interface IdentityOutput { + /** The principal ID of resource identity. The value must be an UUID. */ + readonly principalId?: string; + /** The tenant ID of resource. The value must be an UUID. */ + readonly tenantId?: string; + /** The identity type. */ + type?: ResourceIdentityTypeOutput; +} + +/** The resource model definition representing SKU */ +export interface SkuOutput { + /** The name of the SKU. Ex - P3. It is typically a letter+number code */ + name: string; + /** This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required on a PUT. */ + tier?: SkuTierOutput; + /** The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code. */ + size?: string; + /** If the service has different generations of hardware, for the same SKU, then that can be captured here. */ + family?: string; + /** If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the resource this may be omitted. */ + capacity?: number; +} + +/** Plan for the resource. */ +export interface PlanOutput { + /** A user defined name of the 3rd Party Artifact that is being procured. */ + name: string; + /** The publisher of the 3rd Party Artifact that is being bought. E.g. NewRelic */ + publisher: string; + /** The 3rd Party artifact that is being procured. E.g. NewRelic. Product maps to the OfferID specified for the artifact at the time of Data Market onboarding. */ + product: string; + /** A publisher provided promotion code as provisioned in Data Market for the said product/artifact. */ + promotionCode?: string; + /** The version of the desired product/artifact. */ + version?: string; +} + +/** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */ +export interface ProxyResourceOutput extends ResourceOutput {} + +/** Represents a mongo cluster firewall rule. */ +export interface FirewallRuleOutput extends ProxyResourceOutput { + /** The resource-specific properties for this resource. */ + properties?: FirewallRulePropertiesOutput; +} + +/** The properties of a mongo cluster firewall rule. */ +export interface FirewallRulePropertiesOutput { + /** The provisioning state of the firewall rule. */ + readonly provisioningState?: ProvisioningStateOutput; + /** The start IP address of the mongo cluster firewall rule. Must be IPv4 format. */ + startIpAddress: string; + /** The end IP address of the mongo cluster firewall rule. Must be IPv4 format. */ + endIpAddress: string; +} + +/** Concrete proxy resource types can be created by aliasing this type using a specific property type. */ +export interface PrivateEndpointConnectionResourceOutput + extends ProxyResourceOutput { + /** The resource-specific properties for this resource. */ + properties?: PrivateEndpointConnectionPropertiesOutput; +} + +/** Concrete proxy resource types can be created by aliasing this type using a specific property type. */ +export interface PrivateLinkResourceOutput extends ProxyResourceOutput { + /** The resource-specific properties for this resource. */ + properties?: PrivateLinkResourcePropertiesOutput; +} + +/** Properties of a private link resource. */ +export interface PrivateLinkResourcePropertiesOutput { + /** The private link resource group id. */ + readonly groupId?: string; + /** The private link resource required member names. */ + readonly requiredMembers?: string[]; + /** The private link resource private link DNS zone name. */ + requiredZoneNames?: string[]; +} + +/** The base extension resource. */ +export interface ExtensionResourceOutput extends ResourceOutput {} + +/** The resource model definition for an Azure Resource Manager resource with an etag. */ +export interface AzureEntityResourceOutput extends ResourceOutput { + /** Resource Etag. */ + readonly etag?: string; +} + +/** A private link resource. */ +export interface PrivateLinkResourceOutput extends ResourceOutput { + /** Resource properties. */ + properties?: PrivateLinkResourcePropertiesOutput; +} + +/** The connection strings for the given mongo cluster. */ +export interface ListConnectionStringsResultOutput { + /** An array that contains the connection strings for a mongo cluster. */ + readonly connectionStrings?: Array; +} + +/** Connection string for the mongo cluster */ +export interface ConnectionStringOutput { + /** Value of the connection string */ + readonly connectionString?: string; + /** Description of the connection string */ + readonly description?: string; +} + +/** The check availability result. */ +export interface CheckNameAvailabilityResponseOutput { + /** Indicates if the resource name is available. */ + nameAvailable?: boolean; + /** The reason why the given name is not available. */ + reason?: CheckNameAvailabilityReasonOutput; + /** Detailed reason why the given name is not available. */ + message?: string; +} + +/** A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to get the next set of results. */ +export type OperationListResultOutput = Paged; +/** Alias for OriginOutput */ +export type OriginOutput = string; +/** Alias for ActionTypeOutput */ +export type ActionTypeOutput = string; +/** Alias for CreateModeOutput */ +export type CreateModeOutput = string; +/** Alias for ResourceProvisioningStateOutput */ +export type ResourceProvisioningStateOutput = string; +/** Alias for ProvisioningStateOutput */ +export type ProvisioningStateOutput = string; +/** Alias for MongoClusterStatusOutput */ +export type MongoClusterStatusOutput = string; +/** Alias for PublicNetworkAccessOutput */ +export type PublicNetworkAccessOutput = string; +/** Alias for NodeKindOutput */ +export type NodeKindOutput = string; +/** Alias for PrivateEndpointServiceConnectionStatusOutput */ +export type PrivateEndpointServiceConnectionStatusOutput = string; +/** Alias for PrivateEndpointConnectionProvisioningStateOutput */ +export type PrivateEndpointConnectionProvisioningStateOutput = string; +/** Alias for CreatedByTypeOutput */ +export type CreatedByTypeOutput = string; +/** Alias for ResourceIdentityTypeOutput */ +export type ResourceIdentityTypeOutput = "SystemAssigned"; +/** Alias for SkuTierOutput */ +export type SkuTierOutput = "Free" | "Basic" | "Standard" | "Premium"; +/** The response of a MongoCluster list operation. */ +export type MongoClusterListResultOutput = Paged; +/** Alias for CheckNameAvailabilityReasonOutput */ +export type CheckNameAvailabilityReasonOutput = string; +/** The response of a FirewallRule list operation. */ +export type FirewallRuleListResultOutput = Paged; +/** The response of a PrivateEndpointConnectionResource list operation. */ +export type PrivateEndpointConnectionResourceListResultOutput = + Paged; +/** The response of a PrivateLinkResource list operation. */ +export type PrivateLinkResourceListResultOutput = + Paged; diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/paginateHelper.ts b/sdk/mongocluster/arm-mongocluster/src/rest/paginateHelper.ts new file mode 100644 index 000000000000..3aac141db0e7 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/paginateHelper.ts @@ -0,0 +1,154 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + getPagedAsyncIterator, + PagedAsyncIterableIterator, + PagedResult, +} from "@azure/core-paging"; +import { + Client, + createRestError, + PathUncheckedResponse, +} from "@azure-rest/core-client"; + +/** + * Helper type to extract the type of an array + */ +export type GetArrayType = T extends Array ? TData : never; + +/** + * The type of a custom function that defines how to get a page and a link to the next one if any. + */ +export type GetPage = ( + pageLink: string, + maxPageSize?: number, +) => Promise<{ + page: TPage; + nextPageLink?: string; +}>; + +/** + * Options for the paging helper + */ +export interface PagingOptions { + /** + * Custom function to extract pagination details for crating the PagedAsyncIterableIterator + */ + customGetPage?: GetPage[]>; +} + +/** + * Helper type to infer the Type of the paged elements from the response type + * This type is generated based on the swagger information for x-ms-pageable + * specifically on the itemName property which indicates the property of the response + * where the page items are found. The default value is `value`. + * This type will allow us to provide strongly typed Iterator based on the response we get as second parameter + */ +export type PaginateReturn = TResult extends { + body: { value?: infer TPage }; +} + ? GetArrayType + : Array; + +/** + * Helper to paginate results from an initial response that follows the specification of Autorest `x-ms-pageable` extension + * @param client - Client to use for sending the next page requests + * @param initialResponse - Initial response containing the nextLink and current page of elements + * @param customGetPage - Optional - Function to define how to extract the page and next link to be used to paginate the results + * @returns - PagedAsyncIterableIterator to iterate the elements + */ +export function paginate( + client: Client, + initialResponse: TResponse, + options: PagingOptions = {}, +): PagedAsyncIterableIterator> { + // Extract element type from initial response + type TElement = PaginateReturn; + let firstRun = true; + const itemName = "value"; + const nextLinkName = "nextLink"; + const { customGetPage } = options; + const pagedResult: PagedResult = { + firstPageLink: "", + getPage: + typeof customGetPage === "function" + ? customGetPage + : async (pageLink: string) => { + const result = firstRun + ? initialResponse + : await client.pathUnchecked(pageLink).get(); + firstRun = false; + checkPagingRequest(result); + const nextLink = getNextLink(result.body, nextLinkName); + const values = getElements(result.body, itemName); + return { + page: values, + nextPageLink: nextLink, + }; + }, + }; + + return getPagedAsyncIterator(pagedResult); +} + +/** + * Gets for the value of nextLink in the body + */ +function getNextLink(body: unknown, nextLinkName?: string): string | undefined { + if (!nextLinkName) { + return undefined; + } + + const nextLink = (body as Record)[nextLinkName]; + + if (typeof nextLink !== "string" && typeof nextLink !== "undefined") { + throw new Error( + `Body Property ${nextLinkName} should be a string or undefined`, + ); + } + + return nextLink; +} + +/** + * Gets the elements of the current request in the body. + */ +function getElements(body: unknown, itemName: string): T[] { + const value = (body as Record)[itemName] as T[]; + + // value has to be an array according to the x-ms-pageable extension. + // The fact that this must be an array is used above to calculate the + // type of elements in the page in PaginateReturn + if (!Array.isArray(value)) { + throw new Error( + `Couldn't paginate response\n Body doesn't contain an array property with name: ${itemName}`, + ); + } + + return value ?? []; +} + +/** + * Checks if a request failed + */ +function checkPagingRequest(response: PathUncheckedResponse): void { + const Http2xxStatusCodes = [ + "200", + "201", + "202", + "203", + "204", + "205", + "206", + "207", + "208", + "226", + ]; + if (!Http2xxStatusCodes.includes(response.status)) { + throw createRestError( + `Pagination failed with unexpected statusCode ${response.status}`, + response, + ); + } +} diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/parameters.ts b/sdk/mongocluster/arm-mongocluster/src/rest/parameters.ts new file mode 100644 index 000000000000..34f6f29bdbc5 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/parameters.ts @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { RequestParameters } from "@azure-rest/core-client"; +import { + MongoCluster, + MongoClusterUpdate, + CheckNameAvailabilityRequest, + FirewallRule, + PrivateEndpointConnectionResource, +} from "./models.js"; + +export type OperationsListParameters = RequestParameters; +export type MongoClustersGetParameters = RequestParameters; + +export interface MongoClustersCreateOrUpdateBodyParam { + /** Resource create parameters. */ + body: MongoCluster; +} + +export type MongoClustersCreateOrUpdateParameters = + MongoClustersCreateOrUpdateBodyParam & RequestParameters; + +export interface MongoClustersUpdateBodyParam { + /** The resource properties to be updated. */ + body: MongoClusterUpdate; +} + +export type MongoClustersUpdateParameters = MongoClustersUpdateBodyParam & + RequestParameters; +export type MongoClustersDeleteParameters = RequestParameters; +export type MongoClustersListByResourceGroupParameters = RequestParameters; +export type MongoClustersListParameters = RequestParameters; +export type MongoClustersListConnectionStringsParameters = RequestParameters; + +export interface MongoClustersCheckNameAvailabilityBodyParam { + /** The CheckAvailability request */ + body: CheckNameAvailabilityRequest; +} + +export type MongoClustersCheckNameAvailabilityParameters = + MongoClustersCheckNameAvailabilityBodyParam & RequestParameters; +export type FirewallRulesGetParameters = RequestParameters; + +export interface FirewallRulesCreateOrUpdateBodyParam { + /** Resource create parameters. */ + body: FirewallRule; +} + +export type FirewallRulesCreateOrUpdateParameters = + FirewallRulesCreateOrUpdateBodyParam & RequestParameters; +export type FirewallRulesDeleteParameters = RequestParameters; +export type FirewallRulesListByMongoClusterParameters = RequestParameters; +export type PrivateEndpointConnectionsListByMongoClusterParameters = + RequestParameters; +export type PrivateEndpointConnectionsGetParameters = RequestParameters; + +export interface PrivateEndpointConnectionsCreateBodyParam { + /** Resource create parameters. */ + body: PrivateEndpointConnectionResource; +} + +export type PrivateEndpointConnectionsCreateParameters = + PrivateEndpointConnectionsCreateBodyParam & RequestParameters; +export type PrivateEndpointConnectionsDeleteParameters = RequestParameters; +export type PrivateLinksListByMongoClusterParameters = RequestParameters; diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/pollingHelper.ts b/sdk/mongocluster/arm-mongocluster/src/rest/pollingHelper.ts new file mode 100644 index 000000000000..5bcdfc88cabb --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/pollingHelper.ts @@ -0,0 +1,323 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { Client, HttpResponse } from "@azure-rest/core-client"; +import { AbortSignalLike } from "@azure/abort-controller"; +import { + CancelOnProgress, + CreateHttpPollerOptions, + RunningOperation, + OperationResponse, + OperationState, + createHttpPoller, +} from "@azure/core-lro"; +import { + MongoClustersCreateOrUpdate200Response, + MongoClustersCreateOrUpdate201Response, + MongoClustersCreateOrUpdateDefaultResponse, + MongoClustersCreateOrUpdateLogicalResponse, + MongoClustersUpdate200Response, + MongoClustersUpdate202Response, + MongoClustersUpdateDefaultResponse, + MongoClustersUpdateLogicalResponse, + MongoClustersDelete202Response, + MongoClustersDelete204Response, + MongoClustersDeleteDefaultResponse, + MongoClustersDeleteLogicalResponse, + FirewallRulesCreateOrUpdate200Response, + FirewallRulesCreateOrUpdate201Response, + FirewallRulesCreateOrUpdate202Response, + FirewallRulesCreateOrUpdateDefaultResponse, + FirewallRulesCreateOrUpdateLogicalResponse, + FirewallRulesDelete202Response, + FirewallRulesDelete204Response, + FirewallRulesDeleteDefaultResponse, + FirewallRulesDeleteLogicalResponse, + PrivateEndpointConnectionsCreate200Response, + PrivateEndpointConnectionsCreate201Response, + PrivateEndpointConnectionsCreate202Response, + PrivateEndpointConnectionsCreateDefaultResponse, + PrivateEndpointConnectionsCreateLogicalResponse, + PrivateEndpointConnectionsDelete202Response, + PrivateEndpointConnectionsDelete204Response, + PrivateEndpointConnectionsDeleteDefaultResponse, + PrivateEndpointConnectionsDeleteLogicalResponse, +} from "./responses.js"; + +/** + * A simple poller that can be used to poll a long running operation. + */ +export interface SimplePollerLike< + TState extends OperationState, + TResult, +> { + /** + * Returns true if the poller has finished polling. + */ + isDone(): boolean; + /** + * Returns the state of the operation. + */ + getOperationState(): TState; + /** + * Returns the result value of the operation, + * regardless of the state of the poller. + * It can return undefined or an incomplete form of the final TResult value + * depending on the implementation. + */ + getResult(): TResult | undefined; + /** + * Returns a promise that will resolve once a single polling request finishes. + * It does this by calling the update method of the Poller's operation. + */ + poll(options?: { abortSignal?: AbortSignalLike }): Promise; + /** + * Returns a promise that will resolve once the underlying operation is completed. + */ + pollUntilDone(pollOptions?: { + abortSignal?: AbortSignalLike; + }): Promise; + /** + * Invokes the provided callback after each polling is completed, + * sending the current state of the poller's operation. + * + * It returns a method that can be used to stop receiving updates on the given callback function. + */ + onProgress(callback: (state: TState) => void): CancelOnProgress; + + /** + * Returns a promise that could be used for serialized version of the poller's operation + * by invoking the operation's serialize method. + */ + serialize(): Promise; + + /** + * Wait the poller to be submitted. + */ + submitted(): Promise; + + /** + * Returns a string representation of the poller's operation. Similar to serialize but returns a string. + * @deprecated Use serialize() instead. + */ + toString(): string; + + /** + * Stops the poller from continuing to poll. Please note this will only stop the client-side polling + * @deprecated Use abortSignal to stop polling instead. + */ + stopPolling(): void; + + /** + * Returns true if the poller is stopped. + * @deprecated Use abortSignal status to track this instead. + */ + isStopped(): boolean; +} + +/** + * Helper function that builds a Poller object to help polling a long running operation. + * @param client - Client to use for sending the request to get additional pages. + * @param initialResponse - The initial response. + * @param options - Options to set a resume state or custom polling interval. + * @returns - A poller object to poll for operation state updates and eventually get the final response. + */ +export async function getLongRunningPoller< + TResult extends + | MongoClustersCreateOrUpdateLogicalResponse + | MongoClustersCreateOrUpdateDefaultResponse, +>( + client: Client, + initialResponse: + | MongoClustersCreateOrUpdate200Response + | MongoClustersCreateOrUpdate201Response + | MongoClustersCreateOrUpdateDefaultResponse, + options?: CreateHttpPollerOptions>, +): Promise, TResult>>; +export async function getLongRunningPoller< + TResult extends + | MongoClustersUpdateLogicalResponse + | MongoClustersUpdateDefaultResponse, +>( + client: Client, + initialResponse: + | MongoClustersUpdate200Response + | MongoClustersUpdate202Response + | MongoClustersUpdateDefaultResponse, + options?: CreateHttpPollerOptions>, +): Promise, TResult>>; +export async function getLongRunningPoller< + TResult extends + | MongoClustersDeleteLogicalResponse + | MongoClustersDeleteDefaultResponse, +>( + client: Client, + initialResponse: + | MongoClustersDelete202Response + | MongoClustersDelete204Response + | MongoClustersDeleteDefaultResponse, + options?: CreateHttpPollerOptions>, +): Promise, TResult>>; +export async function getLongRunningPoller< + TResult extends + | FirewallRulesCreateOrUpdateLogicalResponse + | FirewallRulesCreateOrUpdateDefaultResponse, +>( + client: Client, + initialResponse: + | FirewallRulesCreateOrUpdate200Response + | FirewallRulesCreateOrUpdate201Response + | FirewallRulesCreateOrUpdate202Response + | FirewallRulesCreateOrUpdateDefaultResponse, + options?: CreateHttpPollerOptions>, +): Promise, TResult>>; +export async function getLongRunningPoller< + TResult extends + | FirewallRulesDeleteLogicalResponse + | FirewallRulesDeleteDefaultResponse, +>( + client: Client, + initialResponse: + | FirewallRulesDelete202Response + | FirewallRulesDelete204Response + | FirewallRulesDeleteDefaultResponse, + options?: CreateHttpPollerOptions>, +): Promise, TResult>>; +export async function getLongRunningPoller< + TResult extends + | PrivateEndpointConnectionsCreateLogicalResponse + | PrivateEndpointConnectionsCreateDefaultResponse, +>( + client: Client, + initialResponse: + | PrivateEndpointConnectionsCreate200Response + | PrivateEndpointConnectionsCreate201Response + | PrivateEndpointConnectionsCreate202Response + | PrivateEndpointConnectionsCreateDefaultResponse, + options?: CreateHttpPollerOptions>, +): Promise, TResult>>; +export async function getLongRunningPoller< + TResult extends + | PrivateEndpointConnectionsDeleteLogicalResponse + | PrivateEndpointConnectionsDeleteDefaultResponse, +>( + client: Client, + initialResponse: + | PrivateEndpointConnectionsDelete202Response + | PrivateEndpointConnectionsDelete204Response + | PrivateEndpointConnectionsDeleteDefaultResponse, + options?: CreateHttpPollerOptions>, +): Promise, TResult>>; +export async function getLongRunningPoller( + client: Client, + initialResponse: TResult, + options: CreateHttpPollerOptions> = {}, +): Promise, TResult>> { + const abortController = new AbortController(); + const poller: RunningOperation = { + sendInitialRequest: async () => { + // In the case of Rest Clients we are building the LRO poller object from a response that's the reason + // we are not triggering the initial request here, just extracting the information from the + // response we were provided. + return getLroResponse(initialResponse); + }, + sendPollRequest: async ( + path: string, + pollOptions?: { abortSignal?: AbortSignalLike }, + ) => { + // This is the callback that is going to be called to poll the service + // to get the latest status. We use the client provided and the polling path + // which is an opaque URL provided by caller, the service sends this in one of the following headers: operation-location, azure-asyncoperation or location + // depending on the lro pattern that the service implements. If non is provided we default to the initial path. + function abortListener(): void { + abortController.abort(); + } + const inputAbortSignal = pollOptions?.abortSignal; + const abortSignal = abortController.signal; + if (inputAbortSignal?.aborted) { + abortController.abort(); + } else if (!abortSignal.aborted) { + inputAbortSignal?.addEventListener("abort", abortListener, { + once: true, + }); + } + let response; + try { + response = await client + .pathUnchecked(path ?? initialResponse.request.url) + .get({ abortSignal }); + } finally { + inputAbortSignal?.removeEventListener("abort", abortListener); + } + const lroResponse = getLroResponse(response as TResult); + lroResponse.rawResponse.headers["x-ms-original-url"] = + initialResponse.request.url; + return lroResponse; + }, + }; + + options.resolveOnUnsuccessful = options.resolveOnUnsuccessful ?? true; + const httpPoller = createHttpPoller(poller, options); + const simplePoller: SimplePollerLike, TResult> = { + isDone() { + return httpPoller.isDone; + }, + isStopped() { + return abortController.signal.aborted; + }, + getOperationState() { + if (!httpPoller.operationState) { + throw new Error( + "Operation state is not available. The poller may not have been started and you could await submitted() before calling getOperationState().", + ); + } + return httpPoller.operationState; + }, + getResult() { + return httpPoller.result; + }, + toString() { + if (!httpPoller.operationState) { + throw new Error( + "Operation state is not available. The poller may not have been started and you could await submitted() before calling getOperationState().", + ); + } + return JSON.stringify({ + state: httpPoller.operationState, + }); + }, + stopPolling() { + abortController.abort(); + }, + onProgress: httpPoller.onProgress, + poll: httpPoller.poll, + pollUntilDone: httpPoller.pollUntilDone, + serialize: httpPoller.serialize, + submitted: httpPoller.submitted, + }; + return simplePoller; +} + +/** + * Converts a Rest Client response to a response that the LRO implementation understands + * @param response - a rest client http response + * @returns - An LRO response that the LRO implementation understands + */ +function getLroResponse( + response: TResult, +): OperationResponse { + if (Number.isNaN(response.status)) { + throw new TypeError( + `Status code of the response is not a number. Value: ${response.status}`, + ); + } + + return { + flatResponse: response, + rawResponse: { + ...response, + statusCode: Number.parseInt(response.status), + body: response.body, + }, + }; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/rest/responses.ts b/sdk/mongocluster/arm-mongocluster/src/rest/responses.ts new file mode 100644 index 000000000000..22b99527b618 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/rest/responses.ts @@ -0,0 +1,380 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { RawHttpHeaders } from "@azure/core-rest-pipeline"; +import { HttpResponse } from "@azure-rest/core-client"; +import { + OperationListResultOutput, + ErrorResponseOutput, + MongoClusterOutput, + MongoClusterListResultOutput, + ListConnectionStringsResultOutput, + CheckNameAvailabilityResponseOutput, + FirewallRuleOutput, + FirewallRuleListResultOutput, + PrivateEndpointConnectionResourceListResultOutput, + PrivateEndpointConnectionResourceOutput, + PrivateLinkResourceListResultOutput, +} from "./outputModels.js"; + +/** Azure operation completed successfully. */ +export interface OperationsList200Response extends HttpResponse { + status: "200"; + body: OperationListResultOutput; +} + +export interface OperationsListDefaultResponse extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Azure operation completed successfully. */ +export interface MongoClustersGet200Response extends HttpResponse { + status: "200"; + body: MongoClusterOutput; +} + +export interface MongoClustersGetDefaultResponse extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Resource 'MongoCluster' update operation succeeded */ +export interface MongoClustersCreateOrUpdate200Response extends HttpResponse { + status: "200"; + body: MongoClusterOutput; +} + +export interface MongoClustersCreateOrUpdate201Headers { + /** The Retry-After header can indicate how long the client should wait before polling the operation status. */ + "retry-after"?: number; +} + +/** Resource 'MongoCluster' create operation succeeded */ +export interface MongoClustersCreateOrUpdate201Response extends HttpResponse { + status: "201"; + body: MongoClusterOutput; + headers: RawHttpHeaders & MongoClustersCreateOrUpdate201Headers; +} + +export interface MongoClustersCreateOrUpdateDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** The final response for long-running createOrUpdate operation */ +export interface MongoClustersCreateOrUpdateLogicalResponse + extends HttpResponse { + status: "200"; + body: MongoClusterOutput; +} + +/** Azure operation completed successfully. */ +export interface MongoClustersUpdate200Response extends HttpResponse { + status: "200"; + body: MongoClusterOutput; +} + +export interface MongoClustersUpdate202Headers { + /** The Location header contains the URL where the status of the long running operation can be checked. */ + location?: string; + /** The Retry-After header can indicate how long the client should wait before polling the operation status. */ + "retry-after"?: number; +} + +/** Resource update request accepted. */ +export interface MongoClustersUpdate202Response extends HttpResponse { + status: "202"; + headers: RawHttpHeaders & MongoClustersUpdate202Headers; +} + +export interface MongoClustersUpdateDefaultResponse extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** The final response for long-running update operation */ +export interface MongoClustersUpdateLogicalResponse extends HttpResponse { + status: "200"; + body: MongoClusterOutput; +} + +export interface MongoClustersDelete202Headers { + /** The Location header contains the URL where the status of the long running operation can be checked. */ + location?: string; + /** The Retry-After header can indicate how long the client should wait before polling the operation status. */ + "retry-after"?: number; +} + +/** Resource deletion accepted. */ +export interface MongoClustersDelete202Response extends HttpResponse { + status: "202"; + headers: RawHttpHeaders & MongoClustersDelete202Headers; +} + +/** Resource does not exist. */ +export interface MongoClustersDelete204Response extends HttpResponse { + status: "204"; +} + +export interface MongoClustersDeleteDefaultResponse extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** The final response for long-running delete operation */ +export interface MongoClustersDeleteLogicalResponse extends HttpResponse { + status: "200"; +} + +/** Azure operation completed successfully. */ +export interface MongoClustersListByResourceGroup200Response + extends HttpResponse { + status: "200"; + body: MongoClusterListResultOutput; +} + +export interface MongoClustersListByResourceGroupDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Azure operation completed successfully. */ +export interface MongoClustersList200Response extends HttpResponse { + status: "200"; + body: MongoClusterListResultOutput; +} + +export interface MongoClustersListDefaultResponse extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Azure operation completed successfully. */ +export interface MongoClustersListConnectionStrings200Response + extends HttpResponse { + status: "200"; + body: ListConnectionStringsResultOutput; +} + +export interface MongoClustersListConnectionStringsDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** The request has succeeded. */ +export interface MongoClustersCheckNameAvailability200Response + extends HttpResponse { + status: "200"; + body: CheckNameAvailabilityResponseOutput; +} + +export interface MongoClustersCheckNameAvailabilityDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Azure operation completed successfully. */ +export interface FirewallRulesGet200Response extends HttpResponse { + status: "200"; + body: FirewallRuleOutput; +} + +export interface FirewallRulesGetDefaultResponse extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Resource 'FirewallRule' update operation succeeded */ +export interface FirewallRulesCreateOrUpdate200Response extends HttpResponse { + status: "200"; + body: FirewallRuleOutput; +} + +/** Resource 'FirewallRule' create operation succeeded */ +export interface FirewallRulesCreateOrUpdate201Response extends HttpResponse { + status: "201"; + body: FirewallRuleOutput; +} + +export interface FirewallRulesCreateOrUpdate202Headers { + /** The Location header contains the URL where the status of the long running operation can be checked. */ + location?: string; + /** The Retry-After header can indicate how long the client should wait before polling the operation status. */ + "retry-after"?: number; +} + +/** Resource operation accepted. */ +export interface FirewallRulesCreateOrUpdate202Response extends HttpResponse { + status: "202"; + headers: RawHttpHeaders & FirewallRulesCreateOrUpdate202Headers; +} + +export interface FirewallRulesCreateOrUpdateDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** The final response for long-running createOrUpdate operation */ +export interface FirewallRulesCreateOrUpdateLogicalResponse + extends HttpResponse { + status: "200"; + body: FirewallRuleOutput; +} + +export interface FirewallRulesDelete202Headers { + /** The Location header contains the URL where the status of the long running operation can be checked. */ + location?: string; + /** The Retry-After header can indicate how long the client should wait before polling the operation status. */ + "retry-after"?: number; +} + +/** Resource deletion accepted. */ +export interface FirewallRulesDelete202Response extends HttpResponse { + status: "202"; + headers: RawHttpHeaders & FirewallRulesDelete202Headers; +} + +/** Resource does not exist. */ +export interface FirewallRulesDelete204Response extends HttpResponse { + status: "204"; +} + +export interface FirewallRulesDeleteDefaultResponse extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** The final response for long-running delete operation */ +export interface FirewallRulesDeleteLogicalResponse extends HttpResponse { + status: "200"; +} + +/** Azure operation completed successfully. */ +export interface FirewallRulesListByMongoCluster200Response + extends HttpResponse { + status: "200"; + body: FirewallRuleListResultOutput; +} + +export interface FirewallRulesListByMongoClusterDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Azure operation completed successfully. */ +export interface PrivateEndpointConnectionsListByMongoCluster200Response + extends HttpResponse { + status: "200"; + body: PrivateEndpointConnectionResourceListResultOutput; +} + +export interface PrivateEndpointConnectionsListByMongoClusterDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Azure operation completed successfully. */ +export interface PrivateEndpointConnectionsGet200Response extends HttpResponse { + status: "200"; + body: PrivateEndpointConnectionResourceOutput; +} + +export interface PrivateEndpointConnectionsGetDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** Resource 'PrivateEndpointConnectionResource' update operation succeeded */ +export interface PrivateEndpointConnectionsCreate200Response + extends HttpResponse { + status: "200"; + body: PrivateEndpointConnectionResourceOutput; +} + +/** Resource 'PrivateEndpointConnectionResource' create operation succeeded */ +export interface PrivateEndpointConnectionsCreate201Response + extends HttpResponse { + status: "201"; + body: PrivateEndpointConnectionResourceOutput; +} + +export interface PrivateEndpointConnectionsCreate202Headers { + /** The Location header contains the URL where the status of the long running operation can be checked. */ + location?: string; + /** The Retry-After header can indicate how long the client should wait before polling the operation status. */ + "retry-after"?: number; +} + +/** Resource operation accepted. */ +export interface PrivateEndpointConnectionsCreate202Response + extends HttpResponse { + status: "202"; + headers: RawHttpHeaders & PrivateEndpointConnectionsCreate202Headers; +} + +export interface PrivateEndpointConnectionsCreateDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** The final response for long-running create operation */ +export interface PrivateEndpointConnectionsCreateLogicalResponse + extends HttpResponse { + status: "200"; + body: PrivateEndpointConnectionResourceOutput; +} + +export interface PrivateEndpointConnectionsDelete202Headers { + /** The Location header contains the URL where the status of the long running operation can be checked. */ + location?: string; + /** The Retry-After header can indicate how long the client should wait before polling the operation status. */ + "retry-after"?: number; +} + +/** Resource deletion accepted. */ +export interface PrivateEndpointConnectionsDelete202Response + extends HttpResponse { + status: "202"; + headers: RawHttpHeaders & PrivateEndpointConnectionsDelete202Headers; +} + +/** Resource does not exist. */ +export interface PrivateEndpointConnectionsDelete204Response + extends HttpResponse { + status: "204"; +} + +export interface PrivateEndpointConnectionsDeleteDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} + +/** The final response for long-running delete operation */ +export interface PrivateEndpointConnectionsDeleteLogicalResponse + extends HttpResponse { + status: "200"; +} + +/** Azure operation completed successfully. */ +export interface PrivateLinksListByMongoCluster200Response + extends HttpResponse { + status: "200"; + body: PrivateLinkResourceListResultOutput; +} + +export interface PrivateLinksListByMongoClusterDefaultResponse + extends HttpResponse { + status: string; + body: ErrorResponseOutput; +} diff --git a/sdk/mongocluster/arm-mongocluster/src/restorePollerHelpers.ts b/sdk/mongocluster/arm-mongocluster/src/restorePollerHelpers.ts new file mode 100644 index 000000000000..cb2b06a03337 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/src/restorePollerHelpers.ts @@ -0,0 +1,181 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + PollerLike, + OperationState, + deserializeState, + ResourceLocationConfig, +} from "@azure/core-lro"; +import { MongoClusterManagementClient } from "./mongoClusterManagementClient.js"; +import { getLongRunningPoller } from "./api/pollingHelpers.js"; +import { + _mongoClustersCreateOrUpdateDeserialize, + _mongoClustersUpdateDeserialize, + _mongoClustersDeleteDeserialize, +} from "./api/mongoClusters/index.js"; +import { + _firewallRulesCreateOrUpdateDeserialize, + _firewallRulesDeleteDeserialize, +} from "./api/firewallRules/index.js"; +import { + _privateEndpointConnectionsCreateDeserialize, + _privateEndpointConnectionsDeleteDeserialize, +} from "./api/privateEndpointConnections/index.js"; +import { + PathUncheckedResponse, + OperationOptions, +} from "@azure-rest/core-client"; +import { AbortSignalLike } from "@azure/abort-controller"; + +export interface RestorePollerOptions< + TResult, + TResponse extends PathUncheckedResponse = PathUncheckedResponse, +> extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** + * The signal which can be used to abort requests. + */ + abortSignal?: AbortSignalLike; + /** Deserialization function for raw response body */ + processResponseBody?: (result: TResponse) => Promise; +} + +/** + * Creates a poller from the serialized state of another poller. This can be + * useful when you want to create pollers on a different host or a poller + * needs to be constructed after the original one is not in scope. + */ +export function restorePoller( + client: MongoClusterManagementClient, + serializedState: string, + sourceOperation: ( + ...args: any[] + ) => PollerLike, TResult>, + options?: RestorePollerOptions, +): PollerLike, TResult> { + const pollerConfig = deserializeState(serializedState).config; + const { initialRequestUrl, requestMethod, metadata } = pollerConfig; + if (!initialRequestUrl || !requestMethod) { + throw new Error( + `Invalid serialized state: ${serializedState} for sourceOperation ${sourceOperation?.name}`, + ); + } + const resourceLocationConfig = metadata?.["resourceLocationConfig"] as + | ResourceLocationConfig + | undefined; + const deserializeHelper = + options?.processResponseBody ?? + getDeserializationHelper(initialRequestUrl, requestMethod); + if (!deserializeHelper) { + throw new Error( + `Please ensure the operation is in this client! We can't find its deserializeHelper for ${sourceOperation?.name}.`, + ); + } + return getLongRunningPoller( + (client as any)["_client"] ?? client, + deserializeHelper as (result: TResponse) => Promise, + { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + resourceLocationConfig, + restoreFrom: serializedState, + initialRequestUrl, + }, + ); +} + +const deserializeMap: Record = { + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}": + _mongoClustersCreateOrUpdateDeserialize, + "PATCH /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}": + _mongoClustersUpdateDeserialize, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}": + _mongoClustersDeleteDeserialize, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}": + _firewallRulesCreateOrUpdateDeserialize, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}": + _firewallRulesDeleteDeserialize, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}": + _privateEndpointConnectionsCreateDeserialize, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/privateEndpointConnections/{privateEndpointConnectionName}": + _privateEndpointConnectionsDeleteDeserialize, +}; + +function getDeserializationHelper( + urlStr: string, + method: string, +): ((result: unknown) => Promise) | undefined { + const path = new URL(urlStr).pathname; + const pathParts = path.split("/"); + + // Traverse list to match the longest candidate + // matchedLen: the length of candidate path + // matchedValue: the matched status code array + let matchedLen = -1, + matchedValue: ((result: unknown) => Promise) | undefined; + + // Iterate the responseMap to find a match + for (const [key, value] of Object.entries(deserializeMap)) { + // Extracting the path from the map key which is in format + // GET /path/foo + if (!key.startsWith(method)) { + continue; + } + const candidatePath = getPathFromMapKey(key); + // Get each part of the url path + const candidateParts = candidatePath.split("/"); + + // track if we have found a match to return the values found. + let found = true; + for ( + let i = candidateParts.length - 1, j = pathParts.length - 1; + i >= 1 && j >= 1; + i--, j-- + ) { + if ( + candidateParts[i]?.startsWith("{") && + candidateParts[i]?.indexOf("}") !== -1 + ) { + const start = candidateParts[i]!.indexOf("}") + 1, + end = candidateParts[i]?.length; + // If the current part of the candidate is a "template" part + // Try to use the suffix of pattern to match the path + // {guid} ==> $ + // {guid}:export ==> :export$ + const isMatched = new RegExp( + `${candidateParts[i]?.slice(start, end)}`, + ).test(pathParts[j] || ""); + + if (!isMatched) { + found = false; + break; + } + continue; + } + + // If the candidate part is not a template and + // the parts don't match mark the candidate as not found + // to move on with the next candidate path. + if (candidateParts[i] !== pathParts[j]) { + found = false; + break; + } + } + + // We finished evaluating the current candidate parts + // Update the matched value if and only if we found the longer pattern + if (found && candidatePath.length > matchedLen) { + matchedLen = candidatePath.length; + matchedValue = value as (result: unknown) => Promise; + } + } + + return matchedValue; +} + +function getPathFromMapKey(mapKey: string): string { + const pathStart = mapKey.indexOf("/"); + return mapKey.slice(pathStart); +} diff --git a/sdk/mongocluster/arm-mongocluster/test/public/mongoclusterOperations.spec.ts b/sdk/mongocluster/arm-mongocluster/test/public/mongoclusterOperations.spec.ts new file mode 100644 index 000000000000..ff2f981909d1 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/test/public/mongoclusterOperations.spec.ts @@ -0,0 +1,160 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { + env, + Recorder, + isPlaybackMode, + delay, +} from "@azure-tools/test-recorder"; +import { createTestCredential } from "@azure-tools/test-credential"; +import { assert, beforeEach, afterEach, it, describe } from "vitest"; +import { MongoClusterManagementClient } from "../../src/mongoClusterManagementClient.js" +import { createRecorder } from "./utils/recordedClient.js"; + +export const testPollingOptions = { + updateIntervalInMs: isPlaybackMode() ? 0 : undefined, +}; + +describe("MongoCluster test", () => { + let recorder: Recorder; + let subscriptionId: string; + let client: MongoClusterManagementClient; + let location: string; + let resourceGroup: string; + let resourcename: string; + let fireWallName: string; + + beforeEach(async (context) => { + process.env.SystemRoot = process.env.SystemRoot || "C:\\Windows"; + recorder = await createRecorder(context); + subscriptionId = env.SUBSCRIPTION_ID || ''; + // This is an example of how the environment variables are used + const credential = createTestCredential(); + client = new MongoClusterManagementClient(credential, subscriptionId, recorder.configureClientOptions({})); + location = "eastus"; + resourceGroup = "czwjstest"; + resourcename = "resourcetest"; + fireWallName = "testfilerule"; + }); + + afterEach(async function () { + if (recorder?.recordingId) { + await recorder.stop(); + } + }); + + it("mongoClusters create test", async function () { + const res = await client.mongoClusters.createOrUpdate( + resourceGroup, + resourcename, + { + location, + properties: { + administratorLogin: "mongoAdmin", + administratorLoginPassword: "Password01!", + nodeGroupSpecs: [ + { + diskSizeGB: 128, + enableHa: true, + kind: "Shard", + nodeCount: 1, + sku: "M30", + }, + ], + serverVersion: "5.0", + }, + }, + testPollingOptions); + assert.equal(res.name, resourcename); + }); + + it("firerules create test", async function () { + const res = await client.firewallRules.createOrUpdate( + resourceGroup, + resourcename, + fireWallName, + { + properties: { + startIpAddress: "0.0.0.0", + endIpAddress: "255.255.255.255" + }, + }, + testPollingOptions); + console.log(res) + assert.equal(res.name, fireWallName); + }); + + it("mongoClusters get test", async function () { + const res = await client.mongoClusters.get( + resourceGroup, + resourcename + ); + assert.equal(res.name, resourcename); + }); + + it("firerules get test", async function () { + const res = await client.firewallRules.get( + resourceGroup, + resourcename, + fireWallName); + console.log(res) + assert.equal(res.name, fireWallName); + }); + + + it("mongoClusters list test", async function () { + const resArray = new Array(); + for await (let item of client.mongoClusters.listByResourceGroup(resourceGroup)) { + resArray.push(item); + } + assert.equal(resArray.length, 1); + }); + + it("firewallRules list test", async function () { + const resArray = new Array(); + for await (let item of client.firewallRules.listByMongoCluster(resourceGroup, resourcename)) { + resArray.push(item); + } + assert.equal(resArray.length, 1); + }); + + + it("mongoClusters update test", async function () { + const res = await client.mongoClusters.update( + resourceGroup, + resourcename, + { + tags: {} + } + ) + assert.equal(res.name, resourcename); + }); + + it("firewallRules delete test", async function () { + const resArray = new Array(); + const res = await client.firewallRules.delete(resourceGroup, resourcename, fireWallName + ) + for await (let item of client.firewallRules.listByMongoCluster(resourceGroup, resourcename)) { + resArray.push(item); + } + assert.equal(resArray.length, 0); + }); + + it("mongoClusters delete test", async function () { + const resArray = new Array(); + const res = await client.mongoClusters.delete(resourceGroup, resourcename + ) + for await (let item of client.mongoClusters.listByResourceGroup(resourceGroup)) { + resArray.push(item); + } + assert.equal(resArray.length, 0); + + await delay(isPlaybackMode() ? 1000 : 60000) + }); +}) diff --git a/sdk/mongocluster/arm-mongocluster/test/public/node/privateEndpointConnections.spec.ts b/sdk/mongocluster/arm-mongocluster/test/public/node/privateEndpointConnections.spec.ts new file mode 100644 index 000000000000..5c4f6212efaa --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/test/public/node/privateEndpointConnections.spec.ts @@ -0,0 +1,212 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { + env, + Recorder, + isPlaybackMode, + delay +} from "@azure-tools/test-recorder"; +import { createTestCredential } from "@azure-tools/test-credential"; +import { assert, beforeEach, afterEach, it, describe } from "vitest"; +import { MongoClusterManagementClient } from "../../../src/mongoClusterManagementClient.js" +import { createRecorder } from "../utils/recordedClient.js"; +import { NetworkManagementClient } from "@azure/arm-network" + +export const testPollingOptions = { + updateIntervalInMs: isPlaybackMode() ? 0 : undefined, +}; + +describe("MongoCluster test", () => { + let recorder: Recorder; + let subscriptionId: string; + let client: MongoClusterManagementClient; + let networkClient: NetworkManagementClient; + let location: string; + let resourceGroup: string; + let resourcename: string; + let connectionName: string; + let virtualNetworkName: string; + let privateEndpointName: string; + + beforeEach(async (context) => { + process.env.SystemRoot = process.env.SystemRoot || "C:\\Windows"; + recorder = await createRecorder(context); + subscriptionId = env.SUBSCRIPTION_ID || ''; + // This is an example of how the environment variables are used + const credential = createTestCredential(); + client = new MongoClusterManagementClient(credential, subscriptionId, recorder.configureClientOptions({})); + networkClient = new NetworkManagementClient(credential, subscriptionId, recorder.configureClientOptions({})); + location = "eastus"; + resourceGroup = "myjstest"; + resourcename = "resourcetest1"; + virtualNetworkName = "testvn"; + privateEndpointName = "testPEC"; + }); + + afterEach(async function () { + if (recorder?.recordingId) { + await recorder.stop(); + } + }); + + it("mongoClusters for private endpoint create test", async function () { + const res = await client.mongoClusters.createOrUpdate( + resourceGroup, + resourcename, + { + location, + properties: { + administratorLogin: "mongoAdmin", + administratorLoginPassword: "Password01!", + nodeGroupSpecs: [ + { + diskSizeGB: 128, + enableHa: true, + kind: "Shard", + nodeCount: 1, + sku: "M30", + }, + ], + serverVersion: "5.0", + }, + }, + testPollingOptions); + assert.equal(res.name, resourcename); + }); + + + it("virtual network create test", async function () { + const res = await networkClient.virtualNetworks.beginCreateOrUpdateAndWait( + resourceGroup, + virtualNetworkName, + { + addressSpace: { addressPrefixes: ["10.0.0.0/16"] }, + flowTimeoutInMinutes: 10, + location + } + ); + assert.equal(res.name, virtualNetworkName); + + const result = await networkClient.subnets.beginCreateOrUpdateAndWait( + resourceGroup, + virtualNetworkName, + "testsubnet", + { addressPrefix: "10.0.0.0/16" }, + ); + }) + + it("private endpoit create test", async function () { + const clusterRes = await client.mongoClusters.get( + resourceGroup, + resourcename + ) + const res = await networkClient.privateEndpoints.beginCreateOrUpdateAndWait( + resourceGroup, + privateEndpointName, + { + location, + customNetworkInterfaceName: privateEndpointName + "-nic", + privateLinkServiceConnections: [ + { + name: privateEndpointName, + groupIds: ["MongoCluster"], + privateLinkServiceId: clusterRes.id, + requestMessage: "Please approve my connection.", + }, + ], + subnet: { + id: "/subscriptions/" + subscriptionId + "/resourceGroups/" + resourceGroup + "/providers/Microsoft.Network/virtualNetworks/" + virtualNetworkName + "/subnets/testsubnet", + }, + }, + testPollingOptions); + assert.equal(res.name, privateEndpointName); + }); + + // need create a mongocluster first then create a private endpoint named testPEC with the mongocluster. + it("private endpoint connection create test", async function () { + for await (let item of client.privateEndpointConnections.listByMongoCluster(resourceGroup, resourcename)) { + connectionName = String(item.name); + } + const res = await client.privateEndpointConnections.create( + resourceGroup, + resourcename, + connectionName, + { + properties: { + privateLinkServiceConnectionState: { + status: "Rejected", + } + }, + }, + testPollingOptions); + console.log(res) + assert.equal(res.name, connectionName); + }); + + it("private endpoint connection get test", async function () { + const res = await client.privateEndpointConnections.get( + resourceGroup, + resourcename, + connectionName); + console.log(res) + assert.equal(res.name, connectionName); + }); + it("private endpoint connection list test", async function () { + const resArray = new Array(); + for await (let item of client.privateEndpointConnections.listByMongoCluster(resourceGroup, resourcename)) { + resArray.push(item); + } + assert.equal(resArray.length, 1); + }); + + it("private endpoint connection delete test", async function () { + for await (let item of client.privateEndpointConnections.listByMongoCluster(resourceGroup, resourcename)) { + connectionName = String(item.name); + } + const resArray = new Array(); + const res = await client.privateEndpointConnections.delete(resourceGroup, resourcename, connectionName + ) + for await (let item of client.privateEndpointConnections.listByMongoCluster(resourceGroup, resourcename)) { + resArray.push(item); + } + assert.equal(resArray.length, 0); + }); + + it("private endpoint delete test", async function () { + const resArray = new Array(); + const res = await networkClient.privateEndpoints.beginDeleteAndWait(resourceGroup, privateEndpointName, + ) + for await (let item of networkClient.privateEndpoints.list(resourceGroup)) { + resArray.push(item); + } + assert.equal(resArray.length, 0); + }); + + it("virtual network delete test", async function () { + const resArray = new Array(); + const res = await networkClient.virtualNetworks.beginDeleteAndWait(resourceGroup, virtualNetworkName, + ) + for await (let item of networkClient.virtualNetworks.list(resourceGroup)) { + resArray.push(item); + } + assert.equal(resArray.length, 0); + }); + + it("mongoClusters for private endpoint delete test", async function () { + const resArray = new Array(); + const res = await client.mongoClusters.delete(resourceGroup, resourcename + ) + for await (let item of client.mongoClusters.listByResourceGroup(resourceGroup)) { + resArray.push(item); + } + assert.equal(resArray.length, 0); + + await delay(isPlaybackMode() ? 1000 : 60000) + }); +}) diff --git a/sdk/mongocluster/arm-mongocluster/test/public/utils/recordedClient.ts b/sdk/mongocluster/arm-mongocluster/test/public/utils/recordedClient.ts new file mode 100644 index 000000000000..a0b689456cb9 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/test/public/utils/recordedClient.ts @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + Recorder, + RecorderStartOptions, + VitestTestContext, +} from "@azure-tools/test-recorder"; + + +const replaceableVariables: Record = { + SUBSCRIPTION_ID: "azure_subscription_id" +}; + +const recorderEnvSetup: RecorderStartOptions = { + envSetupForPlayback: replaceableVariables, + removeCentralSanitizers: [ + "AZSDK3493", // .name in the body is not a secret and is listed below in the beforeEach section + "AZSDK3430", // .id in the body is not a secret and is listed below in the beforeEach section + ], +}; + +/** + * creates the recorder and reads the environment variables from the `.env` file. + * Should be called first in the test suite to make sure environment variables are + * read before they are being used. + */ +export async function createRecorder(context: VitestTestContext): Promise { + const recorder = new Recorder(context); + await recorder.start(recorderEnvSetup); + return recorder; +} diff --git a/sdk/mongocluster/arm-mongocluster/tsconfig.browser.config.json b/sdk/mongocluster/arm-mongocluster/tsconfig.browser.config.json new file mode 100644 index 000000000000..1b37aebc5457 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/tsconfig.browser.config.json @@ -0,0 +1,10 @@ +{ + "extends": "./.tshy/build.json", + "include": ["./src/**/*.ts", "./src/**/*.mts", "./test/**/*.spec.ts"], + "exclude": ["./test/**/node/**/*.ts"], + "compilerOptions": { + "outDir": "./dist-test/browser", + "rootDir": ".", + "skipLibCheck": true + } +} diff --git a/sdk/mongocluster/arm-mongocluster/tsconfig.json b/sdk/mongocluster/arm-mongocluster/tsconfig.json new file mode 100644 index 000000000000..7483ff677600 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../../tsconfig.package", + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext", + "rootDir": "." + }, + "include": [ + "./src/**/*.ts", + "./src/**/*.mts", + "./src/**/*.cts", + "test/**/*.ts", + "./test/**/*.ts" + ] +} diff --git a/sdk/mongocluster/arm-mongocluster/tsp-location.yaml b/sdk/mongocluster/arm-mongocluster/tsp-location.yaml new file mode 100644 index 000000000000..42a3e3cc15ee --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/tsp-location.yaml @@ -0,0 +1,3 @@ +directory: specification/mongocluster/DocumentDB.MongoCluster.Management +commit: abad0096677005817d2c19df2364663e5583c8fc +repo: Azure/azure-rest-api-specs diff --git a/sdk/mongocluster/arm-mongocluster/vitest.browser.config.ts b/sdk/mongocluster/arm-mongocluster/vitest.browser.config.ts new file mode 100644 index 000000000000..68e57a10e36f --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/vitest.browser.config.ts @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { defineConfig } from "vitest/config"; +import { relativeRecordingsPath } from "@azure-tools/test-recorder"; + +process.env.RECORDINGS_RELATIVE_PATH = relativeRecordingsPath(); + +export default defineConfig({ + define: { + "process.env": process.env, + }, + test: { + reporters: ["basic", "junit"], + outputFile: { + junit: "test-results.browser.xml", + }, + browser: { + enabled: true, + headless: true, + name: "chromium", + provider: "playwright", + }, + fakeTimers: { + toFake: ["setTimeout", "Date"], + }, + watch: false, + include: ["dist-test/browser/**/*.spec.js"], + coverage: { + include: ["dist-test/browser/**/*.spec.js"], + provider: "istanbul", + reporter: ["text", "json", "html"], + reportsDirectory: "coverage-browser", + }, + testTimeout: 2400000, + }, +}); diff --git a/sdk/mongocluster/arm-mongocluster/vitest.config.ts b/sdk/mongocluster/arm-mongocluster/vitest.config.ts new file mode 100644 index 000000000000..f175c6aa9a77 --- /dev/null +++ b/sdk/mongocluster/arm-mongocluster/vitest.config.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { defineConfig } from "vitest/config"; +import { relativeRecordingsPath } from "@azure-tools/test-recorder"; + +export default defineConfig({ + test: { + reporters: ["basic", "junit"], + outputFile: { + junit: "test-results.browser.xml", + }, + fakeTimers: { + toFake: ["setTimeout", "Date"], + }, + watch: false, + include: ["test/**/*.spec.ts"], + exclude: ["test/**/browser/*.spec.ts"], + coverage: { + include: ["src/**/*.ts"], + exclude: [ + "src/**/*-browser.mts", + "src/**/*-react-native.mts", + "vitest*.config.ts", + "samples-dev/**/*.ts", + ], + provider: "istanbul", + reporter: ["text", "json", "html"], + reportsDirectory: "coverage", + }, + testTimeout: 2400000, + }, +}); diff --git a/sdk/mongocluster/ci.mgmt.yml b/sdk/mongocluster/ci.mgmt.yml new file mode 100644 index 000000000000..9b07c486fba5 --- /dev/null +++ b/sdk/mongocluster/ci.mgmt.yml @@ -0,0 +1,38 @@ +# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. + +trigger: + branches: + include: + - main + - feature/* + - release/* + - hotfix/* + exclude: + - feature/v4 + paths: + include: + - sdk/mongocluster/arm-mongocluster + - sdk/mongocluster/ci.mgmt.yml + +pr: + branches: + include: + - main + - feature/* + - release/* + - hotfix/* + exclude: + - feature/v4 + paths: + include: + - sdk/mongocluster/arm-mongocluster + - sdk/mongocluster/ci.mgmt.yml + +extends: + template: /eng/pipelines/templates/stages/archetype-sdk-client.yml + parameters: + ServiceDirectory: mongocluster + Artifacts: + - name: azure-arm-mongocluster + safeName: azurearmmongocluster + \ No newline at end of file