From 3c95056c15c375db1c37279afe19836f2b02f200 Mon Sep 17 00:00:00 2001 From: SDKAuto Date: Mon, 4 Nov 2024 06:43:42 +0000 Subject: [PATCH] CodeGen from PR 31397 in Azure/azure-rest-api-specs Merge d40ef5fd9ae3b2462a898a29cc9ad85bb9694976 into 690a7656d65a03b134fa44fc7bb8013dc18a15b5 --- common/config/rush/pnpm-lock.yaml | 699 +++++++++--------- .../ai-translation-document-rest/CHANGELOG.md | 44 +- .../ai-translation-document-rest/LICENSE | 21 + .../ai-translation-document-rest/README.md | 329 +-------- .../api-extractor.json | 4 +- .../ai-translation-document-rest/assets.json | 6 - .../eslint.config.mjs | 9 +- .../karma.conf.js | 131 ---- .../ai-translation-document-rest/package.json | 195 ++--- .../review/ai-translation-document.api.md | 37 +- .../ai-translation-document-rest/sample.env | 6 - .../samples-dev/batchDocumentTranslation.ts | 54 -- .../samples-dev/cancelTranslation.ts | 60 -- .../samples-dev/getDocumentStatus.ts | 75 -- .../samples-dev/getDocumentsStatus.ts | 62 -- .../samples-dev/getSupportedFormats.ts | 44 -- .../samples-dev/getTranslationStatus.ts | 67 -- .../samples-dev/getTranslationsStatus.ts | 70 -- .../synchronousDocumentTranslation.ts | 54 -- .../samples/v1-beta/javascript/README.md | 78 -- .../javascript/batchDocumentTranslation.js | 56 -- .../v1-beta/javascript/cancelTranslation.js | 62 -- .../v1-beta/javascript/getDocumentStatus.js | 77 -- .../v1-beta/javascript/getDocumentsStatus.js | 64 -- .../v1-beta/javascript/getSupportedFormats.js | 44 -- .../javascript/getTranslationStatus.js | 66 -- .../javascript/getTranslationsStatus.js | 72 -- .../samples/v1-beta/javascript/package.json | 34 - .../samples/v1-beta/javascript/sample.env | 6 - .../synchronousDocumentTranslation.js | 56 -- .../samples/v1-beta/typescript/README.md | 91 --- .../samples/v1-beta/typescript/package.json | 43 -- .../samples/v1-beta/typescript/sample.env | 6 - .../src/batchDocumentTranslation.ts | 54 -- .../typescript/src/cancelTranslation.ts | 60 -- .../typescript/src/getDocumentStatus.ts | 75 -- .../typescript/src/getDocumentsStatus.ts | 62 -- .../typescript/src/getSupportedFormats.ts | 44 -- .../typescript/src/getTranslationStatus.ts | 67 -- .../typescript/src/getTranslationsStatus.ts | 70 -- .../src/synchronousDocumentTranslation.ts | 54 -- .../samples/v1-beta/typescript/tsconfig.json | 17 - .../src/clientDefinitions.ts | 41 +- .../src/documentTranslationClient.ts | 33 +- .../ai-translation-document-rest/src/index.ts | 23 +- .../src/isUnexpected.ts | 30 +- .../src/logger.ts | 3 - .../src/models.ts | 17 +- .../src/outputModels.ts | 15 +- .../src/paginateHelper.ts | 38 +- .../src/parameters.ts | 21 +- .../src/pollingHelper.ts | 42 +- .../src/responses.ts | 9 +- .../public/getSupportedFormatsTest.spec.ts | 87 --- .../public/node/cancelTranslationTest.spec.ts | 68 -- .../test/public/node/containerHelper.ts | 161 ---- .../public/node/documentFilterTest.spec.ts | 261 ------- .../node/documentTranslationTest.spec.ts | 575 -------------- .../public/node/translationFilterTest.spec.ts | 251 ------- .../singleDocumentTranslateTest.spec.ts | 126 ---- .../utils/StaticAccessTokenCredential.ts | 17 - .../test/public/utils/TestDocument.ts | 14 - .../test/public/utils/recordedClient.ts | 68 -- .../test/public/utils/samplesHelper.ts | 108 --- .../test/public/utils/testHelper.ts | 83 --- .../ai-translation-document-rest/tests.yml | 15 - .../tsconfig.json | 14 +- .../tsp-location.yaml | 6 +- sdk/translation/ci.yml | 36 +- 69 files changed, 712 insertions(+), 4675 deletions(-) create mode 100644 sdk/translation/ai-translation-document-rest/LICENSE delete mode 100644 sdk/translation/ai-translation-document-rest/assets.json delete mode 100644 sdk/translation/ai-translation-document-rest/karma.conf.js delete mode 100644 sdk/translation/ai-translation-document-rest/sample.env delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/batchDocumentTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/cancelTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getDocumentStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getDocumentsStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getSupportedFormats.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getTranslationStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getTranslationsStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/synchronousDocumentTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/README.md delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/package.json delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/sample.env delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/README.md delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/package.json delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/sample.env delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/tsconfig.json delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/getSupportedFormatsTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/cancelTranslationTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/containerHelper.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/documentFilterTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/documentTranslationTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/translationFilterTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/singleDocumentTranslateTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/StaticAccessTokenCredential.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/TestDocument.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/recordedClient.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/samplesHelper.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/testHelper.ts delete mode 100644 sdk/translation/ai-translation-document-rest/tests.yml diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 5718fd4a9037..0347a2772aee 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -4759,7 +4759,7 @@ packages: /ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} dependencies: - ajv: 8.13.0 + ajv: 8.17.1 dev: false /ajv@6.12.6: @@ -11648,7 +11648,7 @@ packages: dev: false file:projects/agrifood-farming.tgz: - resolution: {integrity: sha512-A27QRCf+fclxmQWzFkcWje254sNi3BNqVj6THggD+benrj10LzvNkqQsefoI03k25aOc1FUSCfJ43o6Vo2XoSw==, tarball: file:projects/agrifood-farming.tgz} + resolution: {integrity: sha512-P1oxadoKIWON1x9m1i9h+1RyiSH2YeY8l2+8s7k2uGuZ/ylJa3PaI5o20zO2ed4wSYcdjy9Sdouct+ftanZ2lQ==, tarball: file:projects/agrifood-farming.tgz} name: '@rush-temp/agrifood-farming' version: 0.0.0 dependencies: @@ -11692,7 +11692,7 @@ packages: dev: false file:projects/ai-anomaly-detector.tgz: - resolution: {integrity: sha512-HzKO/ibKBWkpzkQM3xG1ZfJA+m4rkBndkL87SfD4FUVpgW4psHMkJghPa9yeiCAJi8NHSLA0hZpPnAjJgiB42A==, tarball: file:projects/ai-anomaly-detector.tgz} + resolution: {integrity: sha512-q7yKHSXex1EhjzFp0wJb5loAIJodmPwkV9HXkEH5441wUhf8yG6xpOqgAdhqUIWNAOnGg/AP+m3aFc5wJti8Rw==, tarball: file:projects/ai-anomaly-detector.tgz} name: '@rush-temp/ai-anomaly-detector' version: 0.0.0 dependencies: @@ -11736,7 +11736,7 @@ packages: dev: false file:projects/ai-content-safety.tgz: - resolution: {integrity: sha512-+vhklte3SWsbXgPTDIuGDjfVQrHpqyM982PbDyzfjQEBFIDuKnWrIUd9SyS3m5vMFdhjCGqBSnou+4OoXXukQA==, tarball: file:projects/ai-content-safety.tgz} + resolution: {integrity: sha512-tGC3S8ycR2jDMB7rX2Bj0xaUAFQ+/cgzFP+H/C7vOHABTA/LtlbJ+S67zVPTNiqfN3WQCq2Gpur69JlLkipENQ==, tarball: file:projects/ai-content-safety.tgz} name: '@rush-temp/ai-content-safety' version: 0.0.0 dependencies: @@ -11815,7 +11815,7 @@ packages: dev: false file:projects/ai-document-translator.tgz: - resolution: {integrity: sha512-7FMlYbHc7Lfya4vIQ2PV6XVC/43/9f26E3Ic0JRfqGy7OQPlS3ysktNjhyqesQOZdoV+KsRqWb35KSr75oLvmQ==, tarball: file:projects/ai-document-translator.tgz} + resolution: {integrity: sha512-y7JZQ/Mi46HtLeR4IJQ8gtPpFbp1H+8s3XZniOxnhXzUkl/X2nwm5BjeHfi4v7HqIItJLwd1UZSEJHIY+a7RyA==, tarball: file:projects/ai-document-translator.tgz} name: '@rush-temp/ai-document-translator' version: 0.0.0 dependencies: @@ -11858,7 +11858,7 @@ packages: dev: false file:projects/ai-form-recognizer.tgz: - resolution: {integrity: sha512-9NNsS+5oWXWlC3a9FTWZS48RncaDbkHFiBdz4NIuxZNDnQOeR5kSvaIuSuVWPhxBtZhqywhPavTe4CK/6RyCSw==, tarball: file:projects/ai-form-recognizer.tgz} + resolution: {integrity: sha512-vnGDhMuYikI6gI5jmqidEx/Lq2ZNWJXXSoDt0Uj+vdi19kr22NlzxAsoIqRScrzNdNfNxmLJ6L+syONfpB7F5g==, tarball: file:projects/ai-form-recognizer.tgz} name: '@rush-temp/ai-form-recognizer' version: 0.0.0 dependencies: @@ -11904,7 +11904,7 @@ packages: dev: false file:projects/ai-inference.tgz: - resolution: {integrity: sha512-KQwSPWLHLf6tV9uWbKv3DVOrSEmCIvUON9BZlULBObXStIgyoJ1E7cgBkG8Ept3ovRPKTv3LCLIUdkZsrZytMA==, tarball: file:projects/ai-inference.tgz} + resolution: {integrity: sha512-GPQuD9GPmOBORk2aS5Q37iooxLuLgm9H9q1DItVZreZ7a5zDwL2HvzE4sxx40s0idT+3bd97X4u6IyTkkPzrpQ==, tarball: file:projects/ai-inference.tgz} name: '@rush-temp/ai-inference' version: 0.0.0 dependencies: @@ -11946,7 +11946,7 @@ packages: dev: false file:projects/ai-language-conversations.tgz: - resolution: {integrity: sha512-WObWM32nlgWBIk8v4DvtUD+fu5L0pw3Zt/UloSQBS3A1l7qvAT8W7QcZv03KfhAKjUY6sEHQIkA3k1L58W8vnw==, tarball: file:projects/ai-language-conversations.tgz} + resolution: {integrity: sha512-1wUiycseCzUZWknJVYMl8CcvWZv0wz2QM7TbfFIkgzF76cKLag/iQdcRlz2Fqrec1an2lmbJdoncbrqQ/iQt5A==, tarball: file:projects/ai-language-conversations.tgz} name: '@rush-temp/ai-language-conversations' version: 0.0.0 dependencies: @@ -11992,7 +11992,7 @@ packages: dev: false file:projects/ai-language-text.tgz: - resolution: {integrity: sha512-OXOr0TDK87snjLvwBbota0JX/rQdJncNigrltfHoERskELRe3gSIyis6iIBxAOPIY4QbVWeB511nGOJGPUHBuA==, tarball: file:projects/ai-language-text.tgz} + resolution: {integrity: sha512-PqM9ui81lmdhXEtP8GIAjLVcVvlupuMDmN23SvaEKLDAwj7x83KNuxMXUC03nuAu7GGw7f6duJQPj59nEyUXig==, tarball: file:projects/ai-language-text.tgz} name: '@rush-temp/ai-language-text' version: 0.0.0 dependencies: @@ -12065,7 +12065,7 @@ packages: dev: false file:projects/ai-metrics-advisor.tgz: - resolution: {integrity: sha512-BtM6Iki4RfMwZkGUWRUao4KW8wmVDUj8L8gjo78Q36NbTOAMIhh55co6rnBup5Y28wH14ddAsy45PpjzMczo1A==, tarball: file:projects/ai-metrics-advisor.tgz} + resolution: {integrity: sha512-tMpocDPS0zFDGjw7GUHbdqcOPEMWd3KM6fyio19pGdgqOK/YbBxJqHo+jv1Ev+WmtY9dgEH0wFAQdhcgS8xL8A==, tarball: file:projects/ai-metrics-advisor.tgz} name: '@rush-temp/ai-metrics-advisor' version: 0.0.0 dependencies: @@ -12108,7 +12108,7 @@ packages: dev: false file:projects/ai-text-analytics.tgz: - resolution: {integrity: sha512-ZD5dT6XXJy7XvhxIKZ27ltdKphlzasxiy+TIH+b8v3HbbciA7PQ10PnyigY+pvX8JHpZWuuge9Bay7PVwBxkRg==, tarball: file:projects/ai-text-analytics.tgz} + resolution: {integrity: sha512-OW/5GziDDHpKVqzCGt8geKm0PUIWynI32o8r7f5L3RMxiuJ0TvDzhGEVvBSc3pMpkAPhCgMudul+MH8dYgPQyw==, tarball: file:projects/ai-text-analytics.tgz} name: '@rush-temp/ai-text-analytics' version: 0.0.0 dependencies: @@ -12153,13 +12153,14 @@ packages: dev: false file:projects/ai-translation-document.tgz: - resolution: {integrity: sha512-kLfAuurq8WLBA7YJbBtaXrCtEBAf72TbcQySRIBCEAOsqypoQogXLMCO70OnPooaggmRCf/Q509Aic0i3Pxp0Q==, tarball: file:projects/ai-translation-document.tgz} + resolution: {integrity: sha512-3q54iAvY6xCtMiTi43AddjZNmvXv0E52QIPZdaYC7NWEaZOwhvCVyeOVvZG5CtbgYqn6zmaNHML4sLsLNGlhUA==, tarball: file:projects/ai-translation-document.tgz} name: '@rush-temp/ai-translation-document' version: 0.0.0 dependencies: '@azure-tools/test-credential': 1.3.1 '@azure-tools/test-recorder': 3.5.2 '@azure/storage-blob': 12.25.0 + '@microsoft/api-extractor': 7.47.11(@types/node@18.19.60) '@types/chai': 4.3.20 '@types/mocha': 10.0.9 '@types/node': 18.19.60 @@ -12167,7 +12168,7 @@ packages: chai: 4.3.10 cross-env: 7.0.3 dotenv: 16.4.5 - eslint: 9.13.0 + eslint: 8.57.1 karma: 6.4.4 karma-chrome-launcher: 3.2.0 karma-coverage: 2.2.1 @@ -12178,25 +12179,22 @@ packages: karma-mocha-reporter: 2.2.5(karma@6.4.4) karma-source-map-support: 1.4.0 karma-sourcemap-loader: 0.3.8 + mkdirp: 3.0.1 mocha: 10.7.3 nyc: 17.1.0 + prettier: 3.3.3 + rimraf: 5.0.10 source-map-support: 0.5.21 ts-node: 10.9.2(@types/node@18.19.60)(typescript@5.6.3) - tshy: 2.0.1 + tshy: 1.18.0 tslib: 2.8.0 - typescript: 5.6.3 + typescript: 5.5.4 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - bufferutil - - debug - - jiti - supports-color - - utf-8-validate dev: false file:projects/ai-translation-text.tgz: - resolution: {integrity: sha512-S2pTG5Wt6sb5YNplzIL5qfk870HVeocFyx3nyseag+Lx/FU07+KA50X1ca1QMQbPDARXst8HvjNiXkgk8caDxw==, tarball: file:projects/ai-translation-text.tgz} + resolution: {integrity: sha512-sKlY84hVWOP+lM3tsInKK2iJWx8pCCu0f010wiGj85UvYFdfL54aFoFMfHGrkHO4HNCRM/VZdrpcCDKMOYbclw==, tarball: file:projects/ai-translation-text.tgz} name: '@rush-temp/ai-translation-text' version: 0.0.0 dependencies: @@ -12278,7 +12276,7 @@ packages: dev: false file:projects/ai-vision-image-analysis.tgz: - resolution: {integrity: sha512-K6cSt91ClHw1OujEKrq2l3FWE5C9kqqJm4r3I9mCi2fNnEttDe+Kp606cEZf989eY1rE2OHfTtQOKR54ZPpP8Q==, tarball: file:projects/ai-vision-image-analysis.tgz} + resolution: {integrity: sha512-S8X1xcgy30xsK50MXyZw4Sn8GBjkNUIaR80JvUdEWNPF/+qlf9wuwilUv8rDmQZ+7SZ3G9LkaWjSeIcPLJzaQw==, tarball: file:projects/ai-vision-image-analysis.tgz} name: '@rush-temp/ai-vision-image-analysis' version: 0.0.0 dependencies: @@ -12439,7 +12437,7 @@ packages: dev: false file:projects/arm-advisor.tgz: - resolution: {integrity: sha512-96K9r+isrJRSN4Ywil2ni+AYKjXddK/CI2B0tkTw8tRJQvlC7aKliPbhOstEYQTQc2dNw+vMd2AEYFiLTyPJgw==, tarball: file:projects/arm-advisor.tgz} + resolution: {integrity: sha512-luFaksCkDe/cPkt4WKzXCqaJRUhumsLemd5yNSsMvSVFrrYBGyHx4fFbwvSEutDhlLRPosEz86Y2LLePFdHFfg==, tarball: file:projects/arm-advisor.tgz} name: '@rush-temp/arm-advisor' version: 0.0.0 dependencies: @@ -12463,7 +12461,7 @@ packages: dev: false file:projects/arm-agrifood.tgz: - resolution: {integrity: sha512-nx6KK6DlgfE4NmgeB4+MhfIT1BRisjau9/90IdEUXM6bSNQZOWWok/Z+gkOMjhw5TN4CuysYfeaYccZmWO4+nQ==, tarball: file:projects/arm-agrifood.tgz} + resolution: {integrity: sha512-UG0JLX/D+zBtUL4O4RMDEJ256xkzjvxAmsc8icuNoJEUIRReSrBwx3FDOlOHNrs4VIciWPO70/rGMcxyuhyjHg==, tarball: file:projects/arm-agrifood.tgz} name: '@rush-temp/arm-agrifood' version: 0.0.0 dependencies: @@ -12488,7 +12486,7 @@ packages: dev: false file:projects/arm-analysisservices.tgz: - resolution: {integrity: sha512-8HQPHChuzkh6p+7WDfLtdplI95WFvhkXGQCYwcmWz7Lw/1hTJqOqAtR+Gc107YJwW9XUkgAbEi+O+WFXx1e69g==, tarball: file:projects/arm-analysisservices.tgz} + resolution: {integrity: sha512-+6YcsY9hb/cykHslp+nli23ANpt4ofj3Q7x7ZtPKorstI/6LlsT7/X3ojADGnMbjErMp777woQrcazbyqE7D0Q==, tarball: file:projects/arm-analysisservices.tgz} name: '@rush-temp/arm-analysisservices' version: 0.0.0 dependencies: @@ -12513,7 +12511,7 @@ packages: dev: false file:projects/arm-apicenter.tgz: - resolution: {integrity: sha512-fGBVp8CLlhGsrRMXr8FSP6PlvuQ1kWDlfMyWOwC349YatApii5XDS1M2isx767Cb/zRFwR/3BS1cnmRwMnXd1w==, tarball: file:projects/arm-apicenter.tgz} + resolution: {integrity: sha512-LArXmmz1vMmMMBNbxKRZf6hxgszeSCYSibkyW7+QUXF7hBTf2HI4T4v9+EGDzuOVdTC/pQEnJwxG8cpODbcu8g==, tarball: file:projects/arm-apicenter.tgz} name: '@rush-temp/arm-apicenter' version: 0.0.0 dependencies: @@ -12539,7 +12537,7 @@ packages: dev: false file:projects/arm-apimanagement.tgz: - resolution: {integrity: sha512-Yj8CdUhpmpl4CX0Z8Fxbq4OF7af88UXBXEED5k6IyluVwGyMpQEFpnLOMSujqwI5M0FA+bCWKq/47+sLCKMtVw==, tarball: file:projects/arm-apimanagement.tgz} + resolution: {integrity: sha512-qtJg71n+r7Et7oBmNLavVCZ/Q8krIEoMZ1eaKPHtFNFJD/nmqVo6lH3uW4e+GfiUIEu4TgbJRz+oi2lNf9hn0g==, tarball: file:projects/arm-apimanagement.tgz} name: '@rush-temp/arm-apimanagement' version: 0.0.0 dependencies: @@ -12565,7 +12563,7 @@ packages: dev: false file:projects/arm-appcomplianceautomation.tgz: - resolution: {integrity: sha512-1ChDKV3xbiXh58DBKnhHyoOBB68SyXP6+3zGXkHq5FjyjqMycTZVlVsBMyLnzFHjMHI3z7KGxsFBeA8G8vv5lg==, tarball: file:projects/arm-appcomplianceautomation.tgz} + resolution: {integrity: sha512-zCEUKxh1xO6XneZtzv/TyD+HN8rTFBd8uxPmgatb3d4pwUucCvv0XyL2K+OZIUSxlbnBONi8PXVSb0TXZi98SQ==, tarball: file:projects/arm-appcomplianceautomation.tgz} name: '@rush-temp/arm-appcomplianceautomation' version: 0.0.0 dependencies: @@ -12592,7 +12590,7 @@ packages: dev: false file:projects/arm-appconfiguration.tgz: - resolution: {integrity: sha512-ZdHGYcLzjTz6E/DVZrHHx3TxcgoGEhYFclpgu/mo8t8+RMJgTRppQrJkeJ34+6VWSynloaZBqBdG5n5fin83Mw==, tarball: file:projects/arm-appconfiguration.tgz} + resolution: {integrity: sha512-EOuGlK//o9Q6ZTfGkNQX+S9NfNafcPyPbkIYHh+oX87R0Y9SX9QEhomS3R5QmMdJkSat/H6MdHbjuUxgmwFzUA==, tarball: file:projects/arm-appconfiguration.tgz} name: '@rush-temp/arm-appconfiguration' version: 0.0.0 dependencies: @@ -12618,7 +12616,7 @@ packages: dev: false file:projects/arm-appcontainers.tgz: - resolution: {integrity: sha512-ePWniK50lacYZXAcLMr767VI3Qz5BPl/dQo2puoh6s5wowW12ssVgKwGQGaTyFqkGMpPzHPbu2s/RIayYXsmDQ==, tarball: file:projects/arm-appcontainers.tgz} + resolution: {integrity: sha512-S560QlF+asU6nmH/t71xfAdNBvnl8CdbRSOWixoPuaL+5Df4n1s7MmORKkecb4I1aPNSCs2jWb01tdA7e3dIOQ==, tarball: file:projects/arm-appcontainers.tgz} name: '@rush-temp/arm-appcontainers' version: 0.0.0 dependencies: @@ -12645,7 +12643,7 @@ packages: dev: false file:projects/arm-appinsights.tgz: - resolution: {integrity: sha512-yX3abbvgyFr5uIRQztKFIs96POke+cHvDUrH0+OkmaGwmp0i8Ket+7XOw7e6+yiV6ysneBFvrUDzpe3ScSuqDg==, tarball: file:projects/arm-appinsights.tgz} + resolution: {integrity: sha512-cEoeA4GJ98/hokOZRs4WrVFown2hOUsG/1RYM+ctp3vaYiUEK71vCj7HgKczd0UvQiRbYLKeQGi1yTMLPVpoeQ==, tarball: file:projects/arm-appinsights.tgz} name: '@rush-temp/arm-appinsights' version: 0.0.0 dependencies: @@ -12668,7 +12666,7 @@ packages: dev: false file:projects/arm-appplatform.tgz: - resolution: {integrity: sha512-9PkuNmLJ2RB8E+XUctioALk1k5dbEfNwcEpqHM9mAwoidr+gJNUPhh5DMLSZrf1VNREMcevpuExxAwwuoqZDGw==, tarball: file:projects/arm-appplatform.tgz} + resolution: {integrity: sha512-01Ga6Ziv1GAADP5HKAa1DTykHD0iM+OHABqC5fCkC9kTXiEsoNbJngN+MT4bK4TnD/FPjSPcf1WnXdot+YMl9A==, tarball: file:projects/arm-appplatform.tgz} name: '@rush-temp/arm-appplatform' version: 0.0.0 dependencies: @@ -12694,7 +12692,7 @@ packages: dev: false file:projects/arm-appservice-1.tgz: - resolution: {integrity: sha512-tZnDM/sB3CZkpdAdF9f2o90f87B+3aBVH5dRcY71FkHIKIWgo2NiFFiZAGAceeXIF4aJQ9hWRtzd5is9+IGDWg==, tarball: file:projects/arm-appservice-1.tgz} + resolution: {integrity: sha512-TsYCwAjLN6a5+K+UZWdbRugRvMpUUHJbPNa923RA4w01pjEzv3f4SXT3rhzgqCFyErmYhdIy1ljSIHVzeIlJmg==, tarball: file:projects/arm-appservice-1.tgz} name: '@rush-temp/arm-appservice-1' version: 0.0.0 dependencies: @@ -12721,7 +12719,7 @@ packages: dev: false file:projects/arm-appservice-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-uJ7ti6oz8fkuRU/aCQTFqwGOaVLHjuYl78TUymah8ajZnXHlkSQxGzP3W681fmQFPEMlCQstQkRMekGn0RS4dQ==, tarball: file:projects/arm-appservice-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-zBnLDEdo/mvAFYdemABaYxhl6URzjGjfIwkCwZClW2Ar2ePAWjkcI7vmAyIF0uojxiPI4hH3YqEfMA8dYMn7IA==, 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: @@ -12747,7 +12745,7 @@ packages: dev: false file:projects/arm-appservice.tgz: - resolution: {integrity: sha512-MSGNu1RI9+P9w+xtUjZDshiNupGz1/2EOlN+JlLePMq1d00HVVkhVZSoJrizY5U5dO3JkSOqFaTNcWOU/0LodA==, tarball: file:projects/arm-appservice.tgz} + resolution: {integrity: sha512-/12+8M/wSTl1dLbitKDDZ5P8wc/AsIWYcxrBc32J4Q5CuJpuB/3HLZzcpwRxzVSA/cU42CkFJZCeqP2NLD8X8g==, tarball: file:projects/arm-appservice.tgz} name: '@rush-temp/arm-appservice' version: 0.0.0 dependencies: @@ -12790,7 +12788,7 @@ packages: dev: false file:projects/arm-astro.tgz: - resolution: {integrity: sha512-RSOWNl30XerfCHmnqSLbJCHViDJpAa7meL64EiriqIMkaCMQEJOw2tjPIvMKIM3xP/KzJTd/qKNEdKNsYxLxnA==, tarball: file:projects/arm-astro.tgz} + resolution: {integrity: sha512-jPnHxVLP76XpRsFj6i4WZP+k52kDT9y01rCFpzIGK16AxXpwkXmLY4pZ1TOKcaEgL0PwdGDGA7ANg5s5FAQ1Cg==, tarball: file:projects/arm-astro.tgz} name: '@rush-temp/arm-astro' version: 0.0.0 dependencies: @@ -12816,7 +12814,7 @@ packages: dev: false file:projects/arm-attestation.tgz: - resolution: {integrity: sha512-gjU77HFVx3W110xJowypNmaT7JWWMpLKkRwQfrfyCJX1iIJHTERgPMyDtkvZPoI6ieUBDrjqJzA4L+HGKxuDzQ==, tarball: file:projects/arm-attestation.tgz} + resolution: {integrity: sha512-m5nxReJeR0MrK3UaAUJMCgn9qn/K4pZXNZFmzym1pznr/nIa8Jcj/VdkkqmphLXjqBKEv0Z6PnQ2MeRpipj2LA==, tarball: file:projects/arm-attestation.tgz} name: '@rush-temp/arm-attestation' version: 0.0.0 dependencies: @@ -12839,7 +12837,7 @@ packages: dev: false file:projects/arm-authorization-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-ltK190igyjDydtt72OnzDY0tsIBKriQLCaWDnoJQuvzCw2XoZagbPGuRnKMbNs+3fxDBUN8luZCZoN3a+segiw==, tarball: file:projects/arm-authorization-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-XFDA/SS+X6alNkSi6NzGmvRrGp1pMLh9t2w8UppFDcDf0Fn11WnVnskLqERDXs2oWBkNd1muUOhHbNCzA23f/Q==, 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: @@ -12863,7 +12861,7 @@ packages: dev: false file:projects/arm-authorization.tgz: - resolution: {integrity: sha512-cDxg8NxS9qvQoTgoddBNxpDhm1ZollPOWS42tEu2PaRzwc54XjG9fPP5TqcIa2FNVqH6rtEZgRK7S9xQQGCoMQ==, tarball: file:projects/arm-authorization.tgz} + resolution: {integrity: sha512-zibbXMglj+ndwehX12c4rSHEnRbT0kNjkWaHFMYGUCgz8zarQQQh6LDEhG5E6DaJNU+MAWUA8aYM+FCiaT3kFA==, tarball: file:projects/arm-authorization.tgz} name: '@rush-temp/arm-authorization' version: 0.0.0 dependencies: @@ -12889,7 +12887,7 @@ packages: dev: false file:projects/arm-automanage.tgz: - resolution: {integrity: sha512-hsrw44WEUm1v6vRtD/6jRwiKVCbwFyMFWvSy/uZK02GrBdRYDtbbNMAH0WqCIjJ7sW42p7P11Y62HVcac0m6AQ==, tarball: file:projects/arm-automanage.tgz} + resolution: {integrity: sha512-D1jk83JsK1u+NaDH8LRnlS0OjG2bxd9N18ad5gmgcRF2JAz49h+EtGUG6+XTeQ9gDM+Byx/k/p9vISYPUZP8TA==, tarball: file:projects/arm-automanage.tgz} name: '@rush-temp/arm-automanage' version: 0.0.0 dependencies: @@ -12913,7 +12911,7 @@ packages: dev: false file:projects/arm-automation.tgz: - resolution: {integrity: sha512-091XwYl8IySHQiVRp/4l3SK+UDx9qFEDk1ycZmYuhXd6XLY63nn3fyX71slBqmpoFW+Z9PBANtAdEcgQ6s4x4w==, tarball: file:projects/arm-automation.tgz} + resolution: {integrity: sha512-Xp3hnnhwSfgKAkjyzZVQ9OhpB6fLPSRC8HwZD8LxRFz0Imqhr695OHugyY7OHjYsIao4K+fWif8UUMvKgf+WUg==, tarball: file:projects/arm-automation.tgz} name: '@rush-temp/arm-automation' version: 0.0.0 dependencies: @@ -12939,7 +12937,7 @@ packages: dev: false file:projects/arm-avs.tgz: - resolution: {integrity: sha512-8CTU1mmH2Yd+oVkjCzTz4XWflVPeXiKNjIonRg1ce9U8Ez37GUWJ6vpbZQ5kk3RR3z34BAu5xWBu7ZqOLy6IMg==, tarball: file:projects/arm-avs.tgz} + resolution: {integrity: sha512-e2heOPeLZmF6fOgxVeok/TFXdTXxdmNLeQqLXfi24YaSgAHQOFIr2Jo5bdEjR4ExaW3E2XasmFfDh4aunPRyOg==, tarball: file:projects/arm-avs.tgz} name: '@rush-temp/arm-avs' version: 0.0.0 dependencies: @@ -12966,7 +12964,7 @@ packages: dev: false file:projects/arm-azureadexternalidentities.tgz: - resolution: {integrity: sha512-BYKKbMVbU+88JuAQUhqGjIertuNChW/vCrhNnxeeSisHeXMpIj4CnYxLeXoA1jPRC5Uq6OpaOVH3nUbQGarYsg==, tarball: file:projects/arm-azureadexternalidentities.tgz} + resolution: {integrity: sha512-+7CK31G2H0x9t+fCcKCNuJHyLeSeS5CdH4AILj3HKm0ZFtXtWzG5MKMGxI3Y2mCUyj+z7mIaYeGle+y0ss4Yow==, tarball: file:projects/arm-azureadexternalidentities.tgz} name: '@rush-temp/arm-azureadexternalidentities' version: 0.0.0 dependencies: @@ -12991,7 +12989,7 @@ packages: dev: false file:projects/arm-azurestack.tgz: - resolution: {integrity: sha512-PKDqhUPAmNuRNxbOxFn9WzrKIwQ5T1sKaeTq4FMexfmA3uFRZmrwb4Qw+Y5sW0KnnV5Ihx3fZFit37MsXaAlRg==, tarball: file:projects/arm-azurestack.tgz} + resolution: {integrity: sha512-8AXuzAhciJ0A3iBNom7VsJhljULaPMlD1IeRRW19svP3Ps1iKrHU05FkulySiKBIU2FDlGjxHRKopDmVwbA0kg==, tarball: file:projects/arm-azurestack.tgz} name: '@rush-temp/arm-azurestack' version: 0.0.0 dependencies: @@ -13014,7 +13012,7 @@ packages: dev: false file:projects/arm-azurestackhci.tgz: - resolution: {integrity: sha512-qRgOfVH3V3vN+9IhybvsUsu7ijr7YbytVGt6DtBUb4XJBCE20zu5A7Uw+G0QiU8mkfl2Qyh+QSw84hFpVo2mFQ==, tarball: file:projects/arm-azurestackhci.tgz} + resolution: {integrity: sha512-xLo7zCcLoXhktrVjbHdIzHW5DQa6ojH4kFBwj/Xi3ARgtXvxIyJBzT2YIIY2i/fzHS4OaWIPnmwWT4FYZwMB0Q==, tarball: file:projects/arm-azurestackhci.tgz} name: '@rush-temp/arm-azurestackhci' version: 0.0.0 dependencies: @@ -13041,7 +13039,7 @@ packages: dev: false file:projects/arm-baremetalinfrastructure.tgz: - resolution: {integrity: sha512-6G3GbWLuZovXfxfv7f8UEww7ZAhVDHOHh3/LuDJhQ6L9689VCCgms3xkRBON8fifwXZu8dwgFFia016OaAgbmQ==, tarball: file:projects/arm-baremetalinfrastructure.tgz} + resolution: {integrity: sha512-VvnnJLzitmFFibcCito8gcYsPQdmO+AROPhldTWMfVokn/dWvMfogLaJ+bFz3m7q7jzke69lvQaA/NaErCIvUQ==, tarball: file:projects/arm-baremetalinfrastructure.tgz} name: '@rush-temp/arm-baremetalinfrastructure' version: 0.0.0 dependencies: @@ -13067,7 +13065,7 @@ packages: dev: false file:projects/arm-batch.tgz: - resolution: {integrity: sha512-v9Q8fxtEjSwOP2KzCYgJimcg3m/P0K9MsGmOXubzE0zmsPTGtne98oyyw1D48/j5Tj43HXVewRrl9G6e4WT32w==, tarball: file:projects/arm-batch.tgz} + resolution: {integrity: sha512-l71U4B8PypyscPdpEk6BSRA0kLTanf4kg/yLBZkpp+vRVwwWTuX/0li16uGOGqrC+iqlN2msnCwqWNjVOtBE/w==, tarball: file:projects/arm-batch.tgz} name: '@rush-temp/arm-batch' version: 0.0.0 dependencies: @@ -13093,7 +13091,7 @@ packages: dev: false file:projects/arm-billing.tgz: - resolution: {integrity: sha512-kbXfMcChjypYeTe2QmnLLdl80NqYBqWp3jw9dXF+ztMLBuWYPUAYcKj/rXtZzejq/872hPWmfUXnnjtbSx3NYw==, tarball: file:projects/arm-billing.tgz} + resolution: {integrity: sha512-eZrZgRnFLJjOwrQPoCth/gE1LJTY3qNKc7vF36yijW47qa/5SiVkeAJapSwUYoAMNKq5D9wrsXR1hzQcKm0nNA==, tarball: file:projects/arm-billing.tgz} name: '@rush-temp/arm-billing' version: 0.0.0 dependencies: @@ -13119,7 +13117,7 @@ packages: dev: false file:projects/arm-billingbenefits.tgz: - resolution: {integrity: sha512-D32JK8ECiMkAM63TQKxXOT6fcT3X3GHizU7BWjDxSIvnM9a2uYkzWe2SYav75tIx/1BKo/50kt0E797m16DJHg==, tarball: file:projects/arm-billingbenefits.tgz} + resolution: {integrity: sha512-fIT5gA0TD0ensDtMOvsmv1gSvnOilPN0+7c92ivt/v84KqfU5tWEF+s5ZAssliO1xSzR7HVtkT800qJVEBfnzg==, tarball: file:projects/arm-billingbenefits.tgz} name: '@rush-temp/arm-billingbenefits' version: 0.0.0 dependencies: @@ -13144,7 +13142,7 @@ packages: dev: false file:projects/arm-botservice.tgz: - resolution: {integrity: sha512-E6mpziixMK+8BWzXyRpgJz1sfxsd9gJmcR5MNQx7iTpEwW56lE/kwUiH5/m4jpI+2Qo3hoaEMz2aAWmkAnLC9g==, tarball: file:projects/arm-botservice.tgz} + resolution: {integrity: sha512-oihtx5BpbzLiwmNpdaJNKnKzTtDs0ZS6g5lQzoCChp5X6oc60YmR9AOE1adtaCUn3vALmk1+hF0aic4xeVjKWA==, tarball: file:projects/arm-botservice.tgz} name: '@rush-temp/arm-botservice' version: 0.0.0 dependencies: @@ -13170,7 +13168,7 @@ packages: dev: false file:projects/arm-cdn.tgz: - resolution: {integrity: sha512-B1D7iLeqvOQXZ23cfCLmorc3zaNx8VYoBJ51JvjFDGePlqjZSrIqpAydFIcea6+Vq7KVztrAsprhOAVVyPpvpQ==, tarball: file:projects/arm-cdn.tgz} + resolution: {integrity: sha512-h68hL2sMA2HflbN5UnFe76wd8ICDgwWWAr8EVHooJU5qx2gpNeZgsfOxVpOyowbfLi+0gcA0b83sHRDsVifU9w==, tarball: file:projects/arm-cdn.tgz} name: '@rush-temp/arm-cdn' version: 0.0.0 dependencies: @@ -13196,7 +13194,7 @@ packages: dev: false file:projects/arm-changeanalysis.tgz: - resolution: {integrity: sha512-zOrdzN3s8Eiz/2GmEeTwJcjJovU8JvUlNQIFw3C6XiUnl4TG0WBZzsVFw4tfa6ZVvI8Qyh+j5oMYMy6UwzXmQA==, tarball: file:projects/arm-changeanalysis.tgz} + resolution: {integrity: sha512-9gYHWzCg+XEBERVccze3blGNGBnEmbzF0B8LOn34A29W7QSm7qsLYWkuPSMMeM6GoSigBZcjw6b3ijS1KBKpdA==, tarball: file:projects/arm-changeanalysis.tgz} name: '@rush-temp/arm-changeanalysis' version: 0.0.0 dependencies: @@ -13219,7 +13217,7 @@ packages: dev: false file:projects/arm-changes.tgz: - resolution: {integrity: sha512-YylQQ+MK/hD4XOtcpqOLsmQiDscv9WRs7AVY90WHfPgly2HsQT7eztcMLJFUkMAjRssHJdMeermqdLOVMMU8dA==, tarball: file:projects/arm-changes.tgz} + resolution: {integrity: sha512-XbyA6YqnlG6gUXAp0lUMYyMIpkXLvhJ6XlSfDORymIvFWyrc6SDj2arE23v+CISvenpyN6xgyi7hGqb8YpeYaA==, tarball: file:projects/arm-changes.tgz} name: '@rush-temp/arm-changes' version: 0.0.0 dependencies: @@ -13242,7 +13240,7 @@ packages: dev: false file:projects/arm-chaos.tgz: - resolution: {integrity: sha512-KvA6xuIKQNSeXS1dt8q2sh/xiiSiS9T9Uw6um7rDk/yQXWJzTJmEN2MUTfy6SkadWXSQ4C54RETb64UxpWCbow==, tarball: file:projects/arm-chaos.tgz} + resolution: {integrity: sha512-p8cFZ7EmqQU/LtbbMyulQ4MEozyzGFuvwZ//2CYbQCzcGy/60Iqi808+jBPCv/xKqCwURySZrNJOLMqaTH8puQ==, tarball: file:projects/arm-chaos.tgz} name: '@rush-temp/arm-chaos' version: 0.0.0 dependencies: @@ -13269,7 +13267,7 @@ packages: dev: false file:projects/arm-cognitiveservices.tgz: - resolution: {integrity: sha512-SJTIVi7cZ++J3yLqCWxqToG93GNYdJSe7bWiZT2grc2Bkfs+jnup4E82hz8ftmefnAzVkmbhDV17+acSi9Azww==, tarball: file:projects/arm-cognitiveservices.tgz} + resolution: {integrity: sha512-9tEMdT8rzdLZbdjBT+2hgzRtOCZ/sbBbE7hOEwiZL7PwbGNtL0bDy52FdXCHLHjNg2mfXDag4989Qj/YPD0QcQ==, tarball: file:projects/arm-cognitiveservices.tgz} name: '@rush-temp/arm-cognitiveservices' version: 0.0.0 dependencies: @@ -13295,7 +13293,7 @@ packages: dev: false file:projects/arm-commerce-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-M4t3t6j9RkeK76HRscnqoVu5+e7aKLr4oJ4PCBxmbl9lACc0RICK4QdCE7q5YaCGzGXDOlzCNizi8V1Nyss4NQ==, tarball: file:projects/arm-commerce-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-XWOGoDcZktPVP86yN97yCWOFsPIvY/IPAKbZCc5tRrmsOMLDN/uddfRWDkRNYVYcFso93JCSfcM2MJKI5SEP1A==, 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: @@ -13319,7 +13317,7 @@ packages: dev: false file:projects/arm-commerce.tgz: - resolution: {integrity: sha512-tdXtFr9sEU/XUNC7M/futnyhTGp68nX23qGZcfqs8UpJ6QJg4nWigEthAsBkEwr9cDVyos6YsQgEjqfZxECQhg==, tarball: file:projects/arm-commerce.tgz} + resolution: {integrity: sha512-mkDk+8FnnWSXBKV9ElKFnNd9UdEPt/yMcIVD1aQWIAiLO6hUL0/XrhbBrT3fSmo69H0kvcDTS/+M6PCt8wYZ0Q==, tarball: file:projects/arm-commerce.tgz} name: '@rush-temp/arm-commerce' version: 0.0.0 dependencies: @@ -13342,7 +13340,7 @@ packages: dev: false file:projects/arm-commitmentplans.tgz: - resolution: {integrity: sha512-wM/6H40GSdOLOwQhE3WVJlFeG2zKom0AW9JED7nm7kwahlwJsvXLcPelbec9G4y/O0F0WkUb1qkBlFNzjOyPcw==, tarball: file:projects/arm-commitmentplans.tgz} + resolution: {integrity: sha512-H/ayQgnS8IABBf2GTWaDR4YgWcz340CZ6H0KrLWregcnzhlAfHQ9K5zzYRcRrtlCDU+FsN3BmoRYMpK6YKudKw==, tarball: file:projects/arm-commitmentplans.tgz} name: '@rush-temp/arm-commitmentplans' version: 0.0.0 dependencies: @@ -13365,7 +13363,7 @@ packages: dev: false file:projects/arm-communication.tgz: - resolution: {integrity: sha512-jKYhoeQqipGWlqYlhr0SRv+uzw2UwJsiQN+3xzVGABK/70y0EZ8zcPYJOlq36Ua/z+xjbkl61dnEEkLTn8THpg==, tarball: file:projects/arm-communication.tgz} + resolution: {integrity: sha512-8eXV1Fyz9DGFgphWOl5oiiRPGNR1iIvdqiFmrp8/ut4dUm7MOHXvDOUFu/qEJh2irVk2KL4DMlWWWtxq0QdJxg==, tarball: file:projects/arm-communication.tgz} name: '@rush-temp/arm-communication' version: 0.0.0 dependencies: @@ -13391,7 +13389,7 @@ packages: dev: false file:projects/arm-compute-1.tgz: - resolution: {integrity: sha512-EyDbvSVJQdN5mTBE5SKq7vViQGeeRzLUvSrKTxV/oPldTQyvDWq64aTY86heyGwDFYh/kujsVsuwGSmCiIGDbA==, tarball: file:projects/arm-compute-1.tgz} + resolution: {integrity: sha512-4WuA5JVJ3vs5hma1nm1REXjWEjD1j6vN2ykcwbYtnOZH5PwJnS7eA7DUMO55OQQM2+cLt1YmcS1BUlx92rrWtg==, tarball: file:projects/arm-compute-1.tgz} name: '@rush-temp/arm-compute-1' version: 0.0.0 dependencies: @@ -13419,7 +13417,7 @@ packages: dev: false file:projects/arm-compute-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-Fl5Ukj0vZwymyY9tvWq9FgtW21B4WswQiC6RBYHkqhhtMQqk+acpH0umORt0cAXxpXxHkC5CqsgrnUUvifZn0Q==, tarball: file:projects/arm-compute-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-mQ46C/5e5xrK5m/O42ei8zv63zCZPFdBrk81sR+6exk1uGJOA5hks6RBOwQqg1sA6a/yAI2qVpo2xMJKI+CZJA==, 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: @@ -13445,7 +13443,7 @@ packages: dev: false file:projects/arm-compute.tgz: - resolution: {integrity: sha512-nsICGTtVCQa9BhX6tqHpMMGiZLqQB+kYMiz74ruTw/rUzVvFoYIMBupoQrJW5ogQ7TltHkbBgvJQNuHoeWOpXA==, tarball: file:projects/arm-compute.tgz} + resolution: {integrity: sha512-3Hd7irUdOomCcq/NBcEtZ8W5Zs8bVTdyJRdHEQ8AtaWeeTDXmb53L23rv7FdO45wdCRcSV3Bj3hDUTmzyyu4cA==, tarball: file:projects/arm-compute.tgz} name: '@rush-temp/arm-compute' version: 0.0.0 dependencies: @@ -13562,7 +13560,7 @@ packages: dev: false file:projects/arm-confidentialledger.tgz: - resolution: {integrity: sha512-F4z+LEXIo8zKzPWj8ahPy3J4KtWnMXCzc2r3IBCuiEjOg63RXdizCGxStC82ZwPQaX7CpmEQizwU4E2mgJrlgA==, tarball: file:projects/arm-confidentialledger.tgz} + resolution: {integrity: sha512-h3gqZFNl1CP8aYBer40iijHXFDQeHilbufSGA0T4VU1zjy8E5czR8sOiU/EuqZflsqE/3cMD5UMktSFIyOfWAg==, tarball: file:projects/arm-confidentialledger.tgz} name: '@rush-temp/arm-confidentialledger' version: 0.0.0 dependencies: @@ -13589,7 +13587,7 @@ packages: dev: false file:projects/arm-confluent.tgz: - resolution: {integrity: sha512-YiupcSp0D4MRfgzc0L+diI2+TMR5E77csdZln1y/oXLxcm3Vra93fFRytsSBIsK7jlHm8iKeueu5UrQlb7CGJA==, tarball: file:projects/arm-confluent.tgz} + resolution: {integrity: sha512-6q2MsXkF5Ji5L1LpZnxa7tnZ3nTPKxz2cMQvtj9MiwEd8vmlIa+TFvz8eOBbXZ5hutkIxyF69drTveiBd9uHcQ==, tarball: file:projects/arm-confluent.tgz} name: '@rush-temp/arm-confluent' version: 0.0.0 dependencies: @@ -13615,7 +13613,7 @@ packages: dev: false file:projects/arm-connectedvmware.tgz: - resolution: {integrity: sha512-qFfLv35xczGvQkzvxibYlmz1tSRIdNitu0K3g9J8OuiteNeelc92DvqfHn7t2j5S+ynbaJdoK1067f0pQbyDhA==, tarball: file:projects/arm-connectedvmware.tgz} + resolution: {integrity: sha512-vhQ7ZhjOJ0BmjhBsyAvkQLyF9VgXGOcW83y+4X2y03VpkYuTF4nh/lREFr87lhx6j9IGAZHVMoLNIzwMiqpMTg==, tarball: file:projects/arm-connectedvmware.tgz} name: '@rush-temp/arm-connectedvmware' version: 0.0.0 dependencies: @@ -13641,7 +13639,7 @@ packages: dev: false file:projects/arm-consumption.tgz: - resolution: {integrity: sha512-aW7DDv2DCKBSUrRVozuNijXGLdvKHFRdejyDbF6g2fu7IS8XGTJr+uHckjE88mK/SPev8GvyYLRJkG8tGk2BHg==, tarball: file:projects/arm-consumption.tgz} + resolution: {integrity: sha512-tzRd+8FzWjcLw/90SE67sVQZcjiu10k3cq1gTNkMJBKGSyMfk5VmUI7tZ3SGSPNDIS04JH3yMpa8B9knLF3Plg==, tarball: file:projects/arm-consumption.tgz} name: '@rush-temp/arm-consumption' version: 0.0.0 dependencies: @@ -13665,7 +13663,7 @@ packages: dev: false file:projects/arm-containerinstance.tgz: - resolution: {integrity: sha512-Ck2Q7qwbsL3JyUaENSyYHLuJ/gT0yTVkVgV8d+Schjrh2Pruic58t5eIDrPq632BmTS5BmJfVfbZ0CO4HzNx7w==, tarball: file:projects/arm-containerinstance.tgz} + resolution: {integrity: sha512-sEInnQ7E1jvHYEL3rKytvF0m7JEn6CTOwoUL76x5KJJg4FSGnn0yYez4y+FmsfviUbY0Fncd6x0O5XxfSctnsw==, tarball: file:projects/arm-containerinstance.tgz} name: '@rush-temp/arm-containerinstance' version: 0.0.0 dependencies: @@ -13727,7 +13725,7 @@ packages: dev: false file:projects/arm-containerregistry.tgz: - resolution: {integrity: sha512-epVfOA1KABr2EAJ9n391wO3JLzjyiWxGHyJB7PrVrYxoySVx1hjEKmD9jPoHV2C4JfvplSwquOo35Q0T5Dbpcg==, tarball: file:projects/arm-containerregistry.tgz} + resolution: {integrity: sha512-MAE9g1OeBcdvTrIMNlzc3QcUD6gN9n9QBkmofKxtO7Eqx89gwmHyJMd2CwNIsAAeln04+Det4EWKLww4M5WGJw==, tarball: file:projects/arm-containerregistry.tgz} name: '@rush-temp/arm-containerregistry' version: 0.0.0 dependencies: @@ -13753,7 +13751,7 @@ packages: dev: false file:projects/arm-containerservice-1.tgz: - resolution: {integrity: sha512-6Xq8ytwCKx1USsp1cTrHKt1RtwAqrMGjIBvEk4Wmjxub/+wLds/4/FRDMqA2la9bXeT9gBM80MBGHolGHgR6DA==, tarball: file:projects/arm-containerservice-1.tgz} + resolution: {integrity: sha512-utGcUU8MbJLw0BBSCqXOAcfogm+NlZkn+iV2CzTCLnifBSaydocD7nnCyjChZMhHXIUs4vIp0cEHAM2dVA+vyw==, tarball: file:projects/arm-containerservice-1.tgz} name: '@rush-temp/arm-containerservice-1' version: 0.0.0 dependencies: @@ -13779,7 +13777,7 @@ packages: dev: false file:projects/arm-containerservice.tgz: - resolution: {integrity: sha512-6z3RtJ85R6t7D/ley262MJs62IheNTR26SfKkVZbX5oYIp6VUeijemEHhih9yjikhinUYzN3YVnT0V0/slqNyQ==, tarball: file:projects/arm-containerservice.tgz} + resolution: {integrity: sha512-sLPyIdVuNXcomUciuzbT8SaouI2o62FklL4Bf88gE8WdfNJkp89eDdAhIF/jpuZ7HgC4nY40uHmIoEeLTg/EXA==, tarball: file:projects/arm-containerservice.tgz} name: '@rush-temp/arm-containerservice' version: 0.0.0 dependencies: @@ -13822,7 +13820,7 @@ packages: dev: false file:projects/arm-containerservicefleet.tgz: - resolution: {integrity: sha512-rpY/sP1bJgk0Z0Wq8dx+oMT7/Y51AekFIk0mwzsRZi+o4kEkKp99ntc9ErVx8k05zHC0pPrQkHUHUslhuFgCXw==, tarball: file:projects/arm-containerservicefleet.tgz} + resolution: {integrity: sha512-jHANTC9AXz6io9RuS0AgGwdsE4J3sQxV5/PjUYNN9cYc9UyoivaoiR8dA7Z/hxZgYWR6oEvbZHTakvIfOdZT7Q==, tarball: file:projects/arm-containerservicefleet.tgz} name: '@rush-temp/arm-containerservicefleet' version: 0.0.0 dependencies: @@ -13848,7 +13846,7 @@ packages: dev: false file:projects/arm-cosmosdb.tgz: - resolution: {integrity: sha512-vPU3/m9btQ1ejwQGJfRkXyONfPZlXXA4qs3Sz/h6bdHJFvkatSxq0dcmdt1Natr7+anbvzX9uz1ttht5lneitA==, tarball: file:projects/arm-cosmosdb.tgz} + resolution: {integrity: sha512-kmqhn/287Woxs/rYzZ4yVqjNwjYXELwiJBAsORmGCTrff1EAKJHrJtLjB7JGDzByRhXu33zfK6u9dxaslnmv6w==, tarball: file:projects/arm-cosmosdb.tgz} name: '@rush-temp/arm-cosmosdb' version: 0.0.0 dependencies: @@ -13875,7 +13873,7 @@ packages: dev: false file:projects/arm-cosmosdbforpostgresql.tgz: - resolution: {integrity: sha512-+hHiJgAVmIepfhjnWGPbgJwiuNwxSnOaUi25bHod+m4joHGhsuDj4Yv3EQAqQSbNCPhwkzR/IaC7SLpwca3cwg==, tarball: file:projects/arm-cosmosdbforpostgresql.tgz} + resolution: {integrity: sha512-r7fByIEZifeiEdgn0a28j1n+vOheKS+GfXEbcdBTCnS3VKcSGN9cG6enTXtPRmGlThxm0rsXWLMPx9GB+aZnJA==, tarball: file:projects/arm-cosmosdbforpostgresql.tgz} name: '@rush-temp/arm-cosmosdbforpostgresql' version: 0.0.0 dependencies: @@ -13901,7 +13899,7 @@ packages: dev: false file:projects/arm-costmanagement.tgz: - resolution: {integrity: sha512-5yyIo4hl7BBDmlyf94LGoaux9TIRQ80eawWDddlyHBMk8UmLVJXbmfbmW/3E03Ygq924+K7i/jE6ajw9BsFzag==, tarball: file:projects/arm-costmanagement.tgz} + resolution: {integrity: sha512-BiFxTCvxO5ReyZodgCjmnhpr1uA4TS7rfUTJO1NXytF/RKVLmRuwB7MDW6lkn4p3/bTodcFKWmT9JwBBPId2UQ==, tarball: file:projects/arm-costmanagement.tgz} name: '@rush-temp/arm-costmanagement' version: 0.0.0 dependencies: @@ -13927,7 +13925,7 @@ packages: dev: false file:projects/arm-customerinsights.tgz: - resolution: {integrity: sha512-bv/6ED6F/iG3Pa4NL9youOSf6G5q8QD9QaRykrcGF1ox6Ax0y/ZIM3Ev3fqFGFPbiLic6MSrjRN5BAMxTE6bpA==, tarball: file:projects/arm-customerinsights.tgz} + resolution: {integrity: sha512-FqmGEE2rR01vOI2w2iOz8kQqN46tOFoaXv//ZFsWIK5KM/n6Dl+Teln32PIl5QvmFZAXYSLEHCvToyV4ShVFoA==, tarball: file:projects/arm-customerinsights.tgz} name: '@rush-temp/arm-customerinsights' version: 0.0.0 dependencies: @@ -13952,7 +13950,7 @@ packages: dev: false file:projects/arm-dashboard.tgz: - resolution: {integrity: sha512-dmz1HYYOvr4ZC5Ysnw37n6kapukUybwKH33yyTHvZabx5eHCE+Hhpz4WiY1ElumJPzuVbC3pniY5EP1zY3gzIg==, tarball: file:projects/arm-dashboard.tgz} + resolution: {integrity: sha512-bPCn9VT5vOjBqDUAmkHcpdAUmoHfypM91W60Sdsx7fjPsB1KHeR+iXkxgaVkj0mf/ASCtXsOBDnJxfzf/2Glpg==, tarball: file:projects/arm-dashboard.tgz} name: '@rush-temp/arm-dashboard' version: 0.0.0 dependencies: @@ -13978,7 +13976,7 @@ packages: dev: false file:projects/arm-databoundaries.tgz: - resolution: {integrity: sha512-CGh5Lnz4WNPC3ht6dpnzFCRPznmXv5HTLLZY3WqxThpsUyKRE8qZpzQuiTPTpCUBZ5/2cLkx1gDp6Tz85lMeDw==, tarball: file:projects/arm-databoundaries.tgz} + resolution: {integrity: sha512-MeXKswuXdfANPbll+wgADKFbptytrEoucE46DUyjJ9WDaRT4x2/u30BIYP9/7XvXXoT/135dIHwoTlV11Rw4EA==, tarball: file:projects/arm-databoundaries.tgz} name: '@rush-temp/arm-databoundaries' version: 0.0.0 dependencies: @@ -14006,7 +14004,7 @@ packages: dev: false file:projects/arm-databox.tgz: - resolution: {integrity: sha512-Oleyq9Q4p4cOYYsJs2IX9IefNVElAuoT4H2goqcEyspaL/uckOF3fxo54P607/eislUZYUB13TaA8NvMJzsNtA==, tarball: file:projects/arm-databox.tgz} + resolution: {integrity: sha512-VWqfwgCL9CdUYaY3zPmTCHlqa4vbRFTohoZVhtr3uXxhDfcLAhOHlDXwlfq82uW8e/ekVIUkDFJFbTeSMhXZOw==, tarball: file:projects/arm-databox.tgz} name: '@rush-temp/arm-databox' version: 0.0.0 dependencies: @@ -14032,7 +14030,7 @@ packages: dev: false file:projects/arm-databoxedge-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-+a0wKHDud7/j/UkTcmCWXALSXIG4d5mIO+Vt2MNKyTZQNjjNb25V/jrIm3tlIYPscrbw0c7s/1CbczqhQ+XCmA==, tarball: file:projects/arm-databoxedge-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-2oh2tcxRY7h79ucTRIimToTooB3PEAEr6RxndWhdptzdfrQpdpXZhxjcD4U1CrNS5qRQyjJTufh1FcaK3iEDfA==, 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: @@ -14058,7 +14056,7 @@ packages: dev: false file:projects/arm-databoxedge.tgz: - resolution: {integrity: sha512-hklsnbImVYbAwHmZ9w33g76eutT4b3br4b+wancIPP3bXV0HsyHDoTpuBKlGWslVhqDj5ADG57Kg8oB0S1/1nA==, tarball: file:projects/arm-databoxedge.tgz} + resolution: {integrity: sha512-eIOCmquEXKm4mUDm9UvO5rJfW197pSF8rwUz/rBrd8dUXi/9btkj8nkmCuFqtaJw1Yf3147VpuD+2nvG9eYL2A==, tarball: file:projects/arm-databoxedge.tgz} name: '@rush-temp/arm-databoxedge' version: 0.0.0 dependencies: @@ -14083,7 +14081,7 @@ packages: dev: false file:projects/arm-databricks.tgz: - resolution: {integrity: sha512-HaKboUqaNNK8l5PkpesNKOSm43yjQKTyBOQgPaAlgBWBcj/km24VUEcq6i5VLAO5kg+4eBH9eKmvfmo97gT0XA==, tarball: file:projects/arm-databricks.tgz} + resolution: {integrity: sha512-7TRsxJAe51LCvUuEp3S5i+Xx3ayJ6d/KtOLMwmAfmC19EcQGUeTuCt2yhdMCJUMFZOF3hqRMK5UuR0GbgHyJkg==, tarball: file:projects/arm-databricks.tgz} name: '@rush-temp/arm-databricks' version: 0.0.0 dependencies: @@ -14109,7 +14107,7 @@ packages: dev: false file:projects/arm-datacatalog.tgz: - resolution: {integrity: sha512-3qVfQgCivUWmCKDUJAqahdetJjol50kQci7GOoee7xcEVGYHpHsOOu5Ny16x8kqInz42DWCKfImFaibuCnGI2g==, tarball: file:projects/arm-datacatalog.tgz} + resolution: {integrity: sha512-ur1aN2W4aMvmtszY1VIoEYW4o7a+MuaZY+xu7Dhhx4Y9qE3F2aCGuquzW4ZRC0IwCW48mFPlx1Xl0lPu2l/99w==, tarball: file:projects/arm-datacatalog.tgz} name: '@rush-temp/arm-datacatalog' version: 0.0.0 dependencies: @@ -14134,7 +14132,7 @@ packages: dev: false file:projects/arm-datadog.tgz: - resolution: {integrity: sha512-7wggYtrecQFGat0Sp9AQz4nShdxM2uOz2+OkBhsYWlaE6V6cube9yCoLDoE8qg82EolJW6W+ecycnM/gM8qZ6w==, tarball: file:projects/arm-datadog.tgz} + resolution: {integrity: sha512-DvAsBS5CEwhbvzn1jxO533XjCgtgNrnM0vbxH4Lh6A7UUj1EOkF47Ctrk5kaVXNAFm1RFtMHlkCzOs2aGCH0hQ==, tarball: file:projects/arm-datadog.tgz} name: '@rush-temp/arm-datadog' version: 0.0.0 dependencies: @@ -14160,7 +14158,7 @@ packages: dev: false file:projects/arm-datafactory.tgz: - resolution: {integrity: sha512-HyPMuF1T6YwYrc0t4+wvw5Qkx9PBCdQb60do339v1auVP6a6Z8alTShtKme26j92YB1YJiUP180hmpv731zBJA==, tarball: file:projects/arm-datafactory.tgz} + resolution: {integrity: sha512-zHvoqoMyH8FfrToITub+Gvt76bKa79yFXoFPY0bgWugzkG5uCME/JS27V0jDcfZeAna2UwWS664Z00D3ubMMiQ==, tarball: file:projects/arm-datafactory.tgz} name: '@rush-temp/arm-datafactory' version: 0.0.0 dependencies: @@ -14186,7 +14184,7 @@ packages: dev: false file:projects/arm-datalake-analytics.tgz: - resolution: {integrity: sha512-YTRWL+hpnRnL9tOYpQS3onkAP97XVwRCT6IzckUdb3mBGaYKPhfWFuf1LCdMBbis5yAxZuYFa9XjvuLnwBCZpA==, tarball: file:projects/arm-datalake-analytics.tgz} + resolution: {integrity: sha512-hnsz3nfHLwPyi2P7YtnFSXN6Tln1Ngguvl+XvK5mMnDsbCXSVwYmgOmBh73GwN+jCI/qdr6G/99iMqnZBhXkHQ==, tarball: file:projects/arm-datalake-analytics.tgz} name: '@rush-temp/arm-datalake-analytics' version: 0.0.0 dependencies: @@ -14211,7 +14209,7 @@ packages: dev: false file:projects/arm-datamigration.tgz: - resolution: {integrity: sha512-Vhhso6gS3a9+f+wT1DZlpbkl5pNZBKaEkMDwTeNi4X6jeN4YjAP7aBdRLw2Wh6+gjxqHidWNefzBvEJ4XaXBeQ==, tarball: file:projects/arm-datamigration.tgz} + resolution: {integrity: sha512-HdvIXRBzAT+xlkUNCJDF1DOg5us+jceIuFxDmJzL4AKAf+A5+FcMcFh50a5udXewiOpKa6BVgNQD+Jjgurzokg==, tarball: file:projects/arm-datamigration.tgz} name: '@rush-temp/arm-datamigration' version: 0.0.0 dependencies: @@ -14236,7 +14234,7 @@ packages: dev: false file:projects/arm-dataprotection.tgz: - resolution: {integrity: sha512-kzJLG2wRufykSFrLgGX25aIgN7yeqBHLd+06xIK7s/XuCsEnw150GC7ZB5/cDfefDfrXFhBW9MsG5AaDgNxpRQ==, tarball: file:projects/arm-dataprotection.tgz} + resolution: {integrity: sha512-aaL4a9X4t8IGUX1WRnrple+K1lkdfqQ1wolOBv/YTXIoJx7vpfuUunkPS+zfv6NlzRB+ug8AGquHK6UHBWbeeg==, tarball: file:projects/arm-dataprotection.tgz} name: '@rush-temp/arm-dataprotection' version: 0.0.0 dependencies: @@ -14263,7 +14261,7 @@ packages: dev: false file:projects/arm-defendereasm.tgz: - resolution: {integrity: sha512-EtUFPyiaTbRLUGng8f1udWzoTDL/pgircC4G69d2/+La2fM2k81SxdMZed3Hw8EXUDGLmKyEklNhJtfbvUvlGg==, tarball: file:projects/arm-defendereasm.tgz} + resolution: {integrity: sha512-P9n4xlIfobW7FlALFrPocM2w9zI1XGWgvCuambu894eqpqsBtvN2vaF3VWzg/shH3PnKjSLuDKFt+3MUXCRYGg==, tarball: file:projects/arm-defendereasm.tgz} name: '@rush-temp/arm-defendereasm' version: 0.0.0 dependencies: @@ -14289,7 +14287,7 @@ packages: dev: false file:projects/arm-deploymentmanager.tgz: - resolution: {integrity: sha512-cWbeTdxB59tylz84zzFp//lZqEuTcBmCmw5TS++yAh4aWf8drqcr8KkATIeu7wSOhpQ9Kn/ucPjSEuOst1Yteg==, tarball: file:projects/arm-deploymentmanager.tgz} + resolution: {integrity: sha512-Fi1ZT3FjQAWyl21TN8w6G36e7CKWEwYerxs+IJQyfS4fYPeoBAAj40PE+eR05Revn5TzqAZWbS1beESgyit8bQ==, tarball: file:projects/arm-deploymentmanager.tgz} name: '@rush-temp/arm-deploymentmanager' version: 0.0.0 dependencies: @@ -14314,7 +14312,7 @@ packages: dev: false file:projects/arm-desktopvirtualization.tgz: - resolution: {integrity: sha512-J7dBtyuLBJaRel5iVqy0AKdRHak7eUDhELulS4O2j149YyF1VwzIiXcypImo6LyH0G1/4O+YkDxSXnBBdr8Ikg==, tarball: file:projects/arm-desktopvirtualization.tgz} + resolution: {integrity: sha512-WkSGGVJ7TsaSYvPgPwyP1aTNfSYiosFNzGulvUaDdHJVsyYL6Z1d9VLjJuRg/9PXVpm+UHgh8ozbp7+QzF2egg==, tarball: file:projects/arm-desktopvirtualization.tgz} name: '@rush-temp/arm-desktopvirtualization' version: 0.0.0 dependencies: @@ -14338,7 +14336,7 @@ packages: dev: false file:projects/arm-devcenter.tgz: - resolution: {integrity: sha512-gWVnO/1N0mR6ds03MaOXqdeFgjSg50amFaU7kZs+deLe7A0hF0cTf70fn57ctrHzilwd/NY01t44gUVd4t3r5w==, tarball: file:projects/arm-devcenter.tgz} + resolution: {integrity: sha512-ElA3kJr4VYHRur5LNH+3eqk888Y4eELoHjBZwUp7ny9lmicmT8CSSfYPcA3wtRU+ONfnPzcbtNxvA5OLyg5Jkw==, tarball: file:projects/arm-devcenter.tgz} name: '@rush-temp/arm-devcenter' version: 0.0.0 dependencies: @@ -14365,7 +14363,7 @@ packages: dev: false file:projects/arm-devhub.tgz: - resolution: {integrity: sha512-HOIu/J28QEzt/DEcbP57QDFZdkFprq0ms2d88J2DuxlvTgIIPab4pYCAhy/X0RPizMm72optu5JZoW+kSgwYaw==, tarball: file:projects/arm-devhub.tgz} + resolution: {integrity: sha512-/ulUNfGy6F3WwIwEgke+C964nIphU941jinhAqSlREVan7unJ+HKZ50WhSlFeuPnpLirKLshKnS25DaixwjIzQ==, tarball: file:projects/arm-devhub.tgz} name: '@rush-temp/arm-devhub' version: 0.0.0 dependencies: @@ -14389,7 +14387,7 @@ packages: dev: false file:projects/arm-deviceprovisioningservices.tgz: - resolution: {integrity: sha512-tsOGB1OX7JIPF9MjF8Vpn2daqfjkqo54WPDhzMgeTEGbgK0fS0mbjfbQJfPOdwtFosQnJ64rcDmQ86rNjwq3Cg==, tarball: file:projects/arm-deviceprovisioningservices.tgz} + resolution: {integrity: sha512-riqpYWIE2mxkYZ/N5ElOcLRk552/nOLKjK4zINVet7ujMLBMl5tJXc6tyjOAyeuOJQMEoYAPwdYs2RIJHMaqMA==, tarball: file:projects/arm-deviceprovisioningservices.tgz} name: '@rush-temp/arm-deviceprovisioningservices' version: 0.0.0 dependencies: @@ -14415,7 +14413,7 @@ packages: dev: false file:projects/arm-deviceregistry.tgz: - resolution: {integrity: sha512-z8u3uJYdM7ASzu9gFYGbJENC1xkk1hMCsuZYyVMntIYW21n3yxzJ47mtVgZNsFX3IbVFMaG7RcUzuSZJMG/dDg==, tarball: file:projects/arm-deviceregistry.tgz} + resolution: {integrity: sha512-quCDiEA+ReWg69Cr/mNGXWYJgBUcRiUNEx0297eq9t8js5mUlpBgSkqHoV4D8gp4CqCGDFsicizrO4gooDMPeA==, tarball: file:projects/arm-deviceregistry.tgz} name: '@rush-temp/arm-deviceregistry' version: 0.0.0 dependencies: @@ -14442,7 +14440,7 @@ packages: dev: false file:projects/arm-deviceupdate.tgz: - resolution: {integrity: sha512-VnwlFErT14tR8URqd9JPnge6Y3+N+eT7UsQFxdsjmpGuiERbTYEv8awkqqmdzxRLaeE+Az0PwJqFRIrDwEHpzQ==, tarball: file:projects/arm-deviceupdate.tgz} + resolution: {integrity: sha512-znlJEhy36SrWO0Dknteg6+9FxZwqbtg80pLUl4m8j/y3blmUz5smv/SH7G8tsTf9Q68mT/G/t1XPgcuhoF6XCg==, tarball: file:projects/arm-deviceupdate.tgz} name: '@rush-temp/arm-deviceupdate' version: 0.0.0 dependencies: @@ -14468,7 +14466,7 @@ packages: dev: false file:projects/arm-devopsinfrastructure.tgz: - resolution: {integrity: sha512-BzXD0zjoyGtNCDMjRegLOCYsnEO420+/OteTxfUmSZyFymG0eI1e6KPyQbNN2bY9/KV5VcJ3HVkzOoTu7HG5kw==, tarball: file:projects/arm-devopsinfrastructure.tgz} + resolution: {integrity: sha512-zm1zJUacHQHrVisNSNKl6fuuO1JO3qpkdcnAIv2TeISXJYJFxIkSTyv70j+TIUa0C/c9MWgtNaCNp35yGhnc0g==, tarball: file:projects/arm-devopsinfrastructure.tgz} name: '@rush-temp/arm-devopsinfrastructure' version: 0.0.0 dependencies: @@ -14495,7 +14493,7 @@ packages: dev: false file:projects/arm-devspaces.tgz: - resolution: {integrity: sha512-2rqeUPXzFCoBouHJB4VYtcumzq1zLhld0YO9b8Um3sSWurcjv3fiUWSX7jrGW8yTy7dA7UDbQbTt8FCM6F0Ogg==, tarball: file:projects/arm-devspaces.tgz} + resolution: {integrity: sha512-Q/eqbhZ3g9xqnK3N72VTwD1x1nJWysHmAZgMnwSIz4/rMT/YT+1Bt3ffVTAQHlBo8qkR4V/aEm2Ch0OEGAcCMA==, tarball: file:projects/arm-devspaces.tgz} name: '@rush-temp/arm-devspaces' version: 0.0.0 dependencies: @@ -14520,7 +14518,7 @@ packages: dev: false file:projects/arm-devtestlabs.tgz: - resolution: {integrity: sha512-xeWuGUZiHvK+yiYtApelQcnqa2WoqqxKmFUb45cBB4nXEf/OpiGxWvjJ6zc0Eqp1+DGIWKd2US1q29mJaZUR9g==, tarball: file:projects/arm-devtestlabs.tgz} + resolution: {integrity: sha512-EvNRBBYLBtA89dqEo5Fatkk6tZBn6EzmNIO6WxohGfzR0A9c3Cq9Rtq6TvD3A2wljBORnTXf2vtCqMHtyjDD0g==, tarball: file:projects/arm-devtestlabs.tgz} name: '@rush-temp/arm-devtestlabs' version: 0.0.0 dependencies: @@ -14545,7 +14543,7 @@ packages: dev: false file:projects/arm-digitaltwins.tgz: - resolution: {integrity: sha512-qhLmPt/1/wZeKvrU1PheiwAG7CU5QCvSBmRcXbwJdeeuZrPODjMk9HmE/LTvcgEJKNqr8eAOoLB09cVhLHoM1g==, tarball: file:projects/arm-digitaltwins.tgz} + resolution: {integrity: sha512-BqBVEKbkughTL3GaQaq+X3WHjb5CiGmhWD4S+whVx8BleXQvAejhD0skYioQuRZSkKE6eAHR1qWSrpgcE9rqQg==, tarball: file:projects/arm-digitaltwins.tgz} name: '@rush-temp/arm-digitaltwins' version: 0.0.0 dependencies: @@ -14571,7 +14569,7 @@ packages: dev: false file:projects/arm-dns-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-vn9RV5nrl6trrsK3DKu/JJIhtvfimxmPhV20bWODqRAG/Kbn0/TYq/agBiUYI8M9jXz4r4uQvnk902YxvF90/Q==, tarball: file:projects/arm-dns-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-WXZYZVdS+6GytB3EkjJ6JxYk/uW7hpRsTIFwaxeMhCpdLkUScMCN0Ol2Ks6oqllFCxsxYjXA1IFVlxAbP9bRgA==, 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: @@ -14597,7 +14595,7 @@ packages: dev: false file:projects/arm-dns.tgz: - resolution: {integrity: sha512-VckMdXZK3L+SoQ6hyaDOGeI+ahPL/Dg25YJzDmskjgpbJKFLRPXioJ3jBjfGtjOIGe1gQEyAqM+j7th6JUSEfA==, tarball: file:projects/arm-dns.tgz} + resolution: {integrity: sha512-rkpnVZ4XZBxJd87suiuOua26e4WuHXpJZEVJF7ushwKGJOR1GIQX7x4RNrMncZXoQIPh14IQdL+SGdHVKCAUJQ==, tarball: file:projects/arm-dns.tgz} name: '@rush-temp/arm-dns' version: 0.0.0 dependencies: @@ -14623,7 +14621,7 @@ packages: dev: false file:projects/arm-dnsresolver.tgz: - resolution: {integrity: sha512-ysqzfcxdOJi8Ly9WPK17fa8JSYmOh7euY8xUgARPtB+lzJkRc2s4vXH2hlfjZZUFYclW5t2peQojxxxFrHIHTQ==, tarball: file:projects/arm-dnsresolver.tgz} + resolution: {integrity: sha512-rjjLREmJ5YdK9W8SPOjUPV3wCXr1sgVzMV/1xNR6NR6a9AxK0HAhjJVrx0dSJj/jzRkcpxLTML4ZJhT+UQ1gTA==, tarball: file:projects/arm-dnsresolver.tgz} name: '@rush-temp/arm-dnsresolver' version: 0.0.0 dependencies: @@ -14649,7 +14647,7 @@ packages: dev: false file:projects/arm-domainservices.tgz: - resolution: {integrity: sha512-A3oe1D1kMU0ydwkMBYKWTWsZL7R+6kyEkzNigjmF6ZZHda9bxQUnpQIlCVOtzII0otyzt11BDhm7b+tIVpTyzQ==, tarball: file:projects/arm-domainservices.tgz} + resolution: {integrity: sha512-zy0vOxh4ejLEQ3WC8uyePpPMx90stIG+vN3MgWIct81IDBXWeQagObK8Q1DI73DkT2K8WEN0l15hC5tOzolVgA==, tarball: file:projects/arm-domainservices.tgz} name: '@rush-temp/arm-domainservices' version: 0.0.0 dependencies: @@ -14674,7 +14672,7 @@ packages: dev: false file:projects/arm-dynatrace.tgz: - resolution: {integrity: sha512-LwY7ny4FITo+KcgN/GLZIeLNGbTB7Ck9ueXeaREfb0W86X3KReSEg/Wms2oSr04OFPCzu2Qr6WeQM4/8EdLycQ==, tarball: file:projects/arm-dynatrace.tgz} + resolution: {integrity: sha512-zo7HeAx6Z3iis3m4wNn2fOZEz/zpWJQuZVsIStuMq5cr0jO6hE2sy9bbf6VGQu6Te3MmX2zlIDQ4jZtwgva/+Q==, tarball: file:projects/arm-dynatrace.tgz} name: '@rush-temp/arm-dynatrace' version: 0.0.0 dependencies: @@ -14737,7 +14735,7 @@ packages: dev: false file:projects/arm-education.tgz: - resolution: {integrity: sha512-HC1KSD65EGYMPgscAAm4kKI8yCerZ1tqnGfOyfnxk5m2ePVPX/cuAuw8Ral6HUZAXYzeOJsfPKKL/VLrVBCdPA==, tarball: file:projects/arm-education.tgz} + resolution: {integrity: sha512-88a/609dDLOdicZXsf71q0OsyCgHFls8EeNL8vPsaiDuhbM4AlMvY1jX4WP4tJ2ooCTWrYNrIt20bBYSyV+JTA==, tarball: file:projects/arm-education.tgz} name: '@rush-temp/arm-education' version: 0.0.0 dependencies: @@ -14761,7 +14759,7 @@ packages: dev: false file:projects/arm-elastic.tgz: - resolution: {integrity: sha512-BrvDbvQD/8iDMx33VyzrHSCTKCrH7ibAOv6mlX/+O8uJ3s43V9cSZFu1cGJ3Y36ErQ0Q8Jc46zR1BD/b+G3+SQ==, tarball: file:projects/arm-elastic.tgz} + resolution: {integrity: sha512-vYEgApwAVo0sQii09y2eY+0gNX1oYD/vxZrQnxDlAZtOPjNOs9b/p2zISW1kEdQkYlkr1Dt+QqlRCm9oKDrCHw==, tarball: file:projects/arm-elastic.tgz} name: '@rush-temp/arm-elastic' version: 0.0.0 dependencies: @@ -14787,7 +14785,7 @@ packages: dev: false file:projects/arm-elasticsan.tgz: - resolution: {integrity: sha512-Bbkdnz3Rh4Rez5Pzc8ftLHpqRQcE9R7HCRuk9lxt02NkfBbcNUM7C6RRHQ7hPH959eWvs/O0XHUkBa7/E1XZzw==, tarball: file:projects/arm-elasticsan.tgz} + resolution: {integrity: sha512-XUrItPvl7C8t5EhDxKic5rFcLVlHhAHGqgt2RgZccYj1duwANGcFaLkZ0dvGeKeDKk7wJNH6KCIU8IxHHhZESQ==, tarball: file:projects/arm-elasticsan.tgz} name: '@rush-temp/arm-elasticsan' version: 0.0.0 dependencies: @@ -14813,7 +14811,7 @@ packages: dev: false file:projects/arm-eventgrid.tgz: - resolution: {integrity: sha512-bOPt5dhRosxDLe6MX4X9mQSALITfe/ntzfvud65lg5tyCca97ZSJbv+s4OmpbnaeopeaB0G1N3W14jVkL2cg3g==, tarball: file:projects/arm-eventgrid.tgz} + resolution: {integrity: sha512-gRWNCIfD/9EKzXFYF7nmUth3NdHRHQMOWT0RWrYRixYQvN0bW9O2KJ6Al99WGhu8kwc/pQv88CMTLlE4RmY+Gw==, tarball: file:projects/arm-eventgrid.tgz} name: '@rush-temp/arm-eventgrid' version: 0.0.0 dependencies: @@ -14839,7 +14837,7 @@ packages: dev: false file:projects/arm-eventhub-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-oOJSQwse4hZoLCQY8ZrfTSQKTXWa7jYhT2WlEvM1W4esOaI9LAmhPwTlVykj5QiQos+KNz6mj2EP/vbVtuhyzQ==, tarball: file:projects/arm-eventhub-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-yXy86SvXV0Y6gL+8fLrskodDhslyY+3pNtEUV+8rh6opnEXVt5sIlZGoGGFjrFwxwHEVQkoN5WTl48qeU7gw8w==, 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: @@ -14865,7 +14863,7 @@ packages: dev: false file:projects/arm-eventhub.tgz: - resolution: {integrity: sha512-WTQzTHIIk1s5sbZcmi9mpKL2G8Ux2cd/Yl5OphTfoTtzMR5iTkVrSmYtgI75kUcldeIIHicG3TzoiLHRmKUrww==, tarball: file:projects/arm-eventhub.tgz} + resolution: {integrity: sha512-zcgis5xWMGFSTthGMHcAN0+nE6BngUdeYgebRalPbAffdCrE0dyLzoRNfNhD9nZuHX3Z/ppJahX9N4pidusqNA==, tarball: file:projects/arm-eventhub.tgz} name: '@rush-temp/arm-eventhub' version: 0.0.0 dependencies: @@ -14893,7 +14891,7 @@ packages: dev: false file:projects/arm-extendedlocation.tgz: - resolution: {integrity: sha512-MKsK25VGXrjMGop39herMgQQr/SCKf7YkIMpr8WiurbVdDT+b8KSeIfOHZdKdyQcKsdalA2QWSMW8zma0n2AHw==, tarball: file:projects/arm-extendedlocation.tgz} + resolution: {integrity: sha512-3F9Slv8CGuLibBUsVp8SU4YdvJgqsJ4ohkcoD5eR+64tWh1IohEzIpspFfDFxKTz2HrlI9f/PzMXZeBuaylmVA==, tarball: file:projects/arm-extendedlocation.tgz} name: '@rush-temp/arm-extendedlocation' version: 0.0.0 dependencies: @@ -14956,7 +14954,7 @@ packages: dev: false file:projects/arm-features.tgz: - resolution: {integrity: sha512-aKWOPgVZtK8HLSpDbI1Ku0BTDxxDgwG935PauBmeznH/Nw/pac/EkRpqZVDxHuKBVQSGqntbNOEJPa1JzKALvw==, tarball: file:projects/arm-features.tgz} + resolution: {integrity: sha512-3J1i0VtufpuE01Oe1MgQf7FvVsjtpIof6ivbMIN78m7O2vjBqpIP2XgAFTv9SXUUxcDV6EnYm6aBaDke7PzCnw==, tarball: file:projects/arm-features.tgz} name: '@rush-temp/arm-features' version: 0.0.0 dependencies: @@ -14979,7 +14977,7 @@ packages: dev: false file:projects/arm-fluidrelay.tgz: - resolution: {integrity: sha512-ld9+tzYYZsZc2rJsK4cwlnQDQnbDXnU37XA75fWJYF2763KLphKptJdIcTjkqhyRhB+tNg3QfIiCLph0gPRyqw==, tarball: file:projects/arm-fluidrelay.tgz} + resolution: {integrity: sha512-FWg+mamMfp4ajNuErKosqaqcPr+YUEQHYoecgi6PiD3e3evBUfKZ0ei3KURtIKqSNEUncEKe3WTQgMAGOe4KZA==, tarball: file:projects/arm-fluidrelay.tgz} name: '@rush-temp/arm-fluidrelay' version: 0.0.0 dependencies: @@ -15003,7 +15001,7 @@ packages: dev: false file:projects/arm-frontdoor.tgz: - resolution: {integrity: sha512-c888etqkCX9LaonYiRixkyYL+bs3d7EoBIRuxptrOLSlzxTt0HoSWfF4bfYtNd9WEkPhr0mbzc8OnFYap1yxTw==, tarball: file:projects/arm-frontdoor.tgz} + resolution: {integrity: sha512-Z5FhbslXhH+EVg34AQZZKFhxRA/WoevO2IA1fF+/L//fj11FrUuSa1CDDKPmp+xHuBDfcALCZ3e+pg1smbR2Ew==, tarball: file:projects/arm-frontdoor.tgz} name: '@rush-temp/arm-frontdoor' version: 0.0.0 dependencies: @@ -15029,7 +15027,7 @@ packages: dev: false file:projects/arm-graphservices.tgz: - resolution: {integrity: sha512-c8C87E5zsfnICYh26xa+e73n9a21IB62rmY4cvdAXBem/MMf5xT7/OZFsEbeOLEA+uzqQKH7kXeScqM4tveCBw==, tarball: file:projects/arm-graphservices.tgz} + resolution: {integrity: sha512-f+H6SKPg0tkXroI0QtenN+ayzUNMIsXQD1T05BDyU3xnd88ZZrWuKNO/nIumI2VJTiKXGC4oIa/eRlaXLlpMnQ==, tarball: file:projects/arm-graphservices.tgz} name: '@rush-temp/arm-graphservices' version: 0.0.0 dependencies: @@ -15055,7 +15053,7 @@ packages: dev: false file:projects/arm-guestconfiguration.tgz: - resolution: {integrity: sha512-T0K04rfh+nioShzvtQyV+wiECPVTnxaDMBRTSt8Voe2NoOONl9QNUAGC7agxZRH2HDK/r2KqJLbZtlmjvAVtvA==, tarball: file:projects/arm-guestconfiguration.tgz} + resolution: {integrity: sha512-78pHXlczVccH5+mEB8bDhBsPsmi+7A7gSohvSNoyBw7MPn3N7WGmhd857hyO9Wj5kguISMLZr/eaQSdDFitvFA==, tarball: file:projects/arm-guestconfiguration.tgz} name: '@rush-temp/arm-guestconfiguration' version: 0.0.0 dependencies: @@ -15080,7 +15078,7 @@ packages: dev: false file:projects/arm-hanaonazure.tgz: - resolution: {integrity: sha512-ELBfID/5uG3UfsUGaS6X2vwcaWn/GGKu3jXV+DUodiPq9mi6Z06xmyz7NjjKfDUVzV0PfxVoL87TDH3tHsacuA==, tarball: file:projects/arm-hanaonazure.tgz} + resolution: {integrity: sha512-fj9E9V/EMbUHXFGfDxjq0huS23HUABH9GPCAXr2MvbfTm9w8JZRiUOItobkzNUo/d9KaiZF5xtSVwCfHUoXhPw==, tarball: file:projects/arm-hanaonazure.tgz} name: '@rush-temp/arm-hanaonazure' version: 0.0.0 dependencies: @@ -15105,7 +15103,7 @@ packages: dev: false file:projects/arm-hardwaresecuritymodules.tgz: - resolution: {integrity: sha512-cHEVKirem7eaYedXd3XuHTENJI95EQEM5bQpjTb4KsUXAC/afh09tupuyDXVgSkysIME1Ax+WD8BjVV+35KpXg==, tarball: file:projects/arm-hardwaresecuritymodules.tgz} + resolution: {integrity: sha512-V1b8zbcdRvBsq+r2I/u8qXpYxoeckYtmwXffPbucFXhGoCYU/bceb36+TPshbnlo7lVtDJdAA7PgMSDp7p0blQ==, tarball: file:projects/arm-hardwaresecuritymodules.tgz} name: '@rush-temp/arm-hardwaresecuritymodules' version: 0.0.0 dependencies: @@ -15131,7 +15129,7 @@ packages: dev: false file:projects/arm-hdinsight.tgz: - resolution: {integrity: sha512-Diq19x/nZTHp1tmAsWYHlxsw8vVvoMjVIX6aQUIWwKcA4KCvK9u/MGWHnSR0B7+zol91sZWCQ4SbIyu5IwoKGw==, tarball: file:projects/arm-hdinsight.tgz} + resolution: {integrity: sha512-VOcE7P3czCYwQBzwuNanhWB08NeiOjQ0aPzox0UhB1oom5xohaL63Ba92Vlo5uQQJgcuhMHIXu7E7/1TrfbjUw==, tarball: file:projects/arm-hdinsight.tgz} name: '@rush-temp/arm-hdinsight' version: 0.0.0 dependencies: @@ -15158,7 +15156,7 @@ packages: dev: false file:projects/arm-hdinsightcontainers.tgz: - resolution: {integrity: sha512-AMQ9mHW5v5KQ9ktBxPw9pSXi+0kvioFYimPNvDdQ8nrQmTxBpOWlS9gGcPZg9ZhTB/WOHD1XXFFrPdsjrUR6Sw==, tarball: file:projects/arm-hdinsightcontainers.tgz} + resolution: {integrity: sha512-AA9+lzlxT5caxRabXKUuQ7zwFdFlOJOoiB1/RlSVUroKF9iirSeAiLELq6DpaoGi7HZRbGs9cUJjKzUTIAchvw==, tarball: file:projects/arm-hdinsightcontainers.tgz} name: '@rush-temp/arm-hdinsightcontainers' version: 0.0.0 dependencies: @@ -15184,7 +15182,7 @@ packages: dev: false file:projects/arm-healthbot.tgz: - resolution: {integrity: sha512-LOrjcZgi/yUWrd1qOhuN6dg4Ba7uWOuvYiQnF71Ib3rjX3IvJRcyi5WOXan+mHYveG2EBKnv+V0F5DwJXE6uIw==, tarball: file:projects/arm-healthbot.tgz} + resolution: {integrity: sha512-O2LN29m9874F/od+0d8s5m/g/aoHpbPm9saVlwSOmoZvwJeU7Kt/eYRdcP3EFEf3zgIWfiWPVIgc8jJlp4edMw==, tarball: file:projects/arm-healthbot.tgz} name: '@rush-temp/arm-healthbot' version: 0.0.0 dependencies: @@ -15209,7 +15207,7 @@ packages: dev: false file:projects/arm-healthcareapis.tgz: - resolution: {integrity: sha512-pt2U06O4j84tLOOQkTILEqlr5YSrKRybcdFqlhJ2fbu01iaVGi1XUu53gF0l9XuSf1dkCGgu2ithTkECvCxeng==, tarball: file:projects/arm-healthcareapis.tgz} + resolution: {integrity: sha512-0XRdjxPkw3yi0dAWTmWwEERzg4HKKGE6QE5kM5QoYfz5T/HwN9PaJEI1tmjthKhuWylzT/Sqi2pSlrJaDa5EdA==, tarball: file:projects/arm-healthcareapis.tgz} name: '@rush-temp/arm-healthcareapis' version: 0.0.0 dependencies: @@ -15272,7 +15270,7 @@ packages: dev: false file:projects/arm-hybridcompute.tgz: - resolution: {integrity: sha512-TYcm1kyoPpbERQwPWErPFhB1sz5LqaZF0rY7/ooEDfAZhfj00YPsLlOjkmJDbOocYlsBRAlpGhUTk4GZ9hou9A==, tarball: file:projects/arm-hybridcompute.tgz} + resolution: {integrity: sha512-cEQb5jxuTRbVMsRDFbH2ZMgGF7YC+dBR1Iw3/+Jkwwzy0zUK97csQJaStktVO7m7n8k7uCODOrU7vdRV0qkOgA==, tarball: file:projects/arm-hybridcompute.tgz} name: '@rush-temp/arm-hybridcompute' version: 0.0.0 dependencies: @@ -15298,7 +15296,7 @@ packages: dev: false file:projects/arm-hybridconnectivity.tgz: - resolution: {integrity: sha512-w4CWUv6ig9UINwdy58QBJniGbeWAvnw6/5I/tjxPPYLhG6oYP0PROMEhfVybfvkojkSODdrjQu8JCL8+s9h66A==, tarball: file:projects/arm-hybridconnectivity.tgz} + resolution: {integrity: sha512-+eeEq1U3g4/4BXTYyMsZ7v969HBo5JJO8r+HU6W/HDjnRRt2TJFTqEm7qh7CV4aMPLN/OKXnAmkjSQpIfhlDgA==, tarball: file:projects/arm-hybridconnectivity.tgz} name: '@rush-temp/arm-hybridconnectivity' version: 0.0.0 dependencies: @@ -15322,7 +15320,7 @@ packages: dev: false file:projects/arm-hybridcontainerservice.tgz: - resolution: {integrity: sha512-Du8CMo6tW4pFvRT2xEY2pTnlKiBRWRWnqIwZgcv0KYO1GIHl9RyXkUbuWlNRXROodlaqjRXgoAPWlll5Sph8pw==, tarball: file:projects/arm-hybridcontainerservice.tgz} + resolution: {integrity: sha512-3e5eRzb0E3EGHK/UlFRvyNfPYNtN9feI09Z6fOd8g5rYT/U9ZK9/OAEK86qiUYsw13ffUzESf+cirlYevG+gpw==, tarball: file:projects/arm-hybridcontainerservice.tgz} name: '@rush-temp/arm-hybridcontainerservice' version: 0.0.0 dependencies: @@ -15348,7 +15346,7 @@ packages: dev: false file:projects/arm-hybridkubernetes.tgz: - resolution: {integrity: sha512-c87gVfSUhcKDNwoUp9C3uCzibkv00rkMa59uyYaufn5h4RIKnu4lEUM/WVj2UsuN4Fd4guvpFvPyZawqiQdbNw==, tarball: file:projects/arm-hybridkubernetes.tgz} + resolution: {integrity: sha512-rylWrR4t9uivdZ3KDK4RsX0SLvrO1CFLausWih/XT+KSWORydxfFMNOcX9VAM3rWD7R+yCK9xANLrWEVmet6Lg==, tarball: file:projects/arm-hybridkubernetes.tgz} name: '@rush-temp/arm-hybridkubernetes' version: 0.0.0 dependencies: @@ -15373,7 +15371,7 @@ packages: dev: false file:projects/arm-hybridnetwork.tgz: - resolution: {integrity: sha512-1pG0ef/kn2Yae8YXc3mnR9kiylT8Y8tmA2XZOOoCZcKXcfXkLOb9rdVS7VLOOHBWRtEXkhP8DtxbS7ZyrKHHHw==, tarball: file:projects/arm-hybridnetwork.tgz} + resolution: {integrity: sha512-qyxSkFkMssHKDQXW3W7lWod6MBHbdiHopZTy6AguczaBURA2eU88no1xoFWXzs2wC5Oxkc59LVXk+qSuyL8AXQ==, tarball: file:projects/arm-hybridnetwork.tgz} name: '@rush-temp/arm-hybridnetwork' version: 0.0.0 dependencies: @@ -15399,7 +15397,7 @@ packages: dev: false file:projects/arm-imagebuilder.tgz: - resolution: {integrity: sha512-jLOcvk5DqSHaIMIRff4f4nVa0pIRBQYVrnGe3x5lLcdnxFT9hvzxQpBsxcvzeCo3QaRJWmiVo6hanNhb7o+YCg==, tarball: file:projects/arm-imagebuilder.tgz} + resolution: {integrity: sha512-c7XSTAu4eiKGa8w7gZydqCYKvOxGnBj2qVRzhB15cGQ0IZWS27MYEhwoYe8hq6O+iPF9yregg2l33ASY0vREmw==, tarball: file:projects/arm-imagebuilder.tgz} name: '@rush-temp/arm-imagebuilder' version: 0.0.0 dependencies: @@ -15427,7 +15425,7 @@ packages: dev: false file:projects/arm-informaticadatamanagement.tgz: - resolution: {integrity: sha512-OhyPfix/q4V4zBdU4tXtEuq0e8l+Ez2uc/Qozdt2YgbPMH31k99jO609zJYQklhCR1l/hV7shy99cYNga19K3Q==, tarball: file:projects/arm-informaticadatamanagement.tgz} + resolution: {integrity: sha512-lcWSAf5y5zeosf4IQkPtk+qTs295m+rHavC4RUjsdu/LqksCoyk3fWVSbISH06AkcdfnkqIMiUUKq3GN7g9itA==, tarball: file:projects/arm-informaticadatamanagement.tgz} name: '@rush-temp/arm-informaticadatamanagement' version: 0.0.0 dependencies: @@ -15454,7 +15452,7 @@ packages: dev: false file:projects/arm-iotcentral.tgz: - resolution: {integrity: sha512-NmrMH9PX2eeJLeKXUh+eyO/kZ7zp7KWWyhdW9QLrpL8Xc1a+eu+tj5z7w3FlFI0NDY6KNikQ72Iqfdgsfh8iTw==, tarball: file:projects/arm-iotcentral.tgz} + resolution: {integrity: sha512-Ipeplw+wc6Xu3OvNMbWQjcM3YoQcPHwPwQb4BPZwxn99+rJX55iY4fPAgBH6Eapqf/Ne6OsradyHrGEkaCYGGg==, tarball: file:projects/arm-iotcentral.tgz} name: '@rush-temp/arm-iotcentral' version: 0.0.0 dependencies: @@ -15479,7 +15477,7 @@ packages: dev: false file:projects/arm-iotfirmwaredefense.tgz: - resolution: {integrity: sha512-3NT2fRSJcCHQs7WgyUrruomXTfUwypIZ/0znCQKcEvIj0I6FF+wgOAiLpxhYUrhZXLgrt9oFoqyF4WrksWPPig==, tarball: file:projects/arm-iotfirmwaredefense.tgz} + resolution: {integrity: sha512-nMkxzVE9O3lGQOcxtkiAlDzzIsurguFUCmMIcZD8JmNetg3qBShqHYzP6VH1NOyg9gePepTq/Hqe3diVo2s0YQ==, tarball: file:projects/arm-iotfirmwaredefense.tgz} name: '@rush-temp/arm-iotfirmwaredefense' version: 0.0.0 dependencies: @@ -15503,7 +15501,7 @@ packages: dev: false file:projects/arm-iothub-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-olY1GDr4G8ew48RF9S1aMOc3pN+nZ1Qvq15qCj8l0i8f8i+GMXjzkd7KOSerfzWJLr5gDKS1QJvoZ/j8v+7YKg==, tarball: file:projects/arm-iothub-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-zOGR0KmXqxB2dtPyZ4orbhIuw/s/8j6ONxVc2JmwDiZHVjafdsR+8BSffelXk18w8crFQiVG5HTPkn43CAVWJw==, 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: @@ -15529,7 +15527,7 @@ packages: dev: false file:projects/arm-iothub.tgz: - resolution: {integrity: sha512-/Kv8S/UTIkA8w3R0E8MqppPMQLPwoUlcwfcZMLDkfugmoQAd+6V16fmL+GOJUkg+cwmDSuv6beWKthHhCHgMQw==, tarball: file:projects/arm-iothub.tgz} + resolution: {integrity: sha512-6kiDpHx9E4gVCP0pqGFCqKKVWOpqE1bqs82SGeZ6WYKoqszZzpqoqMNzuBeJp17a9ugeTo9LMaNM5DH4GoW8LA==, tarball: file:projects/arm-iothub.tgz} name: '@rush-temp/arm-iothub' version: 0.0.0 dependencies: @@ -15591,7 +15589,7 @@ packages: dev: false file:projects/arm-keyvault-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-YjR104jAddoNnM/T3JV24M9PmH89SK+H/8Av0Mz5YN+2rJyg2T2vZqWv6YcGSlr1rzWSoEW9nM0yJE+UHu8Zng==, tarball: file:projects/arm-keyvault-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-aBlEXffw5kclfY9WxK62Tt9iBT27qWU8Np4uQss9+FBpApXhVafF3UaLbYMMfLfebWcMhrY91msKMG3/LvB3gg==, 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: @@ -15617,7 +15615,7 @@ packages: dev: false file:projects/arm-keyvault.tgz: - resolution: {integrity: sha512-7cGAQeUpXlj7shUCplhjfEAvg8Bf3WzcsfK1EZ5rRaDLHYg7PHVFbnj8mu3NWWtR0FY75VyFNgAARUGuKJ4H0A==, tarball: file:projects/arm-keyvault.tgz} + resolution: {integrity: sha512-+Zynps5rECLM22IFGDWuOsLks6pDM8ITZ0kWZyZ4Z8o9EGwdKw+RY4cugVqdK5V8sjKOorv79ItDiB7YZHNyHA==, tarball: file:projects/arm-keyvault.tgz} name: '@rush-temp/arm-keyvault' version: 0.0.0 dependencies: @@ -15643,7 +15641,7 @@ packages: dev: false file:projects/arm-kubernetesconfiguration.tgz: - resolution: {integrity: sha512-7B9rvU7RANYbPIdn5m5K6mkL229DCTNUEnl6JlF06ASMScbk8PQU7qLfYq0tUBI+Uz1AZNsYqudDeZaYRzCxxw==, tarball: file:projects/arm-kubernetesconfiguration.tgz} + resolution: {integrity: sha512-FS2Wh1SRGyCAjRiE6MHcYEanZ8xXG765WyfHkdOMHnYlzSspQ4lkP5vU+4qfG7Q9ikSlQGFiWPvyzuCiHj0Eog==, tarball: file:projects/arm-kubernetesconfiguration.tgz} name: '@rush-temp/arm-kubernetesconfiguration' version: 0.0.0 dependencies: @@ -15669,7 +15667,7 @@ packages: dev: false file:projects/arm-kusto.tgz: - resolution: {integrity: sha512-qQj0z0k60jQNlL7qiDBcSbaYPmGOJz7TfbYHR+uzxZMBfWRA3gxbhSaUBonycen4fyCE61Wo/vEH9mHEwzj1eg==, tarball: file:projects/arm-kusto.tgz} + resolution: {integrity: sha512-jcM3EDNIBAzt4bO02zloThcTs3V8ktbe554KveHVegDJZWeKHsFk9D4VoOZ8mgNHjHCHJky28VIFsi3kagudew==, tarball: file:projects/arm-kusto.tgz} name: '@rush-temp/arm-kusto' version: 0.0.0 dependencies: @@ -15695,7 +15693,7 @@ packages: dev: false file:projects/arm-labservices.tgz: - resolution: {integrity: sha512-vlRfD9M+aS0Q/ZqGYCqfEHQw4/WK/QhtfkTFpw9TioLUe0opRBnmK8QkVn28HcegvCkKKqM69kVfb/ZoLifn4g==, tarball: file:projects/arm-labservices.tgz} + resolution: {integrity: sha512-l0jJUPsuGEbeHN4YIxOOXaJU3TpNj7/KwJ9a63P5cUk88qb5JMWNfHPjM/8ar5E2azJBXjV1tiX+8ZhuT6GoAQ==, tarball: file:projects/arm-labservices.tgz} name: '@rush-temp/arm-labservices' version: 0.0.0 dependencies: @@ -15721,7 +15719,7 @@ packages: dev: false file:projects/arm-largeinstance.tgz: - resolution: {integrity: sha512-vlJ+Hv66fok19UONazhReAI+47AVLeheFtr0FX0MLbkAhIhiW9WKTKyV1W6QI4TZ/Y10ToFdaFXjMGxomnq1Rw==, tarball: file:projects/arm-largeinstance.tgz} + resolution: {integrity: sha512-VmCOH04+RD765M3jzOpVV1+nBw21wx0LAvPS/bFinlNmH+smiyoszdWvITpAwOqTte2BkxKCbY47o/icfnrJFQ==, tarball: file:projects/arm-largeinstance.tgz} name: '@rush-temp/arm-largeinstance' version: 0.0.0 dependencies: @@ -15747,7 +15745,7 @@ packages: dev: false file:projects/arm-links.tgz: - resolution: {integrity: sha512-DsKwwkkAvoMS1t71+NZ+/aRU6luVZeWiGrLuiWKaPddn080d7AzjKQByrscPl55qZoAWpjlKjsY4kSre/NgYaw==, tarball: file:projects/arm-links.tgz} + resolution: {integrity: sha512-SAq28hNVWMbzQrmTGq3U/hOZchN+hIwEBtni/sA28q0ALmrFgU5KDH99BobXFWUE6JjyI0oPbDWlh2rdYWtJew==, tarball: file:projects/arm-links.tgz} name: '@rush-temp/arm-links' version: 0.0.0 dependencies: @@ -15770,7 +15768,7 @@ packages: dev: false file:projects/arm-loadtesting.tgz: - resolution: {integrity: sha512-1Y/vWXUuiJzli4hQlmG6nRDZu61YOOKEaRZlRKhoeN8sh8jVNAG3YHCe9lA2uFWRwQCrYLFkClj/+d/RtVBvPA==, tarball: file:projects/arm-loadtesting.tgz} + resolution: {integrity: sha512-fcPMZrU0Zu26MlVx45rQ2mfR1utJ71u43X8LmU++Z8Cicv8WCwS7X46WC3IQL3N5f6MlYz1CFWwLojRDoRjWlg==, tarball: file:projects/arm-loadtesting.tgz} name: '@rush-temp/arm-loadtesting' version: 0.0.0 dependencies: @@ -15795,7 +15793,7 @@ packages: dev: false file:projects/arm-locks-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-wngN5cR6mkJs8hUsd/hoM8S54W5EklCFnmFCWJtFzJbgOb7usKl7c/w7HHqeSen0WJ+Suc17jecGC8L/9dpTkQ==, tarball: file:projects/arm-locks-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-ov7jV8EVQhTpSSSKCF2SuE9Ek+f2rCwpPYtdOGyM+aftpgK2dRrxdef0FCv2jpOZNq+TQkR5SuBzZ83+PxVArA==, 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: @@ -15819,7 +15817,7 @@ packages: dev: false file:projects/arm-locks.tgz: - resolution: {integrity: sha512-mjvtX2lIW4wenv+oOiqCxetbEpN2/z8m5bFSf52a8CzBmsX79uwMA5vPuQxfnvoxTRl7i5AbhtiA3+3xUwGfTA==, tarball: file:projects/arm-locks.tgz} + resolution: {integrity: sha512-q+L9dE7eKW0UvBYki3NfKeIZRENydUPJD0NU03PRG1FSoPZ5juMvxj5rFsdMl3bJPBrIMsb/OUcDKN/gqWTtMw==, tarball: file:projects/arm-locks.tgz} name: '@rush-temp/arm-locks' version: 0.0.0 dependencies: @@ -15842,7 +15840,7 @@ packages: dev: false file:projects/arm-logic.tgz: - resolution: {integrity: sha512-fx6k0HV+QEJ5Z9EFY1H1jx7qexgdmY9ZQthZYaHT3yX/mS8GOOtT2M97E26L+y4C2TBk0i17KS7LKURocdcqXw==, tarball: file:projects/arm-logic.tgz} + resolution: {integrity: sha512-JkxWZFdZuO8GdyIQQARI1uWDimln+6vXYONAnJjg9x5MBrocbX+ORjveQFOJNaQU9zMPA/iNAAGIsE8McjftiQ==, tarball: file:projects/arm-logic.tgz} name: '@rush-temp/arm-logic' version: 0.0.0 dependencies: @@ -15868,7 +15866,7 @@ packages: dev: false file:projects/arm-machinelearning.tgz: - resolution: {integrity: sha512-gu9V9apfW6/Xwfb1x+WD6Do5+CAUPb2jGFIsOYswol/vF8U/+8UU1OcuhExVe2ez/SjpbaYLt+F4rWACdAChcw==, tarball: file:projects/arm-machinelearning.tgz} + resolution: {integrity: sha512-6ZGcr0ApAgwzwZoQDcWv8DDPdvsYxwlALT4s3H+EcwrzVsI8XyJzyDnY3Kbtj7z3oEE9yKTJLWk5Tig5h36mHw==, tarball: file:projects/arm-machinelearning.tgz} name: '@rush-temp/arm-machinelearning' version: 0.0.0 dependencies: @@ -15895,7 +15893,7 @@ packages: dev: false file:projects/arm-machinelearningcompute.tgz: - resolution: {integrity: sha512-Z1jXs0Z/INnQOBxLxOSLkWviLLFjQzG0Znn4MiK5mYQLsbZDVRyMcqGLBj2pO4XdF4rVkOH/XFehifFoiBPl8A==, tarball: file:projects/arm-machinelearningcompute.tgz} + resolution: {integrity: sha512-EfSCXmaM9LziwJVfjgs4DLho75tJEA5AIDYbJwdrYQL4NrN2a/5kj3cy8Bx5t2EbuZYrXKiHBc5mP8zRWzhwWA==, tarball: file:projects/arm-machinelearningcompute.tgz} name: '@rush-temp/arm-machinelearningcompute' version: 0.0.0 dependencies: @@ -15920,7 +15918,7 @@ packages: dev: false file:projects/arm-machinelearningexperimentation.tgz: - resolution: {integrity: sha512-15Fwgzv29bhj6/qXiGvrzHFa0RAZNNhB2tU/Sp0SoEgnJNCavCyVSphufy3uBZD4jgXJL/cbXZNjpSmxzv/X6A==, tarball: file:projects/arm-machinelearningexperimentation.tgz} + resolution: {integrity: sha512-23bGM9zPrRiDrvWOnJ37i9X7sfbbYDS3Rxo39GMj3rPaCNbDdhnlB2uvGkkC+tQfkFtGP6ICjL1Hc+S6vlIr7g==, tarball: file:projects/arm-machinelearningexperimentation.tgz} name: '@rush-temp/arm-machinelearningexperimentation' version: 0.0.0 dependencies: @@ -15944,7 +15942,7 @@ packages: dev: false file:projects/arm-maintenance.tgz: - resolution: {integrity: sha512-KSXIj14/jJdbDPL6xrX71iSRWLNMol/eqLs3d7E/zYOVbVaOeiTQCctxSI7pJq9rj3dQ82aTL32OhtfZ3Fh4Ug==, tarball: file:projects/arm-maintenance.tgz} + resolution: {integrity: sha512-pvU9dT2fvcPhQnOa4q0N+CcIF/vVWPq0sDa6ivky/yX4sdLOg/B5/btEjY7WaLI9pe1QKcF9SLpMtsxrtDTF8w==, tarball: file:projects/arm-maintenance.tgz} name: '@rush-temp/arm-maintenance' version: 0.0.0 dependencies: @@ -15969,7 +15967,7 @@ packages: dev: false file:projects/arm-managedapplications.tgz: - resolution: {integrity: sha512-lZMdXCChZEWAYea/pViY84P47BprwYOO/CwAqt9eUw6QatmkCYzxjtu1uh6shyqEoslcJNt6jE/dW/jlxV6kQQ==, tarball: file:projects/arm-managedapplications.tgz} + resolution: {integrity: sha512-pDeCYpGJzH+jAH8EM7kXMkzrs1KVugDG14fMz/ttq7DoSPFNwjaRt50hFCm551LfpjaQVFBRJmMEhfZUUjEzaA==, tarball: file:projects/arm-managedapplications.tgz} name: '@rush-temp/arm-managedapplications' version: 0.0.0 dependencies: @@ -15995,7 +15993,7 @@ packages: dev: false file:projects/arm-managednetworkfabric.tgz: - resolution: {integrity: sha512-zy1pZalFntDsTEtElku/Xq48o9jwg+9yMO8MKgz1B7Ia1r2N1TezfsRsZejVT0jbDEJ1vWFtvHPs2mmLOu6zvQ==, tarball: file:projects/arm-managednetworkfabric.tgz} + resolution: {integrity: sha512-PYHQewLqXgozun0nTPvyu+1QrE2DNF30YzRDubzNXdDpEKB/1wcBePxyauExdYiy23sL7HeNwW3xdESrQKhgmQ==, tarball: file:projects/arm-managednetworkfabric.tgz} name: '@rush-temp/arm-managednetworkfabric' version: 0.0.0 dependencies: @@ -16021,7 +16019,7 @@ packages: dev: false file:projects/arm-managementgroups.tgz: - resolution: {integrity: sha512-SCn6STza3y96YcIjaoVaUUf4nuGwRJ4eIkoE0blqyaSlZ1RyPUaP0vhZKFtygyXtcbxmqPM2aiCoY0xl59KREw==, tarball: file:projects/arm-managementgroups.tgz} + resolution: {integrity: sha512-1dEm0DZ92JyajDfCaFJniOYZSnbPTAdBZ0bq1SeXwuU0UcPnsyZ/OVEvRho0Uem3FyFTb9xAIYuH4KQFVT2QdA==, tarball: file:projects/arm-managementgroups.tgz} name: '@rush-temp/arm-managementgroups' version: 0.0.0 dependencies: @@ -16046,7 +16044,7 @@ packages: dev: false file:projects/arm-managementpartner.tgz: - resolution: {integrity: sha512-3YhQtP9FMEHnN05UPZY1gAJRlNxr/7FVkCS412BHxY/8y96QsVG0Bs3iKDkBpu140mUlqXEX0+NGx0VCwuWM7w==, tarball: file:projects/arm-managementpartner.tgz} + resolution: {integrity: sha512-m3FMYXmIPy4Cz6EBTXmympSlxdiu6OgUY5RJRsqGQ8y7QZTJAeHajyHz0ShsXnLS6uYAZsCxvOrMgBimUWb4yQ==, tarball: file:projects/arm-managementpartner.tgz} name: '@rush-temp/arm-managementpartner' version: 0.0.0 dependencies: @@ -16070,7 +16068,7 @@ packages: dev: false file:projects/arm-maps.tgz: - resolution: {integrity: sha512-+RqX+ovhWXW30qEUt89xbBocmZsdJcus8qNOlPyYCsLCTqy+SJRdvAfA13oWz5l6Mo7/mmptTeIxvOQgVkKhiw==, tarball: file:projects/arm-maps.tgz} + resolution: {integrity: sha512-tni5MLBgobo5Dt+PwWmVLPyLvDz/YL9ww22k9NkvP4SY/wENoRgw+fnHwRZ4u45qqr39qgPPmgcQzNdDwBfAXA==, tarball: file:projects/arm-maps.tgz} name: '@rush-temp/arm-maps' version: 0.0.0 dependencies: @@ -16094,7 +16092,7 @@ packages: dev: false file:projects/arm-mariadb.tgz: - resolution: {integrity: sha512-dLDa2IkoH2rzdJ1vXxLzXIbktOtD3V72zRHCi88qQwx/TLJlzIzGkfBwCrNa3QbMw2jPol6pd+NmeW7UimhKPg==, tarball: file:projects/arm-mariadb.tgz} + resolution: {integrity: sha512-xBJeIwvP+jIr9e7wbrn0jW46ktD/b+R/qjBIfOfBuBpA6O02oFWoxILbh21dQ53aMKwexZw2F96jz1Vdn7fhwg==, tarball: file:projects/arm-mariadb.tgz} name: '@rush-temp/arm-mariadb' version: 0.0.0 dependencies: @@ -16119,7 +16117,7 @@ packages: dev: false file:projects/arm-marketplaceordering.tgz: - resolution: {integrity: sha512-fabsC8twhK4rKVe4sJSfqECRFk66NfdZpWRatlBjrw/DXcselS5g37rCQw3TIs3YdPh0zpAdlvYdO9/JNGR4zw==, tarball: file:projects/arm-marketplaceordering.tgz} + resolution: {integrity: sha512-QGrdndJ5NxBYCIT40+JA+hDmi2jyxQNfjrapsN8YtYUDdOO/R+s+mZyfCDGu78OaGGcC8qSdBipjzVtTCMFdew==, tarball: file:projects/arm-marketplaceordering.tgz} name: '@rush-temp/arm-marketplaceordering' version: 0.0.0 dependencies: @@ -16143,7 +16141,7 @@ packages: dev: false file:projects/arm-mediaservices.tgz: - resolution: {integrity: sha512-FlrKqkxmnpksywwZ91ccNfRFyc/m0OhColbYU0MCjLzYgSpZM0T/aJxqGG56GoAh0x8H+MYI3Rpl6A3s74vuOQ==, tarball: file:projects/arm-mediaservices.tgz} + resolution: {integrity: sha512-aCQzzQZ2UN9OdZvd8m3Muu1eVFXnhbXDvER2nlCUMprCrp3c80GG1/5lx5qiGaf9IYlAIlo/e0bHxsqvMSnYpQ==, tarball: file:projects/arm-mediaservices.tgz} name: '@rush-temp/arm-mediaservices' version: 0.0.0 dependencies: @@ -16169,7 +16167,7 @@ packages: dev: false file:projects/arm-migrate.tgz: - resolution: {integrity: sha512-zLwrkihe9UB81LustbD4KZpXrNKOXQehMeTxeQM7ig08I6+mek4Bs7qGMV/1vFKnXbbUJuI2kpzDx3C0HF/9JQ==, tarball: file:projects/arm-migrate.tgz} + resolution: {integrity: sha512-nUXB1Y+/g4aD4wc24sQe4EpTs62beuZY+gHYGzqwdeERk0oPQJIin3rPbFbSmMSnpd/Pexx+5ysNCWsKw4uXMA==, tarball: file:projects/arm-migrate.tgz} name: '@rush-temp/arm-migrate' version: 0.0.0 dependencies: @@ -16193,7 +16191,7 @@ packages: dev: false file:projects/arm-migrationdiscoverysap.tgz: - resolution: {integrity: sha512-44YwbrJV2co8vAKLzygJvDHQdL/lvJ/5h7aRCNNIWPvnJH684ORkOdIfjJqRDxraLxO7kK79RvJheXv/n5bFkQ==, tarball: file:projects/arm-migrationdiscoverysap.tgz} + resolution: {integrity: sha512-QOR3en+Notm7gZn6jNamnf3gha6OYl0AxJOWSLQxdJMs/QF5H4Lvl9qe2Rc6jSQtxwojZ7aVO2s7NowK8Y6aRg==, tarball: file:projects/arm-migrationdiscoverysap.tgz} name: '@rush-temp/arm-migrationdiscoverysap' version: 0.0.0 dependencies: @@ -16219,7 +16217,7 @@ packages: dev: false file:projects/arm-mixedreality.tgz: - resolution: {integrity: sha512-47+02mXOHNZQEDBXGMcICtaMcFFNCiE+5GIuqKaH3kBJ7ka6bhlaOCYgdSEaaS/rhqwZ3RW2ItuawqjE+H55Kw==, tarball: file:projects/arm-mixedreality.tgz} + resolution: {integrity: sha512-zSTuGUQZyjaHGYudS/m7I+l8wfnXDWaxh4p9lw7q9IMYXJRfLrSb7VfPxtCnl3A79kTLC8IgCfWxbyqAzNuvXg==, tarball: file:projects/arm-mixedreality.tgz} name: '@rush-temp/arm-mixedreality' version: 0.0.0 dependencies: @@ -16242,7 +16240,7 @@ packages: dev: false file:projects/arm-mobilenetwork.tgz: - resolution: {integrity: sha512-7kHoHGHHusys0ftW/77nqGAmRLW9a4LShzxWt96y5Q59JpU/3q04wzx2KffU0mYpdPAOGbsRvENtY54Ve+p1IQ==, tarball: file:projects/arm-mobilenetwork.tgz} + resolution: {integrity: sha512-Rz51zXFR4E0WXeAAAun1rvZdcaF9NwPH0hDUprHo0D0zents07Vxf5i3KBhbSCD7IG4DAc9sfmchggOUu+r6IA==, tarball: file:projects/arm-mobilenetwork.tgz} name: '@rush-temp/arm-mobilenetwork' version: 0.0.0 dependencies: @@ -16306,7 +16304,7 @@ packages: dev: false file:projects/arm-monitor-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-6/hR610ju/blOatwn2IMrCLBxwPTyQh0EkyyE24GZEmzw5FOBM8BlYGB1ZLh4so+8gGAJfcGqMsqDCvLZatSyQ==, tarball: file:projects/arm-monitor-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-2u3n9oV3RTNdkSnOWEf6i/xnBNdlsuy2V6q60YlIu56GXUjmyBkmWuOJ6YI0K7xagWlauYyXlULYtf/awX2eWw==, 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: @@ -16330,7 +16328,7 @@ packages: dev: false file:projects/arm-monitor.tgz: - resolution: {integrity: sha512-KcDgKSU1UxUmvkQdJz3cwMoVWS+/jjdpG4CjBhoSRSAWG6k6YJOmHzlH2CnJFl8DKIi/YY6Xfrp1Lv/4hm2Rlg==, tarball: file:projects/arm-monitor.tgz} + resolution: {integrity: sha512-+5tR0/8imeG87xGD8pU1peJPQTPEgNuwJry5owZ5p8AtQ3bqkWV6MiUQkUWfC7p4Tc/gpgDTxbSOCxFzDt1GeA==, tarball: file:projects/arm-monitor.tgz} name: '@rush-temp/arm-monitor' version: 0.0.0 dependencies: @@ -16356,7 +16354,7 @@ packages: dev: false file:projects/arm-msi.tgz: - resolution: {integrity: sha512-MOF/3cCw43qG2a/+zvOyYEJvoOe3VKjQBGP7rNxXH5Rdo2zGxl7aCWDW/FGLiDTa0dq4dbGXiTtSH9z9XQ1Atg==, tarball: file:projects/arm-msi.tgz} + resolution: {integrity: sha512-qlbY+DddnbljL9sOMygqjVNhhZ5gksINQ/T3jBKJG1X0kx5XORTV2u85Wq8px0NaEHSuYERny95YqU5H/Dty4Q==, tarball: file:projects/arm-msi.tgz} name: '@rush-temp/arm-msi' version: 0.0.0 dependencies: @@ -16380,7 +16378,7 @@ packages: dev: false file:projects/arm-mysql-flexible.tgz: - resolution: {integrity: sha512-lOxNrhJfXCM3++j7wa418cyFhWKgaaGOwMo4PavsFn7Ds8DRyowNqUfsGEp6ylE64dGop/mXGqlQrFNOp4eczQ==, tarball: file:projects/arm-mysql-flexible.tgz} + resolution: {integrity: sha512-GBqZruxKHdDLtzTowyuiVYplLL9YuQ+CsXTDE/mAAsskSPMmBnxSRLPF/RvCz8zF06gpTS25wH7wbU8ALPjzDQ==, tarball: file:projects/arm-mysql-flexible.tgz} name: '@rush-temp/arm-mysql-flexible' version: 0.0.0 dependencies: @@ -16407,7 +16405,7 @@ packages: dev: false file:projects/arm-mysql.tgz: - resolution: {integrity: sha512-lu5lmiQ+vU2eHZHe7LyanrP9U7VCaT0T88PwIvfMbVzQdqlyjXnAlWcYZa5F2zQC9XwYb20Lcze39u5PDsCvwg==, tarball: file:projects/arm-mysql.tgz} + resolution: {integrity: sha512-+KXHTwyGlRxmH128Ew2VCxgMAO5j9ayyXGb/W44J26BwGgBxHeE9m4YDUPu/2yiBUVgu587W4nExQwRMJD8ZrA==, tarball: file:projects/arm-mysql.tgz} name: '@rush-temp/arm-mysql' version: 0.0.0 dependencies: @@ -16432,7 +16430,7 @@ packages: dev: false file:projects/arm-netapp.tgz: - resolution: {integrity: sha512-08cvMQ76IkP6GTDvgOJeFdIZ0LCSxX/1gbXsKYcoaW+kpQUXhHuJ/ppdS83m2jysV2n3HfrX1sE8tUdO1J2nxA==, tarball: file:projects/arm-netapp.tgz} + resolution: {integrity: sha512-ZgmkgKXumSmqN4RkiGQWfrsSjrunk1SMTODplFCa9YKgZSwORLukIWlEODmSQNOLjAjRpZu+IQQOhpN/fuJoCg==, tarball: file:projects/arm-netapp.tgz} name: '@rush-temp/arm-netapp' version: 0.0.0 dependencies: @@ -16458,7 +16456,7 @@ packages: dev: false file:projects/arm-network-1.tgz: - resolution: {integrity: sha512-uTZHs81K1xEdqHMoQw4mSIhPD9zYRtUwIYCrZaT6J5IgRQWWDlgmk7OtaRSOX1Vq/0DMeCtQeMf7TNzYojUc2Q==, tarball: file:projects/arm-network-1.tgz} + resolution: {integrity: sha512-7L6R1v4XvFy+9xMsI5CDBDzm24pl28G0PL7pwX6yqCVsQD79uAQ6Iwq8rx6lq4hDlLulPs87ypkEIkAhv4XzBg==, tarball: file:projects/arm-network-1.tgz} name: '@rush-temp/arm-network-1' version: 0.0.0 dependencies: @@ -16485,7 +16483,7 @@ packages: dev: false file:projects/arm-network-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-7HarC2c1fhy3e1Fgr7L+SpKi/HXJLL3XK0WleoVaB0ky8AmClQGG9d785tKeTeRpfp1BBM+aTFdsY0X9/1uUGA==, tarball: file:projects/arm-network-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-ejN+oaQApqfnqbYU3obP7EcLOYVLXN0LefVtbfPVJHMS7ocY6GV2bH9gvZDwPAWZYDAJixkpvTGDno3f9N75LQ==, 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: @@ -16511,7 +16509,7 @@ packages: dev: false file:projects/arm-network.tgz: - resolution: {integrity: sha512-37DfzntzsvmsS721w1y028T3WNYvtlyLN5sNNVv3LIvqYquosTKfRorAdVV9W42jJ0EtQvYwur5HVRQmxvgn6A==, tarball: file:projects/arm-network.tgz} + resolution: {integrity: sha512-HAbH+qL9GhfjLjle/Jf0NFuI9VvGPOehZgKn6VayITQ/BsjzWdWsMyYmSHjfqMLM/nInvOJL86H7PhEHIStvtg==, tarball: file:projects/arm-network.tgz} name: '@rush-temp/arm-network' version: 0.0.0 dependencies: @@ -16554,7 +16552,7 @@ packages: dev: false file:projects/arm-networkanalytics.tgz: - resolution: {integrity: sha512-YjZaLi99tCI7+x1kjMVH7O5j6OT7sNnHp8e2rvHYGhJf6BEmvMTvA52n/2UOA5ynuzzGWxk+wzeGkERrnmqP6w==, tarball: file:projects/arm-networkanalytics.tgz} + resolution: {integrity: sha512-OKKweI38TlBADpU+9V9TOlq4W6n7/TsyCY1oA7pmAETjf34rmgpNZNUWDA5UjQyB1T2xJ0lTDeLbWWfVg8Shrw==, tarball: file:projects/arm-networkanalytics.tgz} name: '@rush-temp/arm-networkanalytics' version: 0.0.0 dependencies: @@ -16580,7 +16578,7 @@ packages: dev: false file:projects/arm-networkcloud.tgz: - resolution: {integrity: sha512-ftRAllp+maZWGq8e8ItoqmRBDSqyl4HhOMc2f8fH+duARdNMW6SdVhPEs89USZhId3RLh58zQsgNRvnyoNbMgw==, tarball: file:projects/arm-networkcloud.tgz} + resolution: {integrity: sha512-l7r7fIkcr84goO2xsF+iKLPcmZnVzQ3nYu8QvlOcaDYvhKUkdjI5Lf4hw1VNhfQNwukxb3WQy73OmbARaeNs0Q==, tarball: file:projects/arm-networkcloud.tgz} name: '@rush-temp/arm-networkcloud' version: 0.0.0 dependencies: @@ -16606,7 +16604,7 @@ packages: dev: false file:projects/arm-networkfunction.tgz: - resolution: {integrity: sha512-T9ndrcplnW2M4WNnpFNavqql4n5l7Dnq7vTERzDFcEDMu2u/HZPDipDmTUy/dojcO+848FxuljKggWvl7ki6iw==, tarball: file:projects/arm-networkfunction.tgz} + resolution: {integrity: sha512-BQ9kxerRKj3FNWxg+B1x9nbJBXoEYdekkRqqUV7D6x1DBl8cpVSh3tUbcykQU6J0eOorD8VyH3HwWlh0G6ozJw==, tarball: file:projects/arm-networkfunction.tgz} name: '@rush-temp/arm-networkfunction' version: 0.0.0 dependencies: @@ -16631,7 +16629,7 @@ packages: dev: false file:projects/arm-newrelicobservability.tgz: - resolution: {integrity: sha512-BF7/XBAYs/2wjgOEDGxTcGffZ8sSDU+QU3ooJ/AP3Z0fgDVrW9CGLKnozkkaFUSRqTaowEdELXYe+EPdLLthtw==, tarball: file:projects/arm-newrelicobservability.tgz} + resolution: {integrity: sha512-mA5zNhZCz0gnT/Ep1ovJxpMnvbZUz6Fl/upbIVrNj/9zXS+vgHYOggKRDNJR6roaxGkjyYgIAyiYzQV/to8Etw==, tarball: file:projects/arm-newrelicobservability.tgz} name: '@rush-temp/arm-newrelicobservability' version: 0.0.0 dependencies: @@ -16657,7 +16655,7 @@ packages: dev: false file:projects/arm-nginx.tgz: - resolution: {integrity: sha512-Jbvjfz6S0V0aBfNVlZfmKKdUWuD7yOo/IyPVrvrAdh4HyrJqkSeqNdwkfv0eTXdXuWaMeoD4UfiDE2PQLLA3yw==, tarball: file:projects/arm-nginx.tgz} + resolution: {integrity: sha512-sZ+t3R3unS1hs4aWT+OfMo3ak9fdZY/rWTJV6V6SUbEYWuPE4ykT922OI8ub7cWSMR3hJTHrhDSK4zPJyxP60Q==, tarball: file:projects/arm-nginx.tgz} name: '@rush-temp/arm-nginx' version: 0.0.0 dependencies: @@ -16683,7 +16681,7 @@ packages: dev: false file:projects/arm-notificationhubs.tgz: - resolution: {integrity: sha512-x71k338WbPv5GBkbkXFWH03DKbB9B/HGs10RAxJ+WaTL1UFPXqjd+Ube9nS7qcajiy8uDMIh9R5NZDO3SccwGQ==, tarball: file:projects/arm-notificationhubs.tgz} + resolution: {integrity: sha512-EJXA8jzvtkMVkbJxhkQRPZDKOkxxYULGyMUawk7UCml37l8h7AgLLdwvlTYUUb823elP/+V4KH4E/Ztaee6Ecg==, tarball: file:projects/arm-notificationhubs.tgz} name: '@rush-temp/arm-notificationhubs' version: 0.0.0 dependencies: @@ -16709,7 +16707,7 @@ packages: dev: false file:projects/arm-oep.tgz: - resolution: {integrity: sha512-TBJ9H29Qn9RSlTMSvkJn9bxHmEUbHxv1fuPTI3xlGZYtLHWOeTcCmqOebaJ4aIZo48Qdle/wxA0H6WbEXcoL1g==, tarball: file:projects/arm-oep.tgz} + resolution: {integrity: sha512-pEl5Y8rl+5pHH+0mDJoQX1fsvB44immOomylMrLKK93QMRsAiAmVaLqFU+FRXy3E34+z2N0rxxkwmCmNrUJH7Q==, tarball: file:projects/arm-oep.tgz} name: '@rush-temp/arm-oep' version: 0.0.0 dependencies: @@ -16734,7 +16732,7 @@ packages: dev: false file:projects/arm-operationalinsights.tgz: - resolution: {integrity: sha512-kRyKbpeO3iUp2B126QmGl89U7USC1w4sHH6I+IqDII1PVBVL740yt761FKPMCj0CEPtSQyEkIL7DQd0nCJjaFQ==, tarball: file:projects/arm-operationalinsights.tgz} + resolution: {integrity: sha512-kKSowCUKdrNIdfm3F56a/ZSfG/ke2A+hWweqbp/CTHmLz2/uTthRjA+aHWIhHrZLwpUeGFOCRI7GlW5kChR4sg==, tarball: file:projects/arm-operationalinsights.tgz} name: '@rush-temp/arm-operationalinsights' version: 0.0.0 dependencies: @@ -16760,7 +16758,7 @@ packages: dev: false file:projects/arm-operations.tgz: - resolution: {integrity: sha512-p0WxHmGG0rCq+U5XQrK1p2LnDm7RBsvzCSZOby3ysOIpjXZKKTx7m5XBIIFQtOYKBdG+qBuo6Wtz91whwbDclg==, tarball: file:projects/arm-operations.tgz} + resolution: {integrity: sha512-4cpdsuqoAK0IXgtyR4YFICP8+LuElqJVJHei3VqMdlKcHc8+uP6bRJvuBaAsPT14Qlre9fXtRPkPZSG82gPI+A==, tarball: file:projects/arm-operations.tgz} name: '@rush-temp/arm-operations' version: 0.0.0 dependencies: @@ -16785,7 +16783,7 @@ packages: dev: false file:projects/arm-oracledatabase.tgz: - resolution: {integrity: sha512-qdjBPMM8LletmYSJRG0Ir60tTBVfPnpPQmCgoB5zqbILc9RcGZ1C+lD0nnT/G2+B/60WoSvS5M84j1VPwhkJzA==, tarball: file:projects/arm-oracledatabase.tgz} + resolution: {integrity: sha512-qv15hluStPcbZGPBeFN1XQ2pdHiy/tZ6PV9G0k+G56vzKJBLKmBEN6dzv87AeDwR2LeKMYEKL9bPJ//BXJxD5A==, tarball: file:projects/arm-oracledatabase.tgz} name: '@rush-temp/arm-oracledatabase' version: 0.0.0 dependencies: @@ -16812,7 +16810,7 @@ packages: dev: false file:projects/arm-orbital.tgz: - resolution: {integrity: sha512-7ioo3afp+9e5bJVuvxbWzqrqCuSZnas5pnHaoZgIa92Sn4XO1bFsMV2gR/obof3zAvLfEgaZLwf8o9yVf+YneQ==, tarball: file:projects/arm-orbital.tgz} + resolution: {integrity: sha512-tboXLpBmieO2RYZvAZoSqPLgr+hmVl5pqEBvwm3O+1pDHmczsto4jcipae8ydoX4YziFKk0JRYIlw+1tLMJ+ag==, tarball: file:projects/arm-orbital.tgz} name: '@rush-temp/arm-orbital' version: 0.0.0 dependencies: @@ -16838,7 +16836,7 @@ packages: dev: false file:projects/arm-paloaltonetworksngfw.tgz: - resolution: {integrity: sha512-hhc2zZUs8u22q3xyQc3VoFLVVAyT2414pJgk5jTI3Eh8rdlMfPGOVLzJRNHWNulqccaPcoFOSzd2UtfRGokfIA==, tarball: file:projects/arm-paloaltonetworksngfw.tgz} + resolution: {integrity: sha512-nWLWCqIg28ZeGyO1G64LACMo2eXnRvGskzQDHSAcLnDqZePcCI+fmuk3Vp3jcRes0QctZCzBhV0Op8fDxeiiQA==, tarball: file:projects/arm-paloaltonetworksngfw.tgz} name: '@rush-temp/arm-paloaltonetworksngfw' version: 0.0.0 dependencies: @@ -16864,7 +16862,7 @@ packages: dev: false file:projects/arm-peering.tgz: - resolution: {integrity: sha512-6JMOwHLN3MNlt/C1CBiJFGONtiJjSroZtNphy5QfMPyi7nlQ/WQADARUn2EIbEAUE87criksaqh5FXXMtbLUIQ==, tarball: file:projects/arm-peering.tgz} + resolution: {integrity: sha512-MGiRC8woIysJikeK0l7Qs/jWe42TJh2sT4DS0kcccu/EjAf0+TTJZ2p9me6YUX7OMBY4YdYAkDRq5kAktHUHvQ==, tarball: file:projects/arm-peering.tgz} name: '@rush-temp/arm-peering' version: 0.0.0 dependencies: @@ -16887,7 +16885,7 @@ packages: dev: false file:projects/arm-playwrighttesting.tgz: - resolution: {integrity: sha512-AALM/too+Z6vTpQ9Y71ZVdFHENggAv1WGpRj2Zh3GgTjj+TuBkkObxoEW8s88rJICe30ycGPG7IzmW1VKV4G1Q==, tarball: file:projects/arm-playwrighttesting.tgz} + resolution: {integrity: sha512-bhBwI3jHqE9BwNM6Zz2sOoVSJ/myKFL8ug90fuybXDO5+kO8gL9Y738UIk7qwsrZbfVPBhh8Zp2KrSdenZx9NQ==, tarball: file:projects/arm-playwrighttesting.tgz} name: '@rush-temp/arm-playwrighttesting' version: 0.0.0 dependencies: @@ -16913,7 +16911,7 @@ packages: dev: false file:projects/arm-policy-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-9HbWrJaBWjiz/1TAbiF7EXopcTN0hwRBPYPJ/y8aBO8IqV2vDPLzc4dEQo7/TeBwgAMZIHI5SAqdtEFylMw5/Q==, tarball: file:projects/arm-policy-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-+eC3OppT80BczhsPtHHmb9QKyBGnOhRMrwcGqWHI/SPixnOkdVgoEaDlNCXCSaJaN7Or41ATo/vrgOBQ5VuZtA==, 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: @@ -16937,7 +16935,7 @@ packages: dev: false file:projects/arm-policy.tgz: - resolution: {integrity: sha512-G+ESH6olwI1mLtUUDGgh468hdL1XTAmwx7ah6IvzMgVvxhzjbqh3FR8qLGuInIN+FB1HPVzYabalK8KU8V3rjg==, tarball: file:projects/arm-policy.tgz} + resolution: {integrity: sha512-qH/2Y8CeI6TdGJUhtzZ87XKF2uqD3E+TuMMPCdShRQdLF8hispL8PwPsbHGGSCHNcdxaRUsPyxZX9yM8BXQD3Q==, tarball: file:projects/arm-policy.tgz} name: '@rush-temp/arm-policy' version: 0.0.0 dependencies: @@ -16961,7 +16959,7 @@ packages: dev: false file:projects/arm-policyinsights.tgz: - resolution: {integrity: sha512-TfQ0NG8dJVrwYQQC7pBlWth/vb9dSQqnuh2ZB2HuxhmdWojZ2TbQ8rnsNlJfq2u2X6B1B83b0npgU7FSb72Yqg==, tarball: file:projects/arm-policyinsights.tgz} + resolution: {integrity: sha512-5jEGtro8qZc1iyghTtBwd6j5lyqvIwm7UfRrjJ92+H2gqMws5IjWkYdoBnY0L82hIRZT+c/QwaFFm4jzRI0XLA==, tarball: file:projects/arm-policyinsights.tgz} name: '@rush-temp/arm-policyinsights' version: 0.0.0 dependencies: @@ -16987,7 +16985,7 @@ packages: dev: false file:projects/arm-portal.tgz: - resolution: {integrity: sha512-eODda9085aOTDSCzDexkK6ThngPl3nENbUzB3Uy+XFS3fGXIKlwc5WocMCyKYwFjLqvF9PldaP/FTEQ3CcmqIA==, tarball: file:projects/arm-portal.tgz} + resolution: {integrity: sha512-N5ngufPYiSaOxRZ91y/DQbsL4PPHDsNDrsjkFVM+J+pHvwZUf/k6zs5uoeD45INzUD3cLhXOIFfc4xQnH3I0iQ==, tarball: file:projects/arm-portal.tgz} name: '@rush-temp/arm-portal' version: 0.0.0 dependencies: @@ -17011,7 +17009,7 @@ packages: dev: false file:projects/arm-postgresql-flexible.tgz: - resolution: {integrity: sha512-TiQo/gPVAKyNyJ3p3XpG46uxEYoZIwWFgEWJmN49mRevUvwyHUXGI3f8lRMtfG1OPbi3VgRDdHR4BsDQXkdA1A==, tarball: file:projects/arm-postgresql-flexible.tgz} + resolution: {integrity: sha512-TCBQbpVe33farAIxoBcDw2Tku0cCvH32o+Qb56xP+6cVbxnvS5Es/uWa6XSXIjVSjHTnj69iezQL9zkForNG6w==, tarball: file:projects/arm-postgresql-flexible.tgz} name: '@rush-temp/arm-postgresql-flexible' version: 0.0.0 dependencies: @@ -17037,7 +17035,7 @@ packages: dev: false file:projects/arm-postgresql.tgz: - resolution: {integrity: sha512-UH18lT3Lshi/EnKPMuyOwAN+D2rAE8wTz+QaNMXTs7B29UKVJjNkHyXQJbPTxPhuz8azR/4c9iWzJIvCcLlV4w==, tarball: file:projects/arm-postgresql.tgz} + resolution: {integrity: sha512-Lxg50ITwCpeG1j+mk75u3IiqnjtQyVd2+tEnlw0/Im6xGhugC8lN0PhbTl7g5shC7ZcB8Y5JaDen2clix1b1jQ==, tarball: file:projects/arm-postgresql.tgz} name: '@rush-temp/arm-postgresql' version: 0.0.0 dependencies: @@ -17062,7 +17060,7 @@ packages: dev: false file:projects/arm-powerbidedicated.tgz: - resolution: {integrity: sha512-88Nfx6F1Vei3BmK8KGcvUPp9WiC5eyAfNnVCuXguSj3dLXdDuIkZIPT15yDkQuTpr4+OQ5LC7wYCtT19lpYDNA==, tarball: file:projects/arm-powerbidedicated.tgz} + resolution: {integrity: sha512-WMe4GNQqlKuZZEn1lx7+EleazTIBsR1mS3eKleYHFRwSvW6MxoBKdOYf2K9+jUlICHkhc5pmuSu2fB4MSYSEPQ==, tarball: file:projects/arm-powerbidedicated.tgz} name: '@rush-temp/arm-powerbidedicated' version: 0.0.0 dependencies: @@ -17088,7 +17086,7 @@ packages: dev: false file:projects/arm-powerbiembedded.tgz: - resolution: {integrity: sha512-HJrhZGib/3hIAjSZaQPxk5db0RNKcwk5Y0stEQGVu7L0zijPCkqYATImmAOBOSkoah2Wis2oPeq7A8wquSVwBQ==, tarball: file:projects/arm-powerbiembedded.tgz} + resolution: {integrity: sha512-8IOcvcLooZQdaT4p/ogxGcyZ0tuVkPqbvg6YU69DfSQ2GbADsZhf8uagTG/GgDiWW3e2U4wNRVJAMM4WGeTDgQ==, tarball: file:projects/arm-powerbiembedded.tgz} name: '@rush-temp/arm-powerbiembedded' version: 0.0.0 dependencies: @@ -17113,7 +17111,7 @@ packages: dev: false file:projects/arm-privatedns.tgz: - resolution: {integrity: sha512-wOPaAR++biUqMQeUHMTPgK6jBrFGrRUIS4qmQ9EVA/RgZhOiwrBTfrU0bAXyZelApFtT9aLMahweHS4Tij57Kg==, tarball: file:projects/arm-privatedns.tgz} + resolution: {integrity: sha512-8lOK/U8iOPeqfIjnDQP/CoEXglw/qG8mTkGzuP7ZPPNPHIjqQNL39xmcN8GnSu8J07Af8UypAmsqGWqudoez4w==, tarball: file:projects/arm-privatedns.tgz} name: '@rush-temp/arm-privatedns' version: 0.0.0 dependencies: @@ -17139,7 +17137,7 @@ packages: dev: false file:projects/arm-purview.tgz: - resolution: {integrity: sha512-S5LAORqEylHZ+7kIVKxzWMXipxDwn5ZVI3KlGX1AJnJv2rLF/GDrndyLBnZg7jUfJ7xcmT6bkA+v4Gcqgjtmmw==, tarball: file:projects/arm-purview.tgz} + resolution: {integrity: sha512-f1xLdHbzRMp4M1L5BHOVPfLsXdhxwadW7EklRNW8e0EeIelJzYVLZnBEjZAT2KPTxXm2kF+DzDZ7eL3cRPcvLA==, tarball: file:projects/arm-purview.tgz} name: '@rush-temp/arm-purview' version: 0.0.0 dependencies: @@ -17164,7 +17162,7 @@ packages: dev: false file:projects/arm-quantum.tgz: - resolution: {integrity: sha512-1cz4eXPCsY8F1t/YpFrovAvSOjqrHnJNOqy3oT3rhRgLcGrj7wfOoMZshfHp5MjZSyTguHezg5rjc2+wSdW6Pw==, tarball: file:projects/arm-quantum.tgz} + resolution: {integrity: sha512-7yd0nkPcawC0B+tXU0lg/RwBDWxAte+ALCBWJR2E35iM56AcFJRpiMB97lAVzklU7OvBZ47gIKdeGOE6JEpy4A==, tarball: file:projects/arm-quantum.tgz} name: '@rush-temp/arm-quantum' version: 0.0.0 dependencies: @@ -17190,7 +17188,7 @@ packages: dev: false file:projects/arm-qumulo.tgz: - resolution: {integrity: sha512-GZoa6ghbFP2nNWabJXBFQT3l/XskJRT+oRAzEmgVhNlP4oivjfDIo8owKFlq8AVMQNRgGn7COxExpBj7XZaDAw==, tarball: file:projects/arm-qumulo.tgz} + resolution: {integrity: sha512-gkQBQdvUZvcpuBS+1Zu6LG9FqyENUb2A6s6x0AkRuT7b1lLUUPuZ0TfDDgAcZhiVuKcxjMyFoFlJlnBoZ03DDA==, tarball: file:projects/arm-qumulo.tgz} name: '@rush-temp/arm-qumulo' version: 0.0.0 dependencies: @@ -17217,7 +17215,7 @@ packages: dev: false file:projects/arm-quota.tgz: - resolution: {integrity: sha512-/Bz/+SVZKNPV2DExUe/JAfBGZPwoQEjl7ezPZh243Dniy8KcfXdJ2dgEUUpWdlGNOintp7hOwUzLKabG7HZ7Lg==, tarball: file:projects/arm-quota.tgz} + resolution: {integrity: sha512-rlHMGNJI6N6fWUpjueTqbJeCE0o/xvRBSap3ud+KF60WuB91RfXJpwr4QMUokX6L2LPGi06JqfMW3He6njLzew==, tarball: file:projects/arm-quota.tgz} name: '@rush-temp/arm-quota' version: 0.0.0 dependencies: @@ -17243,7 +17241,7 @@ packages: dev: false file:projects/arm-recoveryservices-siterecovery.tgz: - resolution: {integrity: sha512-+9ePKGWtTl5f+QkiclFysuoTW1FMul1PjIeJGuIdDhlXQJh/K4itNLXzEFe4eGxIopZBksJTpNxPkXBqIFBd5Q==, tarball: file:projects/arm-recoveryservices-siterecovery.tgz} + resolution: {integrity: sha512-4iW72DoOxavk74kVk2PCtoP1U0GzT1FlLoj0k1NOSA6e0xzaKg3SSkh5C/yMgMjlT7sfMBaCVhTOqX/5sKvXHQ==, tarball: file:projects/arm-recoveryservices-siterecovery.tgz} name: '@rush-temp/arm-recoveryservices-siterecovery' version: 0.0.0 dependencies: @@ -17269,7 +17267,7 @@ packages: dev: false file:projects/arm-recoveryservices.tgz: - resolution: {integrity: sha512-ytwagzX6cdmSQ2X7vA3vVvbuYX6hAx38estxcCIi+kcjZCUqlnRsveUSNJkBswsLUvuxFKJpCtKkuh57zPlDiQ==, tarball: file:projects/arm-recoveryservices.tgz} + resolution: {integrity: sha512-lgLpygYuQNiWsXLb0oIP1YCn5/wsTRbxUq6iN7JkQGzd29OyxFnAeWiNYHBbyW+QAhMdKEJGpfkXrJV/jgCEpg==, tarball: file:projects/arm-recoveryservices.tgz} name: '@rush-temp/arm-recoveryservices' version: 0.0.0 dependencies: @@ -17296,7 +17294,7 @@ packages: dev: false file:projects/arm-recoveryservicesbackup.tgz: - resolution: {integrity: sha512-jrZ82m0kTFrWF8MKv8vk14J++t+c8nf6COpPTeK9O4PGSjUXuBpW3BmWXxKHtrI4+PLPIPnhlPPA6GJoKEhsjw==, tarball: file:projects/arm-recoveryservicesbackup.tgz} + resolution: {integrity: sha512-gW0f2oYvsf0kaL+RT1NcdGM2nfBZ/FzIL4xboPh017jp2aVe5qUnnF3tnZc8aasyYg/H9bhmNj9O35LOGnfHFw==, tarball: file:projects/arm-recoveryservicesbackup.tgz} name: '@rush-temp/arm-recoveryservicesbackup' version: 0.0.0 dependencies: @@ -17324,7 +17322,7 @@ packages: dev: false file:projects/arm-recoveryservicesdatareplication.tgz: - resolution: {integrity: sha512-mznExEhBlPkd2RyRx4wfAoij4+exg+xyFJHAl1BC7Y3IqmMUfRbt+7dtHLVJp1OdxSBMufkow/stDDOgWuat0g==, tarball: file:projects/arm-recoveryservicesdatareplication.tgz} + resolution: {integrity: sha512-lG+WGs2eLnEsIqRLHdwaihdLu83oNVJUgtkaqIO5aKekXqAPSObNnmHhoyQGoWztDIqeec3Vjk12jr0FChQMlQ==, tarball: file:projects/arm-recoveryservicesdatareplication.tgz} name: '@rush-temp/arm-recoveryservicesdatareplication' version: 0.0.0 dependencies: @@ -17350,7 +17348,7 @@ packages: dev: false file:projects/arm-redhatopenshift.tgz: - resolution: {integrity: sha512-v7fm5mHLttlfWwoGfT6irFFTfmpRVvM6bLzGaYN165mKzCyJzj4UGsRqflUqoO3hP0tuMERgJoJiYiub0yBwHA==, tarball: file:projects/arm-redhatopenshift.tgz} + resolution: {integrity: sha512-K6hkhLbZXBF2SANkgCVMS6/f6GEqGUl6kGU92k9USJ63AUfNtoZu2dyI+u556VnHYNF0SBYMrosJIyOFC0vyOA==, tarball: file:projects/arm-redhatopenshift.tgz} name: '@rush-temp/arm-redhatopenshift' version: 0.0.0 dependencies: @@ -17377,7 +17375,7 @@ packages: dev: false file:projects/arm-rediscache.tgz: - resolution: {integrity: sha512-sirn9Z2lgEDZrc2JRcrAmU+t8aadVkdZI3qjUDTtq49zQuE+KxlG0yd2yrUboC/514EIvVYqM5taUaqpjz5xgQ==, tarball: file:projects/arm-rediscache.tgz} + resolution: {integrity: sha512-q2BqBmysFUw8yUK7gtk6mXoLczZ88MXDFSqvbxjX/USnp7PFnhdQfXSxW4/Bd+fRBRoyiDDtPXv3FMeFottffg==, tarball: file:projects/arm-rediscache.tgz} name: '@rush-temp/arm-rediscache' version: 0.0.0 dependencies: @@ -17405,7 +17403,7 @@ packages: dev: false file:projects/arm-redisenterprisecache.tgz: - resolution: {integrity: sha512-XQg3k+pXcdTZHf+UM+5KbLnCwMb7C7+pYLeG3g6lrzasJWAeCKmnSy8T0/DXlmKpt77UWmox9/0/UhGneM7EcQ==, tarball: file:projects/arm-redisenterprisecache.tgz} + resolution: {integrity: sha512-zKdrPHasAWMJefAzX0hwQDoypjoDBoLQius14b7zfdqWqAws/nZl8V7eNAbD0x0Eip1rOtNFWwBKjSptui13Cg==, tarball: file:projects/arm-redisenterprisecache.tgz} name: '@rush-temp/arm-redisenterprisecache' version: 0.0.0 dependencies: @@ -17432,7 +17430,7 @@ packages: dev: false file:projects/arm-relay.tgz: - resolution: {integrity: sha512-nY3NqCGhW+ZEq031sPToj1LTZ1a05KpaxtARjQDixMTdKZldeHRACsdMbXE/cMNHZrqw6XMa2HhlU80SXl2aqA==, tarball: file:projects/arm-relay.tgz} + resolution: {integrity: sha512-zjdoKVlP06pBh7maxYaa0+NaM3AD+X4dip47R9H6hkb7YImNBC5AoBhKzW7UJBvb489QnSWumyJhI/GNEaIJ6Q==, tarball: file:projects/arm-relay.tgz} name: '@rush-temp/arm-relay' version: 0.0.0 dependencies: @@ -17458,7 +17456,7 @@ packages: dev: false file:projects/arm-reservations.tgz: - resolution: {integrity: sha512-9NndEqejs6aT0RqxeNR+nmoSUuAM55vQjqATEsU9by50RPhQowFS2Px92rLFQwXhD4SS2T46IE4/bqDxjGcsqg==, tarball: file:projects/arm-reservations.tgz} + resolution: {integrity: sha512-IEQQoTn399joXXR+ZFzMsCJHfv61mMQ+Zgldh+qUHLJAs3amgfzDt4POa0A4qsxvvvXLLfvEnayuMWhbtvRKNA==, tarball: file:projects/arm-reservations.tgz} name: '@rush-temp/arm-reservations' version: 0.0.0 dependencies: @@ -17484,7 +17482,7 @@ packages: dev: false file:projects/arm-resourceconnector.tgz: - resolution: {integrity: sha512-WvRBVd55BTyxySByj4m01OICyG2QuDHlXG+vb6h6x6aJhBfdKDfVIpkgc3mN7ZlLEf4/Y+M0y+LE6m2fHycNNQ==, tarball: file:projects/arm-resourceconnector.tgz} + resolution: {integrity: sha512-gVNTkNakQYeSiFWvcThCmRH9Fwmxd1LGBdGl134vMs4kHxmz7DDR7ZVC+jgJuadi7vedvTxsXTaYfSOnE3OL0w==, tarball: file:projects/arm-resourceconnector.tgz} name: '@rush-temp/arm-resourceconnector' version: 0.0.0 dependencies: @@ -17510,7 +17508,7 @@ packages: dev: false file:projects/arm-resourcegraph.tgz: - resolution: {integrity: sha512-HEISrhVsPIGMZa6HF7h1sSM9hue3A3umpzEx5SXJ9qEvZtojnSrR5/HnQ3z8y4SXptvXTq0TncU/zrE+hmOdLA==, tarball: file:projects/arm-resourcegraph.tgz} + resolution: {integrity: sha512-95DLp75+EmKmDIJ5fxydbpyIEcw4HUaD7z6RqO9P+I5YITh6KDuf3cgLJOembdxEh0+29TZljRebHFvFeLRAsQ==, tarball: file:projects/arm-resourcegraph.tgz} name: '@rush-temp/arm-resourcegraph' version: 0.0.0 dependencies: @@ -17533,7 +17531,7 @@ packages: dev: false file:projects/arm-resourcehealth.tgz: - resolution: {integrity: sha512-wlQx4upNlk7GsjQ/OMiXtiHkzmhV2EDqWmi8i10OUOFzuLHVHO1In44LkAB3QgOwJw5jiHiGof/0ZD750BmFGg==, tarball: file:projects/arm-resourcehealth.tgz} + resolution: {integrity: sha512-A44WC+/iAuB5Rkomr+TXqOPlKz4Lg2izwkvV40/zXYnvmr0TcI4o/1USxHCE3S4r3ii+ERL7vDAaNSDQxsnLxw==, tarball: file:projects/arm-resourcehealth.tgz} name: '@rush-temp/arm-resourcehealth' version: 0.0.0 dependencies: @@ -17557,7 +17555,7 @@ packages: dev: false file:projects/arm-resourcemover.tgz: - resolution: {integrity: sha512-tocJoKmOBn6CzYE+WbQv/xW2OjI48VYIrwBfPR8No6n8p/rW+3J5iOvUAA9uyx/USpbb1KHN7eZZmFabildxfA==, tarball: file:projects/arm-resourcemover.tgz} + resolution: {integrity: sha512-mCWMnix6GWzh0UWHO1kw4rxYQ6BWnOl8/gmHELpYjwnYYQPTF3OD33LqMBXkFL3mB+0yCaR+WDn8DySvj+9cWw==, tarball: file:projects/arm-resourcemover.tgz} name: '@rush-temp/arm-resourcemover' version: 0.0.0 dependencies: @@ -17583,7 +17581,7 @@ packages: dev: false file:projects/arm-resources-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-hElYtiiQ1WA7I/0SLcupfvlXI47QyWBcqN7+vgY6wLQOEzgl9DCucUHoTB3hdBLlzAfpyAK6UFXuY5h8eUXwDA==, tarball: file:projects/arm-resources-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-GsvM5ubTDTD9W5Y+9PH77+4CtQQdBRiMKKhm7bxguxhDM01Q6kO9PcJ4oMs7oUrUfZJoUoDmP6886WuD17Nmvg==, 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: @@ -17609,7 +17607,7 @@ packages: dev: false file:projects/arm-resources-subscriptions.tgz: - resolution: {integrity: sha512-wLsdRQ8i8ZrHuig40puyPrAuSN0LhwFiJJAfUH/J0p4gQjGZ2GAlQZnh5QwLt7z/jh5TbvcbAYqrcxxrtXA4oQ==, tarball: file:projects/arm-resources-subscriptions.tgz} + resolution: {integrity: sha512-cqybu86uZL4mJDivZvteI5/lLFjqfYhUMwS3qolJQI90GpgUHfsiPl25cl+X9ZlUhiCxVlq9cKeOIiMVTI0qPQ==, tarball: file:projects/arm-resources-subscriptions.tgz} name: '@rush-temp/arm-resources-subscriptions' version: 0.0.0 dependencies: @@ -17633,7 +17631,7 @@ packages: dev: false file:projects/arm-resources.tgz: - resolution: {integrity: sha512-+rTDXzqHjYEAs7m7dJpD319L/BLgIlVFlLPIysWUzk7ObPpjM5OYmtZCrgZMztmwbGD7hqYjIZon8rIF9W8tgQ==, tarball: file:projects/arm-resources.tgz} + resolution: {integrity: sha512-sWIm9mEHRsGcc+wo9dqWYbswxuyKGkayy/wOIjLYa/DNhcABjmq8eE2+Fbh8NNWXJZBtZsHbSn2q979ovQ/eQg==, tarball: file:projects/arm-resources.tgz} name: '@rush-temp/arm-resources' version: 0.0.0 dependencies: @@ -17659,7 +17657,7 @@ packages: dev: false file:projects/arm-resourcesdeploymentstacks.tgz: - resolution: {integrity: sha512-yJvoiExuZNQhmEJoAzQUlu15QkSdhjsuvSMQRZUPC2px8jG6ysEXlO9kxAb/jtilXxMhJU3l6aK89zfe0qxYlg==, tarball: file:projects/arm-resourcesdeploymentstacks.tgz} + resolution: {integrity: sha512-OgMbGs90q3on+HVJBZb1uvw0dcpzRV5snWAO+T7vKW6MUCiJsK6fVj596SjYRO1ETEREGJYR1yrtSlC1tokw5w==, tarball: file:projects/arm-resourcesdeploymentstacks.tgz} name: '@rush-temp/arm-resourcesdeploymentstacks' version: 0.0.0 dependencies: @@ -17686,7 +17684,7 @@ packages: dev: false file:projects/arm-scvmm.tgz: - resolution: {integrity: sha512-IkDSuGRG/In8MZUE3PCDcj/tSpEZNGj0JTGdbsFHf4CKYvis8iUE/8XgdYbyyRBsyS47zXQl+gFJekNqiLNTCw==, tarball: file:projects/arm-scvmm.tgz} + resolution: {integrity: sha512-UQMZ7x1BNShAgeN3fc+cUpRwqQqTlKoK5G6PWR+h3c3jiavdo3SN7m2cwC+LYJo5KB5lMG3dwOGSGQm4xXGgmg==, tarball: file:projects/arm-scvmm.tgz} name: '@rush-temp/arm-scvmm' version: 0.0.0 dependencies: @@ -17713,7 +17711,7 @@ packages: dev: false file:projects/arm-search.tgz: - resolution: {integrity: sha512-n+s11i5BNDy+Rw5gO4trne5+HjikY6WR/QO9jPKq1tBRz/aFOkD9wo4sXBK/KX+MMa5xC0Wz4htXNRpY2eRrvw==, tarball: file:projects/arm-search.tgz} + resolution: {integrity: sha512-laFT9XV2gnBwg3mMoqkRdaBs6G9liSaXkBbwpGqEG6O2DMrstlPOMKY0fqvJIo/o/yRmgwHUVgW5iFOlJQhtuA==, tarball: file:projects/arm-search.tgz} name: '@rush-temp/arm-search' version: 0.0.0 dependencies: @@ -17740,7 +17738,7 @@ packages: dev: false file:projects/arm-security.tgz: - resolution: {integrity: sha512-A4jz68oBz7rZ2oTZ/3Rokdyf0kVrMwmLMzzOFKPQ2aeo3uvhW54I/njQNx81ca8z9s4p0nrIa74plV61vDinGQ==, tarball: file:projects/arm-security.tgz} + resolution: {integrity: sha512-cUASP7knxLuGWkTUT9hxpQgeCN7KkmFMoEIw9rcP6u0yMH+jm7Nll9sZNQ10KltQ0WjnXuc8C1W0pb2MYIwoKQ==, tarball: file:projects/arm-security.tgz} name: '@rush-temp/arm-security' version: 0.0.0 dependencies: @@ -17767,7 +17765,7 @@ packages: dev: false file:projects/arm-securitydevops.tgz: - resolution: {integrity: sha512-koxVWAlX3HjFQ7C+k9E1Py60tVX21MMRkdcRl+tRfTloZDtr51M/dWxwXWXx45l0cvfuLTPPdQyInGyEd97mhg==, tarball: file:projects/arm-securitydevops.tgz} + resolution: {integrity: sha512-r0Q95hT96ppOC2O2daRPM5qBWgAvscwa6HM69ardJLUU+Iw+Qro/Wyg1Xp/83qlsNBVr5UHr773GVR8Rp74O7g==, tarball: file:projects/arm-securitydevops.tgz} name: '@rush-temp/arm-securitydevops' version: 0.0.0 dependencies: @@ -17793,7 +17791,7 @@ packages: dev: false file:projects/arm-securityinsight.tgz: - resolution: {integrity: sha512-Mw1foXkkXkHAlQVMwLbHxusqxUHZhzEaJXX1oyF5vPV0S+9+hOTXA9F5W+EwxM5mKs6sgI5FTU0OCTvayCdSZQ==, tarball: file:projects/arm-securityinsight.tgz} + resolution: {integrity: sha512-8PipCR6TGEbjgqOXZF9ysgMNaIrQwliLl8qOlTD8ye9lezctgxJsVe8p253a1wd5mihnXOiA5LD82Aq25b3pYQ==, tarball: file:projects/arm-securityinsight.tgz} name: '@rush-temp/arm-securityinsight' version: 0.0.0 dependencies: @@ -17819,7 +17817,7 @@ packages: dev: false file:projects/arm-selfhelp.tgz: - resolution: {integrity: sha512-rAIMW9bdLgqaZZuN8bau8HZbFNOZSp00dzkCYLqW5Is3MwHMZfjtFxyrbZMRRq1lNUzEED8f2obMwH96dxf3qw==, tarball: file:projects/arm-selfhelp.tgz} + resolution: {integrity: sha512-UpY64n9KYojIZzT/CSg9+hCC6bcPifRxTIMWVkVeRSjVXt3fmitgJDHmooxHgnV5alcqtLeGaUc5U3qmeJ/Raw==, tarball: file:projects/arm-selfhelp.tgz} name: '@rush-temp/arm-selfhelp' version: 0.0.0 dependencies: @@ -17846,7 +17844,7 @@ packages: dev: false file:projects/arm-serialconsole.tgz: - resolution: {integrity: sha512-0eqI5gpaw5sPHxXkPL9SkMrjLIw7mHLFuN8Ym1CkaTerHazQU7/KbIrDzfA8NjwPJuyboGn+ZDrTyl9chuyWNQ==, tarball: file:projects/arm-serialconsole.tgz} + resolution: {integrity: sha512-qgmZGTZx06sXqIQVYxCwCA8EMHlhJ2BVtY26Cww+r1IKRjScIch/CVDzc4NNmIPfPOJ4LIjCg/MVOdghP37R0A==, tarball: file:projects/arm-serialconsole.tgz} name: '@rush-temp/arm-serialconsole' version: 0.0.0 dependencies: @@ -17869,7 +17867,7 @@ packages: dev: false file:projects/arm-servicebus.tgz: - resolution: {integrity: sha512-XXpsjBsIBWnaFPo9/pvwuDJVGZzn6iDSK9BUwrElxXxRY7Y2pzTgsD8Gx53WCgARwYxbAOT+ewq1XYmsWArGQg==, tarball: file:projects/arm-servicebus.tgz} + resolution: {integrity: sha512-MZRsSrmWUt1V9tRHYVQmnaWIao0C1ois82uUktrL+vteL7IuXc1Oo6NVuQfJcJMYWGgnuV8M7+330nm/Ixr7Wg==, tarball: file:projects/arm-servicebus.tgz} name: '@rush-temp/arm-servicebus' version: 0.0.0 dependencies: @@ -17895,7 +17893,7 @@ packages: dev: false file:projects/arm-servicefabric-1.tgz: - resolution: {integrity: sha512-UkPW4KAUDPabOTuX7yEtA/gsztUDwgwJ6sOIYdxJbuEkPan5kH4FPWDoL7ZNL4uQQA+lgvTuq0suOsFsphPWTw==, tarball: file:projects/arm-servicefabric-1.tgz} + resolution: {integrity: sha512-qwu7r0tH/8h7Li6Ecz1V2fqmMimIakqA55jkHsg0SkiBlSo4CrjMPqF/YBd2a47L5zNdunrf8CreRGUq+/GvmQ==, tarball: file:projects/arm-servicefabric-1.tgz} name: '@rush-temp/arm-servicefabric-1' version: 0.0.0 dependencies: @@ -17921,7 +17919,7 @@ packages: dev: false file:projects/arm-servicefabric.tgz: - resolution: {integrity: sha512-wsHHkrt1o3g9Nfbs6kZXU8+XHLvXjnz8qq7+rlsfkdbqaXX1ITR6KvmwytDMGWqsyTxrFIDg19AI7fKwMwn6iw==, tarball: file:projects/arm-servicefabric.tgz} + resolution: {integrity: sha512-WkLdDtmnnB4qqqMm831cxqT1g34J3OrDTC0nQaQoDp8yUyEvf/62dTwudEQKdQApUAtyiRwsMdwRszsCftPXfw==, tarball: file:projects/arm-servicefabric.tgz} name: '@rush-temp/arm-servicefabric' version: 0.0.0 dependencies: @@ -17964,7 +17962,7 @@ packages: dev: false file:projects/arm-servicefabricmanagedclusters.tgz: - resolution: {integrity: sha512-cYmLR/ywIid0ixqwr3d0b7ZsEZ13+WKL0ETEI2FQA8YMcnwQuiHmV0oZ9N/tZ2HCLtDsEXxMnu2p4O6QiskYXw==, tarball: file:projects/arm-servicefabricmanagedclusters.tgz} + resolution: {integrity: sha512-NVkHG9bhgK7vghzXmslXYnJyvINPuvVsKjbioxLdGraV8ixmtY0k0sq/+yov94G+GdY/hqkSdErnqsNJ+YbZiA==, tarball: file:projects/arm-servicefabricmanagedclusters.tgz} name: '@rush-temp/arm-servicefabricmanagedclusters' version: 0.0.0 dependencies: @@ -17990,7 +17988,7 @@ packages: dev: false file:projects/arm-servicefabricmesh.tgz: - resolution: {integrity: sha512-5S2KTrP9/bYBGWNhpOeWCtiHle0027EpJ70TtqpjMaflPxmkZG0jugt5MMapWgIvXQxKXzZe53s9lPCr5tjV6A==, tarball: file:projects/arm-servicefabricmesh.tgz} + resolution: {integrity: sha512-xlyV500hV6rEzy8QU/ylGzvgCVEBgmE7VS83ssrFMxjbNfaFtjSjQD8UdzURGNTw0hZDKWFsll7hlA2mVKhMlg==, tarball: file:projects/arm-servicefabricmesh.tgz} name: '@rush-temp/arm-servicefabricmesh' version: 0.0.0 dependencies: @@ -18014,7 +18012,7 @@ packages: dev: false file:projects/arm-servicelinker.tgz: - resolution: {integrity: sha512-3R/rNbDNbk6WNHEw0rssfsc9pSVOQS2qdQt4gbpvsicHbbuaplndcl2PVIbR0k6TiwyjjhKDP1i+iB1Mr1cHMA==, tarball: file:projects/arm-servicelinker.tgz} + resolution: {integrity: sha512-jmXF2OF6KCD7sfW5UNWw4gmW4rD9SxIY46xeOM5khuin+7CmC2bYJ9e0cM79GJQrD32FbwxMyvtyaIn6e/WO+Q==, tarball: file:projects/arm-servicelinker.tgz} name: '@rush-temp/arm-servicelinker' version: 0.0.0 dependencies: @@ -18040,7 +18038,7 @@ packages: dev: false file:projects/arm-servicemap.tgz: - resolution: {integrity: sha512-6sZ5fzUaQOUAQYvbI09HbSwJQlYw2AJfcPJeIlaxpoGQaroGOrQP+3juOQRV6CLKxKC3y+9hwkRRJ5+GQMN9ag==, tarball: file:projects/arm-servicemap.tgz} + resolution: {integrity: sha512-12aJeaZhKsZhTKRobLmaZhhg4ysZzncivjjVP9ejVqHQoktU8ji0WwrAgII/ppBZy+lb4K0FUVdOh6VuRxoulQ==, tarball: file:projects/arm-servicemap.tgz} name: '@rush-temp/arm-servicemap' version: 0.0.0 dependencies: @@ -18064,7 +18062,7 @@ packages: dev: false file:projects/arm-servicenetworking.tgz: - resolution: {integrity: sha512-dlR5VuqP/J1HuILRmFfW2Z9FzlQayg0+ku7VqRJGmMq5GQVdshtjFiFOUucHPMogRTPkJzHMdSg+WxPBFOpNIA==, tarball: file:projects/arm-servicenetworking.tgz} + resolution: {integrity: sha512-yhDiaZYqT8gMsKz+BAgksjFo8d5Yt9H3ahlR3VaI6NznjKjpLeb1kPJ8wmuMNqtNRMB2+tFG0zmTtKw0EUH4Ow==, tarball: file:projects/arm-servicenetworking.tgz} name: '@rush-temp/arm-servicenetworking' version: 0.0.0 dependencies: @@ -18090,7 +18088,7 @@ packages: dev: false file:projects/arm-signalr.tgz: - resolution: {integrity: sha512-+EyyVlH2g8oooG/WFOmsmzM1K30ls7Alu90snbEX73iQVSWp0w1oSJqVX7Q5gd4T+jX10Lj/RiM+Y3Eh6RiQqw==, tarball: file:projects/arm-signalr.tgz} + resolution: {integrity: sha512-RTKGBRpfUwdBauU/aUXKy4QR1R7HI/XFMEzFqeu7/ENsbrkiaAdIu6RBcKMeJyg3kxXw1YaDiePqchdYLhUwkA==, tarball: file:projects/arm-signalr.tgz} name: '@rush-temp/arm-signalr' version: 0.0.0 dependencies: @@ -18116,7 +18114,7 @@ packages: dev: false file:projects/arm-sphere.tgz: - resolution: {integrity: sha512-sJ9RXt8qOy57qh3+hOxYV++0XEq97rVqPhR8HJx2ejPOCxO+NX20qe/eE0Od+tuopN2qOC1tqybUrQr/4FlJRA==, tarball: file:projects/arm-sphere.tgz} + resolution: {integrity: sha512-iOkmNmwy56v6t0Jbv5ZTezSz7bkTTlo0ycEeM9CnwsIzm6wyfteURgDE0uZCLUxAVZp3ZrKXqGZr4/eHsKDRhQ==, tarball: file:projects/arm-sphere.tgz} name: '@rush-temp/arm-sphere' version: 0.0.0 dependencies: @@ -18142,7 +18140,7 @@ packages: dev: false file:projects/arm-springappdiscovery.tgz: - resolution: {integrity: sha512-V289qDyrO82985yV0sTv7tYbDfTb+Ge3vfj7/OSyfEfm6pU9ssfBflJdvshyIR9zdes0RX/v4PX5WPA0pOXEUg==, tarball: file:projects/arm-springappdiscovery.tgz} + resolution: {integrity: sha512-rPt33X6YK+sPes36+8n1wQG9qthpBp3UO1UiW9i9TggIUr/uDWHJxE2eWNRBtYTemlJ6N2YyIKMePMchlVocCQ==, tarball: file:projects/arm-springappdiscovery.tgz} name: '@rush-temp/arm-springappdiscovery' version: 0.0.0 dependencies: @@ -18168,7 +18166,7 @@ packages: dev: false file:projects/arm-sql.tgz: - resolution: {integrity: sha512-se1ZeJlsit25W02uINHCZTa21gS3G/xWMl4acJziviYVkxPEVz3XJvvEbRHIGuBdntyai2Zt8BkuSN5ksA9qKA==, tarball: file:projects/arm-sql.tgz} + resolution: {integrity: sha512-HSdUnotViQAJ6HCBOsWT/edtoKneqOfmjyRLswdTSDpaPXfjI3mkEHWuphVHIlbXlIA19ACcW5u6Hk7TDJP1mA==, tarball: file:projects/arm-sql.tgz} name: '@rush-temp/arm-sql' version: 0.0.0 dependencies: @@ -18194,7 +18192,7 @@ packages: dev: false file:projects/arm-sqlvirtualmachine.tgz: - resolution: {integrity: sha512-sFItJqWDgDsKvOkWiYbWfnhYZphqbMUGQs/KfhV9MshG9U5KaioMgMKVIrY2TPeDeXgTzVeH5Ep9POmFQor0Cw==, tarball: file:projects/arm-sqlvirtualmachine.tgz} + resolution: {integrity: sha512-RGEMf7+s4K/bBhnm6IiiVTmE9h2oAVC2KeX7VgKG7moiZ2TKn+wXKCh72xqevcpw48ddjNHI+Cb4Mg6I/NTX1A==, tarball: file:projects/arm-sqlvirtualmachine.tgz} name: '@rush-temp/arm-sqlvirtualmachine' version: 0.0.0 dependencies: @@ -18257,7 +18255,7 @@ packages: dev: false file:projects/arm-storage-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-z8Lv8O+VWPvgzkAU2gK6MqjS6jMSMONVVwSBE7nOMJdBKi0CJ4MLxjfWxdF8aC7m8/AmDIuoW/Kn7UwUT1BOjQ==, tarball: file:projects/arm-storage-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-CxXRxo0GQSOu+gwyJZ4jkmAK8RyS8J0aGR4z5xCxL+Jjay4x5KZqZdp6sm/a3TDbvZsvyJWlLvwhznNx4GYd9w==, 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: @@ -18282,7 +18280,7 @@ packages: dev: false file:projects/arm-storage.tgz: - resolution: {integrity: sha512-vWmWoibG6ImOO5tVpJ6Q/UNlT9C5ghHiA4qcvBxQ6GVa0vTu2Jbi7Ej4zv3ss3gbeG9Ve7wFUtZxELpD+M9nLA==, tarball: file:projects/arm-storage.tgz} + resolution: {integrity: sha512-7JaMM+XbnS5mlPjhHW0lN9MC1+MfQWGHxHowEAzrDGKMQq0S59yl1ARyzZenuxCksPB4fUGFkCMF2x0dWdoiXw==, tarball: file:projects/arm-storage.tgz} name: '@rush-temp/arm-storage' version: 0.0.0 dependencies: @@ -18308,7 +18306,7 @@ packages: dev: false file:projects/arm-storageactions.tgz: - resolution: {integrity: sha512-uZOaO0V1Tz+/RKKxZ1PCxvNg/5zEwbba4l+IDurwSVQSeJ4UPRo0WgXacJfXqaIX/ahmfGg8WFHF0aUnA1Kqng==, tarball: file:projects/arm-storageactions.tgz} + resolution: {integrity: sha512-J2A+Z0Xz5BkQdWKwkX7vvJKcis5s/P/2jTfK9FpQxQaz8xDnNBitsB4WoYnMqNtRZGh6D6l1xZfo6EKDyzFs9w==, tarball: file:projects/arm-storageactions.tgz} name: '@rush-temp/arm-storageactions' version: 0.0.0 dependencies: @@ -18334,7 +18332,7 @@ packages: dev: false file:projects/arm-storagecache.tgz: - resolution: {integrity: sha512-ML3pmksKCIrD52c1Ihu5VTLx6T3wNYZVnLR4JmuAi7RulNdTwVjuzFHsOtGkySf0bUkIhhPzrl5NLUOXZJHQTA==, tarball: file:projects/arm-storagecache.tgz} + resolution: {integrity: sha512-54w0drdqLOZ5H2ctjYw/08CF3Gk0HP23mJbhTG+xtXZqz8ixEXAlzqLk1qH+3SuBbP7kON/Q1TNPcyDjH7E7wg==, tarball: file:projects/arm-storagecache.tgz} name: '@rush-temp/arm-storagecache' version: 0.0.0 dependencies: @@ -18361,7 +18359,7 @@ packages: dev: false file:projects/arm-storageimportexport.tgz: - resolution: {integrity: sha512-dheD+NOeWSyWf6xmh1RCVBqg+mVHXVRfnYUKW5eBvg+xdkoiAlK7OhrX7ud/XAfuUXc1IiG5PWERDkr0uenKUg==, tarball: file:projects/arm-storageimportexport.tgz} + resolution: {integrity: sha512-l6/Ao3ypthPFWaYa5RXUWFZfQjVCA3yqqvPTucngqWIwLqdir9AZiSnoKhId64vpoRrSRZYh1rsLWPzS1UdBAg==, tarball: file:projects/arm-storageimportexport.tgz} name: '@rush-temp/arm-storageimportexport' version: 0.0.0 dependencies: @@ -18385,7 +18383,7 @@ packages: dev: false file:projects/arm-storagemover.tgz: - resolution: {integrity: sha512-W0pYTdeaObMpPw+JnfWB2+2SAxIv9mh/ZS2ojkASrFyIatOl+hv3YrgNeqzN0ZpMmYQ3ojn6brHfX3et+FwFeA==, tarball: file:projects/arm-storagemover.tgz} + resolution: {integrity: sha512-Ov0RLvOUkqcZP/Xy3Pjd1pKhCsMqr+V17vQSiNmUppWdXGgwKYp3SfkhvlxF5pwkotJl0pYBizQQpPullPOauw==, tarball: file:projects/arm-storagemover.tgz} name: '@rush-temp/arm-storagemover' version: 0.0.0 dependencies: @@ -18412,7 +18410,7 @@ packages: dev: false file:projects/arm-storagesync.tgz: - resolution: {integrity: sha512-xOdHMsiYEZZKOVYfFO14MAHN+OyaxH8W6dAeS29pseD9gebFZP9It9pRXDeOmHbqh5e/0BYJrJ7S+Kmb+uCCJA==, tarball: file:projects/arm-storagesync.tgz} + resolution: {integrity: sha512-fKD6uofi9+UqrnP9CXLuy4Gtwzg9qZpaWToXmrqZumPplzkMBRexrY7UexQrqyctQG5KhIA0Ivg9uhALersfQg==, tarball: file:projects/arm-storagesync.tgz} name: '@rush-temp/arm-storagesync' version: 0.0.0 dependencies: @@ -18437,7 +18435,7 @@ packages: dev: false file:projects/arm-storsimple1200series.tgz: - resolution: {integrity: sha512-hlPPRSxi6hBcWG3pG+ujvQhWm1Gyg48f6but8gjFywnggVklvnjSo9BlSi7HXsAFuo1TTh47/ev0+5lPx/jMlQ==, tarball: file:projects/arm-storsimple1200series.tgz} + resolution: {integrity: sha512-vuWBVlLqpb0kUW+dLvCoWwZnDDiqxbnm0w7zEXC/vksb+SxmG7upDIYKdpLct+t4Ah4u+Dg2mUqNvtkuAHshEg==, tarball: file:projects/arm-storsimple1200series.tgz} name: '@rush-temp/arm-storsimple1200series' version: 0.0.0 dependencies: @@ -18462,7 +18460,7 @@ packages: dev: false file:projects/arm-storsimple8000series.tgz: - resolution: {integrity: sha512-zzgeLtSD3nbuxDLv+lyBTqxa7DDU3t+g1hY9oWA4VtO0qv43l1OkBVeFlkqRNqQ8q8g71lyP4W4x0nD7UMD1kg==, tarball: file:projects/arm-storsimple8000series.tgz} + resolution: {integrity: sha512-YCCPLoSrFl+scyWtwdTi+rJeCKMLLgXpoV6TYtOus05mLEdkqzmeOYkVUi41rMzD4jgznDnZeuceDfrf7tsT6Q==, tarball: file:projects/arm-storsimple8000series.tgz} name: '@rush-temp/arm-storsimple8000series' version: 0.0.0 dependencies: @@ -18487,7 +18485,7 @@ packages: dev: false file:projects/arm-streamanalytics.tgz: - resolution: {integrity: sha512-jVGA4g/NjMBp/+JPPjd5Ya9pZS8aNKzor7hbMDQT67bBEp8zdFKq0jFjh2/ABcbTu6Ee3g8/9pu73x2je/8AOw==, tarball: file:projects/arm-streamanalytics.tgz} + resolution: {integrity: sha512-x2r4yR4EZaXI4cuc2PE0ZFEDlBd7t+wSyYUGLOIxjTV5A8UWdh6GjvciEmhHE9G98RM82qOOoD4wVpIUfhM+XQ==, tarball: file:projects/arm-streamanalytics.tgz} name: '@rush-temp/arm-streamanalytics' version: 0.0.0 dependencies: @@ -18513,7 +18511,7 @@ packages: dev: false file:projects/arm-subscriptions-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-tp/2vlQ64r0Qft0dYnntMOl+5gjlEp0bYDYnTtipfqQzt+bD/h9k7a+3wUlYg2EFm4NHTwj18X7WMFwudlPpGA==, tarball: file:projects/arm-subscriptions-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-s9QF9sX/pfctdiDj6d1OSl4qAPwVQCb3LnbUeB02hiC7/89Dtd6DU5//ocx9WwdgDyWmr8VYgwb3Yx0Go0XbYg==, 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: @@ -18537,7 +18535,7 @@ packages: dev: false file:projects/arm-subscriptions.tgz: - resolution: {integrity: sha512-X4QxnXd8CQSzk2Y8QV0x6F2t6B2T01IUbulm7TLTpf068zTzbaBPVlgdyIuZSeHHGeOgYfDs8omwkrLEcO/f3Q==, tarball: file:projects/arm-subscriptions.tgz} + resolution: {integrity: sha512-faGQJwN+3MUpsDxOtTp6V64CC2s+yX/vquKSiUiKR1IMNAMEsrDmmJ5ewdR1g9mrr34q96xnAxdblGkC6EPrMg==, tarball: file:projects/arm-subscriptions.tgz} name: '@rush-temp/arm-subscriptions' version: 0.0.0 dependencies: @@ -18562,7 +18560,7 @@ packages: dev: false file:projects/arm-support.tgz: - resolution: {integrity: sha512-ZUxJ2+wlIoI2WbWBLatWmEJFBs2duTUzSHfhBV5gEkJQcErYbe7fJ7tQXHLC2NTIbnZofGTpz+sXaiv0ksAJXQ==, tarball: file:projects/arm-support.tgz} + resolution: {integrity: sha512-FGO/xCFCsXYIpkdWZlXY7paU3Z8ZReLTwReVmAQUftQKEcDfb3gHBY6WBtgEXHjc5b70hvRA3GlNrMcX2XDTIQ==, tarball: file:projects/arm-support.tgz} name: '@rush-temp/arm-support' version: 0.0.0 dependencies: @@ -18588,7 +18586,7 @@ packages: dev: false file:projects/arm-synapse.tgz: - resolution: {integrity: sha512-LKw+pvRNIT1RpFrgyue0JbFdNHfxcpt2BE/8rjN/9YVRwqGsHMyMrKf9RiX8eLL3PV124/csgE2ICeFaiPjQNA==, tarball: file:projects/arm-synapse.tgz} + resolution: {integrity: sha512-S5WnuTQi2aWK6q5toiunog3uKzjMhwq0Y3CQ1JAtlJyGa3oIEO760qFTIhycvbhVuiRcmUui5mQGgLV6ChZcHA==, tarball: file:projects/arm-synapse.tgz} name: '@rush-temp/arm-synapse' version: 0.0.0 dependencies: @@ -18614,7 +18612,7 @@ packages: dev: false file:projects/arm-templatespecs.tgz: - resolution: {integrity: sha512-3jBij35nzE0uJvbbxo14Q+u5G6rGdb576v7RF+ravi56Pe8NZKvuL9u+ZwG6eG1Qzh27s1bFAquBMSJu1o1egQ==, tarball: file:projects/arm-templatespecs.tgz} + resolution: {integrity: sha512-OIPrZZVFbxQnyAWw2pOb2LxWdAVbjUpHeSL0jlFzQtmxLFPvPsfKYYzuff9JBT52JzLpdSdzrx8yJD6vVEsoWA==, tarball: file:projects/arm-templatespecs.tgz} name: '@rush-temp/arm-templatespecs' version: 0.0.0 dependencies: @@ -18637,7 +18635,7 @@ packages: dev: false file:projects/arm-timeseriesinsights.tgz: - resolution: {integrity: sha512-qQCDGM8v7/+j+b5w9fO24BhynXYoYswVqNPqGO1KN9VreNe85dOY37v3NYoAaDPRiU48j4VIfHMBSPopNx2Nzg==, tarball: file:projects/arm-timeseriesinsights.tgz} + resolution: {integrity: sha512-M5JNlYjuksfmjRYhRoQQBgymivooZF50jpe2EptMZQNRfn19ukQ2DilgCzx2EdJPHoT6IuVUo1D5DkbL7ebV3w==, tarball: file:projects/arm-timeseriesinsights.tgz} name: '@rush-temp/arm-timeseriesinsights' version: 0.0.0 dependencies: @@ -18663,7 +18661,7 @@ packages: dev: false file:projects/arm-trafficmanager.tgz: - resolution: {integrity: sha512-NGRVDDkeeMAe9BFQCGOMLvvrLFNLlPbQldybGTnPHxzjDsjvhJM71X2THGUnr6Vse4Dgv1bNmbZeCMGiFvoChw==, tarball: file:projects/arm-trafficmanager.tgz} + resolution: {integrity: sha512-2JiKgZ434r2fSRoVYkvEymSssKsgnskylDniZmFRBcS0YjK+DNT0kW5TxFfgVDpgtKduwemmp/1Nmzx134Q3Jw==, tarball: file:projects/arm-trafficmanager.tgz} name: '@rush-temp/arm-trafficmanager' version: 0.0.0 dependencies: @@ -18723,7 +18721,7 @@ packages: dev: false file:projects/arm-visualstudio.tgz: - resolution: {integrity: sha512-9XsTNUjTtMM7ATd/Istp6UJ+7nGlRpUb5DbqfxHj+Tlv1qHffG4ENe9xyrlTdXWvfw7pfq38jAkBGpDC/cWn+g==, tarball: file:projects/arm-visualstudio.tgz} + resolution: {integrity: sha512-UiQjCfvL9Ny3F2040HaEfUQPTcWHQE3GbKEZd8n+VZ2dt6SoYpgyeUfTql79t26fFgY+/01mvA63JF1z4CLZVg==, tarball: file:projects/arm-visualstudio.tgz} name: '@rush-temp/arm-visualstudio' version: 0.0.0 dependencies: @@ -18748,7 +18746,7 @@ packages: dev: false file:projects/arm-vmwarecloudsimple.tgz: - resolution: {integrity: sha512-Z7SEduA3xHcTiDHQMJCwfUkWG0749fiCTHHriPps1Yp0RgAK9DRHOYnqAqZiyrXz7r+7ZsD4bfY8QsRlKxFoCg==, tarball: file:projects/arm-vmwarecloudsimple.tgz} + resolution: {integrity: sha512-tELhHvn9pmZyfjuO6fXJCIrxRu0e2/FEOQ5pePkVBXrj6sjV/rCibw8kdoj66wrR9txTW6x9s1UdDBM52Pl36A==, tarball: file:projects/arm-vmwarecloudsimple.tgz} name: '@rush-temp/arm-vmwarecloudsimple' version: 0.0.0 dependencies: @@ -18774,7 +18772,7 @@ packages: dev: false file:projects/arm-voiceservices.tgz: - resolution: {integrity: sha512-dfHQCqX2ztrUukZejbnuY5CXFSRBsc9P98c7vk2ygmBMKRLHAxgTbaHKNUpsHEomwJ7jE1I25sQ1TqzBRJTqRg==, tarball: file:projects/arm-voiceservices.tgz} + resolution: {integrity: sha512-VqgW59CBLAxfPUL7PGHgPFG6b7h1O/UuqT+7hg3QSh/c/buwzdJmfne8rBcdcUInmYspTBDmIGQzZYjqdPEAJA==, tarball: file:projects/arm-voiceservices.tgz} name: '@rush-temp/arm-voiceservices' version: 0.0.0 dependencies: @@ -18800,7 +18798,7 @@ packages: dev: false file:projects/arm-webpubsub.tgz: - resolution: {integrity: sha512-BXhcAUVDPoGHHNqRgPMxjyKK50FSKZuiUKp2/5jbNFcalPAzdwqK1Lj4q7pO/jylGWi0pKlaVzFRae8U6DUD9A==, tarball: file:projects/arm-webpubsub.tgz} + resolution: {integrity: sha512-34fMxJ6RStuhR6500e+VWhueRdW4MOCzh6ukjZI19rg8bYvg0CkNulAdKUqJw2AOFzfz1LDSge4lSZqczzI5Kw==, tarball: file:projects/arm-webpubsub.tgz} name: '@rush-temp/arm-webpubsub' version: 0.0.0 dependencies: @@ -18826,7 +18824,7 @@ packages: dev: false file:projects/arm-webservices.tgz: - resolution: {integrity: sha512-fQ1C1Mb1OkfvoqpAslFM66gmA1gBnLj4FHKenpnR0UpC2EiKYJRpYY7VHMC174zA378SuqsvKnLBn6qz/jk0CA==, tarball: file:projects/arm-webservices.tgz} + resolution: {integrity: sha512-zsL2ZwYn8PD8COnolYhDSDCebonahH9gCw4/ozxJFrJRLATcZnziCKJ3a6qs6G3+HofjbPX/y9OvxLI27YpBow==, tarball: file:projects/arm-webservices.tgz} name: '@rush-temp/arm-webservices' version: 0.0.0 dependencies: @@ -18851,7 +18849,7 @@ packages: dev: false file:projects/arm-workloads.tgz: - resolution: {integrity: sha512-nzUuNIe20mLJ7ccYGuTpQn3Bsu48E92sepo1BWyd8/2m4YEe1LDA99jOeN3GPxpwmRGw2ywGCaUjSwjaMjK1EQ==, tarball: file:projects/arm-workloads.tgz} + resolution: {integrity: sha512-RWQfpgvMRTCHIhZM0bD9lyj2R7hVQCEvLJ2F0TmuGSYTQZ5E3qw6NHUkYoISxj8rVxnB/xnyRJTFPLYuhIeNfg==, tarball: file:projects/arm-workloads.tgz} name: '@rush-temp/arm-workloads' version: 0.0.0 dependencies: @@ -18877,7 +18875,7 @@ packages: dev: false file:projects/arm-workloadssapvirtualinstance.tgz: - resolution: {integrity: sha512-9n6MFLqWfUoOVAjBoIaatk21Pelrf+uUno5KuqadYAuQX6qn52I2iAvGIi5U+59B1dPP3UklgHHj6Io156KcNw==, tarball: file:projects/arm-workloadssapvirtualinstance.tgz} + resolution: {integrity: sha512-jzDm+jPkBcBG4bAIvtw3t8ZxD1hvQPvdI/zVSbkYM0PQeuuJtnqcdKF8uk21zXZBZxlSfXzmURvcpXQym3SFzw==, tarball: file:projects/arm-workloadssapvirtualinstance.tgz} name: '@rush-temp/arm-workloadssapvirtualinstance' version: 0.0.0 dependencies: @@ -18903,7 +18901,7 @@ packages: dev: false file:projects/arm-workspaces.tgz: - resolution: {integrity: sha512-+kRHA+7TnMkQUQ4z4WjM6l6owGYschRooj4SHCL9M+OmaLqDW2q18mFGli2/y2RmsKCL9HEYJXZI8Jxnu1xuUQ==, tarball: file:projects/arm-workspaces.tgz} + resolution: {integrity: sha512-2Lzj4dGvzsZjC0mpObJ5KeQjUbUrmcm8tYz0hdZzC+7gVvVSEUOfYY+IlMS0xTwAklcMLaB0GPjg7fY57xY7sw==, tarball: file:projects/arm-workspaces.tgz} name: '@rush-temp/arm-workspaces' version: 0.0.0 dependencies: @@ -18926,7 +18924,7 @@ packages: dev: false file:projects/attestation.tgz: - resolution: {integrity: sha512-XLizI8Ws7S8CYXEuRwFdXftfUSC4mgLKA+PAVGuDu/cXCNiCjOWGjwdVJ8ltBfLgopcxw6W2pezqCuPhE9gnnQ==, tarball: file:projects/attestation.tgz} + resolution: {integrity: sha512-3sCMDoIZh5Y23js3HfWFMKzahYChBEc/+kaUas0+0FJ06UcWuof3jLf7hXnADbxp+J8/RCnvDqy/0xDmOcZkPA==, tarball: file:projects/attestation.tgz} name: '@rush-temp/attestation' version: 0.0.0 dependencies: @@ -19005,7 +19003,7 @@ packages: dev: false file:projects/communication-alpha-ids.tgz: - resolution: {integrity: sha512-N4oacYAgmTQhybiWUxCHcps5PdN+P42OQ980+fm4fShLmmkXjC71jV0ad96uUw8eeT3pMdFOWfkPhSk1kqyyIg==, tarball: file:projects/communication-alpha-ids.tgz} + resolution: {integrity: sha512-/vES/isBSUn6KSc6TIOiY7k8cSBlHGIqJpJzaN8z0AunG3c3TqTGn6IM4CSfnFm+b1WCWvbVdfyad3RVJUSTag==, tarball: file:projects/communication-alpha-ids.tgz} name: '@rush-temp/communication-alpha-ids' version: 0.0.0 dependencies: @@ -19046,7 +19044,7 @@ packages: dev: false file:projects/communication-call-automation.tgz: - resolution: {integrity: sha512-GQKsNRdBtotrr2AIdao6Q6uPfXKiqEdTYTWCIGGgChS5b2utpl3oAKLXyXhJRWtidPH+GT/Pq99f6LFFYL8DtA==, tarball: file:projects/communication-call-automation.tgz} + resolution: {integrity: sha512-Fd/HeZS/REzGRLDLjxyqGG1NM1QgMCK7pzWoE0849CzJUyCUGayK6xbpCkvHxhexi1MBvlmwSwIp+Vaixtk0Qg==, tarball: file:projects/communication-call-automation.tgz} name: '@rush-temp/communication-call-automation' version: 0.0.0 dependencies: @@ -19091,7 +19089,7 @@ packages: dev: false file:projects/communication-chat.tgz: - resolution: {integrity: sha512-1RLVB1qB7iu8SpztqnGxg9uO4duzhgJZ9TJZTB6itotkXnqR6Mdp3aa3Ar/FojVRIPZeV2loarMzurci7Ug1YA==, tarball: file:projects/communication-chat.tgz} + resolution: {integrity: sha512-skckUOVlwJEksKTKnfz6C+gSMGDH9OSD5hqIk8Xe778C4oVgYmAxt5Ca06odu4sPxGg9ltSUnDtx4XBaW8PqYA==, tarball: file:projects/communication-chat.tgz} name: '@rush-temp/communication-chat' version: 0.0.0 dependencies: @@ -19139,7 +19137,7 @@ packages: dev: false file:projects/communication-common.tgz: - resolution: {integrity: sha512-BN665ng+Y0qJ0Bk0jOOpjDPHrhWE7Z2KzlIDPi3guaILn+sAVCIB75KVBtdY5X8mSZ2yAuJ9kw0jozaDWM277Q==, tarball: file:projects/communication-common.tgz} + resolution: {integrity: sha512-XzWEZCKhE4dx4TzQbLDgRWi+8qjzn8gojvk/pDAUuWUcG7nhg1H2rB67Ygmtys2qgIrTh1mB5wDyPwvVLDzjcA==, tarball: file:projects/communication-common.tgz} name: '@rush-temp/communication-common' version: 0.0.0 dependencies: @@ -19180,7 +19178,7 @@ packages: dev: false file:projects/communication-email.tgz: - resolution: {integrity: sha512-BSwpDu61DQ9hmgl4DJK8DHXVZ+EB/JRzlax0xd2GzIF94as6M/p/xsbhZy3JZm5M7oquebDzyfurO0sNwjmCWA==, tarball: file:projects/communication-email.tgz} + resolution: {integrity: sha512-ZOPSfMCI6uWwWm9OUsw6AHSJzn7SAMKxJOFFDbrj1jkvcQ9f1V+m2qa1NwV7FywuGMuKjN7wumpI284OIjxSxg==, tarball: file:projects/communication-email.tgz} name: '@rush-temp/communication-email' version: 0.0.0 dependencies: @@ -19220,7 +19218,7 @@ packages: dev: false file:projects/communication-identity.tgz: - resolution: {integrity: sha512-qMiH+zReqRgccqD9gHbGf59AsNRTRjNW+Td5Sb8JYnMQHa7AJvKiAoyNTT+3aGD8Dy5/9G6Nb+9g4SYg7hjy/w==, tarball: file:projects/communication-identity.tgz} + resolution: {integrity: sha512-qhM0Ig2VTC6fRQ0sjCP+8aYlz1m4yr+uC5vlhm/pXop87s6MyIIpZzHZH6MTijaIKKlTzZt+3dxYs/4XwqKVhA==, tarball: file:projects/communication-identity.tgz} name: '@rush-temp/communication-identity' version: 0.0.0 dependencies: @@ -19265,7 +19263,7 @@ packages: dev: false file:projects/communication-job-router-1.tgz: - resolution: {integrity: sha512-3G+xLyftq1it50nr97abnv5t3RVlFae+e+DWCRJUXj7FBXccF0PIq0eCSi6tq4AY+gp4I7p3ZLmK2e9u0kIHBw==, tarball: file:projects/communication-job-router-1.tgz} + resolution: {integrity: sha512-RZbsUhQkZUx5IKP0bXznxjTXhgPuBwPUEKVgusXlHstCp2/Qlo0Gj28SFhFxRIccGikPKPoTcLvspMSRJ/oQNg==, tarball: file:projects/communication-job-router-1.tgz} name: '@rush-temp/communication-job-router-1' version: 0.0.0 dependencies: @@ -19311,7 +19309,7 @@ packages: dev: false file:projects/communication-job-router.tgz: - resolution: {integrity: sha512-6ecj7wG3sZ7ZPYJ7rxOW5kcIy3B29WTukwAb7GLjB79kRCOyOyBWXEgalbQ4HIOqAy7qtpF1NxjGhWgGZ8cp4A==, tarball: file:projects/communication-job-router.tgz} + resolution: {integrity: sha512-5LLJCERriFc6PMsBRCH2FAYffKFHxBTudi1OCbylAy5IUtqtIwzPME18A0VE/ixM90FkKYtJUc9vnIn9+8cfWA==, tarball: file:projects/communication-job-router.tgz} name: '@rush-temp/communication-job-router' version: 0.0.0 dependencies: @@ -19353,7 +19351,7 @@ packages: dev: false file:projects/communication-messages.tgz: - resolution: {integrity: sha512-4CD+ak9VPd69VHS5ZoPV38QIVUS/tynNdsm+7z+t5NKX8OpqS+Xm5YJBgPEz0zSmZ5jOiPTOIASGbDlvZoh3Gg==, tarball: file:projects/communication-messages.tgz} + resolution: {integrity: sha512-oEFJuO+RzX3gA86WxlnTcUnnFTSzQPzasiwupB6/pl+KjI80ZX9UAOKDb2qRW1v1Pu3Ch/YeFAprVg21znmOAQ==, tarball: file:projects/communication-messages.tgz} name: '@rush-temp/communication-messages' version: 0.0.0 dependencies: @@ -19395,7 +19393,7 @@ packages: dev: false file:projects/communication-phone-numbers.tgz: - resolution: {integrity: sha512-+uY87oRL4a7+0XwgJbH6OtGWg0yr7KiP9yxMfD/ovgEJ1MgzdyG5QoTFad3vy6gDsI1mJIkGgzLA2sBTMcCdHg==, tarball: file:projects/communication-phone-numbers.tgz} + resolution: {integrity: sha512-TFOWK46fB+Xt/4wne7rUVXbFOJLR6FWn9+hUo1Q09WA/LTL5CyTfC1fPK7dpdGPR2OA/+ebefNQjguLcLvR2BQ==, tarball: file:projects/communication-phone-numbers.tgz} name: '@rush-temp/communication-phone-numbers' version: 0.0.0 dependencies: @@ -19438,7 +19436,7 @@ packages: dev: false file:projects/communication-recipient-verification.tgz: - resolution: {integrity: sha512-MSJMtHeVv1Vb8aWHfZXfGUUL8C1xvN/BaAs+K9WQv8SZe5YAib8AtK9lZxFXwkrDCxXzjWY4Nit8QQACc9pH7w==, tarball: file:projects/communication-recipient-verification.tgz} + resolution: {integrity: sha512-EJ/L18WNgHvJpQIzFUPd4+srCdToi/A/urtL2S9Rsh9TVrJpJsBgW42B8c1IXOVbvVr6WahdceA2JME1xz1eZw==, tarball: file:projects/communication-recipient-verification.tgz} name: '@rush-temp/communication-recipient-verification' version: 0.0.0 dependencies: @@ -19482,7 +19480,7 @@ packages: dev: false file:projects/communication-rooms.tgz: - resolution: {integrity: sha512-OGMYPddtatuO66DQPlKv2XxpfO+FmHVBoe2qhQHoUwRmeTdImgVUnU3kSivLV6gdbegWs6HRQkS9e0Kh9OsoYQ==, tarball: file:projects/communication-rooms.tgz} + resolution: {integrity: sha512-P7jfhBHPpmbT+F7ZiIsSE6UE2c3eH3VurYQSyRaYxcCuKRvzccHbqk1RtO0SyPiDjPTgxjGnAHnexI18C2+UeQ==, tarball: file:projects/communication-rooms.tgz} name: '@rush-temp/communication-rooms' version: 0.0.0 dependencies: @@ -19515,7 +19513,7 @@ packages: dev: false file:projects/communication-short-codes.tgz: - resolution: {integrity: sha512-To9dUMQD4DxGdMJG74xkvTg1vVq/LZo+c9VTXlkpnGvI8ycgU65n6gboyRv1PdYpzMlumMKFGBhxbY6qzYjEgw==, tarball: file:projects/communication-short-codes.tgz} + resolution: {integrity: sha512-u4yftj8OtAnnZP1tzyGPOuPCdjNg97D572Hp+KrktonP7AqemRnAsWGPQyi/iMuR8qAED6pSRc9c682XrVXrEA==, tarball: file:projects/communication-short-codes.tgz} name: '@rush-temp/communication-short-codes' version: 0.0.0 dependencies: @@ -19559,7 +19557,7 @@ packages: dev: false file:projects/communication-sms.tgz: - resolution: {integrity: sha512-yb7cqFenwRyowBWMQ0C3zP4QunsBYdNR+RW4+UXITi7IX4ojrFwURmXthwqxrfBNa5weGy9ZVqD+w+haI8GzfA==, tarball: file:projects/communication-sms.tgz} + resolution: {integrity: sha512-haVPGnQ12Pl0W69/eg2MhmTpiF+DTrxGi+y1TMCm736KXUIeNrW87yhASdKXOOM15k2n3LJC2qi/KBKH0T9j7w==, tarball: file:projects/communication-sms.tgz} name: '@rush-temp/communication-sms' version: 0.0.0 dependencies: @@ -19602,7 +19600,7 @@ packages: dev: false file:projects/communication-tiering.tgz: - resolution: {integrity: sha512-0c1HP9StKcmnf5j0ZsBn6tfKBDrw5OTC9qxzYOFqIGsuWaIK9+yuwfgypBE22wHy4wnr7LGZBelAuHo6GEwacA==, tarball: file:projects/communication-tiering.tgz} + resolution: {integrity: sha512-nDoqnFBea7fbl3xKZpetYRo4tdp0rw5rDRLrhjprDsgSrCOBoKrioCzzIWQ8Jr9VJ8bRHvhvc7m56jihYGDe7g==, tarball: file:projects/communication-tiering.tgz} name: '@rush-temp/communication-tiering' version: 0.0.0 dependencies: @@ -19646,7 +19644,7 @@ packages: dev: false file:projects/communication-toll-free-verification.tgz: - resolution: {integrity: sha512-ek2/rdiRgXy0QfHpDGHXycOUL+zKrut58/w/YjlBS5lsoC63GRkkuDc64m8gCsvxs10TU3LCYSgLMbmjsKF4xg==, tarball: file:projects/communication-toll-free-verification.tgz} + resolution: {integrity: sha512-zMOvMqhXXp3AXPsBp2GhCzlURqqW3V92ZnQiN7yDeRO1Ii50dG7d6aqlXPi4FrAFuh9Bn9j3gDoN8Z0RHfMZrA==, tarball: file:projects/communication-toll-free-verification.tgz} name: '@rush-temp/communication-toll-free-verification' version: 0.0.0 dependencies: @@ -19687,7 +19685,7 @@ packages: dev: false file:projects/confidential-ledger.tgz: - resolution: {integrity: sha512-k0W7NI8tAboaHvMjIz7r70HdMJcO6FY3FZFjjwwIn7TLxxY9L6Fzb8yLXU9nIp0dJJF8ou5EWcnd+XztPs5xTA==, tarball: file:projects/confidential-ledger.tgz} + resolution: {integrity: sha512-Xw/enTER2UKhrjrxCL5XqD8wjKQkBNUpy58uQP9E3kofJVpBbnnwDOCeaQkTQAGxPQWJVqIm2Lnz1vBEhzvqLw==, tarball: file:projects/confidential-ledger.tgz} name: '@rush-temp/confidential-ledger' version: 0.0.0 dependencies: @@ -19715,7 +19713,7 @@ packages: dev: false file:projects/container-registry.tgz: - resolution: {integrity: sha512-Fub5wFmBQ0yfBlniVt/nZ4K61HL/+xdn2TPOwjVnBdnuvcJj7N9s4IbAOW9+ThKqQr9eRESklsHSVTjY5ZmaXg==, tarball: file:projects/container-registry.tgz} + resolution: {integrity: sha512-wOBy57ibPwVg9mLPVbRhYqksFdU1cGGBeb3wZBm0YituGMP7LnO8U2iE5SvVEiBXHv0ADfLOTmrxPj/sOIXbgg==, tarball: file:projects/container-registry.tgz} name: '@rush-temp/container-registry' version: 0.0.0 dependencies: @@ -20194,7 +20192,7 @@ packages: dev: false file:projects/cosmos.tgz: - resolution: {integrity: sha512-XRt/7WM/FE+uY5KXn5l8UCe3Q12naNgM6atfo6TX4zqBuXDhL2kpajSojCPHmTsVGqypsOCCQDUddi99zWlAKw==, tarball: file:projects/cosmos.tgz} + resolution: {integrity: sha512-l5rV9Yu/fjvbShmu02iwVLOdLChhvsru7Ke7u8yG6uoPVQJK8Ruto5Y6gWeWaNiJ57yHruwQ+8iOiJj+fHuGuQ==, tarball: file:projects/cosmos.tgz} name: '@rush-temp/cosmos' version: 0.0.0 dependencies: @@ -20233,7 +20231,7 @@ packages: dev: false file:projects/create-microsoft-playwright-testing.tgz: - resolution: {integrity: sha512-cN+MSRqiK7bfKpZtKELrUkW5f3YRbJq/82lKwcPyoa4cxQdUvq3/puZUCbDbxN7ygbMWZdFMXrvNWFQXdL819Q==, tarball: file:projects/create-microsoft-playwright-testing.tgz} + resolution: {integrity: sha512-B9WGzCSNUgX+6tno77dWcNkHz6R11S8AQnwV09k6RxLFfWIY1WGRtctRBlLOLUh28jjMNZILl5n+Q/pnl4t6xA==, tarball: file:projects/create-microsoft-playwright-testing.tgz} name: '@rush-temp/create-microsoft-playwright-testing' version: 0.0.0 dependencies: @@ -20265,7 +20263,7 @@ packages: dev: false file:projects/data-tables.tgz: - resolution: {integrity: sha512-6deTw9yTX67C6w0AhVvP3gOhCSu0uqSMCEzEdy0onvKJnD30nqMaMmzaHPeu6QY8XFyYiDnRDBkMNgIVJfAt8Q==, tarball: file:projects/data-tables.tgz} + resolution: {integrity: sha512-TmGqXF7zuQBOCNfWiN/P3OSqqZ/eymS6FXPMS5dBhJOfWM1PhHc7lMqnx4rA7RaxBHYuihYNztnIPV7eOMZYQA==, tarball: file:projects/data-tables.tgz} name: '@rush-temp/data-tables' version: 0.0.0 dependencies: @@ -20307,7 +20305,7 @@ packages: dev: false file:projects/defender-easm.tgz: - resolution: {integrity: sha512-9LcnqSWuQj3xssDgD1Z13HFg7FqQMcDlXVZzbIqy3DLE/fVVRAe1Ukn9TPn0iAk0ut4X0XJQelJNPrHSHi1xvA==, tarball: file:projects/defender-easm.tgz} + resolution: {integrity: sha512-XR4jDRwVwSWsus6hDjmyVFkc7JniD2iVjqeni/bYugekiusoIp7igRkJannzZnhriU2fGNOsQjov3caAz1+L5w==, tarball: file:projects/defender-easm.tgz} name: '@rush-temp/defender-easm' version: 0.0.0 dependencies: @@ -20463,7 +20461,7 @@ packages: dev: false file:projects/digital-twins-core.tgz: - resolution: {integrity: sha512-ZsHPSRxLA4PALCI9P6nLtDKZW0EnDb0306K26OrVGHr6MhrlAxQFSx5kqwcb0izJBtHEM1KSbZ3Oon/r2R0mXA==, tarball: file:projects/digital-twins-core.tgz} + resolution: {integrity: sha512-aF3848VYS1qA+wZJs/NgB1X3UOd6UOgqksqEoHZwruijB5AaeqfvEhwN997Lmkp2kMjPSl7sH5ObQLiqveWRnA==, tarball: file:projects/digital-twins-core.tgz} name: '@rush-temp/digital-twins-core' version: 0.0.0 dependencies: @@ -20507,7 +20505,7 @@ packages: dev: false file:projects/eslint-plugin-azure-sdk.tgz: - resolution: {integrity: sha512-DkFshE0sjpyng1+kW5zDTN6hDMWESU4zk/5q7B/vpxqBZI/k/XNXaYh0zBSfPd8wlVwTTD4AtyDQDtjsjBaBBQ==, tarball: file:projects/eslint-plugin-azure-sdk.tgz} + resolution: {integrity: sha512-SJtki5rEbJAv18SEFjoGX6bAHlyfRaJlgQu6yOSOtnQo4cSTlUupAolVAR+kAtfKh45lvljoojYPjg40AI7dQg==, tarball: file:projects/eslint-plugin-azure-sdk.tgz} name: '@rush-temp/eslint-plugin-azure-sdk' version: 0.0.0 dependencies: @@ -20559,7 +20557,7 @@ packages: dev: false file:projects/event-hubs.tgz: - resolution: {integrity: sha512-yvW5XvvM8SiMiyn6O7UZ+k12KwWDrxmZlckmuHLw34sPF5aoMj8MkTR8h4zAQuYp8HEggJte7uD5YArTaQPeyg==, tarball: file:projects/event-hubs.tgz} + resolution: {integrity: sha512-j9YciF9vtRTK7EMgIG5h9jMcJ/v8iPNtlelLJCMP3pDfQ9wlL+C/hH9S9V861470ISevdwBCuYIAEGru8Lbsiw==, tarball: file:projects/event-hubs.tgz} name: '@rush-temp/event-hubs' version: 0.0.0 dependencies: @@ -20613,7 +20611,7 @@ packages: dev: false file:projects/eventgrid-namespaces.tgz: - resolution: {integrity: sha512-O9ZF8g9XT7xZYj3TcTOvY4wTeO9Raqrp8LwyZ+JporjChMuFW+wMHI+nZDwwrsl6N32HwBOgEGxkMfbeUfPS5w==, tarball: file:projects/eventgrid-namespaces.tgz} + resolution: {integrity: sha512-vz4DlGvIjf5AnZOkX6nssvhXCyKtnCaEqSMK87AvUXV+82oZkHoBUYS+uGUyvbc41QpKDhAFvlfJ3075zeqeGQ==, tarball: file:projects/eventgrid-namespaces.tgz} name: '@rush-temp/eventgrid-namespaces' version: 0.0.0 dependencies: @@ -20659,7 +20657,7 @@ packages: dev: false file:projects/eventgrid-system-events.tgz: - resolution: {integrity: sha512-dvwptsjtJB2PVHFuNjQ+8uxjehJh4m2HfQxRHyRUrJDu3fRGBz1oVwFH8C3LZRK2KJ9L7Ex+cG5WS6sFirw0Yw==, tarball: file:projects/eventgrid-system-events.tgz} + resolution: {integrity: sha512-AvJTix3adOZu+3Om1/NTt8WrXM7AEvsCBISWBxA/G7DIsAt71Dd1wXfJ0VHTyN09XHBtnlilw8v91XeI+OYfLQ==, tarball: file:projects/eventgrid-system-events.tgz} name: '@rush-temp/eventgrid-system-events' version: 0.0.0 dependencies: @@ -20705,7 +20703,7 @@ packages: dev: false file:projects/eventgrid.tgz: - resolution: {integrity: sha512-ILrGJar3JvzC7lDa8Wetz2feKDOJ4NzfbLuq6RMrykqYK8nwMXKshgaGJL9S6KCM9wyLTp8qnc+ih9RXUMv/tA==, tarball: file:projects/eventgrid.tgz} + resolution: {integrity: sha512-Wu3hnv9c3SJxmn0fd+aGRpKC9gBptmVSaCYW5tXssbfaUukCNhoa6X8DkHmPCk54BZis7V4B4Y2LlIwT6RfsBg==, tarball: file:projects/eventgrid.tgz} name: '@rush-temp/eventgrid' version: 0.0.0 dependencies: @@ -20748,7 +20746,7 @@ packages: dev: false file:projects/eventhubs-checkpointstore-blob.tgz(chai@4.3.10): - resolution: {integrity: sha512-KISLhW9PselcRLjkVSay21fpWYISFxqKTQlnv2tV8jdh4Z8QLwmA8u6bAdhh9xkYkYsSjymac0rPE9+/BFPVvA==, tarball: file:projects/eventhubs-checkpointstore-blob.tgz} + resolution: {integrity: sha512-d0r9Tcp+PR88ElbvXVtloMca/5o3x7baoqzfzU6erNYp3+qDb28vnauB7wgtSr/JCNFXUUEwCRdCDkqnj2SjIg==, tarball: file:projects/eventhubs-checkpointstore-blob.tgz} id: file:projects/eventhubs-checkpointstore-blob.tgz name: '@rush-temp/eventhubs-checkpointstore-blob' version: 0.0.0 @@ -20798,7 +20796,7 @@ packages: dev: false file:projects/eventhubs-checkpointstore-table.tgz(chai@4.3.10): - resolution: {integrity: sha512-Ny8nr/HPAu5aYD9/bnMfar/r9gxKq8fKwiz9RzlS8Uznvo9YDy0IAt3ABTRrI2GISaiVYhxjwWOzPvgtSlEGJA==, tarball: file:projects/eventhubs-checkpointstore-table.tgz} + resolution: {integrity: sha512-shPBb4XPKzwZkYDOvEn5AqC4nSdal0o+RW0dFDOE1FAdPmN5uyouad+Na48MtP3aHiDL9ObtRPeh5xkX905SIw==, tarball: file:projects/eventhubs-checkpointstore-table.tgz} id: file:projects/eventhubs-checkpointstore-table.tgz name: '@rush-temp/eventhubs-checkpointstore-table' version: 0.0.0 @@ -20846,7 +20844,7 @@ packages: dev: false file:projects/functions-authentication-events.tgz: - resolution: {integrity: sha512-xpMJeTbQCYT8v4YUM8DmnYM2Mx9BpujxlmtMZvKs8K/AaUcfEeTnvo0Mh74ndUTDDYxppXl2eg3oWrqjbEcgAg==, tarball: file:projects/functions-authentication-events.tgz} + resolution: {integrity: sha512-itJGbhq6oASDQOvzRN9Fu8x/cb0lAOVo+xXXmIGdODdRWFOPxUQ+jIM+fvh7o+5IrsVD8u5deTC1azb8/BOFhg==, tarball: file:projects/functions-authentication-events.tgz} name: '@rush-temp/functions-authentication-events' version: 0.0.0 dependencies: @@ -20926,7 +20924,7 @@ packages: dev: false file:projects/health-insights-cancerprofiling.tgz: - resolution: {integrity: sha512-mPpsWg7bKRP0WhY8Mn5P9oa5YCmWvkH4wzIV4owrPbJ5VUp6nyzwyXrh7k9YZEwAD7MjIdw3whhK6z+mrg+3bw==, tarball: file:projects/health-insights-cancerprofiling.tgz} + resolution: {integrity: sha512-taNdo6C+pziC8GuaUSlJszQVS9CyhDuhEQKpYIAxg39lrWaR3gZYIw3HaN72q661dxz/Y/8XqiC1PchTWvxuug==, tarball: file:projects/health-insights-cancerprofiling.tgz} name: '@rush-temp/health-insights-cancerprofiling' version: 0.0.0 dependencies: @@ -20970,7 +20968,7 @@ packages: dev: false file:projects/health-insights-clinicalmatching.tgz: - resolution: {integrity: sha512-kEOvHH/I6Dr3BhPrj0p8HE5O24bqnQFbqrLtbgs5akoqqQcg/c8YwxKjc2S6CkA9TkdImmJxxzTAwGhsmhAWmg==, tarball: file:projects/health-insights-clinicalmatching.tgz} + resolution: {integrity: sha512-GK2m80WMo6dQpBr3sCVXUWiJ85RW1mbUvf4a1wRMFcpbRh2s/fTR/ImDeXMRQ7ZFc37jblG5UCg8LF+Zut23Hg==, tarball: file:projects/health-insights-clinicalmatching.tgz} name: '@rush-temp/health-insights-clinicalmatching' version: 0.0.0 dependencies: @@ -21014,7 +21012,7 @@ packages: dev: false file:projects/health-insights-radiologyinsights.tgz: - resolution: {integrity: sha512-tYmOg/Hh5xquvQQ45V9HmTkbl4Q5j1pLNlVgjsiTz5jABWLdgvqoW+CE8I+P6DzXg0hxah3hs8nLKmfpWlnULA==, tarball: file:projects/health-insights-radiologyinsights.tgz} + resolution: {integrity: sha512-bgurZskiRSz/XGbKy/ZG3whKFQj9ebEPUSnfBJmwgwTZvygVq98ic5Sl0dONQQXbRojfxjSulQd9ZyjCMqhzdg==, tarball: file:projects/health-insights-radiologyinsights.tgz} name: '@rush-temp/health-insights-radiologyinsights' version: 0.0.0 dependencies: @@ -21058,7 +21056,7 @@ packages: dev: false file:projects/identity-broker.tgz: - resolution: {integrity: sha512-auccxC3FZ1olkb6VGzqekC631EppXcmPBCvtUPp0zxDDhovpiGwfozjN2LflA/8+xccHUH9iJXskcqXKhniVrQ==, tarball: file:projects/identity-broker.tgz} + resolution: {integrity: sha512-gzFe7YDnt2jSDsfkIgkTeOuF6P4OngqRlIw3j/EkmucdPoIRLI+Qk0JsWlL4buy9PqwgsioHm+CKIWAeJYm+GQ==, tarball: file:projects/identity-broker.tgz} name: '@rush-temp/identity-broker' version: 0.0.0 dependencies: @@ -21084,7 +21082,7 @@ packages: dev: false file:projects/identity-cache-persistence.tgz: - resolution: {integrity: sha512-Jncuf2uo8ooKHtu6DbacGdqw0rrgeWkMyzCnBpqveXMkJiYYUmuSKjCox45S2Up6O868Xm5MhbY0zShRRYAcEg==, tarball: file:projects/identity-cache-persistence.tgz} + resolution: {integrity: sha512-0thxM8DrK7tB2vOmAf2w7m99QKSRMHuwlc7ALykcHGiEAbCN9JEbVdT+b0sEGjqna89Vl5KQJtjRRktLnFPDCw==, tarball: file:projects/identity-cache-persistence.tgz} name: '@rush-temp/identity-cache-persistence' version: 0.0.0 dependencies: @@ -21118,7 +21116,7 @@ packages: dev: false file:projects/identity-vscode.tgz: - resolution: {integrity: sha512-URwxIrwnahyU1AEvFjM8dyJ9NmuYtiB8fXxC0Vywv4SfjvRMoZP6MU3vLqh4WI0XgXu/BUL5cSQcHhsuiFIn+A==, tarball: file:projects/identity-vscode.tgz} + resolution: {integrity: sha512-7wFwOEU77YA+6eg2Xs7S8xD4eXOUfUcPc4Ic8g2JDQ1COfG1Sh6MiADCcnB8jFbjLrTLGUr/XsqI0eu9oOX/bA==, tarball: file:projects/identity-vscode.tgz} name: '@rush-temp/identity-vscode' version: 0.0.0 dependencies: @@ -21151,7 +21149,7 @@ packages: dev: false file:projects/identity.tgz: - resolution: {integrity: sha512-Yfh8RNV8C8v5Qn9qoZ0dWy0CDr6YCMKSGZhtCDe/yNniRM8XhtpMtSuSEkPE2v+3EERveusuBEigg6kPvKU2rg==, tarball: file:projects/identity.tgz} + resolution: {integrity: sha512-+dh1fu1N+pQDI4kqEYbQNKheyktQ47Buez8cgYnHaXf/gmPivfBdqOJbzqY4ERdUllHdhYTQIgdIN4yjx506Yg==, tarball: file:projects/identity.tgz} name: '@rush-temp/identity' version: 0.0.0 dependencies: @@ -21206,7 +21204,7 @@ packages: dev: false file:projects/iot-device-update.tgz: - resolution: {integrity: sha512-L6Rb05gX2p7+7IhlOTP40zlIIX46yzcZdDN1OcriLXaJlDKG/UaEJKeGIiP55t7ccaHraCI2/8zCNk+nD78Dag==, tarball: file:projects/iot-device-update.tgz} + resolution: {integrity: sha512-chcE5/PejYYJo8iEsz2ycDxv/ZVpecALpQYbrR2HQI1jidzV2YD2JwHanxClVqUBoWsh/9KtWBc59tjOcbB/IA==, tarball: file:projects/iot-device-update.tgz} name: '@rush-temp/iot-device-update' version: 0.0.0 dependencies: @@ -21250,7 +21248,7 @@ packages: dev: false file:projects/iot-modelsrepository.tgz: - resolution: {integrity: sha512-oiZ+//gz3bcUgr9hcw9OThPvzAcSjOcL+kS+42ixwJefTvyUUp5uRZJ7Z4a4VRtUowu2TTEdBJHWAaT2t6xZrg==, tarball: file:projects/iot-modelsrepository.tgz} + resolution: {integrity: sha512-DtswZtrDRCyoe5CyE4F1DZtXb+IMSydNxX2pueLyMJs45GDU0KAZQcS7eTUq+Vc+92AOcPrdDBYXpwTl4PgZnA==, tarball: file:projects/iot-modelsrepository.tgz} name: '@rush-temp/iot-modelsrepository' version: 0.0.0 dependencies: @@ -21293,7 +21291,7 @@ packages: dev: false file:projects/keyvault-admin.tgz: - resolution: {integrity: sha512-0l+vRgGJVWzBwohbRJwlzDZEsI2i1b6G2nEraZQIlOZDJ2ACMBMpfdbOvFKnlJjg/s7eBqgINuyKC9xD8yjn/A==, tarball: file:projects/keyvault-admin.tgz} + resolution: {integrity: sha512-4T4Drp4Ho5XDjqmusRaUkqzfMRXIP5g2wNH4/yQLP+IKrwX6cIRBA7VjIXn9iYFikcw8+Dyove8130WKf6KnAQ==, tarball: file:projects/keyvault-admin.tgz} name: '@rush-temp/keyvault-admin' version: 0.0.0 dependencies: @@ -21331,7 +21329,7 @@ packages: dev: false file:projects/keyvault-certificates.tgz: - resolution: {integrity: sha512-OSSAq7tCo7hhq8xAcv7Rlnt1mp11jNp7lYrIAyeRuFKXYhXxuAF21YeiJZ47/jKH6wjHFyOhP446GQDlusdZdw==, tarball: file:projects/keyvault-certificates.tgz} + resolution: {integrity: sha512-hHHFZjEUX2s1FPN5WTYcqoT1hqSFS7iJnQvqh6nFyknX+Z9pOUl5+gU6gaxGxwYiLV3yPo+wYN4+w/S9K9x7DQ==, tarball: file:projects/keyvault-certificates.tgz} name: '@rush-temp/keyvault-certificates' version: 0.0.0 dependencies: @@ -21369,7 +21367,7 @@ packages: dev: false file:projects/keyvault-common.tgz: - resolution: {integrity: sha512-ROkynrzZ72k53lTSCwgLXCik7SJyXmcYaHM0RedhH38eZ1LYE3LK6y1CHLbGlasTYjS+URjhLM+xuGYzCkYGsA==, tarball: file:projects/keyvault-common.tgz} + resolution: {integrity: sha512-rTXsqvFYag+m2JKDGB2LuWRhQ/I87lcBSEe2rR5XXBCv/nqLjTZn273dRDGiLm+fTb/c03Vy3higYqgStuCNZg==, tarball: file:projects/keyvault-common.tgz} name: '@rush-temp/keyvault-common' version: 0.0.0 dependencies: @@ -21405,7 +21403,7 @@ packages: dev: false file:projects/keyvault-keys.tgz: - resolution: {integrity: sha512-Arabi8Kvb9gB27iWGVVxCGHBKVXia068Un71mf6vFse3SDxhb4lAr7FnlboEuKDy9pecyRqMguCiovXHHDc2NQ==, tarball: file:projects/keyvault-keys.tgz} + resolution: {integrity: sha512-Y2UfpOV8HfTmUGL1uYR7FJM2bNyeTyMQ2pD0+9u/uHIuZmuIgfX3aYMtn0ZmIaspNXDDnzUEDahvgKZbJsd0Pw==, tarball: file:projects/keyvault-keys.tgz} name: '@rush-temp/keyvault-keys' version: 0.0.0 dependencies: @@ -21444,7 +21442,7 @@ packages: dev: false file:projects/keyvault-secrets.tgz: - resolution: {integrity: sha512-FkFIzmZTou+f+aZuCRF/Sa1XX7k4MGMmScCA8ZXbxsYl86d4R7iU9yyGaZ2fnrsQvvdlrRfZDeqQhta3AtCxrw==, tarball: file:projects/keyvault-secrets.tgz} + resolution: {integrity: sha512-XdGtBXoiBvpODd8UhGwxazB7/nQiYZxp2/mMGE/pwVKyi64zTVMa7FZKGnJolBlWvycaJJ8Qxql3Eg3c9EvDOg==, tarball: file:projects/keyvault-secrets.tgz} name: '@rush-temp/keyvault-secrets' version: 0.0.0 dependencies: @@ -21477,7 +21475,7 @@ packages: dev: false file:projects/load-testing.tgz: - resolution: {integrity: sha512-snXaOoId8+jM88fmjCQQ4/XU7k6ENGMuzjfRrmswTNGBqNB1kgpqCWkMc0dC80Lb65OrEXLlREqZ+F+kORoY+A==, tarball: file:projects/load-testing.tgz} + resolution: {integrity: sha512-U314GsbjjWSJHdmjAo6qwSwuCTTFiPUB9AWGKK/9tU33CqV9wIfTrez1uuFhzteWwfMPXgLh+RnJjrzYBYpOdA==, tarball: file:projects/load-testing.tgz} name: '@rush-temp/load-testing' version: 0.0.0 dependencies: @@ -21594,7 +21592,7 @@ packages: dev: false file:projects/maps-geolocation.tgz: - resolution: {integrity: sha512-VovwxhAUCkG5RE6SuyT7+ojJw++ggAxob8pEC9G9VkwENup67eOunl0wbgZywCLMuMrqlHtVxjLHhLMteIN9YQ==, tarball: file:projects/maps-geolocation.tgz} + resolution: {integrity: sha512-ySfkp5wDGj+DQd49810Knq6uM5KLIgM2sD3THKJJhFe7Tp+7Y1d9nR3m3JErYhrGoMQ+N7iH2wUOjUndgWMGgQ==, tarball: file:projects/maps-geolocation.tgz} name: '@rush-temp/maps-geolocation' version: 0.0.0 dependencies: @@ -21637,7 +21635,7 @@ packages: dev: false file:projects/maps-render.tgz: - resolution: {integrity: sha512-4fhC7NQ4IFqpCKGPhQi4hC7VPCNRv4LW8TmDVW6ZaiavuBLQHfUBodZyz00xli+Oe+ZfBnW+0M+iBtrmv2QdRA==, tarball: file:projects/maps-render.tgz} + resolution: {integrity: sha512-DrEwi8UQP65AkDO5eQx9LbwzEGtngMa8+aoOuoEZ3XdfLM5te0RH2g1B2ugosRq7lbjmRpuex6xBKZE3tQw7Yw==, tarball: file:projects/maps-render.tgz} name: '@rush-temp/maps-render' version: 0.0.0 dependencies: @@ -21680,7 +21678,7 @@ packages: dev: false file:projects/maps-route.tgz: - resolution: {integrity: sha512-LyPVnRa2uzem6ltg7zWy1AE2b9basIJ3Gv18WIahor8uhx+1hqoFNbXTZ3gO/ujh1yr28R8f4fwlmw/+t8Jm3A==, tarball: file:projects/maps-route.tgz} + resolution: {integrity: sha512-0ctRSAumdIjIYk2gsJWzoER0exI6GI4XYhIcuVJH1xNf19LCLOw0erfKvdgYnMscP447hOavv+t1DHahw6yUsw==, tarball: file:projects/maps-route.tgz} name: '@rush-temp/maps-route' version: 0.0.0 dependencies: @@ -21724,7 +21722,7 @@ packages: dev: false file:projects/maps-search.tgz: - resolution: {integrity: sha512-WsYW5kwdYbvUQjC/vQNOkjZIDYvu8m4rfdXl0N2n9XKNyuEU+cqvn/AXC7bxg6E8p1JfGtIeH1F0L9yRNKO2Rw==, tarball: file:projects/maps-search.tgz} + resolution: {integrity: sha512-X/aBErvhTJe1CqpWhvb7NuzkbSSNzua6ZCpZj7zq43E9KiyvZPm47NcdNTZUXs0UCP+NnH2k+RXzU8ihSCSQqQ==, tarball: file:projects/maps-search.tgz} name: '@rush-temp/maps-search' version: 0.0.0 dependencies: @@ -21768,7 +21766,7 @@ packages: dev: false file:projects/microsoft-playwright-testing.tgz: - resolution: {integrity: sha512-fAeTaMO6BcCRqYqJsdbRtGrN0f5UOnyaTOVpam1JIAQUHkZD6mb5N6wldxAZwmzrdDqGfHlvmKIjA8W8d0GjHw==, tarball: file:projects/microsoft-playwright-testing.tgz} + resolution: {integrity: sha512-5ZtQtASg+gjAwV0BZ3pqTl2taVn2mW46wnhVjYnUhjn08xDzhaRqPvupmTT6S4Nfc1TcP+J/dQWhqEqwD22HGw==, tarball: file:projects/microsoft-playwright-testing.tgz} name: '@rush-temp/microsoft-playwright-testing' version: 0.0.0 dependencies: @@ -21790,7 +21788,7 @@ packages: dev: false file:projects/mixed-reality-authentication.tgz: - resolution: {integrity: sha512-GKQTQbATcr7Bn3x61XVq+B/OmwqNwT+KwK78Y1U8sTrrF/vTTtl3T5InNOEDDinBIVJf8PiXc1SBcNrhA2FOjQ==, tarball: file:projects/mixed-reality-authentication.tgz} + resolution: {integrity: sha512-3oEtedYQWqsu6CcXIdRArmA/BDyKw0z7JJK2ZClXwsrrSChe21w33/rn0O1/5On5D6adAxHj/yVeNJpya+N1Cg==, tarball: file:projects/mixed-reality-authentication.tgz} name: '@rush-temp/mixed-reality-authentication' version: 0.0.0 dependencies: @@ -21832,7 +21830,7 @@ packages: dev: false file:projects/mixed-reality-remote-rendering.tgz: - resolution: {integrity: sha512-mzjuF+654T6hS8NwWGpwKoMVamIGd/XuGdpnyeZVTvs687G58OOeq6HUZuI0713v9fjtPZlZL+8SwCfS/bsvLQ==, tarball: file:projects/mixed-reality-remote-rendering.tgz} + resolution: {integrity: sha512-oRY18e2LnLfvlnwWYOKGsiDe6/Sd1XJl/IHWpJ8pAgywNe5S2/GGsP8LZDBVmN05YBjnZV89R0QUJFxSBul+lg==, tarball: file:projects/mixed-reality-remote-rendering.tgz} name: '@rush-temp/mixed-reality-remote-rendering' version: 0.0.0 dependencies: @@ -21877,7 +21875,7 @@ packages: dev: false file:projects/mock-hub.tgz: - resolution: {integrity: sha512-MbBImLsFhjW8dGBiTu1I/W8MEKTMLu155XLguuAijn52GYEOlUQRjgbFTf9uQ7A4S1GQzNrgTqIfdSV0/CQELA==, tarball: file:projects/mock-hub.tgz} + resolution: {integrity: sha512-XQS2MMS5Q1hRiH/QR6+Swm4E+0t/Gx5x8pQLGO/tmsyxmD/YrRmVUrSweu8BTNRTnBvHj+eHR0Src+iPlYdZLg==, tarball: file:projects/mock-hub.tgz} name: '@rush-temp/mock-hub' version: 0.0.0 dependencies: @@ -21910,7 +21908,7 @@ packages: dev: false file:projects/monitor-ingestion.tgz: - resolution: {integrity: sha512-RDs8KBNRW7hQgx/kOuOp2Yr0F9LJDfwU82SrWb0w0s2kfPuzxg0FVAd6NRtIEPF2gX5P3pqtm0UpfutN1l+ZEQ==, tarball: file:projects/monitor-ingestion.tgz} + resolution: {integrity: sha512-cRuHz8yQdwmhQN1s3AiWPL30Osvv2lQIkF3ojq1QIMkrijM8Ap5Gb7dYY7LTdcpOodiOsI3VZ70LrYWqGOGbnQ==, tarball: file:projects/monitor-ingestion.tgz} name: '@rush-temp/monitor-ingestion' version: 0.0.0 dependencies: @@ -21956,7 +21954,7 @@ packages: dev: false file:projects/monitor-opentelemetry-exporter.tgz: - resolution: {integrity: sha512-PKcQfcMWprkQyR8yhbauSh6UnNh6Cj1m17jX1SNWOjfGlEV7Wp+NAJGRtBgubCATiHVG5Fc1XcLaiw39adHFng==, tarball: file:projects/monitor-opentelemetry-exporter.tgz} + resolution: {integrity: sha512-yN4UDMwFzZwO1YWZsdRWEG4ZEO6T0Tp0M38HOwaX5n3dgeWu6rwNPxsbYDsYleQtFSo6opDOyiadTw1Yh1vnTw==, tarball: file:projects/monitor-opentelemetry-exporter.tgz} name: '@rush-temp/monitor-opentelemetry-exporter' version: 0.0.0 dependencies: @@ -22010,7 +22008,7 @@ packages: dev: false file:projects/monitor-opentelemetry.tgz: - resolution: {integrity: sha512-zOhA5xJvpsj6Z4J1TD6w9VQzrFZizAMiRobicdjUFYN5HRTiviOswRTSMtIfaFkqOVtM75A3cWP96JCC5d/UOw==, tarball: file:projects/monitor-opentelemetry.tgz} + resolution: {integrity: sha512-wKbulEFt2AE8WQIq4+nnQT7OVVWGICAfkenXCHK602/xD6dke5lmuVUC/uTG1wApPSMqzSmmWXKkSgiMU+4LgA==, tarball: file:projects/monitor-opentelemetry.tgz} name: '@rush-temp/monitor-opentelemetry' version: 0.0.0 dependencies: @@ -22057,7 +22055,7 @@ packages: dev: false file:projects/monitor-query.tgz: - resolution: {integrity: sha512-HkkRUizRaOlpop0fq+/U++wYFe5iDv35zb3pwyLvCaYPja0tga3qIa8yKCYBUhipRbNhIXnnnjeWuSElJ2KTKg==, tarball: file:projects/monitor-query.tgz} + resolution: {integrity: sha512-EKdPsjXBWId0iA7f+D4USmms7S4nuTxT6R2iDeg5hfnKyvqRmfboyle3PH2vuIsJYeDzGZwLyMKoujlg4/b0Yg==, tarball: file:projects/monitor-query.tgz} name: '@rush-temp/monitor-query' version: 0.0.0 dependencies: @@ -22105,7 +22103,6 @@ packages: - less - lightningcss - msw - - rollup - safaridriver - sass - sass-embedded @@ -22156,7 +22153,7 @@ packages: dev: false file:projects/openai.tgz: - resolution: {integrity: sha512-nZfCm9E/tCIDFTYZCLBImgupahnOgO6WBSwh+CU1me+1kPZVAM5YDNkFrcEXSLM963njREw41EAF7soiBVEF8A==, tarball: file:projects/openai.tgz} + resolution: {integrity: sha512-HbvC8ZldtA4WQ2pLFQaqYn7GBJbve7a4L/FlCFInJL8qXMDqC0B0by+XFQRFwJNyhR16BUE4OzqLtmr0RZHi0A==, tarball: file:projects/openai.tgz} name: '@rush-temp/openai' version: 0.0.0 dependencies: @@ -22692,7 +22689,7 @@ packages: dev: false file:projects/purview-administration.tgz: - resolution: {integrity: sha512-N4pvkhA4SXkneEHiVtscH6CCJ0Ic8uvFRkBpquisCwbshSoO4xP3ga/P3F+NqnvJmCFsZWKmhhjat2D/3rYoSw==, tarball: file:projects/purview-administration.tgz} + resolution: {integrity: sha512-TSXTLbmzjVD0vT9WNatMO9fP3kPbxPz8j0tA15zV9Aro/jCxAnZI83RW/PBXF9sl331aoxlbxccx+wy0Hdy3Gg==, tarball: file:projects/purview-administration.tgz} name: '@rush-temp/purview-administration' version: 0.0.0 dependencies: @@ -22733,7 +22730,7 @@ packages: dev: false file:projects/purview-catalog.tgz: - resolution: {integrity: sha512-HliLRHwSvpDwdh/NH9MUo3WLRTS1bIFtMbH9fLtVRekATlZevfltKfo4dYdVjbu4A/MXCnRwMiY98LyWguIk7g==, tarball: file:projects/purview-catalog.tgz} + resolution: {integrity: sha512-mpDALPQmS1Z/2Hfs1wggKivfldnUd+8+wUY3p1hnDoGbV6jnx+xxTkeIq+38xu6ZeRwFAaHYWlg2YK5q8zMjmA==, tarball: file:projects/purview-catalog.tgz} name: '@rush-temp/purview-catalog' version: 0.0.0 dependencies: @@ -22775,7 +22772,7 @@ packages: dev: false file:projects/purview-datamap.tgz: - resolution: {integrity: sha512-SLdjk56wZQ9ZRDDwvgK3gSpr3vp/DSp7jhim8Jxi4q0J0YHb/aS+b5PwUeJAN/9+W1IZr/oQrhPmcq5p9A8HcA==, tarball: file:projects/purview-datamap.tgz} + resolution: {integrity: sha512-BQvuMAyKroJNxkBH2X6hn/6SBM8ecQoNOu9e7fjZWIPBosCExeU7XA2Wv0emr7bLMmhwG6yzaB9xjpvsHNv+Eg==, tarball: file:projects/purview-datamap.tgz} name: '@rush-temp/purview-datamap' version: 0.0.0 dependencies: @@ -22817,7 +22814,7 @@ packages: dev: false file:projects/purview-scanning.tgz: - resolution: {integrity: sha512-KVu+LcIdz8Rw46wtAh3lKSyGo27D5s7cfDJGYJLpEovMycsNTtssbHEPbavDpwugjW/emUZpk5vRlMwBVjCkOA==, tarball: file:projects/purview-scanning.tgz} + resolution: {integrity: sha512-wg5mFlbl2PbEKiyp4WBthQc+6gEWxE2G2HhlBFN3KbVeuxlqBnecCDBxTmZr5d4LPzOw7ImbD9I8emdRZpmN8g==, tarball: file:projects/purview-scanning.tgz} name: '@rush-temp/purview-scanning' version: 0.0.0 dependencies: @@ -22858,7 +22855,7 @@ packages: dev: false file:projects/purview-sharing.tgz: - resolution: {integrity: sha512-gRAvZol9YGN0biBmaJS54rMZ0MR4sMu1ZDu1QY/sLqUBdpTmArsx37OTBU2jvo+1D9P1S/q/Z81xCr/o73jz1A==, tarball: file:projects/purview-sharing.tgz} + resolution: {integrity: sha512-gPIgrn/dlEXISMEAYe+mLIICGr1dV6X3uC91w51TcJ87u5jwjOUDtlj5cxxlmjnySIPUARk4QNDvRl1aNUETjg==, tarball: file:projects/purview-sharing.tgz} name: '@rush-temp/purview-sharing' version: 0.0.0 dependencies: @@ -22902,7 +22899,7 @@ packages: dev: false file:projects/purview-workflow.tgz: - resolution: {integrity: sha512-A1rimJzXHxXEAZLFkoDlDCrCpUNRF4lCgQici0MO9rSX9jHbU67Y+0P3c0AZeNscE1b0eiWJ3ua7THgmTOLvMA==, tarball: file:projects/purview-workflow.tgz} + resolution: {integrity: sha512-mAgnXp2a4X6MCPz1WJR26h73cE3mUD4bvjB1jct7mqRWv0mCN0uaYZfqhhDYFVozgTiY+xIiBSyyrIDDbjJY8w==, tarball: file:projects/purview-workflow.tgz} name: '@rush-temp/purview-workflow' version: 0.0.0 dependencies: @@ -22944,7 +22941,7 @@ packages: dev: false file:projects/quantum-jobs.tgz: - resolution: {integrity: sha512-Co4FWw9wAZmTProRF1gLjoFwdPksG5K4uqlY9lFmYvAQYpi5muWO5rab0UsOeECCD0nFvfCBABoAj+ffzgqqKg==, tarball: file:projects/quantum-jobs.tgz} + resolution: {integrity: sha512-LcPcq+CQlLRl1qN04ARwMlUE2OQi7Bef8aO8uqXIxhejiYFVDLUvtES/oJPoqRTAcYiNs0+6dW7DV/tlyyncdQ==, tarball: file:projects/quantum-jobs.tgz} name: '@rush-temp/quantum-jobs' version: 0.0.0 dependencies: @@ -22988,7 +22985,7 @@ packages: dev: false file:projects/schema-registry-avro.tgz: - resolution: {integrity: sha512-E5x5UqvkFCwb5yua9qhImWd5+3HK41Qoh20egzL1NYzYbNOUq02E/IwR/kUIBzW4pIDo8Hstn1WVbyEkFom8RA==, tarball: file:projects/schema-registry-avro.tgz} + resolution: {integrity: sha512-xy7wUN0smV928ueXcqOM9xeP9JACYQr3NXHdCj4AuZTzkIsCJQc2/AgerhqBiVKlreiJxX899IO2MZ1+gt8MXA==, tarball: file:projects/schema-registry-avro.tgz} name: '@rush-temp/schema-registry-avro' version: 0.0.0 dependencies: @@ -23035,7 +23032,7 @@ packages: dev: false file:projects/schema-registry-json.tgz: - resolution: {integrity: sha512-DVs09V6tkRO9IrH6fzEZxqLqqbdCioyONMLRSiWyWiB6pi41sWsblxd1Sbzgp63Jvb60MvfLcts9q91xu5H9xg==, tarball: file:projects/schema-registry-json.tgz} + resolution: {integrity: sha512-+04dC5VJEQCu+S7YYq/2j+f59MtvVfBy/tt38oeS6sqnce/k3GeXVOOvdHs9iAtghp33OK56GqXiSOnL3V6tPw==, tarball: file:projects/schema-registry-json.tgz} name: '@rush-temp/schema-registry-json' version: 0.0.0 dependencies: @@ -23076,7 +23073,7 @@ packages: dev: false file:projects/schema-registry.tgz: - resolution: {integrity: sha512-3d/qkiJr0hFDrab9mI5M9BrgMIj3gjDt3jDyR36Tz7agptKVGIQUiKDF6wlS3XqErzS2xTFNKK5xK0b9Sx6x0w==, tarball: file:projects/schema-registry.tgz} + resolution: {integrity: sha512-FUgpf2fv08rxi0qzUB1wK4yoAbsAvcHJpxCsCteBgTIZCRS0AYot/AFJRksEMCVkJ8/TBj12aSg/NAYAUBGHzQ==, tarball: file:projects/schema-registry.tgz} name: '@rush-temp/schema-registry' version: 0.0.0 dependencies: @@ -23114,7 +23111,7 @@ packages: dev: false file:projects/search-documents.tgz: - resolution: {integrity: sha512-F8hC64CDbE1Mn4JZCmQr21Sr4Rva8A+sq7ShuhgO3FRdzLybVHqm6pd7aNxhDPtWcSo4serWmn+NnStxfrS7NA==, tarball: file:projects/search-documents.tgz} + resolution: {integrity: sha512-6DIKtC5IocI0eB9weBWdB447cdsRXbagOeSGpXWtpqThYzMmeagZw42XyGazuc+GvYVYnPMSZvbzV6QA4AwX7A==, tarball: file:projects/search-documents.tgz} name: '@rush-temp/search-documents' version: 0.0.0 dependencies: @@ -23160,7 +23157,7 @@ packages: dev: false file:projects/service-bus.tgz: - resolution: {integrity: sha512-mwjW1C4Gi0fUSJX39iGk+JB3ftTK5TCTHHrfvMwbj0Su88tuFAcPFRP3ZB1VTugNjYOdMta9DdlLTx0/GeBz7Q==, tarball: file:projects/service-bus.tgz} + resolution: {integrity: sha512-h3VAF/BwJEz++gcPcaKJXOaKdeNCi+ivQjg7ElYyGw4ZHr79xMK5XC1d5pM9/v0PzYZYyVC3EH626OaUDdyIMA==, tarball: file:projects/service-bus.tgz} name: '@rush-temp/service-bus' version: 0.0.0 dependencies: @@ -23218,7 +23215,7 @@ packages: dev: false file:projects/storage-blob-changefeed.tgz: - resolution: {integrity: sha512-iI+A1FmNhHA01meLv5q47LjpEbwO6OlG+OjB5Suqs93VX52gOJyJt1ytD0WVTZLn4fvWz0PB3HPmqnKvHRgIpQ==, tarball: file:projects/storage-blob-changefeed.tgz} + resolution: {integrity: sha512-g3z0U7sH8A+7aPtYY/h7NmhPoYx4N12mE1GyVw0EENN4iO6jFRVFh4r8y1qcfPXCUewloCiPfF2DxwZR8KmyXg==, tarball: file:projects/storage-blob-changefeed.tgz} name: '@rush-temp/storage-blob-changefeed' version: 0.0.0 dependencies: @@ -23267,7 +23264,7 @@ packages: dev: false file:projects/storage-blob.tgz: - resolution: {integrity: sha512-r02RcODzahaUSfnY0h296MCmtv79NQMPWjGi8DyFbwizKNTJM8WFSvgXuDlYxL0GPg2sUMU+EN9B1t4S5nT9FA==, tarball: file:projects/storage-blob.tgz} + resolution: {integrity: sha512-tLXMghK2zBAg2Xu7p8ZD7UWDt1+h72wfHikoECrSHNPY33/mEj3yHis8XgnsczYKdXKY0PaV5YD8/sfIDS8sUg==, tarball: file:projects/storage-blob.tgz} name: '@rush-temp/storage-blob' version: 0.0.0 dependencies: @@ -23312,7 +23309,7 @@ packages: dev: false file:projects/storage-file-datalake.tgz: - resolution: {integrity: sha512-+shRKhCjZ/9v0XZMOnix+vD5KXCv2086A0UQPe4D7wrheuiiHiIOxfgPcXzgPbkuGbk+Zh5C7kqeuu4RA7pyRw==, tarball: file:projects/storage-file-datalake.tgz} + resolution: {integrity: sha512-0S+88/SFOzE4eUYtKCMMikxfTh8NzfL5hEGTleZyl+URlPSpUBt/SJE35R9OlVOI+ihfc9RE66XdsYktjy5SBQ==, tarball: file:projects/storage-file-datalake.tgz} name: '@rush-temp/storage-file-datalake' version: 0.0.0 dependencies: @@ -23360,7 +23357,7 @@ packages: dev: false file:projects/storage-file-share.tgz: - resolution: {integrity: sha512-p4/EM8Ki1XWN0vQd5fAgicKvjJ3ijmgTMDifdEMLTP3S0V+fzX53la9KG8KnQd+S6wcfkY1Ydg43f5f8hUSrKg==, tarball: file:projects/storage-file-share.tgz} + resolution: {integrity: sha512-YwK1nFzjoDaHcHuGiKSexyTzZmiRARdZ6VeWkvXMmmOckWkIzYfcUkwEnIhU60ban96FVT/6BrczNFgvHMOCUg==, tarball: file:projects/storage-file-share.tgz} name: '@rush-temp/storage-file-share' version: 0.0.0 dependencies: @@ -23407,7 +23404,7 @@ packages: dev: false file:projects/storage-internal-avro.tgz: - resolution: {integrity: sha512-EXpPakqjECebJ6MjPjaIgukrSni101wEVz//ASdcOh4bFMMO8DkWyTcYmBL1TupRuYJn5vXAkxfV0ebzPDWZMA==, tarball: file:projects/storage-internal-avro.tgz} + resolution: {integrity: sha512-SglqrWttikVc/VLAUSYZRqf4RVhpgsPsdjOPva54swsUWeSIvWte7s/5WM3O6QgtrGA27RVFzXzYWwf9yzlAyg==, tarball: file:projects/storage-internal-avro.tgz} name: '@rush-temp/storage-internal-avro' version: 0.0.0 dependencies: @@ -23448,7 +23445,7 @@ packages: dev: false file:projects/storage-queue.tgz: - resolution: {integrity: sha512-tQA693LxMkB/j63WN5aje3x5eGEOCCHCp9aU+pU8dSmfwnRYgKzRWPFmw6EsaILuugQlCTi1mjnHwca6q8xkKg==, tarball: file:projects/storage-queue.tgz} + resolution: {integrity: sha512-7PfyEm0o178jiAjKrXJJ/BGBF09A1GzA3dTgPIPNQ6Y4XJitrpDIm4jliYFQYvoiJgBDG2zvzjNP2Z4HCa2sCw==, tarball: file:projects/storage-queue.tgz} name: '@rush-temp/storage-queue' version: 0.0.0 dependencies: @@ -23492,7 +23489,7 @@ packages: dev: false file:projects/synapse-access-control-1.tgz: - resolution: {integrity: sha512-m3N1xErlj9HhfqNUHajK2+nn3vynK+3jHq4PmgEtJWkV2omwaVIIWQLkcvRonuJwZzoNx/xPJ+Q6r9yhu65EDg==, tarball: file:projects/synapse-access-control-1.tgz} + resolution: {integrity: sha512-qlA5jXPaiKV9bQrlIn2U/vaLaPgSF/bpjVLxUwCCclLJqZVz1ehQeUue5bXKK+w56tHIIivYr3wvMi5l0Mdf0A==, tarball: file:projects/synapse-access-control-1.tgz} name: '@rush-temp/synapse-access-control-1' version: 0.0.0 dependencies: @@ -23537,7 +23534,7 @@ packages: dev: false file:projects/synapse-access-control.tgz: - resolution: {integrity: sha512-SoSnPwhOcMKLwBXwh2GdKXb1fkX9NGMVONVwJkXxMp7aaa839w1SjXCGxIjK2BYabSvHk21c1ngZAPt+ZGILyg==, tarball: file:projects/synapse-access-control.tgz} + resolution: {integrity: sha512-Ygq8BhZRt1y5gIyWYIsWJsZ+mpMUg9vgh9hkhAjXVnLrecmqVNbn+YDw4DY88UB7y+afWW5WEcYAGUDyevPeYQ==, tarball: file:projects/synapse-access-control.tgz} name: '@rush-temp/synapse-access-control' version: 0.0.0 dependencies: @@ -23584,7 +23581,7 @@ packages: dev: false file:projects/synapse-artifacts.tgz: - resolution: {integrity: sha512-cPuXjLqnzeCwez71iefTUmVuKKvwYHGtzJZHZSYO93o7MzfjiRQ98fVwVyDzdAKxfT8iQ+IXRzhHdgEcXrm23A==, tarball: file:projects/synapse-artifacts.tgz} + resolution: {integrity: sha512-lT2WxvoGEfgc4Q6QE2r2DG+52BU5wFRdMPWmZTCkKCsJIOwBVmhV3ewHJlHEFEbhLxQuyqxYwoMaCSvChPKcgQ==, tarball: file:projects/synapse-artifacts.tgz} name: '@rush-temp/synapse-artifacts' version: 0.0.0 dependencies: @@ -23632,7 +23629,7 @@ packages: dev: false file:projects/synapse-managed-private-endpoints.tgz: - resolution: {integrity: sha512-mPSzId+nr58eJ8zG06pkG06LJfaf1oygJmwL5ismIDlSIy0pkpMZ+3FbsuDgoUmK56lqmznQJmqrtc1y+UwOPg==, tarball: file:projects/synapse-managed-private-endpoints.tgz} + resolution: {integrity: sha512-M8Tqc7HZYLwzaffD0npPj+8au49x82iVNX3VkLArIkCzyUsL22HqOx5witrWIvRIW/iEqKJsMYnXs1m70jWVAw==, tarball: file:projects/synapse-managed-private-endpoints.tgz} name: '@rush-temp/synapse-managed-private-endpoints' version: 0.0.0 dependencies: @@ -23674,7 +23671,7 @@ packages: dev: false file:projects/synapse-monitoring.tgz: - resolution: {integrity: sha512-91dOmm1Kb5LinwQIYqcsf9h+zpsd9YhgCa6er7RSfpqG0qiXodPIeEcHsAMI8T8BmyobuZMJwcps588ZLCfiWQ==, tarball: file:projects/synapse-monitoring.tgz} + resolution: {integrity: sha512-ye5ZB6xij2A1rB7serjsWBPhjRxD80yGU/2zoQCTag6vG0M/BbvhAXu+x0ThaO6Bvvb5kMrDp5ghHIBqjFMbfw==, tarball: file:projects/synapse-monitoring.tgz} name: '@rush-temp/synapse-monitoring' version: 0.0.0 dependencies: @@ -23710,7 +23707,7 @@ packages: dev: false file:projects/synapse-spark.tgz: - resolution: {integrity: sha512-dbTn8oGToq0IpLMUyE3dkTj1wtBSIcCTP5JS40x1jhjLmDEwMYbuBudZRIwE46IUJBKEVG+gyIZk3KX7ASKcSw==, tarball: file:projects/synapse-spark.tgz} + resolution: {integrity: sha512-mR+UC0KxnetVOrs2A2JtB9fOMljSDToc7UfLsrDTOcHFdZTUbbriZXtNJmudut/RXjJ9PloV9S4qMbQab3/e4w==, tarball: file:projects/synapse-spark.tgz} name: '@rush-temp/synapse-spark' version: 0.0.0 dependencies: @@ -23752,7 +23749,7 @@ packages: dev: false file:projects/template-dpg.tgz: - resolution: {integrity: sha512-r1cFslcC4IYlnE5cgq3CLrQWoWWnDAfTUkJPuiQWHu+Rl+Ryb0yF1mi43501N0oKwvAksdSf1g+XgEYHCG/CSg==, tarball: file:projects/template-dpg.tgz} + resolution: {integrity: sha512-wYF0Ghijqe5ChRQ1Mm3WPgFCrVjGItpUywmLmFcIjFev16RdOA0aQf3YpC6tvVBZHM00vuW+GJ+aEpAdUL9ZAQ==, tarball: file:projects/template-dpg.tgz} name: '@rush-temp/template-dpg' version: 0.0.0 dependencies: @@ -23794,7 +23791,7 @@ packages: dev: false file:projects/template.tgz: - resolution: {integrity: sha512-XRufHBFsDzlUNLV5bh81P0gJPlE8FKnjNwbVXsA61N/8H8ZTrCftj7zGgd6yruBgl1hQmTmazsznx4vStZQTjw==, tarball: file:projects/template.tgz} + resolution: {integrity: sha512-Vc/FTk71GLJxhhRPmo2aqP4uc1wpf6iqgin1Gq6gouqJdvmeZwC46SoYt+oh9jiqGjz6BiIR5sieK8l4KlHQuQ==, tarball: file:projects/template.tgz} name: '@rush-temp/template' version: 0.0.0 dependencies: @@ -23879,7 +23876,7 @@ packages: dev: false file:projects/test-recorder.tgz: - resolution: {integrity: sha512-5QKIlZnhJOwXSJHPeddF5cpi51G5tOiV9leAA5y4J7pQx1mVT0nC+jT9VIriqn9bT1b0BWe08rHi6xXGZ/+MQw==, tarball: file:projects/test-recorder.tgz} + resolution: {integrity: sha512-ca93qy0WlC+uOB/l2f8zrE6nmV6Cz8dUIsfMylW/L+rQF95T6ulPyMUV3He8s9tRsFYdNe+eIWrXqVdAzuToXA==, tarball: file:projects/test-recorder.tgz} name: '@rush-temp/test-recorder' version: 0.0.0 dependencies: @@ -23954,7 +23951,7 @@ packages: dev: false file:projects/test-utils.tgz: - resolution: {integrity: sha512-bWAB8jF/pwwrhCpn6xdaRIVWcB7SqIP8GobwxD3YDI20XhVtGphTAK9sRhwy++GCxX89uIGSy7sS8QQ7ggHnoQ==, tarball: file:projects/test-utils.tgz} + resolution: {integrity: sha512-wZSudXx+6doapn71XFuSN01fZqsuPPPUkLws2cNTB4La+YL2sEoT4I3/2NU9xg9A2kwMBj4VSJzPCUQW8nzAxA==, tarball: file:projects/test-utils.tgz} name: '@rush-temp/test-utils' version: 0.0.0 dependencies: @@ -23990,7 +23987,7 @@ packages: dev: false file:projects/ts-http-runtime.tgz: - resolution: {integrity: sha512-l4groHPefXSEcgRFrYFtUeH7er0h2mNZLPHFE6urHWciAs7DQjj30VeJkbc98foYmnDacTN0jk5LsDcngA8CYg==, tarball: file:projects/ts-http-runtime.tgz} + resolution: {integrity: sha512-npn/z1hHJ0qqSXSxNecWqYSM2b0ZnXjWKMBKVEObMM+kxrWugOdvQNUmEmsD/r9bnHsIYmMg/u+qaOmh/GOyTA==, tarball: file:projects/ts-http-runtime.tgz} name: '@rush-temp/ts-http-runtime' version: 0.0.0 dependencies: @@ -24085,7 +24082,7 @@ packages: dev: false file:projects/web-pubsub-client.tgz: - resolution: {integrity: sha512-uG60zoNjv8V8f80jTuTk4tCLHrsav6AzNUV6lOCNl6ufYpn9flE1a6ENWIsyWw+bKPuTsYWr82A9J4HiX1r9Cg==, tarball: file:projects/web-pubsub-client.tgz} + resolution: {integrity: sha512-LWe1BoHWv+zoZwWKDcUy0JZVANS0qXr6zb180RuXyo6jhcFEdVBAYyqN0GFb7WuMydN83bMv2h6Ws/bEqGXPzQ==, tarball: file:projects/web-pubsub-client.tgz} name: '@rush-temp/web-pubsub-client' version: 0.0.0 dependencies: @@ -24177,7 +24174,7 @@ packages: dev: false file:projects/web-pubsub.tgz: - resolution: {integrity: sha512-V31UN4SW36QYf87wXbGsW6uFCi/YeNeENfxu8ohkVd7j0EI+tE4ZrVLkMOV93tfSjNTK0EVKdWL1SILRi5QFXg==, tarball: file:projects/web-pubsub.tgz} + resolution: {integrity: sha512-DP1BGLo7iPMjZiNWklIJPPxYS7lE3nurONLOIlSMHBH7eieYiQ+ut8QCOaPRvcT+DAwDrkqL1NJat3oyMnMMOw==, tarball: file:projects/web-pubsub.tgz} name: '@rush-temp/web-pubsub' version: 0.0.0 dependencies: diff --git a/sdk/translation/ai-translation-document-rest/CHANGELOG.md b/sdk/translation/ai-translation-document-rest/CHANGELOG.md index 32de784ead1e..5b6263520d81 100644 --- a/sdk/translation/ai-translation-document-rest/CHANGELOG.md +++ b/sdk/translation/ai-translation-document-rest/CHANGELOG.md @@ -1,43 +1,3 @@ -# Release History +## 1.0.0-beta.1 (2024-11-04) -## 2.0.0-beta.1 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed - -### Other Changes - -## 2.0.0 (Unreleased) -### Other Changes -This is a GA release. No new features added. - -## 1.0.0-beta.2 (2024-07-01) - -### Other Changes -- Re-release of 1.0.0-beta.1 as the SDK package was released without types - -## 1.0.0-beta.1 (2024-06-27) -- Initial release. Please see the README and wiki for information on the new design. - -Version 1.0.0-beta.1 is preview of our efforts in creating a client library that is developer-friendly, idiomatic -to the JS/TS ecosystem, and as consistent across different languages and platforms as possible. - -This package's -[documentation](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/README.md) -and -[samples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples) -demonstrate the new API. - -### Features Added -- Added support for Synchronous document translation - [translate-document API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/translate-document) -- Added support for Batch Translation - [start Translation API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/start-batch-translation) -- Added support for Get Translations Status - [get translations status API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-translations-status) -- Added support for Get Translation Status - [get translation status API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-translation-status) -- Added support for Get Documents Status - [get documents status API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-documents-status) -- Added support for Get Document Status - [get document status API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-document-status) -- Added support for Cancel Translation - [cancel translation API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/cancel-translation) -- Added support for Get Supported Document Formats - [get supported document formats API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-supported-document-formats) -- Added support for Get Supported Glossary Formats - [get supported glossary formats API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-supported-glossary-formats) + - Initial Release diff --git a/sdk/translation/ai-translation-document-rest/LICENSE b/sdk/translation/ai-translation-document-rest/LICENSE new file mode 100644 index 000000000000..7d5934740965 --- /dev/null +++ b/sdk/translation/ai-translation-document-rest/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. \ No newline at end of file diff --git a/sdk/translation/ai-translation-document-rest/README.md b/sdk/translation/ai-translation-document-rest/README.md index 06bfc9c1073c..f0f888eed8e9 100644 --- a/sdk/translation/ai-translation-document-rest/README.md +++ b/sdk/translation/ai-translation-document-rest/README.md @@ -1,337 +1,49 @@ -# DocumentTranslation REST client library for JavaScript +# Azure DocumentTranslation REST client library for JavaScript -Document Translation is a cloud-based machine translation feature of the Azure AI Translator service. You can translate multiple and complex documents across all supported languages and dialects while preserving original document structure and data format. The Document translation API supports two translation processes: +Document translation service -Asynchronous batch translation supports the processing of multiple documents and large files. The batch translation process requires an Azure Blob storage account with storage containers for your source and translated documents. - -Synchronous single file supports the processing of single file translations. The file translation process doesn't require an Azure Blob storage account. The final response contains the translated document and is returned directly to the calling client. - -The following operations are supported by the Document Translation feature: - -- **Synchronous document translation**: Used to synchronously translate a single document. The method doesn't require an Azure Blob storage account. - -- **Start batch translation**: Used to execute an asynchronous batch translation request. The method requires an Azure Blob storage account with storage containers for your source and translated documents. - -- **Get status for all translation jobs**: Used to request a list and the status of all translation jobs submitted by the user (associated with the resource). - -- **Get status for a specific translation job**: Used to request the status of a specific translation job. The response includes the overall job status and the status for documents that are being translated as part of that job. - -- **Get status for all documents**: Used to request the status for all documents in a translation job. - -- **Get status for a specific document**: This returns the status for a specific document in a job as indicated in the request by the id and documentId query parameters. - -- **Cancel translation**: This cancels a translation job that is currently processing or queued (pending) as indicated in the request by the id query parameter. An operation isn't canceled if already completed, failed, or still canceling. In those instances, a bad request is returned. Completed translations can't be canceled and are charged. - -- **Get supported formats**: This returns a list of document or glossary formats supported by the Document Translation feature. The list includes common file extensions and content-type if using the upload API. +**Please rely heavily on our [REST client docs](https://github.com/Azure/azure-sdk-for-js/blob/main/documentation/rest-clients.md) to use this library** Key links: -- [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest) - [Package (NPM)](https://www.npmjs.com/package/@azure-rest/ai-translation-document) -- [Samples](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest/samples) +- [API reference documentation](https://docs.microsoft.com/javascript/api/@azure-rest/ai-translation-document?view=azure-node-preview) ## Getting started ### Currently supported environments - LTS versions of Node.js -- Latest versions of Edge, Chrome, Safar and Firefox ### Prerequisites -- An existing Translator service or Cognitive Services resource. More info on [Pre-requisites][pre_requisities]. +- You must have an [Azure subscription](https://azure.microsoft.com/free/) to use this package. ### Install the `@azure-rest/ai-translation-document` package -Install the Document Translation REST client library for JavaScript with `npm`: +Install the Azure DocumentTranslation REST client REST client library for JavaScript with `npm`: ```bash npm install @azure-rest/ai-translation-document ``` -#### Create a Translator service resource - -You can create Translator resource following [Create a Translator resource][translator_resource_create]. - -#### Setup Azure Blob Storage Account -For more information about creating an Azure Blob Storage account see [here][azure_blob_storage_account]. For creating containers for your source and target files see [here][container]. Make sure to authorize your Translation resource storage access, more info [here][storage_container_authorization]. - -When "Allow Storage Account Key Access" is disabled on the storage account , Managed Identity is enabled on the Translator resource and it is assigned the role "Storage Blob Data Contributor" on the storage account, then you can use the container URLs directly and no SAS URIs will be need to be generated. - -### Create a `DocumentTranslationClient` using an endpoint URL and API key `KeyCredential` - -Once you have the value for API key, create a credential -```typescript -const credentials = { key: apiKey ?? "" }; -``` - -With the value of the `KeyCredential` you can create the `DocumentTranslationClient` using the `createClient` method of [documentTranslationClient_class]: - -```typescript -const client = createClient(endpoint, credentials); -``` +### Create and authenticate a `DocumentTranslationClient` -## Examples - -The following section provides several code snippets using the `client`, and covers the main features present in this client library. - -### Synchronous Document Translation - -Used to synchronously translate a single document. The method doesn't require an Azure Blob storage account. - -```typescript -console.log("== Synchronous Document Translation =="); -const client = createClient(endpoint, credentials); -const options: DocumentTranslateParameters = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - ], -}; - -const response = await client.path("/document:translate").post(options); -if (isUnexpected(response)) { - throw response.body; -} -console.log('Response code: ' + response.status + ', Response body: ' + response.body); -``` - -### Batch Document Translation -Used to execute an asynchronous batch translation request. The method requires an Azure Blob storage account with storage containers for your source and translated documents. - -```typescript -console.log("== Batch Document Translation =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const poller = await client.path("/document/batches").post({ -body: batchRequests -}); -const id = getTranslationOperationID(poller.headers["operation-location"]); -console.log('Translation started and the operationID is: ' + id); -``` - -### Cancel Document Translation -This cancels a translation job that is currently processing or queued (pending) as indicated in the request by the id query parameter. An operation isn't canceled if already completed, failed, or still canceling. In those instances, a bad request is returned. Completed translations can't be canceled and are charged. - -```typescript -console.log("== Cancel Translation =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const poller = await client.path("/document/batches").post({ -body: batchRequests -}); -const id = getTranslationOperationID(poller.headers["operation-location"]); - -//Cancel translation -await client.path("/document/batches/{id}", id).delete(); - -//get translation status and verify the job is cancelled, cancelling or notStarted -const response = await client.path("/document/batches/{id}", id).get(); -if (isUnexpected(response)) { - throw response.body; -} -console.log("The status after cancelling the batch operation is:" + response.body.status); -``` +To use an [Azure Active Directory (AAD) token credential](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-with-a-pre-fetched-access-token), +provide an instance of the desired credential type obtained from the +[@azure/identity](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#credentials) library. -### Get Documents Status -Used to request the status for all documents in a translation job. +To authenticate with AAD, you must first `npm` install [`@azure/identity`](https://www.npmjs.com/package/@azure/identity) -```typescript -console.log("== Gets Documents Status =="); -const client = createClient(endpoint, credentials); +After setup, you can choose which type of [credential](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#credentials) from `@azure/identity` to use. +As an example, [DefaultAzureCredential](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#defaultazurecredential) +can be used to authenticate the client. -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const response = await StartTranslationAndWait(client, batchRequests); - -const operationLocationUrl = response.headers["operation-location"] -const operationId = getTranslationOperationID(operationLocationUrl); - -//get Documents Status -const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); -if (isUnexpected(documentResponse)) { - throw documentResponse.body; -} - -const responseBody = documentResponse.body; -for (const documentStatus of responseBody.value) { - console.log("Document Status is: " + documentStatus.status); - console.log("Characters charged is: " + documentStatus.characterCharged); - break; -} -``` - -### Get Document Status -This returns the status for a specific document in a job as indicated in the request by the id and documentId query parameters. - -```typescript -console.log("== Get Document Status =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const response = await StartTranslationAndWait(client, batchRequests); -const operationLocationUrl = response.headers["operation-location"] -const operationId = getTranslationOperationID(operationLocationUrl); - -//get Documents Status -const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); -if (isUnexpected(documentResponse)) { - throw documentResponse.body; -} - -const responseBody = documentResponse.body; -for (const document of responseBody.value) { - //get document status - const documentStatus = await client.path("/document/batches/{id}/documents/{documentId}", operationId, document.id).get(); - console.log("Document Status = " + documentStatus.status); - const documentStatusOutput = documentStatus.body as DocumentStatusOutput; - console.log("Document ID = " +documentStatusOutput.id); - console.log("Document source path = " + documentStatusOutput.sourcePath); - console.log("Document path = " + documentStatusOutput.path); - console.log("Target language = " + documentStatusOutput.to); - console.log("Document created dateTime = " + documentStatusOutput.createdDateTimeUtc); - console.log("Document last action date time = " + documentStatusOutput.lastActionDateTimeUtc); -} -``` - -### Get Translations Status -Used to request a list and the status of all translation jobs submitted by the user (associated with the resource). - -```typescript -console.log("== Get Translations Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = {inputs: [batchRequest]}; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"] - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Statusby ID filter - const queryParams = { - ids: [operationId] - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams - }); - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - console.log("Translation ID = " + translationStatus.id); - console.log("Translation Status = " + translationStatus.status); - console.log("Translation createdDateTimeUtc = " + translationStatus.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + translationStatus.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + translationStatus.summary.total); - console.log("Total characters charged = " + translationStatus.summary.totalCharacterCharged); - } -``` - -### Get Translation Status -Used to request the status of a specific translation job. The response includes the overall job status and the status for documents that are being translated as part of that job. - -```typescript -console.log("== Get Translation Status =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const translationResponse = await StartTranslationAndWait(client, batchRequests); - -const operationLocationUrl = translationResponse.headers["operation-location"] -const operationId = getTranslationOperationID(operationLocationUrl); - -//get Translation Status -const response = await client.path("/document/batches/{id}",operationId).get() as GetTranslationStatus200Response; -if (isUnexpected(response)) { - throw response.body; -} - -console.log("Translation ID = " + response.body.id); -console.log("Translation Status = " + response.body.status); -console.log("Translation createdDateTimeUtc = " + response.body.createdDateTimeUtc); -console.log("Translation lastActionDateTimeUtc = " + response.body.lastActionDateTimeUtc); -console.log("Total documents submitted for translation = " + response.body.summary.total); -console.log("Total characters charged = " + response.body.summary.totalCharacterCharged); -``` - - -### Get Supported Formats - -This returns a list of document or glossary formats supported by the Document Translation feature. The list includes common file extensions and content-type if using the upload API. - -```typescript -console.log("== List Supported Format Types =="); - -const documentTranslationClient = DocumentTranslationClient(endpoint); -const response = await documentTranslationClient.path("/document/formats").get(); - -const fileFormatTypes = response.body; -fileFormatTypes.value.forEach((fileFormatType: { format: any; contentTypes: any; fileExtensions: any; }) => { -console.log(fileFormatType.format); -console.log(fileFormatType.contentTypes); -console.log(fileFormatType.fileExtensions); -}); -``` +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 ## Troubleshooting -When you interact with the Translator Service using the DocumentTranslator client library, errors returned by the Translator service correspond to the same HTTP status codes returned for REST API requests. - -For example, if you submit a translation request without a target translate language, a `400` error is returned, indicating "Bad Request". - -You can find the different error codes returned by the service in the [Service Documentation][service_errors]. - ### 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`: @@ -343,12 +55,3 @@ 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). -Please refer to the service documentation for a conceptual discussion of [languages][languages_doc]. - -[service_errors]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#common-http-status-codes -[translator_resource_create]: https://learn.microsoft.com/azure/cognitive-services/Translator/create-translator-resource -[documentTranslationClient_class]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts -[pre_requisities]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#prerequisites -[azure_blob_storage_account]: https://ms.portal.azure.com/#create/Microsoft.StorageAccount -[container]: https://learn.microsoft.com/azure/storage/blobs/storage-quickstart-blobs-portal#create-a-container -[storage_container_authorization]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/quickstarts/client-library-sdks?tabs=dotnet&pivots=programming-language-csharp#storage-container-authorization diff --git a/sdk/translation/ai-translation-document-rest/api-extractor.json b/sdk/translation/ai-translation-document-rest/api-extractor.json index 77621ce4111b..1ca9ecfd6934 100644 --- a/sdk/translation/ai-translation-document-rest/api-extractor.json +++ b/sdk/translation/ai-translation-document-rest/api-extractor.json @@ -1,6 +1,6 @@ { "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", - "mainEntryPointFilePath": "./types/src/index.d.ts", + "mainEntryPointFilePath": "./dist/esm/index.d.ts", "docModel": { "enabled": true }, @@ -28,4 +28,4 @@ } } } -} +} \ No newline at end of file diff --git a/sdk/translation/ai-translation-document-rest/assets.json b/sdk/translation/ai-translation-document-rest/assets.json deleted file mode 100644 index 21460e3d2e52..000000000000 --- a/sdk/translation/ai-translation-document-rest/assets.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "AssetsRepo": "Azure/azure-sdk-assets", - "AssetsRepoPrefixPath": "js", - "TagPrefix": "js/translation/ai-translation-document-rest", - "Tag": "js/translation/ai-translation-document-rest_4f72a8b574" -} diff --git a/sdk/translation/ai-translation-document-rest/eslint.config.mjs b/sdk/translation/ai-translation-document-rest/eslint.config.mjs index e559ed8cb5bd..113bdc3eaf5f 100644 --- a/sdk/translation/ai-translation-document-rest/eslint.config.mjs +++ b/sdk/translation/ai-translation-document-rest/eslint.config.mjs @@ -8,7 +8,10 @@ export default [ "@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", + "tsdoc/syntax": "warn" + } + } ]; diff --git a/sdk/translation/ai-translation-document-rest/karma.conf.js b/sdk/translation/ai-translation-document-rest/karma.conf.js deleted file mode 100644 index 352cd2807bd3..000000000000 --- a/sdk/translation/ai-translation-document-rest/karma.conf.js +++ /dev/null @@ -1,131 +0,0 @@ -// 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(); - -process.env.RECORDINGS_RELATIVE_PATH = - require("@azure-tools/test-recorder").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", - "DOCUMENT_TRANSLATION_ENDPOINT", - "DOCUMENT_TRANSLATION_STORAGE_NAME", - "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/translation/ai-translation-document-rest/package.json b/sdk/translation/ai-translation-document-rest/package.json index 45d3248e60b6..35233c685a4e 100644 --- a/sdk/translation/ai-translation-document-rest/package.json +++ b/sdk/translation/ai-translation-document-rest/package.json @@ -1,117 +1,130 @@ { "name": "@azure-rest/ai-translation-document", - "sdk-type": "client", - "author": "Microsoft Corporation", - "description": "A generated SDK for DocumentTranslationClient.", - "version": "2.0.0-beta.1", + "version": "1.0.0-beta.1", + "description": "Microsoft Translation Document", + "engines": { + "node": ">=18.0.0" + }, + "sideEffects": false, + "autoPublish": false, + "tshy": { + "exports": { + "./package.json": "./package.json", + ".": "./src/index.ts" + }, + "dialects": [ + "esm", + "commonjs" + ], + "esmDialects": [ + "browser", + "react-native" + ], + "selfLink": false + }, + "type": "module", "keywords": [ "node", "azure", "cloud", "typescript", "browser", - "isomorphic", - "translate", - "translation" + "isomorphic" ], + "author": "Microsoft Corporation", "license": "MIT", - "main": "dist/index.js", - "module": "./dist-esm/src/index.js", - "types": "./types/ai-translation-document.d.ts", - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest/README.md", - "repository": "github:Azure/azure-sdk-for-js", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, "files": [ - "dist/", - "dist-esm/src/", - "types/ai-translation-document.d.ts", + "dist", "README.md", - "CHANGELOG.md", - "LICENSE" + "LICENSE", + "review/*", + "CHANGELOG.md" ], - "engines": { - "node": ">=18.0.0" + "sdk-type": "client", + "repository": "github:Azure/azure-sdk-for-js", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" }, - "//sampleConfiguration": { - "productName": "Azure Document Translation Service", - "productSlugs": [ - "azure", - "azure-cognitive-services", - "azure-translator" - ], - "requiredResources": { - "Azure Cognitive Services instance": "https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account" - } + "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", + "//metadata": { + "constantPaths": [ + { + "path": "src/documentTranslationClient.ts", + "prefix": "userAgentInfo" + } + ] }, "dependencies": { - "@azure-rest/core-client": "^2.0.0", - "@azure/abort-controller": "^2.1.2", + "@azure-rest/core-client": "^2.1.0", "@azure/core-auth": "^1.6.0", - "@azure/core-lro": "^3.0.0", - "@azure/core-paging": "^1.5.0", - "@azure/core-rest-pipeline": "^1.16.3", + "@azure/core-rest-pipeline": "^1.5.0", "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" + "tslib": "^2.6.2", + "@azure/core-lro": "^3.0.0", + "@azure/abort-controller": "^2.1.2", + "@azure/core-paging": "^1.5.0" }, "devDependencies": { - "@azure-tools/test-credential": "^1.0.0", - "@azure-tools/test-recorder": "^3.5.2", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "^4.0.1", - "@azure/storage-blob": "^12.23.0", - "@types/chai": "^4.2.8", - "@types/mocha": "^10.0.0", - "@types/node": "^18.0.0", - "autorest": "latest", - "chai": "^4.2.0", "dotenv": "^16.0.0", - "eslint": "^9.9.0", - "karma": "^6.2.0", - "karma-chrome-launcher": "^3.0.0", - "karma-coverage": "^2.0.0", - "karma-env-preprocessor": "^0.1.1", - "karma-firefox-launcher": "^1.1.0", - "karma-junit-reporter": "^2.0.1", - "karma-mocha": "^2.0.1", - "karma-mocha-reporter": "^2.2.5", - "karma-source-map-support": "~1.4.0", - "karma-sourcemap-loader": "^0.3.8", - "mocha": "^10.0.0", - "nyc": "^17.0.0", - "source-map-support": "^0.5.9", - "ts-node": "^10.0.0", - "typescript": "~5.6.2" + "@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.5.3", + "tshy": "^1.11.1", + "@azure/dev-tool": "^1.0.0", + "@azure/eslint-plugin-azure-sdk": "^3.0.0" }, "scripts": { - "build": "npm run clean && tsc -p . && dev-tool run bundle && dev-tool run vendored mkdirp ./review && dev-tool run extract-api", - "build:browser": "tsc -p . && dev-tool run bundle", - "build:debug": "tsc -p . && dev-tool run bundle && dev-tool run extract-api", - "build:node": "tsc -p . && dev-tool run bundle --browser-test false", - "build:samples": "echo Obsolete.", - "build:test": "tsc -p . && dev-tool run bundle", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", - "clean": "dev-tool run vendored rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log", - "execute:samples": "dev-tool samples run samples-dev", - "extract-api": "dev-tool run vendored rimraf review && dev-tool run vendored mkdirp ./review && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", - "generate:client": "echo skipped", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "dev-tool run test:browser", - "integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'", + "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": "eslint package.json api-extractor.json src test", "lint:fix": "eslint package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && npm run build:test && npm run unit-test", - "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser", - "test:node": "npm run clean && npm run build:test && npm run unit-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "dev-tool run test:browser", - "unit-test:node": "dev-tool run test:node-ts-input -- --timeout 1200000 --exclude 'test/**/browser/*.spec.ts' 'test/**/*.spec.ts'", - "update-snippets": "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": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\" ", + "execute:samples": "echo skipped", + "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\" ", + "integration-test:browser": "echo skipped", + "integration-test:node": "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", + "unit-test:browser": "npm run build:test && dev-tool run test:vitest --browser", + "unit-test:node": "dev-tool run test:vitest" }, - "sideEffects": false, - "autoPublish": false -} + "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" + } + } + }, + "main": "./dist/commonjs/index.js", + "types": "./dist/commonjs/index.d.ts" +} \ No newline at end of file diff --git a/sdk/translation/ai-translation-document-rest/review/ai-translation-document.api.md b/sdk/translation/ai-translation-document-rest/review/ai-translation-document.api.md index 8e8424ad1b30..604945d550e3 100644 --- a/sdk/translation/ai-translation-document-rest/review/ai-translation-document.api.md +++ b/sdk/translation/ai-translation-document-rest/review/ai-translation-document.api.md @@ -4,22 +4,22 @@ ```ts -import type { AbortSignalLike } from '@azure/abort-controller'; -import type { CancelOnProgress } from '@azure/core-lro'; -import type { Client } from '@azure-rest/core-client'; -import type { ClientOptions } from '@azure-rest/core-client'; -import type { CreateHttpPollerOptions } from '@azure/core-lro'; -import type { ErrorResponse } from '@azure-rest/core-client'; -import type { HttpResponse } from '@azure-rest/core-client'; -import type { KeyCredential } from '@azure/core-auth'; -import type { OperationState } from '@azure/core-lro'; -import type { PagedAsyncIterableIterator } from '@azure/core-paging'; -import type { PathUncheckedResponse } from '@azure-rest/core-client'; -import type { RawHttpHeaders } from '@azure/core-rest-pipeline'; -import type { RawHttpHeadersInput } from '@azure/core-rest-pipeline'; -import type { RequestParameters } from '@azure-rest/core-client'; -import type { StreamableMethod } from '@azure-rest/core-client'; -import type { TokenCredential } from '@azure/core-auth'; +import { AbortSignalLike } from '@azure/abort-controller'; +import { CancelOnProgress } from '@azure/core-lro'; +import { Client } from '@azure-rest/core-client'; +import { ClientOptions } from '@azure-rest/core-client'; +import { CreateHttpPollerOptions } from '@azure/core-lro'; +import { ErrorResponse } from '@azure-rest/core-client'; +import { HttpResponse } from '@azure-rest/core-client'; +import { KeyCredential } from '@azure/core-auth'; +import { OperationState } from '@azure/core-lro'; +import { PagedAsyncIterableIterator } from '@azure/core-paging'; +import { PathUncheckedResponse } from '@azure-rest/core-client'; +import { RawHttpHeaders } from '@azure/core-rest-pipeline'; +import { RawHttpHeadersInput } 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 interface BatchRequest { @@ -200,13 +200,16 @@ export interface FileFormatOutput { defaultVersion?: string; fileExtensions: string[]; format: string; - type?: string; + type?: FileFormatTypeOutput; versions?: string[]; } // @public export type FileFormatType = string; +// @public +export type FileFormatTypeOutput = string; + // @public export type GetArrayType = T extends Array ? TData : never; diff --git a/sdk/translation/ai-translation-document-rest/sample.env b/sdk/translation/ai-translation-document-rest/sample.env deleted file mode 100644 index 4a2e6810a023..000000000000 --- a/sdk/translation/ai-translation-document-rest/sample.env +++ /dev/null @@ -1,6 +0,0 @@ -# Used in most samples. -# Get the key and region - https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#retrieve-your-key-and-custom-domain-endpoint - -ENDPOINT="https://.cognitiveservices.azure.com" -TEXT_TRANSLATOR_API_KEY="" -TEXT_TRANSLATOR_REGION="" diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/batchDocumentTranslation.ts b/sdk/translation/ai-translation-document-rest/samples-dev/batchDocumentTranslation.ts deleted file mode 100644 index a7a32cd857fb..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/batchDocumentTranslation.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Batch Document Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(poller)) { - throw poller.body; - } - const id = getTranslationOperationID(poller.headers["operation-location"]); - console.log("Translation started and the operationID is: " + id); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/cancelTranslation.ts b/sdk/translation/ai-translation-document-rest/samples-dev/cancelTranslation.ts deleted file mode 100644 index 4d22fbdebd24..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/cancelTranslation.ts +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to cancel a batch translation request - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Cancel Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - const id = getTranslationOperationID(poller.headers["operation-location"]); - - //Cancel translation - await client.path("/document/batches/{id}", id).delete(); - - //get translation status and verify the job is cancelled, cancelling or notStarted - const response = await client.path("/document/batches/{id}", id).get(); - if (isUnexpected(response)) { - throw response.body; - } - console.log("The status after cancelling the batch operation is:" + response.body.status); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentStatus.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentStatus.ts deleted file mode 100644 index 60b4f9270aa0..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentStatus.ts +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Document status for a given document of a batch translation operation - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Document Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - - const responseBody = documentResponse.body; - for (const document of responseBody.value) { - //get document status - const documentStatus = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, document.id) - .get(); - if (isUnexpected(documentStatus)) { - throw documentStatus.body; - } - console.log("Document Status = " + documentStatus.status); - const documentStatusOutput = documentStatus.body; - console.log("Document ID = " + documentStatusOutput.id); - console.log("Document source path = " + documentStatusOutput.sourcePath); - console.log("Document path = " + documentStatusOutput.path); - console.log("Target language = " + documentStatusOutput.to); - console.log("Document created dateTime = " + documentStatusOutput.createdDateTimeUtc); - console.log("Document last action date time = " + documentStatusOutput.lastActionDateTimeUtc); - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentsStatus.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentsStatus.ts deleted file mode 100644 index be178d108d67..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentsStatus.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Gets Documents Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - const responseBody = documentResponse.body; - for (const documentStatus of responseBody.value) { - console.log("Document Status is: " + documentStatus.status); - console.log("Characters charged is: " + documentStatus.characterCharged); - break; - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getSupportedFormats.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getSupportedFormats.ts deleted file mode 100644 index d83360968b9f..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getSupportedFormats.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== List Supported Format Types =="); - - const client = createClient(endpoint, credentials); - const response = await client.path("/document/formats").get(); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach( - (fileFormatType: { format: any; contentTypes: any; fileExtensions: any }) => { - console.log(fileFormatType.format); - console.log(fileFormatType.contentTypes); - console.log(fileFormatType.fileExtensions); - }, - ); - - main().catch((err) => { - console.error(err); - }); -} - -main().catch((err) => { - console.error(err); -}); diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationStatus.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationStatus.ts deleted file mode 100644 index 9e864fba75ac..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationStatus.ts +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { GetTranslationStatus200Response } from "../src/responses"; -import { isUnexpected } from "../src"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Translation Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Status - const response = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - console.log("Translation ID = " + responseBody.id); - console.log("Translation Status = " + responseBody.status); - console.log("Translation createdDateTimeUtc = " + responseBody.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + responseBody.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + responseBody.summary.total); - console.log("Total characters charged = " + responseBody.summary.totalCharacterCharged); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationsStatus.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationsStatus.ts deleted file mode 100644 index 3467638ec3aa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationsStatus.ts +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Translations Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Statusby ID filter - const queryParams = { - ids: [operationId], - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - console.log("Translation ID = " + translationStatus.id); - console.log("Translation Status = " + translationStatus.status); - console.log("Translation createdDateTimeUtc = " + translationStatus.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + translationStatus.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + translationStatus.summary.total); - console.log("Total characters charged = " + translationStatus.summary.totalCharacterCharged); - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/synchronousDocumentTranslation.ts b/sdk/translation/ai-translation-document-rest/samples-dev/synchronousDocumentTranslation.ts deleted file mode 100644 index c4c0e9eee253..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/synchronousDocumentTranslation.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation - */ - -import * as dotenv from "dotenv"; -import { DocumentTranslateParameters, isUnexpected } from "../src"; -import createClient from "../src/documentTranslationClient"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Synchronous Document Translation =="); - - const client = createClient(endpoint, credentials); - - const options: DocumentTranslateParameters = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = await client.path("/document:translate").post(options); - if (isUnexpected(response)) { - throw response.body; - } - console.log("Response code: " + response.status + ", Response body: " + response.body); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/README.md b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/README.md deleted file mode 100644 index 511d86dbfdad..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/README.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -page_type: sample -languages: - - javascript -products: - - azure - - azure-cognitive-services - - azure-translator -urlFragment: ai-translation-document-javascript-beta ---- - -# Azure Document Translation Service client library samples for JavaScript (Beta) - -These sample programs show how to use the JavaScript client libraries for Azure Document Translation Service in some common scenarios. - -| **File Name** | **Description** | -| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| [batchDocumentTranslation.js][batchdocumenttranslation] | This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation | -| [cancelTranslation.js][canceltranslation] | This sample demonstrates how to cancel a batch translation request | -| [getDocumentStatus.js][getdocumentstatus] | This sample demonstrates how to get the Document status for a given document of a batch translation operation | -| [getDocumentsStatus.js][getdocumentsstatus] | This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user | -| [getSupportedFormats.js][getsupportedformats] | This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages | -| [getTranslationStatus.js][gettranslationstatus] | This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user | -| [getTranslationsStatus.js][gettranslationsstatus] | This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user | -| [synchronousDocumentTranslation.js][synchronousdocumenttranslation] | This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation | - -## Prerequisites - -The sample programs are compatible with [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule). - -You need [an Azure subscription][freesub] and the following Azure resources to run these sample programs: - -- [Azure Cognitive Services instance][createinstance_azurecognitiveservicesinstance] - -Samples retrieve credentials to access the service endpoint from environment variables. Alternatively, edit the source code to include the appropriate credentials. See each individual sample for details on which environment variables/credentials it requires to function. - -Adapting the samples to run in the browser may require some additional consideration. For details, please see the [package README][package]. - -## Setup - -To run the samples using the published version of the package: - -1. Install the dependencies using `npm`: - -```bash -npm install -``` - -2. Edit the file `sample.env`, adding the correct credentials to access the Azure service and run the samples. Then rename the file from `sample.env` to just `.env`. The sample programs will read this file automatically. - -3. Run whichever samples you like (note that some samples may require additional setup, see the table above): - -```bash -node batchDocumentTranslation.js -``` - -Alternatively, run a single sample with the correct environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): - -```bash -npx dev-tool run vendored cross-env ENDPOINT="" DOCUMENT_TRANSLATION_API_KEY="" node batchDocumentTranslation.js -``` - -## Next Steps - -Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. - -[batchdocumenttranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js -[canceltranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js -[getdocumentstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js -[getdocumentsstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js -[getsupportedformats]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js -[gettranslationstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js -[gettranslationsstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js -[synchronousdocumenttranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js -[apiref]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/overview -[freesub]: https://azure.microsoft.com/free/ -[createinstance_azurecognitiveservicesinstance]: https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account -[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest/README.md diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js deleted file mode 100644 index 9b11fa0fb651..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Batch Document Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(poller)) { - throw poller.body; - } - const id = getTranslationOperationID(poller.headers["operation-location"]); - console.log("Translation started and the operationID is: " + id); - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js deleted file mode 100644 index 054e0a55eff3..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to cancel a batch translation request - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Cancel Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - const id = getTranslationOperationID(poller.headers["operation-location"]); - - //Cancel translation - await client.path("/document/batches/{id}", id).delete(); - - //get translation status and verify the job is cancelled, cancelling or notStarted - const response = await client.path("/document/batches/{id}", id).get(); - if (isUnexpected(response)) { - throw response.body; - } - console.log("The status after cancelling the batch operation is:" + response.body.status); - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js deleted file mode 100644 index 2c883baa6ba0..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Document status for a given document of a batch translation operation - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Get Document Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - - const responseBody = documentResponse.body; - for (const document of responseBody.value) { - //get document status - const documentStatus = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, document.id) - .get(); - if (isUnexpected(documentStatus)) { - throw documentStatus.body; - } - console.log("Document Status = " + documentStatus.status); - const documentStatusOutput = documentStatus.body; - console.log("Document ID = " + documentStatusOutput.id); - console.log("Document source path = " + documentStatusOutput.sourcePath); - console.log("Document path = " + documentStatusOutput.path); - console.log("Target language = " + documentStatusOutput.to); - console.log("Document created dateTime = " + documentStatusOutput.createdDateTimeUtc); - console.log("Document last action date time = " + documentStatusOutput.lastActionDateTimeUtc); - } - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js deleted file mode 100644 index 6117764d16aa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Gets Documents Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - const responseBody = documentResponse.body; - for (const documentStatus of responseBody.value) { - console.log("Document Status is: " + documentStatus.status); - console.log("Characters charged is: " + documentStatus.characterCharged); - break; - } - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js deleted file mode 100644 index de234a9c3bbc..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== List Supported Format Types =="); - - const client = createClient(endpoint, credentials); - const response = await client.path("/document/formats").get(); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach((fileFormatType) => { - console.log(fileFormatType.format); - console.log(fileFormatType.contentTypes); - console.log(fileFormatType.fileExtensions); - }); - - main().catch((err) => { - console.error(err); - }); -} - -main().catch((err) => { - console.error(err); -}); - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js deleted file mode 100644 index ff0eefe1d75e..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Get Translation Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Status - const response = await client.path("/document/batches/{id}", operationId).get(); - - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - console.log("Translation ID = " + responseBody.id); - console.log("Translation Status = " + responseBody.status); - console.log("Translation createdDateTimeUtc = " + responseBody.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + responseBody.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + responseBody.summary.total); - console.log("Total characters charged = " + responseBody.summary.totalCharacterCharged); - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js deleted file mode 100644 index 7d2ed2e9aab9..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Get Translations Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Statusby ID filter - const queryParams = { - ids: [operationId], - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - console.log("Translation ID = " + translationStatus.id); - console.log("Translation Status = " + translationStatus.status); - console.log("Translation createdDateTimeUtc = " + translationStatus.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + translationStatus.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + translationStatus.summary.total); - console.log("Total characters charged = " + translationStatus.summary.totalCharacterCharged); - } - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/package.json b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/package.json deleted file mode 100644 index a97bd20ef4aa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "@azure-samples/ai-translation-document-js-beta", - "private": true, - "version": "1.0.0", - "description": "Azure Document Translation Service client library samples for JavaScript (Beta)", - "engines": { - "node": ">=18.0.0" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Azure/azure-sdk-for-js.git", - "directory": "sdk/translation/ai-translation-document-rest" - }, - "keywords": [ - "node", - "azure", - "cloud", - "typescript", - "browser", - "isomorphic", - "translate", - "translation" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest", - "dependencies": { - "@azure-rest/ai-translation-document": "next", - "dotenv": "latest" - } -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/sample.env b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/sample.env deleted file mode 100644 index 4a2e6810a023..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/sample.env +++ /dev/null @@ -1,6 +0,0 @@ -# Used in most samples. -# Get the key and region - https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#retrieve-your-key-and-custom-domain-endpoint - -ENDPOINT="https://.cognitiveservices.azure.com" -TEXT_TRANSLATOR_API_KEY="" -TEXT_TRANSLATOR_REGION="" diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js deleted file mode 100644 index d0702d16c37a..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation - */ - -const dotenv = require("dotenv"); -const { isUnexpected } = require("../src"); -const createClient = require("../src/documentTranslationClient").default; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Synchronous Document Translation =="); - - const client = createClient(endpoint, credentials); - - const options = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = await client.path("/document:translate").post(options); - if (isUnexpected(response)) { - throw response.body; - } - console.log("Response code: " + response.status + ", Response body: " + response.body); - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/README.md b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/README.md deleted file mode 100644 index d81c1ecc9bfa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/README.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -page_type: sample -languages: - - typescript -products: - - azure - - azure-cognitive-services - - azure-translator -urlFragment: ai-translation-document-typescript-beta ---- - -# Azure Document Translation Service client library samples for TypeScript (Beta) - -These sample programs show how to use the TypeScript client libraries for Azure Document Translation Service in some common scenarios. - -| **File Name** | **Description** | -| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| [batchDocumentTranslation.ts][batchdocumenttranslation] | This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation | -| [cancelTranslation.ts][canceltranslation] | This sample demonstrates how to cancel a batch translation request | -| [getDocumentStatus.ts][getdocumentstatus] | This sample demonstrates how to get the Document status for a given document of a batch translation operation | -| [getDocumentsStatus.ts][getdocumentsstatus] | This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user | -| [getSupportedFormats.ts][getsupportedformats] | This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages | -| [getTranslationStatus.ts][gettranslationstatus] | This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user | -| [getTranslationsStatus.ts][gettranslationsstatus] | This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user | -| [synchronousDocumentTranslation.ts][synchronousdocumenttranslation] | This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation | - -## Prerequisites - -The sample programs are compatible with [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule). - -Before running the samples in Node, they must be compiled to JavaScript using the TypeScript compiler. For more information on TypeScript, see the [TypeScript documentation][typescript]. Install the TypeScript compiler using: - -```bash -npm install -g typescript -``` - -You need [an Azure subscription][freesub] and the following Azure resources to run these sample programs: - -- [Azure Cognitive Services instance][createinstance_azurecognitiveservicesinstance] - -Samples retrieve credentials to access the service endpoint from environment variables. Alternatively, edit the source code to include the appropriate credentials. See each individual sample for details on which environment variables/credentials it requires to function. - -Adapting the samples to run in the browser may require some additional consideration. For details, please see the [package README][package]. - -## Setup - -To run the samples using the published version of the package: - -1. Install the dependencies using `npm`: - -```bash -npm install -``` - -2. Compile the samples: - -```bash -npm run build -``` - -3. Edit the file `sample.env`, adding the correct credentials to access the Azure service and run the samples. Then rename the file from `sample.env` to just `.env`. The sample programs will read this file automatically. - -4. Run whichever samples you like (note that some samples may require additional setup, see the table above): - -```bash -node dist/batchDocumentTranslation.js -``` - -Alternatively, run a single sample with the correct environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): - -```bash -npx dev-tool run vendored cross-env ENDPOINT="" DOCUMENT_TRANSLATION_API_KEY="" node dist/batchDocumentTranslation.js -``` - -## Next Steps - -Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. - -[batchdocumenttranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts -[canceltranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts -[getdocumentstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts -[getdocumentsstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts -[getsupportedformats]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts -[gettranslationstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts -[gettranslationsstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts -[synchronousdocumenttranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts -[apiref]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/overview -[freesub]: https://azure.microsoft.com/free/ -[createinstance_azurecognitiveservicesinstance]: https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account -[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest/README.md -[typescript]: https://www.typescriptlang.org/docs/home.html diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/package.json b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/package.json deleted file mode 100644 index 6b293931abe9..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@azure-samples/ai-translation-document-ts-beta", - "private": true, - "version": "1.0.0", - "description": "Azure Document Translation Service client library samples for TypeScript (Beta)", - "engines": { - "node": ">=18.0.0" - }, - "scripts": { - "build": "tsc", - "prebuild": "rimraf dist/" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Azure/azure-sdk-for-js.git", - "directory": "sdk/translation/ai-translation-document-rest" - }, - "keywords": [ - "node", - "azure", - "cloud", - "typescript", - "browser", - "isomorphic", - "translate", - "translation" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest", - "dependencies": { - "@azure-rest/ai-translation-document": "next", - "dotenv": "latest" - }, - "devDependencies": { - "@types/node": "^18.0.0", - "typescript": "~5.6.2", - "rimraf": "latest" - } -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/sample.env b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/sample.env deleted file mode 100644 index 4a2e6810a023..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/sample.env +++ /dev/null @@ -1,6 +0,0 @@ -# Used in most samples. -# Get the key and region - https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#retrieve-your-key-and-custom-domain-endpoint - -ENDPOINT="https://.cognitiveservices.azure.com" -TEXT_TRANSLATOR_API_KEY="" -TEXT_TRANSLATOR_REGION="" diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts deleted file mode 100644 index a7a32cd857fb..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Batch Document Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(poller)) { - throw poller.body; - } - const id = getTranslationOperationID(poller.headers["operation-location"]); - console.log("Translation started and the operationID is: " + id); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts deleted file mode 100644 index 4d22fbdebd24..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to cancel a batch translation request - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Cancel Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - const id = getTranslationOperationID(poller.headers["operation-location"]); - - //Cancel translation - await client.path("/document/batches/{id}", id).delete(); - - //get translation status and verify the job is cancelled, cancelling or notStarted - const response = await client.path("/document/batches/{id}", id).get(); - if (isUnexpected(response)) { - throw response.body; - } - console.log("The status after cancelling the batch operation is:" + response.body.status); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts deleted file mode 100644 index 60b4f9270aa0..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Document status for a given document of a batch translation operation - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Document Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - - const responseBody = documentResponse.body; - for (const document of responseBody.value) { - //get document status - const documentStatus = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, document.id) - .get(); - if (isUnexpected(documentStatus)) { - throw documentStatus.body; - } - console.log("Document Status = " + documentStatus.status); - const documentStatusOutput = documentStatus.body; - console.log("Document ID = " + documentStatusOutput.id); - console.log("Document source path = " + documentStatusOutput.sourcePath); - console.log("Document path = " + documentStatusOutput.path); - console.log("Target language = " + documentStatusOutput.to); - console.log("Document created dateTime = " + documentStatusOutput.createdDateTimeUtc); - console.log("Document last action date time = " + documentStatusOutput.lastActionDateTimeUtc); - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts deleted file mode 100644 index be178d108d67..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Gets Documents Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - const responseBody = documentResponse.body; - for (const documentStatus of responseBody.value) { - console.log("Document Status is: " + documentStatus.status); - console.log("Characters charged is: " + documentStatus.characterCharged); - break; - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts deleted file mode 100644 index d83360968b9f..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== List Supported Format Types =="); - - const client = createClient(endpoint, credentials); - const response = await client.path("/document/formats").get(); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach( - (fileFormatType: { format: any; contentTypes: any; fileExtensions: any }) => { - console.log(fileFormatType.format); - console.log(fileFormatType.contentTypes); - console.log(fileFormatType.fileExtensions); - }, - ); - - main().catch((err) => { - console.error(err); - }); -} - -main().catch((err) => { - console.error(err); -}); diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts deleted file mode 100644 index 9e864fba75ac..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { GetTranslationStatus200Response } from "../src/responses"; -import { isUnexpected } from "../src"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Translation Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Status - const response = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - console.log("Translation ID = " + responseBody.id); - console.log("Translation Status = " + responseBody.status); - console.log("Translation createdDateTimeUtc = " + responseBody.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + responseBody.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + responseBody.summary.total); - console.log("Total characters charged = " + responseBody.summary.totalCharacterCharged); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts deleted file mode 100644 index 3467638ec3aa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Translations Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Statusby ID filter - const queryParams = { - ids: [operationId], - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - console.log("Translation ID = " + translationStatus.id); - console.log("Translation Status = " + translationStatus.status); - console.log("Translation createdDateTimeUtc = " + translationStatus.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + translationStatus.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + translationStatus.summary.total); - console.log("Total characters charged = " + translationStatus.summary.totalCharacterCharged); - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts deleted file mode 100644 index c4c0e9eee253..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation - */ - -import * as dotenv from "dotenv"; -import { DocumentTranslateParameters, isUnexpected } from "../src"; -import createClient from "../src/documentTranslationClient"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Synchronous Document Translation =="); - - const client = createClient(endpoint, credentials); - - const options: DocumentTranslateParameters = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = await client.path("/document:translate").post(options); - if (isUnexpected(response)) { - throw response.body; - } - console.log("Response code: " + response.status + ", Response body: " + response.body); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/tsconfig.json b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/tsconfig.json deleted file mode 100644 index 984eed535aa8..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "module": "commonjs", - "moduleResolution": "node", - "resolveJsonModule": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "alwaysStrict": true, - "outDir": "dist", - "rootDir": "src" - }, - "include": [ - "src/**/*.ts" - ] -} diff --git a/sdk/translation/ai-translation-document-rest/src/clientDefinitions.ts b/sdk/translation/ai-translation-document-rest/src/clientDefinitions.ts index 46e31e9dc14b..ec2b06f3e868 100644 --- a/sdk/translation/ai-translation-document-rest/src/clientDefinitions.ts +++ b/sdk/translation/ai-translation-document-rest/src/clientDefinitions.ts @@ -1,10 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import type { +import { DocumentTranslateParameters, StartTranslationParameters, GetTranslationsStatusParameters, @@ -14,7 +11,7 @@ import type { GetDocumentsStatusParameters, GetSupportedFormatsParameters, } from "./parameters.js"; -import type { +import { DocumentTranslate200Response, DocumentTranslateDefaultResponse, StartTranslation202Response, @@ -32,13 +29,15 @@ import type { GetSupportedFormats200Response, GetSupportedFormatsDefaultResponse, } from "./responses.js"; -import type { Client, StreamableMethod } from "@azure-rest/core-client"; +import { Client, StreamableMethod } from "@azure-rest/core-client"; export interface DocumentTranslate { /** Use this API to submit a single translation request to the Document Translation Service. */ post( options: DocumentTranslateParameters, - ): StreamableMethod; + ): StreamableMethod< + DocumentTranslate200Response | DocumentTranslateDefaultResponse + >; } export interface StartTranslation { @@ -65,7 +64,9 @@ export interface StartTranslation { */ post( options: StartTranslationParameters, - ): StreamableMethod; + ): StreamableMethod< + StartTranslation202Response | StartTranslationDefaultResponse + >; /** * Returns a list of batch requests submitted and the status for each * request. @@ -122,7 +123,9 @@ export interface StartTranslation { */ get( options?: GetTranslationsStatusParameters, - ): StreamableMethod; + ): StreamableMethod< + GetTranslationsStatus200Response | GetTranslationsStatusDefaultResponse + >; } export interface GetDocumentStatus { @@ -132,7 +135,9 @@ export interface GetDocumentStatus { */ get( options?: GetDocumentStatusParameters, - ): StreamableMethod; + ): StreamableMethod< + GetDocumentStatus200Response | GetDocumentStatusDefaultResponse + >; } export interface GetTranslationStatus { @@ -144,7 +149,9 @@ export interface GetTranslationStatus { */ get( options?: GetTranslationStatusParameters, - ): StreamableMethod; + ): StreamableMethod< + GetTranslationStatus200Response | GetTranslationStatusDefaultResponse + >; /** * Cancel a currently processing or queued translation. * A translation will not be @@ -157,7 +164,9 @@ export interface GetTranslationStatus { */ delete( options?: CancelTranslationParameters, - ): StreamableMethod; + ): StreamableMethod< + CancelTranslation200Response | CancelTranslationDefaultResponse + >; } export interface GetDocumentsStatus { @@ -211,7 +220,9 @@ export interface GetDocumentsStatus { */ get( options?: GetDocumentsStatusParameters, - ): StreamableMethod; + ): StreamableMethod< + GetDocumentsStatus200Response | GetDocumentsStatusDefaultResponse + >; } export interface GetSupportedFormats { @@ -223,7 +234,9 @@ export interface GetSupportedFormats { */ get( options?: GetSupportedFormatsParameters, - ): StreamableMethod; + ): StreamableMethod< + GetSupportedFormats200Response | GetSupportedFormatsDefaultResponse + >; } export interface Routes { diff --git a/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts b/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts index 68ae03c98fd5..7664e7768a4a 100644 --- a/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts +++ b/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts @@ -1,14 +1,10 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import type { ClientOptions } from "@azure-rest/core-client"; -import { getClient } from "@azure-rest/core-client"; -import { logger } from "./logger"; -import type { TokenCredential, KeyCredential } from "@azure/core-auth"; -import type { DocumentTranslationClient } from "./clientDefinitions"; +import { getClient, ClientOptions } from "@azure-rest/core-client"; +import { logger } from "./logger.js"; +import { TokenCredential, KeyCredential } from "@azure/core-auth"; +import { DocumentTranslationClient } from "./clientDefinitions.js"; /** The optional parameters for the client */ export interface DocumentTranslationClientOptions extends ClientOptions { @@ -25,9 +21,13 @@ export interface DocumentTranslationClientOptions extends ClientOptions { export default function createClient( endpointParam: string, credentials: TokenCredential | KeyCredential, - { apiVersion = "2024-05-01", ...options }: DocumentTranslationClientOptions = {}, + { + apiVersion = "2024-05-01", + ...options + }: DocumentTranslationClientOptions = {}, ): DocumentTranslationClient { - const endpointUrl = options.endpoint ?? options.baseUrl ?? `${endpointParam}/translator`; + const endpointUrl = + options.endpoint ?? options.baseUrl ?? `${endpointParam}/translator`; const userAgentInfo = `azsdk-js-ai-translation-document-rest/1.0.0-beta.1`; const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix @@ -42,11 +42,18 @@ export default function createClient( logger: options.loggingOptions?.logger ?? logger.info, }, credentials: { - scopes: options.credentials?.scopes ?? ["https://cognitiveservices.azure.com/.default"], - apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key", + scopes: options.credentials?.scopes ?? [ + "https://cognitiveservices.azure.com/.default", + ], + apiKeyHeaderName: + options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key", }, }; - const client = getClient(endpointUrl, credentials, options) as DocumentTranslationClient; + const client = getClient( + endpointUrl, + credentials, + options, + ) as DocumentTranslationClient; client.pipeline.removePolicy({ name: "ApiVersionPolicy" }); client.pipeline.addPolicy({ diff --git a/sdk/translation/ai-translation-document-rest/src/index.ts b/sdk/translation/ai-translation-document-rest/src/index.ts index d93097620d82..8d5c08c50ff7 100644 --- a/sdk/translation/ai-translation-document-rest/src/index.ts +++ b/sdk/translation/ai-translation-document-rest/src/index.ts @@ -1,19 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import DocumentTranslationClient from "./documentTranslationClient"; +import DocumentTranslationClient from "./documentTranslationClient.js"; -export * from "./documentTranslationClient"; -export * from "./parameters"; -export * from "./responses"; -export * from "./clientDefinitions"; -export * from "./isUnexpected"; -export * from "./models"; -export * from "./outputModels"; -export * from "./paginateHelper"; -export * from "./pollingHelper"; +export * from "./documentTranslationClient.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 DocumentTranslationClient; diff --git a/sdk/translation/ai-translation-document-rest/src/isUnexpected.ts b/sdk/translation/ai-translation-document-rest/src/isUnexpected.ts index 1b30c35b5f0d..f37b860c698e 100644 --- a/sdk/translation/ai-translation-document-rest/src/isUnexpected.ts +++ b/sdk/translation/ai-translation-document-rest/src/isUnexpected.ts @@ -1,10 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import type { +import { DocumentTranslate200Response, DocumentTranslateDefaultResponse, StartTranslation202Response, @@ -45,13 +42,17 @@ export function isUnexpected( | StartTranslationDefaultResponse, ): response is StartTranslationDefaultResponse; export function isUnexpected( - response: GetTranslationsStatus200Response | GetTranslationsStatusDefaultResponse, + response: + | GetTranslationsStatus200Response + | GetTranslationsStatusDefaultResponse, ): response is GetTranslationsStatusDefaultResponse; export function isUnexpected( response: GetDocumentStatus200Response | GetDocumentStatusDefaultResponse, ): response is GetDocumentStatusDefaultResponse; export function isUnexpected( - response: GetTranslationStatus200Response | GetTranslationStatusDefaultResponse, + response: + | GetTranslationStatus200Response + | GetTranslationStatusDefaultResponse, ): response is GetTranslationStatusDefaultResponse; export function isUnexpected( response: CancelTranslation200Response | CancelTranslationDefaultResponse, @@ -122,17 +123,24 @@ function getParametrizedPathSuccess(method: string, path: string): string[] { // 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) { + 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] || "", - ); + const isMatched = new RegExp( + `${candidateParts[i]?.slice(start, end)}`, + ).test(pathParts[j] || ""); if (!isMatched) { found = false; diff --git a/sdk/translation/ai-translation-document-rest/src/logger.ts b/sdk/translation/ai-translation-document-rest/src/logger.ts index d08ff659f155..0d6fc077f63f 100644 --- a/sdk/translation/ai-translation-document-rest/src/logger.ts +++ b/sdk/translation/ai-translation-document-rest/src/logger.ts @@ -1,8 +1,5 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - import { createClientLogger } from "@azure/logger"; export const logger = createClientLogger("ai-translation-document"); diff --git a/sdk/translation/ai-translation-document-rest/src/models.ts b/sdk/translation/ai-translation-document-rest/src/models.ts index db7ce7ad13b7..4359b0c17988 100644 --- a/sdk/translation/ai-translation-document-rest/src/models.ts +++ b/sdk/translation/ai-translation-document-rest/src/models.ts @@ -1,19 +1,26 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - export interface DocumentTranslateContentDocumentPartDescriptor { name: "document"; - body: string | Uint8Array | ReadableStream | NodeJS.ReadableStream | File; + body: + | string + | Uint8Array + | ReadableStream + | NodeJS.ReadableStream + | File; filename?: string; contentType?: string; } export interface DocumentTranslateContentGlossaryPartDescriptor { name: "glossary"; - body: string | Uint8Array | ReadableStream | NodeJS.ReadableStream | File; + body: + | string + | Uint8Array + | ReadableStream + | NodeJS.ReadableStream + | File; filename?: string; contentType?: string; } diff --git a/sdk/translation/ai-translation-document-rest/src/outputModels.ts b/sdk/translation/ai-translation-document-rest/src/outputModels.ts index 1b4a84572f72..8b8a73ae7753 100644 --- a/sdk/translation/ai-translation-document-rest/src/outputModels.ts +++ b/sdk/translation/ai-translation-document-rest/src/outputModels.ts @@ -1,9 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - /** Translation job Status Response */ export interface TranslationsStatusOutput { /** The summary status of individual operation */ @@ -14,7 +11,7 @@ export interface TranslationsStatusOutput { /** Translation job status response */ export interface TranslationStatusOutput { - /** Id of the operation. */ + /** Id of the translation operation. */ id: string; /** Operation created date time */ createdDateTimeUtc: string; @@ -170,11 +167,17 @@ export interface FileFormatOutput { defaultVersion?: string; /** Supported Version */ versions?: string[]; - /** Supported Type for this format */ - type?: string; + /** + * Supported Type for this format + * + * Possible values: "document", "glossary" + */ + type?: FileFormatTypeOutput; } /** Alias for StatusOutput */ export type StatusOutput = string; /** Alias for TranslationErrorCodeOutput */ export type TranslationErrorCodeOutput = string; +/** Alias for FileFormatTypeOutput */ +export type FileFormatTypeOutput = string; diff --git a/sdk/translation/ai-translation-document-rest/src/paginateHelper.ts b/sdk/translation/ai-translation-document-rest/src/paginateHelper.ts index f506b03afc2e..94d5220235d9 100644 --- a/sdk/translation/ai-translation-document-rest/src/paginateHelper.ts +++ b/sdk/translation/ai-translation-document-rest/src/paginateHelper.ts @@ -1,13 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import type { PagedAsyncIterableIterator, PagedResult } from "@azure/core-paging"; -import { getPagedAsyncIterator } from "@azure/core-paging"; -import type { Client, PathUncheckedResponse } from "@azure-rest/core-client"; -import { createRestError } from "@azure-rest/core-client"; +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 @@ -72,7 +75,9 @@ export function paginate( typeof customGetPage === "function" ? customGetPage : async (pageLink: string) => { - const result = firstRun ? initialResponse : await client.pathUnchecked(pageLink).get(); + const result = firstRun + ? initialResponse + : await client.pathUnchecked(pageLink).get(); firstRun = false; checkPagingRequest(result); const nextLink = getNextLink(result.body, nextLinkName); @@ -98,7 +103,9 @@ function getNextLink(body: unknown, nextLinkName?: string): string | 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`); + throw new Error( + `Body Property ${nextLinkName} should be a string or undefined`, + ); } return nextLink; @@ -126,7 +133,18 @@ function getElements(body: unknown, itemName: string): T[] { * Checks if a request failed */ function checkPagingRequest(response: PathUncheckedResponse): void { - const Http2xxStatusCodes = ["200", "201", "202", "203", "204", "205", "206", "207", "208", "226"]; + 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}`, diff --git a/sdk/translation/ai-translation-document-rest/src/parameters.ts b/sdk/translation/ai-translation-document-rest/src/parameters.ts index 43802f4d19dc..75abc59d3881 100644 --- a/sdk/translation/ai-translation-document-rest/src/parameters.ts +++ b/sdk/translation/ai-translation-document-rest/src/parameters.ts @@ -1,12 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import type { RawHttpHeadersInput } from "@azure/core-rest-pipeline"; -import type { RequestParameters } from "@azure-rest/core-client"; -import type { +import { RawHttpHeadersInput } from "@azure/core-rest-pipeline"; +import { RequestParameters } from "@azure-rest/core-client"; +import { DocumentTranslateContent, StartTranslationDetails, FileFormatType, @@ -72,7 +69,8 @@ export interface StartTranslationBodyParam { body: StartTranslationDetails; } -export type StartTranslationParameters = StartTranslationBodyParam & RequestParameters; +export type StartTranslationParameters = StartTranslationBodyParam & + RequestParameters; export interface GetTranslationsStatusQueryParamProperties { /** @@ -133,7 +131,8 @@ export interface GetTranslationsStatusQueryParam { queryParameters?: GetTranslationsStatusQueryParamProperties; } -export type GetTranslationsStatusParameters = GetTranslationsStatusQueryParam & RequestParameters; +export type GetTranslationsStatusParameters = GetTranslationsStatusQueryParam & + RequestParameters; export type GetDocumentStatusParameters = RequestParameters; export type GetTranslationStatusParameters = RequestParameters; export type CancelTranslationParameters = RequestParameters; @@ -197,7 +196,8 @@ export interface GetDocumentsStatusQueryParam { queryParameters?: GetDocumentsStatusQueryParamProperties; } -export type GetDocumentsStatusParameters = GetDocumentsStatusQueryParam & RequestParameters; +export type GetDocumentsStatusParameters = GetDocumentsStatusQueryParam & + RequestParameters; export interface GetSupportedFormatsQueryParamProperties { /** @@ -212,4 +212,5 @@ export interface GetSupportedFormatsQueryParam { queryParameters?: GetSupportedFormatsQueryParamProperties; } -export type GetSupportedFormatsParameters = GetSupportedFormatsQueryParam & RequestParameters; +export type GetSupportedFormatsParameters = GetSupportedFormatsQueryParam & + RequestParameters; diff --git a/sdk/translation/ai-translation-document-rest/src/pollingHelper.ts b/sdk/translation/ai-translation-document-rest/src/pollingHelper.ts index 75c8bfe26346..35385e9649d7 100644 --- a/sdk/translation/ai-translation-document-rest/src/pollingHelper.ts +++ b/sdk/translation/ai-translation-document-rest/src/pollingHelper.ts @@ -1,20 +1,17 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import type { Client, HttpResponse } from "@azure-rest/core-client"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { +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 { createHttpPoller } from "@azure/core-lro"; -import type { +import { StartTranslation202Response, StartTranslationDefaultResponse, StartTranslationLogicalResponse, @@ -23,7 +20,10 @@ import type { /** * A simple poller that can be used to poll a long running operation. */ -export interface SimplePollerLike, TResult> { +export interface SimplePollerLike< + TState extends OperationState, + TResult, +> { /** * Returns true if the poller has finished polling. */ @@ -47,7 +47,9 @@ export interface SimplePollerLike, TResul /** * Returns a promise that will resolve once the underlying operation is completed. */ - pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise; + pollUntilDone(pollOptions?: { + abortSignal?: AbortSignalLike; + }): Promise; /** * Invokes the provided callback after each polling is completed, * sending the current state of the poller's operation. @@ -94,10 +96,14 @@ export interface SimplePollerLike, TResul * @returns - A poller object to poll for operation state updates and eventually get the final response. */ export async function getLongRunningPoller< - TResult extends StartTranslationLogicalResponse | StartTranslationDefaultResponse, + TResult extends + | StartTranslationLogicalResponse + | StartTranslationDefaultResponse, >( client: Client, - initialResponse: StartTranslation202Response | StartTranslationDefaultResponse, + initialResponse: + | StartTranslation202Response + | StartTranslationDefaultResponse, options?: CreateHttpPollerOptions>, ): Promise, TResult>>; export async function getLongRunningPoller( @@ -113,7 +119,10 @@ export async function getLongRunningPoller( // response we were provided. return getLroResponse(initialResponse); }, - sendPollRequest: async (path: string, pollOptions?: { abortSignal?: AbortSignalLike }) => { + 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 @@ -139,7 +148,8 @@ export async function getLongRunningPoller( inputAbortSignal?.removeEventListener("abort", abortListener); } const lroResponse = getLroResponse(response as TResult); - lroResponse.rawResponse.headers["x-ms-original-url"] = initialResponse.request.url; + lroResponse.rawResponse.headers["x-ms-original-url"] = + initialResponse.request.url; return lroResponse; }, }; @@ -195,7 +205,9 @@ 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}`); + throw new TypeError( + `Status code of the response is not a number. Value: ${response.status}`, + ); } return { diff --git a/sdk/translation/ai-translation-document-rest/src/responses.ts b/sdk/translation/ai-translation-document-rest/src/responses.ts index 999b2ca5a2fe..6d62a10bd102 100644 --- a/sdk/translation/ai-translation-document-rest/src/responses.ts +++ b/sdk/translation/ai-translation-document-rest/src/responses.ts @@ -1,12 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import type { RawHttpHeaders } from "@azure/core-rest-pipeline"; -import type { HttpResponse, ErrorResponse } from "@azure-rest/core-client"; -import type { +import { RawHttpHeaders } from "@azure/core-rest-pipeline"; +import { HttpResponse, ErrorResponse } from "@azure-rest/core-client"; +import { TranslationsStatusOutput, DocumentStatusOutput, TranslationStatusOutput, diff --git a/sdk/translation/ai-translation-document-rest/test/public/getSupportedFormatsTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/getSupportedFormatsTest.spec.ts deleted file mode 100644 index 8788a67af6a2..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/getSupportedFormatsTest.spec.ts +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { Recorder } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import type { DocumentTranslationClient } from "../../src"; -import { isUnexpected } from "../../src"; -import { createDocumentTranslationClient, startRecorder } from "./utils/recordedClient"; -import type { Context } from "mocha"; - -describe("GetSupportedFormats tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("all formats", async () => { - const response = await client.path("/document/formats").get(); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach((fileFormatType) => { - assert.isTrue(fileFormatType.format !== null); - assert.isTrue(fileFormatType.contentTypes !== null); - assert.isTrue(fileFormatType.fileExtensions !== null); - }); - }); - - it("document formats", async () => { - // Define the query parameters with the specified type - const options = { - queryParameters: { - type: "document", - }, - }; - - const response = await client.path("/document/formats").get(options); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach((fileFormatType) => { - assert.isTrue(fileFormatType.format !== null); - assert.isTrue(fileFormatType.contentTypes !== null); - assert.isTrue(fileFormatType.fileExtensions !== null); - assert.isTrue(fileFormatType.type === "Document"); - if (fileFormatType.format === "XLIFF") { - assert.isTrue(fileFormatType.defaultVersion !== null); - } - }); - }); - - it("glossary formats", async () => { - // Define the query parameters with the specified type - const options = { - queryParameters: { - type: "glossary", - }, - }; - - const response = await client.path("/document/formats").get(options); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach((fileFormatType) => { - assert.isTrue(fileFormatType.format !== null); - assert.isTrue(fileFormatType.contentTypes !== null); - assert.isTrue(fileFormatType.fileExtensions !== null); - assert.isTrue(fileFormatType.type === "Glossary"); - if (fileFormatType.format === "XLIFF") { - assert.isTrue(fileFormatType.defaultVersion !== null); - } - }); - }); -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/cancelTranslationTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/node/cancelTranslationTest.spec.ts deleted file mode 100644 index 13a274adde03..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/cancelTranslationTest.spec.ts +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { Recorder } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import type { DocumentTranslationClient } from "../../../src"; -import { isUnexpected } from "../../../src"; -import { createDocumentTranslationClient, startRecorder } from "../utils/recordedClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "./containerHelper"; -import type { Context } from "mocha"; -import { - createBatchRequest, - createSourceInput, - createTargetInput, - getTranslationOperationID, -} from "../utils/testHelper"; - -describe("CancelTranslation tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("cancel translation", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - const id = getTranslationOperationID(poller.headers["operation-location"]); - - // Cancel translation - await client.path("/document/batches/{id}", id).delete(); - - // get translation status and verify - const response = await client.path("/document/batches/{id}", id).get(); - if (isUnexpected(response)) { - throw response.body; - } - - const idOutput = response.body.id; - assert.isTrue(idOutput === id, "IDOutput is:" + idOutput); - const statusOutput = response.body.status; - assert.isTrue( - statusOutput === "Cancelled" || - statusOutput === "Cancelling" || - statusOutput === "NotStarted", - "Status output is: " + statusOutput, - ); - }); -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/containerHelper.ts b/sdk/translation/ai-translation-document-rest/test/public/node/containerHelper.ts deleted file mode 100644 index 792beada61a3..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/containerHelper.ts +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { Recorder } from "@azure-tools/test-recorder"; -import type { ContainerClient } from "@azure/storage-blob"; -import { BlobServiceClient } from "@azure/storage-blob"; -import type { TestDocument } from "../utils/TestDocument"; -import { createTestDocument } from "../utils/TestDocument"; -import type { Pipeline } from "@azure/core-rest-pipeline"; -import { createTestCredential } from "@azure-tools/test-credential"; - -export const ONE_TEST_DOCUMENTS = [ - createTestDocument("Document1.txt", "First english test document"), -]; - -export const TWO_TEST_DOCUMENTS = [ - createTestDocument("Document1.txt", "First english test file"), - createTestDocument("File2.txt", "Second english test file"), -]; - -export async function createSourceContainer( - recorder: Recorder, - documents: TestDocument[], - containerName?: string | undefined, -): Promise { - if (containerName === undefined) { - containerName = recorder.variable("sourceContainer", `source-${getUniqueName()}`); - } - const containerClient = await createContainer(recorder, containerName, documents); - return containerClient.url; -} - -export async function createTargetContainer( - recorder: Recorder, - containerName?: string | undefined, - documents?: TestDocument[], -): Promise { - if (containerName === undefined) { - containerName = recorder.variable("targetContainer", `target-${getUniqueName()}`); - } - const containerClient = await createContainer(recorder, containerName, documents); - return containerClient.url; -} - -export async function createGlossaryContainer(recorder: Recorder): Promise { - const glossaryName = "validGlossary.csv"; - const glossaryContent = "test, glossaryTest"; - const documents = [createTestDocument(glossaryName, glossaryContent)]; - const containerName = recorder.variable("glossaryContainer", `glossary-${getUniqueName()}`); - const containerClient = await createContainer(recorder, containerName, documents); - const containerUrl = containerClient.url; - - // Add the glossary name to the base URL - const newUrl = `${containerUrl}/${glossaryName}`; - return `${newUrl}`; -} - -export async function createTargetContainerWithInfo( - recorder: Recorder, - documents?: TestDocument[], -): Promise> { - const containerName = recorder.variable("targetContainer", `target-${getUniqueName()}`); - const containerClient = await createContainer(recorder, containerName, documents); - const containerUrl = containerClient.url; - const containerUrlTest = recorder.variable("containerUrl", `${containerUrl}`); - - const containerValuesMap: Map = new Map(); - containerValuesMap.set("containerUrl", containerUrlTest); - containerValuesMap.set("containerName", containerName); - return containerValuesMap; -} - -async function createContainer( - recorder: Recorder, - containerName: string, - documents?: TestDocument[], -): Promise { - const storageName = getEnvVar("DOCUMENT_TRANSLATION_STORAGE_NAME"); - const url = `https://${storageName}.blob.core.windows.net/`; - const blobServiceClient: BlobServiceClient = new BlobServiceClient(url, createTestCredential()); - configureBlobStorageClient(recorder, blobServiceClient); - - const containerClient = blobServiceClient.getContainerClient(containerName); - await containerClient.createIfNotExists(); - - if (documents && documents.length > 0) { - await uploadDocuments(containerClient, documents); - } - return containerClient; -} - -function configureBlobStorageClient( - recorder: Recorder, - serviceClient: ContainerClient | BlobServiceClient, -): void { - const options = recorder.configureClientOptions({}); - - const pipeline: Pipeline = (serviceClient as any).storageClientContext.pipeline; - for (const { policy } of options.additionalPolicies ?? []) { - pipeline.addPolicy(policy, { afterPhase: "Sign", afterPolicies: ["injectorPolicy"] }); - } - return; -} - -async function uploadDocuments(containerClient: ContainerClient, documents: TestDocument[]) { - for (const document of documents) { - const blobClient = containerClient.getBlobClient(document.name); - const blockBlobClient = blobClient.getBlockBlobClient(); - await blockBlobClient.upload(document.content, document.content.length); - } - return; -} - -export async function downloadDocument( - recorder: Recorder, - containerName: string, - documentName: string, -): Promise { - const storageName = getEnvVar("DOCUMENT_TRANSLATION_STORAGE_NAME"); - const url = `https://${storageName}.blob.core.windows.net/`; - const blobServiceClient: BlobServiceClient = new BlobServiceClient(url, createTestCredential()); - configureBlobStorageClient(recorder, blobServiceClient); - - const containerClient = blobServiceClient.getContainerClient(containerName); - const blobClient = containerClient.getBlobClient(documentName); - const blockBlobClient = blobClient.getBlockBlobClient(); - - const downloadBlockBlobResponse = await blockBlobClient.download(); - const downloaded = ( - await streamToBuffer(downloadBlockBlobResponse.readableStreamBody) - ).toString(); - console.log("Downloaded Stream = " + downloaded); - return downloaded; -} - -export function getUniqueName(): string { - const randomNumber = Math.floor(Math.random() * 1e10); - return randomNumber.toString().padStart(10, "0"); -} - -// A helper method used to read a Node.js readable stream into a Buffer -async function streamToBuffer(readableStream: NodeJS.ReadableStream | undefined): Promise { - return new Promise((resolve, reject) => { - const chunks: Buffer[] = []; - readableStream?.on("data", (data: Buffer | string) => { - chunks.push(data instanceof Buffer ? data : Buffer.from(data)); - }); - readableStream?.on("end", () => { - resolve(Buffer.concat(chunks)); - }); - readableStream?.on("error", reject); - }); -} - -export function getEnvVar(name: string): string { - const val = process.env[name]; - if (!val) { - throw `Environment variable ${name} is not defined.`; - } - return val; -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/documentFilterTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/node/documentFilterTest.spec.ts deleted file mode 100644 index 57cf53484eb5..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/documentFilterTest.spec.ts +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { Recorder } from "@azure-tools/test-recorder"; -import { isPlaybackMode } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import type { DocumentTranslationClient, StartTranslation202Response } from "../../../src"; -import { isUnexpected, getLongRunningPoller } from "../../../src"; -import { createDocumentTranslationClient, startRecorder } from "../utils/recordedClient"; -import { createSourceContainer, createTargetContainer } from "./containerHelper"; -import type { Context } from "mocha"; -import { - createBatchRequest, - createDummyTestDocuments, - createSourceInput, - createTargetInput, - getTranslationOperationID, -} from "../utils/testHelper"; - -export const testPollingOptions = { - intervalInMs: isPlaybackMode() ? 0 : undefined, -}; - -describe("DocumentFilter tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("Document Statuses Filter By Status", async () => { - const result = createSingleTranslationJob(5); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // Add Status filter - const succeededStatusList = ["Succeeded"]; - const queryParams = { - statuses: succeededStatusList, - }; - - // get DocumentsStatus - const response = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - const responseBody = response.body; - for (const documentStatus of responseBody.value) { - assert.isTrue(succeededStatusList.includes(documentStatus.status)); - } - }); - - it("Document Statuses Filter By ID", async () => { - const result = createSingleTranslationJob(2); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // get Documents Status with operationID - const testIds = []; - const response = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - let responseBody = response.body; - for (const documentStatus of responseBody.value) { - testIds.push(documentStatus.id); - } - - // Add id filter - const queryParams = { - ids: testIds, - }; - - // get Documents Status with testIds option - const documentStatusResponse = await client - .path("/document/batches/{id}/documents", operationId) - .get({ - queryParameters: queryParams, - }); - if (isUnexpected(documentStatusResponse)) { - throw "get documents status job error:" + documentStatusResponse.body; - } - - responseBody = documentStatusResponse.body; - for (const documentStatus of responseBody.value) { - assert.isTrue(testIds.includes(documentStatus.id)); - } - }); - - it("Document Statuses Filter By Created After", async () => { - const result = createSingleTranslationJob(5); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // Add orderBy filter - const orderByList = ["createdDateTimeUtc asc"]; - const queryParams = { - orderby: orderByList, - }; - - // get Documents Status w.r.t orderby - const testCreatedOnDateTimes = []; - const response = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - let responseBody = response.body; - for (const documentStatus of responseBody.value) { - testCreatedOnDateTimes.push(documentStatus.createdDateTimeUtc); - } - - // Asserting that only the last document is returned - let itemCount = 0; - const queryParams2 = { - createdDateTimeUtcStart: testCreatedOnDateTimes[4], - }; - - const response2 = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams2, - }); - if (isUnexpected(response2)) { - throw "get documents status job error:" + response2.body; - } - responseBody = response2.body; - for (const documentStatus of responseBody.value) { - assert.isNotNull(documentStatus); - itemCount += 1; - } - - assert.equal(itemCount, 1); - }); - - it("Document Statuses Filter By Created Before", async () => { - const result = createSingleTranslationJob(5); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // Add orderBy filter - const orderByList = ["createdDateTimeUtc asc"]; - const queryParams = { - orderby: orderByList, - }; - - // get Documents Status w.r.t orderby - const testCreatedOnDateTimes = []; - const response = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - let responseBody = response.body; - for (const documentStatus of responseBody.value) { - testCreatedOnDateTimes.push(documentStatus.createdDateTimeUtc); - } - - // Asserting that only the first document is returned - let itemCount2 = 0; - const queryParams2 = { - createdDateTimeUtcEnd: testCreatedOnDateTimes[0], - }; - - const response2 = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams2, - }); - if (isUnexpected(response2)) { - throw "get documents status job error:" + response2.body; - } - - responseBody = response2.body; - for (const documentStatus of responseBody.value) { - assert.isNotNull(documentStatus); - itemCount2 += 1; - } - - assert.equal(itemCount2, 1); - - // Asserting that the first 4/5 docs are returned - let itemCount3 = 0; - const queryParams3 = { - createdDateTimeUtcEnd: testCreatedOnDateTimes[3], - }; - - const response3 = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams3, - }); - if (isUnexpected(response3)) { - throw "get documents status job error:" + response3.body; - } - responseBody = response3.body; - for (const documentStatus of responseBody.value) { - assert.isNotNull(documentStatus); - itemCount3 += 1; - } - - assert.equal(itemCount3, 4); - }); - - it("Document Statuses Filter By Created On", async () => { - const result = createSingleTranslationJob(3); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // Add OrderBy filter - const orderByList = ["createdDateTimeUtc desc"]; - const queryParams = { - statuses: orderByList, - }; - - // get Documents Status - const response = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - const timestamp = new Date(); - - const responseBody = response.body; - for (const documentStatus of responseBody.value) { - const createdDateTime = new Date(documentStatus.createdDateTimeUtc); - assert.isTrue(createdDateTime < timestamp || createdDateTime === timestamp); - } - }); - - async function createSingleTranslationJob(count: number) { - const testDocs = createDummyTestDocuments(count); - const sourceUrl = await createSourceContainer(recorder, testDocs); - const sourceInput = createSourceInput(sourceUrl); - - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(response)) { - throw "start translation job error:" + response.body; - } - - // Wait until the operation completes - const poller = getLongRunningPoller(client, response, testPollingOptions); - const result = await (await poller).pollUntilDone(); - assert.equal(result.status, "200"); - - return response as StartTranslation202Response; - } -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/documentTranslationTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/node/documentTranslationTest.spec.ts deleted file mode 100644 index 1b5402a8d238..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/documentTranslationTest.spec.ts +++ /dev/null @@ -1,575 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { Recorder } from "@azure-tools/test-recorder"; -import { isLiveMode, isPlaybackMode } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import type { - DocumentStatusOutput, - DocumentTranslationClient, - GetDocumentStatus200Response, - GetTranslationStatus200Response, - StartTranslationDefaultResponse, - TranslationStatusOutput, -} from "../../../src"; -import { getLongRunningPoller, isUnexpected } from "../../../src"; -import { - createDocumentTranslationClient, - createDocumentTranslationClientWithEndpointAndCredentials, - startRecorder, -} from "../utils/recordedClient"; - -import type { Context } from "mocha"; -import { - ONE_TEST_DOCUMENTS, - TWO_TEST_DOCUMENTS, - createGlossaryContainer, - createSourceContainer, - createTargetContainer, - createTargetContainerWithInfo, - downloadDocument, - getUniqueName, -} from "./containerHelper"; -import { - createBatchRequest, - createSourceInput, - createTargetInput, - getTranslationOperationID, - sleep, -} from "../utils/testHelper"; -import { createTestDocument } from "../utils/TestDocument"; -import type { BatchRequest } from "../../../src/models"; - -export const testPollingOptions = { - intervalInMs: isPlaybackMode() ? 0 : undefined, -}; - -describe("DocumentTranslation tests", () => { - const retryCount = 10; - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it.skip("Client Cannot Authenticate With FakeApiKey", async () => { - const testEndpoint = "https://t7d8641d8f25ec940-doctranslation.cognitiveservices.azure.com"; - const testApiKey = "fakeApiKey"; - const testClient = await createDocumentTranslationClientWithEndpointAndCredentials({ - endpointParam: testEndpoint, - credentials: { key: testApiKey }, - }); - - const response = await testClient.path("/document/formats").get(); - if (isUnexpected(response)) { - assert.equal(response.status, "401"); - } - }); - - it("Single Source Single Target", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 1); - }); - - it("Single Source Multiple Targets", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - - const containerName1 = recorder.variable("targetContainer1", `target-${getUniqueName()}`); - const targetUrl1 = await createTargetContainer(recorder, containerName1); - const targetInput1 = createTargetInput(targetUrl1, "fr"); - - const containerName2 = recorder.variable("targetContainer2", `target-${getUniqueName()}`); - const targetUrl2 = await createTargetContainer(recorder, containerName2); - const targetInput2 = createTargetInput(targetUrl2, "es"); - - const containerName3 = recorder.variable("targetContainer3", `target-${getUniqueName()}`); - const targetUrl3 = await createTargetContainer(recorder, containerName3); - const targetInput3 = createTargetInput(targetUrl3, "ar"); - - const batchRequest = createBatchRequest(sourceInput, [ - targetInput1, - targetInput2, - targetInput3, - ]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 3); - }); - - it("Multiple Sources Single Target", async () => { - const srcContainerName1 = recorder.variable("sourceContainer1", `source-${getUniqueName()}`); - const sourceUrl1 = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS, srcContainerName1); - const sourceInput1 = createSourceInput(sourceUrl1); - - const tgtContainerName1 = recorder.variable("targetContainer1", `target-${getUniqueName()}`); - const targetUrl1 = await createTargetContainer(recorder, tgtContainerName1); - const targetInput1 = createTargetInput(targetUrl1, "fr"); - const batchRequest1 = createBatchRequest(sourceInput1, [targetInput1]); - - const srcContainerName2 = recorder.variable("sourceContainer2", `source-${getUniqueName()}`); - const sourceInput2 = createSourceInput( - await createSourceContainer(recorder, ONE_TEST_DOCUMENTS, srcContainerName2), - ); - - const tgtContainerName2 = recorder.variable("targetContainer2", `target-${getUniqueName()}`); - const targetUrl2 = await createTargetContainer(recorder, tgtContainerName2); - const targetInput2 = createTargetInput(targetUrl2, "es"); - const batchRequest2 = createBatchRequest(sourceInput2, [targetInput2]); - - // Start translation - const batchRequests = { inputs: [batchRequest1, batchRequest2] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response, 2); - }); - - it("Single Source Single Target With Prefix", async () => { - const documentFilter = { - prefix: "File", - }; - const sourceUrl = await createSourceContainer(recorder, TWO_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl, undefined, undefined, documentFilter); - - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 1); - }); - - it("Single Source Single Target With Suffix", async () => { - const documentFilter = { - suffix: "txt", - }; - const sourceInput = createSourceInput( - await createSourceContainer(recorder, ONE_TEST_DOCUMENTS), - undefined, - undefined, - documentFilter, - ); - const targetInput = createTargetInput(await createTargetContainer(recorder), "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 1); - }); - - it("Single Source Single Target List Documents", async () => { - const sourceInput = createSourceInput( - await createSourceContainer(recorder, ONE_TEST_DOCUMENTS), - ); - const targetInput = createTargetInput(await createTargetContainer(recorder), "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get translations status - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).status === "Succeeded" && - retriesLeft > 0 - ); - const translationStatusOutput = translationStatus?.body as TranslationStatusOutput; - - if (translationStatusOutput.status === "Succeeded") { - // get Documents Status - const documentResponse = await client - .path("/document/batches/{id}/documents", operationId) - .get(); - if (isUnexpected(documentResponse)) { - throw "get documents status job error:" + documentResponse.body; - } - const responseBody = documentResponse.body; - for (const documentStatus of responseBody.value) { - console.log("documentStatus.status" + documentStatus.status); - console.log("translationStatusOutput.status" + translationStatusOutput.status); - assert.equal(documentStatus.status, translationStatusOutput.status); - assert.equal( - documentStatus.characterCharged, - translationStatusOutput.summary.totalCharacterCharged, - ); - break; - } - } - }); - - it("Get Document Status", async () => { - const sourceInput = createSourceInput( - await createSourceContainer(recorder, ONE_TEST_DOCUMENTS), - ); - const targetInput = createTargetInput(await createTargetContainer(recorder), "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get Documents Status - const documentResponse = await client - .path("/document/batches/{id}/documents", operationId) - .get(); - - if (isUnexpected(documentResponse)) { - throw "get documents status job error:" + documentResponse.body; - } - const responseBody = documentResponse.body; - for (const document of responseBody.value) { - const documentStatus = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, document.id) - .get(); - if (isUnexpected(documentStatus)) { - throw "get documents status job error:" + documentStatus.body; - } - validateDocumentStatus(documentStatus as GetDocumentStatus200Response, document.to); - } - }); - - it("Wrong Source Right Target", async () => { - const sourceInput = createSourceInput("https://idont.ex.ist"); - const targetInput = createTargetInput(await createTargetContainer(recorder), "es"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get translations status - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).status === "NotStarted" && - retriesLeft > 0 - ); - assert.equal((translationStatus?.body as TranslationStatusOutput).status, "ValidationFailed"); - assert.equal( - (translationStatus?.body as TranslationStatusOutput).error?.innerError?.code, - "InvalidDocumentAccessLevel", - ); - }); - - it("Right Source Wrong Target", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetInput = createTargetInput("https://idont.ex.ist", "es"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get translations status - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).status === "NotStarted" && - retriesLeft > 0 - ); - - assert.equal((translationStatus?.body as TranslationStatusOutput).status, "ValidationFailed"); - assert.equal( - (translationStatus?.body as TranslationStatusOutput).error?.innerError?.code, - "InvalidTargetDocumentAccessLevel", - ); - }); - - it("Supported And UnSupported Files", async () => { - const documents = [ - createTestDocument("Document1.txt", "First english test file"), - createTestDocument("File2.jpg", "jpg"), - ]; - const sourceUrl = await createSourceContainer(recorder, documents); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 1); - }); - - it("Empty Document Error", async () => { - const documents = [createTestDocument("Document1.txt", "")]; - const sourceUrl = await createSourceContainer(recorder, documents); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - // Validate the response - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - const translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - if (isUnexpected(translationStatus)) { - throw "get documents status job error:" + translationStatus.body; - } - const translationStatusOutput = translationStatus.body as TranslationStatusOutput; - assert.equal(translationStatusOutput.status, "Failed"); - assert.equal(translationStatusOutput.summary.total, 1); - assert.equal(translationStatusOutput.summary.success, 0); - assert.equal(translationStatusOutput.summary.failed, 1); - assert.equal(translationStatusOutput.error?.code, "InvalidRequest"); - assert.equal(translationStatusOutput.error?.innerError?.code, "NoTranslatableText"); - }); - - it("Existing File In Target Container", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder, undefined, ONE_TEST_DOCUMENTS); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get translations status - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).status === "NotStarted" && - retriesLeft > 0 - ); - assert.equal((translationStatus?.body as TranslationStatusOutput).status, "ValidationFailed"); - assert.equal( - (translationStatus?.body as TranslationStatusOutput).error?.innerError?.code, - "TargetFileAlreadyExists", - ); - }); - - it("Invalid Document GUID", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get document status - let documentResponse = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, "Foo Bar") - .get(); - assert.equal(documentResponse.status, "404"); - - documentResponse = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, " ") - .get(); - assert.equal(documentResponse.status, "404"); - }); - - it("Document Translation With Glossary", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - - const targetContainer = await createTargetContainerWithInfo(recorder); - const targetUrl = targetContainer.get("containerUrl") as string; - const targetContainerName = targetContainer.get("containerName") as string; - const glossaryUrl = await createGlossaryContainer(recorder); - - const glossaries = [ - { - glossaryUrl: glossaryUrl, - format: "csv", - }, - ]; - const targetInput = createTargetInput(targetUrl, "fr", undefined, glossaries); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - const result = downloadDocument(recorder, targetContainerName, "Document1.txt"); - assert.isTrue((await result).includes("glossaryTest")); - }); - - async function validateTranslationStatus( - translationResponse: StartTranslationDefaultResponse, - translationCount: number, - ) { - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - assert.equal(translationResponse.status, "Succeeded"); - - const translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - if (isUnexpected(translationStatus)) { - throw "get documents status job error:" + translationStatus.body; - } - const translationStatusOutput = translationStatus.body as TranslationStatusOutput; - assert.equal(translationStatusOutput.summary.total, translationCount); - assert.equal(translationStatusOutput.summary.success, translationCount); - assert.equal(translationStatusOutput.summary.failed, 0); - assert.equal(translationStatusOutput.summary.cancelled, 0); - assert.equal(translationStatusOutput.summary.inProgress, 0); - - return; - } - - function validateDocumentStatus( - documentStatus: GetDocumentStatus200Response, - targetLanguage: string, - ) { - assert.equal(documentStatus.status, "200"); - const documentStatusOutput = documentStatus.body as DocumentStatusOutput; - assert.isNotNull(documentStatusOutput.id); - assert.isNotNull(documentStatusOutput.sourcePath); - assert.isNotNull(documentStatusOutput.path); - if (isLiveMode()) { - assert.equal(targetLanguage, documentStatusOutput.to); - } - assert.notEqual(new Date(), new Date(documentStatusOutput.createdDateTimeUtc)); - assert.notEqual(new Date(), new Date(documentStatusOutput.lastActionDateTimeUtc)); - assert.equal(1, documentStatusOutput.progress); - - return; - } - - async function StartTranslationAndWait(batchRequests: { - inputs: BatchRequest[]; - }): Promise { - // Start translation - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(response)) { - throw "start translation job error:" + response.body; - } - - // Wait until the operation completes - const poller = getLongRunningPoller(client, response, testPollingOptions); - const result = await (await poller).pollUntilDone(); - assert.equal(result.status, "200"); - - return response as StartTranslationDefaultResponse; - } -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/translationFilterTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/node/translationFilterTest.spec.ts deleted file mode 100644 index a28b334b9fc9..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/translationFilterTest.spec.ts +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { Recorder } from "@azure-tools/test-recorder"; -import { isPlaybackMode } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import type { - DocumentTranslationClient, - GetTranslationStatus200Response, - TranslationStatusOutput, -} from "../../../src"; -import { isUnexpected, getLongRunningPoller } from "../../../src"; -import { createDocumentTranslationClient, startRecorder } from "../utils/recordedClient"; -import { createSourceContainer, createTargetContainer } from "./containerHelper"; -import type { Context } from "mocha"; -import { - createBatchRequest, - createDummyTestDocuments, - createSourceInput, - createTargetInput, - getTranslationOperationID, - sleep, -} from "../utils/testHelper"; - -export const testPollingOptions = { - intervalInMs: isPlaybackMode() ? 0 : undefined, -}; - -describe("TranslationFilter tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("Translation Statuses Filter By Status", async () => { - createTranslationJobs(1, 1, "Succeeded"); - const cancelledIds = createTranslationJobs(1, 1, "Cancelled"); - - // list translations with filter - const cancelledStatusList = ["Cancelled", "Cancelling"]; - const testStartTime = recorder.variable("testStartTime", new Date().toISOString()); - - const queryParams = { - statuses: cancelledStatusList, - createdDateTimeUtcStart: testStartTime, - }; - - // get Translation Status - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - assert.isTrue(cancelledStatusList.includes(translationStatus.status)); - assert.isTrue((await cancelledIds).includes(translationStatus.id)); - } - }); - - it("Translation Statuses Filter By Id", async () => { - const allIds = createTranslationJobs(2, 1, "Succeeded"); - const targetIds = []; - targetIds.push((await allIds)[0]); - - // get Translation Status - const queryParams = { - ids: targetIds, - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - assert.isTrue(targetIds.includes(translationStatus.id)); - } - }); - - it("Translation Statuses Filter By Created After", async () => { - const testStartTime = recorder.variable("testStartTime", new Date().toISOString()); - const targetIds = createTranslationJobs(1, 1, "Succeeded"); - - // get Translation Status - const queryParams = { - createdDateTimeUtcStart: testStartTime, - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - assert.isTrue((await targetIds).includes(translationStatus.id)); - assert.isTrue(new Date(translationStatus.createdDateTimeUtc).toISOString() > testStartTime); - } - }); - - it("Translation Statuses Filter By Created Before", async () => { - const targetIds = createTranslationJobs(1, 1, "Succeeded"); - for (let i = 0; i < (await targetIds).length; i++) { - console.log(`targetIds[${i}]:`, (await targetIds)[i]); - } - - const endDateTime = recorder.variable("endDateTime", new Date().toISOString()); - createTranslationJobs(1, 1, "Succeeded"); - - // getting only translations from the last hour - const testDateTime = new Date(); - testDateTime.setHours(testDateTime.getHours() - 1); - const startDateTime = recorder.variable("startDateTime", testDateTime.toISOString()); - - // get Translation Status - const queryParams = { - createdDateTimeUtcStart: startDateTime, - createdDateTimeUtcEnd: endDateTime, - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - - const responseBody = response.body; - let idExists = false; - for (const translationStatus of responseBody.value) { - if ((await targetIds).includes(translationStatus.id)) { - idExists = true; - } - assert.isTrue(new Date(translationStatus.createdDateTimeUtc).toISOString() < endDateTime); - } - assert.isTrue(idExists); - }); - - it("Translation Statuses Filter By Created On", async () => { - createTranslationJobs(3, 1, "Succeeded"); - - // Add filter - const startDateTime = recorder.variable("startDateTime", new Date().toISOString()); - const orderByList = ["createdDateTimeUtc asc"]; - const queryParams = { - createdDateTimeUtcStart: startDateTime, - orderby: orderByList, - }; - - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - let timestamp = new Date(-8640000000000000); // Minimum valid Date value in JavaScript - - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - assert.isTrue(new Date(translationStatus.createdDateTimeUtc) > timestamp); - timestamp = new Date(translationStatus.createdDateTimeUtc); - } - }); - - async function createTranslationJobs( - jobsCount: number, - docsPerJob: number, - jobTerminalStatus: string, - ) { - // create source container - if (jobTerminalStatus.includes("cancelled")) { - docsPerJob = 20; // in order to avoid job completing before canceling - } - const testDocuments = createDummyTestDocuments(docsPerJob); - const sourceUrl = await createSourceContainer(recorder, testDocuments); - const sourceInput = createSourceInput(sourceUrl); - - // create a translation job - const translationIds = []; - for (let i = 1; i <= jobsCount; i++) { - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(response)) { - throw "start translation job error:" + response.body; - } - - const operationLocationUrl = (await response).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - translationIds.push(operationId); - - if (jobTerminalStatus.includes("succeeded")) { - // Wait until the operation completes - const poller = getLongRunningPoller(client, response, testPollingOptions); - const result = await (await poller).pollUntilDone(); - assert.equal(result.status, "200"); - } else if (jobTerminalStatus.includes("cancelled")) { - await client.path("/document/batches/{id}", operationId).delete(); - } - } - - // ensure that cancel status has propagated before returning - if (jobTerminalStatus.includes("cancelled")) { - waitForJobCancellation(translationIds); - } - return translationIds; - } - - async function waitForJobCancellation(translationIds: string[]): Promise { - const retryCount = 10; - - for (const translationId of translationIds) { - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", translationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).summary.cancelled > 0 && - retriesLeft > 0 - ); - } - return; - } -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/singleDocumentTranslateTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/singleDocumentTranslateTest.spec.ts deleted file mode 100644 index 905deb5cf7de..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/singleDocumentTranslateTest.spec.ts +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { Recorder } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import type { - DocumentTranslateDefaultResponse, - DocumentTranslateParameters, - DocumentTranslationClient, -} from "../../src"; -import { isUnexpected } from "../../src"; -import { createDocumentTranslationClient, startRecorder } from "./utils/recordedClient"; -import type { Context } from "mocha"; - -describe("SingleDocumentTranslate tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("document translate", async () => { - const options = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - ], - }; - - const response = await client - .path("/document:translate") - .post(options as DocumentTranslateParameters); - if (isUnexpected(response)) { - throw response.body; - } - }); - - it("single CSV glossary", async () => { - const options = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = await client - .path("/document:translate") - .post(options as DocumentTranslateParameters); - if (isUnexpected(response)) { - throw response.body; - } - assert.isTrue(response.body.toString().includes("test")); - }); - - it("Multiple CSV glossary", async () => { - const options = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = (await client - .path("/document:translate") - .post(options as DocumentTranslateParameters)) as DocumentTranslateDefaultResponse; - - if (isUnexpected(response)) { - assert.equal(response.status, "400"); - assert.isTrue( - response.body.error.message.includes( - "The maximum number of glossary files has been exceeded", - ), - ); - } else { - assert.isFalse(true); - } - }); -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/StaticAccessTokenCredential.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/StaticAccessTokenCredential.ts deleted file mode 100644 index 9f874129017d..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/StaticAccessTokenCredential.ts +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { TokenCredential, AccessToken } from "@azure/core-auth"; - -export class StaticAccessTokenCredential implements TokenCredential { - // AccessToken is an object with two properties: - // - A "token" property with a string value. - // - And an "expiresOnTimestamp" property with a numeric unix timestamp as its value. - constructor(private accessToken: string) {} - async getToken(): Promise { - return { - expiresOnTimestamp: Date.now() + 10000, - token: this.accessToken, - }; - } -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/TestDocument.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/TestDocument.ts deleted file mode 100644 index f4d3a2fe898a..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/TestDocument.ts +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -export interface TestDocument { - name: string; - content: string; -} - -export function createTestDocument(name: string, content: string): TestDocument { - return { - name, - content, - }; -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/recordedClient.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/recordedClient.ts deleted file mode 100644 index be5975709c5c..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/recordedClient.ts +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { Context } from "mocha"; -import { Recorder, env } from "@azure-tools/test-recorder"; -import type { ClientOptions } from "@azure-rest/core-client"; -import type { DocumentTranslationClient } from "../../../src"; -import { default as createClient } from "../../../src"; -import type { KeyCredential, TokenCredential } from "@azure/core-auth"; -import { createTestCredential } from "@azure-tools/test-credential"; - -export async function startRecorder(context: Context): Promise { - const recorder = new Recorder(context.currentTest); - await recorder.start({ - envSetupForPlayback: { - DOCUMENT_TRANSLATION_ENDPOINT: - "https://fakeEndpoint-doctranslation.cognitiveservices.azure.com", - DOCUMENT_TRANSLATION_STORAGE_NAME: "fakestoragename", - }, - removeCentralSanitizers: ["AZSDK2030", "AZSDK3430"], - }); - // SAS token may contain sensitive information - await recorder.addSanitizers( - { - bodyKeySanitizers: [ - { - value: "Sanitized", - jsonPath: "$..sourceUrl", - }, - { - value: "Sanitized", - jsonPath: "$..targetUrl", - }, - { - value: "Sanitized", - jsonPath: "$..glossaryUrl", - }, - ], - }, - ["record", "playback"], - ); - return recorder; -} - -export async function createDocumentTranslationClient(options: { - recorder?: Recorder; - testCredential?: TokenCredential; - clientOptions?: ClientOptions; -}): Promise { - const { recorder, clientOptions = {} } = options; - const updatedOptions = recorder ? recorder.configureClientOptions(clientOptions) : clientOptions; - const endpoint = env.DOCUMENT_TRANSLATION_ENDPOINT ?? ""; - const credentials = options?.testCredential ?? createTestCredential(); - const client = createClient(endpoint, credentials, updatedOptions); - return client; -} - -export async function createDocumentTranslationClientWithEndpointAndCredentials(options: { - recorder?: Recorder; - endpointParam: string; - credentials: TokenCredential | KeyCredential; - clientOptions?: ClientOptions; -}): Promise { - const { recorder, clientOptions = {} } = options; - const updatedOptions = recorder ? recorder.configureClientOptions(clientOptions) : clientOptions; - const client = createClient(options.endpointParam, options.credentials, updatedOptions); - return client; -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/samplesHelper.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/samplesHelper.ts deleted file mode 100644 index b9b54d48ef04..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/samplesHelper.ts +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import type { ContainerClient } from "@azure/storage-blob"; -import { ContainerSASPermissions, BlobServiceClient } from "@azure/storage-blob"; -import type { TestDocument } from "../utils/TestDocument"; -import { createTestDocument } from "../utils/TestDocument"; -import type { - BatchRequest, - DocumentTranslationClient, - StartTranslationDefaultResponse, -} from "../../../src"; -import { getLongRunningPoller } from "../../../src"; - -const connectionString = - process.env["DOCUMENT_TRANSLATION_CONNECTION_STRING"] || "ConnectionString"; - -export async function StartTranslationAndWait( - client: DocumentTranslationClient, - batchRequests: { inputs: BatchRequest[] }, -): Promise { - // Start translation - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - - // Wait until the operation completes - const poller = getLongRunningPoller(client, response, undefined); - await (await poller).pollUntilDone(); - - return response as StartTranslationDefaultResponse; -} - -export const ONE_TEST_DOCUMENTS: TestDocument[] = [ - createTestDocument("Document1.txt", "First english test document"), -]; - -export const TWO_TEST_DOCUMENTS: TestDocument[] = [ - createTestDocument("Document1.txt", "First english test file"), - createTestDocument("File2.txt", "Second english test file"), -]; - -export async function createSourceContainer( - documents: TestDocument[], - containerName?: string | undefined, -): Promise { - if (containerName === undefined) { - containerName = `source-${getUniqueName()}`; - } - const containerClient = await createContainer(containerName, documents); - - const sasUrl = await containerClient.generateSasUrl({ - permissions: ContainerSASPermissions.parse("rwl"), - expiresOn: getDateOneDayAfter(), - }); - return `${sasUrl}`; -} - -export async function createTargetContainer( - containerName?: string | undefined, - documents?: TestDocument[], -): Promise { - if (containerName === undefined) { - containerName = `target-${getUniqueName()}`; - } - const containerClient = await createContainer(containerName, documents); - - const sasUrl = await containerClient.generateSasUrl({ - permissions: ContainerSASPermissions.parse("rwl"), - expiresOn: getDateOneDayAfter(), - }); - return `${sasUrl}`; -} - -async function createContainer( - containerName: string, - documents?: TestDocument[], -): Promise { - const blobServiceClient: BlobServiceClient = - BlobServiceClient.fromConnectionString(connectionString); - const containerClient = blobServiceClient.getContainerClient(containerName); - await containerClient.createIfNotExists(); - - if (documents && documents.length > 0) { - await uploadDocuments(containerClient, documents); - } - return containerClient; -} - -export function getUniqueName(): string { - const randomNumber = Math.floor(Math.random() * 1e10); - return randomNumber.toString().padStart(10, "0"); -} - -async function uploadDocuments(containerClient: ContainerClient, documents: TestDocument[]) { - for (const document of documents) { - const blobClient = containerClient.getBlobClient(document.name); - const blockBlobClient = blobClient.getBlockBlobClient(); - await blockBlobClient.upload(document.content, document.content.length); - } -} - -function getDateOneDayAfter(): Date { - const currentDate = new Date(); - const nextDayDate = new Date(currentDate); - nextDayDate.setDate(currentDate.getDate() + 1); - return nextDayDate; -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/testHelper.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/testHelper.ts deleted file mode 100644 index 66cd9046235f..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/testHelper.ts +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { isPlaybackMode } from "@azure-tools/test-recorder"; -import type { - BatchRequest, - DocumentFilter, - Glossary, - SourceInput, - StorageInputType, - StorageSource, - TargetInput, -} from "../../../src"; -import type { TestDocument } from "./TestDocument"; -import { createTestDocument } from "./TestDocument"; - -export function createSourceInput( - sourceUrl: string, - language?: string, - storageSource?: StorageSource, - filter?: DocumentFilter, -): SourceInput { - return { - sourceUrl, - language, - storageSource, - filter, - }; -} - -export function createTargetInput( - targetUrl: string, - language: string, - storageSource?: StorageSource, - glossaries?: Glossary[], - category?: string, -): TargetInput { - return { - targetUrl, - language, - storageSource, - glossaries, - category, - }; -} - -export function createBatchRequest( - source: SourceInput, - targets: Array, - storageType?: StorageInputType, -): BatchRequest { - return { - source, - targets, - storageType, - }; -} - -export function getTranslationOperationID(url: string): string { - try { - const parsedUrl = new URL(url); - const pathSegments = parsedUrl.pathname.split("/"); - const lastSegment = pathSegments[pathSegments.length - 1]; - return typeof lastSegment === "string" ? lastSegment : ""; - } catch (error) { - console.error("Invalid Operation-location URL:", error); - return ""; - } -} - -export function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, isPlaybackMode() ? 1 : ms)); -} - -export function createDummyTestDocuments(count: number): TestDocument[] { - const result: TestDocument[] = []; - for (let i = 0; i < count; i++) { - const fileName: string = `File_${i}.txt`; - const text: string = "some random text"; - result.push(createTestDocument(fileName, text)); - } - return result; -} diff --git a/sdk/translation/ai-translation-document-rest/tests.yml b/sdk/translation/ai-translation-document-rest/tests.yml deleted file mode 100644 index ba5aabc47ad2..000000000000 --- a/sdk/translation/ai-translation-document-rest/tests.yml +++ /dev/null @@ -1,15 +0,0 @@ -parameters: -- name: Location - displayName: Location - type: string - default: eastus - -trigger: none - -extends: - template: /eng/pipelines/templates/stages/archetype-sdk-tests.yml - parameters: - PackageName: "@azure-rest/ai-translation-document" - ServiceDirectory: translation - Location: "${{ parameters.Location }}" - SupportedClouds: 'Public' diff --git a/sdk/translation/ai-translation-document-rest/tsconfig.json b/sdk/translation/ai-translation-document-rest/tsconfig.json index a748d80e041a..61738cf2b8b1 100644 --- a/sdk/translation/ai-translation-document-rest/tsconfig.json +++ b/sdk/translation/ai-translation-document-rest/tsconfig.json @@ -1,17 +1,15 @@ { "extends": "../../../tsconfig", "compilerOptions": { - "outDir": "./dist-esm", - "declarationDir": "./types", - "paths": { - "@azure-rest/ai-translation-document": ["./src/index"] - } + "module": "NodeNext", + "moduleResolution": "NodeNext", + "rootDir": ".", + "skipLibCheck": true }, "include": [ "./src/**/*.ts", "./src/**/*.mts", "./src/**/*.cts", - "./test/**/*.ts", - "samples-dev/**/*.ts" + "test/**/*.ts" ] -} +} \ No newline at end of file diff --git a/sdk/translation/ai-translation-document-rest/tsp-location.yaml b/sdk/translation/ai-translation-document-rest/tsp-location.yaml index 0a5b75888fd3..edbe22e08cfb 100644 --- a/sdk/translation/ai-translation-document-rest/tsp-location.yaml +++ b/sdk/translation/ai-translation-document-rest/tsp-location.yaml @@ -1,4 +1,4 @@ -commit: 27a9398801386caaba2df7e1a4d1a8abd19e3789 -repo: Azure/azure-rest-api-specs directory: specification/translation/Azure.AI.DocumentTranslation - +commit: d5d0e675561bb66fe2c958870ae9131f06997ec4 +repo: /mnt/vss/_work/1/s/azure-rest-api-specs +additionalDirectories: diff --git a/sdk/translation/ci.yml b/sdk/translation/ci.yml index 0195c4de2a4b..f6cfb83ace51 100644 --- a/sdk/translation/ci.yml +++ b/sdk/translation/ci.yml @@ -1,32 +1,32 @@ # NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. - + trigger: branches: include: - - main - - hotfix/* - - release/* - - restapi* + - main + - hotfix/* + - release/* + - restapi* paths: include: - - sdk/translation/ci.yml - - sdk/translation/ai-translation-text-rest/ - - sdk/translation/ai-translation-document-rest/ - + - sdk/translation/ci.yml + - sdk/translation/ai-translation-text-rest/ + - sdk/translation/ai-translation-document-rest/ pr: branches: include: - - main - - feature/* - - hotfix/* - - release/* - - restapi* + - main + - feature/* + - hotfix/* + - release/* + - restapi* + exclude: + - feature/v4 paths: include: - - sdk/translation/ci.yml - - sdk/translation/ai-translation-text-rest/ - - sdk/translation/ai-translation-document-rest/ - + - sdk/translation/ci.yml + - sdk/translation/ai-translation-text-rest/ + - sdk/translation/ai-translation-document-rest/ extends: template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: