diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 002b3c1a4f27..dd0f37c7a415 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -11009,6 +11009,12 @@ packages: hasBin: true dev: false + /typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + dev: false + /ua-parser-js@0.7.38: resolution: {integrity: sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==} dev: false @@ -11715,7 +11721,7 @@ packages: dev: false file:projects/abort-controller.tgz: - resolution: {integrity: sha512-5SQ2VOSLdJ9YuZeYoc+9HlTupWC4dM9Hqqp+DneLOvgeS/3N6dbEyHrlvcVKcsOdlw5+VdFiSMR+nrI9uifilQ==, tarball: file:projects/abort-controller.tgz} + resolution: {integrity: sha512-t2N03m2Q5O1f2XqDWqIw/LdOg1+7nT3PpBIXgT3U268H2kCSKbjSjIqK4ucEMMFe7Bml9snewVFmxPckUkq58w==, tarball: file:projects/abort-controller.tgz} name: '@rush-temp/abort-controller' version: 0.0.0 dependencies: @@ -11750,7 +11756,7 @@ packages: dev: false file:projects/agrifood-farming.tgz: - resolution: {integrity: sha512-2Tw2vVl4liajcKpa0jnb3FJYV4Zgf87HWBTGkLGEqPHxJ7/M2TbK9guKm6/cIKdUwi3vdOsdxGDnZ9o4JWdtSg==, tarball: file:projects/agrifood-farming.tgz} + resolution: {integrity: sha512-qsbgUXp/2RcQCa+sDOQ6/J2CKlvsxRR6R2XGX3gjxSRNOSTf3TaBr3T6AEL9ZINSaPPLzVLJr2L3sqdWgt6dRw==, tarball: file:projects/agrifood-farming.tgz} name: '@rush-temp/agrifood-farming' version: 0.0.0 dependencies: @@ -11797,7 +11803,7 @@ packages: dev: false file:projects/ai-anomaly-detector.tgz: - resolution: {integrity: sha512-70Gk1gY+TS+T4iZDM79vBBDkmnk3TWh/KVzui4HVVDaRmLoS3TiJeWgCQDErAZ4Nkhwil8Z96vrOfjNmLRfH2w==, tarball: file:projects/ai-anomaly-detector.tgz} + resolution: {integrity: sha512-rzByqDmaaneWm0SE34/dARzxW8OHa7PXg6TwMalLADA5iauKvhp0O86igHMyCrDbTvLLH4iGXxt6B7J8Mg9IRQ==, tarball: file:projects/ai-anomaly-detector.tgz} name: '@rush-temp/ai-anomaly-detector' version: 0.0.0 dependencies: @@ -11844,7 +11850,7 @@ packages: dev: false file:projects/ai-content-safety.tgz: - resolution: {integrity: sha512-+ZubJgUKJpj5LvlUyz52Ds5rbw5OIvPPpMChF9bjVYft6qcY69C81UtUV7tlNx5lvWzbXly4El1zeJgN6TWn0A==, tarball: file:projects/ai-content-safety.tgz} + resolution: {integrity: sha512-iuvbK1vXvI8jxf1rIdHZYYzisZslR1VFz4JuZyn0tx8UZYgRit6nJulxggQrlHu31E8qa6hOjyu72zhz6I9KwA==, tarball: file:projects/ai-content-safety.tgz} name: '@rush-temp/ai-content-safety' version: 0.0.0 dependencies: @@ -11856,6 +11862,8 @@ packages: '@types/chai': 4.3.17 '@types/mocha': 10.0.7 '@types/node': 18.19.45 + '@vitest/browser': 2.0.5(playwright@1.46.1)(typescript@5.5.4)(vitest@2.0.5) + '@vitest/coverage-istanbul': 2.0.5(vitest@2.0.5) autorest: 3.7.1 chai: 4.3.10 cross-env: 7.0.3 @@ -11874,22 +11882,36 @@ packages: mkdirp: 3.0.1 mocha: 10.7.3 nyc: 17.0.0 + playwright: 1.46.1 + prettier: 3.3.3 rimraf: 5.0.10 source-map-support: 0.5.21 ts-node: 10.9.2(@types/node@18.19.45)(typescript@5.5.4) + tshy: 1.18.0 tslib: 2.6.3 typescript: 5.5.4 + vitest: 2.0.5(@types/node@18.19.45)(@vitest/browser@2.0.5) transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + - '@edge-runtime/vm' + - '@vitest/ui' - bufferutil - - debug + - happy-dom + - jsdom + - less + - lightningcss + - safaridriver + - sass + - sass-embedded + - stylus + - sugarss - supports-color + - terser - utf-8-validate + - webdriverio dev: false file:projects/ai-document-intelligence.tgz: - resolution: {integrity: sha512-vz9jPN1VeITQ9J8Z5W4FaW4TpWHGyOH4BrudrSX3clGLVdFDY9tzUVyAC5a4EQA5mJluMpVCtLzLNHhBe8Ki4w==, tarball: file:projects/ai-document-intelligence.tgz} + resolution: {integrity: sha512-cbX3F12y9Yq0fCDXKAntgROx1E6zWDA+WXSnTf5B3FVNckm1x9OCFz1FBaYIuFPr6zR3r5jz0jbAAnJ9KHFxGw==, tarball: file:projects/ai-document-intelligence.tgz} name: '@rush-temp/ai-document-intelligence' version: 0.0.0 dependencies: @@ -11952,7 +11974,7 @@ packages: dev: false file:projects/ai-document-translator.tgz: - resolution: {integrity: sha512-GB4F37Agq20zlNVQttSMq9f7/22kWm0ut8v4AiAiCMRLFm+7EKYQiQcY2dPUd+paygunKor168mJM7l49HLf4Q==, tarball: file:projects/ai-document-translator.tgz} + resolution: {integrity: sha512-bgqrkta2DzAJ15+YteEQCibw05OMI2TzbLlDE6SpGUg1gXAdCymm4dxpduNKiesFmC51WcP+ohZkuNGryFgBmg==, tarball: file:projects/ai-document-translator.tgz} name: '@rush-temp/ai-document-translator' version: 0.0.0 dependencies: @@ -11997,7 +12019,7 @@ packages: dev: false file:projects/ai-form-recognizer.tgz: - resolution: {integrity: sha512-izUpXM5lDqrG/FkQWd8JMRh85pd61fDefl5mYiTYQu57bLlc9Tnp29eTBNlNg1x63Il3oM1gsvLxD75TtoCwag==, tarball: file:projects/ai-form-recognizer.tgz} + resolution: {integrity: sha512-uUPHW/g4qfJv9xoilcgVHKr1QNvf/rW/ARCXsd1axpRlATZSs+dDu0mS7/MH0yZZjd6a00C/caY+P6B6Ac2s/A==, tarball: file:projects/ai-form-recognizer.tgz} name: '@rush-temp/ai-form-recognizer' version: 0.0.0 dependencies: @@ -12045,7 +12067,7 @@ packages: dev: false file:projects/ai-inference.tgz: - resolution: {integrity: sha512-C4EqlGgeIbJY0+yopCkm83HlIOoW0a7IcD3AJfssZ3VwavSBnXJ1kKlhL6fDi65PloumqNWONTRdqIrw6bKwAw==, tarball: file:projects/ai-inference.tgz} + resolution: {integrity: sha512-7KzF0Ua3Veeky0DNJ5LpW2FHqcnF6zp4W+zHNIPHVUS3UPsShfQYp+zeyubWAntZB5bTWN60lSqaNe89eJzctA==, tarball: file:projects/ai-inference.tgz} name: '@rush-temp/ai-inference' version: 0.0.0 dependencies: @@ -12087,7 +12109,7 @@ packages: dev: false file:projects/ai-language-conversations.tgz: - resolution: {integrity: sha512-U4hFRyz3RnKK09u8g05r3LSXfLSbU/nOnNAQl/euAN2FTXB5uV/i/KBzoDNmuiL4QgJqG1DKJR5tmxkqGRwrnA==, tarball: file:projects/ai-language-conversations.tgz} + resolution: {integrity: sha512-1MHjPdQAJiC79NNOmcp0ik0PMHTEUa5S1cnf3c7H8V0X61WP8FZfv0Z55pLf7yzXZlCjsRcBL9hQCyZnreua7Q==, tarball: file:projects/ai-language-conversations.tgz} name: '@rush-temp/ai-language-conversations' version: 0.0.0 dependencies: @@ -12136,7 +12158,7 @@ packages: dev: false file:projects/ai-language-text.tgz: - resolution: {integrity: sha512-q3dXSmrguMJ2s7uEFSTlzGgHWZGetXkjKAjDxMuADz02eLOLOIvSRBGEZmLunr88dLK6T5VT2Oi0zJd3vCb0tA==, tarball: file:projects/ai-language-text.tgz} + resolution: {integrity: sha512-A0kTkhDM8gDmqPLqPMNvEZAJIlr0S0plbLaTrTFPgOqV7tQ5+bvXJ4Z0ivvy3KqrHEdtSfo/mzu2PoY2FgKIzA==, tarball: file:projects/ai-language-text.tgz} name: '@rush-temp/ai-language-text' version: 0.0.0 dependencies: @@ -12186,7 +12208,7 @@ packages: dev: false file:projects/ai-language-textauthoring.tgz: - resolution: {integrity: sha512-wXY0hmfLnoX/QUm7162liqVwLbbK+5Wz5HKkQ13kFx0VD46+RulZvEzCGpLJzuZwZMcVe5Fmx5/cc99apBZHjA==, tarball: file:projects/ai-language-textauthoring.tgz} + resolution: {integrity: sha512-7aAZaIE6ahWWMxXrKlZM93wDSgZZOKX4LslsHX/sraizWXyR22lMKTdKijRHuVBA5xjBRVYOZluYrJx8A6zMRg==, tarball: file:projects/ai-language-textauthoring.tgz} name: '@rush-temp/ai-language-textauthoring' version: 0.0.0 dependencies: @@ -12213,7 +12235,7 @@ packages: dev: false file:projects/ai-metrics-advisor.tgz: - resolution: {integrity: sha512-qAI5xIRUS+Ty+eY9S+gLEkotKTSab8Q6+dOGlKaPg72hfPCITvmMUp55CT/ymb9lII1e5TJucB68eoIK7KUOOA==, tarball: file:projects/ai-metrics-advisor.tgz} + resolution: {integrity: sha512-Tj+0tIDSDdm2LdIuXTejBPxBgy0gsPU8mBBVBbHKeIb+FasY6yYhc0od5JqAC3l9u5zHXynQydpiYr20Zndb6w==, tarball: file:projects/ai-metrics-advisor.tgz} name: '@rush-temp/ai-metrics-advisor' version: 0.0.0 dependencies: @@ -12258,7 +12280,7 @@ packages: dev: false file:projects/ai-text-analytics.tgz: - resolution: {integrity: sha512-9AE3KXidyFXViHMYmRWM7WJEg53GZT/h6s+HW5ZEBT566w3KqBU+p+F73H2prhtB7a2qliFImje5qZtaIXAGrA==, tarball: file:projects/ai-text-analytics.tgz} + resolution: {integrity: sha512-pktlY1MIP1+oLYzxroYsIAe/W9oxBZ0XziTtxGTWI1AXowXMsF0wtPGp5g+m7SXEtd3p1kGQjF+ZnZSbLUUwYw==, tarball: file:projects/ai-text-analytics.tgz} name: '@rush-temp/ai-text-analytics' version: 0.0.0 dependencies: @@ -12305,7 +12327,7 @@ packages: dev: false file:projects/ai-translation-document.tgz: - resolution: {integrity: sha512-EEwkqS2wW2H4NIdi1wihLIaybaUGQ/8F7v0CQAHycmxJ4xLrE4rRL0Wa455Qvn6Af67mzg9iULbzjsSXDodnMA==, tarball: file:projects/ai-translation-document.tgz} + resolution: {integrity: sha512-Tw+2Hq6vZWvExcnQQePXdpahwrWGNqiuMH4Yz6JA88hZ0xuDGmibDAZggsm01JgJ3T1FD558AHhoOJETxtzUvA==, tarball: file:projects/ai-translation-document.tgz} name: '@rush-temp/ai-translation-document' version: 0.0.0 dependencies: @@ -12352,7 +12374,7 @@ packages: dev: false file:projects/ai-translation-text.tgz: - resolution: {integrity: sha512-p3TGmnsHnU7VgkCFrN0Z1ZvV6Wi8RaNMXC7dVMl6pdBsmQfhXvTvU6v5MJB6wG2VosDPuObYl0xZBmA8+/dzyg==, tarball: file:projects/ai-translation-text.tgz} + resolution: {integrity: sha512-qP0fJHmK6pvXHkr/+8VRiaEnMSIDLKA6e/BLWa4191Rs7sY7JHN65mpnaJr6f5AGarsM9DioGCR4vVNVlOZN2A==, tarball: file:projects/ai-translation-text.tgz} name: '@rush-temp/ai-translation-text' version: 0.0.0 dependencies: @@ -12397,7 +12419,7 @@ packages: dev: false file:projects/ai-vision-face.tgz: - resolution: {integrity: sha512-WVW75pbkZJ6N4c9sdY+fn24vbWueRiLYWUcktvHvJuDjET9JmoOc4/h8TRIJwc/3lxTMFoDqVbvpxB1t+Ut1yQ==, tarball: file:projects/ai-vision-face.tgz} + resolution: {integrity: sha512-QJ30PW51/kj1Qy8M+vju6MQkiLfwVwDKUlvLieElC5vd8qPq5kZ7b1CVnLpH5hosCHC+RqZxRus5DVw+nrqVKg==, tarball: file:projects/ai-vision-face.tgz} name: '@rush-temp/ai-vision-face' version: 0.0.0 dependencies: @@ -12437,7 +12459,7 @@ packages: dev: false file:projects/ai-vision-image-analysis.tgz: - resolution: {integrity: sha512-quBse7zWSrsGm/dUbG82gOGODp1xzhRmtleMYICuiH0NRa42ieWERLSQoGboWZcnt1AvnPDJEGPB1r18CGC0lQ==, tarball: file:projects/ai-vision-image-analysis.tgz} + resolution: {integrity: sha512-QfHG2jBEfs0+PK0aTSGABk2KzFAsXxMeIhh2holZ5g8odJR316/mei4xFHXTIY01L69SZPb9aSiWu+gMAv8LDw==, tarball: file:projects/ai-vision-image-analysis.tgz} name: '@rush-temp/ai-vision-image-analysis' version: 0.0.0 dependencies: @@ -12482,7 +12504,7 @@ packages: dev: false file:projects/api-management-custom-widgets-scaffolder.tgz: - resolution: {integrity: sha512-bk111O/cjShY+qA1axkdLiP5O8JNvYQlOF9fRplp95Ehh3JLkgJ2GZXT/1fCpoQEtdVngLReigaz+bLc2aJ9yg==, tarball: file:projects/api-management-custom-widgets-scaffolder.tgz} + resolution: {integrity: sha512-XMdrub7S8KrXg9Z7DTZwGBli7ZxXKttvMcZWNoUC5j4/ps0vNpy0aS41oTdzwmi4FjGwhSxF6vGKT85cd5oh+g==, tarball: file:projects/api-management-custom-widgets-scaffolder.tgz} name: '@rush-temp/api-management-custom-widgets-scaffolder' version: 0.0.0 dependencies: @@ -12525,7 +12547,7 @@ packages: dev: false file:projects/api-management-custom-widgets-tools.tgz: - resolution: {integrity: sha512-+XCmKtOCgvIai0ldV0vKlQ08n4Wtx708j/iqDS2SSzZ87yN/BfigjIZoiOmcpCXkirPR6H9oJ5Pq12nwGnvQGQ==, tarball: file:projects/api-management-custom-widgets-tools.tgz} + resolution: {integrity: sha512-z6bwbpMyzlg0tw5yOv5PpArO+pLxBuTlrmg4mfF6BkY6QRtculBzRbRqynUn+a5ad9Wp3nP+78f3VB9ivP6Rrw==, tarball: file:projects/api-management-custom-widgets-tools.tgz} name: '@rush-temp/api-management-custom-widgets-tools' version: 0.0.0 dependencies: @@ -12564,7 +12586,7 @@ packages: dev: false file:projects/app-configuration.tgz: - resolution: {integrity: sha512-GNm9EJlFjXy76j3naUD3x3E8b6cSxGH/Zv+6E3n+uh8X9cKfLrlPEFE90PctShfjVtU1zzfczWRjY1pner6jqw==, tarball: file:projects/app-configuration.tgz} + resolution: {integrity: sha512-ZS2tVcfCyGSzFxeEx10vvJ2M0aeau+oBI7RxIu+96q/F+G/CifNNQ08WJGLxqqWJ0A2QqYoL7smGLOVGzUJFXQ==, tarball: file:projects/app-configuration.tgz} name: '@rush-temp/app-configuration' version: 0.0.0 dependencies: @@ -12605,7 +12627,7 @@ packages: dev: false file:projects/arm-advisor.tgz: - resolution: {integrity: sha512-ONDZvrOim69rDzQBWt543U5MKPMRStHQEzC16TH/oI8ZygTY84QYTcIWz3FDRwS4lBSZ0Z72TqugbDODzM3++w==, tarball: file:projects/arm-advisor.tgz} + resolution: {integrity: sha512-7uVXn38MP0I7Z+N8ZhIfrCABbTGDyGUx32sDJnBKYUPjlVqNrYWpVg60fHO+ctJiyYCKkVMK2j7ylLFXwa6nLg==, tarball: file:projects/arm-advisor.tgz} name: '@rush-temp/arm-advisor' version: 0.0.0 dependencies: @@ -12633,7 +12655,7 @@ packages: dev: false file:projects/arm-agrifood.tgz: - resolution: {integrity: sha512-i1ek0oxoPQwE8tPgFTLIuXwiZKWiasqgMRQr+/dRqKSgGy/hhzs+Gn/jGaotoSZUy0x2RRPZbj9py37h6hlUEg==, tarball: file:projects/arm-agrifood.tgz} + resolution: {integrity: sha512-jsPaiebyJktur3n88Qm3T2GQXvUADvxtcUeJ4SrQ6dMJ/kG2RkXv0DZLKTqmN24+yutdmTtRMjDDTcMU2YcPow==, tarball: file:projects/arm-agrifood.tgz} name: '@rush-temp/arm-agrifood' version: 0.0.0 dependencies: @@ -12662,7 +12684,7 @@ packages: dev: false file:projects/arm-analysisservices.tgz: - resolution: {integrity: sha512-qsgQGqt6ljAq0Hmtzp7XWSxvjd9MCE7+q/kjfndlJYx8J6TDMY1smP/aWemHcF7Xmd/bwVjTnPCuTmxWggIpXQ==, tarball: file:projects/arm-analysisservices.tgz} + resolution: {integrity: sha512-a0Ja/CJHta1gcIVwDv6n+U42KnLIqrw1IBqfl1D+bsVN5wpkDOAvt++qpxh1Ky+8aWkjWgg21U59YsfOnhOzAg==, tarball: file:projects/arm-analysisservices.tgz} name: '@rush-temp/arm-analysisservices' version: 0.0.0 dependencies: @@ -12691,7 +12713,7 @@ packages: dev: false file:projects/arm-apicenter.tgz: - resolution: {integrity: sha512-Qh+lHGerbgZWF7GP5VhTWJSQxHXOMs/54f5LUl2Kf4S+vX+Fw4unC2sJYHwF+/o76PuOo1ZDhsSeEhQk+3PiQQ==, tarball: file:projects/arm-apicenter.tgz} + resolution: {integrity: sha512-uNfhigCN7B1SkHgHM3lhp4R2TdkSf9m4wLxwAgXifm7rnOl0hyQfGw8ygjkOMxuFCPwgX9rM/eXlGw7kQzfcKA==, tarball: file:projects/arm-apicenter.tgz} name: '@rush-temp/arm-apicenter' version: 0.0.0 dependencies: @@ -12721,7 +12743,7 @@ packages: dev: false file:projects/arm-apimanagement.tgz: - resolution: {integrity: sha512-ZqZou4qud1Z3UFDwOTQW7s3qhGgOB2KzueMtCmx5r21gUDQg/y/hMGXbcfeEaGEbpHe8Gxqtw17gcJWfl6trVQ==, tarball: file:projects/arm-apimanagement.tgz} + resolution: {integrity: sha512-xef6Zjq6D7heDmdMuBaHpNBGbiD1pb5i1Moz4aF+t3BGK0ucDsGBYXME4DwbmgUb2uhsyR9yhS88MPq4X6Y/Nw==, tarball: file:projects/arm-apimanagement.tgz} name: '@rush-temp/arm-apimanagement' version: 0.0.0 dependencies: @@ -12751,7 +12773,7 @@ packages: dev: false file:projects/arm-appcomplianceautomation.tgz: - resolution: {integrity: sha512-Pd/JqBu05RGe4wqjJVLLa90k+z/AqUhtcGVxmQ9dRJwh8zxDVNHclr7pFXofuO4bQFsy9aQABOYF38wVric9uw==, tarball: file:projects/arm-appcomplianceautomation.tgz} + resolution: {integrity: sha512-5mpGjNpV24Yt2Y7vOFW3X84kN5Bvlm+XzAStkgpeNxDBcGyhwYW7ksiU1HgBIHEp87aeQbrukd3v3o6AfyHl7Q==, tarball: file:projects/arm-appcomplianceautomation.tgz} name: '@rush-temp/arm-appcomplianceautomation' version: 0.0.0 dependencies: @@ -12782,7 +12804,7 @@ packages: dev: false file:projects/arm-appconfiguration.tgz: - resolution: {integrity: sha512-LmhRDolg8axc1KaQr6KvRBgfNM1lC3o6SviyAAreWU0wnh7C1gTGLqjhgjhUk724hG22qykhI8nZWkybJwvrTA==, tarball: file:projects/arm-appconfiguration.tgz} + resolution: {integrity: sha512-lCQNAsbeCwjO9ysZRusChuTJJqx3ZnJxNsrW2iwgJojrw7fU618rnfEL7oWAqO4U/XjNdSIHgR1Njt0emKrnLQ==, tarball: file:projects/arm-appconfiguration.tgz} name: '@rush-temp/arm-appconfiguration' version: 0.0.0 dependencies: @@ -12812,7 +12834,7 @@ packages: dev: false file:projects/arm-appcontainers.tgz: - resolution: {integrity: sha512-SMgeN7K2D/LNYdTE9QSMvv0neVWexFww3XY7QWQDfJBXcaBca1Ja1rrFuAp3io9wG/bsb4TJ9tjF4jYc7TugPA==, tarball: file:projects/arm-appcontainers.tgz} + resolution: {integrity: sha512-OLDQ9cIJXarZUMBqrsu4Yxni7ctTNO+xJHgapzZ42fI1r0sX+6GCHxn2KeTeLImDs2i+unsZMtiPGybNhlFnUw==, tarball: file:projects/arm-appcontainers.tgz} name: '@rush-temp/arm-appcontainers' version: 0.0.0 dependencies: @@ -12843,7 +12865,7 @@ packages: dev: false file:projects/arm-appinsights.tgz: - resolution: {integrity: sha512-PqNCW0YBSbm10wfJ7Ekze7VWgyYrLRLOhgvyFKEitS+E8RZzsgwmCuBexSv6hJlmtpZ6gHuFTFm/OfXDm09ktA==, tarball: file:projects/arm-appinsights.tgz} + resolution: {integrity: sha512-cnk29PDE3tFVEYSD/sPzYfBzjIL5KOnIxycYJlvMs2sBSfbeN/THEe34sNLOOVQTDyyZQwNyy0M2cwBm0PLbkg==, tarball: file:projects/arm-appinsights.tgz} name: '@rush-temp/arm-appinsights' version: 0.0.0 dependencies: @@ -12870,7 +12892,7 @@ packages: dev: false file:projects/arm-appplatform.tgz: - resolution: {integrity: sha512-qT22GdfjSRZcMFcDK0cD5ymkHstpHYz4RkfETJZd+oluUFldDlTQoyeP//uOTAAvVPfjIikFl3B1Ko9eZOXZ0w==, tarball: file:projects/arm-appplatform.tgz} + resolution: {integrity: sha512-s6Dm7EaIZ0EpvEBmjvWfdxordEua5TIcwc/Cp8y6dvHN4lEZ1tBRd2YG5zNyd+XNWsjFXCWqVi0mbKHhiF3F7g==, tarball: file:projects/arm-appplatform.tgz} name: '@rush-temp/arm-appplatform' version: 0.0.0 dependencies: @@ -12900,7 +12922,7 @@ packages: dev: false file:projects/arm-appservice-1.tgz: - resolution: {integrity: sha512-kQe3MOm7L8EPmfEZEjXBAkXwCCET+Yq9p/LLYKUykS42Nr95zB3QvUQhAnZ83lgSz2OXCbEq/gmEZk6hKZNcYw==, tarball: file:projects/arm-appservice-1.tgz} + resolution: {integrity: sha512-XXXsV4q4EQNoLKXSx1noyz448MgLXaTTAcXKm9dlvOVQM0XABZTCM48ivwIPq2vXvSVnFifK+3FX4Irs3ykUtQ==, tarball: file:projects/arm-appservice-1.tgz} name: '@rush-temp/arm-appservice-1' version: 0.0.0 dependencies: @@ -12931,7 +12953,7 @@ packages: dev: false file:projects/arm-appservice-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-DVWWsXM84QXXu1e/Xc6M2QSwtF3uACo44vxXY+f8eaI5lmQb0K65YnGn/SltOvCavdUi/ci828R6/1WbxAEHWA==, tarball: file:projects/arm-appservice-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-ECcJDZNgAm39MjQX5+HTa8lpZRO9c+MdOiR8XBGrDv13jWy//2KVpk7S+nPIH4mGqVs904/zfFmVQOrD7Wr2gQ==, 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: @@ -12961,7 +12983,7 @@ packages: dev: false file:projects/arm-appservice.tgz: - resolution: {integrity: sha512-yjfMdED/EYOLCEz+8gc00WPVFsvPTLWOhUQDXnqfWOSib2atSvSbvWxNeCT5jyVM9RF82bCiLQ7fAtAsrmZWEA==, tarball: file:projects/arm-appservice.tgz} + resolution: {integrity: sha512-2akMZ2GrgqZ4b59N6IMfJYG3jD6p4bHujN0dsqpEkvwPpTfZQYcc9gGW6xeZJzdJjOXhcubKO7sM4WFZPCwMjQ==, tarball: file:projects/arm-appservice.tgz} name: '@rush-temp/arm-appservice' version: 0.0.0 dependencies: @@ -13007,7 +13029,7 @@ packages: dev: false file:projects/arm-astro.tgz: - resolution: {integrity: sha512-BkU280DnWj0UmhHVAVaoIwi7NfOWsuyp+nV49cWTcyuTK75RfVqsy1o5ctw0ASyFqZ7w8R42W8IK0OFwwGEMHA==, tarball: file:projects/arm-astro.tgz} + resolution: {integrity: sha512-nF21ZZdOGg9T+tyQwgFYHgn8VNsymT+aMOcH3LgU10a2NmYGOayAh6RD6WNCjYwaMHDgFbhyWx3lO8QEnlmoUQ==, tarball: file:projects/arm-astro.tgz} name: '@rush-temp/arm-astro' version: 0.0.0 dependencies: @@ -13037,7 +13059,7 @@ packages: dev: false file:projects/arm-attestation.tgz: - resolution: {integrity: sha512-7/MEkicR8Ch4QFzgEvj4q+2HCLnBGFlICmcQsb7wPKkRTL65nBT5zOmMr3hIr7qPhXsYlVTq8+KCZ90XNflxDQ==, tarball: file:projects/arm-attestation.tgz} + resolution: {integrity: sha512-gqtK+R5NlVQ6UmRdJQljN2z/DUtY+eMpjDaf5TVgMqqNMe9rEfxQCsglTK5Ri2iBbyjwDjNaZXprI4SRNeQ9dg==, tarball: file:projects/arm-attestation.tgz} name: '@rush-temp/arm-attestation' version: 0.0.0 dependencies: @@ -13064,7 +13086,7 @@ packages: dev: false file:projects/arm-authorization-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-7TLK9EBIt/ZuDkyTnYVES3qLrFyhUVr6D6FTKf7PV59FuzWvva3mfsZAJMdZ16O3nv/RWvnSp+UUhGHpIzQj8w==, tarball: file:projects/arm-authorization-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-Edd07Pv1abh7Q/emiojC6/bTKFP34XgWhxXvuAqwaMm7p1QlEtuQ8cLPbQCrvIugJij8aHcRB3acYNwLWUvC2g==, 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: @@ -13092,7 +13114,7 @@ packages: dev: false file:projects/arm-authorization.tgz: - resolution: {integrity: sha512-tfepyJDCO5hqCTLdhg68cVHYdJt4YQxgBc9d5YwOgYTJT43/YqjraQnX/22NgU4pKpTAzZfEpi2dVZV+PDPTLA==, tarball: file:projects/arm-authorization.tgz} + resolution: {integrity: sha512-QUXBw75W/xuESE7mouVPCVoBTu6aCXpVXnn2PujkrFGm2n5aDXUkzrklJOagfFDHxffGZHNJR9bKUZwkWZ9zCA==, tarball: file:projects/arm-authorization.tgz} name: '@rush-temp/arm-authorization' version: 0.0.0 dependencies: @@ -13122,7 +13144,7 @@ packages: dev: false file:projects/arm-automanage.tgz: - resolution: {integrity: sha512-KJzz8fCv09Iyh78FSK11aVd4Xc0bItlDEb0N9pBdoa94N4bPCyZgJQCPgf2oQWJNygUzfhrEfnqRQ5M7NDgMww==, tarball: file:projects/arm-automanage.tgz} + resolution: {integrity: sha512-RqF7sWkucg+paJB9mIO6cN2ULzL9TJDZkipdMnDby3US53GQFoIeMJ5PvYu5V9WsajHwWJgkvchAMT9Ep16iZA==, tarball: file:projects/arm-automanage.tgz} name: '@rush-temp/arm-automanage' version: 0.0.0 dependencies: @@ -13150,7 +13172,7 @@ packages: dev: false file:projects/arm-automation.tgz: - resolution: {integrity: sha512-mXhiPEWjDJqAGw6oFlns7O+Gh5Wr5nGeXjHEMTAeVOA2Ve38pNy/I+1Zk4VtyG1nFltJ/QrWJxmEC0VmkBYFeA==, tarball: file:projects/arm-automation.tgz} + resolution: {integrity: sha512-CTauQD4cEtFdQm0QpTfYI0DXAw/aE9w8ZYwcxY8fkPKaVtCJ2mmc5ghSogk5dSjeJQBjBBTfiPVIho14t+uNwQ==, tarball: file:projects/arm-automation.tgz} name: '@rush-temp/arm-automation' version: 0.0.0 dependencies: @@ -13180,7 +13202,7 @@ packages: dev: false file:projects/arm-avs.tgz: - resolution: {integrity: sha512-+IFz0D29ExLZpKlyxsw0lApXJb7w9Z4vXIsp4VclJOVYjA3ki/xHvIVYgNUgj1FM4t3jUgZHzBzmVa4LEw5xHQ==, tarball: file:projects/arm-avs.tgz} + resolution: {integrity: sha512-aVbAeRY+1Nji7SMcF1eh7H94NNAJLm9mnAckJklxyCjycvNkD8zddSRc9XoIyT0BXy8x/e+vrJYpUkwAttUPPA==, tarball: file:projects/arm-avs.tgz} name: '@rush-temp/arm-avs' version: 0.0.0 dependencies: @@ -13211,7 +13233,7 @@ packages: dev: false file:projects/arm-azureadexternalidentities.tgz: - resolution: {integrity: sha512-i+fwANat6eviAY700xtVUslIYRG/EBechZcHIRl2r91Yip2clTlGSpB3koHx57zMDOR5ithqYuuiwgWtcRzRyw==, tarball: file:projects/arm-azureadexternalidentities.tgz} + resolution: {integrity: sha512-LboCP/Yr2jO/MKTuLVFTrf43Y9fU6NDTCEsgx1ogNNfZ29g5Wqgb4JkidpaBC9vv0pjtdbh5tD3zMg35sFe3WA==, tarball: file:projects/arm-azureadexternalidentities.tgz} name: '@rush-temp/arm-azureadexternalidentities' version: 0.0.0 dependencies: @@ -13240,7 +13262,7 @@ packages: dev: false file:projects/arm-azurestack.tgz: - resolution: {integrity: sha512-N5cccsxzqlInPk7M1kMdiGZPPG91peL4FGuoL42vwXtLJc/C11JMBSipNbPPl2Hc28aYeBKcOSJVERwvUXIjHw==, tarball: file:projects/arm-azurestack.tgz} + resolution: {integrity: sha512-0mbOPd9c/AT7c2t8J8IDoUe6Zm0YmZpcwwApqq2zERVyD9n+WOgvGaCNa6G2PxN3gTpFEPvLokDZNjfSRCbBzg==, tarball: file:projects/arm-azurestack.tgz} name: '@rush-temp/arm-azurestack' version: 0.0.0 dependencies: @@ -13267,7 +13289,7 @@ packages: dev: false file:projects/arm-azurestackhci.tgz: - resolution: {integrity: sha512-k838V47XP/HxDMeD4fiNtdEwsPE/JTgLyob01bMYrPNxUTy/O/SXde0Wr3RsgcALPe3VUqsEin0Mq/RAv7TD7A==, tarball: file:projects/arm-azurestackhci.tgz} + resolution: {integrity: sha512-bsJRg4MkRLuhqXBY+qFlolaUjmWrJ21C+NJY9LY7WuMjhgoTgbcCxlBiBC1B0WqpJzqWIulQD06tpAeiXiBo3w==, tarball: file:projects/arm-azurestackhci.tgz} name: '@rush-temp/arm-azurestackhci' version: 0.0.0 dependencies: @@ -13297,7 +13319,7 @@ packages: dev: false file:projects/arm-baremetalinfrastructure.tgz: - resolution: {integrity: sha512-jdMMUOeUEWhlQ/aXd5+7i8i49BK8ha4M+AgDepfREAWn1saCpUE8RVKijvEZqikfh4BS5L32sI4JXiI1sKaaGQ==, tarball: file:projects/arm-baremetalinfrastructure.tgz} + resolution: {integrity: sha512-O0WjisLnirZaKLl1bfQ6VhweynhDE3pXOgMMhsGwy7wjAzKpkW4APklwMKdNQ2i8UpwQEl9j5vGJFOwLk5NDvA==, tarball: file:projects/arm-baremetalinfrastructure.tgz} name: '@rush-temp/arm-baremetalinfrastructure' version: 0.0.0 dependencies: @@ -13327,7 +13349,7 @@ packages: dev: false file:projects/arm-batch.tgz: - resolution: {integrity: sha512-3aUIlwYUbSPurjG9yccsqEZNXcvrq5jiPHjchk7qIeNyNozjqZJeDdi6uVKCCbnuXfxpH/Yw7B5cPQsiLvZkrw==, tarball: file:projects/arm-batch.tgz} + resolution: {integrity: sha512-3F4c2h2nkA1K1Cm7LPyjdhyz2Rs2p3JH6xhxN6jGAWaNlgqE1nxVzF/xS4lJyJKCc6VXcx1svN7zbiGbbs89Ag==, tarball: file:projects/arm-batch.tgz} name: '@rush-temp/arm-batch' version: 0.0.0 dependencies: @@ -13357,7 +13379,7 @@ packages: dev: false file:projects/arm-billing.tgz: - resolution: {integrity: sha512-XqVfHJQp30vLd/KaGRST9KZcwTOziUBxt+R6TCq5ul7xeY8fKnJD51WVoS7nfX4EA+r6b090AfWKsa+eBIcimA==, tarball: file:projects/arm-billing.tgz} + resolution: {integrity: sha512-FARPUh7FdBujg4dHXxguxHOlHOiRabQvrjuPUVXw5eabf7QhTy2FhjqOgYrnQRsIDpZh2a4pSiEfPiEbw0SQzA==, tarball: file:projects/arm-billing.tgz} name: '@rush-temp/arm-billing' version: 0.0.0 dependencies: @@ -13386,7 +13408,7 @@ packages: dev: false file:projects/arm-billingbenefits.tgz: - resolution: {integrity: sha512-zPOa9UDM7jV3n8ERiszjwDOoc1pZFh3v49EwXAMzIXCwVWMRyneZ2DhGRLWGoGTxuyNtMPXWiEeFt0NKOSbw3A==, tarball: file:projects/arm-billingbenefits.tgz} + resolution: {integrity: sha512-apIk0547dfQi4KBASblct0DzcWxZ1cXoeWOtmdRBR8zMQWQWhPXD5Gb8FEB21CgMnLp5EhD7GfsCmWapVheq8A==, tarball: file:projects/arm-billingbenefits.tgz} name: '@rush-temp/arm-billingbenefits' version: 0.0.0 dependencies: @@ -13415,7 +13437,7 @@ packages: dev: false file:projects/arm-botservice.tgz: - resolution: {integrity: sha512-hu3i3Ofv7/CKCncDACaI5l0u9H9/MHAIczAGozaQj+moBzBHQQExgrLi8O5mycR+Fjn+tRAioau37QaOCizr4g==, tarball: file:projects/arm-botservice.tgz} + resolution: {integrity: sha512-wMCVMuBEdhyh2pXUSDexEvjfqXjqNzr8Y8KnT9jMQ4knY8idnXDP0WNSVhs5Zq8l89rZN13XHzXWwoTf2zUJPQ==, tarball: file:projects/arm-botservice.tgz} name: '@rush-temp/arm-botservice' version: 0.0.0 dependencies: @@ -13445,7 +13467,7 @@ packages: dev: false file:projects/arm-cdn.tgz: - resolution: {integrity: sha512-3gYIjQuSTOLvxf3QjgF48JT+dEZbJYdk4jF098AkeSmYwrXvOLSGghpldwRpjVuVJlqiwNZRwR3o7R5FXHb/sQ==, tarball: file:projects/arm-cdn.tgz} + resolution: {integrity: sha512-qb9ts7b8hCxIcC+UoonLr7GJTyVE2w4JSzxUYD/cq+d5N7MrKw/MQ6X48jT1TQWX2IJFqyF+4rVUiovt75b3wA==, tarball: file:projects/arm-cdn.tgz} name: '@rush-temp/arm-cdn' version: 0.0.0 dependencies: @@ -13475,7 +13497,7 @@ packages: dev: false file:projects/arm-changeanalysis.tgz: - resolution: {integrity: sha512-fWlQBPipM3/lpPJEHMI8jsfQwft2ek7atdJLQ3lowOE4Z8uHKDG+ilJqiv1EE95NBrmuF+doeuefBAnZS+ZKCw==, tarball: file:projects/arm-changeanalysis.tgz} + resolution: {integrity: sha512-GFfbNDyWcUJbnJn194KZaCemMPGs9IAYlU0vFE4xOO5vuFduQRDSO4cc50fXst2rXPFqlAIE0rK8SOM0fKr3QA==, tarball: file:projects/arm-changeanalysis.tgz} name: '@rush-temp/arm-changeanalysis' version: 0.0.0 dependencies: @@ -13502,7 +13524,7 @@ packages: dev: false file:projects/arm-changes.tgz: - resolution: {integrity: sha512-RFhj9PYgucMkojmG/xWi+do0jmguJR5N6CVU/5dpEPMSNTFSOZpJmfhxlhbSCzKFHWC9WtEvecRQKNNNVowjwA==, tarball: file:projects/arm-changes.tgz} + resolution: {integrity: sha512-seCCegGmOhz6G5p3LB85+3cvpwfJt4vTDDj8dLjKKa0m9ptXuAH8q0z86iQ+TbKVxsO2UpTl+UXUZjyxtkOtNA==, tarball: file:projects/arm-changes.tgz} name: '@rush-temp/arm-changes' version: 0.0.0 dependencies: @@ -13529,7 +13551,7 @@ packages: dev: false file:projects/arm-chaos.tgz: - resolution: {integrity: sha512-3hM3+gdZSqsMiZrXetEK26zwL7KyXZp4THJw7SueBiHoD9zoZe+c8U11KMpN4IDJiFOq7/bDBLo0ag8PnzPZzA==, tarball: file:projects/arm-chaos.tgz} + resolution: {integrity: sha512-QXFVLF2dA2LGC5B+0uw8mlQcjJKpkJ8TpRff22N4pros7Dflf6GdxnbYA5dM9I2yPiCkHmQHnHkkDVIuEggqzQ==, tarball: file:projects/arm-chaos.tgz} name: '@rush-temp/arm-chaos' version: 0.0.0 dependencies: @@ -13560,7 +13582,7 @@ packages: dev: false file:projects/arm-cognitiveservices.tgz: - resolution: {integrity: sha512-y9yTVZHuFJI8dPwzEvercZND+2IfBtS4POhKWZt/y6kxrPTlZmxw+opxEDBzl8Yjlvef50gRtFFuIAv3UqAP7g==, tarball: file:projects/arm-cognitiveservices.tgz} + resolution: {integrity: sha512-dl27cjyX71D1d4m38cXejpA1O2i4DFb2MTAH/CND4bavP3LaQbIYkpqXSZUc7EoNXoI6jMZMRGcKgqMVUgNLQQ==, tarball: file:projects/arm-cognitiveservices.tgz} name: '@rush-temp/arm-cognitiveservices' version: 0.0.0 dependencies: @@ -13590,7 +13612,7 @@ packages: dev: false file:projects/arm-commerce-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-abUvhMDWA+f2jmsVFo3u2Uhgle7OPoyEn0Qm2itWEPLW6KcC3zWsUP87ASqlSOVAcXi+uqqaLYCasMXtNee0uQ==, tarball: file:projects/arm-commerce-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-bz+19yI1HQFlgrZQQZjZNOSHf+Hh4CrvP+nyOLusea0AWaJs1aChxIMmfs6VkRsc5Ewz/pGmFz0WJPmkMJSTeQ==, 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: @@ -13618,7 +13640,7 @@ packages: dev: false file:projects/arm-commerce.tgz: - resolution: {integrity: sha512-C+jpx3gDx5Lyb8oXrbNqttOQnlPoGY97pYY0wyzyABCjLSzV8LGnxK0HbPP+Bs9/IS/KuWoiPrTEW00sgh8jBw==, tarball: file:projects/arm-commerce.tgz} + resolution: {integrity: sha512-LWkAeSCgEawOR2ndN6jJCHy3rg3Rx12DrpITnO8m0UrYoM/I+igLnAmtzFrWuaPPrYIboLBzxNMokfFcXSLS/w==, tarball: file:projects/arm-commerce.tgz} name: '@rush-temp/arm-commerce' version: 0.0.0 dependencies: @@ -13645,7 +13667,7 @@ packages: dev: false file:projects/arm-commitmentplans.tgz: - resolution: {integrity: sha512-/Ob9UPZ/v732DkVwUELb9Eymmbdi7h+W6hdYWvY6QkLlrrtywdchXNcVAH5mRafuBfyJayI/+LP5pKwFrsbRpw==, tarball: file:projects/arm-commitmentplans.tgz} + resolution: {integrity: sha512-whETLRCVXON1vxsXT38mJ5yqCEdwAE+vAlBJEaFbFbSQsZ6xgLvavVlB0mmOqUNZOjI+QHKha9Vu0a/CDw/yZA==, tarball: file:projects/arm-commitmentplans.tgz} name: '@rush-temp/arm-commitmentplans' version: 0.0.0 dependencies: @@ -13672,7 +13694,7 @@ packages: dev: false file:projects/arm-communication.tgz: - resolution: {integrity: sha512-2xEGkC1vwagWSicT0dw8cB8tpRwVYDXf4NbYWW53tgeyrW4TIdUiqGDIghLJPiN4cvLhttOYfCXxjEPgFbfOLA==, tarball: file:projects/arm-communication.tgz} + resolution: {integrity: sha512-Rq0A6A/jA9bGHTJ8xX8n5QCJb2zKiZQINXv/oF1LEiNsCpmULW38CHvpcCzYzFevY7ZX/RCAp78d7ybuqqg1yw==, tarball: file:projects/arm-communication.tgz} name: '@rush-temp/arm-communication' version: 0.0.0 dependencies: @@ -13702,7 +13724,7 @@ packages: dev: false file:projects/arm-compute-1.tgz: - resolution: {integrity: sha512-htTzU/qeMbztclayDaALb69likrxG5yfqsxktJ13IrT2EfCQT0inWi5E74C+k9nztbPUvj7111EL4w5Pxi9OaQ==, tarball: file:projects/arm-compute-1.tgz} + resolution: {integrity: sha512-AM0dsiMAJJ2gP64uWD5ysDFbFhSeYjtTasktK5CUVdqxAXZQuTkLgYw7a0tULebPWwF46L3mrmqQYzz/Gs/dTw==, tarball: file:projects/arm-compute-1.tgz} name: '@rush-temp/arm-compute-1' version: 0.0.0 dependencies: @@ -13734,7 +13756,7 @@ packages: dev: false file:projects/arm-compute-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-fNsQuQcpvlHm5zbEFeZydIMJO1FKgjveSOBvuzk4Z8Ls5lHDUys/i3lQdIg0h0RyVp55OrpOsqxGnkWf8uC6jA==, tarball: file:projects/arm-compute-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-BbmJHyqUYQSUU+BFZdrNijIZh4ffin6Yr6225Nm47Q79+rUflF0lhHz0y7/DZ98dvET8pMy2bayEVQaL3cyoRA==, 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: @@ -13764,7 +13786,7 @@ packages: dev: false file:projects/arm-compute.tgz: - resolution: {integrity: sha512-7FI/MhP2kRDY0FUaisuP/hIpX62E1NL4eyyPhadmBb4gCYxrukQq7TeE098mPu6VXdp2vrmfaWBviCp27HSM/Q==, tarball: file:projects/arm-compute.tgz} + resolution: {integrity: sha512-VYWMdomJKQucZjeoj7vC5sLt+WfOvXijJPZAPSphCz4IYA2GMLSzOOI3plFcTyaIc/DQmoUe8yofCNLc2wb4kA==, tarball: file:projects/arm-compute.tgz} name: '@rush-temp/arm-compute' version: 0.0.0 dependencies: @@ -13811,7 +13833,7 @@ packages: dev: false file:projects/arm-computefleet.tgz: - resolution: {integrity: sha512-KGi5c4wRvovPp5nrSnxE0EOM0KODxoABZTkdsJc/BWIoSD5eaXqsMsg7s4m0eufwCUDQjOXl/S0h3pUiFQkbCw==, tarball: file:projects/arm-computefleet.tgz} + resolution: {integrity: sha512-0cpA+/toEHnG0G1/Q+ywSJT7So1FT5GnGdVFS0fUVtedU6fALGp2UMQUYZYZUATeSe29r7q458SQdqyB5JeAww==, tarball: file:projects/arm-computefleet.tgz} name: '@rush-temp/arm-computefleet' version: 0.0.0 dependencies: @@ -13850,7 +13872,7 @@ packages: dev: false file:projects/arm-confidentialledger.tgz: - resolution: {integrity: sha512-zxZU/JNsnSaYxiS4gMIh80c4JtSyr80YyLEMDCWMNlHq+C+be/nXEt6p5bpi7kn//tjrzt14eMZnTCi3pE3K2Q==, tarball: file:projects/arm-confidentialledger.tgz} + resolution: {integrity: sha512-/+COUhTsLVbHeC7HbjPJjUTImMuZwOLH+9XuTudUccVUTz53dY6opFZNtUM7GVaywFK1fGXY2N92bN7H7z3Ilw==, tarball: file:projects/arm-confidentialledger.tgz} name: '@rush-temp/arm-confidentialledger' version: 0.0.0 dependencies: @@ -13881,7 +13903,7 @@ packages: dev: false file:projects/arm-confluent.tgz: - resolution: {integrity: sha512-z/AubcnKHzpxf/9w781YbGNb53vuciy1f76Ar+Do5o5Berokb8x6ocuWrJs+kIDgy0igy7ju0Bt88Sf2avMikw==, tarball: file:projects/arm-confluent.tgz} + resolution: {integrity: sha512-2o273gtGPTC2K2/i46A21qYt2qP4tcRSqAfJJP4LqWdzkdt8+XBFjlExZzEmLmuZnnlszOwLurb5b944u+l7HA==, tarball: file:projects/arm-confluent.tgz} name: '@rush-temp/arm-confluent' version: 0.0.0 dependencies: @@ -13911,7 +13933,7 @@ packages: dev: false file:projects/arm-connectedvmware.tgz: - resolution: {integrity: sha512-PjgIWOJHPB3uSxF1IR1NtM5TfRZ7cGTOylTsjMaA5vvIgMfwcdtq2ADpnhfUPkqcjGJJwcA3vzieQUxb3AbNhg==, tarball: file:projects/arm-connectedvmware.tgz} + resolution: {integrity: sha512-w1T74Hc0+RFb5V3bH0jQuBBUCENQ3/MRlEIOYf3x0nZQ3OzHSAfA1Q6uMm82oZzJ+VF9VLUCBGfxo6wfwmFn0Q==, tarball: file:projects/arm-connectedvmware.tgz} name: '@rush-temp/arm-connectedvmware' version: 0.0.0 dependencies: @@ -13941,7 +13963,7 @@ packages: dev: false file:projects/arm-consumption.tgz: - resolution: {integrity: sha512-H3G/xqgawMywQnmbzgmiHgs3i0fO3Vji3LJHZxek4Ep4zkjyzif6svW5QQq0C8uF6fMGrGmyi9FisnIqImjhng==, tarball: file:projects/arm-consumption.tgz} + resolution: {integrity: sha512-Gcy5nXxsywa4b9F7LFIiS+QtQCf0L9YsdfqyYqLpY/2A/Ix0S34nyU1xhIH2dk2Qzyg93sbNFpOWzXMif2Vugw==, tarball: file:projects/arm-consumption.tgz} name: '@rush-temp/arm-consumption' version: 0.0.0 dependencies: @@ -13969,7 +13991,7 @@ packages: dev: false file:projects/arm-containerinstance.tgz: - resolution: {integrity: sha512-ki0IumWTAuuvtP5w6e5OEXc7U8NGGPUTJRfQrK74zPExsA60o71EM/2LNlp+Ac16fL6WJgHvueRFRhQyUvHuzg==, tarball: file:projects/arm-containerinstance.tgz} + resolution: {integrity: sha512-IeTmSosHKsNS/TA1NqQNs/nksO+D8+6b05enj5Tqe8JkVyyjWdgz0jCVap5GMOd9zmhSZgTlzBXzf7/8JlZAOg==, tarball: file:projects/arm-containerinstance.tgz} name: '@rush-temp/arm-containerinstance' version: 0.0.0 dependencies: @@ -13999,7 +14021,7 @@ packages: dev: false file:projects/arm-containerregistry.tgz: - resolution: {integrity: sha512-rnNxFSztZHA0UnR05hfe5N5CRQCEDCQsM9cWo+53EWcpc/OOos6gr8znKJoAMRF02hLQFKz7zXVHYyd5lPHiMw==, tarball: file:projects/arm-containerregistry.tgz} + resolution: {integrity: sha512-ou0H4p1Lf9vhdrNtJwDAs4apzn2PTEQ+i43Cjf+z3cYejA+mM69a9Ps0vjFniRH0xtYDzyMw+ILLORQKBx3MmQ==, tarball: file:projects/arm-containerregistry.tgz} name: '@rush-temp/arm-containerregistry' version: 0.0.0 dependencies: @@ -14029,7 +14051,7 @@ packages: dev: false file:projects/arm-containerservice-1.tgz: - resolution: {integrity: sha512-B9/qkrGTOKFMl1uKG6/YuYHwnQK58VyjOWRr6v5YqzdTXlMrxpc81HJTSnpRv6MloAEedISGePdfBULz1OMvuw==, tarball: file:projects/arm-containerservice-1.tgz} + resolution: {integrity: sha512-MSE9EQsFt80usJvYiYKfr8QgkOTk0uB7i+d1RvEgz0W1HSWx0r+5sI52jjaQo2s2l3Vb9f+p0N+Vn2Os9LhWPg==, tarball: file:projects/arm-containerservice-1.tgz} name: '@rush-temp/arm-containerservice-1' version: 0.0.0 dependencies: @@ -14060,7 +14082,7 @@ packages: dev: false file:projects/arm-containerservice.tgz: - resolution: {integrity: sha512-0JWrY8HNeTojCQQQuuqZ32zVkxL8Rnv2xlnIUMHLsE5ghlYs39pA6XEU0aeYxm+f1g50D4048djHAJ5lg0HAKA==, tarball: file:projects/arm-containerservice.tgz} + resolution: {integrity: sha512-7BoXb1vMgKl/PnaE7JZthEQMaxNxic7BttWWBLpU7ZMvCYhcM2Z7u0biB30PhTs142yT3G+JEp6R1JLpdPFu+Q==, tarball: file:projects/arm-containerservice.tgz} name: '@rush-temp/arm-containerservice' version: 0.0.0 dependencies: @@ -14106,7 +14128,7 @@ packages: dev: false file:projects/arm-containerservicefleet.tgz: - resolution: {integrity: sha512-Q0BxwTAQnv16ETxkfwg/n4NZAwSelH9Cv9XdsDcGrReeV1pXHlwg7dErxk6ey+ocHUVD7qA1wp21qzffwXSTyA==, tarball: file:projects/arm-containerservicefleet.tgz} + resolution: {integrity: sha512-Plqg8H1yVOsiNy5aqEAviSDO03X5onAnB2CYgd6U4qjY0ZvKJVyAcrgEdNqzU7WCqPCVgy605+iEX7xWxjpQUg==, tarball: file:projects/arm-containerservicefleet.tgz} name: '@rush-temp/arm-containerservicefleet' version: 0.0.0 dependencies: @@ -14137,7 +14159,7 @@ packages: dev: false file:projects/arm-cosmosdb.tgz: - resolution: {integrity: sha512-/Cb2yd9t9k3cmTg9QUJrli800W8j+28xZxoGfymYrZfHxm2geOtI4euBHu9lNCjNcI2TeZX8uuR3BIl9hIQOYg==, tarball: file:projects/arm-cosmosdb.tgz} + resolution: {integrity: sha512-EcEo0Mm8/H7VWVbwvb0BVt/nk3JFgPvVRp39nDyt9jY/pevKEPihUH1BfmhuOCQdNaZWhhI4QOzLsFGHweHYCA==, tarball: file:projects/arm-cosmosdb.tgz} name: '@rush-temp/arm-cosmosdb' version: 0.0.0 dependencies: @@ -14168,7 +14190,7 @@ packages: dev: false file:projects/arm-cosmosdbforpostgresql.tgz: - resolution: {integrity: sha512-lX1LJoAhDJjNaSE5A3yi4qJ8BSHkKkV20RZMigPUnz/1ThN0CVUWH2MN4HAZtmPer6xvUMczjJ+wyjekKpK2bA==, tarball: file:projects/arm-cosmosdbforpostgresql.tgz} + resolution: {integrity: sha512-qcPKWxfssW4deS2vRfGT1AixQhA2XK/BBSCxm1G7fo7A4Jqw0GBXRYbYtCVw6rzX5RHouZXYa7LAmJxPGpQ6wQ==, tarball: file:projects/arm-cosmosdbforpostgresql.tgz} name: '@rush-temp/arm-cosmosdbforpostgresql' version: 0.0.0 dependencies: @@ -14198,7 +14220,7 @@ packages: dev: false file:projects/arm-costmanagement.tgz: - resolution: {integrity: sha512-ICAyriWE/1Jebu5380CxWafhOlbO2j+8AmeLt3n70whmJb5UD2V51XYTO5xaqLwGrWmHieAu0g0EYuluewaDWg==, tarball: file:projects/arm-costmanagement.tgz} + resolution: {integrity: sha512-5lpA8pqyyAM2ac2mD8Etgdb6v9PzqcrM+DEp4w7lnQNVj9cNtExLPemZT+jQL+hxaJSQL5Xuvak60S7d1QbXAw==, tarball: file:projects/arm-costmanagement.tgz} name: '@rush-temp/arm-costmanagement' version: 0.0.0 dependencies: @@ -14228,7 +14250,7 @@ packages: dev: false file:projects/arm-customerinsights.tgz: - resolution: {integrity: sha512-LZLPHeTQuFJL3fPsooEXPQSe+KWznuY0q4Wiicxqa1CLHzL5NnUrpDi3juuOh5JUCctiVj4qPa2W04n23b2A8A==, tarball: file:projects/arm-customerinsights.tgz} + resolution: {integrity: sha512-rB62XQy8dvXMz4M/7aeeFyB23YakTjOxwE6FgpqoJCzE6ZjsoXmq+Ji0AoaanssRvJkETEg5z2IksAg2+vURlQ==, tarball: file:projects/arm-customerinsights.tgz} name: '@rush-temp/arm-customerinsights' version: 0.0.0 dependencies: @@ -14257,7 +14279,7 @@ packages: dev: false file:projects/arm-dashboard.tgz: - resolution: {integrity: sha512-s/5AttuZg8VGAqE5bB4lXAC2glSpE3Fem/i6oquOwA50duTuCdiMvuiXc/ctmfoT7F+YM1TD/+pwCXTxXyk2tA==, tarball: file:projects/arm-dashboard.tgz} + resolution: {integrity: sha512-ADCtf6wHVl4+mj0XkmgezMbzyz1dJbEZWEXokWIuAIUNeMfPomxXikfPVgIWxB5tPFSxHDS7+L2HrfII5sb21A==, tarball: file:projects/arm-dashboard.tgz} name: '@rush-temp/arm-dashboard' version: 0.0.0 dependencies: @@ -14287,7 +14309,7 @@ packages: dev: false file:projects/arm-databox.tgz: - resolution: {integrity: sha512-Nv3Ub6mRlmbPyFq7Em22lQGHv3iI5kJhTKChNIXhp5BCjGwektVQhjrZ2grjO1gwBv+BTDkfiOMsvwEqiZc8Bw==, tarball: file:projects/arm-databox.tgz} + resolution: {integrity: sha512-Jl0QbnBUPsstqrSz0FBnacdEPWP4pXxLGmCIqcEy5dOqQFh0jxUfQMKe1nFttPrQIsXvSPPZ1dq+Xzg3voJlUA==, tarball: file:projects/arm-databox.tgz} name: '@rush-temp/arm-databox' version: 0.0.0 dependencies: @@ -14317,7 +14339,7 @@ packages: dev: false file:projects/arm-databoxedge-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-iF38cTOLQCdEZFr1xo4K9+83MQJJWq00aF9+6syKOCB2AJMxZ4E9Z6QyP/sDCBFJdVdoxF8FX3SLvQdBlz1t3g==, tarball: file:projects/arm-databoxedge-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-3apwrQnikZL/C1EwsqxokVNwTTuxIgCBimntJkPzmTt6Sl1r3EnvkpCEq3nV9K2PFRLcwomKRGDo/4AFlpqG2g==, 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: @@ -14347,7 +14369,7 @@ packages: dev: false file:projects/arm-databoxedge.tgz: - resolution: {integrity: sha512-lVHnZW1D9P6WuVY1yYsvXo3VNP4QB9BkVE/19PyFPQQ/HAB9YLDOsWrkVwJuhYSYGpImuA7PT+EKYYaRbHgwxg==, tarball: file:projects/arm-databoxedge.tgz} + resolution: {integrity: sha512-pd8wV626yBwXSHjpO3zbIUBBvayYezwyB2iFk3kckdVDaJC4sYdwlr1k+0cmUel5VEM2hzP9ZcrJ8BLzpHHWeQ==, tarball: file:projects/arm-databoxedge.tgz} name: '@rush-temp/arm-databoxedge' version: 0.0.0 dependencies: @@ -14376,7 +14398,7 @@ packages: dev: false file:projects/arm-databricks.tgz: - resolution: {integrity: sha512-tUasK3ua2kjINJZkPGzMcPP6I58AryQuPRH8TMQDznPh60vKKxLPA5QHx8nSSG0qugZkX/0ahb7KbrftgNxlyg==, tarball: file:projects/arm-databricks.tgz} + resolution: {integrity: sha512-ukffrFz9KXG84YZnYgyMVU2WxzeM+UafOjUKGXBQuPDRaRdr4fyH2WbE18S8KSzhgSM2uh9Bajon4PXnfYA5eA==, tarball: file:projects/arm-databricks.tgz} name: '@rush-temp/arm-databricks' version: 0.0.0 dependencies: @@ -14406,7 +14428,7 @@ packages: dev: false file:projects/arm-datacatalog.tgz: - resolution: {integrity: sha512-+W7Fi+B5qVpGDKk8dzHL5qkJGNnB/BkryLKfxxPDLzNOLjhlU/Xq90MVlDxYmj1HnAQRWZ/ZlgLILQQjj4PR/w==, tarball: file:projects/arm-datacatalog.tgz} + resolution: {integrity: sha512-6Xh58jdmq7AmyrpgyMtP2og8OJmKzGfI4A2o78o9ntzfKPgFg5GvVweJYinUFrHhgVy8wllq8m+DbNmwYJ/SeA==, tarball: file:projects/arm-datacatalog.tgz} name: '@rush-temp/arm-datacatalog' version: 0.0.0 dependencies: @@ -14435,7 +14457,7 @@ packages: dev: false file:projects/arm-datadog.tgz: - resolution: {integrity: sha512-tWQ6xPYw4sqDI7Dr1jEKm7amuwojB2LYeaFnClsQkm0GAoia87JGNlWTJTd+UltPWpLsNnBUsLBbeBIxBFNb0Q==, tarball: file:projects/arm-datadog.tgz} + resolution: {integrity: sha512-4vtDGxEr7bIHpf8wrPt8hOm4Iot3u7ATo7PcgFJ22B1QRo6+fjDt5B8aXBbvx6wUD4pdn8lyxpWNIKDaEwZ0JA==, tarball: file:projects/arm-datadog.tgz} name: '@rush-temp/arm-datadog' version: 0.0.0 dependencies: @@ -14465,7 +14487,7 @@ packages: dev: false file:projects/arm-datafactory.tgz: - resolution: {integrity: sha512-Jx47zRvgQVatq+t+0Sz4w2FGrkpnN+ZovYRIiaE6PXH01ZjvI3z8+eesGhylvYKWzLq15lmPmOoOZsG1Qf5Spw==, tarball: file:projects/arm-datafactory.tgz} + resolution: {integrity: sha512-Q/UgF/jHUhFWs4a2VHg5BPu4EacOjaoAJqlLqGFX3ZwG0GZDoRx8FtqHRw8p4jzKB5vuOrEV/3GzXjtsgu1WWg==, tarball: file:projects/arm-datafactory.tgz} name: '@rush-temp/arm-datafactory' version: 0.0.0 dependencies: @@ -14496,7 +14518,7 @@ packages: dev: false file:projects/arm-datalake-analytics.tgz: - resolution: {integrity: sha512-6pqdujvH7QAEVcGKtGa+Qvy3jc4Jvq6ROXRx52o8gU1qP1pffb/2QKTgDYIFVSWJOtvn7vKWsSv++K3JGYRp0w==, tarball: file:projects/arm-datalake-analytics.tgz} + resolution: {integrity: sha512-BwKg050DuWAe2bNSn0L7Y6/gxF5is/sUEyI6ey6pbro0hFwUYwrYuWbPvoEXJ0XQh4F3+KAfRuIaBXqwUG0NAw==, tarball: file:projects/arm-datalake-analytics.tgz} name: '@rush-temp/arm-datalake-analytics' version: 0.0.0 dependencies: @@ -14525,7 +14547,7 @@ packages: dev: false file:projects/arm-datamigration.tgz: - resolution: {integrity: sha512-TNCRVby5YXY0c2e7shxpP9fLOiMuAPzrad82L5d/PsWCiFxay/kHltRhC9yfEuJOLi9SPaHherVuIsUxFyKozA==, tarball: file:projects/arm-datamigration.tgz} + resolution: {integrity: sha512-IEsrSpKapYUOg8ZJtoftvyu8cucFaJYNhfA7aIcIVop729u4EGFXXhRvFhSU8TdU904tqTrdfKU+QQIsrqEeAQ==, tarball: file:projects/arm-datamigration.tgz} name: '@rush-temp/arm-datamigration' version: 0.0.0 dependencies: @@ -14554,7 +14576,7 @@ packages: dev: false file:projects/arm-dataprotection.tgz: - resolution: {integrity: sha512-LdVQlNk85WkLK9UFEnJJKKKUL2eAwL6Mqs6VgOGojOomnnQGZg/kNYOgdtbvJ/V0th5JLVzDSD55d+xfUO49vg==, tarball: file:projects/arm-dataprotection.tgz} + resolution: {integrity: sha512-mPMDI8V3PEYMWzKfjL/WqtwL2gZjPrAQNoT8PZOO4Du7TC4r9oVMjoPoPtPIqEYTMGuCh80/gto9RGc+jL0xxg==, tarball: file:projects/arm-dataprotection.tgz} name: '@rush-temp/arm-dataprotection' version: 0.0.0 dependencies: @@ -14585,7 +14607,7 @@ packages: dev: false file:projects/arm-defendereasm.tgz: - resolution: {integrity: sha512-98fr3fMGLC57z4fOkxQpGGkppirHPusHmoYQqJJ1FJxmacoAygaezvyR7QJ0P/2dYd9MQAVVshAItBnRCX55+w==, tarball: file:projects/arm-defendereasm.tgz} + resolution: {integrity: sha512-7ZapL0RxM8uEdo9Rw4fqFSSwB9+oVkAO1tBNtqmGgo4pQSJqAfEounweI8xswwkiraFYuc/BxStTTI6S2D5Z/A==, tarball: file:projects/arm-defendereasm.tgz} name: '@rush-temp/arm-defendereasm' version: 0.0.0 dependencies: @@ -14615,7 +14637,7 @@ packages: dev: false file:projects/arm-deploymentmanager.tgz: - resolution: {integrity: sha512-bnUVyGPtkPe8LNSyCy1yClVXU8St7RlUkXoNBlihb5TyJFsyPuXKgYXpcYh9iyHpiKqoLiS7Cj4gPM0C0nmkKA==, tarball: file:projects/arm-deploymentmanager.tgz} + resolution: {integrity: sha512-RxofYNGQ4TP+HYcb8QI86FIpjvnsmd6s1Lc9SpdDJ+v7xTfZa5lq6Qy/w3pDGeBRlPDm9dZm1K+q79p3JeAqYA==, tarball: file:projects/arm-deploymentmanager.tgz} name: '@rush-temp/arm-deploymentmanager' version: 0.0.0 dependencies: @@ -14644,7 +14666,7 @@ packages: dev: false file:projects/arm-desktopvirtualization.tgz: - resolution: {integrity: sha512-mGgbpMxIDwwPkf1n/Qpmb8nIWXxfBmYKxjaYcxWabnoNdL2keoT0+jqT1fsIU2ttLUMm5Zj4pI6+2pGCI02+DQ==, tarball: file:projects/arm-desktopvirtualization.tgz} + resolution: {integrity: sha512-KO7SOu5mwyQwRnZp5ptYmnZ6oHUIMHsxwKWASnilMZuqST0RRWg3B35U9fhFA/ELowa5fUc+LpnDczPD58r+LQ==, tarball: file:projects/arm-desktopvirtualization.tgz} name: '@rush-temp/arm-desktopvirtualization' version: 0.0.0 dependencies: @@ -14672,7 +14694,7 @@ packages: dev: false file:projects/arm-devcenter.tgz: - resolution: {integrity: sha512-WzOYyZ7sYCs47LFx+uqBrSXVF+Rkif62PG7vbbljUQSsBkrnhtXwMD76F6w2iYLF6nbRbsvkyhoXlBzT/M8tiw==, tarball: file:projects/arm-devcenter.tgz} + resolution: {integrity: sha512-JurFyM3b6qbeR5PO5zx2jDzOwiMPPUn/RAi0UeM62muO2TmoeBUKLkjbJhCTRillgWeJHVNFIplnyuY54mBLlw==, tarball: file:projects/arm-devcenter.tgz} name: '@rush-temp/arm-devcenter' version: 0.0.0 dependencies: @@ -14703,7 +14725,7 @@ packages: dev: false file:projects/arm-devhub.tgz: - resolution: {integrity: sha512-EdaLVv3eLxnjLGMlbdpAddyXwOZfPmne9ziabI5duyiaNj3LGB3XFzDFXxB5Q14PELzsp7pxO9j8dTOb63tWoQ==, tarball: file:projects/arm-devhub.tgz} + resolution: {integrity: sha512-uM9sv49gEdbbukbPXUkGwEr57/C8G4voHCZVwjayArvzQxpmw0vCRWgmdNtHFUMNF8qxAne7E9v5b0oge6KgsA==, tarball: file:projects/arm-devhub.tgz} name: '@rush-temp/arm-devhub' version: 0.0.0 dependencies: @@ -14731,7 +14753,7 @@ packages: dev: false file:projects/arm-deviceprovisioningservices.tgz: - resolution: {integrity: sha512-lQqDbv7g9n5GKZZ6XzHJ/1krYnpj7WD+L9eUGsDCYNIvfS820VCD2NWILorCZ1HM3aH60jS+1vE2yYq6rUriVQ==, tarball: file:projects/arm-deviceprovisioningservices.tgz} + resolution: {integrity: sha512-D1j7w251vbrba8H1bHgnWhFID6Nf0yN2d2IaXcyB4zNibyi0D8ZI8SvBidMrsGXOo+yAD/jCSp1Ta4n+xgy+Dg==, tarball: file:projects/arm-deviceprovisioningservices.tgz} name: '@rush-temp/arm-deviceprovisioningservices' version: 0.0.0 dependencies: @@ -14761,7 +14783,7 @@ packages: dev: false file:projects/arm-deviceregistry.tgz: - resolution: {integrity: sha512-k8vk0idHyonOoNArlqW4tLfeAxfW8FCbnXT0OzkiNQKp45c6YSsFT1htPCQEQmLDMoDWfuUsmAvrNMdKlEZD6g==, tarball: file:projects/arm-deviceregistry.tgz} + resolution: {integrity: sha512-uorbaXlwdBW4pHmu5isNUlJSOqG2W/3hDKtz+t+cmKhs+exRSXDtKUTjQVQliSIEKvVFnKlguoD85DXlOFi6Bw==, tarball: file:projects/arm-deviceregistry.tgz} name: '@rush-temp/arm-deviceregistry' version: 0.0.0 dependencies: @@ -14792,7 +14814,7 @@ packages: dev: false file:projects/arm-deviceupdate.tgz: - resolution: {integrity: sha512-z6sZ0yLyraPVZIG8aB/OCRUf1V1BKgZmZSmoM88wL1miK+yYSVvRJcNPDW72x4btKJXhfQTGrCjIjyBE9vCPmA==, tarball: file:projects/arm-deviceupdate.tgz} + resolution: {integrity: sha512-sxFBXsSKlNJMjF2Z/fHgJ74YDfmEOpvhJBJWng55rnryYJpx18+0tvuY4o7kDQKfo5fNk/dVYJKyBA6mz1Q8tw==, tarball: file:projects/arm-deviceupdate.tgz} name: '@rush-temp/arm-deviceupdate' version: 0.0.0 dependencies: @@ -14822,7 +14844,7 @@ packages: dev: false file:projects/arm-devopsinfrastructure.tgz: - resolution: {integrity: sha512-Xmke4vEWYHy+QQ+/iYtu7ywr+ynW+EXriwXzdXW2rQ8himsYCsyQRz2GXCwJBKYBl1mmtDwAUE4SGZ9NMKFwQA==, tarball: file:projects/arm-devopsinfrastructure.tgz} + resolution: {integrity: sha512-4zHK93tKjUT4Aksx+xEV/eCXF5V/jP0XNr6J0V4yt7oWNIh4OEgNpl0i5XG8MRVBVjpxRoWnixbZgnm+nZNogg==, tarball: file:projects/arm-devopsinfrastructure.tgz} name: '@rush-temp/arm-devopsinfrastructure' version: 0.0.0 dependencies: @@ -14853,7 +14875,7 @@ packages: dev: false file:projects/arm-devspaces.tgz: - resolution: {integrity: sha512-jlFWQo4HQ3JQyIXMlCCenE0wkocWFAkYr/CWnc0NQkX5AsiO/jnh9PMYvFqQuEdyS2jqYGYyu7C3nKUZNHEtzQ==, tarball: file:projects/arm-devspaces.tgz} + resolution: {integrity: sha512-mIcMSxyuO791Tup/qBtwba/rS/Pbz5qAWnZMacRfMAtRBGIc1/F7MnqNeJVNbMnOu9IuvAzbAN05dLOM2YkRqA==, tarball: file:projects/arm-devspaces.tgz} name: '@rush-temp/arm-devspaces' version: 0.0.0 dependencies: @@ -14882,7 +14904,7 @@ packages: dev: false file:projects/arm-devtestlabs.tgz: - resolution: {integrity: sha512-gTx80BQNVPreQoy/L1z1UA3lDxk8fXJkRPr9JeqSgoy5vwXN37+fsHcaied4c6lhQjHLj1n2JH3Rbd8iZk1zIw==, tarball: file:projects/arm-devtestlabs.tgz} + resolution: {integrity: sha512-c7ox4i6D023X+c7vBcY9EF4LP/lQiI9vpslVpCLzYIqY++5AmBtKrzxyumlOnMkQuFFYK9LuRR7T7Jtz8f4ReA==, tarball: file:projects/arm-devtestlabs.tgz} name: '@rush-temp/arm-devtestlabs' version: 0.0.0 dependencies: @@ -14911,7 +14933,7 @@ packages: dev: false file:projects/arm-digitaltwins.tgz: - resolution: {integrity: sha512-hACmyDTZT5Nue06GH53PNJ4TWpcKbpHpzB/e4J/ojnEFMlTW4oTLU6aWCEKsElp2BQ2xJ/p2l+3uktEQ+2cx/Q==, tarball: file:projects/arm-digitaltwins.tgz} + resolution: {integrity: sha512-eQT/IMro7HG/g0+aj5gAv1oiShbvUeRzPbGBgWDg4pgpDLBsSTFK//ARjCI7M/qM9Z3XvNjUSTznM8N6LbR6UQ==, tarball: file:projects/arm-digitaltwins.tgz} name: '@rush-temp/arm-digitaltwins' version: 0.0.0 dependencies: @@ -14941,7 +14963,7 @@ packages: dev: false file:projects/arm-dns-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-6jkA53NekdbstrWe3SvTUdK+CcIEJjdyuwKyqmZlOuVm04+0EZgCjmijZYN/3quQCrFnukBHwrP4d2VVbxwtgA==, tarball: file:projects/arm-dns-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-T0wRLScYsY4szLLWEDd+V9ap7cyXs8jRV93nyNtSV5I9LvyV7tTrFDkFmNvnFHoUYvdmK4TfWPkSv9Vv4COwCg==, 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: @@ -14971,7 +14993,7 @@ packages: dev: false file:projects/arm-dns.tgz: - resolution: {integrity: sha512-HEM58a7DcKeutSbQVeZ3jdVaBeQbGn/4b8C58+XTVwaEljTCMbma2Nas20P3ehm2Wy9p3R9kz1ioUA9afWpjdg==, tarball: file:projects/arm-dns.tgz} + resolution: {integrity: sha512-TQido9uO82arRWzrTN0K1remElEhm2ouPkrvQEtOtQRIUl/84aLjasJjjsF2RDLRhwnm7PjDIo/oozZVAQXFyQ==, tarball: file:projects/arm-dns.tgz} name: '@rush-temp/arm-dns' version: 0.0.0 dependencies: @@ -15000,7 +15022,7 @@ packages: dev: false file:projects/arm-dnsresolver.tgz: - resolution: {integrity: sha512-DeLf7+7CkmmVIUt9YZSfoBhkxZNdk3QdqtlS8krdPjms6MZczMyc4xtFuXWbXrE8ejCrBvhAur1caIV576e+Gg==, tarball: file:projects/arm-dnsresolver.tgz} + resolution: {integrity: sha512-cXYXTCEm/jh3jlVQ8d7a1dCCqELzBsFshdreRd5Ly2NOx/IQ26C9fs20Txh16GN6b895cyziWsQd2zXefJajjg==, tarball: file:projects/arm-dnsresolver.tgz} name: '@rush-temp/arm-dnsresolver' version: 0.0.0 dependencies: @@ -15030,7 +15052,7 @@ packages: dev: false file:projects/arm-domainservices.tgz: - resolution: {integrity: sha512-7EqjjV4zyIaCTWxDU+h1f6asLud4RJF4fMBQ4uGizNy0Y4kxBWWa7zG9UJ3MsSkD6U3q+GSGx35QGYt2WaIYUA==, tarball: file:projects/arm-domainservices.tgz} + resolution: {integrity: sha512-56Z4MCVLd1HbrkYnH8JbLj7z1J9OPSPw/9kSyCNju0k5RB8LcJZt6gU8PNmfabcIhr98j9FeReHOIBbTxjzphw==, tarball: file:projects/arm-domainservices.tgz} name: '@rush-temp/arm-domainservices' version: 0.0.0 dependencies: @@ -15059,7 +15081,7 @@ packages: dev: false file:projects/arm-dynatrace.tgz: - resolution: {integrity: sha512-Uoemd4Ar2HBsOdh/+FqGAG1YW4h9Qk2GuV/QMlI9ahEvpQz1HeUAGM6azHHbNxDdBV5Lvd3p3JZvMO6QrQFTQQ==, tarball: file:projects/arm-dynatrace.tgz} + resolution: {integrity: sha512-7X2We+Y8snc3mGhkUhpBka7+vg42/KySiScTOBtj185VYJJ/LgCGCif+TXh6qY3w3Gh2MKA05FXhkpWeUgJx2g==, tarball: file:projects/arm-dynatrace.tgz} name: '@rush-temp/arm-dynatrace' version: 0.0.0 dependencies: @@ -15089,7 +15111,7 @@ packages: dev: false file:projects/arm-edgezones.tgz: - resolution: {integrity: sha512-a1ODenPYrH2Pc+Zf6INTAZNtAsti9ACPy8Vpz0cnZuLrDyUIm+eQJ3ynakAtYVqc3AEuBsBH3s+3G1CNZLqioA==, tarball: file:projects/arm-edgezones.tgz} + resolution: {integrity: sha512-lp8JhRQXr8dqHDjYDq3RUhpI2/vvzIxeQk655dFsc0Xw+QVvLlI/XrKdud+pD2CkBS81UYEg3VCJs4MC6HE3Bw==, tarball: file:projects/arm-edgezones.tgz} name: '@rush-temp/arm-edgezones' version: 0.0.0 dependencies: @@ -15128,7 +15150,7 @@ packages: dev: false file:projects/arm-education.tgz: - resolution: {integrity: sha512-x6BSagYZf8VqOMvVwS2MCGtyhVMapl42fkbhFnOZ3QWsD0wzV8erSQ8Yc+xkuZJ2YomexmEaWbimbNCHcyNGrA==, tarball: file:projects/arm-education.tgz} + resolution: {integrity: sha512-6s1hwNP3POhgx1UP1s5nCcMk9lCYjVLKaZq96w+AHz3a4CUSAMnrAWepnfqSHXOyzY8JGfUSsVIJ0QlnCbLHaA==, tarball: file:projects/arm-education.tgz} name: '@rush-temp/arm-education' version: 0.0.0 dependencies: @@ -15156,7 +15178,7 @@ packages: dev: false file:projects/arm-elastic.tgz: - resolution: {integrity: sha512-PSzS1KszY3iCaTiQ8PdeNs1dmiUfcvVfUYaOxivul9DmZGa7Fzn7N1w6PXjBcwmK9HhAPa4iFsrCJB/L58IsJQ==, tarball: file:projects/arm-elastic.tgz} + resolution: {integrity: sha512-2FKz7gVut3EymfgeZeq6x+sZtiOjZbQIv6ei1YmBfQ+8GObnZvyNY9l7i8DcrLlRUm/c3XpAbnfZWSXjMK4tJA==, tarball: file:projects/arm-elastic.tgz} name: '@rush-temp/arm-elastic' version: 0.0.0 dependencies: @@ -15186,7 +15208,7 @@ packages: dev: false file:projects/arm-elasticsan.tgz: - resolution: {integrity: sha512-4MMnTd/nW32J1g50ddHY5IdpRQf+v/I3sNjzV3Ba66iuJ0NGEnPp7bAxYU48fxowbaRUQxICJzV2bOSsfAVRmA==, tarball: file:projects/arm-elasticsan.tgz} + resolution: {integrity: sha512-Dq0oe3mUlmgcZODwRVKN6dmH57NPB2jSsbeoFVORgq7fUSpvOatHlJ6rlD7bARKiPY1z0sSKw4zT1FGP6XgsBA==, tarball: file:projects/arm-elasticsan.tgz} name: '@rush-temp/arm-elasticsan' version: 0.0.0 dependencies: @@ -15216,7 +15238,7 @@ packages: dev: false file:projects/arm-eventgrid.tgz: - resolution: {integrity: sha512-ffWmdtpwL+nEAZ2QP/XA8o3d6Aj4hV4mXQwBVcc+mmUTooGQaKDeRmtM22yHvgsue1adeRspsiEro1C72uxRfw==, tarball: file:projects/arm-eventgrid.tgz} + resolution: {integrity: sha512-4YK9IynwJXon9hJnbaeH4il+Yq2RjMdtBTxhzG52gkxmrNU8Lmyhf1gg2GYo+7sGjzweXu+bmoG7aYnQEDRuIg==, tarball: file:projects/arm-eventgrid.tgz} name: '@rush-temp/arm-eventgrid' version: 0.0.0 dependencies: @@ -15246,7 +15268,7 @@ packages: dev: false file:projects/arm-eventhub-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-gKfci7TRJeVa2haPo9T+5O0bCejD+6KISf9tm2zK73w9UdnQ5HjzNoeMK8pULQRRtW1DBIYdIGhpD0wQcq0i2A==, tarball: file:projects/arm-eventhub-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-q4eSlXelnKFJrtia8RshRPcr7JmE2I1M0l3XJS9CVDgHcq6c9xtMY+8naxW94MK2C4eT2gXc5ahteYeegSBUrA==, 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: @@ -15276,7 +15298,7 @@ packages: dev: false file:projects/arm-eventhub.tgz: - resolution: {integrity: sha512-lfSe6nQ7fPzbc+L69MCp4abRS9+vrcP1wgn5rtTcwpOAPTk1LmK6+3WOalQcpLwkbXkU/XKce1h0nKfh0iJJBg==, tarball: file:projects/arm-eventhub.tgz} + resolution: {integrity: sha512-NK8mDnu6HDMOlxun9X23Jc7OciDr5lidWZb/j0XdcRVaOWKdj4KHU6Pm6oIHAHdRQkJ320EqyErR1zd3uWiElw==, tarball: file:projects/arm-eventhub.tgz} name: '@rush-temp/arm-eventhub' version: 0.0.0 dependencies: @@ -15307,7 +15329,7 @@ packages: dev: false file:projects/arm-extendedlocation.tgz: - resolution: {integrity: sha512-euvVbog11FaHgYwp9+Y1UGHlbQ+MCA/UWJF5rutfFaIGSvwXbinRDjCID22NBEbbLvgynb4M+P1tBMldTgaf/g==, tarball: file:projects/arm-extendedlocation.tgz} + resolution: {integrity: sha512-/1oB6Ijpuu0oWvGgxE1qz+FvBRcGQorcbD9w9rnBoph/sHRVSc/ri43q/dZrUHd/0UiyiEtg8r37cEPdld4/vQ==, tarball: file:projects/arm-extendedlocation.tgz} name: '@rush-temp/arm-extendedlocation' version: 0.0.0 dependencies: @@ -15337,7 +15359,7 @@ packages: dev: false file:projects/arm-features.tgz: - resolution: {integrity: sha512-JC146AMN2BHFjNnvPP9OFtoz6VpyauZ8Xy1HzlFBtKvRWBbzr2T/ZyQM6tZD6VQqyly61yboTKL+ii7NgHoHzQ==, tarball: file:projects/arm-features.tgz} + resolution: {integrity: sha512-MGfIHL8E9i2mEsSj2AttXklT/ZhCUZ19LiTlRCilTPfp+Nv+pTncUpKdKRjD+TpDDBKwtt8g1tNbCzqNdUkXMA==, tarball: file:projects/arm-features.tgz} name: '@rush-temp/arm-features' version: 0.0.0 dependencies: @@ -15364,7 +15386,7 @@ packages: dev: false file:projects/arm-fluidrelay.tgz: - resolution: {integrity: sha512-ZegVJMtbz7wanxAKu2VuPOtxsN/8mUauieYW4EdHg5MkbWM3p9XHjjYeXLfZoawMVq/oJmVJet/E31sYu8/L1A==, tarball: file:projects/arm-fluidrelay.tgz} + resolution: {integrity: sha512-rXvs39Ibzkg1ZtOgo2uT9dmUDbx6VsRvngh/R2T0+M3PsV7JAOlVcMFkcaoREHabuqVmhb6kPtByc/4PmLLz0g==, tarball: file:projects/arm-fluidrelay.tgz} name: '@rush-temp/arm-fluidrelay' version: 0.0.0 dependencies: @@ -15392,7 +15414,7 @@ packages: dev: false file:projects/arm-frontdoor.tgz: - resolution: {integrity: sha512-DaJ5QSS7iZIxm8z8+bbSnYZQ55JuGoxN+2AIN/g9WLZs1Za1qIb5CyR/VxtGws/dfl4QA+/CNPmDY+8rTdGjTg==, tarball: file:projects/arm-frontdoor.tgz} + resolution: {integrity: sha512-Q+PsEBRiSD+MP92WrQ+lPLwf/EJ7xN1+s4jDikUujkb7rBZhjKoK2fpmipU0itBTSsk0w9GoGUdI06ou99zriA==, tarball: file:projects/arm-frontdoor.tgz} name: '@rush-temp/arm-frontdoor' version: 0.0.0 dependencies: @@ -15422,7 +15444,7 @@ packages: dev: false file:projects/arm-graphservices.tgz: - resolution: {integrity: sha512-5L9ydnPtfb1lsXMfxOBtubcmoFn18vOY9nFiutgQtRAqCidqtu1TBgqwr4W7WyM5yVHfSoqFibGn0W6K5DtDeQ==, tarball: file:projects/arm-graphservices.tgz} + resolution: {integrity: sha512-x9vMJoX3X95EfiVgv4Md4UtITfKsSlGx8njAAXOK7jJG6H1LT8q3TGGU9yr+revgdbM+tOyd7LPHSpYHloUz7w==, tarball: file:projects/arm-graphservices.tgz} name: '@rush-temp/arm-graphservices' version: 0.0.0 dependencies: @@ -15452,7 +15474,7 @@ packages: dev: false file:projects/arm-guestconfiguration.tgz: - resolution: {integrity: sha512-pwV6vn0IbJGXQuS/Oo6m1DkcH71ClCzZQM47ZzhZxLWX3JPq5ex+gDjPV6/jvwB3JlP2qGn1DDC4tw+4b4ARLg==, tarball: file:projects/arm-guestconfiguration.tgz} + resolution: {integrity: sha512-KL9d6HUsLs9MzQ/PQjuhRgFRGH8rPhZOiFEZ5jZoTZpRU1rMtHN+NzOcc46B2NG9XY6eaCeeLrWk2g3Gh9F1sw==, tarball: file:projects/arm-guestconfiguration.tgz} name: '@rush-temp/arm-guestconfiguration' version: 0.0.0 dependencies: @@ -15481,7 +15503,7 @@ packages: dev: false file:projects/arm-hanaonazure.tgz: - resolution: {integrity: sha512-eLmdDQCUnf2uwgVHYszlH5lHQ78p/m7JuCHEoPPTJCjcfQzMiTLJeIbMxJ+ihO/snTeFSXM1rWqk6vit2XD1sg==, tarball: file:projects/arm-hanaonazure.tgz} + resolution: {integrity: sha512-wZxajkX2ZA29UZ0z8VWxJ1lRVXCQ7tU8EwPt9C65tzBGzTcPmynTYrOPxf9jvHhEZ3v/PsfFRRw3hMseznWArw==, tarball: file:projects/arm-hanaonazure.tgz} name: '@rush-temp/arm-hanaonazure' version: 0.0.0 dependencies: @@ -15510,7 +15532,7 @@ packages: dev: false file:projects/arm-hardwaresecuritymodules.tgz: - resolution: {integrity: sha512-SxVTbdWxK7Fucy/5J028MoteqC3gQcJBGV7NN16+BdhQeW3C67ESFXy7E3zapWfZq8qBqBjw+M4r4hDPA1sirw==, tarball: file:projects/arm-hardwaresecuritymodules.tgz} + resolution: {integrity: sha512-hBnfSYvy4U1rdxPIrXrbE3V/loLfiq0nz0D0cvuP9hDdCgwpm4uBE0z4Q4oAzPG/JIZlZGhpCBqbzZ6Qk1gMpg==, tarball: file:projects/arm-hardwaresecuritymodules.tgz} name: '@rush-temp/arm-hardwaresecuritymodules' version: 0.0.0 dependencies: @@ -15540,7 +15562,7 @@ packages: dev: false file:projects/arm-hdinsight.tgz: - resolution: {integrity: sha512-A4Q0/EIreGCf/t+J6DolGF8wsuBun8IeEpiWzRSKp8fE/okeb/F/Cq+6rJjZmAXopoSaXUAbn+Nqu/z+yOW+wg==, tarball: file:projects/arm-hdinsight.tgz} + resolution: {integrity: sha512-eiFm7PPic2gShSdrXChLKrHzziw3RjxQ+cs7C3VChzB3M8ug+f8VOLNrUpc9lb9/AMjMxi6PjDQXAxKuj6M29A==, tarball: file:projects/arm-hdinsight.tgz} name: '@rush-temp/arm-hdinsight' version: 0.0.0 dependencies: @@ -15570,7 +15592,7 @@ packages: dev: false file:projects/arm-hdinsightcontainers.tgz: - resolution: {integrity: sha512-bb9vJOVtfI7fzJLpOWd0mvmNqkYBZDF7S1JV5BG0BWGUOXg8KddZ/D3PMY9muhnfotX8Lwrk+LJyPiI5sjifwg==, tarball: file:projects/arm-hdinsightcontainers.tgz} + resolution: {integrity: sha512-hm1Tc36raFlmTzX7tpUJGZdiAn+FK1f0Nr7Vzoy2D8b+3lXIZ+6zEinSI8nXRq/GWlGNqSpIAN4FAyOVbG+qQA==, tarball: file:projects/arm-hdinsightcontainers.tgz} name: '@rush-temp/arm-hdinsightcontainers' version: 0.0.0 dependencies: @@ -15600,7 +15622,7 @@ packages: dev: false file:projects/arm-healthbot.tgz: - resolution: {integrity: sha512-djZlyZzHlBCFIYcJ3NySW3fo+BlVJg4cjZoEbaw2sdiikwOeYL2t2lVgeEmpvIN8zT7PKHgt/BAvvRYsV0KCyQ==, tarball: file:projects/arm-healthbot.tgz} + resolution: {integrity: sha512-Un9Xwt4cbaqeYJ8q7I2VjYPsPPpRDA+F4xd5buuLouAZ0ClO8Gaxbl4lurygVW7NjgUICSFyE92q5SDyFZ3AkA==, tarball: file:projects/arm-healthbot.tgz} name: '@rush-temp/arm-healthbot' version: 0.0.0 dependencies: @@ -15629,7 +15651,7 @@ packages: dev: false file:projects/arm-healthcareapis.tgz: - resolution: {integrity: sha512-H2TxLJcRhEfs+RFIQe+ffVdrxW6uDcjzfqz6F8avIlJlAhNTz5JuFowd7BLCnU99dJ+q+Aj8psZcINkIIPuYQA==, tarball: file:projects/arm-healthcareapis.tgz} + resolution: {integrity: sha512-6r25yGtz+tFpT29HNr2hsonsx/pZSyrbKyLa/QOuAf1PZwidLMkiKrJP5zDsbdlluRSe2tZMxgp7ZLb/9HwsDA==, tarball: file:projects/arm-healthcareapis.tgz} name: '@rush-temp/arm-healthcareapis' version: 0.0.0 dependencies: @@ -15659,7 +15681,7 @@ packages: dev: false file:projects/arm-healthdataaiservices.tgz: - resolution: {integrity: sha512-CF1NDRC0Si5iOWo1neCbCN6TlFoUDMIspbbEYrjZ5hIFY8CbPG8hwvDMy7rRBrvt396JGlJ4slwOobF728jMEQ==, tarball: file:projects/arm-healthdataaiservices.tgz} + resolution: {integrity: sha512-G1zldD0alfR8kMUj59ex3H7X+PSn16c7wcRzEYK2FRcMl+hIJslhcxym931WVCkecPCdMUD123PmFC1PuS7xRQ==, tarball: file:projects/arm-healthdataaiservices.tgz} name: '@rush-temp/arm-healthdataaiservices' version: 0.0.0 dependencies: @@ -15698,7 +15720,7 @@ packages: dev: false file:projects/arm-hybridcompute.tgz: - resolution: {integrity: sha512-wVSrm4aoTJmUA1s14d3er3Gl9qTN+62er6kypTMV4tOc8+diDsA98xMlu0/GJFes8efUbc6QiJkymgo10+gDag==, tarball: file:projects/arm-hybridcompute.tgz} + resolution: {integrity: sha512-piHmNUXYyLYB3zYcjPVPoB2JlkIrf60nv+aGdOG/Uo5lqXDa4vjd2MY2yFITHVKZGDudVNZQPEWgi+27vwKzLg==, tarball: file:projects/arm-hybridcompute.tgz} name: '@rush-temp/arm-hybridcompute' version: 0.0.0 dependencies: @@ -15729,7 +15751,7 @@ packages: dev: false file:projects/arm-hybridconnectivity.tgz: - resolution: {integrity: sha512-J0NmmLjlF9UyHtazlLl3+2q5ql9QKOe32CwTYW4KyPC3GcHWQV9I+A+epI80pWsP2ZRACngdcunGhXnR562pZg==, tarball: file:projects/arm-hybridconnectivity.tgz} + resolution: {integrity: sha512-1lBPG78GcJzp2UAt2MFD2eH614bbwxd5E+Mtrskcik1ud+X2afpPYCCEh+jpfY0RCQPlelzVeajjyIHVNYWBhg==, tarball: file:projects/arm-hybridconnectivity.tgz} name: '@rush-temp/arm-hybridconnectivity' version: 0.0.0 dependencies: @@ -15757,7 +15779,7 @@ packages: dev: false file:projects/arm-hybridcontainerservice.tgz: - resolution: {integrity: sha512-ht2gOs6v/de7bvKzQqGcn7F1QAL0Dc0kRWKXL21bamQkBZP3xK8mEoBIYab/bOJY2TfYD/GvrTamTsRnvow5Kg==, tarball: file:projects/arm-hybridcontainerservice.tgz} + resolution: {integrity: sha512-1W5YjPnicefzPEWvpWRyqwe+1D/ZhSH58N5GAFgvoBsjw81E04i/NJbVkLCKCOJ1w/ok6yrsj8Re53Sx/KXWHw==, tarball: file:projects/arm-hybridcontainerservice.tgz} name: '@rush-temp/arm-hybridcontainerservice' version: 0.0.0 dependencies: @@ -15787,7 +15809,7 @@ packages: dev: false file:projects/arm-hybridkubernetes.tgz: - resolution: {integrity: sha512-v7BI3tLh9LWioPyw1bi7cqIl6qtiFLnymo0AXZ5RP8UJoAK75tFBQv2SDUs8YMwzRnnfFMKeLrVGz9a2weQpgg==, tarball: file:projects/arm-hybridkubernetes.tgz} + resolution: {integrity: sha512-RvxwgLVmfXu54T/ctLrBUFnVTKi2bLIxsYyuXagrnsKwp46ftByNLhXFJ3cS5HD9Ks+wwoFhlVIxTxPFqtYQrQ==, tarball: file:projects/arm-hybridkubernetes.tgz} name: '@rush-temp/arm-hybridkubernetes' version: 0.0.0 dependencies: @@ -15816,7 +15838,7 @@ packages: dev: false file:projects/arm-hybridnetwork.tgz: - resolution: {integrity: sha512-si3XV4/fqNlcVL4/y6Vca84ATqwLbyKfyPmHTCErA9xCE/aH3bWXwFjsL8fuJgNgUQQy1QIjO8wJMgJIV+O+ZQ==, tarball: file:projects/arm-hybridnetwork.tgz} + resolution: {integrity: sha512-ITLTEI5ghuWfP13b+ABHsD1F4njTNICDQArXeslsT49uH+KEN83aHn7Comw6vL8/27yS6hpUUDX2sQVfUvUktA==, tarball: file:projects/arm-hybridnetwork.tgz} name: '@rush-temp/arm-hybridnetwork' version: 0.0.0 dependencies: @@ -15846,7 +15868,7 @@ packages: dev: false file:projects/arm-imagebuilder.tgz: - resolution: {integrity: sha512-islzKXCverh55F/8bwNWnF4ocA6k4XZlCbinA4+4XRneUPoac7nP5XKWj3pfRAPS1p0R9hJwTLHPsAIvwLTxbg==, tarball: file:projects/arm-imagebuilder.tgz} + resolution: {integrity: sha512-pQoZ4wc8j0MjhyKzsQLomLQ1Opl4DtzihWSX2ZdbvXJkS7KYRE6YH1Vh/M1tfYgOeS6XLQuiB0E+0BXhspx4ww==, tarball: file:projects/arm-imagebuilder.tgz} name: '@rush-temp/arm-imagebuilder' version: 0.0.0 dependencies: @@ -15878,7 +15900,7 @@ packages: dev: false file:projects/arm-informaticadatamanagement.tgz: - resolution: {integrity: sha512-0LiOfzmcuztZNeC0aPA8aSrLQwpWuI2m9mtRslQFvuXtIio4lo8KCmWmn52V8Dm4b+6iBV92WnyDpdv6F1Vuew==, tarball: file:projects/arm-informaticadatamanagement.tgz} + resolution: {integrity: sha512-4ZoBX8l7MMUojMK0UPDFYD+WekFgLiDDH1gXAxCxbiQK7DsI6slk4e1jA92nZVKhcOeKjQlvxUazv3npWw/7aA==, tarball: file:projects/arm-informaticadatamanagement.tgz} name: '@rush-temp/arm-informaticadatamanagement' version: 0.0.0 dependencies: @@ -15909,7 +15931,7 @@ packages: dev: false file:projects/arm-iotcentral.tgz: - resolution: {integrity: sha512-/Qvnnq9+sxa4zdmQN5Eo/wvtOQWMQ79sMuhcLAJYDUVRPqO/EXu+0y26GmEHIKA5WVwk8X2flk994h41h1gs3w==, tarball: file:projects/arm-iotcentral.tgz} + resolution: {integrity: sha512-fosSiBVeZQ5JB05Itdf3WvfnHR/TefNuVz8d6g5sDnKl7E7T6T82s+k0YD5G/kRenAIBY5kmt4ZlrQxEBaAgJg==, tarball: file:projects/arm-iotcentral.tgz} name: '@rush-temp/arm-iotcentral' version: 0.0.0 dependencies: @@ -15938,7 +15960,7 @@ packages: dev: false file:projects/arm-iotfirmwaredefense.tgz: - resolution: {integrity: sha512-doiYgE57iB0TicEeHoMrq630z4WKYXK/ukWmVEHor/WRimO35ibH9I+KyJxLTdcEifSNWnz2ZeUTnijWuZKmtA==, tarball: file:projects/arm-iotfirmwaredefense.tgz} + resolution: {integrity: sha512-TfKu8JeMfAq72ebbUwKck2nTo2SWtoOQWh7jq07Hj8y9wLPslALsgA0qcq8Glp6Sn5tHNNMylFM2hJzizsoZAA==, tarball: file:projects/arm-iotfirmwaredefense.tgz} name: '@rush-temp/arm-iotfirmwaredefense' version: 0.0.0 dependencies: @@ -15966,7 +15988,7 @@ packages: dev: false file:projects/arm-iothub-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-7qxWlLzN8YRbVTvvVQZlGC/Q6FKSvg159gIppOmZCEWSGcuUyYEltBMei5YMdMcMBjVUz8cGEgboxtxQRk0UKw==, tarball: file:projects/arm-iothub-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-FcawHki0FZv8yC0S8k6sXEGB3nsU+tQNeGgX7B+vYqd7f3P3VgZN38c6NrUoh+OhhMf7ltR2Aowh34nKqVcqgg==, 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: @@ -15996,7 +16018,7 @@ packages: dev: false file:projects/arm-iothub.tgz: - resolution: {integrity: sha512-O/UxFqlG4xDI6fWlDg4tPSftTzbJyEQkiwzGOBxdA8CQRkJ3lRGc+AFnaP8h4J9tQYhjTmqQLnscuf/5x3HF6w==, tarball: file:projects/arm-iothub.tgz} + resolution: {integrity: sha512-6crX2NptM1qipMJXg/l8rBrmuQBmqWEtAaDPpZqJEeTkrlD5pLhku4lzWWqGTXWJHF+FxKhUwTnkA+t/IchOUw==, tarball: file:projects/arm-iothub.tgz} name: '@rush-temp/arm-iothub' version: 0.0.0 dependencies: @@ -16026,7 +16048,7 @@ packages: dev: false file:projects/arm-keyvault-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-bQrFhpP8CJJfhV/SLL2k9heS+qdcoJL1o8gBRCkLmsD0Gon6ydn9tlOADVmdCfjI5Yz54tZ7+6Abh2/ZedSsoA==, tarball: file:projects/arm-keyvault-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-OjdDNN+VYA9TfURM59pA9Obn9bnLeqPk/sEuOIx9w5J1McACr6yZ5yu9yi5bxUxLU0RHoHJ6Ni9SekY1RQmokg==, 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: @@ -16056,7 +16078,7 @@ packages: dev: false file:projects/arm-keyvault.tgz: - resolution: {integrity: sha512-d4SHaoFUpJ8ih0zU9UoXoyYctaT5i3Loy3CZbIyQzCIXGzfwLFWzL1e5H5n90oqZHTtyuYeIICJajnoY6/3MaQ==, tarball: file:projects/arm-keyvault.tgz} + resolution: {integrity: sha512-mAsdypSGZnV860kD/SzwQDh1oRZta3XsBNoodgaaboXIsy/IWLU5eyq52IpW8TKAikgn8+zuSdw5WNtlWMjzag==, tarball: file:projects/arm-keyvault.tgz} name: '@rush-temp/arm-keyvault' version: 0.0.0 dependencies: @@ -16086,7 +16108,7 @@ packages: dev: false file:projects/arm-kubernetesconfiguration.tgz: - resolution: {integrity: sha512-PeJIHi0FLgfPhWTxibDl9ERZsC2ab3ODUpudD+QNJrrfdRNWdV/hI1tFOTbmkkeszC1KOZnTL/Lnf1XP1heUGg==, tarball: file:projects/arm-kubernetesconfiguration.tgz} + resolution: {integrity: sha512-y3uDo/SkP9RO1w5oC8d4fTIK6sYoN2R8bDfoP+8iYO/UtZMWWYFqTP4uey7TrzvN24Q4zTtj0K7yGnlm4tzQ8w==, tarball: file:projects/arm-kubernetesconfiguration.tgz} name: '@rush-temp/arm-kubernetesconfiguration' version: 0.0.0 dependencies: @@ -16116,7 +16138,7 @@ packages: dev: false file:projects/arm-kusto.tgz: - resolution: {integrity: sha512-gqmPjiPvhj7qkkKamq+Oc+rKuEgiEX0WOJU1EV7v8McQ29mN4+9ijv0Zg27ny6Ak5PRs1OJkuajlrOE/a+FQcA==, tarball: file:projects/arm-kusto.tgz} + resolution: {integrity: sha512-1iLqzDmxcFYUWXhy+/4h2fBFd2zcflAIWO+l0oyAOFAdQ483TZhYnj9lZ6Rd3Bju+VJoqnRPFEaY3nsDARfUFQ==, tarball: file:projects/arm-kusto.tgz} name: '@rush-temp/arm-kusto' version: 0.0.0 dependencies: @@ -16146,7 +16168,7 @@ packages: dev: false file:projects/arm-labservices.tgz: - resolution: {integrity: sha512-s06WQJqFbyrJo5/Yx/tCqeTwOf7TSkXmR4yiVDLK+JMNo+jkJ0HIeZGsbs0HNUAHvc7bS46QB0YXqjk/DzeLpg==, tarball: file:projects/arm-labservices.tgz} + resolution: {integrity: sha512-XftGsqcYoMhDToF9DoN5u2nRV3n4po2YuQnK6Clmh9GhogTMjlZVgSDpo9m5BJXwNEuQ5aKCZ4lyJ/CpC/P+wg==, tarball: file:projects/arm-labservices.tgz} name: '@rush-temp/arm-labservices' version: 0.0.0 dependencies: @@ -16176,7 +16198,7 @@ packages: dev: false file:projects/arm-largeinstance.tgz: - resolution: {integrity: sha512-nxw49eTw7jgUG3juKHFKgTdCOdu3gclWovPnKmR8FVOQVV2e1cbG0kiqayVRbaky5LGJQufkqDG9Fjy/uUaE1Q==, tarball: file:projects/arm-largeinstance.tgz} + resolution: {integrity: sha512-CeP557neBJiOaz9VTIRAxvkAJZ3JSqzn/V7CbBbSfTzIRuE/7XtalUUC+Y8WMJ1ezCaCAxpbcdpFqxCBl7iQPA==, tarball: file:projects/arm-largeinstance.tgz} name: '@rush-temp/arm-largeinstance' version: 0.0.0 dependencies: @@ -16206,7 +16228,7 @@ packages: dev: false file:projects/arm-links.tgz: - resolution: {integrity: sha512-77W4N/QEPk1aUeJ0c7ZuvuEZoa8I2z35s1nsr/AE+vIYShd5nvvzkKpLZu8D9/jMueOUqcfIRMmkw6h5rjWLbA==, tarball: file:projects/arm-links.tgz} + resolution: {integrity: sha512-Y+DsaW/LpnG+5Qmc8a0VBSAdq+1su29A6BMyBHj+wMXpeZJ7HImBNBygbhIEcK1bmLkurFNofPkQHsCtNbPUPA==, tarball: file:projects/arm-links.tgz} name: '@rush-temp/arm-links' version: 0.0.0 dependencies: @@ -16233,7 +16255,7 @@ packages: dev: false file:projects/arm-loadtesting.tgz: - resolution: {integrity: sha512-Uys9CZWTv4+u4g3aPfxf1aeMp82W/tb7U9GKNWY1rMN7gBU/X1Yt3ypbjidVdBg6x6htCpeXMyIRM495PY4o4A==, tarball: file:projects/arm-loadtesting.tgz} + resolution: {integrity: sha512-bZ3xgB1ce48ivsojJyX2Z/bDBrbE3MBrL3b25iT2rL99ch8KfMq+TEag9qmK9PI00d2Vt2OyuHUYF2Xgd+1AoQ==, tarball: file:projects/arm-loadtesting.tgz} name: '@rush-temp/arm-loadtesting' version: 0.0.0 dependencies: @@ -16262,7 +16284,7 @@ packages: dev: false file:projects/arm-locks-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-397ngzkRIA8R4IHxVGDc64H7JorWl0dxb3LmppqSzzZZnu1dHONNdMOQ1qZ+V0LTQ/JHc+ktEAWQw4ri+YsHOA==, tarball: file:projects/arm-locks-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-teHSP9EbN1mfRR/lCbVqY0oRrIe0TmQSjIsvIPPY5vWhKRLqPZG7w3L28dBGVGbVl5xym1aFNdNA3UUqqM8K2Q==, 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: @@ -16290,7 +16312,7 @@ packages: dev: false file:projects/arm-locks.tgz: - resolution: {integrity: sha512-kCLLnPHTxyoHMXmAf3crhdzZU8fknOW6KzzhmY3pneYJeaYAaqEGe1G4O8fm0m3vvovZr0P0BRnnHXDkcKz90g==, tarball: file:projects/arm-locks.tgz} + resolution: {integrity: sha512-fjx7WwF1FZXvueJlmzW3YvUDLst/opNODcZ5Ynxg0yb6NdT5drCw/UqHI95meMkw3QSHSK9maPVpBNXlTJQ9LQ==, tarball: file:projects/arm-locks.tgz} name: '@rush-temp/arm-locks' version: 0.0.0 dependencies: @@ -16317,7 +16339,7 @@ packages: dev: false file:projects/arm-logic.tgz: - resolution: {integrity: sha512-ZtKW6fgn/4Pdgx8/Ja80iNjOAAw7KjsBSntt+z0AsPh48ZeKaYpsVUShezXGrtVKu+2ys0xWwtzfxvj8+yI6yQ==, tarball: file:projects/arm-logic.tgz} + resolution: {integrity: sha512-LIvScE9B4gqqPZNMMN3U31LaM0tx1pe5uNJQvMluH4GHsHwDcDas+Z9raikvHFwJN7KAyatyOSk3yaGSqeW40Q==, tarball: file:projects/arm-logic.tgz} name: '@rush-temp/arm-logic' version: 0.0.0 dependencies: @@ -16347,7 +16369,7 @@ packages: dev: false file:projects/arm-machinelearning.tgz: - resolution: {integrity: sha512-ivBIVTHfvuUmyylYEA5RXHcHqvRckkFNe9SE3elSZ4DT6E2r8k2tjjMTQgviOH/CCbgqKirUnXEJzsOmnHhLuA==, tarball: file:projects/arm-machinelearning.tgz} + resolution: {integrity: sha512-M5XIsO3iqa2ZE6Oz6L77iser+TQJsVUda306A42AVPTONARb8kZryDEuw1wIRW/UJ3O9nxEErWaZlj4KoT6EMA==, tarball: file:projects/arm-machinelearning.tgz} name: '@rush-temp/arm-machinelearning' version: 0.0.0 dependencies: @@ -16378,7 +16400,7 @@ packages: dev: false file:projects/arm-machinelearningcompute.tgz: - resolution: {integrity: sha512-Pzj6H7bmxBh5MVaE6b/ZC/8i6EfJm1ORXahqbbDa/McjzbfbktzRNRa9n5+TzomSou8EdoQRmjekG3+OPQbE9w==, tarball: file:projects/arm-machinelearningcompute.tgz} + resolution: {integrity: sha512-BYuhNPStN7SUpITR06rb8+1r1DaTJzxNDhrK/r+KM3RaIg7AUl0j80dgpFGS3cIXcLI05h+NSoK4cp/ap9vtqA==, tarball: file:projects/arm-machinelearningcompute.tgz} name: '@rush-temp/arm-machinelearningcompute' version: 0.0.0 dependencies: @@ -16407,7 +16429,7 @@ packages: dev: false file:projects/arm-machinelearningexperimentation.tgz: - resolution: {integrity: sha512-kAt9wUtbr/YDNSvhJXeFeMlRP/TQF6Rw3yXI+wIlQ9gbZMKUp4v9omKBK5wxjsMvM7HP5080HdKGjIst+OFNdA==, tarball: file:projects/arm-machinelearningexperimentation.tgz} + resolution: {integrity: sha512-SeKlFZD0c/o7e2wddKf9hrorOq6N6BnYj5AuDYUbJU1dXCKxm58yFK7GsSzaD6jgKiXHYJDs4YPSBErX6hGIfw==, tarball: file:projects/arm-machinelearningexperimentation.tgz} name: '@rush-temp/arm-machinelearningexperimentation' version: 0.0.0 dependencies: @@ -16435,7 +16457,7 @@ packages: dev: false file:projects/arm-maintenance.tgz: - resolution: {integrity: sha512-ORZ91RzlksgOwd86ITBlZPukgCaoHDS3mCy3GrhMlQBQedaM6gWxeb4jXKhuaBwB7FwZ37fXs0geZ0IfZdTiSA==, tarball: file:projects/arm-maintenance.tgz} + resolution: {integrity: sha512-P1/U3MpI2dKKpUJtvmJw6ooV3RbZO5E8HbaLBTWuX4dtfJn0SmXeQCUkNsjLh3F9bk/OzBzW4380xswaeexeHw==, tarball: file:projects/arm-maintenance.tgz} name: '@rush-temp/arm-maintenance' version: 0.0.0 dependencies: @@ -16464,7 +16486,7 @@ packages: dev: false file:projects/arm-managedapplications.tgz: - resolution: {integrity: sha512-Tgx2JI0Um66nz+Qvvf5IcIrFqK7m1UP2NrILFqiBnx2YzFdVlYqhkjnnpheYHSfWeFdwNEmmZkpgX9EiS62f1g==, tarball: file:projects/arm-managedapplications.tgz} + resolution: {integrity: sha512-CPa8cqojz6HZnY6P/sSYVlHzP91NNQe5BdDJ/CEqshUifWnZRdf/jEu4eZstZG+96v/2iTud0Ks0pibP1tC6lQ==, tarball: file:projects/arm-managedapplications.tgz} name: '@rush-temp/arm-managedapplications' version: 0.0.0 dependencies: @@ -16494,7 +16516,7 @@ packages: dev: false file:projects/arm-managednetworkfabric.tgz: - resolution: {integrity: sha512-Oa4tib1P3/Vl/5Zxcehhw/gZ8R9qHX5bqIX6AVlnMPBIE7dh4s1V3nARVhdvOoIW2T71qKkpS3sbrJprbeSIyw==, tarball: file:projects/arm-managednetworkfabric.tgz} + resolution: {integrity: sha512-HYuSPX8VhZnIx7CSh3UZrFjcf5gZ+BM/HSH3qyFXf1hltwAjsL9ybmVbVOQwkESVQNUiYQozkla9c1qUZYzcew==, tarball: file:projects/arm-managednetworkfabric.tgz} name: '@rush-temp/arm-managednetworkfabric' version: 0.0.0 dependencies: @@ -16524,7 +16546,7 @@ packages: dev: false file:projects/arm-managementgroups.tgz: - resolution: {integrity: sha512-KSBCI9eHOxUjjQmeQe1fPMySAX2Q3c1lzZQyOUGEYIMBOmG863BmvLzYjspeNU9wAH4Thg+067BmCrJlNVeELw==, tarball: file:projects/arm-managementgroups.tgz} + resolution: {integrity: sha512-9ZS5tvMtUp97EmDzp7I1P9HTS+UcRTomcebl8U1CZ9hsZFMmBs1K7x+CVStcqiDqBQPjUJlEbgXxxnR7UwdIqQ==, tarball: file:projects/arm-managementgroups.tgz} name: '@rush-temp/arm-managementgroups' version: 0.0.0 dependencies: @@ -16553,7 +16575,7 @@ packages: dev: false file:projects/arm-managementpartner.tgz: - resolution: {integrity: sha512-SYCt5jbdsnqn0cA06a3veCjG3KYMddxT8fxDxcNDXiul1FFW17hz3eowj9XU4nUgw6vaZsQLqKe2lr0C+1U0yw==, tarball: file:projects/arm-managementpartner.tgz} + resolution: {integrity: sha512-ekusxRpU6OgcziAqKtSlPiwAsUg6zvFBnT9e1LMPvhMffKamJVCPrRxL20cJsVBEjltmEJ4Hb63mVOYL38QImA==, tarball: file:projects/arm-managementpartner.tgz} name: '@rush-temp/arm-managementpartner' version: 0.0.0 dependencies: @@ -16581,7 +16603,7 @@ packages: dev: false file:projects/arm-maps.tgz: - resolution: {integrity: sha512-E8odHyxulJUFIBcJrZtdg0n31xTKBxIRMUb8NSWY1ltWfs7xK4Pe9jBLxjO3rcKNd/9ba6yg2ySlw/IPnaOxpQ==, tarball: file:projects/arm-maps.tgz} + resolution: {integrity: sha512-xOZK6H1/fQ4HTN1iBaKgnybbyMYAw1leEjvXZTlELyh7LGzI0aDLR2MUy5c9p+nFRRJ6JrHtF1H2VEaTYPbHYA==, tarball: file:projects/arm-maps.tgz} name: '@rush-temp/arm-maps' version: 0.0.0 dependencies: @@ -16609,7 +16631,7 @@ packages: dev: false file:projects/arm-mariadb.tgz: - resolution: {integrity: sha512-Ayr9QSTKJcl22+VC4z5L8sF3IZ3KWqdg4QfzTj9Jcw+9rkmeAljuhffChhFO0fHWZVCSKTc+vg0ukszMsM4LAA==, tarball: file:projects/arm-mariadb.tgz} + resolution: {integrity: sha512-lM0jUZoGL6lmrXuBaBqC32xrLXNNVhQK4rDSDrr5zCRiLcTOhx/Izq1UeH3MeZ6GktHpb44YxWsJ5Mwwy86yxw==, tarball: file:projects/arm-mariadb.tgz} name: '@rush-temp/arm-mariadb' version: 0.0.0 dependencies: @@ -16638,7 +16660,7 @@ packages: dev: false file:projects/arm-marketplaceordering.tgz: - resolution: {integrity: sha512-RCdmOBGZd+KCgKSzERWTS+o6ejsXkFrWgEDSn2+gLMKnhQAkEju8NW3HhJK3mRcL4+Fk71hBvARJZ3tERX9YKw==, tarball: file:projects/arm-marketplaceordering.tgz} + resolution: {integrity: sha512-llY6+RlVFzuBcEDYRJcepuvqt5pGbwgRO3miV++wjrOy7STHBqbNkpzpKt6YzmkD9OYQ6lOZSLGbuc5kpp/HSw==, tarball: file:projects/arm-marketplaceordering.tgz} name: '@rush-temp/arm-marketplaceordering' version: 0.0.0 dependencies: @@ -16666,7 +16688,7 @@ packages: dev: false file:projects/arm-mediaservices.tgz: - resolution: {integrity: sha512-JXngI++KGqABQ9KdSUTHDUofYRqFis84zld3zXaM0NhYOGzD/VQlt/nna37GeUxPCSzSwGu4wEQCZJmxSOFPcQ==, tarball: file:projects/arm-mediaservices.tgz} + resolution: {integrity: sha512-sbg58adT6WrntwJOrnTm/YB6Hw7uP7qFxoOYpRqTMNTj5Eju72OxjI8xTyLFXGGwmEbePB3Xfcx33nWfLo0wmw==, tarball: file:projects/arm-mediaservices.tgz} name: '@rush-temp/arm-mediaservices' version: 0.0.0 dependencies: @@ -16696,7 +16718,7 @@ packages: dev: false file:projects/arm-migrate.tgz: - resolution: {integrity: sha512-D2ziVjUauGJhs0mOugbCt0RaKbARoa/MzwaS3JMyUipuBjW8aP7NYTT5Xxv22L90cp8CS0/7lXeRTC+l0SHOtw==, tarball: file:projects/arm-migrate.tgz} + resolution: {integrity: sha512-kQsavrqMgvUmMmLVn1hB0k+Tv4JYGbtdu0StZP1G41cAavGEIPoN8gjo80Z+qlA5EoKZMTtsLa9pbYuSX5nG2w==, tarball: file:projects/arm-migrate.tgz} name: '@rush-temp/arm-migrate' version: 0.0.0 dependencies: @@ -16724,7 +16746,7 @@ packages: dev: false file:projects/arm-migrationdiscoverysap.tgz: - resolution: {integrity: sha512-/P6SYy2B34+g5i6qwjfh93l82yec2/Lggksin90VUk2Fk+XjOTI0bin66U5lGTK5NtKCFgMiK7qqfVwViXaDgQ==, tarball: file:projects/arm-migrationdiscoverysap.tgz} + resolution: {integrity: sha512-MFas9Xa5dhHjq09P9iuwEQJYJb1Fhad2QPY+C+o9ZmzrEeC0Npn//8gMvGWBFRS/3bKIM4IzDL8mqgQh9TieJA==, tarball: file:projects/arm-migrationdiscoverysap.tgz} name: '@rush-temp/arm-migrationdiscoverysap' version: 0.0.0 dependencies: @@ -16754,7 +16776,7 @@ packages: dev: false file:projects/arm-mixedreality.tgz: - resolution: {integrity: sha512-KIrpFbQr38stzzEaqXBeN2Oc/bn18FJ3FN/+dfyNTvA7uYfMbdjOBkEyNK3TuRV1N8HnECGkKtFEuXKMKAKJLw==, tarball: file:projects/arm-mixedreality.tgz} + resolution: {integrity: sha512-zJLTxA4/fqv6xj/LRPpeFgKxVT2qXYd3sKaDjziIxXaKZZFhxHfkVnda42B4Gs1NciT/vhfCMOW8m1+SCjqvdQ==, tarball: file:projects/arm-mixedreality.tgz} name: '@rush-temp/arm-mixedreality' version: 0.0.0 dependencies: @@ -16781,7 +16803,7 @@ packages: dev: false file:projects/arm-mobilenetwork.tgz: - resolution: {integrity: sha512-r5bB6QxOf0c+TNAEUyfVuu+lFYCsHmAIa4Jx9KyoUcJOFj07VzYzl3hn0WAA35iQznHwfvuEzQGCEXwlLiBxgg==, tarball: file:projects/arm-mobilenetwork.tgz} + resolution: {integrity: sha512-N41+/v5rZblZCQA7UILLXSZKe8Mf2H9zoCe8Lr+CoisBaD7CMqv+LXnt3HKAa4Gs//sLUD5jAl3D/7abg0TImw==, tarball: file:projects/arm-mobilenetwork.tgz} name: '@rush-temp/arm-mobilenetwork' version: 0.0.0 dependencies: @@ -16812,7 +16834,7 @@ packages: dev: false file:projects/arm-mongocluster.tgz: - resolution: {integrity: sha512-raFfgPs1Hu3wBb7VpV9CK2wHbzMDbwLT4QMo6MaQb+CjRWwNZKZPnRNYJn9apHdn2+cop3f3AZ2XtgcP6ACnGA==, tarball: file:projects/arm-mongocluster.tgz} + resolution: {integrity: sha512-ax+gaiEayEpP3OYAQNpTSDxMe3RfgZ71Q+9sY0nH7d0uadLHgbkTVDa2omSG7C7KqYx/E1JbObxiHf/K0cE5hQ==, tarball: file:projects/arm-mongocluster.tgz} name: '@rush-temp/arm-mongocluster' version: 0.0.0 dependencies: @@ -16851,7 +16873,7 @@ packages: dev: false file:projects/arm-monitor-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-vqVU8FcJYyIkgypFpf97wUK6SVVl0LMYkmREj0Q7RuwXTSWxtowVzE2uT8Rd3IP0lxnlOcMsLDuVDFpOOYeo4g==, tarball: file:projects/arm-monitor-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-iIVKSMObhPtllgldBh5d9PvGgh+4/0POUj8UdtW1VsK6bUAx+UtzTjsv2FjIMZ/0nuKBA0NQ678rKS5dppppbw==, 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: @@ -16879,7 +16901,7 @@ packages: dev: false file:projects/arm-monitor.tgz: - resolution: {integrity: sha512-iupFHZAXQ0A7LWOq0XZnS9HZiUXCm+vlkkmkv2q45NG9p0mC0VZKRjy/WUHw8b/M5S737+v43wNfFmCuSDb3pA==, tarball: file:projects/arm-monitor.tgz} + resolution: {integrity: sha512-K+9G34mEgOxgIoTZLVRz12Rde0+aAM0bJXmZV+Mz1rruwrsNjwMk6oh3vwtguLLhts+BN91pJ9YxkEk6GtcYyA==, tarball: file:projects/arm-monitor.tgz} name: '@rush-temp/arm-monitor' version: 0.0.0 dependencies: @@ -16909,7 +16931,7 @@ packages: dev: false file:projects/arm-msi.tgz: - resolution: {integrity: sha512-JEiQZ7JNjUaLblDWQ06Zj6R0sp1rzBJRL5nJLJzFi3TSeogLkGPWGKPH/kTQX1td8KR1xwTDlklW2VU0OjO0gw==, tarball: file:projects/arm-msi.tgz} + resolution: {integrity: sha512-Qvub62fkM9C9OM/EystDdNE7G7kcdCdW0omlH6KHr1ioCxeoHe7lQQT4ff2cqLFrOtQ6NYGRvZu6FkFWqolvDw==, tarball: file:projects/arm-msi.tgz} name: '@rush-temp/arm-msi' version: 0.0.0 dependencies: @@ -16937,7 +16959,7 @@ packages: dev: false file:projects/arm-mysql-flexible.tgz: - resolution: {integrity: sha512-gqfDjeftl6w5p10xBkccxb5JN3Z/GQKuwkMvK5lxSPLe7ItvCwV5lStvEN/k5SN0fF4qAxLZAdVgQy7l2MYHLg==, tarball: file:projects/arm-mysql-flexible.tgz} + resolution: {integrity: sha512-i2areQQUXO67Rc3EQUFcT7YS5oY8QqV1nh6mgUDbB4ELUwuacl3n419A2uW3gShCuEX6ZZoAzlC3CpGBicbvWw==, tarball: file:projects/arm-mysql-flexible.tgz} name: '@rush-temp/arm-mysql-flexible' version: 0.0.0 dependencies: @@ -16968,7 +16990,7 @@ packages: dev: false file:projects/arm-mysql.tgz: - resolution: {integrity: sha512-eWALfUMvA2FVHte+eYMBIa6JCB7Z7U97VO8/zz9Y8sP7okTCOloFsvMa4tTZTnHG/KuEFHq3zQpJ5jnSVmrE/Q==, tarball: file:projects/arm-mysql.tgz} + resolution: {integrity: sha512-BemZE1rhwi7g4Q7R+MV8HJdlq6uvPYmnFNGQiIZyOvMrlw+TB8sAcXWHzMDbTLU+hQ1doDG8XDjG9STHPr+yZg==, tarball: file:projects/arm-mysql.tgz} name: '@rush-temp/arm-mysql' version: 0.0.0 dependencies: @@ -16997,7 +17019,7 @@ packages: dev: false file:projects/arm-netapp.tgz: - resolution: {integrity: sha512-IEGA8a8gWKVvL693jv3yzXGR2X7G0nl+y1PfJ4jBEPtc9zdIiH1Pj0b7Bq19Z6xCOW/lJPPJ6G8fI9XKIneZJg==, tarball: file:projects/arm-netapp.tgz} + resolution: {integrity: sha512-JlcDJRWLklWlsRA6UjMRKuRVqhe/fZRGYsq0pZGbg/N8zMWI3BQH5q+2RmRKLbfuVXFlkbjsgIvKaY9fp05Kkg==, tarball: file:projects/arm-netapp.tgz} name: '@rush-temp/arm-netapp' version: 0.0.0 dependencies: @@ -17028,7 +17050,7 @@ packages: dev: false file:projects/arm-network-1.tgz: - resolution: {integrity: sha512-nGb7tSO54MnnBUXPNxfBIfWZUT/+wweKaCJaGDc9LocSoDT9hnmrAgFDQqcmOkzjwxWyvM8BsjB7zedacueRcg==, tarball: file:projects/arm-network-1.tgz} + resolution: {integrity: sha512-jzVX655DGAScA32dW/iYkMYwrm1AYinRpn1bkwNuX6gBHyPTH8Vp6GIu+68bsZeJDDgq2yySBfqUMmtWgYFl3Q==, tarball: file:projects/arm-network-1.tgz} name: '@rush-temp/arm-network-1' version: 0.0.0 dependencies: @@ -17059,7 +17081,7 @@ packages: dev: false file:projects/arm-network-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-bXcMkaPXXD1meUSCXIzVfGgmcsnMPTIdkPqmIRZ864UcMrF5lR2qk4xboSguyIIPeXTI6FjJlgcodFWfd1J/mA==, tarball: file:projects/arm-network-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-RxbOWeZwYYjUmH9aPP+pbuaNo6/wE3nAGR9A4IlAn12O8e/DEoL/GHD0QDQXCUXBxU3KpEwmqVxmyuCHUw+b3w==, 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: @@ -17089,7 +17111,7 @@ packages: dev: false file:projects/arm-network.tgz: - resolution: {integrity: sha512-d7/m+q1Ww3mt/hvDZ5Pzgvp0kP3XhQAd2mQQOYH0BZTJHHkwWbTqUUiOJ493rg3xKRzRWpPPPgoZVLWl00s9gw==, tarball: file:projects/arm-network.tgz} + resolution: {integrity: sha512-BwWptmMb8fZVh/LtwjHxY6bdyrwEH3fAO1GXX1m2FLA+zgwtvV7Ubqcv4OYHnuDyNo+SmShXS7KUUPOTPeBgqQ==, tarball: file:projects/arm-network.tgz} name: '@rush-temp/arm-network' version: 0.0.0 dependencies: @@ -17135,7 +17157,7 @@ packages: dev: false file:projects/arm-networkanalytics.tgz: - resolution: {integrity: sha512-UPRUpiaEKXGW7S8eAmOKTKtPfYweSbDteJndujiMXe7Ykd9Q65OsbG5kRL5xVPLFW92nrdxCf98wskCfF7Ed0Q==, tarball: file:projects/arm-networkanalytics.tgz} + resolution: {integrity: sha512-P7nNtXsPtppz3cJnxym2/tzb37SIY9bIym1dwyvK70GwcouC9i1hxzyWDo9nAp1GfZRj7A8iclRmaFCBrYblSw==, tarball: file:projects/arm-networkanalytics.tgz} name: '@rush-temp/arm-networkanalytics' version: 0.0.0 dependencies: @@ -17165,7 +17187,7 @@ packages: dev: false file:projects/arm-networkcloud.tgz: - resolution: {integrity: sha512-clwwgWtcUWUoBVVD5fscpZaukSlOx77XujZBubCXSz94dzYMuwQ6uzbqaH714dmLGFtGX0fEh84xJPZSYILsuA==, tarball: file:projects/arm-networkcloud.tgz} + resolution: {integrity: sha512-rpw1rhaHH5DbjV9CZzVcdESwR4wOsFa1BTffRibsKh6z+hi6nlqeje+U/GjIXquycvdATjTc2koXh/31aZNl5A==, tarball: file:projects/arm-networkcloud.tgz} name: '@rush-temp/arm-networkcloud' version: 0.0.0 dependencies: @@ -17195,7 +17217,7 @@ packages: dev: false file:projects/arm-networkfunction.tgz: - resolution: {integrity: sha512-Xoyz+XtG3PJ/U0Csqxi2kzLdtsmTcCd3Ly3lvusCsH5Fh2phh4QV2CNAoR0haLNcquKoFA566HOihDqQJDwErA==, tarball: file:projects/arm-networkfunction.tgz} + resolution: {integrity: sha512-tMd2qODOuhXdsgNrYx35EaYybcVP5D/Du4pAhToqTuxDfeftUA8Ry3FhrLZKUxkZCuAl1qhATsS5Jw76HfU+pA==, tarball: file:projects/arm-networkfunction.tgz} name: '@rush-temp/arm-networkfunction' version: 0.0.0 dependencies: @@ -17224,7 +17246,7 @@ packages: dev: false file:projects/arm-newrelicobservability.tgz: - resolution: {integrity: sha512-W4f1IqaxlRivbzfb4TF6tijNCgj+KEBD379z0t0lku5K6Om52AiqTS+CcgwQmpg6pREOPokp4j5RUfaM51HApQ==, tarball: file:projects/arm-newrelicobservability.tgz} + resolution: {integrity: sha512-O4w3wJjlBG8lJxb00WGPRmvBl8pUVFvsUn7KMszAyY5q1LoqRD/P/adX7omQvj+RBYzzLPkG9t9Rd+7sIwnZyA==, tarball: file:projects/arm-newrelicobservability.tgz} name: '@rush-temp/arm-newrelicobservability' version: 0.0.0 dependencies: @@ -17254,7 +17276,7 @@ packages: dev: false file:projects/arm-nginx.tgz: - resolution: {integrity: sha512-qVAjIstMnCDeC16WVu+q386pI/S3bFtobFjuP6YxWFRWUiczGYGRZQiEXIPRctVEptDwLMJs7hRGznIevzwpVA==, tarball: file:projects/arm-nginx.tgz} + resolution: {integrity: sha512-pLOdDp54GOwZc31b8TW/PSTjfpxMHN7CSfB3xCblsTskC611sVWqFNIV/vRxK1mDsbyY2NNFMq5ZKyTvoF0fXA==, tarball: file:projects/arm-nginx.tgz} name: '@rush-temp/arm-nginx' version: 0.0.0 dependencies: @@ -17284,7 +17306,7 @@ packages: dev: false file:projects/arm-notificationhubs.tgz: - resolution: {integrity: sha512-C4j8aKYOdwinRyuGeIgttHBVS1A0FtKk+f1aAyUoPKU/lsHlwgES/0Qhkd98qYQCL61VWf24yGLNcfx89n/Cug==, tarball: file:projects/arm-notificationhubs.tgz} + resolution: {integrity: sha512-qASxCpPXOL33i5ZL4+D6RNXo7ml424XNUE0Enx1iQ5+txftWvYwtOpmM4huS9oXRUFCkgmkIZ/LVVCL+MQ77Tg==, tarball: file:projects/arm-notificationhubs.tgz} name: '@rush-temp/arm-notificationhubs' version: 0.0.0 dependencies: @@ -17314,7 +17336,7 @@ packages: dev: false file:projects/arm-oep.tgz: - resolution: {integrity: sha512-yN7in7bSWktptr21JAHRiSY7SCAP6PFn/wZJXguNbMJ1coYdan8qGxDZ+Y98BrWZn/VsvmGIhVPU8Ioi8j70tA==, tarball: file:projects/arm-oep.tgz} + resolution: {integrity: sha512-UpRIO2UTpVF3sohVgYkOsdT98JCVzyueEl8qFk6fmzYlet5bdxODjFFnnl5RCbLfT1PQ/bxvpyv6Gn5TBTyJXQ==, tarball: file:projects/arm-oep.tgz} name: '@rush-temp/arm-oep' version: 0.0.0 dependencies: @@ -17343,7 +17365,7 @@ packages: dev: false file:projects/arm-operationalinsights.tgz: - resolution: {integrity: sha512-os3cEC+iqOVSKMxv1TUP9ftjvGSPXb9eXqk3zKwFk4/+aRGKHVgtl429gM0WIh90QDLNOANuRqQ8mAD89BuQZQ==, tarball: file:projects/arm-operationalinsights.tgz} + resolution: {integrity: sha512-h1KiF0snFuqby40JLK4/G5OS0gczssxCRgexGAx24xoFdoGQ6RO8mAORBmP5AeZSHNirifK8uXczb9OT/+EbIQ==, tarball: file:projects/arm-operationalinsights.tgz} name: '@rush-temp/arm-operationalinsights' version: 0.0.0 dependencies: @@ -17373,7 +17395,7 @@ packages: dev: false file:projects/arm-operations.tgz: - resolution: {integrity: sha512-vT+bM8W2s938i0AV7k+gk1JmKbl3dPKm/yF721Ub4iXplRGNeo3zNEzzFkyat3KTvFmtXlp6SQUen32/FL+H8A==, tarball: file:projects/arm-operations.tgz} + resolution: {integrity: sha512-imqDBA7XLP7ZTWoH+vP1TuFO4tpWzSjK0KDnokN7Qcd9yjI6ck3T61pb+kV8TEOoBnh0ph8FlIGrat7kE6yncA==, tarball: file:projects/arm-operations.tgz} name: '@rush-temp/arm-operations' version: 0.0.0 dependencies: @@ -17402,7 +17424,7 @@ packages: dev: false file:projects/arm-oracledatabase.tgz: - resolution: {integrity: sha512-W/eeXVqPXArSHG38qrmkZ7m8nwFE9ZnjQGoSYvAQSlao0N1Qa1ngVvTh+lDmMxwB0I+uljPIXJxWlN8uQuMPTw==, tarball: file:projects/arm-oracledatabase.tgz} + resolution: {integrity: sha512-MJ2Ba/mM+PlAwFlbctLzh4rw5YD54fY1n0w1Bl5jyicpRfnstlsc/kU7Nj7ACxC5yek3jcU7/ZX/eu8+pbmCTA==, tarball: file:projects/arm-oracledatabase.tgz} name: '@rush-temp/arm-oracledatabase' version: 0.0.0 dependencies: @@ -17433,7 +17455,7 @@ packages: dev: false file:projects/arm-orbital.tgz: - resolution: {integrity: sha512-Lz0US9aVz2x4qZHFD2BCG6KIrXbqOszYJYc2FS49wXFRgY4MU2HRiR8YPP1sWc+4QDYd+QKaFS91FN5cEZubrA==, tarball: file:projects/arm-orbital.tgz} + resolution: {integrity: sha512-b4WJVmbSpiZ6SsWKh5Z4aechH0sM6IKmzz/ilzZFpNLIdsYUNjroAC3MNHPphVf0ZTIMYIXP/4dqtiB6LL4aKA==, tarball: file:projects/arm-orbital.tgz} name: '@rush-temp/arm-orbital' version: 0.0.0 dependencies: @@ -17463,7 +17485,7 @@ packages: dev: false file:projects/arm-paloaltonetworksngfw.tgz: - resolution: {integrity: sha512-JqJkEWDufbXCx9Uo9qxQAqKCZ6sca6DIa0rM8PiFr9CQNBOWHxHP/uZk2sABKoMvH6IKrXL7KRfJ5J4Dalut9g==, tarball: file:projects/arm-paloaltonetworksngfw.tgz} + resolution: {integrity: sha512-QC9PfRqSzyps9/+U0e9EV0dU+FZI9MTAILjqO5jnIvr65ityj0/USm4Zz7MHxiaZNegpW/+9Yz8w7xQy3ZkMuQ==, tarball: file:projects/arm-paloaltonetworksngfw.tgz} name: '@rush-temp/arm-paloaltonetworksngfw' version: 0.0.0 dependencies: @@ -17493,7 +17515,7 @@ packages: dev: false file:projects/arm-peering.tgz: - resolution: {integrity: sha512-Mj/ZXu/A89dBVOGx3nrbeNY8x5ylytw3iCFOypfVe7ADf0G5DGgCRc85+tXwLadYC9+A3Ff7JdRYoopSkamINA==, tarball: file:projects/arm-peering.tgz} + resolution: {integrity: sha512-ozcef6TToSOq7CqUvKiRsZBdcUp3pU6MSfx8w2MZXOo3MGzQ3AMnWukrPYoU9nBi35YySyXvF6rYb68WHzj+1w==, tarball: file:projects/arm-peering.tgz} name: '@rush-temp/arm-peering' version: 0.0.0 dependencies: @@ -17520,7 +17542,7 @@ packages: dev: false file:projects/arm-playwrighttesting.tgz: - resolution: {integrity: sha512-1Cu2srWIlqMw2Qphnt8E3hstcdasUVvDtbaXH1PPN54jhQUViw1AiUM10W0gxeMzLnvKdUVnxUsCIn/NUynQVw==, tarball: file:projects/arm-playwrighttesting.tgz} + resolution: {integrity: sha512-SfLw2iA6ejViaiilnys6IsWVuaPcxRdPu+pIscYCeijd0HwMZJorXtc1eTFZ7SIn8PuDmGXXzHliIqsJxl4UsQ==, tarball: file:projects/arm-playwrighttesting.tgz} name: '@rush-temp/arm-playwrighttesting' version: 0.0.0 dependencies: @@ -17550,7 +17572,7 @@ packages: dev: false file:projects/arm-policy-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-UnTNCfdqB3lXg9eXx7PnVR3/IGm6n/wnbbtuclbJx6awi/S07a7jlRbSeZ+jba4s01fN+Si78BJibDNT1fi0EQ==, tarball: file:projects/arm-policy-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-9wo1hsVBeEN338Y03EVO2mJsiYsZgTL/CoGjIvqbmfZMPFriFiQNIgGEwKfQvdnRXJM2nadEo/zBBp8XS8vguA==, 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: @@ -17578,7 +17600,7 @@ packages: dev: false file:projects/arm-policy.tgz: - resolution: {integrity: sha512-/H2bvmE3EopNXHRnt3BLwbRHR5Y3CD+vQhEIMjaNUHE3QB56VhwFvXZIL2o7Q7oJLeK/PlF+e7u2JZHZtwA+7A==, tarball: file:projects/arm-policy.tgz} + resolution: {integrity: sha512-Z4HMl3VFgkEHROvE0FExAFkrcM3thPAtxzUFnr6zKCrjLviNH0tjFA715mJyqZKqn/xU0aRlANOogB09X8vZmA==, tarball: file:projects/arm-policy.tgz} name: '@rush-temp/arm-policy' version: 0.0.0 dependencies: @@ -17606,7 +17628,7 @@ packages: dev: false file:projects/arm-policyinsights.tgz: - resolution: {integrity: sha512-ggElmrDpSqiPAHhUemUGOrdTp0hFFP1ADpRpb8QC+8nsGb8EeT3iCZaBcVSRR2Dv87RILhVzOzjXRXmOg3ZeNg==, tarball: file:projects/arm-policyinsights.tgz} + resolution: {integrity: sha512-ExzAWoOvwWXObqNvQ6bLQ0Fs67HjZJn2femsEfZfxmGPTxfJVfsek98cuXklQEgLe96mllG5uM3QHUyjF1HKKg==, tarball: file:projects/arm-policyinsights.tgz} name: '@rush-temp/arm-policyinsights' version: 0.0.0 dependencies: @@ -17636,7 +17658,7 @@ packages: dev: false file:projects/arm-portal.tgz: - resolution: {integrity: sha512-1QapdGZkB+xlwdfxkZYIHcL/z+9X5LMq54Ysm+ckbsL66l4R7nKJUJ94EMtGK7dQYy71Zq54d7kAiKaKhIIw3Q==, tarball: file:projects/arm-portal.tgz} + resolution: {integrity: sha512-GJeR2EzzpTTKwedoXFiraBc/L6cdEMt3+BRAWSGWooPkis/csp7rvwKgrwUZ3yZ3ktB2pS/N03gQUinN1S+/3Q==, tarball: file:projects/arm-portal.tgz} name: '@rush-temp/arm-portal' version: 0.0.0 dependencies: @@ -17664,7 +17686,7 @@ packages: dev: false file:projects/arm-postgresql-flexible.tgz: - resolution: {integrity: sha512-NSIbK904401vTowcmbyrN6air9mB778Lw4dF+akIyx1RD15Ye2eEdXagrdzoxCeaf+pSrkAQK/ghRW8qmWT8Fw==, tarball: file:projects/arm-postgresql-flexible.tgz} + resolution: {integrity: sha512-42obwbCkSftt9nWFzb8iHFPqV7E/ArPOnAMS55z7qnfFfzSEO6cQ2dLtJ3n6t8F0yN7F16/pB7/P5CCBqfAxZA==, tarball: file:projects/arm-postgresql-flexible.tgz} name: '@rush-temp/arm-postgresql-flexible' version: 0.0.0 dependencies: @@ -17694,7 +17716,7 @@ packages: dev: false file:projects/arm-postgresql.tgz: - resolution: {integrity: sha512-Cd1CoTd5t3SnvR+KTZJCMP65q8drHeVKfSuRyMz0NntBn+xz2Ou/qwiV6T0+1AqEvlG2KCBNMcTTdcZEoECZ7Q==, tarball: file:projects/arm-postgresql.tgz} + resolution: {integrity: sha512-rUut4EsMqE0m7A6fpuDpjAX9uRIAgZFGuDP+yYyEcHB6ZST7xpmA97WXqJhECH4xyoyVVQ9/b6BetH/49cVHQA==, tarball: file:projects/arm-postgresql.tgz} name: '@rush-temp/arm-postgresql' version: 0.0.0 dependencies: @@ -17723,7 +17745,7 @@ packages: dev: false file:projects/arm-powerbidedicated.tgz: - resolution: {integrity: sha512-dlILYWypLv9jm+6xBYjloorL6ufiEikCv3PaPLz57X4eEVJcZigmOoLw8G1SEiIahsW/te6wrinHFIseMK75Lw==, tarball: file:projects/arm-powerbidedicated.tgz} + resolution: {integrity: sha512-g2Nz33tyJtj2dEp/wbmvlbxbcY8Yjw3+Cnry6VL/+s0AoIY7nkkYFdKT98rVlvXIN+KBN7Zs1T3MoXFlfHhFIQ==, tarball: file:projects/arm-powerbidedicated.tgz} name: '@rush-temp/arm-powerbidedicated' version: 0.0.0 dependencies: @@ -17753,7 +17775,7 @@ packages: dev: false file:projects/arm-powerbiembedded.tgz: - resolution: {integrity: sha512-lSscL3/6wrUi++hdQVBxR+VePqYFmpjzhZ/4pUtqm0W15XlXcXZccO7XMbhJtnwRTDGYUKpJ5rhR7uYu9337LA==, tarball: file:projects/arm-powerbiembedded.tgz} + resolution: {integrity: sha512-g5UQEJN6v86qTZkw2+VBwnJE1QJSD2ZbBZitwz01DigHRDbatVnmhEgjvM7lvDbFChomaWEPocWlZcbQBgMP6Q==, tarball: file:projects/arm-powerbiembedded.tgz} name: '@rush-temp/arm-powerbiembedded' version: 0.0.0 dependencies: @@ -17782,7 +17804,7 @@ packages: dev: false file:projects/arm-privatedns.tgz: - resolution: {integrity: sha512-DeLYIZhkysGVmRhymdQar8suXVHuSthEV2/909LcyshuvnT9reEA5pBUnpERwYILnE0v0Pe5cOiYM2zNu5K3jQ==, tarball: file:projects/arm-privatedns.tgz} + resolution: {integrity: sha512-te0zKXvLfbSL2nhRF7iu5i35dD8AnHcZkDr+aPyhTviHCpVna0zsrBUZ/McCYQZzNImcXICQy0vXG0Kv0oPHtA==, tarball: file:projects/arm-privatedns.tgz} name: '@rush-temp/arm-privatedns' version: 0.0.0 dependencies: @@ -17812,7 +17834,7 @@ packages: dev: false file:projects/arm-purview.tgz: - resolution: {integrity: sha512-B1h7MW0LspMCjkdtQLXgFe1+CHGq1y8+UGRm9OrWbC+qpQ33GoJX0RhONJJ61mT5JUSpsh0YZla/O8K61lZNfg==, tarball: file:projects/arm-purview.tgz} + resolution: {integrity: sha512-93WGpddENzgKRzQYsjYfSoTPOJAqSKrGkMcwLfOOEAI5FdXK3bW0wIqxSXGJGe6gimeouwHsebL8y/Ta6BbJ2A==, tarball: file:projects/arm-purview.tgz} name: '@rush-temp/arm-purview' version: 0.0.0 dependencies: @@ -17841,7 +17863,7 @@ packages: dev: false file:projects/arm-quantum.tgz: - resolution: {integrity: sha512-o7s/NDNGiGHq410Mkf/5TQDqgPd7LqdT99DoBGNIGEFiPnX3OLeGR/9ix5Yoamyc6V2vcpvz53wHba6CkMPtyQ==, tarball: file:projects/arm-quantum.tgz} + resolution: {integrity: sha512-bXlLybtVHrxeoeH7Autfo9oAeAgxtLiD4LifjhKJQFDMtKy7XwJeLEP8wjCLIUz4HjPqdATZOy91P+iipaXKWw==, tarball: file:projects/arm-quantum.tgz} name: '@rush-temp/arm-quantum' version: 0.0.0 dependencies: @@ -17871,7 +17893,7 @@ packages: dev: false file:projects/arm-qumulo.tgz: - resolution: {integrity: sha512-gYm9C1mxbgueCqF0iXFyNYlYxTSt3z+qziS108LyIOyQGplqBl37wIe2S5Nb0R87vWXYnYJHNhjVMMIvTrshPw==, tarball: file:projects/arm-qumulo.tgz} + resolution: {integrity: sha512-16kffyI39XON8XY0eZ8FV4msa7hdHziR5iXUAOOcVXnhrlyWeIeZ8BAWNRxdwfSRDIrnWzDx+aJTQnVRKL3E2Q==, tarball: file:projects/arm-qumulo.tgz} name: '@rush-temp/arm-qumulo' version: 0.0.0 dependencies: @@ -17902,7 +17924,7 @@ packages: dev: false file:projects/arm-quota.tgz: - resolution: {integrity: sha512-TcVpxc7YC3FWRwcUIO0Uto0RWVGgvHGZ+WvqOVtjLD93cgzO0gaognPjZ7dpaN+f3gyOGs0ksjiJl866jCimGg==, tarball: file:projects/arm-quota.tgz} + resolution: {integrity: sha512-xk059uR7eCCN3t024cWSE4S9muFzgPyN0kwgYPtQ9y/4+OQwdv8wvBqclcnw++X7ttxE5uPz9P6NgkNQS+HINA==, tarball: file:projects/arm-quota.tgz} name: '@rush-temp/arm-quota' version: 0.0.0 dependencies: @@ -17932,7 +17954,7 @@ packages: dev: false file:projects/arm-recoveryservices-siterecovery.tgz: - resolution: {integrity: sha512-Zy9s6Cc2SK2Y/qoQVc9ruyPwRaUbukYN4w7zELuTMsGOXAYzwW+GWqW53HVv9ATBkWcSPObZYIYfA9ahNq4Uhw==, tarball: file:projects/arm-recoveryservices-siterecovery.tgz} + resolution: {integrity: sha512-xcNv4RDnr33f5crsn2KZvyN0LDD1FGh2n8tcaQFLRAgZtK8y//XRiWtaFER7SKl3TaVrVjy2E9feEwAujZoW6g==, tarball: file:projects/arm-recoveryservices-siterecovery.tgz} name: '@rush-temp/arm-recoveryservices-siterecovery' version: 0.0.0 dependencies: @@ -17962,7 +17984,7 @@ packages: dev: false file:projects/arm-recoveryservices.tgz: - resolution: {integrity: sha512-hE9WTZh0MLaXAWCuHvQDjvzeQvxDn4t3x4Ws1o/sArO48yDG0+e9ZdCv/n3cX7NgxehtYb3142vlrosgojb3Ww==, tarball: file:projects/arm-recoveryservices.tgz} + resolution: {integrity: sha512-06A+DFamgjqnrd2zLMyYwoU48g7Bbwf/paXpGdKklU7SqcmCxUbtZUJTrZEtYngnXQSeAt58brXVBnGYE0evPA==, tarball: file:projects/arm-recoveryservices.tgz} name: '@rush-temp/arm-recoveryservices' version: 0.0.0 dependencies: @@ -17993,7 +18015,7 @@ packages: dev: false file:projects/arm-recoveryservicesbackup.tgz: - resolution: {integrity: sha512-aBxC2pHxknZk9hAvIHRmvw6o2Otg6NGB7/4HHdxTHdwd+5zthSZVMiNlN1lQr9rXZNpBhe9Ao/mm6C30S2/sgg==, tarball: file:projects/arm-recoveryservicesbackup.tgz} + resolution: {integrity: sha512-2noksR5ZT7zAwxoe62PnPvseK+9e3FTieCHLxCN6JOzEsLohvWLaKA3COBimtzZBsOeEkfNexOjKUXmyMKSvxA==, tarball: file:projects/arm-recoveryservicesbackup.tgz} name: '@rush-temp/arm-recoveryservicesbackup' version: 0.0.0 dependencies: @@ -18025,7 +18047,7 @@ packages: dev: false file:projects/arm-recoveryservicesdatareplication.tgz: - resolution: {integrity: sha512-s6rIHw/4pUPO7OWuP638NHaer/fWhpg0x+KLAxRHFtIC5d5i2+ipG/6YL9Tauhr0BozZWzWUMhFYE+ia9nEEKg==, tarball: file:projects/arm-recoveryservicesdatareplication.tgz} + resolution: {integrity: sha512-psblxki1Yi/bWothwmWqb+En3eL8BhAo7x1SuiHbKn600IaznqexgN/NB2KAB7qyRHUCa/IjiysgZ2dBZ1BqQQ==, tarball: file:projects/arm-recoveryservicesdatareplication.tgz} name: '@rush-temp/arm-recoveryservicesdatareplication' version: 0.0.0 dependencies: @@ -18055,7 +18077,7 @@ packages: dev: false file:projects/arm-redhatopenshift.tgz: - resolution: {integrity: sha512-G7cH1A3bimoSKhWgvtc1mrKbxDvfrT2DCAQK8MXGCP1bQr2BWhEWZe/kCOUIPRCte4R7aVB/ccqnIj7GgECWQw==, tarball: file:projects/arm-redhatopenshift.tgz} + resolution: {integrity: sha512-BwUzxC6iOJCCVzPqt2faC92BLQ74PN3hlhv1a1SsGdqWz8vXr7ONGB0YF7fiLtCvvn7RuileFsVfjXNrKy9qqA==, tarball: file:projects/arm-redhatopenshift.tgz} name: '@rush-temp/arm-redhatopenshift' version: 0.0.0 dependencies: @@ -18086,7 +18108,7 @@ packages: dev: false file:projects/arm-rediscache.tgz: - resolution: {integrity: sha512-iaPfdmOfF5ZnFRjtd6JqqvSlPn1JbSoqlEM7968JDg4kMbtRYJj/RSp2OaZ3HbFhcUhYRRC9T4GzDPGmfmqd3w==, tarball: file:projects/arm-rediscache.tgz} + resolution: {integrity: sha512-wjKgPDteXSNG7HsflXJ6v7ogpaDCk+Cbx5YNmOr2XQJ7STHcZKl8XlOXagYonaTB/ZXPFI2jDZxiv39SQZr0yA==, tarball: file:projects/arm-rediscache.tgz} name: '@rush-temp/arm-rediscache' version: 0.0.0 dependencies: @@ -18118,7 +18140,7 @@ packages: dev: false file:projects/arm-redisenterprisecache.tgz: - resolution: {integrity: sha512-aZLFBUEBCOzoZsTUJhc9cMShOYYGbV/6bEuR9NEAsP5N3CruGtH8LgZs3D0zsrPfjyGSaYZwqtIJMYbzzmUxdA==, tarball: file:projects/arm-redisenterprisecache.tgz} + resolution: {integrity: sha512-tn3eCGAuaZ5/WguvYXmmXZuRYRCie4bKR38XnA255/jD2njJ1qxuDCpH/nmT38r0R1L8jniBTlqP0+ylfgGbjg==, tarball: file:projects/arm-redisenterprisecache.tgz} name: '@rush-temp/arm-redisenterprisecache' version: 0.0.0 dependencies: @@ -18149,7 +18171,7 @@ packages: dev: false file:projects/arm-relay.tgz: - resolution: {integrity: sha512-Th9b0kM7MAcoZ612c8zz9auhr8Hqnb3yMr+KWdRnx9miUJaIjchsiHWANFuvfnHmx8P71p/TskXMbTj8OMWnPg==, tarball: file:projects/arm-relay.tgz} + resolution: {integrity: sha512-uwrO1rzLldkeACmDg6IrzkUcDhEPxYbT7Vd7uz6GJuleJo+U+rlKz4KngctChfIy+H5lXO8M1tG/8HFhO1BDhA==, tarball: file:projects/arm-relay.tgz} name: '@rush-temp/arm-relay' version: 0.0.0 dependencies: @@ -18179,7 +18201,7 @@ packages: dev: false file:projects/arm-reservations.tgz: - resolution: {integrity: sha512-xaeHLrGZsp6SoH1ojKtx/2HHnEN899g8w71qAZrAoaO3a+5eukKyC9Gfxb1iiKoxXvAqTXeN0TV3NEBGCIbOIg==, tarball: file:projects/arm-reservations.tgz} + resolution: {integrity: sha512-BqGc0TP5W8b1mEC2QK0JA/Mq+Qv8ITVZXexW4EHOKtDCDETYbwE+OIkAto3+411a6200kIUOzwyqViuUrRt6Bg==, tarball: file:projects/arm-reservations.tgz} name: '@rush-temp/arm-reservations' version: 0.0.0 dependencies: @@ -18209,7 +18231,7 @@ packages: dev: false file:projects/arm-resourceconnector.tgz: - resolution: {integrity: sha512-3/GLF0TEU0hxKhW0sP1uBMYfI5n5GSlQ26ls1EH5Jry2K+l9bQco4SvRGFNHHpqtqIjssgdxkhbDIDCpEDxRVg==, tarball: file:projects/arm-resourceconnector.tgz} + resolution: {integrity: sha512-AQ9gUwZYKgMz0em5ab5wekXZZ9aq1mYgME96Go11NxLDmt5CjLB+b0yqaJ1G+ij9sOCl4f0NwN70yyH9oJx7IQ==, tarball: file:projects/arm-resourceconnector.tgz} name: '@rush-temp/arm-resourceconnector' version: 0.0.0 dependencies: @@ -18239,7 +18261,7 @@ packages: dev: false file:projects/arm-resourcegraph.tgz: - resolution: {integrity: sha512-JdHzFd9wI6JJriyEvlkxEzkrAvHKS8sL1nqZ5F2w/0HctthIdjUM3WHTUPj7nf6NT/JsY11aB6rOUJrwJrrvCw==, tarball: file:projects/arm-resourcegraph.tgz} + resolution: {integrity: sha512-zmk1cZALrBRWYbPPc29vEhHTpdbh+K9cmQT+1xcYOVFAB8rz2U1ZGp+v+eZDCYKbokwkQxj6vO3VGwVmud6spA==, tarball: file:projects/arm-resourcegraph.tgz} name: '@rush-temp/arm-resourcegraph' version: 0.0.0 dependencies: @@ -18266,7 +18288,7 @@ packages: dev: false file:projects/arm-resourcehealth.tgz: - resolution: {integrity: sha512-y8trJZSTDn6b1D10IKVSmb4/+HMZEi5cHfjwJWA12pmEfy8vitnl+YPnab9LbG1tBZq/qKonXdUeGzJSQkZ4Gg==, tarball: file:projects/arm-resourcehealth.tgz} + resolution: {integrity: sha512-OmXdlZg6o/+pbuha9lGCccqxJKHHfvtRnKVEtd7ScUPrULI58nJvuiXOfMbSIMp95RED3alr8uoV1DH5X/2pJA==, tarball: file:projects/arm-resourcehealth.tgz} name: '@rush-temp/arm-resourcehealth' version: 0.0.0 dependencies: @@ -18294,7 +18316,7 @@ packages: dev: false file:projects/arm-resourcemover.tgz: - resolution: {integrity: sha512-x1C2jUcu6IrYMYwK0SjYkthOBecAhlf8/RKxawn4u+UmBJoTceamfVhg46RDC4Q2p4JqoWGa7rsHJvUVT16Aww==, tarball: file:projects/arm-resourcemover.tgz} + resolution: {integrity: sha512-1D4dAl0mmNVfUStY63phkh4tqdWFTWUTv2U+0ZgTHdE1JPtdfgl/0cuLsmI/CkkLJfPWcPY1lZuHnBkILy8bkA==, tarball: file:projects/arm-resourcemover.tgz} name: '@rush-temp/arm-resourcemover' version: 0.0.0 dependencies: @@ -18324,7 +18346,7 @@ packages: dev: false file:projects/arm-resources-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-3K2SKWxCM/vXM3wNJxxjfznuSvjK0mNAr3KTfkR8bLZsZw0IYSYcSVlI6V6cfjUi/6pgsfwviNlWmsPdJ+FdtA==, tarball: file:projects/arm-resources-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-kkwhL1lPRpgHIar/0p0nPu2s94ksLrvxuovYHcQmCI7+zwQuSnJBAoI/RN21uFBekdcbk5X9lVnZeZrsnBo8mw==, 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: @@ -18354,7 +18376,7 @@ packages: dev: false file:projects/arm-resources-subscriptions.tgz: - resolution: {integrity: sha512-ESdS8paAhHR5HfMV7Hk+WSg9BILEmbBPdCJB0321w0xUPEZsIX5dI5JwylMIoxoqI29qJflOPDmP9f83L4+Z7w==, tarball: file:projects/arm-resources-subscriptions.tgz} + resolution: {integrity: sha512-1rJhKQecqIun9TBKIJuCjb1JJpIHwhP04pqs9P0i0HBuy3Q3xxkJtx8mSAOe8Rw9daDBvZw8SwIN9+nrwf4URg==, tarball: file:projects/arm-resources-subscriptions.tgz} name: '@rush-temp/arm-resources-subscriptions' version: 0.0.0 dependencies: @@ -18382,7 +18404,7 @@ packages: dev: false file:projects/arm-resources.tgz: - resolution: {integrity: sha512-8TMFe//8E67q5Nze7yLR6VgxTPgEb1BIBF9AeBVV+Tcu8ijDgV/6siMyoOXafgdQkk2bO0tVO+SGfXQgIol+3g==, tarball: file:projects/arm-resources.tgz} + resolution: {integrity: sha512-6a16xYknvpbK19/9j06QEyv4YsWcLEoR9neVni4DcRgPbMELOh/a/9xeOo1Lisn6Jq7LQ4tbaHQWd5xbpgvpow==, tarball: file:projects/arm-resources.tgz} name: '@rush-temp/arm-resources' version: 0.0.0 dependencies: @@ -18412,7 +18434,7 @@ packages: dev: false file:projects/arm-resourcesdeploymentstacks.tgz: - resolution: {integrity: sha512-CViGJPj+s3oFWu5qa59wIKJpNb2JiytehpwUomjfLwJQc7A3qXexcefkLo1ATe/x3xa/8VtGEGmHmcCQD2AbhQ==, tarball: file:projects/arm-resourcesdeploymentstacks.tgz} + resolution: {integrity: sha512-59nSruSUUf0DBQysuEcADPS0mcz4ct3vHU16Zz2kcmjzO7TFQXA2xsFjNjeJaD2+C5r4XodX72Jn3yD0U22qrQ==, tarball: file:projects/arm-resourcesdeploymentstacks.tgz} name: '@rush-temp/arm-resourcesdeploymentstacks' version: 0.0.0 dependencies: @@ -18443,7 +18465,7 @@ packages: dev: false file:projects/arm-scvmm.tgz: - resolution: {integrity: sha512-Fkayn1s6liEmHj04cYJ492qlZh4so3USiiYydFKDLXq+iK5CraI8Y37o9nbgfigc80nJZM57OD13M7BHMEBoSw==, tarball: file:projects/arm-scvmm.tgz} + resolution: {integrity: sha512-Ww4OxXaLiQyIXp5EZLfQSG+T/l/3cXm3KG8/T99zwwXdmwPII9/Wsv8SZmid0SMY6GDdb+8E9ZoHGVjC+/yrtA==, tarball: file:projects/arm-scvmm.tgz} name: '@rush-temp/arm-scvmm' version: 0.0.0 dependencies: @@ -18474,7 +18496,7 @@ packages: dev: false file:projects/arm-search.tgz: - resolution: {integrity: sha512-n9+MFthVi0kPRyKbesnuxpozFIAXlDtN3AUHhnifFNmk1ljV9L9Qlo6F4jwEUiVDxc3q4Tewg2Z20NXpsl7jcQ==, tarball: file:projects/arm-search.tgz} + resolution: {integrity: sha512-8uv5If4Z3qbT8dx9W89TzHJJ7AR4OC6k1IlD++vK1O7FZe0oNHYWwfd3cVjI7TbaccMC+Syzr+lAuMdt9FqJMA==, tarball: file:projects/arm-search.tgz} name: '@rush-temp/arm-search' version: 0.0.0 dependencies: @@ -18505,7 +18527,7 @@ packages: dev: false file:projects/arm-security.tgz: - resolution: {integrity: sha512-Px/+niYXJJSBaYURVZ7Sy0ZUBrh5mL5YTdHXKcumWBVaNY6IwcdEbtR3ZfjWS1J2fkZNUCBe28PjEy4+oQBzow==, tarball: file:projects/arm-security.tgz} + resolution: {integrity: sha512-B70NAL/cD6aCD6ZFWPaQ2fCRsoA4j8ZnFsGa/y9vDILw/37omK/X06fg1L3eItXDa85rnxAKEyVISb4/CmSlMQ==, tarball: file:projects/arm-security.tgz} name: '@rush-temp/arm-security' version: 0.0.0 dependencies: @@ -18536,7 +18558,7 @@ packages: dev: false file:projects/arm-securitydevops.tgz: - resolution: {integrity: sha512-S4pcnEbybi5nmSjXtXKhIsTRuw7imOZmTcOg3bAPgz3KqoLVKXzNIaQ45IelRQ8XXWzbt2FLMruvJXZWGZa/dw==, tarball: file:projects/arm-securitydevops.tgz} + resolution: {integrity: sha512-8LQ0CNpQRwNCKE5gn+oP3618AYNtvqNec3Mxu5PGrWUs3i1IiQAOqpnLAl+NLFjYgq/5cD3gm8FVlnmKaRRX+g==, tarball: file:projects/arm-securitydevops.tgz} name: '@rush-temp/arm-securitydevops' version: 0.0.0 dependencies: @@ -18566,7 +18588,7 @@ packages: dev: false file:projects/arm-securityinsight.tgz: - resolution: {integrity: sha512-z7/bwVywKxYb8/nzlnRHG0naVcEeSHTzxDEQ0c1QiRmlvtuuVReA0sH0eBKCSUWqe2Gad9W6zFjyLoqUxg2iyg==, tarball: file:projects/arm-securityinsight.tgz} + resolution: {integrity: sha512-ECeHKmdNfMrlWU+ALpyQjR6P1EmyqVmwq333v5RV6lVJmh8P0P/BxUNCXpyzFW1fbzQrNz5PkcxeWk8Dn1OXeg==, tarball: file:projects/arm-securityinsight.tgz} name: '@rush-temp/arm-securityinsight' version: 0.0.0 dependencies: @@ -18596,7 +18618,7 @@ packages: dev: false file:projects/arm-selfhelp.tgz: - resolution: {integrity: sha512-qKw7XYBLOZ8gMshNFDUxW6hhf4A60cbTwLA+s1Fh/OPUKopWJ6u8z0uw40ZaodIosbk/c6XPhWaYtUImIblFsA==, tarball: file:projects/arm-selfhelp.tgz} + resolution: {integrity: sha512-Du6qiL/0d6POf7L+oG/79kFrVo1aq/OqOT9GcaPwMgsATyPRJ30MBVglpAz2Y/ZQ2PhOUZlC06LzxW6er51qTA==, tarball: file:projects/arm-selfhelp.tgz} name: '@rush-temp/arm-selfhelp' version: 0.0.0 dependencies: @@ -18627,7 +18649,7 @@ packages: dev: false file:projects/arm-serialconsole.tgz: - resolution: {integrity: sha512-GMojm865n40ZBB+4kLDKzAoO6dOa4U+Vz7zEFXNcbIHiQUoS6+PwzuDSPvOLSeNxHV7samqCTkge2FnmlQqr2A==, tarball: file:projects/arm-serialconsole.tgz} + resolution: {integrity: sha512-IE4+e1/ccdTPu/DGZ319e0G9sO5zDhKOHYAJ3ys2d1TEgzfyZq701uDZYWj2jRPp+wTbWI1OKHNUchLOv2XFiw==, tarball: file:projects/arm-serialconsole.tgz} name: '@rush-temp/arm-serialconsole' version: 0.0.0 dependencies: @@ -18654,7 +18676,7 @@ packages: dev: false file:projects/arm-servicebus.tgz: - resolution: {integrity: sha512-mX0dwH8mu+GrYq+JsD3AhOjm/K62WRtCNHRwHpyrwCtgc+VUuD6T/mpD3t/oERQ5NcMj/KubhdOk6iQci39eNQ==, tarball: file:projects/arm-servicebus.tgz} + resolution: {integrity: sha512-iKMaq8Mpd8NWdBvKvDKFX8HME7Vmks7T44pkpV8l7Py3eFY9JQSE6DVvrY9yD6EJWWxUkoswtZM7/UcoNr8gzw==, tarball: file:projects/arm-servicebus.tgz} name: '@rush-temp/arm-servicebus' version: 0.0.0 dependencies: @@ -18684,7 +18706,7 @@ packages: dev: false file:projects/arm-servicefabric-1.tgz: - resolution: {integrity: sha512-mhjzYzaHr459X1YZqYfeMyMf0WE9tGDIS0NolkxvsJHVS4GzfXLk+Qwv94I0Oczd8icANrt5bvtewhMJMN55cA==, tarball: file:projects/arm-servicefabric-1.tgz} + resolution: {integrity: sha512-VpD1QplYj7Nk8D1EVFya3hgMbFMKel3IDJZb2DZtxuO2TMU6aDBAm8Fh1ObDEaqFtKS4zG08zC3+Sa6vq/3wFg==, tarball: file:projects/arm-servicefabric-1.tgz} name: '@rush-temp/arm-servicefabric-1' version: 0.0.0 dependencies: @@ -18714,7 +18736,7 @@ packages: dev: false file:projects/arm-servicefabric.tgz: - resolution: {integrity: sha512-nBD/gkz9t+npnHpQxhMqmYsiM7g2ORRS9ZTuXy8esCn2ErOSZeus7nndC7bVRSaWUFjw3RCtEaKOGC+k5FeBPQ==, tarball: file:projects/arm-servicefabric.tgz} + resolution: {integrity: sha512-PYs4dUaMHAw61YrQ+9Gtrcvos/F+ue1jMFIG4K2F49lVjEJ8X3HddH7ewaUHP1GTzevTGSQeeOqipJJ289ui+w==, tarball: file:projects/arm-servicefabric.tgz} name: '@rush-temp/arm-servicefabric' version: 0.0.0 dependencies: @@ -18760,7 +18782,7 @@ packages: dev: false file:projects/arm-servicefabricmanagedclusters.tgz: - resolution: {integrity: sha512-TCi0jp2pkdiaCDttYrLe2lOgb2BLNKzfqy8sCBizSGqbapwU1zr2k1dsdlVPFaBmoPG6T3+MqqBukQ55Qde9NQ==, tarball: file:projects/arm-servicefabricmanagedclusters.tgz} + resolution: {integrity: sha512-aXLhNHWEstwVsLKpmTC2k/xVystn9qlcSGaDg+o6B5saAiAICgXAynb+8X4YUUkH/N7xVIGwB06GhYPhmkDwMw==, tarball: file:projects/arm-servicefabricmanagedclusters.tgz} name: '@rush-temp/arm-servicefabricmanagedclusters' version: 0.0.0 dependencies: @@ -18791,7 +18813,7 @@ packages: dev: false file:projects/arm-servicefabricmesh.tgz: - resolution: {integrity: sha512-VUYEVVtWCIYNADs1mvJKm6x/q9zkLVxBvBgFeh9X0pn5A0I28A8LN8NikklaByhLopV4Yfoqf8iNj07TErM7oA==, tarball: file:projects/arm-servicefabricmesh.tgz} + resolution: {integrity: sha512-DAoHYCxEbPvnDOv46/WhvUT+yt66a6vKoaGJpQvqDpKmmpToXECdoprk6D4y0TvRfA1qRjpF8VoNFHjtgOUynA==, tarball: file:projects/arm-servicefabricmesh.tgz} name: '@rush-temp/arm-servicefabricmesh' version: 0.0.0 dependencies: @@ -18819,7 +18841,7 @@ packages: dev: false file:projects/arm-servicelinker.tgz: - resolution: {integrity: sha512-BI03Uf+B32eQ1/UJ5zwaebq+GqL3BZKvZRhYiHKNZIZ5XkSCj/+RbzWxkrUIYpjvYK1kK8ZdxriBEEge5x+yCQ==, tarball: file:projects/arm-servicelinker.tgz} + resolution: {integrity: sha512-b4I+nEFdfBdbxwWL83hH8Cx8u1tnApKwJ4woUu5sW1oeBY+b1EBHqB1oMRn537e0OKZfa5rYLBVSLSSjXHCgFA==, tarball: file:projects/arm-servicelinker.tgz} name: '@rush-temp/arm-servicelinker' version: 0.0.0 dependencies: @@ -18849,7 +18871,7 @@ packages: dev: false file:projects/arm-servicemap.tgz: - resolution: {integrity: sha512-gMlBuke+uVxkC+RHCKU/uqQF3DDItNnnSY8u3/6am2rhQKMmAyNE9cwf9LeOuTaK9Vwyp40/domzBBT3WXHi9g==, tarball: file:projects/arm-servicemap.tgz} + resolution: {integrity: sha512-TuOms7H4yauZtgxdgm7wHhfCAg1aGoXBxp+pH1DJYcq5Dv0Hl8OLiASVR76MquUU0hgGWCY8HEk1rnY2gOBmnw==, tarball: file:projects/arm-servicemap.tgz} name: '@rush-temp/arm-servicemap' version: 0.0.0 dependencies: @@ -18877,7 +18899,7 @@ packages: dev: false file:projects/arm-servicenetworking.tgz: - resolution: {integrity: sha512-jTqnBRCg8w5P4b+b1zRL8OcqS/V7ZmJdoyobiF3nlybl7r3Yrn8QYjqsNSoDyTfZCPUobdfJXiw02OjvHBKT7A==, tarball: file:projects/arm-servicenetworking.tgz} + resolution: {integrity: sha512-i8zywAj3ogUJQ8TsnlaNoWGcHF4DklFscEdWVm0GJEf5kYSb9S6nXg40mVHqKtLLa1EiawVcXaMiHta7qlOlxQ==, tarball: file:projects/arm-servicenetworking.tgz} name: '@rush-temp/arm-servicenetworking' version: 0.0.0 dependencies: @@ -18907,7 +18929,7 @@ packages: dev: false file:projects/arm-signalr.tgz: - resolution: {integrity: sha512-zOj+xr0QvdXrIlVyYKgwydI81agrOmG5t5IPn1LBtXKhHc6awL3+j5mBc4UKVb33U4vujVMSAIznx8U/STDDRw==, tarball: file:projects/arm-signalr.tgz} + resolution: {integrity: sha512-q3he14cTJvsZlGmkKan1jmInCxqH8L9Qjiph4Kk9rNqDNOjDzWjfI5rblwT2rwzrDhwn3LA28zbl8mkEeFUneg==, tarball: file:projects/arm-signalr.tgz} name: '@rush-temp/arm-signalr' version: 0.0.0 dependencies: @@ -18937,7 +18959,7 @@ packages: dev: false file:projects/arm-sphere.tgz: - resolution: {integrity: sha512-jQJaQ8K8/TuACKtMzMaljQ+2Lqpx08OCBYb/Hi+D2/5UGS9iW7GEu1nXdyT+vltrr4YYCINZn6n4L2+CHHTlQw==, tarball: file:projects/arm-sphere.tgz} + resolution: {integrity: sha512-zu2ViWjA8Q+zH59tu1TFghRMTpx/o59Njik5kxjhJimusHi2WdVA2tFXy+43JOGZn2y/EOKTx8ByPe3QXXPgJg==, tarball: file:projects/arm-sphere.tgz} name: '@rush-temp/arm-sphere' version: 0.0.0 dependencies: @@ -18967,7 +18989,7 @@ packages: dev: false file:projects/arm-springappdiscovery.tgz: - resolution: {integrity: sha512-Zb4tvHVkQFwSBEoyOwiCg+1MXyU0xYDpG6OqyCuWiQvcdHM4UwXcwJSfJznS7GTTmQdCqegVXYLxUYJTpxoobw==, tarball: file:projects/arm-springappdiscovery.tgz} + resolution: {integrity: sha512-8I6C+bVGH81wWi93y4yWThAN6Jg45vsdz0QJ0aNh8pURiwRSLfYjqpcWFGrrvMtfLPsDvsDmya/sPDTxYfI56w==, tarball: file:projects/arm-springappdiscovery.tgz} name: '@rush-temp/arm-springappdiscovery' version: 0.0.0 dependencies: @@ -18997,7 +19019,7 @@ packages: dev: false file:projects/arm-sql.tgz: - resolution: {integrity: sha512-73Oet2aISNMPTPVJjDN0whP3J23ZtcbObc8wUifIqF/x+sKGEEWDwH2jdwcy4d+MJ0D99rsnTsEfPNK617tPAQ==, tarball: file:projects/arm-sql.tgz} + resolution: {integrity: sha512-jAEmxePLAQYwQA1+pc90ne5yg9S17zaCEdxcWSs+mzffP6aaMgCyTRVsMUWgn8KSw9Yi6zC0xzzf11OOYq3lKg==, tarball: file:projects/arm-sql.tgz} name: '@rush-temp/arm-sql' version: 0.0.0 dependencies: @@ -19028,7 +19050,7 @@ packages: dev: false file:projects/arm-sqlvirtualmachine.tgz: - resolution: {integrity: sha512-pYNGuK8/84ZrBuewv7yQqhdCo/IVcD+mfYYPZty0OdFkx3SKB3gzBmTQ5m++xVN1ErX3wNPnX6G9OXKLSLX0Ag==, tarball: file:projects/arm-sqlvirtualmachine.tgz} + resolution: {integrity: sha512-fqfFdEwf0t8GAOh7qfR5g5YhSs8Km6/IaoafYyQVwV6e2jgygHl6zyARRDv8cP2m/KWR6sxj/uo9e6/a/aHLgA==, tarball: file:projects/arm-sqlvirtualmachine.tgz} name: '@rush-temp/arm-sqlvirtualmachine' version: 0.0.0 dependencies: @@ -19058,7 +19080,7 @@ packages: dev: false file:projects/arm-standbypool.tgz: - resolution: {integrity: sha512-8XK6tR34ybn9FddKq0+JQ1bZbzRoW715/OlEZGVKxIYwW7ZIZtuTnrhyfhgy2V4dKzfdja3bAe3ytl+WcusCFw==, tarball: file:projects/arm-standbypool.tgz} + resolution: {integrity: sha512-ad0vpTy1Jgcz8oulGhJAF35Pd2E8h+1IjDqexQoVe9PU4g7piDgfmXu2Enf6ACydU7dentGyCikqr3pZyGDFhw==, tarball: file:projects/arm-standbypool.tgz} name: '@rush-temp/arm-standbypool' version: 0.0.0 dependencies: @@ -19089,7 +19111,7 @@ packages: dev: false file:projects/arm-storage-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-pPMG69GBIGTkkAtuzfE0wMCehJB4H2uRdCJvfrFqWL5+4gdqlAzxzw+Dy+3zfzZz+vEOAtlll43csdDB++ixwg==, tarball: file:projects/arm-storage-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-UY/523bFXh4JW89AWbDbZjZl8dsPEytPd2OjzZ8uYdEcPXsb2JiPeS6741E7kE2Z99pBC9DgwfeqMjPVa6PLyg==, 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: @@ -19118,7 +19140,7 @@ packages: dev: false file:projects/arm-storage.tgz: - resolution: {integrity: sha512-wu02t2M2e+U75bwlQZdo2YHXfAC4cbHGrhJO159LmJFet0/ICOxk5jUgduvhPS2WPOCHruqra4od6jcGxjJsmA==, tarball: file:projects/arm-storage.tgz} + resolution: {integrity: sha512-CrodZpd6ur66ptS0rc95Au7c0CwIRraHAuxmsgQdaqILR2zcprBEfsdnBWz8QSS6uzLDzZyJ5nl2HHgWZXYknQ==, tarball: file:projects/arm-storage.tgz} name: '@rush-temp/arm-storage' version: 0.0.0 dependencies: @@ -19148,7 +19170,7 @@ packages: dev: false file:projects/arm-storageactions.tgz: - resolution: {integrity: sha512-ftPPQPoyeEFHPiCjAqjV9TaxJpsoKPjcOWhFGIyyt7UjSnIsqtp4zm9G7SeGiOWTAuog7BoQ0IYWWseg9oi5vA==, tarball: file:projects/arm-storageactions.tgz} + resolution: {integrity: sha512-y9gBYrOwFnxR6w7ihJHFh+4Ua84IV71PG1QfYKpsYBaCl7Ye6YPSIdsU89rAkb46TKckwsOISqUqij+de8qkuA==, tarball: file:projects/arm-storageactions.tgz} name: '@rush-temp/arm-storageactions' version: 0.0.0 dependencies: @@ -19178,7 +19200,7 @@ packages: dev: false file:projects/arm-storagecache.tgz: - resolution: {integrity: sha512-RO0zn7zgnyBI+/G9/6GQWU/aaiXy4dW9Fqe13gNPaOWQL0Qx+9PFRWqy3Zd2uNoCxa3RjQnwrPuk8Rnsmg8EZg==, tarball: file:projects/arm-storagecache.tgz} + resolution: {integrity: sha512-1ZZEylMxUh/nPoxIKGSxpaVoHOcOOABS8qkwf4BlK/0y1/siwnBJSvqHgFcZ3D5YlbbIuj8rRVSNInaIuFUR5A==, tarball: file:projects/arm-storagecache.tgz} name: '@rush-temp/arm-storagecache' version: 0.0.0 dependencies: @@ -19209,7 +19231,7 @@ packages: dev: false file:projects/arm-storageimportexport.tgz: - resolution: {integrity: sha512-FrkH1kkYZWRTmhzUOuNymupxNYkUF/0zi9JWQyDQB3W65DcOZN0w9PxIMF1aTOKHe8s6UlDpbpr1zmvx2r5ZTw==, tarball: file:projects/arm-storageimportexport.tgz} + resolution: {integrity: sha512-yi5HpUSvqmLbhj5gcwqzn3k4pKGorFKZQN5VwuxnFsZos/hwSxe/UKLRE4xijisCJh8NytSx4CDP0SbFpvoXxA==, tarball: file:projects/arm-storageimportexport.tgz} name: '@rush-temp/arm-storageimportexport' version: 0.0.0 dependencies: @@ -19237,7 +19259,7 @@ packages: dev: false file:projects/arm-storagemover.tgz: - resolution: {integrity: sha512-eBTpDLGTC8bzTU5PxS+OILzHHcbDuRDDhLFgBmCUHKoY8wMKK4gLmz/u7l4IXfanLagxihCT395OAmknYxNEsQ==, tarball: file:projects/arm-storagemover.tgz} + resolution: {integrity: sha512-UsX6UCtWlnuZYFIzdOq/F7l72d4ku5XR/9dmaPqmgOz795hO3b5k3M69IBkdEeFMgHNmj5d+K/BIkRtVTA1+nQ==, tarball: file:projects/arm-storagemover.tgz} name: '@rush-temp/arm-storagemover' version: 0.0.0 dependencies: @@ -19268,7 +19290,7 @@ packages: dev: false file:projects/arm-storagesync.tgz: - resolution: {integrity: sha512-CVer+JDWP2v9lzFt+s/g9qVJs5OyMa0jtq6OIt0vEEY35B91/0ZX/6FaDZvOil6ogF/fn8HYsLUlpPqk+3GUAg==, tarball: file:projects/arm-storagesync.tgz} + resolution: {integrity: sha512-4U6POnxYGRyF5vQB9KeQGyWYW/adVrtQku+3xfe3Nj0QQ8VpmN5q5DVwbI+NDLIOvrXm0ReaQzFUtbhgIc9K9w==, tarball: file:projects/arm-storagesync.tgz} name: '@rush-temp/arm-storagesync' version: 0.0.0 dependencies: @@ -19297,7 +19319,7 @@ packages: dev: false file:projects/arm-storsimple1200series.tgz: - resolution: {integrity: sha512-HoMQdFdLZ9KsB/yvQRQeyCUeXSX2xtZKdqmy6WJgRsi3aMj8MUWduZC4LbbkDb7F/crUzsGJxhMYNm6zZn2G1g==, tarball: file:projects/arm-storsimple1200series.tgz} + resolution: {integrity: sha512-cTFxPvBEBJWkj19CYPT6zqIT9KLwgfdBW4g/w1Z2OEOme1eKMfI8UmpQo8WKk/6JCpXhQLcewHKkn9NJMpbs2A==, tarball: file:projects/arm-storsimple1200series.tgz} name: '@rush-temp/arm-storsimple1200series' version: 0.0.0 dependencies: @@ -19326,7 +19348,7 @@ packages: dev: false file:projects/arm-storsimple8000series.tgz: - resolution: {integrity: sha512-8Y3vrXijr+GNdjDTMU5lMX+lcplFw3T9h2j8XbvHqrzWwHAnN24GMJN1styPzvvTesGtXrsEDAbAIGTkMxswzg==, tarball: file:projects/arm-storsimple8000series.tgz} + resolution: {integrity: sha512-i1eh3ERKkdECOuc/BOb5exDZuL7aUTEKiXFpqLlKcfKgXz1pCEYPV8ekhK6U4QXuwNWPan3+y6TzeuoKxCjH3Q==, tarball: file:projects/arm-storsimple8000series.tgz} name: '@rush-temp/arm-storsimple8000series' version: 0.0.0 dependencies: @@ -19355,7 +19377,7 @@ packages: dev: false file:projects/arm-streamanalytics.tgz: - resolution: {integrity: sha512-mMgEakc8HukU0aZNHCjH4JtfdnAjluphyODqWpzS3haO6hwglmw9qTkRFD9OdeTQaNYX9G7tmlnj6KkL9+zJ6A==, tarball: file:projects/arm-streamanalytics.tgz} + resolution: {integrity: sha512-BftyU/D+V40GmtOKEIBcjM3NQvpPQGefxlOVErMEkTvkRf1Ha7KXL+gcwWfHIWmeDlBYlU9S38yR0veRGvaD3w==, tarball: file:projects/arm-streamanalytics.tgz} name: '@rush-temp/arm-streamanalytics' version: 0.0.0 dependencies: @@ -19385,7 +19407,7 @@ packages: dev: false file:projects/arm-subscriptions-profile-2020-09-01-hybrid.tgz: - resolution: {integrity: sha512-j6JXR3XLuIHwKdUq+YL1sFmI1MfvzIjwFhykeFn0BxUiaEzus6dF9IKfiRYz/oK7lU0EpqbASLAWlWsFtpn3ZA==, tarball: file:projects/arm-subscriptions-profile-2020-09-01-hybrid.tgz} + resolution: {integrity: sha512-FWSgHuhV2hoZPRYrBFbP0I8pIHfK0VWZ1ThRFMhUvBm5bePKJvDm9A8WxQ1UACBYQ+r4sSqccPYxLDAUXQHWjA==, 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: @@ -19413,7 +19435,7 @@ packages: dev: false file:projects/arm-subscriptions.tgz: - resolution: {integrity: sha512-yxZ6qrSI1iPNoZNTfWjavZhpkUinY4iPqwMSZxL1gQFqGShQOEfgCpBT0DiJXyIYhevwNlQzg8BFFVCLJVDs+w==, tarball: file:projects/arm-subscriptions.tgz} + resolution: {integrity: sha512-N8BQ0j0ydmfNDRBK6+IVsrcf3+UkmfGNMubsDDoN3FvFRuHIDEN8YLB8NyhvhrMYFaoHGgCR56//I5qlOrllSA==, tarball: file:projects/arm-subscriptions.tgz} name: '@rush-temp/arm-subscriptions' version: 0.0.0 dependencies: @@ -19442,7 +19464,7 @@ packages: dev: false file:projects/arm-support.tgz: - resolution: {integrity: sha512-h0HUrgnfJMgkcahpjb48+yRT+pQ//arYnNprAp0WTqgXEeHaXA02keI0rqTvuXM10BQV5CKiaFXWLh1XmK8Nmw==, tarball: file:projects/arm-support.tgz} + resolution: {integrity: sha512-mTNhSWriRWm1/pnKKWqwpFL91hPzZxtT3mrVgRhpQyEh2Nu5asIalfe0anZlF41QjSekjraARGS2epcNTRXRLQ==, tarball: file:projects/arm-support.tgz} name: '@rush-temp/arm-support' version: 0.0.0 dependencies: @@ -19472,7 +19494,7 @@ packages: dev: false file:projects/arm-synapse.tgz: - resolution: {integrity: sha512-PKSs1gos0LMkEvlgcKjm0Rx3t7kt9LrHd2zcHjDQQlj68x2AZqRqixXrs9G7+9InBWFyXL9E/K8q25KKkCe66w==, tarball: file:projects/arm-synapse.tgz} + resolution: {integrity: sha512-gnS+AzWwj3uKCAVg064c9Wzgm7hKJq+db8tLe/XAJxXqPWGG9nKtc0q0sC/AGLuT24De6jZGBvNiHb9KYWTsMg==, tarball: file:projects/arm-synapse.tgz} name: '@rush-temp/arm-synapse' version: 0.0.0 dependencies: @@ -19502,7 +19524,7 @@ packages: dev: false file:projects/arm-templatespecs.tgz: - resolution: {integrity: sha512-i/Zf3P6eq0cqB3hLbsmW5JYGoCsPzTebE/9W3vkLLgPytl6TAXkyVGk705Ubd0uAMOMF9PsAToALULf5zx1xwQ==, tarball: file:projects/arm-templatespecs.tgz} + resolution: {integrity: sha512-fK0qpWYE/TPivDe2HG8za6k/rWYQcjsVgKrkwJvTT77G237Bcp9AxuTOSBTr8rhAG43YmzuetLFf2F0a4t/jCw==, tarball: file:projects/arm-templatespecs.tgz} name: '@rush-temp/arm-templatespecs' version: 0.0.0 dependencies: @@ -19529,7 +19551,7 @@ packages: dev: false file:projects/arm-timeseriesinsights.tgz: - resolution: {integrity: sha512-qcaxrXXHz9j1L7wsQtOSwRBjCtqn049mL7cp2cBleXhZaxwHPBWlEL1yHfc1XXuBH+SGpEw9PsmSV0E7/4Lkhg==, tarball: file:projects/arm-timeseriesinsights.tgz} + resolution: {integrity: sha512-ootvGtM+S6EIlwQFOVaOZFUVjCN3Za3fD3S0j3PDVR4gsJfwnFRGwf/SdNLG1uwJpaGnmalvMjLGph7+E4xO1w==, tarball: file:projects/arm-timeseriesinsights.tgz} name: '@rush-temp/arm-timeseriesinsights' version: 0.0.0 dependencies: @@ -19559,7 +19581,7 @@ packages: dev: false file:projects/arm-trafficmanager.tgz: - resolution: {integrity: sha512-PXGzoriUH8pOZxxsnbDoYkn7UhQWLC0bydW1uXW1aKQNnSZhEWiQ7ebW+kTvJks40b4beaQXfho8nmv2EUI/yQ==, tarball: file:projects/arm-trafficmanager.tgz} + resolution: {integrity: sha512-3w4+wkFe6S1S57009dFn+AWddYAy73EJhKrrFoZFtgKcY0c9WiqHxQrNqibyB7VMUsGOy3czFdp9+maYnNLuoQ==, tarball: file:projects/arm-trafficmanager.tgz} name: '@rush-temp/arm-trafficmanager' version: 0.0.0 dependencies: @@ -19587,7 +19609,7 @@ packages: dev: false file:projects/arm-visualstudio.tgz: - resolution: {integrity: sha512-ZTBQ5hiO3FmkzfGVnh7eWH2t1rK9fuYbfs4Jh7id9eIv8Uool03CuqDX3HVWR4ybdNtvrO4eW9hxoBulKf43Qw==, tarball: file:projects/arm-visualstudio.tgz} + resolution: {integrity: sha512-eT8xtQIsuBs4dl4SC+wYDSHgOLuwoyXDb4ponzU+ApjB6tW9nH4qZ2szxGA+u9I7Aur1bhTxE+OEAGArip4e3Q==, tarball: file:projects/arm-visualstudio.tgz} name: '@rush-temp/arm-visualstudio' version: 0.0.0 dependencies: @@ -19616,7 +19638,7 @@ packages: dev: false file:projects/arm-vmwarecloudsimple.tgz: - resolution: {integrity: sha512-iSBoVhQA4YidmDMKm5kXY8ySPBPBPBgbAevjzOoGc0G1am+dmDY2Nrg4rh3WMXPQvKQZzYGEdBi8c31RyBFNaA==, tarball: file:projects/arm-vmwarecloudsimple.tgz} + resolution: {integrity: sha512-GaQkqiFuejshJA9bJvTXwQ9sIP3aIOJbgGbgIfpoQDWkLn/2fRrsE5bZYqoDQ2+RTxzUFsQcPRBiQrd3UD8k7g==, tarball: file:projects/arm-vmwarecloudsimple.tgz} name: '@rush-temp/arm-vmwarecloudsimple' version: 0.0.0 dependencies: @@ -19646,7 +19668,7 @@ packages: dev: false file:projects/arm-voiceservices.tgz: - resolution: {integrity: sha512-wjwC1xcsilmM1swl1/rQGu9soDeSlOBUAAKyU682ZVRaqlmqAQf0+Vls59qjnWolQncabYq8pGESLpPq+RqcGg==, tarball: file:projects/arm-voiceservices.tgz} + resolution: {integrity: sha512-nQ4UThLd993Hrj5rgnzcn74jgMoj260kjTtnS2ZFoEs9ZUCLxWDEvVLvMAE7WSUQfJJhdkZYxnOjdvlpk9MNYA==, tarball: file:projects/arm-voiceservices.tgz} name: '@rush-temp/arm-voiceservices' version: 0.0.0 dependencies: @@ -19676,7 +19698,7 @@ packages: dev: false file:projects/arm-webpubsub.tgz: - resolution: {integrity: sha512-lDb8BncJGdS8FUQu/OSJfYYzkygPPqZ0P1BJqupO74IWVIAHz8qvMsb16bk0iaVt0S1S1sFUbwRHXYQGtypTrg==, tarball: file:projects/arm-webpubsub.tgz} + resolution: {integrity: sha512-M/la3E8Hmbf4jUjZuJHlcFwh8mj6IwL1DkUhsZPTI8PShkyt62ED0eqkYSjH7Rk3d9eqejzt5ml5kqOD83PVXg==, tarball: file:projects/arm-webpubsub.tgz} name: '@rush-temp/arm-webpubsub' version: 0.0.0 dependencies: @@ -19706,7 +19728,7 @@ packages: dev: false file:projects/arm-webservices.tgz: - resolution: {integrity: sha512-ZqhbL8SHzp/8DMRisACAogpghLDGbI2CfjuZ530M9uWKVR1/Ft6XdINfIpQuYCzz3gLSB2qhdLV7eOCRYM+Pyw==, tarball: file:projects/arm-webservices.tgz} + resolution: {integrity: sha512-ekHUB6FuRw8WckbapaHoIrOBNkM9pyMYpvh3eAoLdJuXtuB+sWhi5AkbqMAAOmG5eTIFVcdFerLM9mF5oe7BpA==, tarball: file:projects/arm-webservices.tgz} name: '@rush-temp/arm-webservices' version: 0.0.0 dependencies: @@ -19735,7 +19757,7 @@ packages: dev: false file:projects/arm-workloads.tgz: - resolution: {integrity: sha512-MUOiI1Y8zv4ZFDeN6QiFjsgEvJOOnrTbaPkqJfXZjVFmi9lPcjB4AZOEAkuGQGJ7i4foZ6XCuI3/hGXOzE6lwg==, tarball: file:projects/arm-workloads.tgz} + resolution: {integrity: sha512-Hq5iuKGfYthKhLV3MwJJnKMBmMp+VWLMrjWtyqL/Hl1oX0I3H8k3/4awBercHCF+UwBQdLZWaJLci3tc5OboxQ==, tarball: file:projects/arm-workloads.tgz} name: '@rush-temp/arm-workloads' version: 0.0.0 dependencies: @@ -19765,7 +19787,7 @@ packages: dev: false file:projects/arm-workloadssapvirtualinstance.tgz: - resolution: {integrity: sha512-di/H4LlEHmsyf1Te08GxWeR7n8ceyE8AP5CH9ZqwMUb0a/uNTRcDRbb+iY3rBV2iSJLJh4GoSF6i38BsXRLNfQ==, tarball: file:projects/arm-workloadssapvirtualinstance.tgz} + resolution: {integrity: sha512-J+ADBzOKzJs4zOtj19h6zmBJyHdkxMTLzNw6IaXcN7NXmW47p3RxNcmd/Q7Pibowv4MT4bdbbJilJk8rNsMSBw==, tarball: file:projects/arm-workloadssapvirtualinstance.tgz} name: '@rush-temp/arm-workloadssapvirtualinstance' version: 0.0.0 dependencies: @@ -19795,7 +19817,7 @@ packages: dev: false file:projects/arm-workspaces.tgz: - resolution: {integrity: sha512-XzL5da44qxz0ss5sVZ6p89qKs9IH1FTSLHgBh0JgyGZ8HPgM+qFqDtwgaOG+1weAw4GEcPqOH/sNcDBvieDTKg==, tarball: file:projects/arm-workspaces.tgz} + resolution: {integrity: sha512-x/+dVXfl8FOWCby3FJpwv+qJ73zZVXQArVInVWkY5yar6KmCrN9qxfkLqMESzwPj7cgM2xjBj5j9/lbWa9/Mwg==, tarball: file:projects/arm-workspaces.tgz} name: '@rush-temp/arm-workspaces' version: 0.0.0 dependencies: @@ -19822,7 +19844,7 @@ packages: dev: false file:projects/attestation.tgz: - resolution: {integrity: sha512-Cjg+kS2ubVU3V2eKpeOJd9s8k/Afy+Euf0UznscBQQ/p6OhDLcAP3YfVAUSVtoWZCMkeMdEFl2EVs7yeNJ3SDQ==, tarball: file:projects/attestation.tgz} + resolution: {integrity: sha512-l+kGTQVwItgb1fkO9koHefDga+zYn/Rs9d+m8yj02ZPSFOd0a2T9qhHFbXEj7t2uGU1+uiyOBpCrR/Z/45O9+g==, tarball: file:projects/attestation.tgz} name: '@rush-temp/attestation' version: 0.0.0 dependencies: @@ -19873,7 +19895,7 @@ packages: dev: false file:projects/batch.tgz: - resolution: {integrity: sha512-BKLlTLCm94mrfJCXuXETNYwuuTBCJnTuX/Dj3gOATn3tnbmTx3lx2jLXHpS5LuKInqgs8lPe8h2KMM20h9pDVQ==, tarball: file:projects/batch.tgz} + resolution: {integrity: sha512-KZMlKB87YwC08rhriPyTaxir6Cbo0eouFiObcxdM5rVR8TwkEz7r/utYP1C21WCJxPohdSeWK6CP2rRm/prR3g==, tarball: file:projects/batch.tgz} name: '@rush-temp/batch' version: 0.0.0 dependencies: @@ -19914,7 +19936,7 @@ packages: dev: false file:projects/communication-alpha-ids.tgz: - resolution: {integrity: sha512-Hst9jYwgYIXxOkDOJ3g/8fF2DUb9ufY/6eJf9Li8cszU6rUWkqF3UarbSNtqsENlgkMn8nc38eDR+I062XhlYQ==, tarball: file:projects/communication-alpha-ids.tgz} + resolution: {integrity: sha512-GxF9Mrz2Z52WGtnDFiI52dk1UfiaENxco2vJOMdk8rO6EBPSkNzXMpdRI4VNyxdYfTsU38l43fd2J0QVZ3E3dQ==, tarball: file:projects/communication-alpha-ids.tgz} name: '@rush-temp/communication-alpha-ids' version: 0.0.0 dependencies: @@ -19957,7 +19979,7 @@ packages: dev: false file:projects/communication-call-automation.tgz: - resolution: {integrity: sha512-nPI+6paf8bm+bAp+Nah+UysteBj9B5zhZMo/wPzxE+42lCm1PaIo7SlRFlpWg7xv3QpJ98Pz/Gwy+QshONxy8A==, tarball: file:projects/communication-call-automation.tgz} + resolution: {integrity: sha512-3WzCsKgqaPTjWBwgZqFPVk6LdO5xnS72jN89U8lgBhi59FFvRYEowDILAR1bTIMN4nGmVC7HB5rkt4Proj4KTg==, tarball: file:projects/communication-call-automation.tgz} name: '@rush-temp/communication-call-automation' version: 0.0.0 dependencies: @@ -20003,7 +20025,7 @@ packages: dev: false file:projects/communication-chat.tgz: - resolution: {integrity: sha512-sMoxDYWNcQKW8VwXQm9X3lc9YBPpuVYJys7lUiudV7lxDZNPbfsZ0x3v7u3S/W4IIJQku3EHzx1lCsi6E7pyUw==, tarball: file:projects/communication-chat.tgz} + resolution: {integrity: sha512-SW3kV3WMqR2jh2SEqertR+xUpkCSMuj8dhH4sBgSrSpkj2rL9bkr6mILw0YJ7+e63+Cgl0yqFTaIUfYi3fZycA==, tarball: file:projects/communication-chat.tgz} name: '@rush-temp/communication-chat' version: 0.0.0 dependencies: @@ -20052,7 +20074,7 @@ packages: dev: false file:projects/communication-common.tgz: - resolution: {integrity: sha512-dq2CHqJUj7/jCzwrfvlplosHFpgenNZlnuVtj7P34AjaLKYV3JvkeuAo1I6nRgxf08AnByPplCKgGZMcgvicpA==, tarball: file:projects/communication-common.tgz} + resolution: {integrity: sha512-gNfo/2cMkO+kKl5G7MFLUTNujIhJ0eZDWh9k4NTc/l41ajcIpGhFqkCeoqIx2U6QGkq0JqILeNpdmxp40T3RLg==, tarball: file:projects/communication-common.tgz} name: '@rush-temp/communication-common' version: 0.0.0 dependencies: @@ -20097,7 +20119,7 @@ packages: dev: false file:projects/communication-email.tgz: - resolution: {integrity: sha512-x//4ITCLpNDIhQGqn3kWrqEVNnHZqEvT9lj0TxPOQ60XAP1Ff0nsqBMXB9bWPnHRbN+DmHJwzQVyDJkczBKfuQ==, tarball: file:projects/communication-email.tgz} + resolution: {integrity: sha512-OuCJlT8sUnZ9SsPiqOGk37mDBzEMrl+te6kMREDsr0h8T+kxKGVoeol/fzBU1IBfVL7MpG/5pETgOX0pz1y64Q==, tarball: file:projects/communication-email.tgz} name: '@rush-temp/communication-email' version: 0.0.0 dependencies: @@ -20138,7 +20160,7 @@ packages: dev: false file:projects/communication-identity.tgz: - resolution: {integrity: sha512-CaqJYe9lUMXxkmwkscjMGHgfHrgSoexwfvwzG7VSKwHx77v8c+CtLjyC24ztLyjHXzflYWB6I8rL6uV4TvpYhg==, tarball: file:projects/communication-identity.tgz} + resolution: {integrity: sha512-4RZHTKD7N4AA8CrjL3Jn+gpIsZzhMqlENpsINrwJNTw9e7ZG6IFG5yOOl7a4PD0tKfscHslLQmkInvwge2hSoA==, tarball: file:projects/communication-identity.tgz} name: '@rush-temp/communication-identity' version: 0.0.0 dependencies: @@ -20185,7 +20207,7 @@ packages: dev: false file:projects/communication-job-router-1.tgz: - resolution: {integrity: sha512-l+/94wTOHY/DWKf+pdg4pCnjpyNX2CAAHzpvLYTDKSGwk3MDRejHyueAUOHmdogB5wM6Z+D4XUEwOpUV7VTWBQ==, tarball: file:projects/communication-job-router-1.tgz} + resolution: {integrity: sha512-Pf7ZICd8zVOyvR9ic3p3osOAwEa8SW++iZMvexgtDYUVj4LGM4+B8jwQT+5eyFQfLWAA9FkD/jtS/9BOFfTuvA==, tarball: file:projects/communication-job-router-1.tgz} name: '@rush-temp/communication-job-router-1' version: 0.0.0 dependencies: @@ -20232,7 +20254,7 @@ packages: dev: false file:projects/communication-job-router.tgz: - resolution: {integrity: sha512-xRuR+PV9qOmg7+H4nEn0dRLdBf2p8e9pBK/ERM+hKXV8bbchzukyM2MeGL+zy4jy1j4Ar+lz+OLpXY2FotlkCw==, tarball: file:projects/communication-job-router.tgz} + resolution: {integrity: sha512-dwGWuO/CWPbaFAQDrWofCCHKpNsrpclkRyRcr4Sy9J7UZ2n99Zhrr4E/pBqqahr0lH5fJdbhqRpt2GnPXC1hVg==, tarball: file:projects/communication-job-router.tgz} name: '@rush-temp/communication-job-router' version: 0.0.0 dependencies: @@ -20277,7 +20299,7 @@ packages: dev: false file:projects/communication-messages.tgz: - resolution: {integrity: sha512-eZvl3T5xmJk+A4A0UFqTpxYV4TQ5eVeOwAOHXMtnZuNFL3FDDET93Ha7Wn+7UaO3nRbAjVjIu+MhaWRXz9r+2w==, tarball: file:projects/communication-messages.tgz} + resolution: {integrity: sha512-cJ+fNIlvMa0D7PzceBoIW4vxkLKrEWB5KyuhwtLRIljU/B08vmrBV9VrsqNgQelE2bnZfeVWZyIDRxwNCsfMBA==, tarball: file:projects/communication-messages.tgz} name: '@rush-temp/communication-messages' version: 0.0.0 dependencies: @@ -20322,7 +20344,7 @@ packages: dev: false file:projects/communication-phone-numbers.tgz: - resolution: {integrity: sha512-39/ssP69pw/1OYF2BbJwDdWwEBHKaoGPaapMW5wP2y88dSbJi90RP5fYhTL5AhzErpIgF4jjmY43WsKLT2yJ0g==, tarball: file:projects/communication-phone-numbers.tgz} + resolution: {integrity: sha512-s+FoHrqA5LFGwD9PbAxmLoARPDZNroSaaGiZkwvLfOT6StsapePnnjLCxiGh1FHTmmuUZOO3+mPoZsoCMdn6rA==, tarball: file:projects/communication-phone-numbers.tgz} name: '@rush-temp/communication-phone-numbers' version: 0.0.0 dependencies: @@ -20367,7 +20389,7 @@ packages: dev: false file:projects/communication-recipient-verification.tgz: - resolution: {integrity: sha512-pc3kCkUSWUxzjslJkVNVN7jyvmolZPxasuILnp9T49K/ntrcPhLf9HJ/NXpGI30F8sSuBAElCksEiLFWqIYf/g==, tarball: file:projects/communication-recipient-verification.tgz} + resolution: {integrity: sha512-raToxpwaZhkvNijRM5KQQPeyFNNPHPB3xCvpGP8T3400EEbZK8/AXhExgGVfsiWPIh+0T0Qgc4Dc+ZR3ESVM0g==, tarball: file:projects/communication-recipient-verification.tgz} name: '@rush-temp/communication-recipient-verification' version: 0.0.0 dependencies: @@ -20413,7 +20435,7 @@ packages: dev: false file:projects/communication-rooms.tgz: - resolution: {integrity: sha512-9WzQ8V3bJICGPHvdYp3lr6jnILw7/c3reSRf3pRhpx/Zhq4mXZD19DDf2C+XgkDqYOd0zg0i0Bf6R+n+AdqvZA==, tarball: file:projects/communication-rooms.tgz} + resolution: {integrity: sha512-dJUJiVv/PWc8+Daf0d8MK849btRZ6mhKUe9fY8KzDw40szhLu+O4U8geDwVF8aVkMxOg3V0Ve00wVv1+IDMXjg==, tarball: file:projects/communication-rooms.tgz} name: '@rush-temp/communication-rooms' version: 0.0.0 dependencies: @@ -20448,7 +20470,7 @@ packages: dev: false file:projects/communication-short-codes.tgz: - resolution: {integrity: sha512-AvToJvBPGoASzpJvShcF77cxKbXU0SHM1pRrkfhp0SDirGjZcIsYmm6i/sw0URcKocMAONdvuFRKF2DZOhIovA==, tarball: file:projects/communication-short-codes.tgz} + resolution: {integrity: sha512-Z8LbaHRpitiRHE0hKhjCvlj+mod3lSVab/4sFMz+dINjKLgLK0EkBBKOV1vjSLrm73aB2B0DMrYiQwVM2jVgHg==, tarball: file:projects/communication-short-codes.tgz} name: '@rush-temp/communication-short-codes' version: 0.0.0 dependencies: @@ -20494,7 +20516,7 @@ packages: dev: false file:projects/communication-sms.tgz: - resolution: {integrity: sha512-Ant+j9sEeDP7tdIEXmLQUqBlxB6gMrBU3Z9yWqGqj20DFv3NHKvcpsucAo0Or9X3q7wnFetfSH7jw/vn0PMQTw==, tarball: file:projects/communication-sms.tgz} + resolution: {integrity: sha512-pTwpMsQDUm8RmgL7Q3aJEuUPnfWeW0GNREITnHUSmDCHCy0ccDzswE759KBr4o5K7VAQhcNVYC85ybVQI27b8w==, tarball: file:projects/communication-sms.tgz} name: '@rush-temp/communication-sms' version: 0.0.0 dependencies: @@ -20539,7 +20561,7 @@ packages: dev: false file:projects/communication-tiering.tgz: - resolution: {integrity: sha512-QuvJOfyK77/npH1OhEMm8tvqXruLnJRDOMML/vSbYxM3QBm83cQQfAM6HHzxNW/JfSNEm9Q+hO0ciKZ71wjVEQ==, tarball: file:projects/communication-tiering.tgz} + resolution: {integrity: sha512-+/lUuj5yujLBlGX7mWu9gPvK8EeeMos07LYd7d+ec+GE5CRWS8nqDFzdv/hMY6w/pi9pFYsMZfhD8wkwfppwRw==, tarball: file:projects/communication-tiering.tgz} name: '@rush-temp/communication-tiering' version: 0.0.0 dependencies: @@ -20585,7 +20607,7 @@ packages: dev: false file:projects/communication-toll-free-verification.tgz: - resolution: {integrity: sha512-KkLg37Pnd5NU5R4EZDOOYfZnWdcb0YwELa6T4DNuR/TE3umc8n6zh1xDbwEZw2RH2Vh/ng9R3Q+cc6NNTueQSQ==, tarball: file:projects/communication-toll-free-verification.tgz} + resolution: {integrity: sha512-QL4+IMRWHCSn7IL67HsgXcIcrKUHvvyfrRxh9ZGOrAg5R6UaDlwAcv7vhLq5/xPL8yoTk1jiJaPe9ItsjCHHkg==, tarball: file:projects/communication-toll-free-verification.tgz} name: '@rush-temp/communication-toll-free-verification' version: 0.0.0 dependencies: @@ -20628,7 +20650,7 @@ packages: dev: false file:projects/confidential-ledger.tgz: - resolution: {integrity: sha512-eFCaoAk2IGaA53SIsOtHu1yJHxoZ1tADhuuw2VY0iFlavHw2BpCiuYYpjE/eQOHIKZlDQDT+fIeLUlPsSoAxGg==, tarball: file:projects/confidential-ledger.tgz} + resolution: {integrity: sha512-IeHVnoNcL68++YYDWRh2Cbt2e0KQfdL2yhjpvPTNH9Cj9lzmSgrxdN2a/Tq7u5fYXYCqEb7wl2xV4IpIg0pf9w==, tarball: file:projects/confidential-ledger.tgz} name: '@rush-temp/confidential-ledger' version: 0.0.0 dependencies: @@ -20658,7 +20680,7 @@ packages: dev: false file:projects/container-registry.tgz: - resolution: {integrity: sha512-PoAp2X+TwZonURuPRPOkOu0N+ZIkLOQ1Ih0GnuWvKIgn+9MqQGy1hw91qpLOXMzPDifDnSIKIh/bqNX743igoQ==, tarball: file:projects/container-registry.tgz} + resolution: {integrity: sha512-eSjgV03PUYSzyFVQ0po8aFst87AwDjron9mIonwDGz3odxtGYM2KoDis+6jchKNDRRA4wi9r73RB3bqj72JDsw==, tarball: file:projects/container-registry.tgz} name: '@rush-temp/container-registry' version: 0.0.0 dependencies: @@ -20701,7 +20723,7 @@ packages: dev: false file:projects/core-amqp.tgz: - resolution: {integrity: sha512-g+B03LVXkJLQf44u3h27ja92FtHtSSKq/TGbTgMSm8YXB1bo6HoGBRhzCIzttMJ8s136NsWOBpv1ZgnABK7qig==, tarball: file:projects/core-amqp.tgz} + resolution: {integrity: sha512-t6C8ltd1Oc0pse9zMoKBE1eQzejgsFVZFkpnZBbasQKS7VCWg5YK6LjW8rr/YlIZiS2n9OOHhaCZHpBy0jlN9w==, tarball: file:projects/core-amqp.tgz} name: '@rush-temp/core-amqp' version: 0.0.0 dependencies: @@ -20747,7 +20769,7 @@ packages: dev: false file:projects/core-auth.tgz: - resolution: {integrity: sha512-vY42cq6R6TdfQb8LIs+0TCdinq8VRK1EFLFfQwaPIiNtZI/xkTv3MIoZAm3zkGrDrNVJQEukNXAmqlfgKJDSAg==, tarball: file:projects/core-auth.tgz} + resolution: {integrity: sha512-pcT95NqTlwz4nKRpaYqn75R0R/tLXQMMq1cKU/lR6ySN4Fngk3eST8uXudXAESNcXh8MIBiB7y5vmiPD77w4/A==, tarball: file:projects/core-auth.tgz} name: '@rush-temp/core-auth' version: 0.0.0 dependencies: @@ -20782,7 +20804,7 @@ packages: dev: false file:projects/core-client-1.tgz: - resolution: {integrity: sha512-r1MX0WreTXkb92PKYmpsANIjK6Ivm46uBrSadpLytScmEzMCpab6kA4qWKv2xRGgNPN9r3SBab9VRWmBgYhUyQ==, tarball: file:projects/core-client-1.tgz} + resolution: {integrity: sha512-6tGiv8BpGy8eTYorXLXYGoEoovqgJ5M8U7w3ccqBkl0YfrwGrDhPkvu3scHqUmdXgUst5PvqpNa8CMsRibNcew==, tarball: file:projects/core-client-1.tgz} name: '@rush-temp/core-client-1' version: 0.0.0 dependencies: @@ -20817,7 +20839,7 @@ packages: dev: false file:projects/core-client.tgz: - resolution: {integrity: sha512-l1rA+2W+9xLNs/CY/qYYUEe+0OVsUP4urW+DPuXQ6Ijqu6d77x1EugNsyu5m3C98RiS/56O9iX4grAAbE5L4yA==, tarball: file:projects/core-client.tgz} + resolution: {integrity: sha512-+IwFRR6/0hBILKGH+TtdT1dSTs+BzL1ohaN2xm3tem4VWCfyMai+gBlru12HrjNoE6dsIMkUJz4MNCpuf9NOfw==, tarball: file:projects/core-client.tgz} name: '@rush-temp/core-client' version: 0.0.0 dependencies: @@ -20852,7 +20874,7 @@ packages: dev: false file:projects/core-http-compat.tgz: - resolution: {integrity: sha512-hbJrSt3XopE7ZHKJGEl+TKFjXDfVhC5SShS0gMtcjGspzz4JJIp0vNRufWCp/QQl4Lrrk2DUL3FvFJjmzUm+yg==, tarball: file:projects/core-http-compat.tgz} + resolution: {integrity: sha512-K7ibMNnAEkccwhD2QMmnVJ6p+N9r+eztB/A4OlfOWyIypu+EpvHI1lE3m6xK6aDBpPXTOZXssFml5gayhOtRhQ==, tarball: file:projects/core-http-compat.tgz} name: '@rush-temp/core-http-compat' version: 0.0.0 dependencies: @@ -20886,7 +20908,7 @@ packages: dev: false file:projects/core-lro.tgz: - resolution: {integrity: sha512-yvw1a406p2ExpVDwIKMP1q0s9OaH5/55IrRIczUwApCnro0Gt8gJ2ttJP2wqQTssMUCv7AZEIOV/OPazBC/R/w==, tarball: file:projects/core-lro.tgz} + resolution: {integrity: sha512-KKQeY14iQ2AeHpCZ4en8rnkkU3cJj6X1i582gmqUa6FuChNikLfJ0ilwCvCiC+N+hnld4dCrHNaXRz7H4F/kjA==, tarball: file:projects/core-lro.tgz} name: '@rush-temp/core-lro' version: 0.0.0 dependencies: @@ -20921,7 +20943,7 @@ packages: dev: false file:projects/core-paging.tgz: - resolution: {integrity: sha512-oH9FpdaW8liSxolp4eS/BGk7Yf0Lqr9a/tU0FIAtQEWauOLZW5tPQcDjkFhVgS62iwOiLFytEQiXJ2rNl8KLug==, tarball: file:projects/core-paging.tgz} + resolution: {integrity: sha512-WAVql5zt+h9ibZYDLDE0SiHEfDPOhhB9b2oskVp0pstHTpFlrPEhHBU+Dv7HuqLL1Ll7EogLwTy81FlZcs44hw==, tarball: file:projects/core-paging.tgz} name: '@rush-temp/core-paging' version: 0.0.0 dependencies: @@ -20956,7 +20978,7 @@ packages: dev: false file:projects/core-rest-pipeline.tgz: - resolution: {integrity: sha512-DBScWFbVyqwjlirL7TqPl0+Af3MTV0A10wBU6JbwWuARhftgQkQJIkcKuGfdBUk17Nl+SmeDw8D4insaHCOK1w==, tarball: file:projects/core-rest-pipeline.tgz} + resolution: {integrity: sha512-b7alNTHtvyIB7LodYrM06A1F8ScsOlc4Qu77ug+YBzC8V7z9AJ4cCLUXfOzo2vJmoIHQa+lcClTzVnPv9OmolQ==, tarball: file:projects/core-rest-pipeline.tgz} name: '@rush-temp/core-rest-pipeline' version: 0.0.0 dependencies: @@ -20993,7 +21015,7 @@ packages: dev: false file:projects/core-sse.tgz: - resolution: {integrity: sha512-nACU82+/xu+3R+P+TUswIGnbpY16h5NJ9dACYinDpQP/VFtePh/TILV0K7wJUNnKuojDEGgX1/hHwoNByyn5lQ==, tarball: file:projects/core-sse.tgz} + resolution: {integrity: sha512-8Y3sGx1Vwi7VLyhYsuIikHKOqCNgLbTCNBoCX+1hOhsOPMvYM3pJ20WMmpp1IzxsxcEoPqfxQDYPjYuBDpzhqw==, tarball: file:projects/core-sse.tgz} name: '@rush-temp/core-sse' version: 0.0.0 dependencies: @@ -21032,7 +21054,7 @@ packages: dev: false file:projects/core-tracing.tgz: - resolution: {integrity: sha512-P9DjRTPs1GTatmP05c1n+5xGiX2CLJASDCIjKV3xcOcKVEBPGvdHtTE0xjRAZ5BNHBqi/Rlfw3Xz6WsJUNVu4w==, tarball: file:projects/core-tracing.tgz} + resolution: {integrity: sha512-JCu3kVTLdmvw/Gp0fWaaNJDayj38yplVojZdweIszXouM7OQyClHZlvXaGvQlZ/i11RZACcfMAj0m0IHX908AQ==, tarball: file:projects/core-tracing.tgz} name: '@rush-temp/core-tracing' version: 0.0.0 dependencies: @@ -21067,7 +21089,7 @@ packages: dev: false file:projects/core-util.tgz: - resolution: {integrity: sha512-B13gfVDXgrdZaroUn2k0tUXo7zMDnTrFRB36DFqILqoVnAYszEFBBNQnt9yNW7tl3DFDr8P6/hjnCPKjzggqqQ==, tarball: file:projects/core-util.tgz} + resolution: {integrity: sha512-hDmD6jAO3QSlkuv324M813c8pkkNDToiPIoJhia9dPCFT/qRhxAO9FYSJut+GWiGFhpP0thBACSlfIxU4istjw==, tarball: file:projects/core-util.tgz} name: '@rush-temp/core-util' version: 0.0.0 dependencies: @@ -21102,7 +21124,7 @@ packages: dev: false file:projects/core-xml.tgz: - resolution: {integrity: sha512-g90A38K7q3GLkVSO/GK38tljI4NZNr536bRaYqp7bSzL7+iMMnxHvC09tZOvrjgNMOpa1QU1rjDv5hgH0NGfYg==, tarball: file:projects/core-xml.tgz} + resolution: {integrity: sha512-8rnx0NlVLTPyXFZECO1XK55ppZN8jmnhd/Z+kWHCTa4KOcyGWA0uqdSYdj55ew3XmR1v2ARPK62D38z3sa/yhw==, tarball: file:projects/core-xml.tgz} name: '@rush-temp/core-xml' version: 0.0.0 dependencies: @@ -21139,7 +21161,7 @@ packages: dev: false file:projects/cosmos.tgz: - resolution: {integrity: sha512-6JYVV/edBloz/AlX/hsaHWjnJry75gDvuUiRWs5DGUE44RI7IYxH8qer4cOjqpwTie86waUEf8Bfo0zgNYCZsA==, tarball: file:projects/cosmos.tgz} + resolution: {integrity: sha512-4T6aUKuID/YUr6KlCqT6aE2OsbJGosLPxxt/OY3VyPSstF8HgIsXM1HfyWvCpJ1362PhTlX1WaBvVxlVyYZYPQ==, tarball: file:projects/cosmos.tgz} name: '@rush-temp/cosmos' version: 0.0.0 dependencies: @@ -21180,7 +21202,7 @@ packages: dev: false file:projects/data-tables.tgz: - resolution: {integrity: sha512-0k9NnYVxTlxr90N8QDS6wWZ3748dwnUv3xFk02PWpnt0Gq4pGyc6XoV0mUEmqJuT0udPnp604zLUssa1Fjdu3w==, tarball: file:projects/data-tables.tgz} + resolution: {integrity: sha512-uQSpb+axAGR2DiEFq3AMMNAKxHLjZkD8sE5X4K8XidvFweUv1dRdOayMaSDDNdJo4R3dffWw4+Jfs8438o5XKg==, tarball: file:projects/data-tables.tgz} name: '@rush-temp/data-tables' version: 0.0.0 dependencies: @@ -21224,7 +21246,7 @@ packages: dev: false file:projects/defender-easm.tgz: - resolution: {integrity: sha512-rvBnctSZ1zRdF13oUGU6cvV6Hw/xCuv7PZ/g+fSeupgkM+BYJOY7SJ8nEODkIwD7DMKYOPN1GSSRd6rQPf655g==, tarball: file:projects/defender-easm.tgz} + resolution: {integrity: sha512-JhUtBnCSyefgcaH4yHS9vFQBO64YTZuqRNH+KJEn034pE+9rZFg111XeCE7TTaocM0eCq4GBdmKo/j10+Kaq0Q==, tarball: file:projects/defender-easm.tgz} name: '@rush-temp/defender-easm' version: 0.0.0 dependencies: @@ -21271,11 +21293,11 @@ packages: dev: false file:projects/dev-tool.tgz: - resolution: {integrity: sha512-yl21SxCggTjpbZ/j550rndI5vZfImPECakVjqUFAOF184WAAcxBJL4DxEUQZzy1wxeJ7RNhhQny31qgWUGIksg==, tarball: file:projects/dev-tool.tgz} + resolution: {integrity: sha512-66IidRFwPa23K2J6Gdws3gd3uYJ1jWzv5dWcCW8gzjBAu7nonW/XibhqDhX7HX+ThJRgGBde96Cx2Hx5xQBVng==, tarball: file:projects/dev-tool.tgz} name: '@rush-temp/dev-tool' version: 0.0.0 dependencies: - '@_ts/max': /typescript@5.5.4 + '@_ts/max': /typescript@5.6.3 '@_ts/min': /typescript@4.2.4 '@azure/identity': 4.4.1 '@eslint/js': 9.2.0 @@ -21341,7 +21363,7 @@ packages: dev: false file:projects/developer-devcenter.tgz: - resolution: {integrity: sha512-n9J1fkU8qmrEvKcSx+a/o5ZJGJn3XCWlwqmnRnB/DijguwLzowP0Kw10wlXfRhquIDXqdE1hJRcEAiggZTuSIg==, tarball: file:projects/developer-devcenter.tgz} + resolution: {integrity: sha512-uoCOlXj+TaX0kIPgUtfpcD8NvDaUw6JrjVkNS61BTdHW3G1HbcBSMfPS80aDFasJbIzMMSHzb/LEmDSZ1eQhWg==, tarball: file:projects/developer-devcenter.tgz} name: '@rush-temp/developer-devcenter' version: 0.0.0 dependencies: @@ -21380,7 +21402,7 @@ packages: dev: false file:projects/digital-twins-core.tgz: - resolution: {integrity: sha512-znhU7vJ4nHimuS/O5H9dLFLSu9g1whygu89tf78A3GR3vdR/Tz4rHYQdtLS2oxrjBL31I+6QWi2gQaUAxKcVDw==, tarball: file:projects/digital-twins-core.tgz} + resolution: {integrity: sha512-4+pRlXZu4oNBk8Vp+vPMrfCS+BEA4qoLjs8eEAhjW4h97nrBUMtTqwviiDbKhx1jNzcg80sRoZPKBeaT47DYMw==, tarball: file:projects/digital-twins-core.tgz} name: '@rush-temp/digital-twins-core' version: 0.0.0 dependencies: @@ -21426,7 +21448,7 @@ packages: dev: false file:projects/eslint-plugin-azure-sdk-helper.tgz: - resolution: {integrity: sha512-27G4YMP9kFYRVqVV1FcB6pviLTdnLBTlpImmDs2ZkhZYygGbiCxw60TiWru2oZt3cKCzE9RakCB3YdZ8Po+lCg==, tarball: file:projects/eslint-plugin-azure-sdk-helper.tgz} + resolution: {integrity: sha512-BNAjKfF+QfoGeAHl3ED/z/aDIJTM5ylb7gO2V6q5bwvhJHnCFWTNm0lRd0jK9c3JVyIxD+LWPJO0P2i0hGXNiA==, tarball: file:projects/eslint-plugin-azure-sdk-helper.tgz} name: '@rush-temp/eslint-plugin-azure-sdk-helper' version: 0.0.0 dependencies: @@ -21455,7 +21477,7 @@ packages: dev: false file:projects/eslint-plugin-azure-sdk.tgz: - resolution: {integrity: sha512-muFv5+h1sNOv0yYYxjJdjSCouEQ9jEVZx9W/re7tT9lULsfV/u9JbV5vLFRAQJm6mHdOSorK8tEIzX4/VnTGvQ==, tarball: file:projects/eslint-plugin-azure-sdk.tgz} + resolution: {integrity: sha512-PmDtKMlzVHnqzw+ALXhDOvsHlS6tzEfC0NCMpeNeidFcxzG2PKpen3KYfea4aCIzqJuFMePAdg5fwf1wqdQ16w==, tarball: file:projects/eslint-plugin-azure-sdk.tgz} name: '@rush-temp/eslint-plugin-azure-sdk' version: 0.0.0 dependencies: @@ -21507,7 +21529,7 @@ packages: dev: false file:projects/event-hubs.tgz: - resolution: {integrity: sha512-y91y9ncES2zFoF1c8ruoEs2saKnE6hf7eZ3va7ky7rKcSnbwPYJ0cTX00kYGlI4sd/wDa5KT+HRzStJAuVuDZw==, tarball: file:projects/event-hubs.tgz} + resolution: {integrity: sha512-xLnyilBbbHQfmzOAAd5SjygGVv4ge2nrp4WzLc8ifOjRhBLsWdDXsg11j4nGj0/z5/qC1mM6tDtAdoKEF4moiA==, tarball: file:projects/event-hubs.tgz} name: '@rush-temp/event-hubs' version: 0.0.0 dependencies: @@ -21564,7 +21586,7 @@ packages: dev: false file:projects/eventgrid-namespaces.tgz: - resolution: {integrity: sha512-MSAg5HuRAKu7XbLpnnpG8gJKF0oe8x0IB7hcWXhwWftzHuthv64uCJ/pzelKlDFxlmMFC+mtSrXNbJJ53SsWjg==, tarball: file:projects/eventgrid-namespaces.tgz} + resolution: {integrity: sha512-9PoFq2uCsWu9t+azDxQiQacowRkaO7C99Vp9k5ZVA3otIOMGtaZyMcco04bbhoH5YQjQeLdut07saZkt0a1T6A==, tarball: file:projects/eventgrid-namespaces.tgz} name: '@rush-temp/eventgrid-namespaces' version: 0.0.0 dependencies: @@ -21612,7 +21634,7 @@ packages: dev: false file:projects/eventgrid-system-events.tgz: - resolution: {integrity: sha512-8WbGkXYl2meq4wlzgQHRvsUFiHOXS1XABhUJIOPb05FXEpHaDaf72phWQYUuaFUjPEMjJUPw3D70mgoDaDQQqA==, tarball: file:projects/eventgrid-system-events.tgz} + resolution: {integrity: sha512-+PlaZmzoItgLPloB0EJh3W+kkB0Sq/oYt4fBLJ/OGdhIEIQYJIY6d4sG0zvsAL3TmJbA0LnKTHyxVHRbdzJDfw==, tarball: file:projects/eventgrid-system-events.tgz} name: '@rush-temp/eventgrid-system-events' version: 0.0.0 dependencies: @@ -21660,7 +21682,7 @@ packages: dev: false file:projects/eventgrid.tgz: - resolution: {integrity: sha512-/aIxYWOUqFBmzyifimWB/SUZaSdEp8CoZTZD9/kw/el9YvVs9VcAr8BHvvwZTMy3MflejabDNLAnKnwyoKYkBg==, tarball: file:projects/eventgrid.tgz} + resolution: {integrity: sha512-d/axieyfjMweYvEOcRvhXbAG9YtIImODSEF8zPwZVBuh6jiy/eLS/jYJe+twQyd58TPx176KPTqSCiw1GncRjw==, tarball: file:projects/eventgrid.tgz} name: '@rush-temp/eventgrid' version: 0.0.0 dependencies: @@ -21704,7 +21726,7 @@ packages: dev: false file:projects/eventhubs-checkpointstore-blob.tgz(chai@4.3.10): - resolution: {integrity: sha512-mLZ4Kje5JcvS1tsSD/hOVYGlHisB1zhpvanaIXnA8W0wIRuoSk01aF0iZQsBCp4bmFTERX2JSvU9O1iTVHSLxw==, tarball: file:projects/eventhubs-checkpointstore-blob.tgz} + resolution: {integrity: sha512-5oCF4NJigpz0RnRKVAKJccgluWKa7ZLliD5B2s1bL6COrNJe/u4td0vWgy435S3Db51+VeEn9ICIT/tPz3RcRg==, tarball: file:projects/eventhubs-checkpointstore-blob.tgz} id: file:projects/eventhubs-checkpointstore-blob.tgz name: '@rush-temp/eventhubs-checkpointstore-blob' version: 0.0.0 @@ -21755,7 +21777,7 @@ packages: dev: false file:projects/eventhubs-checkpointstore-table.tgz(chai@4.3.10): - resolution: {integrity: sha512-3OofgMgoym1F48jfUCM3jHJkiOvrdFT+EQYeAAOlKGhiU57r252IlWb1OZduveLlJMaGqFzekFU778u9HaLxQQ==, tarball: file:projects/eventhubs-checkpointstore-table.tgz} + resolution: {integrity: sha512-rwWimWyJQ4ooozrWuSJGfH3M+p7DtY+Y9fqinWkGuPiwtbqJd5aqD17axilByXM4+UCGcWqrSlUI2MSVyVg39g==, tarball: file:projects/eventhubs-checkpointstore-table.tgz} id: file:projects/eventhubs-checkpointstore-table.tgz name: '@rush-temp/eventhubs-checkpointstore-table' version: 0.0.0 @@ -21805,7 +21827,7 @@ packages: dev: false file:projects/functions-authentication-events.tgz: - resolution: {integrity: sha512-aApTAGIYOhQDXKLIYOVHwMjF3f5Zvlr2g33Oizc4aQQ9oRDztcJDp5KHBEtV+pcMOBzE3uXMJhbpmBf8THjEpw==, tarball: file:projects/functions-authentication-events.tgz} + resolution: {integrity: sha512-HQOnyBSn4Dew4tzB4kwnmnm3hyfj1wb3fbdPE/SnYOzzn+9DK7/vK+gVsSwTVTUqOyr7RLxFYIThyyrRttTbzQ==, tarball: file:projects/functions-authentication-events.tgz} name: '@rush-temp/functions-authentication-events' version: 0.0.0 dependencies: @@ -21850,7 +21872,7 @@ packages: dev: false file:projects/health-deidentification.tgz: - resolution: {integrity: sha512-ViyKG5CrMCQrD+XtF9roPgzipnAayLDbLQtJC8XRYIqFnfkSvIoc+QMUH++JM5Dh9RwSG9yI3rL244bkqlojlA==, tarball: file:projects/health-deidentification.tgz} + resolution: {integrity: sha512-XIXPEX7GVWacOhCOfRcyg/Ignam8Gec8EeOIyWqmUdB+YoRtuGmSsPdDzATSgflVTrym+ZBKcKPDm9PZxG1gnw==, tarball: file:projects/health-deidentification.tgz} name: '@rush-temp/health-deidentification' version: 0.0.0 dependencies: @@ -21889,7 +21911,7 @@ packages: dev: false file:projects/health-insights-cancerprofiling.tgz: - resolution: {integrity: sha512-iaLOhJmMJm++SARTYyq0zF/HqQOt+X4cthNz+4HPsorM9Vl3l4CfKQGx7D54XNpJMxnXls+/W/ibLNrXluGHhw==, tarball: file:projects/health-insights-cancerprofiling.tgz} + resolution: {integrity: sha512-qZASX+wdO+x8kPONr0yOUPpZcNw0IKUZFINTfsCFzJqNibiod7Ap9FxZt0n3vOBbEHAf/BSiF+IzddBfO7iqkA==, tarball: file:projects/health-insights-cancerprofiling.tgz} name: '@rush-temp/health-insights-cancerprofiling' version: 0.0.0 dependencies: @@ -21936,7 +21958,7 @@ packages: dev: false file:projects/health-insights-clinicalmatching.tgz: - resolution: {integrity: sha512-G1r3XaWFx8dG1fjDTjL0baWEuJK4GyNTWgHIiwOrcwGqrtv6FvXh95VfrV8rtbvYHVRH8GL7uUaSY3B3ufJiow==, tarball: file:projects/health-insights-clinicalmatching.tgz} + resolution: {integrity: sha512-QNp0IcY46zw6+LB5UIh6MjD6gs/oXIiwjNtXDmWmYxhssBvu3GayP4K6Ut3SFvTd7xn579W/3WeQZDbDBIUlpQ==, tarball: file:projects/health-insights-clinicalmatching.tgz} name: '@rush-temp/health-insights-clinicalmatching' version: 0.0.0 dependencies: @@ -21983,7 +22005,7 @@ packages: dev: false file:projects/health-insights-radiologyinsights.tgz: - resolution: {integrity: sha512-4YeJpaqgwEWqufa1UWVwYiRpuYJqfjtl97249uisM3EMwqtcEL/VEGUCiJhI8E2v+FadetiAUAtueSGeIyCdbA==, tarball: file:projects/health-insights-radiologyinsights.tgz} + resolution: {integrity: sha512-44JXAxsojj6fQ7ct3Sb+gX0xZfDYHMWZhDHpp8jz16OI1LV+kOFcqKuoTcNCxdP0Yl5r69V7sCA4I4bwyun4bg==, tarball: file:projects/health-insights-radiologyinsights.tgz} name: '@rush-temp/health-insights-radiologyinsights' version: 0.0.0 dependencies: @@ -22030,7 +22052,7 @@ packages: dev: false file:projects/identity-broker.tgz: - resolution: {integrity: sha512-ss649R/5rBoPFVFHrNY7emScp1WTGFMkH5d/5yv3Ed8FM8cPXzumQksLmpVURrWetavMkpshUCRI0Cvh6vBHzg==, tarball: file:projects/identity-broker.tgz} + resolution: {integrity: sha512-PFAk0qtrV4+Sx0qif29ZbSuTOJQNNOzs0TdBNMSawfI59DE804G/1J1RylXQ3Hm6t0TLNseOODREAN1M9P8fnQ==, tarball: file:projects/identity-broker.tgz} name: '@rush-temp/identity-broker' version: 0.0.0 dependencies: @@ -22058,7 +22080,7 @@ packages: dev: false file:projects/identity-cache-persistence.tgz: - resolution: {integrity: sha512-PzQ8h2R6clNkNYJBIGwa7eQ0f5GVbjvBPCp3X5xVqiEciCZQ0hEVSoWXHgue9HQjecAL6z0UTEvt8Rrw9DXA8w==, tarball: file:projects/identity-cache-persistence.tgz} + resolution: {integrity: sha512-W+kRvM/Cfk27Ca3xQIBmp69UTaGKrua5pWVHQkVc4xB1pnAenZpDhioVTkfWiVzJxHIaTiEFDGYNIfet2BiL7Q==, tarball: file:projects/identity-cache-persistence.tgz} name: '@rush-temp/identity-cache-persistence' version: 0.0.0 dependencies: @@ -22094,7 +22116,7 @@ packages: dev: false file:projects/identity-vscode.tgz: - resolution: {integrity: sha512-wFd6ItZFl4HOb8m8ZPfGSmm9HOJCMRE5xl3jD6x2AIayHZLnt2Lhssy12iHhgJRmeIM5OAIeCGy5aXfu0frp5A==, tarball: file:projects/identity-vscode.tgz} + resolution: {integrity: sha512-HNDxqfPbOgYboSoUcjAOtUZueIvtxWEfZT6r2YjOfo2GEBWzhWHz9qgBF337CYJkFGSHecaecyzu3bR4TutbPA==, tarball: file:projects/identity-vscode.tgz} name: '@rush-temp/identity-vscode' version: 0.0.0 dependencies: @@ -22129,7 +22151,7 @@ packages: dev: false file:projects/identity.tgz: - resolution: {integrity: sha512-U8XKWGJqdGHi6sSgZpYXjKSNJOt0O9ICO9SvUHL373m5mQWosGv/dWw6XKsq8MsCV9UWjtMi3xIsiQPVafzsGw==, tarball: file:projects/identity.tgz} + resolution: {integrity: sha512-vRMkof8kOthU6CPj1EHndq1ELLA0S7iT4M1d3sH7B+50Iy+ibcgwmu4k6VhI5ZmDvwCBFdKo7GxAjyF/6Y9mKQ==, tarball: file:projects/identity.tgz} name: '@rush-temp/identity' version: 0.0.0 dependencies: @@ -22185,7 +22207,7 @@ packages: dev: false file:projects/iot-device-update.tgz: - resolution: {integrity: sha512-zk2ybn46growB0yFOMyVGZQ9VxGCtcG6+uQlHcMuz77JbjC4I4uk3pwq1KtwcLLXMrvGhn0JvLbhCWfB4rWmkQ==, tarball: file:projects/iot-device-update.tgz} + resolution: {integrity: sha512-NIgNsJXGBuXSfW4WwjQotagmMMKnamlEOPUZYptkQeCRy/3rIqc81WWSXxRau3e3TEI6Xi/KjxguY/CTzeMCBw==, tarball: file:projects/iot-device-update.tgz} name: '@rush-temp/iot-device-update' version: 0.0.0 dependencies: @@ -22232,7 +22254,7 @@ packages: dev: false file:projects/iot-modelsrepository.tgz: - resolution: {integrity: sha512-t60+FhsdAnE22BzXtH/yp8RKsM/wRnCUM8WnlmCDeIpjzktE2sSs0nJgi8sW/6XXZqHdZMAVX6l7Co1Jx55FpA==, tarball: file:projects/iot-modelsrepository.tgz} + resolution: {integrity: sha512-BckB8vSfxgT61GGc6n0zF5nEzoE8UJeZMgvqqA/1JiniYwHn3ykExCp8kUvW64G8wpcqXcY+he+MrOoiITZlRQ==, tarball: file:projects/iot-modelsrepository.tgz} name: '@rush-temp/iot-modelsrepository' version: 0.0.0 dependencies: @@ -22276,7 +22298,7 @@ packages: dev: false file:projects/keyvault-admin.tgz: - resolution: {integrity: sha512-dsunWQMsLsdiguSu5LYZU7kZwiLAQ9e0yX0LYziOIseDXRYtDITozBl/EheUzQ4q4xfKUhD7imk+OIwkppoSmg==, tarball: file:projects/keyvault-admin.tgz} + resolution: {integrity: sha512-apDSonXIGR4V18FGs4+t4A5R3GScYn2hViO2mo1U5J2f4IOcXH8zPgggu5qcAU/M49MLBeEOBIw/iJchWm+zaA==, tarball: file:projects/keyvault-admin.tgz} name: '@rush-temp/keyvault-admin' version: 0.0.0 dependencies: @@ -22315,7 +22337,7 @@ packages: dev: false file:projects/keyvault-certificates.tgz: - resolution: {integrity: sha512-d+U46KzZabZyNkFyt72mx/vKmQTJMHnF5iaXIOMXXiEM+CYtjb2ozM6wWVN4cJOInz/zcIb7i2SiXoVI6rj14w==, tarball: file:projects/keyvault-certificates.tgz} + resolution: {integrity: sha512-kR/wShtnhfbQpdLgfQw2L4t6ezDCK2D9AbkAwo8G46aCQJ7UQF+2olw+92HoBz7UbHQ9jnN/iChzaoO4B/mBkA==, tarball: file:projects/keyvault-certificates.tgz} name: '@rush-temp/keyvault-certificates' version: 0.0.0 dependencies: @@ -22360,7 +22382,7 @@ packages: dev: false file:projects/keyvault-common.tgz: - resolution: {integrity: sha512-Ciy4ViV4tjk8xKOTPuF4cCbgdA9mmzn3NZSFUIXOwSikKzy7xGS0H8UYKLamMAry9/QnGl/tlvXzVJPBRuH21Q==, tarball: file:projects/keyvault-common.tgz} + resolution: {integrity: sha512-FzBLdTUe4haDqY+etOyz3Yz/NiwDsAiX9yii4t9Pw9gRWFpPnY0GpMCoz21d+iCo7isBWSz2+cECmPvGjwqP4Q==, tarball: file:projects/keyvault-common.tgz} name: '@rush-temp/keyvault-common' version: 0.0.0 dependencies: @@ -22403,7 +22425,7 @@ packages: dev: false file:projects/keyvault-keys.tgz: - resolution: {integrity: sha512-VetOwAKfNBnTHJcgw+wKZMS01iNqsw+ft2gigIfPKqwGFeqfYJVKvB6DgQHYBR31WNEUhG5Vj83m5yiLtr3kJg==, tarball: file:projects/keyvault-keys.tgz} + resolution: {integrity: sha512-pCkhdlB+/4VM66NrcwbCZexCAiXOSeDVeu+rGvrSIbXBjsQFp3N0GeKHHsPtj4CNMqdJDenIbtC93xT5nYWCFQ==, tarball: file:projects/keyvault-keys.tgz} name: '@rush-temp/keyvault-keys' version: 0.0.0 dependencies: @@ -22449,7 +22471,7 @@ packages: dev: false file:projects/keyvault-secrets.tgz: - resolution: {integrity: sha512-xmeGzSbTsxLCnWVoHNrC4ZKtWauFI5YqrEV6yqXsMEOHr7EY7i3dOsfQLQuPQqt3sbRwlCd+eyTzhJ5bfISyYA==, tarball: file:projects/keyvault-secrets.tgz} + resolution: {integrity: sha512-k905gOIrYFWE/UBqq+Tj5Ujcfhwc/E+FhUmM3jBMYm/45yD5bJdRJf8gvhKHCn6TquYTCvJXRfN0PzcXC1mxjw==, tarball: file:projects/keyvault-secrets.tgz} name: '@rush-temp/keyvault-secrets' version: 0.0.0 dependencies: @@ -22492,7 +22514,7 @@ packages: dev: false file:projects/load-testing.tgz: - resolution: {integrity: sha512-UVEdI4STub3eQDH51YsW5HxzBZp/YB+ovlVwawirNDIn2L6JpIVfjrlsjphxnKSM9APAfpGKpvcu7C18PdQzQg==, tarball: file:projects/load-testing.tgz} + resolution: {integrity: sha512-2jBNN0e/ojZ4JuwLmwda6pyV37Pc3kKeYaqe6wnYmk6uyLypJq/6o2p1EKlOSB/dN4I5A8CTh8ehsdnb+7OOAg==, tarball: file:projects/load-testing.tgz} name: '@rush-temp/load-testing' version: 0.0.0 dependencies: @@ -22540,7 +22562,7 @@ packages: dev: false file:projects/logger.tgz: - resolution: {integrity: sha512-8PWl/8/78SftC/QDnuBQdu/H2CZrY5i/4vF2QTNqGz6vPAvckpE7HSEgKEy2zb8yBizQTI8So0xdJi198CEeUQ==, tarball: file:projects/logger.tgz} + resolution: {integrity: sha512-9Fy44VVr7h0hj9E1JnUJiJcohLZNyBM16mlo9/7nl8k5oRyuxY4IQZ+3/kIdLGSxzccLcuuFackQlJMeL27s+g==, tarball: file:projects/logger.tgz} name: '@rush-temp/logger' version: 0.0.0 dependencies: @@ -22576,7 +22598,7 @@ packages: dev: false file:projects/maps-common.tgz: - resolution: {integrity: sha512-Scmb3fdFE7LS6CWNHJJBhihI+8U9v1K6eM/YyqLNgRG3HCKdv5mGHiGuAimXP4phBtlNyR0yJuijZQzM1pWNTA==, tarball: file:projects/maps-common.tgz} + resolution: {integrity: sha512-EV966yIMO5f7uK/9KkDxD6VAmE5LNw7Lm1OOc73c1Mch5zPDgjeMAMtiOe1yEuVW6PaQb/Bu9LVLg5w9DiFgDQ==, tarball: file:projects/maps-common.tgz} name: '@rush-temp/maps-common' version: 0.0.0 dependencies: @@ -22594,7 +22616,7 @@ packages: dev: false file:projects/maps-geolocation.tgz: - resolution: {integrity: sha512-gTtxwimbxkskwgPt9cKiYiy3iZl+RRglzPwid6UeBCxz7fVVWHRj2p1bnZ+vX/QtAbRUkb4cqXFjOpimRVGPzw==, tarball: file:projects/maps-geolocation.tgz} + resolution: {integrity: sha512-B32BArCBNnzAVbittEOG3gCu/Sa/lrETT49YR674Ak2amg1B0PeXHhRIOvx7WdcPdVfWLzPyERFHwaBUrCxxiA==, tarball: file:projects/maps-geolocation.tgz} name: '@rush-temp/maps-geolocation' version: 0.0.0 dependencies: @@ -22640,7 +22662,7 @@ packages: dev: false file:projects/maps-render.tgz: - resolution: {integrity: sha512-TiH597tRmg6pScwBjUdnDoGftilr1SyHJuFGgpZs2l56yVDY6Jb/SjegtKV6cH84iSGSJSq9e999JJ5NYzr0sQ==, tarball: file:projects/maps-render.tgz} + resolution: {integrity: sha512-mxIGWKhN6Wd9Vse/Cw1czC0pd0AELj30/E2Y3KCQz2sYv1qjLNUkhVV3AfN8kAjdbTKgPlLu3K4BCWVS4RfGvQ==, tarball: file:projects/maps-render.tgz} name: '@rush-temp/maps-render' version: 0.0.0 dependencies: @@ -22686,7 +22708,7 @@ packages: dev: false file:projects/maps-route.tgz: - resolution: {integrity: sha512-W5gYVlNKM5TluV8iP+uE+/dBJEGYD2thLp5f5UPL/WK15hmPWlljOj6I0MP52/8t9noWXQWl5Apx+5DYH/49Uw==, tarball: file:projects/maps-route.tgz} + resolution: {integrity: sha512-BLcJ2RFitpTOSAlafh07/0secT/Iwj3bBxuLTEeouvYQS4C3hTlrUCwYcglPI5aglo6du82YWKM6Ph1Bb5wncQ==, tarball: file:projects/maps-route.tgz} name: '@rush-temp/maps-route' version: 0.0.0 dependencies: @@ -22733,7 +22755,7 @@ packages: dev: false file:projects/maps-search.tgz: - resolution: {integrity: sha512-qc4dU/o9vIowyU7WlvnEhwr2+ElkexTxWWwZpRVE8BS5ft3mwMkivWp2yNJ9hGLawzljvtsKJrgBp8TJ0/3mlQ==, tarball: file:projects/maps-search.tgz} + resolution: {integrity: sha512-VpxWxc7rI52RgpBxO83u2jxBs2cBrwSe1NMlXNv6BROPLMkT9tpyw72A0mAoa4TKbSucxZ+MjD3x8zmif3RK3Q==, tarball: file:projects/maps-search.tgz} name: '@rush-temp/maps-search' version: 0.0.0 dependencies: @@ -22780,7 +22802,7 @@ packages: dev: false file:projects/mixed-reality-authentication.tgz: - resolution: {integrity: sha512-adXYa6cLCcF45ztJ7aE2CgyUpR5mEQzxnWxqvkoEmnE5yRMx7G6371i0SFmOXTZMYEjiSnUbaG9v4TwpOgkK6A==, tarball: file:projects/mixed-reality-authentication.tgz} + resolution: {integrity: sha512-2lGfF6hN64COe2qoohcBPdnw9zFX8JarL4VqEjSz+aClIT0sCt1XW9+u5HUDb2BrLe2uBJZtHFQKy02CZH8yHw==, tarball: file:projects/mixed-reality-authentication.tgz} name: '@rush-temp/mixed-reality-authentication' version: 0.0.0 dependencies: @@ -22823,7 +22845,7 @@ packages: dev: false file:projects/mixed-reality-remote-rendering.tgz: - resolution: {integrity: sha512-PWWJq0EsC2ofw5kTftrGmXNxTr5vymKgYrgbdNXMIrImEpvq5reH799Twww6Yoot6OC4XyN2jjnvJHZquLjtCA==, tarball: file:projects/mixed-reality-remote-rendering.tgz} + resolution: {integrity: sha512-OSPAcLNxfo7AWdAlKcLv2CgIRuxkuwzJM4bogvZGk9j334+iw7FYY52wcuUg3X7LceW34pi+RQUGy86MRDy9Mg==, tarball: file:projects/mixed-reality-remote-rendering.tgz} name: '@rush-temp/mixed-reality-remote-rendering' version: 0.0.0 dependencies: @@ -22870,7 +22892,7 @@ packages: dev: false file:projects/mock-hub.tgz: - resolution: {integrity: sha512-8Ciyzim9dMZzxB/kEQ69nxF+3FLoB5jy/zB7XAyBZgbVb/S20r1fekY+t+u3AQWPCGxDyIT/61zaVbFWIcz+VA==, tarball: file:projects/mock-hub.tgz} + resolution: {integrity: sha512-qND+nxzsNNqvvROhaZaEgeTgVfCMTpc7utFJj1YO6epNZlV2zBVXtjLUpaF8kC/k82EejwEuC8jDT5y+q+2gEA==, tarball: file:projects/mock-hub.tgz} name: '@rush-temp/mock-hub' version: 0.0.0 dependencies: @@ -22904,7 +22926,7 @@ packages: dev: false file:projects/monitor-ingestion.tgz: - resolution: {integrity: sha512-2TuFFxs/9AvRHA/BhWDwrODaVrHXR2FGH2sGeaw4ZCP9yhbdvtGfZiJvRHD533laO4yr6fQBLz0/OK5wqYd9qg==, tarball: file:projects/monitor-ingestion.tgz} + resolution: {integrity: sha512-FLWDgJiVixkS7DwF9IeUeKDIpls7LeNletvRwKguOw688OWY9vqN/xxtsC6RnrjX4+P3YLEpNlNyugjSLAsEGQ==, tarball: file:projects/monitor-ingestion.tgz} name: '@rush-temp/monitor-ingestion' version: 0.0.0 dependencies: @@ -22952,7 +22974,7 @@ packages: dev: false file:projects/monitor-opentelemetry-exporter.tgz: - resolution: {integrity: sha512-lF4HckcGeFQz1QyZ2X1P2QXMAyrAL1wK+O73PWrqipkdGRQOvxEei03pBV2RQ6uQtMp0VuNruFB2hi1SRAbxUg==, tarball: file:projects/monitor-opentelemetry-exporter.tgz} + resolution: {integrity: sha512-aMvFIVpBs0KJZonV1omJln3lR47yFT/PRhbT8sVARBMoN6onDj5PcN5JfL+p+ZFKEaYcS4rz0GohigC5AZe4ug==, tarball: file:projects/monitor-opentelemetry-exporter.tgz} name: '@rush-temp/monitor-opentelemetry-exporter' version: 0.0.0 dependencies: @@ -22986,7 +23008,7 @@ packages: dev: false file:projects/monitor-opentelemetry.tgz: - resolution: {integrity: sha512-MzAIwYUUOl3Vc3PJdFhc1S9RP1lVZgtWV5gPkVTMuFhg3PZLufzqSsyQUCa35EP/OBYZqZSMi+urDyUXrQrnfA==, tarball: file:projects/monitor-opentelemetry.tgz} + resolution: {integrity: sha512-thwsoEaOyjBXBsnArTgvp+jJD5RGkA60bQxm9M5FINEikCj1ExvOfKuz92mlczAz9ucFDoUtoqlrRRRsRykkkg==, tarball: file:projects/monitor-opentelemetry.tgz} name: '@rush-temp/monitor-opentelemetry' version: 0.0.0 dependencies: @@ -23034,7 +23056,7 @@ packages: dev: false file:projects/monitor-query.tgz: - resolution: {integrity: sha512-V05Na56q27tjE4HB650lJSCpzKfjx3uAPGTb2UR9MwDnblVKaZvqkqTG7WxYiyoSOeLNIm9WIIRFjLYIPuZuLg==, tarball: file:projects/monitor-query.tgz} + resolution: {integrity: sha512-ihLsubKVYU9jaXZo1mmKS5vpC+COwujWvF+iXDj85MmJFDsFzZ+XdoQxqqCFIToFJdjJr7P34Bx6vesPFMOzJw==, tarball: file:projects/monitor-query.tgz} name: '@rush-temp/monitor-query' version: 0.0.0 dependencies: @@ -23078,7 +23100,7 @@ packages: dev: false file:projects/notification-hubs.tgz: - resolution: {integrity: sha512-GlP+C+qTYDlit8le6xt9z+jZBdE6DX7Fkpve6exIOCCJbt/46H+vVaH6rme3Kndgs1tN0k2bJuAg27WzyvI3TA==, tarball: file:projects/notification-hubs.tgz} + resolution: {integrity: sha512-G07NVQ2fHyW8BGfbTUsZyUq/PrE3XnPnbIpsqBvxKjQSzDyE3AD34qTxumMOSMWa4b64eN4xATzMWMDMH6Rquw==, tarball: file:projects/notification-hubs.tgz} name: '@rush-temp/notification-hubs' version: 0.0.0 dependencies: @@ -23115,7 +23137,7 @@ packages: dev: false file:projects/openai.tgz: - resolution: {integrity: sha512-H48T2Roeqsl/F7HvAZqr8AmIkBG1jazlU6i9rSC+7ymiFMI+N8tNCJF2HMYo+ZhsDbn3vGicriy6BAG6Fzl3jw==, tarball: file:projects/openai.tgz} + resolution: {integrity: sha512-1NZPBco5pUUtGn4hbYETrn7d1IAe1q2HZ7Fg0UdkliV2/7xjt58TfvC2bf5q7MjExdQveNt2uXZmt2lw6TuJ0A==, tarball: file:projects/openai.tgz} name: '@rush-temp/openai' version: 0.0.0 dependencies: @@ -23157,7 +23179,7 @@ packages: dev: false file:projects/opentelemetry-instrumentation-azure-sdk.tgz: - resolution: {integrity: sha512-oxiwObvPjqIopSkQAIu0tV9pGGn/wVKeh09VnP8IOVnyobPxU8ywRACBixNofoiBctZqcNmLlQ4fGHwTLAe0Tg==, tarball: file:projects/opentelemetry-instrumentation-azure-sdk.tgz} + resolution: {integrity: sha512-bNg2Of+sm8+U1hIvc+8hWiR3+GWLnx5OcGw6QzzGEqKsKAJ51r478wpaexNQcCDShoZHfxmeBMxNeZccs/PZPw==, tarball: file:projects/opentelemetry-instrumentation-azure-sdk.tgz} name: '@rush-temp/opentelemetry-instrumentation-azure-sdk' version: 0.0.0 dependencies: @@ -23201,7 +23223,7 @@ packages: dev: false file:projects/perf-ai-form-recognizer.tgz: - resolution: {integrity: sha512-zWjC3E9n3/BTHJLPDsHAguRP9k5dewi5WwvmFbqk5QC2qiCl47kiB6Uxy7MOa/3yLdyEYJ8ebliKiVimVBKF0w==, tarball: file:projects/perf-ai-form-recognizer.tgz} + resolution: {integrity: sha512-POWpOoVpfQdjEWbBSiHCj+DvlYTRfyzU0XtydXNXGs+bM0n+BNUTuoh7n/tk1ZJKa2cr8c6NZnESJpkB5tDb3Q==, tarball: file:projects/perf-ai-form-recognizer.tgz} name: '@rush-temp/perf-ai-form-recognizer' version: 0.0.0 dependencies: @@ -23221,7 +23243,7 @@ packages: dev: false file:projects/perf-ai-language-text.tgz: - resolution: {integrity: sha512-9+Qg0q6bwD14voj/cTR+VS5YA3nMNjsXnyJk6jNMVHj4zn6z7kmfXe3mamYRYnPy3dIuJPhSK+/7fNHcM8xqkA==, tarball: file:projects/perf-ai-language-text.tgz} + resolution: {integrity: sha512-5/7jXL83XnX5OXadOHW4gTycoTsLDth3As/KDepCiJ8HsZBR32xLVwtVkE5/ukB0zOlKW5f/2OE24ctUhbdS5g==, tarball: file:projects/perf-ai-language-text.tgz} name: '@rush-temp/perf-ai-language-text' version: 0.0.0 dependencies: @@ -23241,7 +23263,7 @@ packages: dev: false file:projects/perf-ai-metrics-advisor.tgz: - resolution: {integrity: sha512-0NbwHsDgSgIPwEmyJW7jh1Ozwq3u7DWNfvYFERHUcMcGmQP+7MLw6Kcox7N4si/dLmeHri2AwnWD9+3GbWSY8Q==, tarball: file:projects/perf-ai-metrics-advisor.tgz} + resolution: {integrity: sha512-td1pfbo0dFobWlifHe8T3e04KBYDiXImEtfD0rInUstpoVyXCksg7dzbFLjBltjblJ1i/r97ID+3bvaJPWFmiQ==, tarball: file:projects/perf-ai-metrics-advisor.tgz} name: '@rush-temp/perf-ai-metrics-advisor' version: 0.0.0 dependencies: @@ -23260,7 +23282,7 @@ packages: dev: false file:projects/perf-ai-text-analytics.tgz: - resolution: {integrity: sha512-oWOh5+ltQ3/kxeM+enlm/H5q1rKoGFOesYTjjwIqLxHK4Jygugaf8u7vBcOiym4DHF4/FdMJt/kgDjjuVeubgQ==, tarball: file:projects/perf-ai-text-analytics.tgz} + resolution: {integrity: sha512-kmAYfpIiEjg7ILSlzcXGWpbbYXUt2TjiqPARqaTqzNW7hHf+0rHFnCduyQc6PPtldN8fr1NTuW1tUiDCV54b7A==, tarball: file:projects/perf-ai-text-analytics.tgz} name: '@rush-temp/perf-ai-text-analytics' version: 0.0.0 dependencies: @@ -23280,7 +23302,7 @@ packages: dev: false file:projects/perf-app-configuration.tgz: - resolution: {integrity: sha512-+vUzrvJBPvpryLciRn92TjLWV/6U2nA1YGTIlr44AJdKvU+NPAWzBygZqJNHipRTHMBnq2kmMqUmENQhM84SPg==, tarball: file:projects/perf-app-configuration.tgz} + resolution: {integrity: sha512-eEVIqKSFpKM8WmN1Nd9tBdDsl3lh/SXig304S9gF7hwu9aOC5I0pmuxR+QK09rDUQCkhGcUvojePzr90YvtEhw==, tarball: file:projects/perf-app-configuration.tgz} name: '@rush-temp/perf-app-configuration' version: 0.0.0 dependencies: @@ -23300,7 +23322,7 @@ packages: dev: false file:projects/perf-container-registry.tgz: - resolution: {integrity: sha512-hNlkZJRUghr4B51vL1bpbYB2FJfbWRBgxG1k+NeKRJY0tLXTjWUo54su7RGCjU4sHsK5poo+k/jaT6rKlD8E+A==, tarball: file:projects/perf-container-registry.tgz} + resolution: {integrity: sha512-/4KU5u3ORhJT+YmLWoWK25Ym8hMrTQtGrJLi/lTgZALWYaq29RqBzT/ElXRrfhpQSqtlpL7nU6frr0mJEH0Hhw==, tarball: file:projects/perf-container-registry.tgz} name: '@rush-temp/perf-container-registry' version: 0.0.0 dependencies: @@ -23319,7 +23341,7 @@ packages: dev: false file:projects/perf-core-rest-pipeline.tgz: - resolution: {integrity: sha512-VDg1NbVAHjk0lE1CqHRoA5yLGd+8qERcyitOWHF2DF5A+7xMoRHKwJmVAgWhqc1Q3WP83D2medVAVa8ZSMv+HA==, tarball: file:projects/perf-core-rest-pipeline.tgz} + resolution: {integrity: sha512-oh4S+j2b8xUVN8+/+AeKCD1P10gPLP5gk1KqTE9dVGANcUoMMJGZoD75n3dtLqkxIAqljhCOCuosl+CUXGof1A==, tarball: file:projects/perf-core-rest-pipeline.tgz} name: '@rush-temp/perf-core-rest-pipeline' version: 0.0.0 dependencies: @@ -23342,7 +23364,7 @@ packages: dev: false file:projects/perf-data-tables.tgz: - resolution: {integrity: sha512-Pu+EV+szHHMMWrxgY9LhxOPYiPVHnTZJEKBGWXGtjP7BxfzzffBJ0tpumSjuAEZUv7TLND6iI6j6qxYoJ2kw7A==, tarball: file:projects/perf-data-tables.tgz} + resolution: {integrity: sha512-oh3fFCWwG6EPkoIU5tvolvN21oD4EKzC97YNDXoyyzORBEKegYXELTKXz7Kf1eYbXf30fOZWVQBAtqYlm6sOng==, tarball: file:projects/perf-data-tables.tgz} name: '@rush-temp/perf-data-tables' version: 0.0.0 dependencies: @@ -23361,7 +23383,7 @@ packages: dev: false file:projects/perf-event-hubs.tgz: - resolution: {integrity: sha512-DY/NSSHfv9Ir0PxX04Vz4XTzyTRtxsTswr347LvroSO94HmCSJAsEQhuWbqXi5BlGVPq+y3orsjm7x8Ufycp1w==, tarball: file:projects/perf-event-hubs.tgz} + resolution: {integrity: sha512-WNUyx88CRHgtyRV9gumkfvO//QpFFiaIQXifUdPQanrtcPq/9lrLdijrBGpl39ADnOMCSGeuMFptl6xEgmq6LQ==, tarball: file:projects/perf-event-hubs.tgz} name: '@rush-temp/perf-event-hubs' version: 0.0.0 dependencies: @@ -23385,7 +23407,7 @@ packages: dev: false file:projects/perf-eventgrid.tgz: - resolution: {integrity: sha512-VzPq6ggmF7DYDgJpOYRGKKbiQHqBucuT9sG++q41zLl4pjmXBVlzgsGPNmuN+uIFm4uqF9tz7Ka0WtbRYbigSw==, tarball: file:projects/perf-eventgrid.tgz} + resolution: {integrity: sha512-qKB5+KeoStnNZC/FkG5g9l26AEuxs7zmgqAacC9IZotoy2GE9ZG7q6m2WsMKLZOQt7plB5KayvQ/MdpDjv51cA==, tarball: file:projects/perf-eventgrid.tgz} name: '@rush-temp/perf-eventgrid' version: 0.0.0 dependencies: @@ -23404,7 +23426,7 @@ packages: dev: false file:projects/perf-identity.tgz: - resolution: {integrity: sha512-+To2WBlWiqH5YBWga5WPDYNm3RoQ+MM7B0fDjVvbx8ac5WadMWt1UDWUQ4F8Jp9SyBxvGreVwxGo5ZOyqKZjZA==, tarball: file:projects/perf-identity.tgz} + resolution: {integrity: sha512-XzYh+7p+G/O0SMjw2P4RWD61k7E1aNPnKa3iVWehQb1AjpqrSZMQjdUSS+YL4IzFBHcxpV6y2Pt8559jxYj23A==, tarball: file:projects/perf-identity.tgz} name: '@rush-temp/perf-identity' version: 0.0.0 dependencies: @@ -23425,7 +23447,7 @@ packages: dev: false file:projects/perf-keyvault-certificates.tgz: - resolution: {integrity: sha512-UFuV4ixw0xuW1V0YywrMu5RLiK+USg8IATr/PQiufLhhKjS2ZIJMcdZftsg8jTDqVZU6S9SVJXTRli9/uf8H3g==, tarball: file:projects/perf-keyvault-certificates.tgz} + resolution: {integrity: sha512-g5OCl4cgItrWrxSaJ0W4MJelVE4bELSwc7f9ePWdgpl6RiiG+ibfQ1HBL6h2RBI90OfagfLVjbpOskZ07OXApQ==, tarball: file:projects/perf-keyvault-certificates.tgz} name: '@rush-temp/perf-keyvault-certificates' version: 0.0.0 dependencies: @@ -23447,7 +23469,7 @@ packages: dev: false file:projects/perf-keyvault-keys.tgz: - resolution: {integrity: sha512-cmtOJOfOdKnl1efPXMdvan4iRYgIOnyEjQ5aelZ11PBqWjXZrvFLEg6XMEyrNYPBuoftDmRa3f6l+GKOVFBwtA==, tarball: file:projects/perf-keyvault-keys.tgz} + resolution: {integrity: sha512-mx8RrUBBQ6HcsZ9p5BRoqEQnpCQZSFP/rVDd6kHfDuRwCm5CQwzTFKNwMXklZ9CyA6tzT+zoKYWvm5CBQgalkw==, tarball: file:projects/perf-keyvault-keys.tgz} name: '@rush-temp/perf-keyvault-keys' version: 0.0.0 dependencies: @@ -23469,7 +23491,7 @@ packages: dev: false file:projects/perf-keyvault-secrets.tgz: - resolution: {integrity: sha512-h/16Rgo13yHiyDVs/fqBBGr+X3mWbEmNtbS43Elh4ybbO1yRmpSXVV/eCTE7QlP9q8ApIdmvlIvFX0VPodM0IQ==, tarball: file:projects/perf-keyvault-secrets.tgz} + resolution: {integrity: sha512-jLWlsayX1Dpm+pI5o2MwFnHqkk94+0VpaznqL+TYvLXxIZJaOH+ihVglHxs1F9eeSAxz8vKZ/3x1B2A1JEp+9Q==, tarball: file:projects/perf-keyvault-secrets.tgz} name: '@rush-temp/perf-keyvault-secrets' version: 0.0.0 dependencies: @@ -23491,7 +23513,7 @@ packages: dev: false file:projects/perf-monitor-ingestion.tgz: - resolution: {integrity: sha512-1/g4EquE593/00Rmstrv/XOCZ9DCBb1qIoxFgYitoIkZzG74Q4ZL0MsRhyBM5w7IiOvqKnC0BuqHSzdvS54SVg==, tarball: file:projects/perf-monitor-ingestion.tgz} + resolution: {integrity: sha512-Jsd9dNsPBlbDq2G2sBTVgtvmu4dAS2q2tp7vQwbxJyuMg7x4qjTi1QYGzXgP5gCdujGc5PR1mVEeA+hI+9t7sw==, tarball: file:projects/perf-monitor-ingestion.tgz} name: '@rush-temp/perf-monitor-ingestion' version: 0.0.0 dependencies: @@ -23511,7 +23533,7 @@ packages: dev: false file:projects/perf-monitor-opentelemetry.tgz: - resolution: {integrity: sha512-PcrmsLNkWmiiJvrCAhOEo3VKmP72as+iHPn8qS61NKwA7m4xGW/gwFYi+YtNk4ZesV2PdMczng1fNE3OViGQTA==, tarball: file:projects/perf-monitor-opentelemetry.tgz} + resolution: {integrity: sha512-q2N9qSHI4hcuh4nZA37gc1hs3zPj5tiVIEmce6b53y6kaqiXYvCWIHXnZU5WovIFuXshvyznZlMd3EEjNUjAPA==, tarball: file:projects/perf-monitor-opentelemetry.tgz} name: '@rush-temp/perf-monitor-opentelemetry' version: 0.0.0 dependencies: @@ -23530,7 +23552,7 @@ packages: dev: false file:projects/perf-monitor-query.tgz: - resolution: {integrity: sha512-ymGE4xo6QUG2EAFvGT+15o3ML/b6F7gc1os7PCDcV7mTzs8ofUuDjX4LN06TGR7m8ZalbG5/9TInT9UtjpKvbg==, tarball: file:projects/perf-monitor-query.tgz} + resolution: {integrity: sha512-Bi1scWVWErZXsjaY3pFVoTLMmEvrcl4ItW+jp+KrrxshKl3gHkOlvpoE6wexaTGHs7TsUaxVox+cbCEzOzdojw==, tarball: file:projects/perf-monitor-query.tgz} name: '@rush-temp/perf-monitor-query' version: 0.0.0 dependencies: @@ -23550,7 +23572,7 @@ packages: dev: false file:projects/perf-schema-registry-avro.tgz: - resolution: {integrity: sha512-W8nSJUFTyR0HfwtaxpLZvwOrEF+R0I+OhR3Qc3FT4d/8kKtYglH4HeDfFseY0w4GYO8zKX5cWyfo+LtUxVzmbg==, tarball: file:projects/perf-schema-registry-avro.tgz} + resolution: {integrity: sha512-YI5gF9T+LTgZQJM47Vr8gIm5ylgI7yWVciw1ArTcoqwR69VBxOR+0xCTc5RhiYsupxcFURor4IiKAl6M2qoM5Q==, tarball: file:projects/perf-schema-registry-avro.tgz} name: '@rush-temp/perf-schema-registry-avro' version: 0.0.0 dependencies: @@ -23570,7 +23592,7 @@ packages: dev: false file:projects/perf-search-documents.tgz: - resolution: {integrity: sha512-IJpTlde5FFe2/0OvnLvypZjEU/weT1VYRkjJfowN6le2AfftOtwCTpE7GgaI78s6ooqfy+/PqEIsWhwkGBfNcg==, tarball: file:projects/perf-search-documents.tgz} + resolution: {integrity: sha512-wz98B8+Xvwn9hp568Z8ZF+NYPVwrUeVfeW1d2OnnsvzRRsFqeDvbbhVG+3o+zikCfqA8n4wbIu3DnE/R7k8O8g==, tarball: file:projects/perf-search-documents.tgz} name: '@rush-temp/perf-search-documents' version: 0.0.0 dependencies: @@ -23591,7 +23613,7 @@ packages: dev: false file:projects/perf-service-bus.tgz: - resolution: {integrity: sha512-9aYinfYRtaUNNsiVYt68IPuS7HuY5pIo/QO2lMW5eDN6lGxBNuasukTvdKXhFRQlz1Lsr/jNdRhT0IgnErP5jQ==, tarball: file:projects/perf-service-bus.tgz} + resolution: {integrity: sha512-yXm3d1qM7wa2dVvai7LYcmaNIpSsnZDjnk5JWZkIZWc8yrlWzf+lDNuMU7MuF0jwmhkRUmIpwLRpREtv8gczFw==, tarball: file:projects/perf-service-bus.tgz} name: '@rush-temp/perf-service-bus' version: 0.0.0 dependencies: @@ -23612,7 +23634,7 @@ packages: dev: false file:projects/perf-storage-blob.tgz: - resolution: {integrity: sha512-fiUxtFT3tPJ1+Xtm7RHO2C0rwCRuwnNZR/RADUA2pJocwIO9YycrPXQntcdUW42qVQVFoahHZTXljDeamql8Tg==, tarball: file:projects/perf-storage-blob.tgz} + resolution: {integrity: sha512-XP4ocqPxj5wgyhpDZpi0RIHlNPxXPuPi84tXdJvy16KjQfdfUMeHRvrhdD0saj5fI/+k8CxdtVSO1TfVyHtAwg==, tarball: file:projects/perf-storage-blob.tgz} name: '@rush-temp/perf-storage-blob' version: 0.0.0 dependencies: @@ -23632,7 +23654,7 @@ packages: dev: false file:projects/perf-storage-file-datalake.tgz: - resolution: {integrity: sha512-PhJr5ZNrDBCxB6A7AKiQ2ZxsDrYxOnEiWs5Mgg+sdUsCy5VxXB2UOaHcuVPviBc+HALhcgOlem2ZalTgPMKDuA==, tarball: file:projects/perf-storage-file-datalake.tgz} + resolution: {integrity: sha512-qRtfxWRFCwWD0pzaQdSPmrrxMtN0GRVAIETHcTAjEtsg3y2R0RtEZ/unElbYHWvw5RRmoISXF1JXDbprKJTO2w==, tarball: file:projects/perf-storage-file-datalake.tgz} name: '@rush-temp/perf-storage-file-datalake' version: 0.0.0 dependencies: @@ -23652,7 +23674,7 @@ packages: dev: false file:projects/perf-storage-file-share.tgz: - resolution: {integrity: sha512-6naxVn/cB3qW8boXhk/zsGsWB+gsUQQByhOcwfkPRhSdGDHIkkQ/SdBNKeNeifR8oMdjt1MtDQKQVr7V840IEQ==, tarball: file:projects/perf-storage-file-share.tgz} + resolution: {integrity: sha512-JzcotzFitxPWurPENl0VPyx1k9nJi3/nU7y9ywg6ujO5qGNPKYjvMeiA5BNt/YcKdurIWnNCXsXJCHQAWhgtrQ==, tarball: file:projects/perf-storage-file-share.tgz} name: '@rush-temp/perf-storage-file-share' version: 0.0.0 dependencies: @@ -23672,7 +23694,7 @@ packages: dev: false file:projects/perf-template.tgz: - resolution: {integrity: sha512-KBmHqs5rCwamvjy5avBOkmDoyy49CX3o9VfdW6UsakxMEMWSRr7+WmdgRBhN2bqpJcs0pFfvRqK8acDljHtlCg==, tarball: file:projects/perf-template.tgz} + resolution: {integrity: sha512-lK1FvvHtQaImUpzyGCrIR2aeQDBkxvzg5QFB3Tt4SDpQDAr7CQYWnHf1/0SAJT7NzQOzMy/Z9mSFoorLN1KTXg==, tarball: file:projects/perf-template.tgz} name: '@rush-temp/perf-template' version: 0.0.0 dependencies: @@ -23693,7 +23715,7 @@ packages: dev: false file:projects/purview-administration.tgz: - resolution: {integrity: sha512-RSJpHcbBm53FlgPtxxLd9xjZX44X0X10kEoya4Efa7cKA9m129ovLO03XnVSAzEv80VAuZL2xCwn7yHasCg7pg==, tarball: file:projects/purview-administration.tgz} + resolution: {integrity: sha512-/ofcTlQ3DUdVjAQNXADQp5Olr8AVFHH6avNuInXyN6UN+nv8Mr/oyYvJ/a9bmMbw+V2PwHZcUvOSkw/1yiOLcw==, tarball: file:projects/purview-administration.tgz} name: '@rush-temp/purview-administration' version: 0.0.0 dependencies: @@ -23737,7 +23759,7 @@ packages: dev: false file:projects/purview-catalog.tgz: - resolution: {integrity: sha512-ovkJVLgj0ZJJNINdkn9lPa87GR7yztShipZV3QD5FhvtY/GaxzVRSPkP6MIH/WN2zbzEYpVN+r/wl7FNXdD8Qw==, tarball: file:projects/purview-catalog.tgz} + resolution: {integrity: sha512-BzQH39jZqCdUDPKuloeaxdUYHgHg0Dy4TBc1YUt9KpBdKxiNaAYupB1T5CmLvqI8Ry5h6UpfyVkOZSzW4VJ9SQ==, tarball: file:projects/purview-catalog.tgz} name: '@rush-temp/purview-catalog' version: 0.0.0 dependencies: @@ -23782,7 +23804,7 @@ packages: dev: false file:projects/purview-datamap.tgz: - resolution: {integrity: sha512-9ita2YmoNvIfe6h/7yvt897vRwKsT4LDxpBH5c9zAOpJouPNsAhZWQ+VBnBNds8CgnM35vLKW4/ZdOv/tUjRrg==, tarball: file:projects/purview-datamap.tgz} + resolution: {integrity: sha512-W4wufES6gQ8aAIBSmdmXhr2+Mw+RScw4vv/f9WoNd30uU3FJyKBe0gujNcJEZLsOXQ/ob6u2k3wuVYZAo2WhPw==, tarball: file:projects/purview-datamap.tgz} name: '@rush-temp/purview-datamap' version: 0.0.0 dependencies: @@ -23827,7 +23849,7 @@ packages: dev: false file:projects/purview-scanning.tgz: - resolution: {integrity: sha512-NG0a0EFj+UYj8+8ysNxJ4wNo+d+kAqSw3iCouV9nascWUd9Ih+goKtd/xXD+5N2si3jrL203RTwpQMdBi7rLvw==, tarball: file:projects/purview-scanning.tgz} + resolution: {integrity: sha512-la1JpJqPRhD2tFr62OPIHDd3UG9+74a1GH5Acu6Y0ec1CZxw6aaCjSmg+Xnd9/11qxZNjvRD+IvPQXBAxSJHgw==, tarball: file:projects/purview-scanning.tgz} name: '@rush-temp/purview-scanning' version: 0.0.0 dependencies: @@ -23871,7 +23893,7 @@ packages: dev: false file:projects/purview-sharing.tgz: - resolution: {integrity: sha512-sq0hf2kHfmj8TB3AlOU28kDgkLYpSb9FcNhjFwLYwpx1dhkMqzdrUxNsp0Xw30KBrc6/5i8ioxkcByvgQtZpLg==, tarball: file:projects/purview-sharing.tgz} + resolution: {integrity: sha512-yupdEKrPU+CfTg0cYTYNyUJrrpXhb62GhO7YNr0cKlEVu2jFYTDvcq7/uyVTSeJbfrwHSXVFprXX8hcTwmDfcw==, tarball: file:projects/purview-sharing.tgz} name: '@rush-temp/purview-sharing' version: 0.0.0 dependencies: @@ -23918,7 +23940,7 @@ packages: dev: false file:projects/purview-workflow.tgz: - resolution: {integrity: sha512-TtPgVd0jncMynyYLz041QpSEn/Yt4wHaSwu9g/YcWu2ZxZI5ONcLPIfhREfF5cPU5uELyLeqTuMgD9aqxZjRpw==, tarball: file:projects/purview-workflow.tgz} + resolution: {integrity: sha512-yLuvkhDEC+Wim6OEctUa7HOhkfzg7vdmnPRUm74iGebhWM9dXCnaGz38EFcyQCiNMHNa2ccc5JqUZ2PutMvn2A==, tarball: file:projects/purview-workflow.tgz} name: '@rush-temp/purview-workflow' version: 0.0.0 dependencies: @@ -23963,7 +23985,7 @@ packages: dev: false file:projects/quantum-jobs.tgz: - resolution: {integrity: sha512-PXvyuV45a6cRQaaJEhACGVhTjUH8Ux66m/rN7tqbJHBjuZMBfaHh9Smu7qWlXiZtJKw8lgOsCVDH7ozhWRCy8w==, tarball: file:projects/quantum-jobs.tgz} + resolution: {integrity: sha512-hynsRkT7AewOzKH/2/bSTNQjrI9uCzbVO2lQL0+RXuZ7gx7tnlPwxiqK7cF4lCK/gVB/OGDoHM4xZa+D5z5/5A==, tarball: file:projects/quantum-jobs.tgz} name: '@rush-temp/quantum-jobs' version: 0.0.0 dependencies: @@ -24009,7 +24031,7 @@ packages: dev: false file:projects/schema-registry-avro.tgz: - resolution: {integrity: sha512-or0Anl9W9acTyeU/D9fhoGG9SmgN580YeiALqaz1ipRqxKCpRd5k4OxMJGAD16yZDKmNQrdGOJAb8Kr4r0ryGg==, tarball: file:projects/schema-registry-avro.tgz} + resolution: {integrity: sha512-aOuyogD9Sg+gRV1zU1StVI8UOhjMlITcP5JGyS1nA9nIjb89XmoPhVvOwaZmhIaZzl6HXWAu5STIcVW+MrVYXg==, tarball: file:projects/schema-registry-avro.tgz} name: '@rush-temp/schema-registry-avro' version: 0.0.0 dependencies: @@ -24062,7 +24084,7 @@ packages: dev: false file:projects/schema-registry-json.tgz: - resolution: {integrity: sha512-g4Hn5V9bTN2ZHCm4HrYFu4h9wbMJAh7TiFPY6aDiKtmHyco8a4SDjKY5abZhB6YipsQ4ucKGhUZjPbRl+o7YbA==, tarball: file:projects/schema-registry-json.tgz} + resolution: {integrity: sha512-Ceo41vIyXjwwMYxrAQULe4hYvRPkYRa/XtDLPlCGN0p8V2dvZok/jG1dnhbT4mS2SrJwL33ITnshqbhTK3Qm2w==, tarball: file:projects/schema-registry-json.tgz} name: '@rush-temp/schema-registry-json' version: 0.0.0 dependencies: @@ -24105,7 +24127,7 @@ packages: dev: false file:projects/schema-registry.tgz: - resolution: {integrity: sha512-XmJTse42Anbjn61axGhnFmOpx12CpgGUZRVwZaaBrtWQH9nSX3c8AZ8Wgq8njUc85FIlYvk6v1OmTapERBCdnQ==, tarball: file:projects/schema-registry.tgz} + resolution: {integrity: sha512-lTKvaSVAs+bx4vnHtG85rIZfyNjFfx2uvqwhNdw8SkWqgxQ7AyW53RtPklVwVhd3KCrwOk7HSKMvWLVFCISWZQ==, tarball: file:projects/schema-registry.tgz} name: '@rush-temp/schema-registry' version: 0.0.0 dependencies: @@ -24145,7 +24167,7 @@ packages: dev: false file:projects/search-documents.tgz: - resolution: {integrity: sha512-UtQzUbFJpxBbW2P5e8zRUmg3fP1mDW5w6IKNqtNtdnTppJBYWnEaNYjX/yQ7UEIo2CFFOIO4GcixqY566YmPtA==, tarball: file:projects/search-documents.tgz} + resolution: {integrity: sha512-TQPou1xuoYFGXUZYg+kgNvuBoQjULHSb9HelaZ7aOiyljlRGFCVfg37p9aqZWL2/1DZtKGkppFfdm30+AnZ7BQ==, tarball: file:projects/search-documents.tgz} name: '@rush-temp/search-documents' version: 0.0.0 dependencies: @@ -24192,7 +24214,7 @@ packages: dev: false file:projects/service-bus.tgz: - resolution: {integrity: sha512-hmveDLqeAShw1Udm/b/h/DYmE+vcSPSWncrNlPjOPO4q4srZRxGU3XWvQOKg1H5s14ilawLy4wDH4Pld344eew==, tarball: file:projects/service-bus.tgz} + resolution: {integrity: sha512-uw6aCWs1lbgkBKAJFs23wRXAUlDrFHlKM59+RUot9ZlB0JyhDTuNxlVTm83476h1kgUjpvq5ini1DtKREE3Jmg==, tarball: file:projects/service-bus.tgz} name: '@rush-temp/service-bus' version: 0.0.0 dependencies: @@ -24253,7 +24275,7 @@ packages: dev: false file:projects/storage-blob-changefeed.tgz: - resolution: {integrity: sha512-kvp3tm7eX+LwAT+R4rEpYGZH3rbzxu0P/v9XJ/tdapViq8GPBboy7Muv1sFtljdtCPgtMQ2M9sZ1ZkdgZ1wYOA==, tarball: file:projects/storage-blob-changefeed.tgz} + resolution: {integrity: sha512-yW/Tk+Qv/6aAtEt8eX+vSlTTSopgNe6yWWKhYumvBrECEAGOJoOtT4Xty444HcEnAFDhOWYrbYhy24HttYaSBQ==, tarball: file:projects/storage-blob-changefeed.tgz} name: '@rush-temp/storage-blob-changefeed' version: 0.0.0 dependencies: @@ -24303,7 +24325,7 @@ packages: dev: false file:projects/storage-blob.tgz: - resolution: {integrity: sha512-W6Wnl2NsKrAVhEEGt8tTmpDzJGJZSUrK2KsVhS6aWYT+lxpnHuu1E9uTIFSwRCjxkh9iPz+Zpb9RwFaDQ0fE3Q==, tarball: file:projects/storage-blob.tgz} + resolution: {integrity: sha512-ZlxD5NDsp4IGZLRyTslpm8XrDe8SqrBGzJ64xTPr6A0NAFLBf14aZeZA7yHRX0EjqED+byh3R3FDB3qb1OFIDw==, tarball: file:projects/storage-blob.tgz} name: '@rush-temp/storage-blob' version: 0.0.0 dependencies: @@ -24350,7 +24372,7 @@ packages: dev: false file:projects/storage-file-datalake.tgz: - resolution: {integrity: sha512-pVnKrkD3sFJC/8Mu3AFiHxo2xJle/XUqIimW8PVsitVDxaYwGIEsVJl9bmPfC3S4QNuHpzuc1QZg44bD/PjPlw==, tarball: file:projects/storage-file-datalake.tgz} + resolution: {integrity: sha512-Qs9GGAl1fj/tS3TV+pFtVTqZvHuSlckjuwsTUdMHx/qJJc/pOm9OFeeIeTgYOhBSkTfEbQRtQwlNNXlQq5oHKg==, tarball: file:projects/storage-file-datalake.tgz} name: '@rush-temp/storage-file-datalake' version: 0.0.0 dependencies: @@ -24400,7 +24422,7 @@ packages: dev: false file:projects/storage-file-share.tgz: - resolution: {integrity: sha512-bUAIAc44JfZQPjRKOuPF73s7KbX49hrpUIUnjcrET5DmwmE3NWamF7gSxScRdSDNZO3evaFfN15zSrrD78jLpA==, tarball: file:projects/storage-file-share.tgz} + resolution: {integrity: sha512-cwp1KHdbp6FJ13Cr7Wwfyw+nqa4igV7fMslulUMFZHDpqf7ZUigUbwjQW2vXawWy0azxX2U010e+oBj6ORW3OQ==, tarball: file:projects/storage-file-share.tgz} name: '@rush-temp/storage-file-share' version: 0.0.0 dependencies: @@ -24449,7 +24471,7 @@ packages: dev: false file:projects/storage-internal-avro.tgz: - resolution: {integrity: sha512-W7+byd4g972hMfjV7Tn5YLT1aQIMJS726jNjKze6CiYLJkiK0jcn+vK8CukYLm1ICM+zP6AfuSzAoQUtX5Lt9w==, tarball: file:projects/storage-internal-avro.tgz} + resolution: {integrity: sha512-TyD3UHGN3i8VzZcEjjEa9qbVyN/aN48JUAeJ+jk8S3FPAydT6i5m4nUtnb9QBgGxH7JSU89jbimi/LWtK+5FQw==, tarball: file:projects/storage-internal-avro.tgz} name: '@rush-temp/storage-internal-avro' version: 0.0.0 dependencies: @@ -24491,7 +24513,7 @@ packages: dev: false file:projects/storage-queue.tgz: - resolution: {integrity: sha512-yXyeua+HN4JCEnL+0KEQiz2mkcqUoAEmu8+r9niTSUBMJb5IZE1e2qsqBy1rU7OJv7Bt4tq3I04n5k54XH0IsQ==, tarball: file:projects/storage-queue.tgz} + resolution: {integrity: sha512-/KAjHlZZll32CgcBxCFKCughjkDhsj4a+XTzK7/jbrFyunE3mspoReOYtgMfWIv88FQBXFREQvU9ohioO8Ryyg==, tarball: file:projects/storage-queue.tgz} name: '@rush-temp/storage-queue' version: 0.0.0 dependencies: @@ -24537,7 +24559,7 @@ packages: dev: false file:projects/synapse-access-control-1.tgz: - resolution: {integrity: sha512-a/9dZpl4XgeJ+haQiZNpkZSYy9orW5z5bQB7Oyxydpc/U7TZljmv9uLIZOA8aQuUQVpDh4p8UBDbxmOg572mow==, tarball: file:projects/synapse-access-control-1.tgz} + resolution: {integrity: sha512-YF8ESmemr1ONKVGjHravsd0aF7i4JF+qc1M8VSW/1lfzEqws/zFR0miEwmUBKuuq3e+ZdfxRwjs55Nr1SE1cyg==, tarball: file:projects/synapse-access-control-1.tgz} name: '@rush-temp/synapse-access-control-1' version: 0.0.0 dependencies: @@ -24583,7 +24605,7 @@ packages: dev: false file:projects/synapse-access-control.tgz: - resolution: {integrity: sha512-xpKpKCs2aLWbl5fnHEdU+PFcMUKipbH+Wu+VZIfcNajLDCQYjxTekQs9DGFH+r1UTDgrpdudE2ixGOp5C69NEg==, tarball: file:projects/synapse-access-control.tgz} + resolution: {integrity: sha512-mOVshMTg1mw1kPHfUj4CuN2rRe7i1iyJ03tog9j4BUiXvNgvKuz6FmYKoz50PD+Vm1Y1kX4BhNSeIqFINU1ZUg==, tarball: file:projects/synapse-access-control.tgz} name: '@rush-temp/synapse-access-control' version: 0.0.0 dependencies: @@ -24632,7 +24654,7 @@ packages: dev: false file:projects/synapse-artifacts.tgz: - resolution: {integrity: sha512-BqyLvu/C6vnlOoL0p0uiVCPMiuZgqIQW75f2v4D+VXxEg8BUllx0d7tQUcP8BkzdYZZ5nAd9Y0e30qJW1WjnHw==, tarball: file:projects/synapse-artifacts.tgz} + resolution: {integrity: sha512-biKQiiUVwTmrhOl8eI8fn4dFKytg7k2xdFqPsyKT1L4XNoOSW2wmi5yOlIfhYd4gwpd8iuPcimnG9SsShQF25Q==, tarball: file:projects/synapse-artifacts.tgz} name: '@rush-temp/synapse-artifacts' version: 0.0.0 dependencies: @@ -24682,7 +24704,7 @@ packages: dev: false file:projects/synapse-managed-private-endpoints.tgz: - resolution: {integrity: sha512-0FONmRyT374Y0xbcOo1xHkLuIIBhouvH5Me2+ZNUOlgfwLqDqrp+F3XgFamLOF2oVsKcs+aN4+kd/bhsUWrPyA==, tarball: file:projects/synapse-managed-private-endpoints.tgz} + resolution: {integrity: sha512-1iRvwOJt5zFH9cFtaWGHntCTqqDjVD+fKM0Y39fW8aw9AMTEzkZxAmhiQKxsAubwcddWJgxqIkDn4b7jg1jmQQ==, tarball: file:projects/synapse-managed-private-endpoints.tgz} name: '@rush-temp/synapse-managed-private-endpoints' version: 0.0.0 dependencies: @@ -24725,7 +24747,7 @@ packages: dev: false file:projects/synapse-monitoring.tgz: - resolution: {integrity: sha512-g+ViDkGo+YoqD/9+6UekM5d/AUy9d03el1qY54IsvDxiEoSWt8eGm/eYLvNSEEO+L7SO0wWuSkcXMwZPzVUnJA==, tarball: file:projects/synapse-monitoring.tgz} + resolution: {integrity: sha512-P5Fd8EPEmT9YnQzs/cAm0P6tCrCLRmCe813RAomQqwS+VEh3qSfhkcwFUU0ZZ41aPTDM0pWi1QA+UI0XEYSljw==, tarball: file:projects/synapse-monitoring.tgz} name: '@rush-temp/synapse-monitoring' version: 0.0.0 dependencies: @@ -24762,7 +24784,7 @@ packages: dev: false file:projects/synapse-spark.tgz: - resolution: {integrity: sha512-AjZYhUxgZjKU3vweVyykeN0cd2OuXrFV3TTiX1XEnPS9QMyMvA1tS5ZjaMcDyW+Xj8CS+uEbICKfW+64uCsskg==, tarball: file:projects/synapse-spark.tgz} + resolution: {integrity: sha512-9Ecly4K6TLNWdqwlBcuLDwGv58STtdODBMMhSp5CSHTDepi+CjkGn0ip9wboIJMViYNIQ0brK+VoDs10tdS/+A==, tarball: file:projects/synapse-spark.tgz} name: '@rush-temp/synapse-spark' version: 0.0.0 dependencies: @@ -24805,7 +24827,7 @@ packages: dev: false file:projects/template-dpg.tgz: - resolution: {integrity: sha512-YESWFcpysNuOgdCO0hJ/zqbYYXYAwk/eJjdbBY4xodj2pqna6F41LIi4+Bz/8VCzcwftrGofLR+zb8LwGdBvMA==, tarball: file:projects/template-dpg.tgz} + resolution: {integrity: sha512-fW4MXU4jqfbvYzZuBFgDJch2OclABiH3pJxqJjIB7Qw6+dLi3L+vWeXNrpIfuvu1/xzrIUeHf9oJ4TKL8rOvlg==, tarball: file:projects/template-dpg.tgz} name: '@rush-temp/template-dpg' version: 0.0.0 dependencies: @@ -24848,7 +24870,7 @@ packages: dev: false file:projects/template.tgz: - resolution: {integrity: sha512-x1HZ0/qqFxfy8/h5R+We7tnX50cydc5v6HAs4wW3Z+ySZqVWBvEQ4YxJOSHMr8j0R2hp1VuneZvPONxTAnneBA==, tarball: file:projects/template.tgz} + resolution: {integrity: sha512-ezZARdgagUad/iPF8s2lPmJqJ8dfbxqGKGiXjcmei3R+s3cvRfzCi1fX8M2NeEvId9AVkvqHcR7JelbWPK9kTQ==, tarball: file:projects/template.tgz} name: '@rush-temp/template' version: 0.0.0 dependencies: @@ -24887,7 +24909,7 @@ packages: dev: false file:projects/test-credential.tgz: - resolution: {integrity: sha512-nwPaMmlLg3LI9M8TqTaktpexnFRmUHeylzffXLHpotZuZ5O9uuAf+cVtmIPZm4wHyXb+B0PlXrX39QgnNkBusg==, tarball: file:projects/test-credential.tgz} + resolution: {integrity: sha512-nCHOpp4WKY5pLLuUe35Qwrm126k6keisoJXT2MFrqhH+lxTRgfKM6oXWILxDoh/23eUxb48w+wkTVx57yXlv2w==, tarball: file:projects/test-credential.tgz} name: '@rush-temp/test-credential' version: 0.0.0 dependencies: @@ -24906,7 +24928,7 @@ packages: dev: false file:projects/test-perf.tgz: - resolution: {integrity: sha512-jjIBg+5KKg346PEdnhQYJreuLveETFblKAx1mU66H/lXsc8WqMzCI+IfepM49Ir7p0PbYQELqWImPT5lDBbupw==, tarball: file:projects/test-perf.tgz} + resolution: {integrity: sha512-dOxYVneFdt7VksrDfZkwTADpjCFjFb7pd7p+j55MC9GonmLUYrDUAnxiHzaoEilYPxq2E5xsQ+/IeRmqJe2RBA==, tarball: file:projects/test-perf.tgz} name: '@rush-temp/test-perf' version: 0.0.0 dependencies: @@ -24934,7 +24956,7 @@ packages: dev: false file:projects/test-recorder.tgz: - resolution: {integrity: sha512-hUKR1dZQ6QCrObCNDi+c0zLiC9Iu1GBkHgd7a9v4JQljczfchx6HCkfWMsjDmd9sRbC1DY3CVPKTa8D/vnpW5w==, tarball: file:projects/test-recorder.tgz} + resolution: {integrity: sha512-TT/AANNJqwewH9gxgDofnm/xVA5p6LGqlP7wKg+X8NdwHdHjjWK3rxA3raBKKVqp1y3EwzmUaJ56E7uNsANYXQ==, tarball: file:projects/test-recorder.tgz} name: '@rush-temp/test-recorder' version: 0.0.0 dependencies: @@ -24972,7 +24994,7 @@ packages: dev: false file:projects/test-utils-vitest.tgz: - resolution: {integrity: sha512-4aDLiQO03NlXDhgF0Cc9KMdXKr+W3zNBTVk8Xv1N4X9IjbfdTGlCME2QITXRIKIOuaeA/CQbrFSL2msl3iRQIQ==, tarball: file:projects/test-utils-vitest.tgz} + resolution: {integrity: sha512-B+7UtywzLzak0ygqHSUnHwXafQGcVcajMBpZo6UhLiWFKlWN5qWpr5250nrGAS1jNRcThxUsJrLZu8B7hM8Rsw==, tarball: file:projects/test-utils-vitest.tgz} name: '@rush-temp/test-utils-vitest' version: 0.0.0 dependencies: @@ -25009,7 +25031,7 @@ packages: dev: false file:projects/test-utils.tgz: - resolution: {integrity: sha512-/zW3HGJRjx4SIrcG1OW/0MELjHiqK+jzymjKCSQScVVjjsV9Bay/8Yy4KJD4DVkYMu6zcObo92mFgbWca33XGg==, tarball: file:projects/test-utils.tgz} + resolution: {integrity: sha512-dy4yWOviUvykLKxFyvx0+Gm2BCVCmsoPEPu6zkl0yOe8nmR7y0Ee0O2/h03m7Nvj0p+qaP9s+iVOoy3tcV0vFg==, tarball: file:projects/test-utils.tgz} name: '@rush-temp/test-utils' version: 0.0.0 dependencies: @@ -25046,7 +25068,7 @@ packages: dev: false file:projects/ts-http-runtime.tgz: - resolution: {integrity: sha512-VBq0lREYcVpoYsn5OYZ0ozOoa4PVeoTgRTGKQBLNoNYSx/Hn77dbEbduq4lfy9JRuwRQXAwd9hjwRRZERkP2eA==, tarball: file:projects/ts-http-runtime.tgz} + resolution: {integrity: sha512-B/VysScuLZjdytX+Sv9P1bZZEJGlYat2rxvFSKZAiLgESNj0BE6WbXmDCU4WFv7DQ6mH+EFE6jQcWemLxc2rfA==, tarball: file:projects/ts-http-runtime.tgz} name: '@rush-temp/ts-http-runtime' version: 0.0.0 dependencies: @@ -25084,7 +25106,7 @@ packages: dev: false file:projects/vite-plugin-browser-test-map.tgz: - resolution: {integrity: sha512-9Bt7C5VP+GzOIGL0LP/ZvGSIBMb8IdjGAXe9sOIaIVg7tfDjQxOGrs36E9cH9rkmjDtkdncgNuA1FRhGOTgKMQ==, tarball: file:projects/vite-plugin-browser-test-map.tgz} + resolution: {integrity: sha512-vAWZ/lgdy7UjDtLWoCJKHPSEayxZJWELZREkYldM1ESozDyjNml4n9tmBn9DgoSXWbUAZP06XEcRmPnC7bmRrA==, tarball: file:projects/vite-plugin-browser-test-map.tgz} name: '@rush-temp/vite-plugin-browser-test-map' version: 0.0.0 dependencies: @@ -25101,7 +25123,7 @@ packages: dev: false file:projects/web-pubsub-client-protobuf.tgz: - resolution: {integrity: sha512-s344F/rfLBKSnew8lt69C1k5NSsoRrbDrnN088+fInk94FVt0r5D3pU7DV0rrPfBVt2YTWfWd9lJfWvphA1uZw==, tarball: file:projects/web-pubsub-client-protobuf.tgz} + resolution: {integrity: sha512-waftlsGiLIhUZ0zGcVVI0QZCU9zWQdZDG/aS9vn0j+cvcJUdBvXBm/V7lLw6oj0AzGbBhLjrb2qhLRbQG+9Z1g==, tarball: file:projects/web-pubsub-client-protobuf.tgz} name: '@rush-temp/web-pubsub-client-protobuf' version: 0.0.0 dependencies: @@ -25160,7 +25182,7 @@ packages: dev: false file:projects/web-pubsub-client.tgz: - resolution: {integrity: sha512-ksVavvvhw2rNtMPIXp6ZrnQNvp9ft/aqoFaCs49OmVVvXVW2TGGY/Ma/9VfYyaxu6K5xRqJfq29qQYVbJeusnw==, tarball: file:projects/web-pubsub-client.tgz} + resolution: {integrity: sha512-Wa1bcMTI4UaxLBmLnvBrFDc00tek3O19N2Ggl+5puqYA3uj3MJRyReREHzh9S5b88cMW8aXIZcIBBimFnJ4ErA==, tarball: file:projects/web-pubsub-client.tgz} name: '@rush-temp/web-pubsub-client' version: 0.0.0 dependencies: @@ -25213,7 +25235,7 @@ packages: dev: false file:projects/web-pubsub-express.tgz: - resolution: {integrity: sha512-SHp9x1fIT9oU9CXIvdAOTYwVBUars9Tx1Hg8SHCx6wUYKNRgjvDVIkJ+d6NC17Jc5AQ9BsqsIiHMRKTLVIzhBA==, tarball: file:projects/web-pubsub-express.tgz} + resolution: {integrity: sha512-dRZ0zzzAB3ZP9x+OWUSgVXVAaM7G2q5ZnErkdotzj0DuH7nXeZxt3xvqC/rDDMK7CL9FDTJ4uk/3Uz0SW8FidA==, tarball: file:projects/web-pubsub-express.tgz} name: '@rush-temp/web-pubsub-express' version: 0.0.0 dependencies: @@ -25253,7 +25275,7 @@ packages: dev: false file:projects/web-pubsub.tgz: - resolution: {integrity: sha512-evjNObp4pF1Xv2Lrx+cigAoBUEtf9rsYe12hdJCd570EkZaRqrmGHBm99EKt513w+pVHdRW7D0Nc5J8jUoqmww==, tarball: file:projects/web-pubsub.tgz} + resolution: {integrity: sha512-T1dufrgVaijNEcpQOjkwo3osMcCxGYbkimyBXTFfQRlmg7JcnW8jYRen4MUo7ClovOZFDrJI5iD35UvytwbHVg==, tarball: file:projects/web-pubsub.tgz} name: '@rush-temp/web-pubsub' version: 0.0.0 dependencies: diff --git a/sdk/contentsafety/ai-content-safety-rest/.eslintrc.json b/sdk/contentsafety/ai-content-safety-rest/.eslintrc.json deleted file mode 100644 index 619797ac39b6..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/.eslintrc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@azure/azure-sdk"], - "extends": ["plugin:@azure/azure-sdk/azure-sdk-base"], - "rules": { - "@azure/azure-sdk/ts-modules-only-named": "warn", - "@azure/azure-sdk/ts-apiextractor-json-types": "warn", - "@azure/azure-sdk/ts-package-json-types": "warn", - "@azure/azure-sdk/ts-package-json-engine-is-present": "warn", - "tsdoc/syntax": "warn" - } -} diff --git a/sdk/contentsafety/ai-content-safety-rest/CHANGELOG.md b/sdk/contentsafety/ai-content-safety-rest/CHANGELOG.md index 1ce623dfeef0..da7ea2865c84 100644 --- a/sdk/contentsafety/ai-content-safety-rest/CHANGELOG.md +++ b/sdk/contentsafety/ai-content-safety-rest/CHANGELOG.md @@ -1,56 +1,31 @@ # Release History - -## 1.0.1 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed - -### Other Changes - -## 1.0.0 (2023-12-13) - + +## 2.0.0 (2024-11-08) + ### Features Added -- Support AAD Authentication -- Support 8 severity levels output for Text Analyze + - Added operation group DetectTextProtectedMaterial + - Added operation in Routes for path: "/text:detectProtectedMaterial" + - Added Interface ContentSafetyClientOptions + - Added Interface DetectTextProtectedMaterial200Response + - Added Interface DetectTextProtectedMaterialResultOutput + - Added Interface TextProtectedMaterialAnalysisResultOutput + - Added Type Alias AnalyzeImageOutputType + - Added Type Alias AnalyzeTextOutputType + - Added Type Alias ImageCategory + - Added Type Alias ImageCategoryOutput + - Added Type Alias TextCategory + - Added Type Alias TextCategoryOutput + - Interface TextBlocklistItem has a new optional parameter isRegex + - Interface TextBlocklistItemOutput has a new optional parameter isRegex + - Added function overload "export function isUnexpected(response: DetectTextProtectedMaterial200Response | DetectTextProtectedMaterialDefaultResponse): response is DetectTextProtectedMaterialDefaultResponse;" ### Breaking Changes -Contract change for AnalyzeText, AnalyzeImage, Blocklist management related parameters - -#### AnalyzeText - -- AnalyzeTextOptions - - Renamed `breakByBlocklists` to `haltOnBlocklistHit` - - Add `outputType` -- AnalyzeTextResultOutput - - Renamed `blocklistsMatchResults` to `blocklistsMatch` - - Replaced `TextAnalyzeSeverityResultOutput` by `TextCategoriesAnalysisOutput` - -#### AnalyzeImage - -- AnalyzeImageOptions - - Add `outputType` -- AnalyzeImageResultOutput - - Replaced `ImageAnalyzeSeverityResultOutput` by `ImageCategoriesAnalysisOutput` - -#### Blocklist management - -- Renamed `"/text/blocklists/{blocklistName}:addBlockItems"` to `"/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems"` -- Renamed `"/text/blocklists/{blocklistName}:removeBlockItems"` to `"/text/blocklists/{blocklistName}:removeBlocklistItems"` -- Renamed `"/text/blocklists/{blocklistName}/blockItems"` to `"/text/blocklists/{blocklistName}/blocklistItems"` -- Renamed `"/text/blocklists/{blocklistName}/blockItems/{blockItemId}"` to `"/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}"` -- Renamed `AddBlockItemsOptions` to `AddOrUpdateTextBlocklistItemsOptions` - - Renamed `blockItems` to `blocklistItems` -- Renamed `AddBlockItemsResultOutput` to `AddOrUpdateTextBlocklistItemsResultOutput` - - Renamed `value` to `blocklistItems` -- Renamed `RemoveBlockItemsOptions` to `RemoveTextBlocklistItemsOptions` - - Renamed `blockItemIds` to `blocklistItemIds` -- Renamed `TextBlockItemInfo` to `TextBlocklistItem` - -## 1.0.0-beta.1 (2023-09-28) - -- This is the initial beta release for Azure AI Content Safety, see README.md for details. + - Type of parameter categories of interface AnalyzeImageOptions is changed from string[] to ImageCategory[] + - Type of parameter outputType of interface AnalyzeImageOptions is changed from string to AnalyzeImageOutputType + - Type of parameter categories of interface AnalyzeTextOptions is changed from string[] to TextCategory[] + - Type of parameter outputType of interface AnalyzeTextOptions is changed from string to AnalyzeTextOutputType + - Type of parameter category of interface ImageCategoriesAnalysisOutput is changed from string to ImageCategoryOutput + - Type of parameter category of interface TextCategoriesAnalysisOutput is changed from string to TextCategoryOutput + diff --git a/sdk/contentsafety/ai-content-safety-rest/LICENSE b/sdk/contentsafety/ai-content-safety-rest/LICENSE new file mode 100644 index 000000000000..7d5934740965 --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-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/contentsafety/ai-content-safety-rest/README.md b/sdk/contentsafety/ai-content-safety-rest/README.md index aec9cde296a4..5bdfac0c5b72 100644 --- a/sdk/contentsafety/ai-content-safety-rest/README.md +++ b/sdk/contentsafety/ai-content-safety-rest/README.md @@ -1,19 +1,13 @@ -# Azure AI Content Safety REST client library for JavaScript/TypeScript +# Azure ContentSafety REST client library for JavaScript -[Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview) detects harmful user-generated and AI-generated content in applications and services. Content Safety includes text and image APIs that allow you to detect material that is harmful. - -* Text Analysis API: Scans text for sexual content, violence, hate, and self-harm with multi-severity levels. -* Image Analysis API: Scans images for sexual content, violence, hate, and self-harm with multi-severity levels. -* Text Blocklist Management APIs: The default AI classifiers are sufficient for most content safety needs; however, you might need to screen for terms that are specific to your use case. You can create blocklists of terms to use with the Text API. +Analyze harmful content **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/contentsafety/ai-content-safety-rest) - [Package (NPM)](https://www.npmjs.com/package/@azure-rest/ai-content-safety) -- [API reference documentation](https://docs.microsoft.com/javascript/api/@azure-rest/ai-content-safety?view=azure-node-preview) -- [Samples](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/contentsafety/ai-content-safety-rest/samples) +- [API reference documentation](https://docs.microsoft.com/javascript/api/@azure-rest/ai-content-safety) ## Getting started @@ -23,12 +17,11 @@ Key links: ### Prerequisites -- You need an [Azure subscription](https://azure.microsoft.com/free/) to use this package. -- An [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview) resource, if no existing resource, you could [create a new one](https://aka.ms/acs-create). +- You must have an [Azure subscription](https://azure.microsoft.com/free/) to use this package. ### Install the `@azure-rest/ai-content-safety` package -Install the Azure AI Content Safety REST client REST client library for JavaScript with `npm`: +Install the Azure ContentSafety REST client REST client library for JavaScript with `npm`: ```bash npm install @azure-rest/ai-content-safety @@ -36,1275 +29,18 @@ npm install @azure-rest/ai-content-safety ### Create and authenticate a `ContentSafetyClient` -#### Get the endpoint -You can find the endpoint for your Azure AI Content Safety service resource using the [Azure Portal](https://ms.portal.azure.com/#home) or [Azure CLI](https://learn.microsoft.com/cli/azure/cognitiveservices/account?view=azure-cli-latest#az-cognitiveservices-account-show): - -```bash -# Get the endpoint for the Azure AI Content Safety service resource -az cognitiveservices account show --name "resource-name" --resource-group "resource-group-name" --query "properties.endpoint" -``` - -#### Create a ContentSafetyClient with AzureKeyCredential - -- Step 1: Get the API key - -The API key can be found in the [Azure Portal](https://ms.portal.azure.com/#home) or by running the following [Azure CLI](https://learn.microsoft.com/cli/azure/cognitiveservices/account?view=azure-cli-latest#az-cognitiveservices-account-show) command: - -```bash -az cognitiveservices account keys list --name "" --resource-group "" -``` - -- Step 2: Create a ContentSafetyClient with AzureKeyCredential - -To use an API key as the `credential` parameter, pass the key as a string into an instance of `AzureKeyCredential`. - -```typescript -import ContentSafetyClient from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; -const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); -``` - -#### Create a ContentSafetyClient with Microsoft Entra ID (formerly Azure Active Directory (AAD)) token credential - -- Step 1: Enable Microsoft Entra ID for your resource - Please refer to this Cognitive Services authentication document [Authenticate with Microsoft Entra ID](https://learn.microsoft.com/azure/ai-services/authentication?tabs=powershell#authenticate-with-microsoft-entra-id). for the steps to enable AAD for your resource. +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. - The main steps are: - - Create resource with a custom subdomain. - - Create Service Principal and assign Cognitive Services User role to it. +To authenticate with AAD, you must first `npm` install [`@azure/identity`](https://www.npmjs.com/package/@azure/identity) -- Step 2: 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 - -To authenticate with AAD, you must first `npm` install [`@azure/identity`](https://www.npmjs.com/package/@azure/identity). 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. +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. -```typescript -import ContentSafetyClient from "@azure-rest/ai-content-safety"; -import { DefaultAzureCredential } from "@azure/identity"; - -const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; -const client = ContentSafetyClient(endpoint, new DefaultAzureCredential()); -``` - -## Key concepts - -### Available features -There are different types of analysis available from this service. The following table describes the currently available APIs. - -| Feature | Description | -| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Text Analysis API | Scans text for sexual content, violence, hate, and self-harm with multi-severity levels. | -| Image Analysis API | Scans images for sexual content, violence, hate, and self-harm with multi-severity levels. | -| Text Blocklist Management APIs | The default AI classifiers are sufficient for most content safety needs. However, you might need to screen for terms that are specific to your use case. You can create blocklists of terms to use with the Text API. | - -### Harm categories -Content Safety recognizes four distinct categories of objectionable content. - -| Category | Description | -| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Hate | Hate refers to any content that attacks or uses pejorative or discriminatory language in reference to a person or identity group based on certain differentiating attributes of that group. This includes but is not limited to race, ethnicity, nationality, gender identity and expression, sexual orientation, religion, immigration status, ability status, personal appearance, and body size. | -| Sexual | Sexual describes content related to anatomical organs and genitals, romantic relationships, acts portrayed in erotic or affectionate terms, pregnancy, physical sexual acts—including those acts portrayed as an assault or a forced sexual violent act against one’s will—, prostitution, pornography, and abuse. | -| Violence | Violence describes content related to physical actions intended to hurt, injure, damage, or kill someone or something. It also includes weapons, guns and related entities, such as manufacturers, associations, legislation, and similar. | -| Self-harm | Self-harm describes content related to physical actions intended to purposely hurt, injure, or damage one’s body or kill oneself. | - -Classification can be multi-labeled. For example, when a text sample goes through the text moderation model, it could be classified as both Sexual content and Violence. - -### Severity levels - -Every harm category the service applies also comes with a severity level rating. The severity level is meant to indicate the severity of the consequences of showing the flagged content. - -**Text**: The current version of the text model supports the **full 0-7 severity scale**. By default, the response will output 4 values: 0, 2, 4, and 6. Each two adjacent levels are mapped to a single level. Users could use "outputType" in request and set it as "EightSeverityLevels" to get 8 values in output: 0,1,2,3,4,5,6,7. You can refer [text content severity levels definitions](https://learn.microsoft.com/azure/ai-services/content-safety/concepts/harm-categories?tabs=definitions#text-content) for details. - -- [0,1] -> 0 -- [2,3] -> 2 -- [4,5] -> 4 -- [6,7] -> 6 - -**Image**: The current version of the image model supports the **trimmed version of the full 0-7 severity scale**. The classifier only returns severities 0, 2, 4, and 6; each two adjacent levels are mapped to a single level. You can refer [image content severity levels definitions](https://learn.microsoft.com/azure/ai-services/content-safety/concepts/harm-categories?tabs=definitions#image-content) for details. - -- [0,1] -> 0 -- [2,3] -> 2 -- [4,5] -> 4 -- [6,7] -> 6 - -### Text blocklist management -Following operations are supported to manage your text blocklist: -- Create or modify a blocklist -- List all blocklists -- Get a blocklist by blocklistName -- Add blockItems to a blocklist -- Remove blockItems from a blocklist -- List all blockItems in a blocklist by blocklistName -- Get a blockItem in a blocklist by blockItemId and blocklistName -- Delete a blocklist and all of its blockItems - -You can set the blocklists you want to use when analyze text, then you can get blocklist match result from returned response. - -## Examples - -The following section provides several code snippets covering some of the most common Content Safety service tasks in both **TypeScript** and **JavaScript**, including: - -- [Analyze text](#analyze-text) -- [Analyze image](#analyze-image) -- [Manage text blocklist](#manage-text-blocklist) - -### Analyze text - -#### Analyze text without blocklists - -TypeScript - -```typescript -import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -async function main() { - const endpoint = "https://.cognitiveservices.azure.com/"; - const key = ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const text = "This is a sample text"; - const analyzeTextOption = { text: text }; - const analyzeTextParameters = { body: analyzeTextOption }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const textCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log(textCategoriesAnalysisOutput.category, " severity: ", textCategoriesAnalysisOutput.severity) - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -async function main() { - const endpoint = "https://.cognitiveservices.azure.com/"; - const key = ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const text = "This is a sample text"; - const analyzeTextOption = { text: text }; - const analyzeTextParameters = { body: analyzeTextOption }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const textCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log( - textCategoriesAnalysisOutput.category, - " severity: ", - textCategoriesAnalysisOutput.severity - ); - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -#### Analyze text with blocklists - -TypeScript - -```typescript -import ContentSafetyClient, { CreateOrUpdateTextBlocklistParameters, isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters: CreateOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - } - } - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist created or updated: Name", result.body.blocklistName, ", Description: ", result.body.description); -} - -async function addBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText1 = "sample"; - const blockItemText2 = "text"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText1 - }, - { - description: "Test block item 2", - text: blockItemText2 - } - ] - } - }; - - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Block items added: "); - if (result.body.blocklistItems) { - for (const blockItem of result.body.blocklistItems) { - console.log("BlockItemId: ", blockItem.blocklistItemId, ", Text: ", blockItem.text, ", Description: ", blockItem.description); - } - } -} - -async function analyzeTextWithBlocklists() { - const blocklistName = "TestBlocklist"; - const inputText = "This is a sample to test text with blocklist."; - const analyzeTextParameters = { - body: { - text: inputText, - blocklistNames: [blocklistName], - haltOnBlocklistHit: false - } - }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist match results: "); - if (result.body.blocklistsMatch) { - for (const blocklistMatchResult of result.body.blocklistsMatch) { - console.log("BlocklistName: ", blocklistMatchResult.blocklistName, ", BlockItemId: ", blocklistMatchResult.blocklistItemId, ", BlockItemText: ", blocklistMatchResult.blocklistItemText); - } - } -} - -(async () => { - await createOrUpdateTextBlocklist(); - await addBlockItems(); - await analyzeTextWithBlocklists(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - }, - }; - - const result = await client - .path("/text/blocklists/{blocklistName}", blocklistName) - .patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log( - "Blocklist created or updated: Name", - result.body.blocklistName, - ", Description: ", - result.body.description - ); -} - -async function addBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText1 = "sample"; - const blockItemText2 = "text"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText1, - }, - { - description: "Test block item 2", - text: blockItemText2, - }, - ], - }, - }; - - const result = await client - .path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName) - .post(addOrUpdateBlocklistItemsParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Block items added: "); - if (result.body.blocklistItems) { - for (const blockItem of result.body.blocklistItems) { - console.log( - "BlockItemId: ", - blockItem.blocklistItemId, - ", Text: ", - blockItem.text, - ", Description: ", - blockItem.description - ); - } - } -} - -async function analyzeTextWithBlocklists() { - const blocklistName = "TestBlocklist"; - const inputText = "This is a sample to test text with blocklist."; - const analyzeTextParameters = { - body: { - text: inputText, - blocklistNames: [blocklistName], - haltOnBlocklistHit: false, - }, - }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist match results: "); - if (result.body.blocklistsMatch) { - for (const blocklistMatchResult of result.body.blocklistsMatch) { - console.log( - "BlocklistName: ", - blocklistMatchResult.blocklistName, - ", BlockItemId: ", - blocklistMatchResult.blocklistItemId, - ", BlockItemText: ", - blocklistMatchResult.blocklistItemText - ); - } - } -} - -(async () => { - await createOrUpdateTextBlocklist(); - await addBlockItems(); - await analyzeTextWithBlocklists(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -### Analyze image - -TypeScript - -```typescript -import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; -import fs from "fs"; -import path from "path"; - -async function main() { - const endpoint = "https://.cognitiveservices.azure.com/"; - const key = ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const image_path = path.resolve(__dirname, "./samples-dev/example-data/image.png"); - - const imageBuffer = fs.readFileSync(image_path); - const base64Image = imageBuffer.toString("base64"); - const analyzeImageOption = { image: { content: base64Image } }; - const analyzeImageParameters = { body: analyzeImageOption }; - - const result = await client.path("/image:analyze").post(analyzeImageParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const imageCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log(imageCategoriesAnalysisOutput.category, " severity: ", imageCategoriesAnalysisOutput.severity) - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); -const fs = require("fs"); -const path = require("path"); - -async function main() { - const endpoint = "https://.cognitiveservices.azure.com/"; - const key = ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const image_path = path.resolve(__dirname, "./samples-dev/example-data/image.png"); - - const imageBuffer = fs.readFileSync(image_path); - const base64Image = imageBuffer.toString("base64"); - const analyzeImageOption = { image: { content: base64Image } }; - const analyzeImageParameters = { body: analyzeImageOption }; - - const result = await client.path("/image:analyze").post(analyzeImageParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const imageCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log( - imageCategoriesAnalysisOutput.category, - " severity: ", - imageCategoriesAnalysisOutput.severity - ); - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -### Manage text blocklist - -#### Create or update text blocklist - -TypeScript - -```typescript -import ContentSafetyClient, { CreateOrUpdateTextBlocklistParameters, isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters: CreateOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - } - } - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist created or updated: Name", result.body.blocklistName, ", Description: ", result.body.description); -} - -(async () => { - await createOrUpdateTextBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - }, - }; - - const result = await client - .path("/text/blocklists/{blocklistName}", blocklistName) - .patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log( - "Blocklist created or updated: Name", - result.body.blocklistName, - ", Description: ", - result.body.description - ); -} - -(async () => { - await createOrUpdateTextBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -#### List text blocklists - -TypeScript - -```typescript -import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function listTextBlocklists() { - const result = await client.path("/text/blocklists").get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List blocklists: "); - if (result.body.value) { - for (const blocklist of result.body.value) { - console.log("BlocklistName: ", blocklist.blocklistName, ", Description: ", blocklist.description); - } - } -} - -(async () => { - await listTextBlocklists(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function listTextBlocklists() { - const result = await client.path("/text/blocklists").get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List blocklists: "); - if (result.body.value) { - for (const blocklist of result.body.value) { - console.log( - "BlocklistName: ", - blocklist.blocklistName, - ", Description: ", - blocklist.description - ); - } - } -} - -(async () => { - await listTextBlocklists(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -#### Get text blocklist - -TypeScript - -```typescript -import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function getTextBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Get blocklist: "); - console.log("Name: ", result.body.blocklistName, ", Description: ", result.body.description); -} - -(async () => { - await getTextBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function getTextBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Get blocklist: "); - console.log("Name: ", result.body.blocklistName, ", Description: ", result.body.description); -} - -(async () => { - await getTextBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -#### Delete text blocklist - -TypeScript - -```typescript -import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function deleteBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).delete(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Deleted blocklist: ", blocklistName); -} - -(async () => { - await deleteBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function deleteBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).delete(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Deleted blocklist: ", blocklistName); -} - -(async () => { - await deleteBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -#### Add blockItems - -TypeScript - -```typescript -import ContentSafetyClient, { CreateOrUpdateTextBlocklistParameters, isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters: CreateOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - } - } - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist created or updated: Name", result.body.blocklistName, ", Description: ", result.body.description); -} - -async function addBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText1 = "sample"; - const blockItemText2 = "text"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText1 - }, - { - description: "Test block item 2", - text: blockItemText2 - } - ] - } - }; - - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Block items added: "); - if (result.body.blocklistItems) { - for (const blockItem of result.body.blocklistItems) { - console.log("BlockItemId: ", blockItem.blocklistItemId, ", Text: ", blockItem.text, ", Description: ", blockItem.description); - } - } -} - -(async () => { - await createOrUpdateTextBlocklist(); - await addBlockItems(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - }, - }; - - const result = await client - .path("/text/blocklists/{blocklistName}", blocklistName) - .patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log( - "Blocklist created or updated: Name", - result.body.blocklistName, - ", Description: ", - result.body.description - ); -} - -async function addBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText1 = "sample"; - const blockItemText2 = "text"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText1, - }, - { - description: "Test block item 2", - text: blockItemText2, - }, - ], - }, - }; - - const result = await client - .path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName) - .post(addOrUpdateBlocklistItemsParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Block items added: "); - if (result.body.blocklistItems) { - for (const blockItem of result.body.blocklistItems) { - console.log( - "BlockItemId: ", - blockItem.blocklistItemId, - ", Text: ", - blockItem.text, - ", Description: ", - blockItem.description - ); - } - } -} - -(async () => { - await createOrUpdateTextBlocklist(); - await addBlockItems(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -#### List blockItems - -TypeScript - -```typescript -import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function listBlockItems() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName).get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List block items: "); - if (result.body.value) { - for (const blockItem of result.body.value) { - console.log("BlockItemId: ", blockItem.blocklistItemId, ", Text: ", blockItem.text, ", Description: ", blockItem.description); - } - } -} - -(async () => { - await listBlockItems(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function listBlockItems() { - const blocklistName = "TestBlocklist"; - - const result = await client - .path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName) - .get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List block items: "); - if (result.body.value) { - for (const blockItem of result.body.value) { - console.log( - "BlockItemId: ", - blockItem.blocklistItemId, - ", Text: ", - blockItem.text, - ", Description: ", - blockItem.description - ); - } - } -} - -(async () => { - await listBlockItems(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -#### Get blockItem - -TypeScript - -```typescript -import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function getBlockItem() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText - } - ] - } - }; - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const blockItem = await client.path("/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}", blocklistName, blockItemId).get(); - - if (isUnexpected(blockItem)) { - throw blockItem; - } - - console.log("Get blockitem: "); - console.log("BlockItemId: ", blockItem.body.blocklistItemId, ", Text: ", blockItem.body.text, ", Description: ", blockItem.body.description); -} - -(async () => { - await getBlockItem(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function getBlockItem() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText, - }, - ], - }, - }; - const result = await client - .path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName) - .post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const blockItem = await client - .path( - "/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}", - blocklistName, - blockItemId - ) - .get(); - - if (isUnexpected(blockItem)) { - throw blockItem; - } - - console.log("Get blockitem: "); - console.log( - "BlockItemId: ", - blockItem.body.blocklistItemId, - ", Text: ", - blockItem.body.text, - ", Description: ", - blockItem.body.description - ); -} - -(async () => { - await getBlockItem(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -#### Remove blockItems - -TypeScript - -```typescript -import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function removeBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText - } - ] - } - }; - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const removeBlocklistItemsParameters = { - body: { - blocklistItemIds: [blockItemId] - } - }; - const removeBlockItem = await client.path("/text/blocklists/{blocklistName}:removeBlocklistItems", blocklistName).post(removeBlocklistItemsParameters); - - if (isUnexpected(removeBlockItem)) { - throw removeBlockItem; - } - - console.log("Removed blockItem: ", blockItemText); -} - -(async () => { - await removeBlockItems(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` - -JavaScript - -```javascript -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -const endpoint = "https://.cognitiveservices.azure.com/"; -const key = ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function removeBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText, - }, - ], - }, - }; - const result = await client - .path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName) - .post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const removeBlocklistItemsParameters = { - body: { - blocklistItemIds: [blockItemId], - }, - }; - const removeBlockItem = await client - .path("/text/blocklists/{blocklistName}:removeBlocklistItems", blocklistName) - .post(removeBlocklistItemsParameters); - - if (isUnexpected(removeBlockItem)) { - throw removeBlockItem; - } - - console.log("Removed blockItem: ", blockItemText); -} - -(async () => { - await removeBlockItems(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); -``` +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 @@ -1319,13 +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). - -## Next steps - -### Additional documentation - -For more extensive documentation on Azure Content Safety, see the [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview) on docs.microsoft.com. - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/master/CONTRIBUTING.md) to learn more about how to build and test the code. diff --git a/sdk/contentsafety/ai-content-safety-rest/api-extractor.json b/sdk/contentsafety/ai-content-safety-rest/api-extractor.json index c3efb349c43a..828d4e354615 100644 --- a/sdk/contentsafety/ai-content-safety-rest/api-extractor.json +++ b/sdk/contentsafety/ai-content-safety-rest/api-extractor.json @@ -1,18 +1,31 @@ { "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", - "mainEntryPointFilePath": "./types/src/index.d.ts", - "docModel": { "enabled": true }, - "apiReport": { "enabled": true, "reportFolder": "./review" }, + "mainEntryPointFilePath": "./dist/esm/index.d.ts", + "docModel": { + "enabled": true + }, + "apiReport": { + "enabled": true, + "reportFolder": "./review" + }, "dtsRollup": { "enabled": true, "untrimmedFilePath": "", "publicTrimmedFilePath": "./types/ai-content-safety.d.ts" }, "messages": { - "tsdocMessageReporting": { "default": { "logLevel": "none" } }, + "tsdocMessageReporting": { + "default": { + "logLevel": "none" + } + }, "extractorMessageReporting": { - "ae-missing-release-tag": { "logLevel": "none" }, - "ae-unresolved-link": { "logLevel": "none" } + "ae-missing-release-tag": { + "logLevel": "none" + }, + "ae-unresolved-link": { + "logLevel": "none" + } } } -} +} \ No newline at end of file diff --git a/sdk/contentsafety/ai-content-safety-rest/assets.json b/sdk/contentsafety/ai-content-safety-rest/assets.json deleted file mode 100644 index a5efbdf5a9e0..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/assets.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "AssetsRepo": "Azure/azure-sdk-assets", - "AssetsRepoPrefixPath": "js", - "TagPrefix": "js/contentsafety/ai-content-safety-rest", - "Tag": "js/contentsafety/ai-content-safety-rest_1fb3b4ba95" -} diff --git a/sdk/contentsafety/ai-content-safety-rest/eslint.config.mjs b/sdk/contentsafety/ai-content-safety-rest/eslint.config.mjs new file mode 100644 index 000000000000..113bdc3eaf5f --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-rest/eslint.config.mjs @@ -0,0 +1,17 @@ +import azsdkEslint from "@azure/eslint-plugin-azure-sdk"; + +export default [ + ...azsdkEslint.configs.recommended, + { + rules: { + "@azure/azure-sdk/ts-modules-only-named": "warn", + "@azure/azure-sdk/ts-apiextractor-json-types": "warn", + "@azure/azure-sdk/ts-package-json-types": "warn", + "@azure/azure-sdk/ts-package-json-engine-is-present": "warn", + "@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/contentsafety/ai-content-safety-rest/karma.conf.js b/sdk/contentsafety/ai-content-safety-rest/karma.conf.js deleted file mode 100644 index 6eb53d886bdb..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/karma.conf.js +++ /dev/null @@ -1,142 +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(); -const { relativeRecordingsPath } = require("@azure-tools/test-recorder"); -process.env.RECORDINGS_RELATIVE_PATH = relativeRecordingsPath(); - -module.exports = function (config) { - config.set({ - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: "./", - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ["source-map-support", "mocha"], - - plugins: [ - "karma-mocha", - "karma-mocha-reporter", - "karma-chrome-launcher", - "karma-firefox-launcher", - "karma-env-preprocessor", - "karma-coverage", - "karma-sourcemap-loader", - "karma-junit-reporter", - "karma-source-map-support", - ], - - // list of files / patterns to load in the browser - files: [ - "dist-test/index.browser.js", - { - pattern: "dist-test/index.browser.js.map", - type: "html", - included: false, - served: true, - }, - { - pattern: "./samples-dev/example-data/*.png", - watched: false, - included: false, - served: true, - }, - ], - - // list of files / patterns to exclude - exclude: [], - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - "**/*.js": ["sourcemap", "env"], - // IMPORTANT: COMMENT following line if you want to debug in your browsers!! - // Preprocess source file to calculate code coverage, however this will make source file unreadable - // "dist-test/index.js": ["coverage"] - }, - - envPreprocessor: [ - "TEST_MODE", - "ENDPOINT", - "AZURE_CLIENT_SECRET", - "AZURE_CLIENT_ID", - "AZURE_TENANT_ID", - "AZURE_SUBSCRIPTION_ID", - "SUBSCRIPTION_ID", - "RECORDINGS_RELATIVE_PATH", - "CONTENT_SAFETY_ENDPOINT", - "CONTENT_SAFETY_API_KEY", - ], - - // 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/contentsafety/ai-content-safety-rest/package.json b/sdk/contentsafety/ai-content-safety-rest/package.json index 24a904b8c133..e05197f3a328 100644 --- a/sdk/contentsafety/ai-content-safety-rest/package.json +++ b/sdk/contentsafety/ai-content-safety-rest/package.json @@ -1,9 +1,28 @@ { "name": "@azure-rest/ai-content-safety", - "sdk-type": "client", - "author": "Microsoft Corporation", - "version": "1.0.1", + "version": "2.0.0", "description": "ContentSafety Service", + "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", @@ -12,120 +31,107 @@ "browser", "isomorphic" ], + "author": "Microsoft Corporation", "license": "MIT", - "main": "dist/index.js", - "module": "./dist-esm/src/index.js", - "types": "./types/ai-content-safety.d.ts", - "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-content-safety.d.ts", + "dist", "README.md", "LICENSE", - "review/*" + "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" }, - "scripts": { - "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1", - "build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1", - "build:samples": "echo skipped.", - "build:test": "tsc -p . && dev-tool run bundle", - "build:debug": "tsc -p . && dev-tool run bundle && dev-tool run extract-api", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"*.{js,json}\" \"test/**/*.ts\"", - "clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "rimraf review && mkdirp ./review && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"*.{js,json}\" \"test/**/*.ts\"", - "generate:client": "echo skipped", - "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'", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", - "lint": "eslint package.json api-extractor.json src test --ext .ts", - "pack": "npm pack 2>&1", - "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", - "test": "npm run clean && npm run build:test && npm run unit-test", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:node": "dev-tool run test:node-ts-input -- --timeout 1200000 --exclude 'test/**/browser/*.spec.ts' 'test/**/*.spec.ts'", - "unit-test:browser": "dev-tool run test:browser", - "build": "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && dev-tool run extract-api" + "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", + "//metadata": { + "constantPaths": [ + { + "path": "src/contentSafetyClient.ts", + "prefix": "userAgentInfo" + } + ] }, - "sideEffects": false, - "autoPublish": false, "dependencies": { - "@azure/core-auth": "^1.3.0", - "@azure-rest/core-client": "^1.1.4", - "@azure/core-rest-pipeline": "^1.12.0", + "@azure-rest/core-client": "^2.1.0", + "@azure/core-auth": "^1.6.0", + "@azure/core-rest-pipeline": "^1.5.0", "@azure/logger": "^1.0.0", - "tslib": "^2.2.0", + "tslib": "^2.6.2", "@azure/core-paging": "^1.5.0" }, "devDependencies": { - "@microsoft/api-extractor": "^7.31.1", - "autorest": "latest", - "@types/node": "^18.0.0", "dotenv": "^16.0.0", - "eslint": "^8.0.0", + "@microsoft/api-extractor": "^7.40.3", + "@types/node": "^18.0.0", + "eslint": "^8.55.0", + "prettier": "^3.2.5", + "rimraf": "^5.0.5", "mkdirp": "^3.0.1", - "rimraf": "^5.0.0", - "source-map-support": "^0.5.9", "typescript": "~5.5.3", + "tshy": "^1.11.1", + "@azure/identity": "^4.2.1", + "@vitest/browser": "^2.0.5", + "@vitest/coverage-istanbul": "^2.0.5", + "playwright": "^1.41.2", + "vitest": "^2.0.5", + "@azure-tools/test-credential": "^2.0.0", + "@azure-tools/test-recorder": "^4.0.0", "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure-tools/test-credential": "^1.0.0", - "@azure/identity": "^4.0.1", - "@azure-tools/test-recorder": "^3.0.0", - "mocha": "^10.0.0", - "@types/mocha": "^10.0.0", - "cross-env": "^7.0.2", - "@types/chai": "^4.2.8", - "chai": "^4.2.0", - "karma-chrome-launcher": "^3.0.0", - "karma-coverage": "^2.0.0", - "karma-env-preprocessor": "^0.1.1", - "karma-firefox-launcher": "^2.1.2", - "karma-junit-reporter": "^2.0.1", - "karma-mocha-reporter": "^2.2.5", - "karma-mocha": "^2.0.1", - "karma-source-map-support": "~1.4.0", - "karma-sourcemap-loader": "^0.4.0", - "karma": "^6.2.0", - "nyc": "^17.0.0", - "ts-node": "^10.0.0", - "@azure/core-util": "^1.6.0" + "@azure/eslint-plugin-azure-sdk": "^3.0.0" }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/contentsafety/ai-content-safety-rest/README.md", - "//metadata": { - "constantPaths": [ - { - "path": "src/contentSafetyClient.ts", - "prefix": "userAgentInfo" - } - ] + "scripts": { + "clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log", + "extract-api": "rimraf review && mkdirp ./review && dev-tool run extract-api", + "pack": "npm pack 2>&1", + "lint": "eslint package.json api-extractor.json src test", + "lint:fix": "eslint package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", + "unit-test": "npm run unit-test:node && npm run unit-test:browser", + "unit-test:browser": "npm run build:test && dev-tool run test:vitest --browser", + "unit-test:node": "dev-tool run test:vitest", + "integration-test": "npm run integration-test:node && npm run integration-test:browser", + "integration-test:browser": "echo skipped", + "integration-test:node": "echo skipped", + "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build:samples": "echo skipped", + "check-format": "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}\" ", + "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" }, - "browser": { - "./dist-esm/test/public/utils/env.js": "./dist-esm/test/public/utils/env.browser.js" + "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" + } + } }, - "//sampleConfiguration": { - "productName": "ContentSafety", - "productSlugs": [ - "azure" - ], - "extraFiles": { - "./samples-dev/example-data": [ - "javascript/example-data", - "typescript/src/example-data" - ] - }, - "disableDocsMs": true, - "apiRefLink": "https://docs.microsoft.com/javascript/api/@azure-rest/ai-content-safety?view=azure-node-preview" - } -} + "main": "./dist/commonjs/index.js", + "types": "./dist/commonjs/index.d.ts" +} \ No newline at end of file diff --git a/sdk/contentsafety/ai-content-safety-rest/review/ai-content-safety.api.md b/sdk/contentsafety/ai-content-safety-rest/review/ai-content-safety.api.md index 557b396ff4ed..2724291f5e6b 100644 --- a/sdk/contentsafety/ai-content-safety-rest/review/ai-content-safety.api.md +++ b/sdk/contentsafety/ai-content-safety-rest/review/ai-content-safety.api.md @@ -98,17 +98,13 @@ export interface AnalyzeImageDefaultResponse extends HttpResponse { // @public export interface AnalyzeImageOptions { - categories?: string[]; - image: ImageData_2; - outputType?: string; + categories?: ImageCategory[]; + image: ImageData; + outputType?: AnalyzeImageOutputType; } // @public -export interface AnalyzeImageOptionsOutput { - categories?: string[]; - image: ImageDataOutput; - outputType?: string; -} +export type AnalyzeImageOutputType = string; // @public (undocumented) export type AnalyzeImageParameters = AnalyzeImageBodyParam & RequestParameters; @@ -154,20 +150,14 @@ export interface AnalyzeTextDefaultResponse extends HttpResponse { // @public export interface AnalyzeTextOptions { blocklistNames?: string[]; - categories?: string[]; + categories?: TextCategory[]; haltOnBlocklistHit?: boolean; - outputType?: string; + outputType?: AnalyzeTextOutputType; text: string; } // @public -export interface AnalyzeTextOptionsOutput { - blocklistNames?: string[]; - categories?: string[]; - haltOnBlocklistHit?: boolean; - outputType?: string; - text: string; -} +export type AnalyzeTextOutputType = string; // @public (undocumented) export type AnalyzeTextParameters = AnalyzeTextBodyParam & RequestParameters; @@ -184,7 +174,12 @@ export type ContentSafetyClient = Client & { }; // @public -function createClient(endpoint: string, credentials: TokenCredential | KeyCredential, options?: ClientOptions): ContentSafetyClient; +export interface ContentSafetyClientOptions extends ClientOptions { + apiVersion?: string; +} + +// @public +function createClient(endpointParam: string, credentials: TokenCredential | KeyCredential, { apiVersion, ...options }?: ContentSafetyClientOptions): ContentSafetyClient; export default createClient; // @public @@ -255,6 +250,52 @@ export interface DeleteTextBlocklistDefaultResponse extends HttpResponse { // @public (undocumented) export type DeleteTextBlocklistParameters = RequestParameters; +// @public (undocumented) +export interface DetectTextProtectedMaterial { + post(options: DetectTextProtectedMaterialParameters): StreamableMethod; +} + +// @public +export interface DetectTextProtectedMaterial200Response extends HttpResponse { + // (undocumented) + body: DetectTextProtectedMaterialResultOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface DetectTextProtectedMaterialBodyParam { + body: DetectTextProtectedMaterialOptions; +} + +// @public (undocumented) +export interface DetectTextProtectedMaterialDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface DetectTextProtectedMaterialDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & DetectTextProtectedMaterialDefaultHeaders; + // (undocumented) + status: string; +} + +// @public +export interface DetectTextProtectedMaterialOptions { + text: string; +} + +// @public (undocumented) +export type DetectTextProtectedMaterialParameters = DetectTextProtectedMaterialBodyParam & RequestParameters; + +// @public +export interface DetectTextProtectedMaterialResultOutput { + protectedMaterialAnalysis: TextProtectedMaterialAnalysisResultOutput; +} + // @public export type GetArrayType = T extends Array ? TData : never; @@ -330,28 +371,30 @@ export type GetTextBlocklistParameters = RequestParameters; // @public export interface ImageCategoriesAnalysisOutput { - category: string; + category: ImageCategoryOutput; severity?: number; } // @public -interface ImageData_2 { - blobUrl?: string; - content?: string; -} -export { ImageData_2 as ImageData } +export type ImageCategory = string; // @public -export interface ImageDataOutput { +export type ImageCategoryOutput = string; + +// @public +export interface ImageData { blobUrl?: string; content?: string; } +// @public (undocumented) +export function isUnexpected(response: AnalyzeImage200Response | AnalyzeImageDefaultResponse): response is AnalyzeImageDefaultResponse; + // @public (undocumented) export function isUnexpected(response: AnalyzeText200Response | AnalyzeTextDefaultResponse): response is AnalyzeTextDefaultResponse; // @public (undocumented) -export function isUnexpected(response: AnalyzeImage200Response | AnalyzeImageDefaultResponse): response is AnalyzeImageDefaultResponse; +export function isUnexpected(response: DetectTextProtectedMaterial200Response | DetectTextProtectedMaterialDefaultResponse): response is DetectTextProtectedMaterialDefaultResponse; // @public (undocumented) export function isUnexpected(response: GetTextBlocklist200Response | GetTextBlocklistDefaultResponse): response is GetTextBlocklistDefaultResponse; @@ -514,8 +557,9 @@ export interface RemoveTextBlocklistItemsOptions { // @public (undocumented) export interface Routes { - (path: "/text:analyze"): AnalyzeText; (path: "/image:analyze"): AnalyzeImage; + (path: "/text:analyze"): AnalyzeText; + (path: "/text:detectProtectedMaterial"): DetectTextProtectedMaterial; (path: "/text/blocklists/{blocklistName}", blocklistName: string): GetTextBlocklist; (path: "/text/blocklists"): ListTextBlocklists; (path: "/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName: string): AddOrUpdateBlocklistItems; @@ -533,6 +577,7 @@ export interface TextBlocklist { // @public export interface TextBlocklistItem { description?: string; + isRegex?: boolean; text: string; } @@ -540,6 +585,7 @@ export interface TextBlocklistItem { export interface TextBlocklistItemOutput { readonly blocklistItemId: string; description?: string; + isRegex?: boolean; text: string; } @@ -561,10 +607,21 @@ export type TextBlocklistResourceMergeAndPatch = Partial; // @public export interface TextCategoriesAnalysisOutput { - category: string; + category: TextCategoryOutput; severity?: number; } +// @public +export type TextCategory = string; + +// @public +export type TextCategoryOutput = string; + +// @public +export interface TextProtectedMaterialAnalysisResultOutput { + detected: boolean; +} + // (No @packageDocumentation comment for this package) ``` diff --git a/sdk/contentsafety/ai-content-safety-rest/sample.env b/sdk/contentsafety/ai-content-safety-rest/sample.env deleted file mode 100644 index f024206652c3..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/sample.env +++ /dev/null @@ -1,2 +0,0 @@ -CONTENT_SAFETY_ENDPOINT= -CONTENT_SAFETY_API_KEY= diff --git a/sdk/contentsafety/ai-content-safety-rest/samples-dev/example-data/image.png b/sdk/contentsafety/ai-content-safety-rest/samples-dev/example-data/image.png deleted file mode 100644 index 87d3705f2979..000000000000 Binary files a/sdk/contentsafety/ai-content-safety-rest/samples-dev/example-data/image.png and /dev/null differ diff --git a/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleAnalyzeImage.ts b/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleAnalyzeImage.ts deleted file mode 100644 index 1354b7d0d33f..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleAnalyzeImage.ts +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to analyze image. - */ - -import ContentSafetyClient, { - isUnexpected, -} from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; -import fs from "fs"; -import path from "path"; - -// Load the .env file if it exists -import * as dotenv from "dotenv"; -dotenv.config(); - -async function main() { - const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; - const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const image_path = path.resolve(__dirname, "./example-data/image.png"); - - const imageBuffer = fs.readFileSync(image_path); - const base64Image = imageBuffer.toString("base64"); - const analyzeImageOption = { image: { content: base64Image } }; - const analyzeImageParameters = { body: analyzeImageOption }; - - const result = await client.path("/image:analyze").post(analyzeImageParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const imageCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log(imageCategoriesAnalysisOutput.category, " severity: ", imageCategoriesAnalysisOutput.severity) - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleAnalyzeText.ts b/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleAnalyzeText.ts deleted file mode 100644 index 6bf2755e714a..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleAnalyzeText.ts +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to analyze text. - */ - -import ContentSafetyClient, { - isUnexpected -} from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -// Load the .env file if it exists -import * as dotenv from "dotenv"; -dotenv.config(); - -async function main() { - const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; - const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const text = "This is a sample text"; - const analyzeTextOption = { text: text }; - const analyzeTextParameters = { body: analyzeTextOption }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const textCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log(textCategoriesAnalysisOutput.category, " severity: ", textCategoriesAnalysisOutput.severity) - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleManageBlocklist.ts b/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleManageBlocklist.ts deleted file mode 100644 index c6ab2377c673..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples-dev/sampleManageBlocklist.ts +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to manage blocklist. - */ - -import ContentSafetyClient, { - CreateOrUpdateTextBlocklistParameters, - isUnexpected -} from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -// Load the .env file if it exists -import * as dotenv from "dotenv"; -dotenv.config(); - -const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; -const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters: CreateOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - } - } - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist created or updated: Name", result.body.blocklistName, ", Description: ", result.body.description); -} - -async function addBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText1 = "sample"; - const blockItemText2 = "text"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText1 - }, - { - description: "Test block item 2", - text: blockItemText2 - } - ] - } - }; - - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Block items added: "); - if (result.body.blocklistItems) { - for (const blockItem of result.body.blocklistItems) { - console.log("BlockItemId: ", blockItem.blocklistItemId, ", Text: ", blockItem.text, ", Description: ", blockItem.description); - } - } -} - -async function analyzeTextWithBlocklists() { - const blocklistName = "TestBlocklist"; - const inputText = "This is a sample to test text with blocklist."; - const analyzeTextParameters = { - body: { - text: inputText, - blocklistNames: [blocklistName], - haltOnBlocklistHit: false - } - }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist match results: "); - if (result.body.blocklistsMatch) { - for (const blocklistMatchResult of result.body.blocklistsMatch) { - console.log("BlocklistName: ", blocklistMatchResult.blocklistName, ", BlockItemId: ", blocklistMatchResult.blocklistItemId, ", BlockItemText: ", blocklistMatchResult.blocklistItemText); - } - } -} - -async function listTextBlocklists() { - const result = await client.path("/text/blocklists").get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List blocklists: "); - if (result.body.value) { - for (const blocklist of result.body.value) { - console.log("BlocklistName: ", blocklist.blocklistName, ", Description: ", blocklist.description); - } - } -} - -async function getTextBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Get blocklist: "); - console.log("Name: ", result.body.blocklistName, ", Description: ", result.body.description); -} - -async function listBlockItems() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName).get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List block items: "); - if (result.body.value) { - for (const blockItem of result.body.value) { - console.log("BlockItemId: ", blockItem.blocklistItemId, ", Text: ", blockItem.text, ", Description: ", blockItem.description); - } - } -} - -async function getBlockItem() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText - } - ] - } - }; - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const blockItem = await client.path("/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}", blocklistName, blockItemId).get(); - - if (isUnexpected(blockItem)) { - throw blockItem; - } - - console.log("Get blockitem: "); - console.log("BlockItemId: ", blockItem.body.blocklistItemId, ", Text: ", blockItem.body.text, ", Description: ", blockItem.body.description); -} - -async function removeBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText - } - ] - } - }; - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const removeBlocklistItemsParameters = { - body: { - blocklistItemIds: [blockItemId] - } - }; - const removeBlockItem = await client.path("/text/blocklists/{blocklistName}:removeBlocklistItems", blocklistName).post(removeBlocklistItemsParameters); - - if (isUnexpected(removeBlockItem)) { - throw removeBlockItem; - } - - console.log("Removed blockItem: ", blockItemText); -} - -async function deleteBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).delete(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Deleted blocklist: ", blocklistName); -} - -(async () => { - await createOrUpdateTextBlocklist(); - await addBlockItems(); - await analyzeTextWithBlocklists(); - await listTextBlocklists(); - await getTextBlocklist(); - await listBlockItems(); - await getBlockItem(); - await removeBlockItems(); - await deleteBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/README.md b/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/README.md deleted file mode 100644 index 43eb3698e3a9..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# ContentSafety client library samples for JavaScript - -These sample programs show how to use the JavaScript client libraries for ContentSafety in some common scenarios. - -| **File Name** | **Description** | -| ------------------------------------------------- | ------------------------------------- | -| [sampleAnalyzeImage.js][sampleanalyzeimage] | Demonstrates how to analyze image. | -| [sampleAnalyzeText.js][sampleanalyzetext] | Demonstrates how to analyze text. | -| [sampleManageBlocklist.js][samplemanageblocklist] | Demonstrates how to manage blocklist. | - -## 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] to run these sample programs. - -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 sampleAnalyzeImage.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 cross-env CONTENT_SAFETY_ENDPOINT="" CONTENT_SAFETY_API_KEY="" node sampleAnalyzeImage.js -``` - -## Next Steps - -Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. - -[sampleanalyzeimage]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleAnalyzeImage.js -[sampleanalyzetext]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleAnalyzeText.js -[samplemanageblocklist]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleManageBlocklist.js -[apiref]: https://docs.microsoft.com/javascript/api/@azure-rest/ai-content-safety?view=azure-node-preview -[freesub]: https://azure.microsoft.com/free/ -[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/contentsafety/ai-content-safety-rest/README.md diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/example-data/image.png b/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/example-data/image.png deleted file mode 100644 index 87d3705f2979..000000000000 Binary files a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/example-data/image.png and /dev/null differ diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/package.json b/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/package.json deleted file mode 100644 index a93bc9ad6c29..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@azure-samples/ai-content-safety-js", - "private": true, - "version": "1.0.0", - "description": "ContentSafety client library samples for JavaScript", - "engines": { - "node": ">=18.0.0" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Azure/azure-sdk-for-js.git", - "directory": "sdk/contentsafety/ai-content-safety-rest" - }, - "keywords": [ - "node", - "azure", - "cloud", - "typescript", - "browser", - "isomorphic" - ], - "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/contentsafety/ai-content-safety-rest", - "dependencies": { - "@azure-rest/ai-content-safety": "latest", - "dotenv": "latest", - "@azure/core-auth": "^1.3.0" - } -} diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sample.env b/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sample.env deleted file mode 100644 index f024206652c3..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sample.env +++ /dev/null @@ -1,2 +0,0 @@ -CONTENT_SAFETY_ENDPOINT= -CONTENT_SAFETY_API_KEY= diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleAnalyzeImage.js b/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleAnalyzeImage.js deleted file mode 100644 index e1830bb58c4e..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleAnalyzeImage.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to analyze image. - */ - -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); -const fs = require("fs"); -const path = require("path"); - -// Load the .env file if it exists -require("dotenv").config(); - -async function main() { - const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; - const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const image_path = path.resolve(__dirname, "./example-data/image.png"); - - const imageBuffer = fs.readFileSync(image_path); - const base64Image = imageBuffer.toString("base64"); - const analyzeImageOption = { image: { content: base64Image } }; - const analyzeImageParameters = { body: analyzeImageOption }; - - const result = await client.path("/image:analyze").post(analyzeImageParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const imageCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log( - imageCategoriesAnalysisOutput.category, - " severity: ", - imageCategoriesAnalysisOutput.severity, - ); - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleAnalyzeText.js b/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleAnalyzeText.js deleted file mode 100644 index 30f2d79bd628..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleAnalyzeText.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to analyze text. - */ - -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -// Load the .env file if it exists -require("dotenv").config(); - -async function main() { - const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; - const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const text = "This is a sample text"; - const analyzeTextOption = { text: text }; - const analyzeTextParameters = { body: analyzeTextOption }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const textCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log( - textCategoriesAnalysisOutput.category, - " severity: ", - textCategoriesAnalysisOutput.severity, - ); - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleManageBlocklist.js b/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleManageBlocklist.js deleted file mode 100644 index e18c13e820b9..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/javascript/sampleManageBlocklist.js +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to manage blocklist. - */ - -const ContentSafetyClient = require("@azure-rest/ai-content-safety").default, - { isUnexpected } = require("@azure-rest/ai-content-safety"); -const { AzureKeyCredential } = require("@azure/core-auth"); - -// Load the .env file if it exists -require("dotenv").config(); - -const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; -const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - }, - }; - - const result = await client - .path("/text/blocklists/{blocklistName}", blocklistName) - .patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log( - "Blocklist created or updated: Name", - result.body.blocklistName, - ", Description: ", - result.body.description, - ); -} - -async function addBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText1 = "sample"; - const blockItemText2 = "text"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText1, - }, - { - description: "Test block item 2", - text: blockItemText2, - }, - ], - }, - }; - - const result = await client - .path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName) - .post(addOrUpdateBlocklistItemsParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Block items added: "); - if (result.body.blocklistItems) { - for (const blockItem of result.body.blocklistItems) { - console.log( - "BlockItemId: ", - blockItem.blocklistItemId, - ", Text: ", - blockItem.text, - ", Description: ", - blockItem.description, - ); - } - } -} - -async function analyzeTextWithBlocklists() { - const blocklistName = "TestBlocklist"; - const inputText = "This is a sample to test text with blocklist."; - const analyzeTextParameters = { - body: { - text: inputText, - blocklistNames: [blocklistName], - haltOnBlocklistHit: false, - }, - }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist match results: "); - if (result.body.blocklistsMatch) { - for (const blocklistMatchResult of result.body.blocklistsMatch) { - console.log( - "BlocklistName: ", - blocklistMatchResult.blocklistName, - ", BlockItemId: ", - blocklistMatchResult.blocklistItemId, - ", BlockItemText: ", - blocklistMatchResult.blocklistItemText, - ); - } - } -} - -async function listTextBlocklists() { - const result = await client.path("/text/blocklists").get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List blocklists: "); - if (result.body.value) { - for (const blocklist of result.body.value) { - console.log( - "BlocklistName: ", - blocklist.blocklistName, - ", Description: ", - blocklist.description, - ); - } - } -} - -async function getTextBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Get blocklist: "); - console.log("Name: ", result.body.blocklistName, ", Description: ", result.body.description); -} - -async function listBlockItems() { - const blocklistName = "TestBlocklist"; - - const result = await client - .path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName) - .get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List block items: "); - if (result.body.value) { - for (const blockItem of result.body.value) { - console.log( - "BlockItemId: ", - blockItem.blocklistItemId, - ", Text: ", - blockItem.text, - ", Description: ", - blockItem.description, - ); - } - } -} - -async function getBlockItem() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText, - }, - ], - }, - }; - const result = await client - .path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName) - .post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const blockItem = await client - .path( - "/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}", - blocklistName, - blockItemId, - ) - .get(); - - if (isUnexpected(blockItem)) { - throw blockItem; - } - - console.log("Get blockitem: "); - console.log( - "BlockItemId: ", - blockItem.body.blocklistItemId, - ", Text: ", - blockItem.body.text, - ", Description: ", - blockItem.body.description, - ); -} - -async function removeBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText, - }, - ], - }, - }; - const result = await client - .path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName) - .post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const removeBlocklistItemsParameters = { - body: { - blocklistItemIds: [blockItemId], - }, - }; - const removeBlockItem = await client - .path("/text/blocklists/{blocklistName}:removeBlocklistItems", blocklistName) - .post(removeBlocklistItemsParameters); - - if (isUnexpected(removeBlockItem)) { - throw removeBlockItem; - } - - console.log("Removed blockItem: ", blockItemText); -} - -async function deleteBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).delete(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Deleted blocklist: ", blocklistName); -} - -(async () => { - await createOrUpdateTextBlocklist(); - await addBlockItems(); - await analyzeTextWithBlocklists(); - await listTextBlocklists(); - await getTextBlocklist(); - await listBlockItems(); - await getBlockItem(); - await removeBlockItems(); - await deleteBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/README.md b/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/README.md deleted file mode 100644 index a158c7656c14..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# ContentSafety client library samples for TypeScript - -These sample programs show how to use the TypeScript client libraries for ContentSafety in some common scenarios. - -| **File Name** | **Description** | -| ------------------------------------------------- | ------------------------------------- | -| [sampleAnalyzeImage.ts][sampleanalyzeimage] | Demonstrates how to analyze image. | -| [sampleAnalyzeText.ts][sampleanalyzetext] | Demonstrates how to analyze text. | -| [sampleManageBlocklist.ts][samplemanageblocklist] | Demonstrates how to manage blocklist. | - -## 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] to run these sample programs. - -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/sampleAnalyzeImage.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 cross-env CONTENT_SAFETY_ENDPOINT="" CONTENT_SAFETY_API_KEY="" node dist/sampleAnalyzeImage.js -``` - -## Next Steps - -Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. - -[sampleanalyzeimage]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleAnalyzeImage.ts -[sampleanalyzetext]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleAnalyzeText.ts -[samplemanageblocklist]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleManageBlocklist.ts -[apiref]: https://docs.microsoft.com/javascript/api/@azure-rest/ai-content-safety?view=azure-node-preview -[freesub]: https://azure.microsoft.com/free/ -[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/contentsafety/ai-content-safety-rest/README.md -[typescript]: https://www.typescriptlang.org/docs/home.html diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/package.json b/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/package.json deleted file mode 100644 index 3194ad623d2c..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@azure-samples/ai-content-safety-ts", - "private": true, - "version": "1.0.0", - "description": "ContentSafety client library samples for TypeScript", - "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/contentsafety/ai-content-safety-rest" - }, - "keywords": [ - "node", - "azure", - "cloud", - "typescript", - "browser", - "isomorphic" - ], - "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/contentsafety/ai-content-safety-rest", - "dependencies": { - "@azure-rest/ai-content-safety": "latest", - "dotenv": "latest", - "@azure/core-auth": "^1.3.0" - }, - "devDependencies": { - "@types/node": "^18.0.0", - "typescript": "~5.5.3", - "rimraf": "latest" - } -} diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/sample.env b/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/sample.env deleted file mode 100644 index f024206652c3..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/sample.env +++ /dev/null @@ -1,2 +0,0 @@ -CONTENT_SAFETY_ENDPOINT= -CONTENT_SAFETY_API_KEY= diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/example-data/image.png b/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/example-data/image.png deleted file mode 100644 index 87d3705f2979..000000000000 Binary files a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/example-data/image.png and /dev/null differ diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleAnalyzeImage.ts b/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleAnalyzeImage.ts deleted file mode 100644 index 1354b7d0d33f..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleAnalyzeImage.ts +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to analyze image. - */ - -import ContentSafetyClient, { - isUnexpected, -} from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; -import fs from "fs"; -import path from "path"; - -// Load the .env file if it exists -import * as dotenv from "dotenv"; -dotenv.config(); - -async function main() { - const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; - const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const image_path = path.resolve(__dirname, "./example-data/image.png"); - - const imageBuffer = fs.readFileSync(image_path); - const base64Image = imageBuffer.toString("base64"); - const analyzeImageOption = { image: { content: base64Image } }; - const analyzeImageParameters = { body: analyzeImageOption }; - - const result = await client.path("/image:analyze").post(analyzeImageParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const imageCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log(imageCategoriesAnalysisOutput.category, " severity: ", imageCategoriesAnalysisOutput.severity) - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleAnalyzeText.ts b/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleAnalyzeText.ts deleted file mode 100644 index 6bf2755e714a..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleAnalyzeText.ts +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to analyze text. - */ - -import ContentSafetyClient, { - isUnexpected -} from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -// Load the .env file if it exists -import * as dotenv from "dotenv"; -dotenv.config(); - -async function main() { - const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; - const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - - const credential = new AzureKeyCredential(key); - const client = ContentSafetyClient(endpoint, credential); - - const text = "This is a sample text"; - const analyzeTextOption = { text: text }; - const analyzeTextParameters = { body: analyzeTextOption }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - for (let i = 0; i < result.body.categoriesAnalysis.length; i++) { - const textCategoriesAnalysisOutput = result.body.categoriesAnalysis[i]; - console.log(textCategoriesAnalysisOutput.category, " severity: ", textCategoriesAnalysisOutput.severity) - } -} - -main().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleManageBlocklist.ts b/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleManageBlocklist.ts deleted file mode 100644 index c6ab2377c673..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/src/sampleManageBlocklist.ts +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary Demonstrates how to manage blocklist. - */ - -import ContentSafetyClient, { - CreateOrUpdateTextBlocklistParameters, - isUnexpected -} from "@azure-rest/ai-content-safety"; -import { AzureKeyCredential } from "@azure/core-auth"; - -// Load the .env file if it exists -import * as dotenv from "dotenv"; -dotenv.config(); - -const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"] || ""; -const key = process.env["CONTENT_SAFETY_API_KEY"] || ""; - -const credential = new AzureKeyCredential(key); -const client = ContentSafetyClient(endpoint, credential); - -async function createOrUpdateTextBlocklist() { - const blocklistName = "TestBlocklist"; - const blocklistDescription = "Test blocklist management."; - const createOrUpdateTextBlocklistParameters: CreateOrUpdateTextBlocklistParameters = { - contentType: "application/merge-patch+json", - body: { - description: blocklistDescription, - } - } - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).patch(createOrUpdateTextBlocklistParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist created or updated: Name", result.body.blocklistName, ", Description: ", result.body.description); -} - -async function addBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText1 = "sample"; - const blockItemText2 = "text"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText1 - }, - { - description: "Test block item 2", - text: blockItemText2 - } - ] - } - }; - - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Block items added: "); - if (result.body.blocklistItems) { - for (const blockItem of result.body.blocklistItems) { - console.log("BlockItemId: ", blockItem.blocklistItemId, ", Text: ", blockItem.text, ", Description: ", blockItem.description); - } - } -} - -async function analyzeTextWithBlocklists() { - const blocklistName = "TestBlocklist"; - const inputText = "This is a sample to test text with blocklist."; - const analyzeTextParameters = { - body: { - text: inputText, - blocklistNames: [blocklistName], - haltOnBlocklistHit: false - } - }; - - const result = await client.path("/text:analyze").post(analyzeTextParameters); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Blocklist match results: "); - if (result.body.blocklistsMatch) { - for (const blocklistMatchResult of result.body.blocklistsMatch) { - console.log("BlocklistName: ", blocklistMatchResult.blocklistName, ", BlockItemId: ", blocklistMatchResult.blocklistItemId, ", BlockItemText: ", blocklistMatchResult.blocklistItemText); - } - } -} - -async function listTextBlocklists() { - const result = await client.path("/text/blocklists").get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List blocklists: "); - if (result.body.value) { - for (const blocklist of result.body.value) { - console.log("BlocklistName: ", blocklist.blocklistName, ", Description: ", blocklist.description); - } - } -} - -async function getTextBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Get blocklist: "); - console.log("Name: ", result.body.blocklistName, ", Description: ", result.body.description); -} - -async function listBlockItems() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName).get(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("List block items: "); - if (result.body.value) { - for (const blockItem of result.body.value) { - console.log("BlockItemId: ", blockItem.blocklistItemId, ", Text: ", blockItem.text, ", Description: ", blockItem.description); - } - } -} - -async function getBlockItem() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText - } - ] - } - }; - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const blockItem = await client.path("/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}", blocklistName, blockItemId).get(); - - if (isUnexpected(blockItem)) { - throw blockItem; - } - - console.log("Get blockitem: "); - console.log("BlockItemId: ", blockItem.body.blocklistItemId, ", Text: ", blockItem.body.text, ", Description: ", blockItem.body.description); -} - -async function removeBlockItems() { - const blocklistName = "TestBlocklist"; - const blockItemText = "sample"; - const addOrUpdateBlocklistItemsParameters = { - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText - } - ] - } - }; - const result = await client.path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName).post(addOrUpdateBlocklistItemsParameters); - if (isUnexpected(result) || result.body.blocklistItems === undefined) { - throw new Error("Block item not added."); - } - const blockItemId = result.body.blocklistItems[0].blocklistItemId; - - const removeBlocklistItemsParameters = { - body: { - blocklistItemIds: [blockItemId] - } - }; - const removeBlockItem = await client.path("/text/blocklists/{blocklistName}:removeBlocklistItems", blocklistName).post(removeBlocklistItemsParameters); - - if (isUnexpected(removeBlockItem)) { - throw removeBlockItem; - } - - console.log("Removed blockItem: ", blockItemText); -} - -async function deleteBlocklist() { - const blocklistName = "TestBlocklist"; - - const result = await client.path("/text/blocklists/{blocklistName}", blocklistName).delete(); - - if (isUnexpected(result)) { - throw result; - } - - console.log("Deleted blocklist: ", blocklistName); -} - -(async () => { - await createOrUpdateTextBlocklist(); - await addBlockItems(); - await analyzeTextWithBlocklists(); - await listTextBlocklists(); - await getTextBlocklist(); - await listBlockItems(); - await getBlockItem(); - await removeBlockItems(); - await deleteBlocklist(); -})().catch((err) => { - console.error("The sample encountered an error:", err); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/tsconfig.json b/sdk/contentsafety/ai-content-safety-rest/samples/v1/typescript/tsconfig.json deleted file mode 100644 index 984eed535aa8..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/samples/v1/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/contentsafety/ai-content-safety-rest/src/clientDefinitions.ts b/sdk/contentsafety/ai-content-safety-rest/src/clientDefinitions.ts index e1d5978a3897..ffe355aee5c0 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/clientDefinitions.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/clientDefinitions.ts @@ -1,9 +1,10 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. import { - AnalyzeTextParameters, AnalyzeImageParameters, + AnalyzeTextParameters, + DetectTextProtectedMaterialParameters, GetTextBlocklistParameters, CreateOrUpdateTextBlocklistParameters, DeleteTextBlocklistParameters, @@ -12,12 +13,14 @@ import { RemoveBlocklistItemsParameters, GetTextBlocklistItemParameters, ListTextBlocklistItemsParameters, -} from "./parameters"; +} from "./parameters.js"; import { - AnalyzeText200Response, - AnalyzeTextDefaultResponse, AnalyzeImage200Response, AnalyzeImageDefaultResponse, + AnalyzeText200Response, + AnalyzeTextDefaultResponse, + DetectTextProtectedMaterial200Response, + DetectTextProtectedMaterialDefaultResponse, GetTextBlocklist200Response, GetTextBlocklistDefaultResponse, CreateOrUpdateTextBlocklist200Response, @@ -35,9 +38,16 @@ import { GetTextBlocklistItemDefaultResponse, ListTextBlocklistItems200Response, ListTextBlocklistItemsDefaultResponse, -} from "./responses"; +} from "./responses.js"; import { Client, StreamableMethod } from "@azure-rest/core-client"; +export interface AnalyzeImage { + /** A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. */ + post( + options: AnalyzeImageParameters, + ): StreamableMethod; +} + export interface AnalyzeText { /** A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. */ post( @@ -45,18 +55,23 @@ export interface AnalyzeText { ): StreamableMethod; } -export interface AnalyzeImage { - /** A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. */ +export interface DetectTextProtectedMaterial { + /** A synchronous API for detecting protected material in the given text. */ post( - options: AnalyzeImageParameters, - ): StreamableMethod; + options: DetectTextProtectedMaterialParameters, + ): StreamableMethod< + | DetectTextProtectedMaterial200Response + | DetectTextProtectedMaterialDefaultResponse + >; } export interface GetTextBlocklist { /** Returns text blocklist details. */ get( options?: GetTextBlocklistParameters, - ): StreamableMethod; + ): StreamableMethod< + GetTextBlocklist200Response | GetTextBlocklistDefaultResponse + >; /** Updates a text blocklist. If the blocklistName does not exist, a new blocklist will be created. */ patch( options: CreateOrUpdateTextBlocklistParameters, @@ -68,14 +83,18 @@ export interface GetTextBlocklist { /** Deletes a text blocklist. */ delete( options?: DeleteTextBlocklistParameters, - ): StreamableMethod; + ): StreamableMethod< + DeleteTextBlocklist204Response | DeleteTextBlocklistDefaultResponse + >; } export interface ListTextBlocklists { /** Get all text blocklists details. */ get( options?: ListTextBlocklistsParameters, - ): StreamableMethod; + ): StreamableMethod< + ListTextBlocklists200Response | ListTextBlocklistsDefaultResponse + >; } export interface AddOrUpdateBlocklistItems { @@ -83,7 +102,8 @@ export interface AddOrUpdateBlocklistItems { post( options: AddOrUpdateBlocklistItemsParameters, ): StreamableMethod< - AddOrUpdateBlocklistItems200Response | AddOrUpdateBlocklistItemsDefaultResponse + | AddOrUpdateBlocklistItems200Response + | AddOrUpdateBlocklistItemsDefaultResponse >; } @@ -91,30 +111,41 @@ export interface RemoveBlocklistItems { /** Remove blocklistItems from a text blocklist. You can remove at most 100 BlocklistItems in one request. */ post( options: RemoveBlocklistItemsParameters, - ): StreamableMethod; + ): StreamableMethod< + RemoveBlocklistItems204Response | RemoveBlocklistItemsDefaultResponse + >; } export interface GetTextBlocklistItem { /** Get blocklistItem by blocklistName and blocklistItemId from a text blocklist. */ get( options?: GetTextBlocklistItemParameters, - ): StreamableMethod; + ): StreamableMethod< + GetTextBlocklistItem200Response | GetTextBlocklistItemDefaultResponse + >; } export interface ListTextBlocklistItems { /** Get all blocklistItems in a text blocklist. */ get( options?: ListTextBlocklistItemsParameters, - ): StreamableMethod; + ): StreamableMethod< + ListTextBlocklistItems200Response | ListTextBlocklistItemsDefaultResponse + >; } export interface Routes { - /** Resource for '/text:analyze' has methods for the following verbs: post */ - (path: "/text:analyze"): AnalyzeText; /** Resource for '/image:analyze' has methods for the following verbs: post */ (path: "/image:analyze"): AnalyzeImage; + /** Resource for '/text:analyze' has methods for the following verbs: post */ + (path: "/text:analyze"): AnalyzeText; + /** Resource for '/text:detectProtectedMaterial' has methods for the following verbs: post */ + (path: "/text:detectProtectedMaterial"): DetectTextProtectedMaterial; /** Resource for '/text/blocklists/\{blocklistName\}' has methods for the following verbs: get, patch, delete */ - (path: "/text/blocklists/{blocklistName}", blocklistName: string): GetTextBlocklist; + ( + path: "/text/blocklists/{blocklistName}", + blocklistName: string, + ): GetTextBlocklist; /** Resource for '/text/blocklists' has methods for the following verbs: get */ (path: "/text/blocklists"): ListTextBlocklists; /** Resource for '/text/blocklists/\{blocklistName\}:addOrUpdateBlocklistItems' has methods for the following verbs: post */ diff --git a/sdk/contentsafety/ai-content-safety-rest/src/contentSafetyClient.ts b/sdk/contentsafety/ai-content-safety-rest/src/contentSafetyClient.ts index fd46e945ce08..4538674332ce 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/contentSafetyClient.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/contentSafetyClient.ts @@ -1,26 +1,32 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. import { getClient, ClientOptions } from "@azure-rest/core-client"; -import { logger } from "./logger"; +import { logger } from "./logger.js"; import { TokenCredential, KeyCredential } from "@azure/core-auth"; -import { ContentSafetyClient } from "./clientDefinitions"; +import { ContentSafetyClient } from "./clientDefinitions.js"; + +/** The optional parameters for the client */ +export interface ContentSafetyClientOptions extends ClientOptions { + /** The api version option of the client */ + apiVersion?: string; +} /** * Initialize a new instance of `ContentSafetyClient` - * @param endpoint - Supported Cognitive Services endpoints (protocol and hostname, for example: + * @param endpointParam - Supported Cognitive Services endpoints (protocol and hostname, for example: * https://.cognitiveservices.azure.com). * @param credentials - uniquely identify client credential * @param options - the parameter for all optional parameters */ export default function createClient( - endpoint: string, + endpointParam: string, credentials: TokenCredential | KeyCredential, - options: ClientOptions = {}, + { apiVersion = "2024-09-01", ...options }: ContentSafetyClientOptions = {}, ): ContentSafetyClient { - const baseUrl = options.baseUrl ?? `${endpoint}/contentsafety`; - options.apiVersion = options.apiVersion ?? "2023-10-01"; - const userAgentInfo = `azsdk-js-ai-content-safety-rest/1.0.1`; + const endpointUrl = + options.endpoint ?? options.baseUrl ?? `${endpointParam}/contentsafety`; + const userAgentInfo = `azsdk-js-ai-content-safety-rest/1.0.0`; const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix ? `${options.userAgentOptions.userAgentPrefix} ${userAgentInfo}` @@ -34,12 +40,35 @@ 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 ContentSafetyClient; - const client = getClient(baseUrl, credentials, options) as ContentSafetyClient; + client.pipeline.removePolicy({ name: "ApiVersionPolicy" }); + client.pipeline.addPolicy({ + name: "ClientApiVersionPolicy", + sendRequest: (req, next) => { + // Use the apiVersion defined in request url directly + // Append one if there is no apiVersion and we have one at client options + const url = new URL(req.url); + if (!url.searchParams.get("api-version") && apiVersion) { + req.url = `${req.url}${ + Array.from(url.searchParams.keys()).length > 0 ? "&" : "?" + }api-version=${apiVersion}`; + } + + return next(req); + }, + }); return client; } diff --git a/sdk/contentsafety/ai-content-safety-rest/src/index.ts b/sdk/contentsafety/ai-content-safety-rest/src/index.ts index 566927563535..b0791e7a658a 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/index.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/index.ts @@ -1,15 +1,15 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. -import ContentSafetyClient from "./contentSafetyClient"; +import ContentSafetyClient from "./contentSafetyClient.js"; -export * from "./contentSafetyClient"; -export * from "./parameters"; -export * from "./responses"; -export * from "./clientDefinitions"; -export * from "./isUnexpected"; -export * from "./models"; -export * from "./outputModels"; -export * from "./paginateHelper"; +export * from "./contentSafetyClient.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 default ContentSafetyClient; diff --git a/sdk/contentsafety/ai-content-safety-rest/src/isUnexpected.ts b/sdk/contentsafety/ai-content-safety-rest/src/isUnexpected.ts index 87938cf526c2..a5d6aed9bafc 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/isUnexpected.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/isUnexpected.ts @@ -1,11 +1,13 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. import { - AnalyzeText200Response, - AnalyzeTextDefaultResponse, AnalyzeImage200Response, AnalyzeImageDefaultResponse, + AnalyzeText200Response, + AnalyzeTextDefaultResponse, + DetectTextProtectedMaterial200Response, + DetectTextProtectedMaterialDefaultResponse, GetTextBlocklist200Response, GetTextBlocklistDefaultResponse, CreateOrUpdateTextBlocklist200Response, @@ -23,27 +25,35 @@ import { GetTextBlocklistItemDefaultResponse, ListTextBlocklistItems200Response, ListTextBlocklistItemsDefaultResponse, -} from "./responses"; +} from "./responses.js"; const responseMap: Record = { - "POST /text:analyze": ["200"], "POST /image:analyze": ["200"], + "POST /text:analyze": ["200"], + "POST /text:detectProtectedMaterial": ["200"], "GET /text/blocklists/{blocklistName}": ["200"], "PATCH /text/blocklists/{blocklistName}": ["200", "201"], "DELETE /text/blocklists/{blocklistName}": ["204"], "GET /text/blocklists": ["200"], "POST /text/blocklists/{blocklistName}:addOrUpdateBlocklistItems": ["200"], "POST /text/blocklists/{blocklistName}:removeBlocklistItems": ["204"], - "GET /text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}": ["200"], + "GET /text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}": [ + "200", + ], "GET /text/blocklists/{blocklistName}/blocklistItems": ["200"], }; +export function isUnexpected( + response: AnalyzeImage200Response | AnalyzeImageDefaultResponse, +): response is AnalyzeImageDefaultResponse; export function isUnexpected( response: AnalyzeText200Response | AnalyzeTextDefaultResponse, ): response is AnalyzeTextDefaultResponse; export function isUnexpected( - response: AnalyzeImage200Response | AnalyzeImageDefaultResponse, -): response is AnalyzeImageDefaultResponse; + response: + | DetectTextProtectedMaterial200Response + | DetectTextProtectedMaterialDefaultResponse, +): response is DetectTextProtectedMaterialDefaultResponse; export function isUnexpected( response: GetTextBlocklist200Response | GetTextBlocklistDefaultResponse, ): response is GetTextBlocklistDefaultResponse; @@ -60,23 +70,33 @@ export function isUnexpected( response: ListTextBlocklists200Response | ListTextBlocklistsDefaultResponse, ): response is ListTextBlocklistsDefaultResponse; export function isUnexpected( - response: AddOrUpdateBlocklistItems200Response | AddOrUpdateBlocklistItemsDefaultResponse, + response: + | AddOrUpdateBlocklistItems200Response + | AddOrUpdateBlocklistItemsDefaultResponse, ): response is AddOrUpdateBlocklistItemsDefaultResponse; export function isUnexpected( - response: RemoveBlocklistItems204Response | RemoveBlocklistItemsDefaultResponse, + response: + | RemoveBlocklistItems204Response + | RemoveBlocklistItemsDefaultResponse, ): response is RemoveBlocklistItemsDefaultResponse; export function isUnexpected( - response: GetTextBlocklistItem200Response | GetTextBlocklistItemDefaultResponse, + response: + | GetTextBlocklistItem200Response + | GetTextBlocklistItemDefaultResponse, ): response is GetTextBlocklistItemDefaultResponse; export function isUnexpected( - response: ListTextBlocklistItems200Response | ListTextBlocklistItemsDefaultResponse, + response: + | ListTextBlocklistItems200Response + | ListTextBlocklistItemsDefaultResponse, ): response is ListTextBlocklistItemsDefaultResponse; export function isUnexpected( response: - | AnalyzeText200Response - | AnalyzeTextDefaultResponse | AnalyzeImage200Response | AnalyzeImageDefaultResponse + | AnalyzeText200Response + | AnalyzeTextDefaultResponse + | DetectTextProtectedMaterial200Response + | DetectTextProtectedMaterialDefaultResponse | GetTextBlocklist200Response | GetTextBlocklistDefaultResponse | CreateOrUpdateTextBlocklist200Response @@ -95,8 +115,9 @@ export function isUnexpected( | ListTextBlocklistItems200Response | ListTextBlocklistItemsDefaultResponse, ): response is - | AnalyzeTextDefaultResponse | AnalyzeImageDefaultResponse + | AnalyzeTextDefaultResponse + | DetectTextProtectedMaterialDefaultResponse | GetTextBlocklistDefaultResponse | CreateOrUpdateTextBlocklistDefaultResponse | DeleteTextBlocklistDefaultResponse @@ -137,17 +158,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/contentsafety/ai-content-safety-rest/src/logger.ts b/sdk/contentsafety/ai-content-safety-rest/src/logger.ts index 8236c0444b12..0c35505f71b4 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/logger.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/logger.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. import { createClientLogger } from "@azure/logger"; export const logger = createClientLogger("ai-content-safety"); diff --git a/sdk/contentsafety/ai-content-safety-rest/src/models.ts b/sdk/contentsafety/ai-content-safety-rest/src/models.ts index f3368faf30b4..aab44d1276c8 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/models.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/models.ts @@ -1,36 +1,18 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -/** The text analysis request. */ -export interface AnalyzeTextOptions { - /** The text needs to be analyzed. We support a maximum of 10k Unicode characters (Unicode code points) in the text of one request. */ - text: string; - /** The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned. */ - categories?: string[]; - /** The names of blocklists. */ - blocklistNames?: string[]; - /** When set to true, further analyses of harmful content will not be performed in cases where blocklists are hit. When set to false, all analyses of harmful content will be performed, whether or not blocklists are hit. */ - haltOnBlocklistHit?: boolean; - /** - * This refers to the type of text analysis output. If no value is assigned, the default value will be "FourSeverityLevels". - * - * Possible values: FourSeverityLevels, EightSeverityLevels - */ - outputType?: string; -} +// Licensed under the MIT License. /** The image analysis request. */ export interface AnalyzeImageOptions { - /** The image needs to be analyzed. */ + /** The image to be analyzed. */ image: ImageData; /** The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned. */ - categories?: string[]; + categories?: ImageCategory[]; /** * This refers to the type of image analysis output. If no value is assigned, the default value will be "FourSeverityLevels". * - * Possible values: FourSeverityLevels + * Possible values: "FourSeverityLevels" */ - outputType?: string; + outputType?: AnalyzeImageOutputType; } /** The image can be either base64 encoded bytes or a blob URL. You can choose only one of these options. If both are provided, the request will be refused. The maximum image size is 2048 x 2048 pixels and should not exceed 4 MB, while the minimum image size is 50 x 50 pixels. */ @@ -41,6 +23,30 @@ export interface ImageData { blobUrl?: string; } +/** The text analysis request. */ +export interface AnalyzeTextOptions { + /** The text to be analyzed. We support a maximum of 10k Unicode characters (Unicode code points) in the text of one request. */ + text: string; + /** The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned. */ + categories?: TextCategory[]; + /** The names of blocklists. */ + blocklistNames?: string[]; + /** When set to true, further analyses of harmful content will not be performed in cases where blocklists are hit. When set to false, all analyses of harmful content will be performed, whether or not blocklists are hit. */ + haltOnBlocklistHit?: boolean; + /** + * This refers to the type of text analysis output. If no value is assigned, the default value will be "FourSeverityLevels". + * + * Possible values: "FourSeverityLevels", "EightSeverityLevels" + */ + outputType?: AnalyzeTextOutputType; +} + +/** The request of detecting potential protected material present in the given text. */ +export interface DetectTextProtectedMaterialOptions { + /** The text to be analyzed, which may contain protected material. The characters will be counted in Unicode code points. */ + text: string; +} + /** Text Blocklist. */ export interface TextBlocklist { /** Text blocklist name. */ @@ -59,8 +65,10 @@ export interface AddOrUpdateTextBlocklistItemsOptions { export interface TextBlocklistItem { /** BlocklistItem description. */ description?: string; - /** BlocklistItem content. */ + /** BlocklistItem content. The length is counted using Unicode code point. */ text: string; + /** An optional properties indicating whether this item is to be matched as a regular expression. */ + isRegex?: boolean; } /** The request to remove blocklistItems from a text blocklist. */ @@ -68,3 +76,12 @@ export interface RemoveTextBlocklistItemsOptions { /** Array of blocklistItemIds to remove. */ blocklistItemIds: string[]; } + +/** Alias for ImageCategory */ +export type ImageCategory = string; +/** Alias for AnalyzeImageOutputType */ +export type AnalyzeImageOutputType = string; +/** Alias for TextCategory */ +export type TextCategory = string; +/** Alias for AnalyzeTextOutputType */ +export type AnalyzeTextOutputType = string; diff --git a/sdk/contentsafety/ai-content-safety-rest/src/outputModels.ts b/sdk/contentsafety/ai-content-safety-rest/src/outputModels.ts index ac215a7b18fa..0ad7c23f7bcd 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/outputModels.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/outputModels.ts @@ -1,24 +1,24 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. import { Paged } from "@azure/core-paging"; -/** The text analysis request. */ -export interface AnalyzeTextOptionsOutput { - /** The text needs to be analyzed. We support a maximum of 10k Unicode characters (Unicode code points) in the text of one request. */ - text: string; - /** The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned. */ - categories?: string[]; - /** The names of blocklists. */ - blocklistNames?: string[]; - /** When set to true, further analyses of harmful content will not be performed in cases where blocklists are hit. When set to false, all analyses of harmful content will be performed, whether or not blocklists are hit. */ - haltOnBlocklistHit?: boolean; +/** The image analysis response. */ +export interface AnalyzeImageResultOutput { + /** Analysis result for categories. */ + categoriesAnalysis: Array; +} + +/** Image analysis result. */ +export interface ImageCategoriesAnalysisOutput { /** - * This refers to the type of text analysis output. If no value is assigned, the default value will be "FourSeverityLevels". + * The image analysis category. * - * Possible values: FourSeverityLevels, EightSeverityLevels + * Possible values: "Hate", "SelfHarm", "Sexual", "Violence" */ - outputType?: string; + category: ImageCategoryOutput; + /** The value increases with the severity of the input content. The value of this field is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’, and the output value can be 0, 2, 4, 6. */ + severity?: number; } /** The text analysis response. */ @@ -44,51 +44,23 @@ export interface TextCategoriesAnalysisOutput { /** * The text analysis category. * - * Possible values: Hate, SelfHarm, Sexual, Violence + * Possible values: "Hate", "SelfHarm", "Sexual", "Violence" */ - category: string; + category: TextCategoryOutput; /** The value increases with the severity of the input content. The value of this field is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’ or ‘EightSeverity Levels’, and the output value can be 0, 2, 4, 6 or 0, 1, 2, 3, 4, 5, 6, or 7. */ severity?: number; } -/** The image analysis request. */ -export interface AnalyzeImageOptionsOutput { - /** The image needs to be analyzed. */ - image: ImageDataOutput; - /** The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned. */ - categories?: string[]; - /** - * This refers to the type of image analysis output. If no value is assigned, the default value will be "FourSeverityLevels". - * - * Possible values: FourSeverityLevels - */ - outputType?: string; +/** The combined detection results of potential protected material. */ +export interface DetectTextProtectedMaterialResultOutput { + /** Analysis result for the given text. */ + protectedMaterialAnalysis: TextProtectedMaterialAnalysisResultOutput; } -/** The image can be either base64 encoded bytes or a blob URL. You can choose only one of these options. If both are provided, the request will be refused. The maximum image size is 2048 x 2048 pixels and should not exceed 4 MB, while the minimum image size is 50 x 50 pixels. */ -export interface ImageDataOutput { - /** The Base64 encoding of the image. */ - content?: string; - /** The blob url of the image. */ - blobUrl?: string; -} - -/** The image analysis response. */ -export interface AnalyzeImageResultOutput { - /** Analysis result for categories. */ - categoriesAnalysis: Array; -} - -/** Image analysis result. */ -export interface ImageCategoriesAnalysisOutput { - /** - * The image analysis category. - * - * Possible values: Hate, SelfHarm, Sexual, Violence - */ - category: string; - /** The value increases with the severity of the input content. The value of this field is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’, and the output value can be 0, 2, 4, 6. */ - severity?: number; +/** The individual detection result of potential protected material. */ +export interface TextProtectedMaterialAnalysisResultOutput { + /** Whether potential protected material is detected or not. */ + detected: boolean; } /** Text Blocklist. */ @@ -105,8 +77,10 @@ export interface TextBlocklistItemOutput { readonly blocklistItemId: string; /** BlocklistItem description. */ description?: string; - /** BlocklistItem content. */ + /** BlocklistItem content. The length is counted using Unicode code point. */ text: string; + /** An optional properties indicating whether this item is to be matched as a regular expression. */ + isRegex?: boolean; } /** The response of adding blocklistItems to the text blocklist. */ @@ -115,6 +89,10 @@ export interface AddOrUpdateTextBlocklistItemsResultOutput { blocklistItems: Array; } +/** Alias for ImageCategoryOutput */ +export type ImageCategoryOutput = string; +/** Alias for TextCategoryOutput */ +export type TextCategoryOutput = string; /** Paged collection of TextBlocklist items */ export type PagedTextBlocklistOutput = Paged; /** Paged collection of TextBlocklistItem items */ diff --git a/sdk/contentsafety/ai-content-safety-rest/src/paginateHelper.ts b/sdk/contentsafety/ai-content-safety-rest/src/paginateHelper.ts index f0d91c952cda..94d5220235d9 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/paginateHelper.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/paginateHelper.ts @@ -1,8 +1,16 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. -import { getPagedAsyncIterator, PagedAsyncIterableIterator, PagedResult } from "@azure/core-paging"; -import { Client, createRestError, PathUncheckedResponse } 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 @@ -67,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); @@ -93,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; @@ -121,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/contentsafety/ai-content-safety-rest/src/parameters.ts b/sdk/contentsafety/ai-content-safety-rest/src/parameters.ts index 85a8b04c5d7f..081b973367df 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/parameters.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/parameters.ts @@ -1,14 +1,22 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. import { RequestParameters } from "@azure-rest/core-client"; import { - AnalyzeTextOptions, AnalyzeImageOptions, + AnalyzeTextOptions, + DetectTextProtectedMaterialOptions, TextBlocklist, AddOrUpdateTextBlocklistItemsOptions, RemoveTextBlocklistItemsOptions, -} from "./models"; +} from "./models.js"; + +export interface AnalyzeImageBodyParam { + /** The image analysis request. */ + body: AnalyzeImageOptions; +} + +export type AnalyzeImageParameters = AnalyzeImageBodyParam & RequestParameters; export interface AnalyzeTextBodyParam { /** The text analysis request. */ @@ -17,12 +25,13 @@ export interface AnalyzeTextBodyParam { export type AnalyzeTextParameters = AnalyzeTextBodyParam & RequestParameters; -export interface AnalyzeImageBodyParam { - /** The image analysis request. */ - body: AnalyzeImageOptions; +export interface DetectTextProtectedMaterialBodyParam { + /** The request body to be detected, which may contain protected material. */ + body: DetectTextProtectedMaterialOptions; } -export type AnalyzeImageParameters = AnalyzeImageBodyParam & RequestParameters; +export type DetectTextProtectedMaterialParameters = + DetectTextProtectedMaterialBodyParam & RequestParameters; export type GetTextBlocklistParameters = RequestParameters; /** The resource instance. */ export type TextBlocklistResourceMergeAndPatch = Partial; @@ -37,9 +46,10 @@ export interface CreateOrUpdateTextBlocklistMediaTypesParam { contentType: "application/merge-patch+json"; } -export type CreateOrUpdateTextBlocklistParameters = CreateOrUpdateTextBlocklistMediaTypesParam & - CreateOrUpdateTextBlocklistBodyParam & - RequestParameters; +export type CreateOrUpdateTextBlocklistParameters = + CreateOrUpdateTextBlocklistMediaTypesParam & + CreateOrUpdateTextBlocklistBodyParam & + RequestParameters; export type DeleteTextBlocklistParameters = RequestParameters; export type ListTextBlocklistsParameters = RequestParameters; @@ -48,15 +58,16 @@ export interface AddOrUpdateBlocklistItemsBodyParam { body: AddOrUpdateTextBlocklistItemsOptions; } -export type AddOrUpdateBlocklistItemsParameters = AddOrUpdateBlocklistItemsBodyParam & - RequestParameters; +export type AddOrUpdateBlocklistItemsParameters = + AddOrUpdateBlocklistItemsBodyParam & RequestParameters; export interface RemoveBlocklistItemsBodyParam { /** Options for removing blocklist items. */ body: RemoveTextBlocklistItemsOptions; } -export type RemoveBlocklistItemsParameters = RemoveBlocklistItemsBodyParam & RequestParameters; +export type RemoveBlocklistItemsParameters = RemoveBlocklistItemsBodyParam & + RequestParameters; export type GetTextBlocklistItemParameters = RequestParameters; export interface ListTextBlocklistItemsQueryParamProperties { @@ -72,4 +83,5 @@ export interface ListTextBlocklistItemsQueryParam { queryParameters?: ListTextBlocklistItemsQueryParamProperties; } -export type ListTextBlocklistItemsParameters = ListTextBlocklistItemsQueryParam & RequestParameters; +export type ListTextBlocklistItemsParameters = + ListTextBlocklistItemsQueryParam & RequestParameters; diff --git a/sdk/contentsafety/ai-content-safety-rest/src/responses.ts b/sdk/contentsafety/ai-content-safety-rest/src/responses.ts index fb92d26ddc33..5d0be4af190b 100644 --- a/sdk/contentsafety/ai-content-safety-rest/src/responses.ts +++ b/sdk/contentsafety/ai-content-safety-rest/src/responses.ts @@ -1,17 +1,35 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. import { RawHttpHeaders } from "@azure/core-rest-pipeline"; import { HttpResponse, ErrorResponse } from "@azure-rest/core-client"; import { - AnalyzeTextResultOutput, AnalyzeImageResultOutput, + AnalyzeTextResultOutput, + DetectTextProtectedMaterialResultOutput, TextBlocklistOutput, PagedTextBlocklistOutput, AddOrUpdateTextBlocklistItemsResultOutput, TextBlocklistItemOutput, PagedTextBlocklistItemOutput, -} from "./outputModels"; +} from "./outputModels.js"; + +/** The request has succeeded. */ +export interface AnalyzeImage200Response extends HttpResponse { + status: "200"; + body: AnalyzeImageResultOutput; +} + +export interface AnalyzeImageDefaultHeaders { + /** String error code indicating what went wrong. */ + "x-ms-error-code"?: string; +} + +export interface AnalyzeImageDefaultResponse extends HttpResponse { + status: string; + body: ErrorResponse; + headers: RawHttpHeaders & AnalyzeImageDefaultHeaders; +} /** The request has succeeded. */ export interface AnalyzeText200Response extends HttpResponse { @@ -31,20 +49,21 @@ export interface AnalyzeTextDefaultResponse extends HttpResponse { } /** The request has succeeded. */ -export interface AnalyzeImage200Response extends HttpResponse { +export interface DetectTextProtectedMaterial200Response extends HttpResponse { status: "200"; - body: AnalyzeImageResultOutput; + body: DetectTextProtectedMaterialResultOutput; } -export interface AnalyzeImageDefaultHeaders { +export interface DetectTextProtectedMaterialDefaultHeaders { /** String error code indicating what went wrong. */ "x-ms-error-code"?: string; } -export interface AnalyzeImageDefaultResponse extends HttpResponse { +export interface DetectTextProtectedMaterialDefaultResponse + extends HttpResponse { status: string; body: ErrorResponse; - headers: RawHttpHeaders & AnalyzeImageDefaultHeaders; + headers: RawHttpHeaders & DetectTextProtectedMaterialDefaultHeaders; } /** The request has succeeded. */ @@ -81,7 +100,8 @@ export interface CreateOrUpdateTextBlocklistDefaultHeaders { "x-ms-error-code"?: string; } -export interface CreateOrUpdateTextBlocklistDefaultResponse extends HttpResponse { +export interface CreateOrUpdateTextBlocklistDefaultResponse + extends HttpResponse { status: string; body: ErrorResponse; headers: RawHttpHeaders & CreateOrUpdateTextBlocklistDefaultHeaders; diff --git a/sdk/contentsafety/ai-content-safety-rest/test/public/contentSafety.spec.ts b/sdk/contentsafety/ai-content-safety-rest/test/public/contentSafety.spec.ts deleted file mode 100644 index 1de654c30086..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/test/public/contentSafety.spec.ts +++ /dev/null @@ -1,298 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import { Recorder, isPlaybackMode } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import { createRecorder, createClient } from "./utils/recordedClient"; -import { Context } from "mocha"; -import { ContentSafetyClient, isUnexpected, paginate, TextBlocklistItemOutput } from "../../src"; -import { PagedAsyncIterableIterator, PageSettings } from "@azure/core-paging"; -import fs from "fs"; -import path from "path"; -import { isBrowser } from "@azure/core-util"; - -describe("Content Safety Client Test", () => { - let recorder: Recorder; - let client: ContentSafetyClient; - function sleep(time: number): Promise { - return new Promise((resolve) => setTimeout(resolve, time)); - } - function uint8ArrayToBase64(binary: Uint8Array) { - let binaryString = ""; - binary.forEach((byte) => { - binaryString += String.fromCharCode(byte); - }); - return self.btoa(binaryString); - } - const blocklistName = "TestBlocklist"; - const blockItemText1 = "sample"; - const blockItemText2 = "text"; - const blockItemText3 = "image"; - let blockItemId: string; - - beforeEach(async function (this: Context) { - recorder = await createRecorder(this); - client = await createClient(recorder); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("analyze text", async function () { - const response = await client.path("/text:analyze").post({ - body: { - text: "This is a sample text", - categories: ["Hate"], - outputType: "FourSeverityLevels", - }, - }); - if (isUnexpected(response)) { - throw new Error(response.body?.error.message); - } - assert.strictEqual(response.status, "200"); - assert.equal(response.body.categoriesAnalysis[0]?.category, "Hate"); - assert.notExists(response.body.categoriesAnalysis[1]); - }); - - it("analyze image", async function () { - let base64Image: string; - if (isBrowser) { - const imagePath = "/base/samples-dev/example-data/image.png"; - const response = await fetch(imagePath); - const buffer = await response.arrayBuffer(); - const binary = new Uint8Array(buffer); - base64Image = uint8ArrayToBase64(binary); - } else { - const imagePath = path.join("samples-dev", "example-data", "image.png"); - const buffer = fs.readFileSync(imagePath); - base64Image = buffer.toString("base64"); - } - const response = await client.path("/image:analyze").post({ - body: { - image: { - content: base64Image, - }, - categories: ["Sexual"], - outputType: "FourSeverityLevels", - }, - }); - if (isUnexpected(response)) { - throw new Error(response.body?.error.message); - } - assert.strictEqual(response.status, "200"); - assert.equal(response.body.categoriesAnalysis[0]?.category, "Sexual"); - assert.notExists(response.body.categoriesAnalysis[1]); - }); - - it("create blocklist", async function () { - const createBlockListResponse = await client - .path("/text/blocklists/{blocklistName}", blocklistName) - .patch({ - contentType: "application/merge-patch+json", - body: { - description: "test", - }, - }); - if (isUnexpected(createBlockListResponse)) { - throw new Error(createBlockListResponse.body?.error.message); - } - assert.strictEqual(createBlockListResponse.status, "201"); - assert.equal(createBlockListResponse.body.blocklistName, blocklistName); - }); - - it("add block items", async function () { - const addBlockItemsResponse = await client - .path("/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName) - .post({ - body: { - blocklistItems: [ - { - description: "Test block item 1", - text: blockItemText1, - }, - { - description: "Test block item 2", - text: blockItemText2, - }, - { - description: "Test block item 3", - text: blockItemText3, - }, - ], - }, - }); - if (isUnexpected(addBlockItemsResponse)) { - throw new Error(addBlockItemsResponse.body?.error.message); - } - assert.strictEqual(addBlockItemsResponse.status, "200"); - assert.isArray(addBlockItemsResponse.body.blocklistItems); - - if (!isPlaybackMode()) { - await sleep(30000); - } - }); - - it("analyze text with blocklist", async function () { - const analyzeTextResponse = await client.path("/text:analyze").post({ - body: { - text: "This is a sample to test.", - blocklistNames: [blocklistName], - haltOnBlocklistHit: true, - }, - }); - if (isUnexpected(analyzeTextResponse)) { - throw new Error(analyzeTextResponse.body?.error.message); - } - assert.strictEqual(analyzeTextResponse.status, "200"); - assert.isArray(analyzeTextResponse.body.blocklistsMatch); - }); - - it("list text blocklists", async function () { - const listTextBlocklistsResponse = await client.path("/text/blocklists").get(); - if (isUnexpected(listTextBlocklistsResponse)) { - throw new Error(listTextBlocklistsResponse.body?.error.message); - } - assert.strictEqual(listTextBlocklistsResponse.status, "200"); - assert.isArray(listTextBlocklistsResponse.body.value); - }); - - it("get text blocklist", async function () { - const getTextBlocklistResponse = await client - .path("/text/blocklists/{blocklistName}", blocklistName) - .get(); - if (isUnexpected(getTextBlocklistResponse)) { - throw new Error(getTextBlocklistResponse.body?.error.message); - } - assert.strictEqual(getTextBlocklistResponse.status, "200"); - assert.equal(getTextBlocklistResponse.body.blocklistName, blocklistName); - }); - - it("list block items", async function () { - const listBlockItemsResponse = await client - .path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName) - .get(); - if (isUnexpected(listBlockItemsResponse)) { - throw new Error(listBlockItemsResponse.body?.error.message); - } - assert.strictEqual(listBlockItemsResponse.status, "200"); - assert.isArray(listBlockItemsResponse.body.value); - blockItemId = listBlockItemsResponse.body.value[1].blocklistItemId; - }); - - it("list block items with pagination helper", async function () { - const dataSources = await client - .path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName) - .get(); - if (isUnexpected(dataSources)) { - throw new Error(dataSources.body?.error.message); - } - const iter = paginate(client, dataSources); - const items: TextBlocklistItemOutput[] = []; - for await (const item of < - PagedAsyncIterableIterator - >iter) { - items.push(item); - } - assert.equal(items[1].blocklistItemId, blockItemId); - }); - - it("list block items with pagination 1", async function () { - const listBlockItemsResponse = await client - .path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName) - .get({ - queryParameters: { - top: 10, - skip: 0, - maxpagesize: 1, - }, - }); - if (isUnexpected(listBlockItemsResponse)) { - throw new Error(listBlockItemsResponse.body?.error.message); - } - assert.strictEqual(listBlockItemsResponse.status, "200"); - assert.equal(listBlockItemsResponse.body.value.length, 1); - const nextLink = listBlockItemsResponse.body.nextLink; - const skip = nextLink?.split("skip=")[1].split("&")[0]; - assert.equal(skip, "1"); - }); - - it("list block items with pagination 2", async function () { - const listBlockItemsResponse = await client - .path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName) - .get({ - queryParameters: { - top: 10, - skip: 1, - maxpagesize: 1, - }, - }); - if (isUnexpected(listBlockItemsResponse)) { - throw new Error(listBlockItemsResponse.body?.error.message); - } - assert.strictEqual(listBlockItemsResponse.status, "200"); - assert.equal(listBlockItemsResponse.body.value.length, 1); - assert.equal(listBlockItemsResponse.body.value[0].blocklistItemId, blockItemId); - const nextLink = listBlockItemsResponse.body.nextLink; - const skip = nextLink?.split("skip=")[1].split("&")[0]; - assert.equal(skip, "2"); - }); - - it("list block items with pagination 3", async function () { - const listBlockItemsResponse = await client - .path("/text/blocklists/{blocklistName}/blocklistItems", blocklistName) - .get({ - queryParameters: { - top: 10, - skip: 0, - maxpagesize: 3, - }, - }); - if (isUnexpected(listBlockItemsResponse)) { - throw new Error(listBlockItemsResponse.body?.error.message); - } - assert.strictEqual(listBlockItemsResponse.status, "200"); - assert.equal(listBlockItemsResponse.body.value.length, 3); - assert.equal(listBlockItemsResponse.body.value[1].blocklistItemId, blockItemId); - assert.notExists(listBlockItemsResponse.body.nextLink); - }); - - it("get block item", async function () { - const getBlockItemResponse = await client - .path( - "/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}", - blocklistName, - blockItemId, - ) - .get(); - if (isUnexpected(getBlockItemResponse)) { - throw new Error(getBlockItemResponse.body?.error.message); - } - assert.strictEqual(getBlockItemResponse.status, "200"); - assert.equal(getBlockItemResponse.body.blocklistItemId, blockItemId); - }); - - it("remove block item", async function () { - const removeBlockItemResponse = await client - .path("/text/blocklists/{blocklistName}:removeBlocklistItems", blocklistName) - .post({ - body: { - blocklistItemIds: [blockItemId], - }, - }); - if (isUnexpected(removeBlockItemResponse)) { - throw new Error(removeBlockItemResponse.body?.error.message); - } - assert.strictEqual(removeBlockItemResponse.status, "204"); - }); - - it("delete blocklist", async function () { - const deleteBlockListResponse = await client - .path("/text/blocklists/{blocklistName}", blocklistName) - .delete(); - if (isUnexpected(deleteBlockListResponse)) { - throw new Error(deleteBlockListResponse.body?.error.message); - } - assert.strictEqual(deleteBlockListResponse.status, "204"); - }); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/test/public/contentSafety_AADAuth.spec.ts b/sdk/contentsafety/ai-content-safety-rest/test/public/contentSafety_AADAuth.spec.ts deleted file mode 100644 index 65bed8a45ef6..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/test/public/contentSafety_AADAuth.spec.ts +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import { Recorder } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import { createAADRecorder, createAADClient } from "./utils/recordedAADClient"; -import { Context } from "mocha"; -import { ContentSafetyClient, isUnexpected } from "../../src"; -import fs from "fs"; -import path from "path"; -import { isBrowser } from "@azure/core-util"; - -describe("Content Safety AAD Client Test", () => { - let recorder: Recorder; - let client: ContentSafetyClient; - - function uint8ArrayToBase64(binary: Uint8Array) { - let binaryString = ""; - binary.forEach((byte) => { - binaryString += String.fromCharCode(byte); - }); - return self.btoa(binaryString); - } - - beforeEach(async function (this: Context) { - recorder = await createAADRecorder(this); - client = await createAADClient(recorder); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("analyze text with aad auth", async function () { - const response = await client.path("/text:analyze").post({ - body: { - text: "This is a sample text", - categories: ["Hate"], - outputType: "FourSeverityLevels", - }, - }); - if (isUnexpected(response)) { - throw new Error(response.body?.error.message); - } - assert.strictEqual(response.status, "200"); - assert.equal(response.body.categoriesAnalysis[0]?.category, "Hate"); - assert.notExists(response.body.categoriesAnalysis[1]); - }); - - it("analyze image with aad auth", async function () { - let base64Image: string; - if (isBrowser) { - const imagePath = "/base/samples-dev/example-data/image.png"; - const response = await fetch(imagePath); - const buffer = await response.arrayBuffer(); - const binary = new Uint8Array(buffer); - base64Image = uint8ArrayToBase64(binary); - } else { - const imagePath = path.join("samples-dev", "example-data", "image.png"); - const buffer = fs.readFileSync(imagePath); - base64Image = buffer.toString("base64"); - } - const response = await client.path("/image:analyze").post({ - body: { - image: { - content: base64Image, - }, - categories: ["Sexual"], - outputType: "FourSeverityLevels", - }, - }); - if (isUnexpected(response)) { - throw new Error(response.body?.error.message); - } - assert.strictEqual(response.status, "200"); - assert.equal(response.body.categoriesAnalysis[0]?.category, "Sexual"); - assert.notExists(response.body.categoriesAnalysis[1]); - }); -}); diff --git a/sdk/contentsafety/ai-content-safety-rest/test/public/sampleTest.spec.ts b/sdk/contentsafety/ai-content-safety-rest/test/public/sampleTest.spec.ts new file mode 100644 index 000000000000..d4919ac91ac5 --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-rest/test/public/sampleTest.spec.ts @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { createRecorder } from "./utils/recordedClient.js"; +import { assert, beforeEach, afterEach, it, describe } from "vitest"; + +describe("My test", () => { + // let recorder: Recorder; + + beforeEach(async function () { + // recorder = await createRecorder(this); + }); + + afterEach(async function () { + // await recorder.stop(); + }); + + it("sample test", async function () { + assert.equal(1, 1); + }); +}); diff --git a/sdk/contentsafety/ai-content-safety-rest/test/public/utils/env.browser.ts b/sdk/contentsafety/ai-content-safety-rest/test/public/utils/env.browser.ts deleted file mode 100644 index fd2aca680c7b..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/test/public/utils/env.browser.ts +++ /dev/null @@ -1,2 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. diff --git a/sdk/contentsafety/ai-content-safety-rest/test/public/utils/env.ts b/sdk/contentsafety/ai-content-safety-rest/test/public/utils/env.ts deleted file mode 100644 index 0e06855b73ae..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/test/public/utils/env.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import * as dotenv from "dotenv"; - -dotenv.config(); diff --git a/sdk/contentsafety/ai-content-safety-rest/test/public/utils/recordedAADClient.ts b/sdk/contentsafety/ai-content-safety-rest/test/public/utils/recordedAADClient.ts deleted file mode 100644 index b05e9a4467a9..000000000000 --- a/sdk/contentsafety/ai-content-safety-rest/test/public/utils/recordedAADClient.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import { Context } from "mocha"; -import { - Recorder, - RecorderStartOptions, - assertEnvironmentVariable, -} from "@azure-tools/test-recorder"; -import "./env"; -import ContentSafety, { ContentSafetyClient } from "../../../src"; -import { createTestCredential } from "@azure-tools/test-credential"; -// import { AzureKeyCredential } from "@azure/core-auth"; -// import { ClientOptions } from "@azure-rest/core-client"; - -const envSetupForPlayback: Record = { - CONTENT_SAFETY_ENDPOINT: "https://endpoint/", - AZURE_CLIENT_ID: "azure_client_id", - AZURE_CLIENT_SECRET: "azure_client_secret", - AZURE_TENANT_ID: "88888888-8888-8888-8888-888888888888", - AZURE_SUBSCRIPTION_ID: "azure_subscription_id", -}; - -const recorderEnvSetup: RecorderStartOptions = { - envSetupForPlayback, -}; - -/** - * creates the recorder and reads the environment variables from the `.env` file. - * Should be called first in the test suite to make sure environment variables are - * read before they are being used. - */ -export async function createAADRecorder(context: Context): Promise { - const recorder = new Recorder(context.currentTest); - await recorder.start(recorderEnvSetup); - return recorder; -} - -export function createAADClient(recorder: Recorder): ContentSafetyClient { - const endpoint = assertEnvironmentVariable("CONTENT_SAFETY_ENDPOINT"); - const credential = createTestCredential(); - const client = ContentSafety(endpoint, credential, recorder.configureClientOptions({})); - return client; -} diff --git a/sdk/contentsafety/ai-content-safety-rest/test/public/utils/recordedClient.ts b/sdk/contentsafety/ai-content-safety-rest/test/public/utils/recordedClient.ts index a43c2b63996e..6e425fdcfdf9 100644 --- a/sdk/contentsafety/ai-content-safety-rest/test/public/utils/recordedClient.ts +++ b/sdk/contentsafety/ai-content-safety-rest/test/public/utils/recordedClient.ts @@ -1,24 +1,18 @@ // Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. +// Licensed under the MIT License. -import { Context } from "mocha"; import { Recorder, RecorderStartOptions, - assertEnvironmentVariable, + VitestTestContext, } from "@azure-tools/test-recorder"; -import "./env"; -import ContentSafety, { ContentSafetyClient } from "../../../src"; -import { AzureKeyCredential } from "@azure/core-auth"; -// import { ClientOptions } from "@azure-rest/core-client"; -const envSetupForPlayback: Record = { - CONTENT_SAFETY_ENDPOINT: "https://endpoint/", - CONTENT_SAFETY_API_KEY: "fake_key", +const replaceableVariables: Record = { + SUBSCRIPTION_ID: "azure_subscription_id", }; const recorderEnvSetup: RecorderStartOptions = { - envSetupForPlayback, + envSetupForPlayback: replaceableVariables, }; /** @@ -26,16 +20,10 @@ const recorderEnvSetup: RecorderStartOptions = { * Should be called first in the test suite to make sure environment variables are * read before they are being used. */ -export async function createRecorder(context: Context): Promise { - const recorder = new Recorder(context.currentTest); +export async function createRecorder( + context: VitestTestContext, +): Promise { + const recorder = new Recorder(context); await recorder.start(recorderEnvSetup); return recorder; } - -export function createClient(recorder: Recorder): ContentSafetyClient { - const endpoint = assertEnvironmentVariable("CONTENT_SAFETY_ENDPOINT"); - const key = assertEnvironmentVariable("CONTENT_SAFETY_API_KEY"); - const credential = new AzureKeyCredential(key); - const client = ContentSafety(endpoint, credential, recorder.configureClientOptions({})); - return client; -} diff --git a/sdk/contentsafety/ai-content-safety-rest/tsconfig.browser.config.json b/sdk/contentsafety/ai-content-safety-rest/tsconfig.browser.config.json new file mode 100644 index 000000000000..1b37aebc5457 --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-rest/tsconfig.browser.config.json @@ -0,0 +1,10 @@ +{ + "extends": "./.tshy/build.json", + "include": ["./src/**/*.ts", "./src/**/*.mts", "./test/**/*.spec.ts"], + "exclude": ["./test/**/node/**/*.ts"], + "compilerOptions": { + "outDir": "./dist-test/browser", + "rootDir": ".", + "skipLibCheck": true + } +} diff --git a/sdk/contentsafety/ai-content-safety-rest/tsconfig.json b/sdk/contentsafety/ai-content-safety-rest/tsconfig.json index 63e57f77f784..a6575847a41e 100644 --- a/sdk/contentsafety/ai-content-safety-rest/tsconfig.json +++ b/sdk/contentsafety/ai-content-safety-rest/tsconfig.json @@ -1,12 +1,16 @@ { "extends": "../../../tsconfig", "compilerOptions": { - "outDir": "./dist-esm", - "declarationDir": "./types", - "lib": ["es6", "dom"], - "paths": { - "@azure-rest/ai-content-safety": ["./src/index"] - } + "module": "NodeNext", + "moduleResolution": "NodeNext", + "rootDir": ".", + "skipLibCheck": true }, - "include": ["src/**/*.ts", "./test/**/*.ts", "samples-dev/**/*.ts"] -} + "include": [ + "./src/**/*.ts", + "./src/**/*.mts", + "./src/**/*.cts", + "test/**/*.ts", + "./test/**/*.ts" + ] +} \ No newline at end of file diff --git a/sdk/contentsafety/ai-content-safety-rest/tsp-location.yaml b/sdk/contentsafety/ai-content-safety-rest/tsp-location.yaml index 9d47983f6b57..7974f820dc71 100644 --- a/sdk/contentsafety/ai-content-safety-rest/tsp-location.yaml +++ b/sdk/contentsafety/ai-content-safety-rest/tsp-location.yaml @@ -1,3 +1,4 @@ directory: specification/cognitiveservices/ContentSafety -repo: Azure/azure-rest-api-specs -commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 +commit: 9458b84485608b75bb0aa3057a951e41102c6f40 +repo: /mnt/vss/_work/1/s/azure-rest-api-specs +additionalDirectories: diff --git a/sdk/contentsafety/ai-content-safety-rest/vitest.browser.config.ts b/sdk/contentsafety/ai-content-safety-rest/vitest.browser.config.ts new file mode 100644 index 000000000000..5e0dc418cfa2 --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-rest/vitest.browser.config.ts @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { defineConfig } from "vitest/config"; +import { relativeRecordingsPath } from "@azure-tools/test-recorder"; + +process.env.RECORDINGS_RELATIVE_PATH = relativeRecordingsPath(); + +export default defineConfig({ + define: { + "process.env": process.env, + }, + test: { + reporters: ["basic", "junit"], + outputFile: { + junit: "test-results.browser.xml", + }, + browser: { + enabled: true, + headless: true, + name: "chromium", + provider: "playwright", + }, + fakeTimers: { + toFake: ["setTimeout", "Date"], + }, + watch: false, + include: ["dist-test/browser/**/*.spec.js"], + coverage: { + include: ["dist-test/browser/**/*.spec.js"], + provider: "istanbul", + reporter: ["text", "json", "html"], + reportsDirectory: "coverage-browser", + }, + testTimeout: 1200000, + }, +}); diff --git a/sdk/contentsafety/ai-content-safety-rest/vitest.config.ts b/sdk/contentsafety/ai-content-safety-rest/vitest.config.ts new file mode 100644 index 000000000000..f8ab2a758bf9 --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-rest/vitest.config.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { defineConfig } from "vitest/config"; +import { relativeRecordingsPath } from "@azure-tools/test-recorder"; + +export default defineConfig({ + test: { + reporters: ["basic", "junit"], + outputFile: { + junit: "test-results.browser.xml", + }, + fakeTimers: { + toFake: ["setTimeout", "Date"], + }, + watch: false, + include: ["test/**/*.spec.ts"], + exclude: ["test/**/browser/*.spec.ts"], + coverage: { + include: ["src/**/*.ts"], + exclude: [ + "src/**/*-browser.mts", + "src/**/*-react-native.mts", + "vitest*.config.ts", + "samples-dev/**/*.ts", + ], + provider: "istanbul", + reporter: ["text", "json", "html"], + reportsDirectory: "coverage", + }, + testTimeout: 1200000, + }, +}); diff --git a/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/baseline/review/index.ts b/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/baseline/review/index.ts new file mode 100644 index 000000000000..e7f27f1cd552 --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/baseline/review/index.ts @@ -0,0 +1,563 @@ + +import { Client } from '@azure-rest/core-client'; +import { ClientOptions } from '@azure-rest/core-client'; +import { ErrorResponse } from '@azure-rest/core-client'; +import { HttpResponse } from '@azure-rest/core-client'; +import { KeyCredential } from '@azure/core-auth'; +import { Paged } from '@azure/core-paging'; +import { PagedAsyncIterableIterator } from '@azure/core-paging'; +import { PathUncheckedResponse } from '@azure-rest/core-client'; +import { RawHttpHeaders } from '@azure/core-rest-pipeline'; +import { RequestParameters } from '@azure-rest/core-client'; +import { StreamableMethod } from '@azure-rest/core-client'; +import { TokenCredential } from '@azure/core-auth'; + +// @public (undocumented) +export interface AddOrUpdateBlocklistItems { + post(options: AddOrUpdateBlocklistItemsParameters): StreamableMethod; +} + +// @public +export interface AddOrUpdateBlocklistItems200Response extends HttpResponse { + // (undocumented) + body: AddOrUpdateTextBlocklistItemsResultOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface AddOrUpdateBlocklistItemsBodyParam { + body: AddOrUpdateTextBlocklistItemsOptions; +} + +// @public (undocumented) +export interface AddOrUpdateBlocklistItemsDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface AddOrUpdateBlocklistItemsDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & AddOrUpdateBlocklistItemsDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type AddOrUpdateBlocklistItemsParameters = AddOrUpdateBlocklistItemsBodyParam & RequestParameters; + +// @public +export interface AddOrUpdateTextBlocklistItemsOptions { + blocklistItems: Array; +} + +// @public +export interface AddOrUpdateTextBlocklistItemsResultOutput { + blocklistItems: Array; +} + +// @public (undocumented) +export interface AnalyzeImage { + post(options: AnalyzeImageParameters): StreamableMethod; +} + +// @public +export interface AnalyzeImage200Response extends HttpResponse { + // (undocumented) + body: AnalyzeImageResultOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface AnalyzeImageBodyParam { + body: AnalyzeImageOptions; +} + +// @public (undocumented) +export interface AnalyzeImageDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface AnalyzeImageDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & AnalyzeImageDefaultHeaders; + // (undocumented) + status: string; +} + +// @public +export interface AnalyzeImageOptions { + categories?: string[]; + image: ImageData_2; + outputType?: string; +} + +// @public +export interface AnalyzeImageOptionsOutput { + categories?: string[]; + image: ImageDataOutput; + outputType?: string; +} + +// @public (undocumented) +export type AnalyzeImageParameters = AnalyzeImageBodyParam & RequestParameters; + +// @public +export interface AnalyzeImageResultOutput { + categoriesAnalysis: Array; +} + +// @public (undocumented) +export interface AnalyzeText { + post(options: AnalyzeTextParameters): StreamableMethod; +} + +// @public +export interface AnalyzeText200Response extends HttpResponse { + // (undocumented) + body: AnalyzeTextResultOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface AnalyzeTextBodyParam { + body: AnalyzeTextOptions; +} + +// @public (undocumented) +export interface AnalyzeTextDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface AnalyzeTextDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & AnalyzeTextDefaultHeaders; + // (undocumented) + status: string; +} + +// @public +export interface AnalyzeTextOptions { + blocklistNames?: string[]; + categories?: string[]; + haltOnBlocklistHit?: boolean; + outputType?: string; + text: string; +} + +// @public +export interface AnalyzeTextOptionsOutput { + blocklistNames?: string[]; + categories?: string[]; + haltOnBlocklistHit?: boolean; + outputType?: string; + text: string; +} + +// @public (undocumented) +export type AnalyzeTextParameters = AnalyzeTextBodyParam & RequestParameters; + +// @public +export interface AnalyzeTextResultOutput { + blocklistsMatch?: Array; + categoriesAnalysis: Array; +} + +// @public (undocumented) +export type ContentSafetyClient = Client & { + path: Routes; +}; + +// @public +function createClient(endpoint: string, credentials: TokenCredential | KeyCredential, options?: ClientOptions): ContentSafetyClient; +export default createClient; + +// @public +export interface CreateOrUpdateTextBlocklist200Response extends HttpResponse { + // (undocumented) + body: TextBlocklistOutput; + // (undocumented) + status: "200"; +} + +// @public +export interface CreateOrUpdateTextBlocklist201Response extends HttpResponse { + // (undocumented) + body: TextBlocklistOutput; + // (undocumented) + status: "201"; +} + +// @public (undocumented) +export interface CreateOrUpdateTextBlocklistBodyParam { + body: TextBlocklistResourceMergeAndPatch; +} + +// @public (undocumented) +export interface CreateOrUpdateTextBlocklistDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface CreateOrUpdateTextBlocklistDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & CreateOrUpdateTextBlocklistDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export interface CreateOrUpdateTextBlocklistMediaTypesParam { + contentType: "application/merge-patch+json"; +} + +// @public (undocumented) +export type CreateOrUpdateTextBlocklistParameters = CreateOrUpdateTextBlocklistMediaTypesParam & CreateOrUpdateTextBlocklistBodyParam & RequestParameters; + +// @public +export interface DeleteTextBlocklist204Response extends HttpResponse { + // (undocumented) + status: "204"; +} + +// @public (undocumented) +export interface DeleteTextBlocklistDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface DeleteTextBlocklistDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & DeleteTextBlocklistDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type DeleteTextBlocklistParameters = RequestParameters; + +// @public +export type GetArrayType = T extends Array ? TData : never; + +// @public +export type GetPage = (pageLink: string, maxPageSize?: number) => Promise<{ + page: TPage; + nextPageLink?: string; +}>; + +// @public (undocumented) +export interface GetTextBlocklist { + delete(options?: DeleteTextBlocklistParameters): StreamableMethod; + get(options?: GetTextBlocklistParameters): StreamableMethod; + patch(options: CreateOrUpdateTextBlocklistParameters): StreamableMethod; +} + +// @public +export interface GetTextBlocklist200Response extends HttpResponse { + // (undocumented) + body: TextBlocklistOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface GetTextBlocklistDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface GetTextBlocklistDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & GetTextBlocklistDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export interface GetTextBlocklistItem { + get(options?: GetTextBlocklistItemParameters): StreamableMethod; +} + +// @public +export interface GetTextBlocklistItem200Response extends HttpResponse { + // (undocumented) + body: TextBlocklistItemOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface GetTextBlocklistItemDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface GetTextBlocklistItemDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & GetTextBlocklistItemDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type GetTextBlocklistItemParameters = RequestParameters; + +// @public (undocumented) +export type GetTextBlocklistParameters = RequestParameters; + +// @public +export interface ImageCategoriesAnalysisOutput { + category: string; + severity?: number; +} + +// @public +interface ImageData_2 { + blobUrl?: string; + content?: string; +} +export { ImageData_2 as ImageData } + +// @public +export interface ImageDataOutput { + blobUrl?: string; + content?: string; +} + +// @public (undocumented) +export function isUnexpected(response: AnalyzeText200Response | AnalyzeTextDefaultResponse): response is AnalyzeTextDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: AnalyzeImage200Response | AnalyzeImageDefaultResponse): response is AnalyzeImageDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: GetTextBlocklist200Response | GetTextBlocklistDefaultResponse): response is GetTextBlocklistDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: CreateOrUpdateTextBlocklist200Response | CreateOrUpdateTextBlocklist201Response | CreateOrUpdateTextBlocklistDefaultResponse): response is CreateOrUpdateTextBlocklistDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: DeleteTextBlocklist204Response | DeleteTextBlocklistDefaultResponse): response is DeleteTextBlocklistDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: ListTextBlocklists200Response | ListTextBlocklistsDefaultResponse): response is ListTextBlocklistsDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: AddOrUpdateBlocklistItems200Response | AddOrUpdateBlocklistItemsDefaultResponse): response is AddOrUpdateBlocklistItemsDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: RemoveBlocklistItems204Response | RemoveBlocklistItemsDefaultResponse): response is RemoveBlocklistItemsDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: GetTextBlocklistItem200Response | GetTextBlocklistItemDefaultResponse): response is GetTextBlocklistItemDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: ListTextBlocklistItems200Response | ListTextBlocklistItemsDefaultResponse): response is ListTextBlocklistItemsDefaultResponse; + +// @public (undocumented) +export interface ListTextBlocklistItems { + get(options?: ListTextBlocklistItemsParameters): StreamableMethod; +} + +// @public +export interface ListTextBlocklistItems200Response extends HttpResponse { + // (undocumented) + body: PagedTextBlocklistItemOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface ListTextBlocklistItemsDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface ListTextBlocklistItemsDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & ListTextBlocklistItemsDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type ListTextBlocklistItemsParameters = ListTextBlocklistItemsQueryParam & RequestParameters; + +// @public (undocumented) +export interface ListTextBlocklistItemsQueryParam { + // (undocumented) + queryParameters?: ListTextBlocklistItemsQueryParamProperties; +} + +// @public (undocumented) +export interface ListTextBlocklistItemsQueryParamProperties { + maxpagesize?: number; + skip?: number; + top?: number; +} + +// @public (undocumented) +export interface ListTextBlocklists { + get(options?: ListTextBlocklistsParameters): StreamableMethod; +} + +// @public +export interface ListTextBlocklists200Response extends HttpResponse { + // (undocumented) + body: PagedTextBlocklistOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface ListTextBlocklistsDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface ListTextBlocklistsDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & ListTextBlocklistsDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type ListTextBlocklistsParameters = RequestParameters; + +// @public +export type PagedTextBlocklistItemOutput = Paged; + +// @public +export type PagedTextBlocklistOutput = Paged; + +// @public +export function paginate(client: Client, initialResponse: TResponse, options?: PagingOptions): PagedAsyncIterableIterator>; + +// @public +export type PaginateReturn = TResult extends { + body: { + value?: infer TPage; + }; +} ? GetArrayType : Array; + +// @public +export interface PagingOptions { + customGetPage?: GetPage[]>; +} + +// @public (undocumented) +export interface RemoveBlocklistItems { + post(options: RemoveBlocklistItemsParameters): StreamableMethod; +} + +// @public +export interface RemoveBlocklistItems204Response extends HttpResponse { + // (undocumented) + status: "204"; +} + +// @public (undocumented) +export interface RemoveBlocklistItemsBodyParam { + body: RemoveTextBlocklistItemsOptions; +} + +// @public (undocumented) +export interface RemoveBlocklistItemsDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface RemoveBlocklistItemsDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & RemoveBlocklistItemsDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type RemoveBlocklistItemsParameters = RemoveBlocklistItemsBodyParam & RequestParameters; + +// @public +export interface RemoveTextBlocklistItemsOptions { + blocklistItemIds: string[]; +} + +// @public (undocumented) +export interface Routes { + (path: "/text:analyze"): AnalyzeText; + (path: "/image:analyze"): AnalyzeImage; + (path: "/text/blocklists/{blocklistName}", blocklistName: string): GetTextBlocklist; + (path: "/text/blocklists"): ListTextBlocklists; + (path: "/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName: string): AddOrUpdateBlocklistItems; + (path: "/text/blocklists/{blocklistName}:removeBlocklistItems", blocklistName: string): RemoveBlocklistItems; + (path: "/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}", blocklistName: string, blocklistItemId: string): GetTextBlocklistItem; + (path: "/text/blocklists/{blocklistName}/blocklistItems", blocklistName: string): ListTextBlocklistItems; +} + +// @public +export interface TextBlocklist { + blocklistName: string; + description?: string; +} + +// @public +export interface TextBlocklistItem { + description?: string; + text: string; +} + +// @public +export interface TextBlocklistItemOutput { + readonly blocklistItemId: string; + description?: string; + text: string; +} + +// @public +export interface TextBlocklistMatchOutput { + blocklistItemId: string; + blocklistItemText: string; + blocklistName: string; +} + +// @public +export interface TextBlocklistOutput { + blocklistName: string; + description?: string; +} + +// @public +export type TextBlocklistResourceMergeAndPatch = Partial; + +// @public +export interface TextCategoriesAnalysisOutput { + category: string; + severity?: number; +} + +// (No @packageDocumentation comment for this package) diff --git a/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/current/review/index.ts b/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/current/review/index.ts new file mode 100644 index 000000000000..7b36150bec13 --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/current/review/index.ts @@ -0,0 +1,620 @@ + +import { Client } from '@azure-rest/core-client'; +import { ClientOptions } from '@azure-rest/core-client'; +import { ErrorResponse } from '@azure-rest/core-client'; +import { HttpResponse } from '@azure-rest/core-client'; +import { KeyCredential } from '@azure/core-auth'; +import { Paged } from '@azure/core-paging'; +import { PagedAsyncIterableIterator } from '@azure/core-paging'; +import { PathUncheckedResponse } from '@azure-rest/core-client'; +import { RawHttpHeaders } from '@azure/core-rest-pipeline'; +import { RequestParameters } from '@azure-rest/core-client'; +import { StreamableMethod } from '@azure-rest/core-client'; +import { TokenCredential } from '@azure/core-auth'; + +// @public (undocumented) +export interface AddOrUpdateBlocklistItems { + post(options: AddOrUpdateBlocklistItemsParameters): StreamableMethod; +} + +// @public +export interface AddOrUpdateBlocklistItems200Response extends HttpResponse { + // (undocumented) + body: AddOrUpdateTextBlocklistItemsResultOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface AddOrUpdateBlocklistItemsBodyParam { + body: AddOrUpdateTextBlocklistItemsOptions; +} + +// @public (undocumented) +export interface AddOrUpdateBlocklistItemsDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface AddOrUpdateBlocklistItemsDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & AddOrUpdateBlocklistItemsDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type AddOrUpdateBlocklistItemsParameters = AddOrUpdateBlocklistItemsBodyParam & RequestParameters; + +// @public +export interface AddOrUpdateTextBlocklistItemsOptions { + blocklistItems: Array; +} + +// @public +export interface AddOrUpdateTextBlocklistItemsResultOutput { + blocklistItems: Array; +} + +// @public (undocumented) +export interface AnalyzeImage { + post(options: AnalyzeImageParameters): StreamableMethod; +} + +// @public +export interface AnalyzeImage200Response extends HttpResponse { + // (undocumented) + body: AnalyzeImageResultOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface AnalyzeImageBodyParam { + body: AnalyzeImageOptions; +} + +// @public (undocumented) +export interface AnalyzeImageDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface AnalyzeImageDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & AnalyzeImageDefaultHeaders; + // (undocumented) + status: string; +} + +// @public +export interface AnalyzeImageOptions { + categories?: ImageCategory[]; + image: ImageData; + outputType?: AnalyzeImageOutputType; +} + +// @public +export type AnalyzeImageOutputType = string; + +// @public (undocumented) +export type AnalyzeImageParameters = AnalyzeImageBodyParam & RequestParameters; + +// @public +export interface AnalyzeImageResultOutput { + categoriesAnalysis: Array; +} + +// @public (undocumented) +export interface AnalyzeText { + post(options: AnalyzeTextParameters): StreamableMethod; +} + +// @public +export interface AnalyzeText200Response extends HttpResponse { + // (undocumented) + body: AnalyzeTextResultOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface AnalyzeTextBodyParam { + body: AnalyzeTextOptions; +} + +// @public (undocumented) +export interface AnalyzeTextDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface AnalyzeTextDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & AnalyzeTextDefaultHeaders; + // (undocumented) + status: string; +} + +// @public +export interface AnalyzeTextOptions { + blocklistNames?: string[]; + categories?: TextCategory[]; + haltOnBlocklistHit?: boolean; + outputType?: AnalyzeTextOutputType; + text: string; +} + +// @public +export type AnalyzeTextOutputType = string; + +// @public (undocumented) +export type AnalyzeTextParameters = AnalyzeTextBodyParam & RequestParameters; + +// @public +export interface AnalyzeTextResultOutput { + blocklistsMatch?: Array; + categoriesAnalysis: Array; +} + +// @public (undocumented) +export type ContentSafetyClient = Client & { + path: Routes; +}; + +// @public +export interface ContentSafetyClientOptions extends ClientOptions { + apiVersion?: string; +} + +// @public +function createClient(endpointParam: string, credentials: TokenCredential | KeyCredential, { apiVersion, ...options }?: ContentSafetyClientOptions): ContentSafetyClient; +export default createClient; + +// @public +export interface CreateOrUpdateTextBlocklist200Response extends HttpResponse { + // (undocumented) + body: TextBlocklistOutput; + // (undocumented) + status: "200"; +} + +// @public +export interface CreateOrUpdateTextBlocklist201Response extends HttpResponse { + // (undocumented) + body: TextBlocklistOutput; + // (undocumented) + status: "201"; +} + +// @public (undocumented) +export interface CreateOrUpdateTextBlocklistBodyParam { + body: TextBlocklistResourceMergeAndPatch; +} + +// @public (undocumented) +export interface CreateOrUpdateTextBlocklistDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface CreateOrUpdateTextBlocklistDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & CreateOrUpdateTextBlocklistDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export interface CreateOrUpdateTextBlocklistMediaTypesParam { + contentType: "application/merge-patch+json"; +} + +// @public (undocumented) +export type CreateOrUpdateTextBlocklistParameters = CreateOrUpdateTextBlocklistMediaTypesParam & CreateOrUpdateTextBlocklistBodyParam & RequestParameters; + +// @public +export interface DeleteTextBlocklist204Response extends HttpResponse { + // (undocumented) + status: "204"; +} + +// @public (undocumented) +export interface DeleteTextBlocklistDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface DeleteTextBlocklistDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & DeleteTextBlocklistDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type DeleteTextBlocklistParameters = RequestParameters; + +// @public (undocumented) +export interface DetectTextProtectedMaterial { + post(options: DetectTextProtectedMaterialParameters): StreamableMethod; +} + +// @public +export interface DetectTextProtectedMaterial200Response extends HttpResponse { + // (undocumented) + body: DetectTextProtectedMaterialResultOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface DetectTextProtectedMaterialBodyParam { + body: DetectTextProtectedMaterialOptions; +} + +// @public (undocumented) +export interface DetectTextProtectedMaterialDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface DetectTextProtectedMaterialDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & DetectTextProtectedMaterialDefaultHeaders; + // (undocumented) + status: string; +} + +// @public +export interface DetectTextProtectedMaterialOptions { + text: string; +} + +// @public (undocumented) +export type DetectTextProtectedMaterialParameters = DetectTextProtectedMaterialBodyParam & RequestParameters; + +// @public +export interface DetectTextProtectedMaterialResultOutput { + protectedMaterialAnalysis: TextProtectedMaterialAnalysisResultOutput; +} + +// @public +export type GetArrayType = T extends Array ? TData : never; + +// @public +export type GetPage = (pageLink: string, maxPageSize?: number) => Promise<{ + page: TPage; + nextPageLink?: string; +}>; + +// @public (undocumented) +export interface GetTextBlocklist { + delete(options?: DeleteTextBlocklistParameters): StreamableMethod; + get(options?: GetTextBlocklistParameters): StreamableMethod; + patch(options: CreateOrUpdateTextBlocklistParameters): StreamableMethod; +} + +// @public +export interface GetTextBlocklist200Response extends HttpResponse { + // (undocumented) + body: TextBlocklistOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface GetTextBlocklistDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface GetTextBlocklistDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & GetTextBlocklistDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export interface GetTextBlocklistItem { + get(options?: GetTextBlocklistItemParameters): StreamableMethod; +} + +// @public +export interface GetTextBlocklistItem200Response extends HttpResponse { + // (undocumented) + body: TextBlocklistItemOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface GetTextBlocklistItemDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface GetTextBlocklistItemDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & GetTextBlocklistItemDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type GetTextBlocklistItemParameters = RequestParameters; + +// @public (undocumented) +export type GetTextBlocklistParameters = RequestParameters; + +// @public +export interface ImageCategoriesAnalysisOutput { + category: ImageCategoryOutput; + severity?: number; +} + +// @public +export type ImageCategory = string; + +// @public +export type ImageCategoryOutput = string; + +// @public +export interface ImageData { + blobUrl?: string; + content?: string; +} + +// @public (undocumented) +export function isUnexpected(response: AnalyzeImage200Response | AnalyzeImageDefaultResponse): response is AnalyzeImageDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: AnalyzeText200Response | AnalyzeTextDefaultResponse): response is AnalyzeTextDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: DetectTextProtectedMaterial200Response | DetectTextProtectedMaterialDefaultResponse): response is DetectTextProtectedMaterialDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: GetTextBlocklist200Response | GetTextBlocklistDefaultResponse): response is GetTextBlocklistDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: CreateOrUpdateTextBlocklist200Response | CreateOrUpdateTextBlocklist201Response | CreateOrUpdateTextBlocklistDefaultResponse): response is CreateOrUpdateTextBlocklistDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: DeleteTextBlocklist204Response | DeleteTextBlocklistDefaultResponse): response is DeleteTextBlocklistDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: ListTextBlocklists200Response | ListTextBlocklistsDefaultResponse): response is ListTextBlocklistsDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: AddOrUpdateBlocklistItems200Response | AddOrUpdateBlocklistItemsDefaultResponse): response is AddOrUpdateBlocklistItemsDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: RemoveBlocklistItems204Response | RemoveBlocklistItemsDefaultResponse): response is RemoveBlocklistItemsDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: GetTextBlocklistItem200Response | GetTextBlocklistItemDefaultResponse): response is GetTextBlocklistItemDefaultResponse; + +// @public (undocumented) +export function isUnexpected(response: ListTextBlocklistItems200Response | ListTextBlocklistItemsDefaultResponse): response is ListTextBlocklistItemsDefaultResponse; + +// @public (undocumented) +export interface ListTextBlocklistItems { + get(options?: ListTextBlocklistItemsParameters): StreamableMethod; +} + +// @public +export interface ListTextBlocklistItems200Response extends HttpResponse { + // (undocumented) + body: PagedTextBlocklistItemOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface ListTextBlocklistItemsDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface ListTextBlocklistItemsDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & ListTextBlocklistItemsDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type ListTextBlocklistItemsParameters = ListTextBlocklistItemsQueryParam & RequestParameters; + +// @public (undocumented) +export interface ListTextBlocklistItemsQueryParam { + // (undocumented) + queryParameters?: ListTextBlocklistItemsQueryParamProperties; +} + +// @public (undocumented) +export interface ListTextBlocklistItemsQueryParamProperties { + maxpagesize?: number; + skip?: number; + top?: number; +} + +// @public (undocumented) +export interface ListTextBlocklists { + get(options?: ListTextBlocklistsParameters): StreamableMethod; +} + +// @public +export interface ListTextBlocklists200Response extends HttpResponse { + // (undocumented) + body: PagedTextBlocklistOutput; + // (undocumented) + status: "200"; +} + +// @public (undocumented) +export interface ListTextBlocklistsDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface ListTextBlocklistsDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & ListTextBlocklistsDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type ListTextBlocklistsParameters = RequestParameters; + +// @public +export type PagedTextBlocklistItemOutput = Paged; + +// @public +export type PagedTextBlocklistOutput = Paged; + +// @public +export function paginate(client: Client, initialResponse: TResponse, options?: PagingOptions): PagedAsyncIterableIterator>; + +// @public +export type PaginateReturn = TResult extends { + body: { + value?: infer TPage; + }; +} ? GetArrayType : Array; + +// @public +export interface PagingOptions { + customGetPage?: GetPage[]>; +} + +// @public (undocumented) +export interface RemoveBlocklistItems { + post(options: RemoveBlocklistItemsParameters): StreamableMethod; +} + +// @public +export interface RemoveBlocklistItems204Response extends HttpResponse { + // (undocumented) + status: "204"; +} + +// @public (undocumented) +export interface RemoveBlocklistItemsBodyParam { + body: RemoveTextBlocklistItemsOptions; +} + +// @public (undocumented) +export interface RemoveBlocklistItemsDefaultHeaders { + "x-ms-error-code"?: string; +} + +// @public (undocumented) +export interface RemoveBlocklistItemsDefaultResponse extends HttpResponse { + // (undocumented) + body: ErrorResponse; + // (undocumented) + headers: RawHttpHeaders & RemoveBlocklistItemsDefaultHeaders; + // (undocumented) + status: string; +} + +// @public (undocumented) +export type RemoveBlocklistItemsParameters = RemoveBlocklistItemsBodyParam & RequestParameters; + +// @public +export interface RemoveTextBlocklistItemsOptions { + blocklistItemIds: string[]; +} + +// @public (undocumented) +export interface Routes { + (path: "/image:analyze"): AnalyzeImage; + (path: "/text:analyze"): AnalyzeText; + (path: "/text:detectProtectedMaterial"): DetectTextProtectedMaterial; + (path: "/text/blocklists/{blocklistName}", blocklistName: string): GetTextBlocklist; + (path: "/text/blocklists"): ListTextBlocklists; + (path: "/text/blocklists/{blocklistName}:addOrUpdateBlocklistItems", blocklistName: string): AddOrUpdateBlocklistItems; + (path: "/text/blocklists/{blocklistName}:removeBlocklistItems", blocklistName: string): RemoveBlocklistItems; + (path: "/text/blocklists/{blocklistName}/blocklistItems/{blocklistItemId}", blocklistName: string, blocklistItemId: string): GetTextBlocklistItem; + (path: "/text/blocklists/{blocklistName}/blocklistItems", blocklistName: string): ListTextBlocklistItems; +} + +// @public +export interface TextBlocklist { + blocklistName: string; + description?: string; +} + +// @public +export interface TextBlocklistItem { + description?: string; + isRegex?: boolean; + text: string; +} + +// @public +export interface TextBlocklistItemOutput { + readonly blocklistItemId: string; + description?: string; + isRegex?: boolean; + text: string; +} + +// @public +export interface TextBlocklistMatchOutput { + blocklistItemId: string; + blocklistItemText: string; + blocklistName: string; +} + +// @public +export interface TextBlocklistOutput { + blocklistName: string; + description?: string; +} + +// @public +export type TextBlocklistResourceMergeAndPatch = Partial; + +// @public +export interface TextCategoriesAnalysisOutput { + category: TextCategoryOutput; + severity?: number; +} + +// @public +export type TextCategory = string; + +// @public +export type TextCategoryOutput = string; + +// @public +export interface TextProtectedMaterialAnalysisResultOutput { + detected: boolean; +} + +// (No @packageDocumentation comment for this package) diff --git a/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/tsconfig.json b/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/tsconfig.json new file mode 100644 index 000000000000..26e6a4e090b4 --- /dev/null +++ b/sdk/contentsafety/ai-content-safety-rest/~/.tmp-breaking-change-detect/tsconfig.json @@ -0,0 +1,17 @@ + +{ + "compilerOptions": { + "jsx": "preserve", + "target": "es5", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "lib": ["es2015", "es2017", "esnext"], + "experimentalDecorators": true, + "rootDir": "." + }, + "include": [ + "**/*.ts", + ], + "exclude": ["**/node_modules/**/*.*"] +}