diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index f4532ba70f16..3f8b20d51b72 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -274,7 +274,7 @@ packages: dependencies: '@azure-rest/core-client': 1.0.0-beta.6 '@azure/core-paging': 1.2.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-rest-pipeline': 1.3.1 tslib: 2.3.1 transitivePeerDependencies: - supports-color @@ -285,7 +285,7 @@ packages: engines: {node: '>=12.0.0'} dependencies: '@azure/core-auth': 1.3.2 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-rest-pipeline': 1.3.1 tslib: 2.3.1 transitivePeerDependencies: - supports-color @@ -307,7 +307,7 @@ packages: '@azure/core-lro': 1.0.5 '@azure/core-paging': 1.2.0 '@azure/core-tracing': 1.0.0-preview.11 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 tslib: 2.3.1 dev: false @@ -320,7 +320,7 @@ packages: '@azure/core-lro': 1.0.5 '@azure/core-paging': 1.2.0 '@azure/core-tracing': 1.0.0-preview.9 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@opentelemetry/api': 0.10.2 tslib: 2.3.1 dev: false @@ -332,12 +332,12 @@ packages: '@azure/abort-controller': 1.0.4 '@azure/core-asynciterator-polyfill': 1.0.0 '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 - '@azure/core-lro': 2.2.0 + '@azure/core-client': 1.3.1 + '@azure/core-lro': 2.2.1 '@azure/core-paging': 1.2.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-rest-pipeline': 1.3.1 '@azure/core-tracing': 1.0.0-preview.12 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 tslib: 2.3.1 transitivePeerDependencies: - supports-color @@ -370,10 +370,10 @@ packages: dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 - '@azure/core-lro': 2.2.0 + '@azure/core-client': 1.3.1 + '@azure/core-lro': 2.2.1 '@azure/core-paging': 1.2.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-rest-pipeline': 1.3.1 tslib: 2.3.1 transitivePeerDependencies: - supports-color @@ -385,10 +385,10 @@ packages: dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 - '@azure/core-lro': 2.2.0 + '@azure/core-client': 1.3.1 + '@azure/core-lro': 2.2.1 '@azure/core-paging': 1.2.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-rest-pipeline': 1.3.1 tslib: 2.3.1 transitivePeerDependencies: - supports-color @@ -400,7 +400,7 @@ packages: dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 - '@azure/core-http': 2.2.0 + '@azure/core-http': 2.2.1 '@azure/core-tracing': 1.0.0-preview.13 events: 3.3.0 jwt-decode: 2.2.0 @@ -418,7 +418,7 @@ packages: '@azure/core-lro': 1.0.5 '@azure/core-paging': 1.2.0 '@azure/core-tracing': 1.0.0-preview.10 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@opentelemetry/api': 0.10.2 events: 3.3.0 tslib: 2.3.1 @@ -428,9 +428,9 @@ packages: resolution: {integrity: sha512-+erzTnfEB0xymIHPJm6WXrYaWB/GvK6bMm8V3Kl4STcpY2qAO102DM6wEHsn7qtjbfwLp1+mC8ka8CoglWcugQ==} engines: {node: '>=8.0.0'} dependencies: - '@azure/core-http': 2.2.0 + '@azure/core-http': 2.2.1 '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 events: 3.3.0 tslib: 1.14.1 dev: false @@ -440,11 +440,11 @@ packages: engines: {node: '>=12.0.0'} dependencies: '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 + '@azure/core-client': 1.3.1 '@azure/core-paging': 1.2.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-rest-pipeline': 1.3.1 '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 tslib: 2.3.1 transitivePeerDependencies: - supports-color @@ -456,7 +456,7 @@ packages: dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 buffer: 5.7.1 events: 3.3.0 jssha: 3.2.0 @@ -480,14 +480,14 @@ packages: tslib: 2.3.1 dev: false - /@azure/core-client/1.3.0: - resolution: {integrity: sha512-4ricu3aM1TQP2vglBcvFX8KgbWVe+7hl1jVAw6BzIGG4CTAvO3ygDS6th3O+zFwGN9xkgXFHa7Tp3u9za8ciIA==} + /@azure/core-client/1.3.1: + resolution: {integrity: sha512-7IHm2DGg2u7dJYtCW84Ik7uENHfE8VsM/sWloZezPKYDoWZrg7JzwjvdGAfsaELKi2p0GE+JBaAbDYnNpr5V1w==} engines: {node: '>=12.0.0'} dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-asynciterator-polyfill': 1.0.0 '@azure/core-auth': 1.3.2 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-rest-pipeline': 1.3.1 '@azure/core-tracing': 1.0.0-preview.13 tslib: 2.3.1 transitivePeerDependencies: @@ -501,7 +501,7 @@ packages: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 '@azure/core-tracing': 1.0.0-preview.9 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@opentelemetry/api': 0.10.2 '@types/node-fetch': 2.5.12 '@types/tunnel': 0.0.1 @@ -523,7 +523,7 @@ packages: '@azure/core-asynciterator-polyfill': 1.0.0 '@azure/core-auth': 1.3.2 '@azure/core-tracing': 1.0.0-preview.11 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@types/node-fetch': 2.5.12 '@types/tunnel': 0.0.1 form-data: 3.0.1 @@ -536,15 +536,15 @@ packages: xml2js: 0.4.23 dev: false - /@azure/core-http/2.2.0: - resolution: {integrity: sha512-DCXm8OTNhPxErNvwuNgd9r/W+LjMrHHNc9/q4QgIOpCaoBvpJd1O5Nl2gbAhrwfiwmEBNWHMeGoe5+g3Lx2H/A==} + /@azure/core-http/2.2.1: + resolution: {integrity: sha512-7ATnV3OGzCO2K9kMrh3NKUM8b4v+xasmlUhkNZz6uMbm+8XH/AexLkhRGsoo0GyKNlEGvyGEfytqTk0nUY2I4A==} engines: {node: '>=12.0.0'} dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-asynciterator-polyfill': 1.0.0 '@azure/core-auth': 1.3.2 '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@types/node-fetch': 2.5.12 '@types/tunnel': 0.0.3 form-data: 4.0.0 @@ -568,13 +568,13 @@ packages: tslib: 2.3.1 dev: false - /@azure/core-lro/2.2.0: - resolution: {integrity: sha512-TJo95eNT1dwYOPCb0m1C2zyxVlHuRRkKGeg9TKu8XMF2qh4v6c1weD63r9RVIrLdHdnSqS0n6PTXBpWoB8NqMw==} + /@azure/core-lro/2.2.1: + resolution: {integrity: sha512-HE6PBl+mlKa0eBsLwusHqAqjLc5n9ByxeDo3Hz4kF3B1hqHvRkBr4oMgoT6tX7Hc3q97KfDctDUon7EhvoeHPA==} engines: {node: '>=12.0.0'} dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 tslib: 2.3.1 dev: false @@ -586,14 +586,14 @@ packages: tslib: 2.3.1 dev: false - /@azure/core-rest-pipeline/1.3.0: - resolution: {integrity: sha512-XdGCm4sVfLvFbd3x17Aw6XNA8SK+sWFvVlOnNSSL2OJGJ4g10LspCpGnIqB+V6OZAaVwOx/eQQN2rOfZzf4Q5w==} + /@azure/core-rest-pipeline/1.3.1: + resolution: {integrity: sha512-xTQiv47O5cWzJFkwiDrUTT4K4IYbUIts0gaou5TZxAAuhQi9kAKWHEmFTjHVMOeAmyDhlMM5cb21M2n4WDto1A==} engines: {node: '>=12.0.0'} dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 form-data: 4.0.0 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.0 @@ -671,16 +671,16 @@ packages: resolution: {integrity: sha512-Q71Buur3RMcg6lCnisLL8Im562DBw+ybzgm+YQj/FbAaI8ZNu/zl/5z1fE4k3Q9LSIzYrz6HLRzlhdSBXpydlQ==} engines: {node: '>=8.0.0'} dependencies: - '@azure/core-http': 1.2.6 + '@azure/core-http': 1.2.3 '@azure/core-tracing': 1.0.0-preview.9 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@azure/msal-node': 1.0.0-beta.6_debug@4.3.2 '@opentelemetry/api': 0.10.2 '@types/stoppable': 1.1.1 axios: 0.21.4_debug@4.3.2 events: 3.3.0 jws: 4.0.0 - msal: 1.4.13 + msal: 1.4.14 open: 7.4.2 qs: 6.10.1 stoppable: 1.1.0 @@ -698,16 +698,16 @@ packages: engines: {node: '>=12.0.0'} dependencies: '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-client': 1.3.1 + '@azure/core-rest-pipeline': 1.3.1 '@azure/core-tracing': 1.0.0-preview.12 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@azure/msal-node': 1.0.0-beta.6 '@types/stoppable': 1.1.1 axios: 0.21.4 events: 3.3.0 jws: 4.0.0 - msal: 1.4.13 + msal: 1.4.14 open: 7.4.2 qs: 6.10.1 stoppable: 1.1.0 @@ -725,16 +725,16 @@ packages: engines: {node: '>=12.0.0'} dependencies: '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-client': 1.3.1 + '@azure/core-rest-pipeline': 1.3.1 '@azure/core-tracing': 1.0.0-preview.12 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@azure/msal-node': 1.0.0-beta.6_debug@4.3.2 '@types/stoppable': 1.1.1 axios: 0.21.4_debug@4.3.2 events: 3.3.0 jws: 4.0.0 - msal: 1.4.13 + msal: 1.4.14 open: 7.4.2 qs: 6.10.1 stoppable: 1.1.0 @@ -753,14 +753,14 @@ packages: dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-client': 1.3.1 + '@azure/core-rest-pipeline': 1.3.1 '@azure/core-tracing': 1.0.0-preview.13 '@azure/core-util': 1.0.0-beta.1 - '@azure/logger': 1.0.2 - '@azure/msal-browser': 2.17.0 + '@azure/logger': 1.0.3 + '@azure/msal-browser': 2.18.0 '@azure/msal-common': 4.5.1 - '@azure/msal-node': 1.3.1 + '@azure/msal-node': 1.3.2 '@types/stoppable': 1.1.1 events: 3.3.0 jws: 4.0.0 @@ -780,14 +780,14 @@ packages: dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-client': 1.3.1 + '@azure/core-rest-pipeline': 1.3.1 '@azure/core-tracing': 1.0.0-preview.13 '@azure/core-util': 1.0.0-beta.1 - '@azure/logger': 1.0.2 - '@azure/msal-browser': 2.17.0 + '@azure/logger': 1.0.3 + '@azure/msal-browser': 2.18.0 '@azure/msal-common': 4.5.1 - '@azure/msal-node': 1.3.1 + '@azure/msal-node': 1.3.2 '@types/stoppable': 1.1.1 events: 3.3.0 jws: 4.0.0 @@ -806,14 +806,14 @@ packages: dependencies: '@azure/abort-controller': 1.0.4 '@azure/core-auth': 1.3.2 - '@azure/core-client': 1.3.0 - '@azure/core-rest-pipeline': 1.3.0 + '@azure/core-client': 1.3.1 + '@azure/core-rest-pipeline': 1.3.1 '@azure/core-tracing': 1.0.0-preview.13 '@azure/core-util': 1.0.0-beta.1 - '@azure/logger': 1.0.2 - '@azure/msal-browser': 2.17.0 + '@azure/logger': 1.0.3 + '@azure/msal-browser': 2.18.0 '@azure/msal-common': 4.5.1 - '@azure/msal-node': 1.3.1_debug@4.3.2 + '@azure/msal-node': 1.3.2_debug@4.3.2 '@types/stoppable': 1.1.1 events: 3.3.0 jws: 4.0.0 @@ -831,11 +831,11 @@ packages: engines: {node: '>=12.0.0'} dependencies: '@azure/abort-controller': 1.0.4 - '@azure/core-http': 2.2.0 - '@azure/core-lro': 2.2.0 + '@azure/core-http': 2.2.1 + '@azure/core-lro': 2.2.1 '@azure/core-paging': 1.2.0 '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 tslib: 2.3.1 dev: false @@ -844,11 +844,11 @@ packages: engines: {node: '>=8.0.0'} dependencies: '@azure/abort-controller': 1.0.4 - '@azure/core-http': 2.2.0 - '@azure/core-lro': 2.2.0 + '@azure/core-http': 2.2.1 + '@azure/core-lro': 2.2.1 '@azure/core-paging': 1.2.0 '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 tslib: 2.3.1 dev: false @@ -857,11 +857,11 @@ packages: engines: {node: '>=12.0.0'} dependencies: '@azure/abort-controller': 1.0.4 - '@azure/core-http': 2.2.0 - '@azure/core-lro': 2.2.0 + '@azure/core-http': 2.2.1 + '@azure/core-lro': 2.2.1 '@azure/core-paging': 1.2.0 '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 tslib: 2.3.1 dev: false @@ -871,9 +871,9 @@ packages: tslib: 1.14.1 dev: false - /@azure/logger/1.0.2: - resolution: {integrity: sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw==} - engines: {node: '>=8.0.0'} + /@azure/logger/1.0.3: + resolution: {integrity: sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==} + engines: {node: '>=12.0.0'} dependencies: tslib: 2.3.1 dev: false @@ -882,7 +882,7 @@ packages: resolution: {integrity: sha512-Y3HGIhepNpk83XzxbOFBhXNVHI+ntXaPKJmqpqcVhAkN3x3LMKzDRg9B8CUDLkaeYAMV60lievKz052EFHkgbw==} engines: {node: '>=12.0.0'} dependencies: - '@azure/core-http': 2.2.0 + '@azure/core-http': 2.2.1 '@opentelemetry/api': 1.0.3 '@opentelemetry/core': 0.22.0_@opentelemetry+api@1.0.3 '@opentelemetry/resources': 0.22.0_@opentelemetry+api@1.0.3 @@ -959,11 +959,11 @@ packages: - debug dev: false - /@azure/msal-browser/2.17.0: - resolution: {integrity: sha512-NDK0NfsiRkjUU4V4jTt++aUPVg3JnRF4zV3B6WEOXDMH3OCbSJyqdO1WhdUWgMNQZz6Dk9bO/c6Bf4vUEgg+WA==} + /@azure/msal-browser/2.18.0: + resolution: {integrity: sha512-YiWsimjsjjVu56+zOUDB1U3BCD9YNPIEZmw5iHzMk14aanqxWIvJlo+Ewo5/3FqxILgBOFWliH2hZCQPRIqKSg==} engines: {node: '>=0.8.0'} dependencies: - '@azure/msal-common': 5.0.0 + '@azure/msal-common': 5.0.1 transitivePeerDependencies: - supports-color dev: false @@ -977,8 +977,8 @@ packages: - supports-color dev: false - /@azure/msal-common/5.0.0: - resolution: {integrity: sha512-b3QXfW0BlGZs3mQ59rkVGcArzeMGd1RjHxyRez5bCB1F/F3jRmn2nY9jGamrILPBFz7weGpJiouW1VmDmAuk7Q==} + /@azure/msal-common/5.0.1: + resolution: {integrity: sha512-CmPR3XM9+CGUu7V/+bAwDxyN6XqWJJhVLmv7utT3sbgay4l5roVXsD1t4wURTs8PwzxmmnJOrhvvGhoDxUW69g==} engines: {node: '>=0.8.0'} dependencies: debug: 4.3.2 @@ -1023,11 +1023,11 @@ packages: - supports-color dev: false - /@azure/msal-node/1.3.1: - resolution: {integrity: sha512-c3bSdXUBpjUehx7mdI5iY+mwMF1mTz1qrVppH5LTD3SfbousRaFN9F2phAeaejVnCzbKzFPl4TTHxOJbkBVXHA==} + /@azure/msal-node/1.3.2: + resolution: {integrity: sha512-aKU2lVRKhZa1IJ/Za/Ir6qlythQ3FHz0g0px3SbM4iC1otyr3ANS4mIn/6fmkpZDIHc8eAgJh2KMep1Yn2zpig==} engines: {node: 10 || 12 || 14 || 16} dependencies: - '@azure/msal-common': 5.0.0 + '@azure/msal-common': 5.0.1 axios: 0.21.4 jsonwebtoken: 8.5.1 uuid: 8.3.2 @@ -1036,11 +1036,11 @@ packages: - supports-color dev: false - /@azure/msal-node/1.3.1_debug@4.3.2: - resolution: {integrity: sha512-c3bSdXUBpjUehx7mdI5iY+mwMF1mTz1qrVppH5LTD3SfbousRaFN9F2phAeaejVnCzbKzFPl4TTHxOJbkBVXHA==} + /@azure/msal-node/1.3.2_debug@4.3.2: + resolution: {integrity: sha512-aKU2lVRKhZa1IJ/Za/Ir6qlythQ3FHz0g0px3SbM4iC1otyr3ANS4mIn/6fmkpZDIHc8eAgJh2KMep1Yn2zpig==} engines: {node: 10 || 12 || 14 || 16} dependencies: - '@azure/msal-common': 5.0.0 + '@azure/msal-common': 5.0.1 axios: 0.21.4_debug@4.3.2 jsonwebtoken: 8.5.1 uuid: 8.3.2 @@ -1057,10 +1057,10 @@ packages: '@azure/core-amqp': 3.0.0 '@azure/core-asynciterator-polyfill': 1.0.0 '@azure/core-auth': 1.3.2 - '@azure/core-http': 2.2.0 + '@azure/core-http': 2.2.1 '@azure/core-paging': 1.2.0 '@azure/core-tracing': 1.0.0-preview.12 - '@azure/logger': 1.0.2 + '@azure/logger': 1.0.3 '@types/is-buffer': 2.0.0 '@types/long': 4.0.1 buffer: 5.7.1 @@ -1078,8 +1078,8 @@ packages: '@babel/highlight': 7.14.5 dev: false - /@babel/code-frame/7.14.5: - resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} + /@babel/code-frame/7.15.8: + resolution: {integrity: sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.14.5 @@ -1090,16 +1090,16 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/core/7.15.5: - resolution: {integrity: sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==} + /@babel/core/7.15.8: + resolution: {integrity: sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/generator': 7.15.4 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.5 - '@babel/helper-module-transforms': 7.15.7 + '@babel/code-frame': 7.15.8 + '@babel/generator': 7.15.8 + '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.8 + '@babel/helper-module-transforms': 7.15.8 '@babel/helpers': 7.15.4 - '@babel/parser': 7.15.7 + '@babel/parser': 7.15.8 '@babel/template': 7.15.4 '@babel/traverse': 7.15.4 '@babel/types': 7.15.6 @@ -1113,8 +1113,8 @@ packages: - supports-color dev: false - /@babel/generator/7.15.4: - resolution: {integrity: sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==} + /@babel/generator/7.15.8: + resolution: {integrity: sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.15.6 @@ -1122,16 +1122,16 @@ packages: source-map: 0.5.7 dev: false - /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.5: + /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.8: resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.5 + '@babel/core': 7.15.8 '@babel/helper-validator-option': 7.14.5 - browserslist: 4.17.1 + browserslist: 4.17.4 semver: 6.3.0 dev: false @@ -1172,8 +1172,8 @@ packages: '@babel/types': 7.15.6 dev: false - /@babel/helper-module-transforms/7.15.7: - resolution: {integrity: sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==} + /@babel/helper-module-transforms/7.15.8: + resolution: {integrity: sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-module-imports': 7.15.4 @@ -1251,8 +1251,8 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/parser/7.15.7: - resolution: {integrity: sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==} + /@babel/parser/7.15.8: + resolution: {integrity: sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==} engines: {node: '>=6.0.0'} hasBin: true dev: false @@ -1268,8 +1268,8 @@ packages: resolution: {integrity: sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/parser': 7.15.7 + '@babel/code-frame': 7.15.8 + '@babel/parser': 7.15.8 '@babel/types': 7.15.6 dev: false @@ -1277,12 +1277,12 @@ packages: resolution: {integrity: sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/generator': 7.15.4 + '@babel/code-frame': 7.15.8 + '@babel/generator': 7.15.8 '@babel/helper-function-name': 7.15.4 '@babel/helper-hoist-variables': 7.15.4 '@babel/helper-split-export-declaration': 7.15.4 - '@babel/parser': 7.15.7 + '@babel/parser': 7.15.8 '@babel/types': 7.15.6 debug: 4.3.2 globals: 11.12.0 @@ -1311,8 +1311,8 @@ packages: engines: {node: '>= 12'} dev: false - /@cspotcode/source-map-support/0.6.1: - resolution: {integrity: sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==} + /@cspotcode/source-map-support/0.7.0: + resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} engines: {node: '>=12'} dependencies: '@cspotcode/source-map-consumer': 0.8.0 @@ -1355,12 +1355,12 @@ packages: engines: {node: '>=8'} dev: false - /@microsoft/api-extractor-model/7.13.9: - resolution: {integrity: sha512-t/XKTr8MlHRWgDr1fkyCzTQRR5XICf/WzIFs8yw1JLU8Olw99M3by4/dtpOZNskfqoW+J8NwOxovduU2csi4Ww==} + /@microsoft/api-extractor-model/7.13.13: + resolution: {integrity: sha512-4Hz2TOL4TljsAfMQe7a8tm+Am8+AkrcgkbnH62S9YuaIC3Cw6jE4H2qP8WC2JJInWJP4pg/ZrUlHrtmtgrqn9Q==} dependencies: '@microsoft/tsdoc': 0.13.2 '@microsoft/tsdoc-config': 0.15.2 - '@rushstack/node-core-library': 3.41.0 + '@rushstack/node-core-library': 3.42.3 dev: false /@microsoft/api-extractor-model/7.7.10: @@ -1370,22 +1370,22 @@ packages: '@rushstack/node-core-library': 3.19.6 dev: false - /@microsoft/api-extractor/7.18.11: - resolution: {integrity: sha512-WfN5MZry4TrF60OOcGadFDsGECF9JNKNT+8P/8crYAumAYQRitI2cUiQRlCWrgmFgCWNezsNZeI/2BggdnUqcg==} + /@microsoft/api-extractor/7.18.16: + resolution: {integrity: sha512-f0EcjGgS8IToUHxfQIr4vxGpBhUdaDOhGyddZpZ5K9e/GcGkImfkGeHpYbK043f2bZV3aagTx6NcIawwE72BKA==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.13.9 + '@microsoft/api-extractor-model': 7.13.13 '@microsoft/tsdoc': 0.13.2 '@microsoft/tsdoc-config': 0.15.2 - '@rushstack/node-core-library': 3.41.0 - '@rushstack/rig-package': 0.3.1 - '@rushstack/ts-command-line': 4.9.1 + '@rushstack/node-core-library': 3.42.3 + '@rushstack/rig-package': 0.3.3 + '@rushstack/ts-command-line': 4.10.2 colors: 1.2.5 lodash: 4.17.21 resolve: 1.17.0 semver: 7.3.5 source-map: 0.6.1 - typescript: 4.4.3 + typescript: 4.4.4 dev: false /@microsoft/api-extractor/7.7.11: @@ -1529,6 +1529,7 @@ packages: /@opentelemetry/node/0.22.0_@opentelemetry+api@1.0.3: resolution: {integrity: sha512-+HhGbDruQ7cwejVOIYyxRa28uosnG8W95NiQZ6qE8PXXPsDSyGeftAPbtYpGit0H2f5hrVcMlwmWHeAo9xkSLA==} engines: {node: '>=8.0.0'} + deprecated: Package renamed to @opentelemetry/sdk-trace-node peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: @@ -1689,8 +1690,8 @@ packages: z-schema: 3.18.4 dev: false - /@rushstack/node-core-library/3.41.0: - resolution: {integrity: sha512-JxdmqR+SHU04jTDaZhltMZL3/XTz2ZZM47DTN+FSPUGUVp6WmxLlvJnT5FoHrOZWUjL/FoIlZUdUPTSXjTjIcg==} + /@rushstack/node-core-library/3.42.3: + resolution: {integrity: sha512-xtiJsHtO4Sf/hVKyf/8d58p3zQh2JAZNs1mmDNCyIlgSRYGdqUkpadvvn5mz7EwF6lwn+xTTaTV5/a32xKjbdw==} dependencies: '@types/node': 12.20.24 colors: 1.2.5 @@ -1703,28 +1704,28 @@ packages: z-schema: 3.18.4 dev: false - /@rushstack/rig-package/0.3.1: - resolution: {integrity: sha512-DXQmrPWOCNoE2zPzHCShE1y47FlgbAg48wpaY058Qo/yKDzL0GlEGf5Ra2NIt22pMcp0R/HHh+kZGbqTnF4CrA==} + /@rushstack/rig-package/0.3.3: + resolution: {integrity: sha512-ElPnChxIkUzcU3ywI0Cl7E1aM+2w6vFpAwM6X+oWk7Cyjf2ofItThje9e5qUBtKqvI9sc5jVsHY1bRC8rVwOqQ==} dependencies: resolve: 1.17.0 strip-json-comments: 3.1.1 dev: false - /@rushstack/ts-command-line/4.3.13: - resolution: {integrity: sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw==} + /@rushstack/ts-command-line/4.10.2: + resolution: {integrity: sha512-Weq8B7oJeCQ4ITsaVLhOQombipyg+idpkdkhA6UqLtKvuzq8zTtPpAfhP5ff5L+RCmo1CFCVOBE3i+MvzUR5vA==} dependencies: - '@types/argparse': 1.0.33 + '@types/argparse': 1.0.38 argparse: 1.0.10 colors: 1.2.5 + string-argv: 0.3.1 dev: false - /@rushstack/ts-command-line/4.9.1: - resolution: {integrity: sha512-zzoWB6OqVbMjnxlxbAUqbZqDWITUSHqwFCx7JbH5CVrjR9kcsB4NeWkN1I8GcR92beiOGvO3yPlB2NRo5Ugh+A==} + /@rushstack/ts-command-line/4.3.13: + resolution: {integrity: sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw==} dependencies: - '@types/argparse': 1.0.38 + '@types/argparse': 1.0.33 argparse: 1.0.10 colors: 1.2.5 - string-argv: 0.3.1 dev: false /@sinonjs/commons/1.8.3: @@ -1788,7 +1789,7 @@ packages: resolution: {integrity: sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==} dependencies: '@types/connect': 3.4.35 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/chai-as-promised/7.1.4: @@ -1807,14 +1808,14 @@ packages: resolution: {integrity: sha512-tFfcE+DSTzWAgifkjik9AySNqIyNoYwmR+uecPwwD/XRNfvOjmC/FjCxpiUGDkDVDphPfCUecSQVFw+lN3M3kQ==} dev: false - /@types/component-emitter/1.2.10: - resolution: {integrity: sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==} + /@types/component-emitter/1.2.11: + resolution: {integrity: sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==} dev: false /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/cookie/0.4.1: @@ -1849,7 +1850,7 @@ packages: /@types/express-serve-static-core/4.17.24: resolution: {integrity: sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: false @@ -1866,20 +1867,20 @@ packages: /@types/fs-extra/8.1.2: resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/glob/7.1.4: resolution: {integrity: sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==} dependencies: '@types/minimatch': 3.0.5 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/is-buffer/2.0.0: resolution: {integrity: sha512-0f7N/e3BAz32qDYvgB4d2cqv1DqUwvGxHkXsrucICn8la1Vb6Yl6Eg8mPScGwUiqHJeE7diXlzaK+QMA9m4Gxw==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/json-schema/7.0.9: @@ -1893,13 +1894,13 @@ packages: /@types/jsonwebtoken/8.5.5: resolution: {integrity: sha512-OGqtHQ7N5/Ap/TUwO6IgHDuLiAoTmHhGpNvgkCm/F4N6pKzx/RBSfr2OXZSwC6vkfnsEdb6+7DNZVtiXiwdwFw==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/jws/3.2.4: resolution: {integrity: sha512-aqtH4dPw1wUjFZaeMD1ak/pf8iXlu/odFe+trJrvw0g1sTh93i+SCykg0Ek8C6B7rVK3oBORbfZAsKO7P10etg==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/jwt-decode/2.2.1: @@ -1913,7 +1914,7 @@ packages: /@types/md5/2.3.1: resolution: {integrity: sha512-OK3oe+ALIoPSo262lnhAYwpqFNXbiwH2a+0+Z5YBnkQEwWD8fk5+PIeRhYA48PzvX9I4SGNpWy+9bLj8qz92RQ==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/mime/1.3.2: @@ -1939,13 +1940,13 @@ packages: /@types/mock-fs/4.10.0: resolution: {integrity: sha512-FQ5alSzmHMmliqcL36JqIA4Yyn9jyJKvRSGV3mvPh108VFatX7naJDzSG4fnFQNZFq9dIx0Dzoe6ddflMB2Xkg==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/mock-require/2.0.0: resolution: {integrity: sha512-nOgjoE5bBiDeiA+z41i95makyHUSMWQMOPocP+J67Pqx/68HAXaeWN1NFtrAYYV6LrISIZZ8vKHm/a50k0f6Sg==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/ms/0.7.31: @@ -1959,7 +1960,7 @@ packages: /@types/node-fetch/2.5.12: resolution: {integrity: sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 form-data: 3.0.1 dev: false @@ -1971,8 +1972,8 @@ packages: resolution: {integrity: sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==} dev: false - /@types/node/12.20.27: - resolution: {integrity: sha512-qZdePUDSLAZRXXV234bLBEUM0nAQjoxbcSwp1rqSMUe1rZ47mwU6OjciR/JvF1Oo8mc0ys6GE0ks0HGgqAZoGg==} + /@types/node/12.20.33: + resolution: {integrity: sha512-5XmYX2GECSa+CxMYaFsr2mrql71Q4EvHjKS+ox/SiwSdaASMoBIWE6UmZqFO+VX1jIcsYLStI4FFoB6V7FeIYw==} dev: false /@types/node/8.10.66: @@ -1998,7 +1999,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/semaphore/1.1.1: @@ -2009,7 +2010,7 @@ packages: resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} dependencies: '@types/mime': 1.3.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/sinon/9.0.11: @@ -2025,7 +2026,7 @@ packages: /@types/stoppable/1.1.1: resolution: {integrity: sha512-b8N+fCADRIYYrGZOcmOR8ZNBOqhktWTB/bMUl5LvGtT201QKJZOOH5UsFyI3qtteM6ZAJbJqZoBcLqqxKIwjhw==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/tough-cookie/4.0.1: @@ -2035,13 +2036,13 @@ packages: /@types/tunnel/0.0.1: resolution: {integrity: sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/tunnel/0.0.3: resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/underscore/1.11.3: @@ -2055,20 +2056,20 @@ packages: /@types/ws/7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/xml2js/0.4.9: resolution: {integrity: sha512-CHiCKIihl1pychwR2RNX5mAYmJDACgFVCMT5OArMaO3erzwXVcBqPcusr+Vl8yeeXukxZqtF8mZioqX+mpjjdw==} dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false /@types/yauzl/2.9.2: resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==} requiresBuild: true dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dev: false optional: true @@ -2162,7 +2163,7 @@ packages: '@typescript-eslint/visitor-keys': 4.19.0 debug: 4.3.2 globby: 11.0.4 - is-glob: 4.0.2 + is-glob: 4.0.3 semver: 7.3.5 tsutils: 3.21.0_typescript@4.2.4 typescript: 4.2.4 @@ -2189,7 +2190,7 @@ packages: resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==} engines: {node: '>= 0.6'} dependencies: - mime-types: 2.1.32 + mime-types: 2.1.33 negotiator: 0.6.2 dev: false @@ -2358,13 +2359,13 @@ packages: resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} dev: false - /array-includes/3.1.3: - resolution: {integrity: sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==} + /array-includes/3.1.4: + resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.6 + es-abstract: 1.19.1 get-intrinsic: 1.1.1 is-string: 1.0.7 dev: false @@ -2374,13 +2375,13 @@ packages: engines: {node: '>=8'} dev: false - /array.prototype.flat/1.2.4: - resolution: {integrity: sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==} + /array.prototype.flat/1.2.5: + resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.6 + es-abstract: 1.19.1 dev: false /asap/2.0.6: @@ -2489,12 +2490,12 @@ packages: - debug dev: false - /azure-iot-amqp-base/2.4.11: - resolution: {integrity: sha512-a1D9CgB0RFjSdeIyPuYjaxBJGHqO7A3WqSlDEHQiVluB50VgtYy92mBKAJUE4iIQtvciW2zKcI9iEhLJPmcb5A==} + /azure-iot-amqp-base/2.4.12: + resolution: {integrity: sha512-ECVFvGBvtNevn0mxkGbycEmxYQu1/IgDjjyPkVEMqgG9P30RTFsFc02JTJGLoP26CJXiBr0W5YbL0haUl2PoHg==} engines: {node: '>= 12.0.0'} dependencies: async: 2.6.3 - azure-iot-common: 1.12.11 + azure-iot-common: 1.12.12 debug: 4.3.2 lodash.merge: 4.6.2 machina: 4.0.2 @@ -2505,8 +2506,8 @@ packages: - supports-color dev: false - /azure-iot-common/1.12.11: - resolution: {integrity: sha512-XLbwLqlJBpW8IB2ny4TC8135PwI+HzeZHXbHZi3XwPX/06XPhOv2pttQKjFepw8WNz4KC6Up2Giaf/cEX43L6g==} + /azure-iot-common/1.12.12: + resolution: {integrity: sha512-ltuk1UAliI9Rr3sCX+eWVcU5EvNkZZlliZBya7iz+/p32/ZGGcqnZbFxtNw6SX/9XtuUhSXf5z++oN4CIdAb3Q==} engines: {node: '>= 12.0.0'} dependencies: debug: 4.3.2 @@ -2515,28 +2516,28 @@ packages: - supports-color dev: false - /azure-iot-http-base/1.11.11: - resolution: {integrity: sha512-JIR8meY5446SDBWKm6wG2IO/3degwQyFZssziFgEpU62cHOE78+b//HuGrTHOjKepq1Ggpepe90Ewr3WUlBPaA==} + /azure-iot-http-base/1.11.12: + resolution: {integrity: sha512-Ryaz1cX4Bh7qOd583PWMftNuMut2FAXp8hVY5HsE029fecVhRGa2D28Ab1f9D9mSxOH3A7QrZguq3b74FsAMmg==} engines: {node: '>= 12.0.0'} dependencies: - azure-iot-common: 1.12.11 + azure-iot-common: 1.12.12 debug: 4.3.2 uuid: 8.3.2 transitivePeerDependencies: - supports-color dev: false - /azure-iothub/1.14.4: - resolution: {integrity: sha512-WccA9gMiMf5HxukhKTiwylp2UDL3KdNKRV66S/7BGS0YFtVcYDyZcwHYgikuldyQxX1Bwrxn4+sdkMTazGDfbg==} + /azure-iothub/1.14.5: + resolution: {integrity: sha512-g/lf3lD3uKk/BfaR4bQ9VQ0OFLvJWeuWrLfcxeqY5377oI7c/7Ueo7SNzNG1d+Z2oyYuuSXcZ7gFcvYQu3g0HA==} engines: {node: '>= 12.0.0'} dependencies: '@azure/core-http': 1.2.3 '@azure/identity': 1.2.5_debug@4.3.2 '@azure/ms-rest-js': 2.6.0 async: 2.6.3 - azure-iot-amqp-base: 2.4.11 - azure-iot-common: 1.12.11 - azure-iot-http-base: 1.11.11 + azure-iot-amqp-base: 2.4.12 + azure-iot-common: 1.12.12 + azure-iot-http-base: 1.11.12 debug: 4.3.2 lodash: 4.17.21 machina: 4.0.2 @@ -2546,8 +2547,8 @@ packages: - supports-color dev: false - /azure-storage/2.10.4: - resolution: {integrity: sha512-zlfRPl4js92JC6+79C2EUmNGYjSknRl8pOiHQF78zy+pbOFOHtlBF6BU/OxPeHQX3gaa6NdEZnVydFxhhndkEw==} + /azure-storage/2.10.5: + resolution: {integrity: sha512-kLCbiW1lvwwJwB/iOX7ic7xw/RIcSReF1sUFetEyFSiE+HDdv/wpSlsQx0F0khkXrPtJmBJRH0y9s/CRuRBWLQ==} engines: {node: '>= 0.8.26'} dependencies: browserify-mime: 1.2.9 @@ -2558,7 +2559,7 @@ packages: request: 2.88.2 underscore: 1.13.1 uuid: 3.4.0 - validator: 9.4.1 + validator: 13.6.0 xml2js: 0.2.8 xmlbuilder: 9.0.7 dev: false @@ -2657,16 +2658,16 @@ packages: resolution: {integrity: sha1-rrGvKN5sDXpqLOQK22j/GEIq8x8=} dev: false - /browserslist/4.17.1: - resolution: {integrity: sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==} + /browserslist/4.17.4: + resolution: {integrity: sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001260 - electron-to-chromium: 1.3.850 + caniuse-lite: 1.0.30001267 + electron-to-chromium: 1.3.868 escalade: 3.1.1 - nanocolors: 0.1.12 - node-releases: 1.1.76 + node-releases: 2.0.0 + picocolors: 1.0.0 dev: false /buffer-crc32/0.2.13: @@ -2737,10 +2738,8 @@ packages: engines: {node: '>=6'} dev: false - /caniuse-lite/1.0.30001260: - resolution: {integrity: sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg==} - dependencies: - nanocolors: 0.1.12 + /caniuse-lite/1.0.30001267: + resolution: {integrity: sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg==} dev: false /caseless/0.12.0: @@ -2834,7 +2833,7 @@ packages: braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 - is-glob: 4.0.2 + is-glob: 4.0.3 normalize-path: 3.0.0 readdirp: 3.2.0 optionalDependencies: @@ -2849,7 +2848,7 @@ packages: braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 - is-glob: 4.0.2 + is-glob: 4.0.3 normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: @@ -3018,8 +3017,8 @@ packages: requiresBuild: true dev: false - /core-js/3.18.1: - resolution: {integrity: sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA==} + /core-js/3.18.3: + resolution: {integrity: sha512-tReEhtMReZaPFVw7dajMx0vlsz3oOb8ajgPoHVYGxr8ErnZ6PcYEvvmjGmXlfpnxpkYSdOQttjB+MvVbCGfvLw==} requiresBuild: true dev: false @@ -3142,7 +3141,7 @@ packages: resolution: {integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==} deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) dependencies: - ms: 2.1.3 + ms: 2.1.1 dev: false /debug/3.2.7: @@ -3367,8 +3366,8 @@ packages: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: false - /electron-to-chromium/1.3.850: - resolution: {integrity: sha512-ZzkDcdzePeF4dhoGZQT77V2CyJOpwfTZEOg4h0x6R/jQhGt/rIRpbRyVreWLtD7B/WsVxo91URm2WxMKR9JQZA==} + /electron-to-chromium/1.3.868: + resolution: {integrity: sha512-kZYCHqwJ1ctGrYDlOcWQH+/AftAm/KD4lEnLDNwS0kKwx1x6dU4zv+GuDjsPPOGn/2TjnKBaZjDyjXaoix0q/A==} dev: false /emoji-regex/7.0.3: @@ -3431,8 +3430,8 @@ packages: is-arrayish: 0.2.1 dev: false - /es-abstract/1.18.6: - resolution: {integrity: sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==} + /es-abstract/1.19.1: + resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -3446,7 +3445,9 @@ packages: is-callable: 1.2.4 is-negative-zero: 2.0.1 is-regex: 1.1.4 + is-shared-array-buffer: 1.0.1 is-string: 1.0.7 + is-weakref: 1.0.1 object-inspect: 1.11.0 object-keys: 1.1.1 object.assign: 4.1.2 @@ -3513,11 +3514,12 @@ packages: resolve: 1.20.0 dev: false - /eslint-module-utils/2.6.2: - resolution: {integrity: sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==} + /eslint-module-utils/2.7.1: + resolution: {integrity: sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==} engines: {node: '>=4'} dependencies: debug: 3.2.7 + find-up: 2.1.0 pkg-dir: 2.0.0 dev: false @@ -3532,26 +3534,24 @@ packages: regexpp: 3.2.0 dev: false - /eslint-plugin-import/2.24.2_eslint@7.32.0: - resolution: {integrity: sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==} + /eslint-plugin-import/2.25.2_eslint@7.32.0: + resolution: {integrity: sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==} engines: {node: '>=4'} peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: - array-includes: 3.1.3 - array.prototype.flat: 1.2.4 + array-includes: 3.1.4 + array.prototype.flat: 1.2.5 debug: 2.6.9 doctrine: 2.1.0 eslint: 7.32.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.6.2 - find-up: 2.1.0 + eslint-module-utils: 2.7.1 has: 1.0.3 - is-core-module: 2.6.0 + is-core-module: 2.8.0 + is-glob: 4.0.3 minimatch: 3.0.4 - object.values: 1.1.4 - pkg-up: 2.0.0 - read-pkg-up: 3.0.0 + object.values: 1.1.5 resolve: 1.20.0 tsconfig-paths: 3.11.0 dev: false @@ -3642,7 +3642,7 @@ packages: ignore: 4.0.6 import-fresh: 3.3.0 imurmurhash: 0.1.4 - is-glob: 4.0.2 + is-glob: 4.0.3 js-yaml: 3.14.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -3655,7 +3655,7 @@ packages: semver: 7.3.5 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 - table: 6.7.1 + table: 6.7.2 text-table: 0.2.0 v8-compile-cache: 2.3.0 transitivePeerDependencies: @@ -3749,7 +3749,7 @@ packages: merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 - signal-exit: 3.0.4 + signal-exit: 3.0.5 strip-final-newline: 2.0.0 dev: false @@ -3872,9 +3872,9 @@ packages: node-fetch: optional: true dependencies: - '@babel/core': 7.15.5 + '@babel/core': 7.15.8 '@babel/runtime': 7.15.4 - core-js: 3.18.1 + core-js: 3.18.3 debug: 4.3.2 glob-to-regexp: 0.4.1 is-subset: 0.1.1 @@ -4018,7 +4018,7 @@ packages: resolution: {integrity: sha1-T9ca0t/elnibmApcCilZN8svXOk=} dependencies: cross-spawn: 4.0.2 - signal-exit: 3.0.4 + signal-exit: 3.0.5 dev: false /forever-agent/0.6.1: @@ -4031,7 +4031,7 @@ packages: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 - mime-types: 2.1.32 + mime-types: 2.1.33 dev: false /form-data/2.5.1: @@ -4040,7 +4040,7 @@ packages: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 - mime-types: 2.1.32 + mime-types: 2.1.33 dev: false /form-data/3.0.1: @@ -4049,7 +4049,7 @@ packages: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 - mime-types: 2.1.32 + mime-types: 2.1.33 dev: false /form-data/4.0.0: @@ -4058,7 +4058,7 @@ packages: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 - mime-types: 2.1.32 + mime-types: 2.1.33 dev: false /forwarded/0.2.0: @@ -4129,7 +4129,7 @@ packages: console-control-strings: 1.1.0 has-unicode: 2.0.1 object-assign: 4.1.1 - signal-exit: 3.0.4 + signal-exit: 3.0.5 string-width: 1.0.2 strip-ansi: 3.0.1 wide-align: 1.1.3 @@ -4201,7 +4201,7 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: - is-glob: 4.0.2 + is-glob: 4.0.3 dev: false /glob-to-regexp/0.4.1: @@ -4638,8 +4638,8 @@ packages: ci-info: 2.0.0 dev: false - /is-core-module/2.6.0: - resolution: {integrity: sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==} + /is-core-module/2.8.0: + resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} dependencies: has: 1.0.3 dev: false @@ -4693,8 +4693,8 @@ packages: is-extglob: 2.1.1 dev: false - /is-glob/4.0.2: - resolution: {integrity: sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==} + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 @@ -4735,6 +4735,10 @@ packages: has-tostringtag: 1.0.0 dev: false + /is-shared-array-buffer/1.0.1: + resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} + dev: false + /is-stream/1.1.0: resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} engines: {node: '>=0.10.0'} @@ -4769,7 +4773,7 @@ packages: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.18.6 + es-abstract: 1.19.1 foreach: 2.0.5 has-tostringtag: 1.0.0 dev: false @@ -4783,6 +4787,12 @@ packages: engines: {node: '>=0.10.0'} dev: false + /is-weakref/1.0.1: + resolution: {integrity: sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==} + dependencies: + call-bind: 1.0.2 + dev: false + /is-windows/1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -4821,8 +4831,8 @@ packages: engines: {node: '>=6'} dev: false - /istanbul-lib-coverage/3.0.1: - resolution: {integrity: sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==} + /istanbul-lib-coverage/3.0.2: + resolution: {integrity: sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g==} engines: {node: '>=8'} dev: false @@ -4837,8 +4847,8 @@ packages: resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} engines: {node: '>=6'} dependencies: - '@babel/generator': 7.15.4 - '@babel/parser': 7.15.7 + '@babel/generator': 7.15.8 + '@babel/parser': 7.15.8 '@babel/template': 7.15.4 '@babel/traverse': 7.15.4 '@babel/types': 7.15.6 @@ -4852,9 +4862,9 @@ packages: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.15.5 + '@babel/core': 7.15.8 '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.0.1 + istanbul-lib-coverage: 3.0.2 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -4873,7 +4883,7 @@ packages: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: - istanbul-lib-coverage: 3.0.1 + istanbul-lib-coverage: 3.0.2 make-dir: 3.1.0 supports-color: 7.2.0 dev: false @@ -4891,12 +4901,12 @@ packages: - supports-color dev: false - /istanbul-lib-source-maps/4.0.0: - resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} - engines: {node: '>=8'} + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: debug: 4.3.2 - istanbul-lib-coverage: 3.0.1 + istanbul-lib-coverage: 3.0.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -4909,8 +4919,8 @@ packages: html-escaper: 2.0.2 dev: false - /istanbul-reports/3.0.2: - resolution: {integrity: sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==} + /istanbul-reports/3.0.5: + resolution: {integrity: sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 @@ -4958,8 +4968,8 @@ packages: esprima: 4.0.1 dev: false - /jsbi/3.2.4: - resolution: {integrity: sha512-iOygwxPzMYli5xrjfd83Vy4Wyu9Ovpw6wWWFy5Kj7XP+pZxPp7Cy72F92iAt2j+6tTDYunvLtC+2tH3xCX37ng==} + /jsbi/3.2.5: + resolution: {integrity: sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==} dev: false /jsbn/0.1.1: @@ -5058,8 +5068,8 @@ packages: verror: 1.10.0 dev: false - /jsrsasign/10.4.0: - resolution: {integrity: sha512-C8qLhiAssh/b74KJpGhWuFGG9cFhJqMCVuuHXRibb3Z5vPuAW0ue0jUirpoExCdpdhv4nD3sZ1DAwJURYJTm9g==} + /jsrsasign/10.4.1: + resolution: {integrity: sha512-g2CP2nb8xKdmfZhuHaJEz1zVYTsZc+lUjLFvgbMX35/cUALK0G15sQfCbCpDg/UivkjCNlq0lV6FxCfPhv0shw==} dev: false /jssha/2.4.2: @@ -5129,11 +5139,11 @@ packages: resolution: {integrity: sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==} engines: {node: '>=10.0.0'} dependencies: - istanbul-lib-coverage: 3.0.1 + istanbul-lib-coverage: 3.0.2 istanbul-lib-instrument: 4.0.3 istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.0 - istanbul-reports: 3.0.2 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.0.5 minimatch: 3.0.4 transitivePeerDependencies: - supports-color @@ -5573,16 +5583,16 @@ packages: picomatch: 2.3.0 dev: false - /mime-db/1.49.0: - resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==} + /mime-db/1.50.0: + resolution: {integrity: sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==} engines: {node: '>= 0.6'} dev: false - /mime-types/2.1.32: - resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==} + /mime-types/2.1.33: + resolution: {integrity: sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==} engines: {node: '>= 0.6'} dependencies: - mime-db: 1.49.0 + mime-db: 1.50.0 dev: false /mime/1.6.0: @@ -5720,8 +5730,8 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false - /msal/1.4.13: - resolution: {integrity: sha512-uFEa4KGlpGqNMwa7/1OQc6WQUF8iwHbaiHMVn0Cl66Ec7o30ZTtX9s9OWrf0wAxp8Mwg0JEE886z/PHpsiZUxQ==} + /msal/1.4.14: + resolution: {integrity: sha512-k8M5+/jbfSQoCf7CyQzBP5HE5mY8TkBujykLGTEp2x0MvOK/FQsfUTNis28zlvvPVzhgrhb5GQiGM8rRpXyHdA==} engines: {node: '>=0.8.0'} dependencies: tslib: 1.14.1 @@ -5731,12 +5741,8 @@ packages: resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==} dev: false - /nanocolors/0.1.12: - resolution: {integrity: sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==} - dev: false - - /nanoid/3.1.28: - resolution: {integrity: sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw==} + /nanoid/3.1.30: + resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: false @@ -5805,7 +5811,7 @@ packages: /node-environment-flags/1.0.6: resolution: {integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==} dependencies: - object.getownpropertydescriptors: 2.1.2 + object.getownpropertydescriptors: 2.1.3 semver: 5.7.1 dev: false @@ -5821,8 +5827,8 @@ packages: whatwg-url: 5.0.0 dev: false - /node-releases/1.1.76: - resolution: {integrity: sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==} + /node-releases/2.0.0: + resolution: {integrity: sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==} dev: false /normalize-package-data/2.5.0: @@ -5859,7 +5865,7 @@ packages: pidtree: 0.3.1 read-pkg: 3.0.0 shell-quote: 1.7.2 - string.prototype.padend: 3.1.2 + string.prototype.padend: 3.1.3 dev: false /npm-run-path/4.0.1: @@ -5907,7 +5913,7 @@ packages: merge-source-map: 1.1.0 resolve-from: 4.0.0 rimraf: 2.7.1 - signal-exit: 3.0.4 + signal-exit: 3.0.5 spawn-wrap: 1.4.3 test-exclude: 5.2.3 uuid: 3.4.0 @@ -5955,22 +5961,22 @@ packages: object-keys: 1.1.1 dev: false - /object.getownpropertydescriptors/2.1.2: - resolution: {integrity: sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==} + /object.getownpropertydescriptors/2.1.3: + resolution: {integrity: sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==} engines: {node: '>= 0.8'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.6 + es-abstract: 1.19.1 dev: false - /object.values/1.1.4: - resolution: {integrity: sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==} + /object.values/1.1.5: + resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.6 + es-abstract: 1.19.1 dev: false /on-finished/2.3.0: @@ -6001,8 +6007,8 @@ packages: is-wsl: 2.2.0 dev: false - /open/8.2.1: - resolution: {integrity: sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==} + /open/8.3.0: + resolution: {integrity: sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w==} engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 @@ -6178,6 +6184,10 @@ packages: resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=} dev: false + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false + /picomatch/2.3.0: resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} engines: {node: '>=8.6'} @@ -6220,13 +6230,6 @@ packages: find-up: 4.1.0 dev: false - /pkg-up/2.0.0: - resolution: {integrity: sha1-yBmscoBZpGHKscOImivjxJoATX8=} - engines: {node: '>=4'} - dependencies: - find-up: 2.1.0 - dev: false - /pluralize/8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -6449,14 +6452,6 @@ packages: strip-json-comments: 2.0.1 dev: false - /read-pkg-up/3.0.0: - resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=} - engines: {node: '>=4'} - dependencies: - find-up: 2.1.0 - read-pkg: 3.0.0 - dev: false - /read-pkg-up/4.0.0: resolution: {integrity: sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==} engines: {node: '>=6'} @@ -6568,7 +6563,7 @@ packages: is-typedarray: 1.0.0 isstream: 0.1.2 json-stringify-safe: 5.0.1 - mime-types: 2.1.32 + mime-types: 2.1.33 oauth-sign: 0.9.0 performance-now: 2.1.0 qs: 6.5.2 @@ -6639,14 +6634,14 @@ packages: /resolve/1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.6.0 + is-core-module: 2.8.0 path-parse: 1.0.7 dev: false /resolve/1.20.0: resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} dependencies: - is-core-module: 2.6.0 + is-core-module: 2.8.0 path-parse: 1.0.7 dev: false @@ -6740,7 +6735,7 @@ packages: peerDependencies: rollup: '>=0.66.0 <3' dependencies: - '@babel/code-frame': 7.14.5 + '@babel/code-frame': 7.15.8 jest-worker: 24.9.0 rollup: 1.32.1 rollup-pluginutils: 2.8.2 @@ -6755,7 +6750,7 @@ packages: peerDependencies: rollup: '>=1.20.0' dependencies: - nanoid: 3.1.28 + nanoid: 3.1.30 open: 7.4.2 rollup: 1.32.1 source-map: 0.7.3 @@ -6773,7 +6768,7 @@ packages: hasBin: true dependencies: '@types/estree': 0.0.50 - '@types/node': 12.20.27 + '@types/node': 12.20.33 acorn: 7.4.1 dev: false @@ -6940,8 +6935,8 @@ packages: object-inspect: 1.11.0 dev: false - /signal-exit/3.0.4: - resolution: {integrity: sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==} + /signal-exit/3.0.5: + resolution: {integrity: sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==} dev: false /simple-concat/1.0.1: @@ -7043,7 +7038,7 @@ packages: resolution: {integrity: sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==} engines: {node: '>=10.0.0'} dependencies: - '@types/component-emitter': 1.2.10 + '@types/component-emitter': 1.2.11 component-emitter: 1.3.0 debug: 4.3.2 transitivePeerDependencies: @@ -7056,7 +7051,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.12 - '@types/node': 12.20.27 + '@types/node': 12.20.33 accepts: 1.3.7 base64id: 2.0.0 debug: 4.3.2 @@ -7120,7 +7115,7 @@ packages: mkdirp: 0.5.5 os-homedir: 1.0.2 rimraf: 2.7.1 - signal-exit: 3.0.4 + signal-exit: 3.0.5 which: 1.3.1 dev: false @@ -7234,13 +7229,13 @@ packages: strip-ansi: 6.0.1 dev: false - /string.prototype.padend/3.1.2: - resolution: {integrity: sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==} + /string.prototype.padend/3.1.3: + resolution: {integrity: sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.6 + es-abstract: 1.19.1 dev: false /string.prototype.trimend/1.0.4: @@ -7361,8 +7356,8 @@ packages: has-flag: 4.0.0 dev: false - /table/6.7.1: - resolution: {integrity: sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==} + /table/6.7.2: + resolution: {integrity: sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==} engines: {node: '>=10.0.0'} dependencies: ajv: 8.6.3 @@ -7499,9 +7494,8 @@ packages: hasBin: true dev: false - /ts-node/10.2.1_3c2c35653f239e2d026eed3c3359ac92: - resolution: {integrity: sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==} - engines: {node: '>=12.0.0'} + /ts-node/10.3.0_39f0c3da950e2c705fb827dca9bfd766: + resolution: {integrity: sha512-RYIy3i8IgpFH45AX4fQHExrT8BxDeKTdC83QFJkNzkvt8uFB6QJ8XMyhynYiKMLxt9a7yuXaDBZNOYS3XjDcYw==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -7514,12 +7508,12 @@ packages: '@swc/wasm': optional: true dependencies: - '@cspotcode/source-map-support': 0.6.1 + '@cspotcode/source-map-support': 0.7.0 '@tsconfig/node10': 1.0.8 '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 acorn: 8.5.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -7530,9 +7524,8 @@ packages: yn: 3.1.1 dev: false - /ts-node/10.2.1_bc8396cfce27f81f66a8434b4cc36a73: - resolution: {integrity: sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==} - engines: {node: '>=12.0.0'} + /ts-node/10.3.0_e07488ebb14f55fc4fcd73e335e5cdc6: + resolution: {integrity: sha512-RYIy3i8IgpFH45AX4fQHExrT8BxDeKTdC83QFJkNzkvt8uFB6QJ8XMyhynYiKMLxt9a7yuXaDBZNOYS3XjDcYw==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -7545,19 +7538,19 @@ packages: '@swc/wasm': optional: true dependencies: - '@cspotcode/source-map-support': 0.6.1 + '@cspotcode/source-map-support': 0.7.0 '@tsconfig/node10': 1.0.8 '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 acorn: 8.5.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.4.3 + typescript: 4.4.4 yn: 3.1.1 dev: false @@ -7641,7 +7634,7 @@ packages: engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 - mime-types: 2.1.32 + mime-types: 2.1.33 dev: false /typedoc-default-themes/0.6.3: @@ -7690,8 +7683,8 @@ packages: hasBin: true dev: false - /typescript/4.4.3: - resolution: {integrity: sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==} + /typescript/4.4.4: + resolution: {integrity: sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==} engines: {node: '>=4.2.0'} hasBin: true dev: false @@ -7812,13 +7805,13 @@ packages: spdx-expression-parse: 3.0.1 dev: false - /validator/8.2.0: - resolution: {integrity: sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==} + /validator/13.6.0: + resolution: {integrity: sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==} engines: {node: '>= 0.10'} dev: false - /validator/9.4.1: - resolution: {integrity: sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA==} + /validator/8.2.0: + resolution: {integrity: sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==} engines: {node: '>= 0.10'} dev: false @@ -7891,7 +7884,7 @@ packages: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.18.6 + es-abstract: 1.19.1 foreach: 2.0.5 has-tostringtag: 1.0.0 is-typed-array: 1.1.8 @@ -7954,7 +7947,7 @@ packages: dependencies: graceful-fs: 4.2.8 imurmurhash: 0.1.4 - signal-exit: 3.0.4 + signal-exit: 3.0.5 dev: false /ws/6.2.2: @@ -8138,10 +8131,10 @@ packages: name: '@rush-temp/abort-controller' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 downlevel-dts: 0.4.0 @@ -8163,7 +8156,7 @@ packages: prettier: 1.19.1 rimraf: 3.0.2 rollup: 1.32.1 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -8183,10 +8176,10 @@ packages: dependencies: '@azure-rest/core-client-paging': 1.0.0-beta.1 '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 @@ -8230,7 +8223,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8238,7 +8231,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 csv-parse: 4.16.3 @@ -8283,10 +8276,10 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 @@ -8329,10 +8322,10 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -8362,7 +8355,7 @@ packages: source-map-support: 0.5.20 tslib: 2.3.1 typedoc: 0.15.2 - typescript: 4.4.3 + typescript: 4.4.4 transitivePeerDependencies: - bufferutil - debug @@ -8377,10 +8370,10 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -8408,7 +8401,7 @@ packages: rollup: 1.32.1 sinon: 9.2.4 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -8428,11 +8421,11 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -8461,7 +8454,7 @@ packages: rollup: 1.32.1 sinon: 9.2.4 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -8482,7 +8475,7 @@ packages: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 '@azure/keyvault-secrets': 4.3.0 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -8491,7 +8484,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -8521,7 +8514,7 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.32.1 rollup-plugin-terser: 5.3.1_rollup@1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -8541,7 +8534,7 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8564,7 +8557,7 @@ packages: name: '@rush-temp/arm-appservice' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8583,7 +8576,7 @@ packages: name: '@rush-temp/arm-authorization' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8601,7 +8594,7 @@ packages: name: '@rush-temp/arm-compute' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8620,7 +8613,7 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8693,7 +8686,7 @@ packages: name: '@rush-temp/arm-features' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8712,7 +8705,7 @@ packages: name: '@rush-temp/arm-keyvault' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8731,7 +8724,7 @@ packages: name: '@rush-temp/arm-links' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8750,7 +8743,7 @@ packages: name: '@rush-temp/arm-locks' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8769,7 +8762,7 @@ packages: name: '@rush-temp/arm-managedapplications' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8788,7 +8781,7 @@ packages: name: '@rush-temp/arm-network' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8806,7 +8799,7 @@ packages: name: '@rush-temp/arm-policy' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8825,7 +8818,7 @@ packages: name: '@rush-temp/arm-purview' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8869,7 +8862,7 @@ packages: dependencies: '@azure/arm-network': 30.0.0-beta.3 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8892,7 +8885,7 @@ packages: name: '@rush-temp/arm-resources-subscriptions' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8911,7 +8904,7 @@ packages: name: '@rush-temp/arm-resources' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8930,7 +8923,7 @@ packages: name: '@rush-temp/arm-servicebus' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8948,7 +8941,7 @@ packages: name: '@rush-temp/arm-sql' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8966,7 +8959,7 @@ packages: name: '@rush-temp/arm-storage' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -8985,7 +8978,7 @@ packages: name: '@rush-temp/arm-templatespecs' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9004,7 +8997,7 @@ packages: name: '@rush-temp/arm-webpubsub' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9025,11 +9018,11 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 buffer: 6.0.3 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -9039,7 +9032,7 @@ packages: eslint: 7.32.0 esm: 3.2.25 inherits: 2.0.4 - jsrsasign: 10.4.0 + jsrsasign: 10.4.1 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -9062,7 +9055,7 @@ packages: rollup: 1.32.1 safe-buffer: 5.2.1 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -9077,7 +9070,7 @@ packages: dev: false file:projects/communication-callingserver.tgz: - resolution: {integrity: sha512-Dinr1MGacv6KS2I6kcd0jioDK3mWQRWrs2/RWp74Je/6sDWebK3NsUeD+caSDUkHQiN5GuqPtyK3fTh+XNM/mQ==, tarball: file:projects/communication-callingserver.tgz} + resolution: {integrity: sha512-EA59ggsSSUHnDOJEEFNQNxnTD+VtHw2psLfTD9AxD54PQxxpmVbMHmf6EJg1slZPkVdn/MmZbl/yNzSaFv6Xig==, tarball: file:projects/communication-callingserver.tgz} name: '@rush-temp/communication-callingserver' version: 0.0.0 dependencies: @@ -9092,8 +9085,10 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 + '@types/node-fetch': 2.5.12 '@types/sinon': 9.0.11 + '@types/uuid': 8.3.1 assert: 1.5.0 chai: 4.3.4 cross-env: 7.0.3 @@ -9127,6 +9122,7 @@ packages: typedoc: 0.15.2 typescript: 4.2.4 util: 0.12.4 + uuid: 8.3.2 transitivePeerDependencies: - bufferutil - debug @@ -9142,7 +9138,7 @@ packages: '@azure/communication-identity': 1.0.0 '@azure/communication-signaling': 1.0.0-beta.11 '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9150,7 +9146,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/uuid': 8.3.1 assert: 1.5.0 @@ -9202,7 +9198,7 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9212,7 +9208,7 @@ packages: '@types/chai-as-promised': 7.1.4 '@types/jwt-decode': 2.2.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -9261,7 +9257,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9269,7 +9265,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -9320,7 +9316,7 @@ packages: '@azure/communication-identity': 1.0.0 '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9328,7 +9324,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -9378,7 +9374,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9386,7 +9382,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -9436,7 +9432,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9444,7 +9440,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -9492,10 +9488,10 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 @@ -9538,11 +9534,11 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 @@ -9584,7 +9580,7 @@ packages: name: '@rush-temp/core-amqp' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -9594,7 +9590,7 @@ packages: '@types/chai': 4.2.22 '@types/debug': 4.1.7 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/ws': 7.4.7 buffer: 6.0.3 @@ -9623,7 +9619,7 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.32.1 rollup-plugin-terser: 5.3.1_rollup@1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -9643,7 +9639,7 @@ packages: name: '@rush-temp/core-asynciterator-polyfill' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 eslint: 7.32.0 prettier: 1.19.1 typedoc: 0.15.2 @@ -9657,10 +9653,10 @@ packages: name: '@rush-temp/core-auth' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 downlevel-dts: 0.4.0 @@ -9685,10 +9681,10 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 @@ -9712,7 +9708,7 @@ packages: rimraf: 3.0.2 rollup: 1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -9731,10 +9727,10 @@ packages: name: '@rush-temp/core-client-lro' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 eslint: 7.32.0 @@ -9772,10 +9768,10 @@ packages: name: '@rush-temp/core-client-paging' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 eslint: 7.32.0 @@ -9813,10 +9809,10 @@ packages: name: '@rush-temp/core-client' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 eslint: 7.32.0 @@ -9854,13 +9850,13 @@ packages: name: '@rush-temp/core-crypto' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 @@ -9901,13 +9897,13 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/logger-js': 1.3.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@opentelemetry/api': 1.0.3 '@types/chai': 4.2.22 '@types/express': 4.17.13 '@types/glob': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/node-fetch': 2.5.12 '@types/sinon': 9.0.11 '@types/tough-cookie': 4.0.1 @@ -9945,7 +9941,7 @@ packages: shx: 0.3.3 sinon: 9.2.4 tough-cookie: 4.0.0 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 tunnel: 0.0.6 typedoc: 0.15.2 @@ -9969,10 +9965,10 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 eslint: 7.32.0 @@ -9994,7 +9990,7 @@ packages: prettier: 1.19.1 rimraf: 3.0.2 rollup: 1.32.1 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -10013,10 +10009,10 @@ packages: name: '@rush-temp/core-paging' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 downlevel-dts: 0.4.0 eslint: 7.32.0 @@ -10052,11 +10048,11 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@opentelemetry/api': 1.0.3 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/uuid': 8.3.1 chai: 4.3.4 @@ -10102,12 +10098,12 @@ packages: name: '@rush-temp/core-tracing' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@opentelemetry/api': 1.0.3 '@opentelemetry/tracing': 0.22.0_@opentelemetry+api@1.0.3 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 @@ -10146,10 +10142,10 @@ packages: name: '@rush-temp/core-util' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 @@ -10189,10 +10185,10 @@ packages: name: '@rush-temp/core-xml' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/xml2js': 0.4.9 chai: 4.3.4 @@ -10235,12 +10231,12 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 1.5.2_debug@4.3.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@types/debug': 4.1.7 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/priorityqueuejs': 1.0.1 '@types/semaphore': 1.1.1 '@types/sinon': 9.0.11 @@ -10254,7 +10250,7 @@ packages: esm: 3.2.25 execa: 5.1.1 fast-json-stable-stringify: 2.1.0 - jsbi: 3.2.4 + jsbi: 3.2.5 mocha: 7.2.0 mocha-junit-reporter: 1.23.3_mocha@7.2.0 node-abort-controller: 1.2.1 @@ -10268,7 +10264,7 @@ packages: sinon: 9.2.4 snap-shot-it: 7.9.6 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -10287,7 +10283,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -10296,7 +10292,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/uuid': 8.3.1 chai: 4.3.4 @@ -10327,7 +10323,7 @@ packages: rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -10356,7 +10352,7 @@ packages: '@types/fs-extra': 8.1.2 '@types/minimist': 1.2.2 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/prettier': 2.0.2 builtin-modules: 3.2.0 chai: 4.3.4 @@ -10372,10 +10368,10 @@ packages: rollup: 1.32.1 rollup-plugin-sourcemaps: 0.4.2_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 - ts-node: 10.2.1_bc8396cfce27f81f66a8434b4cc36a73 + ts-node: 10.3.0_e07488ebb14f55fc4fcd73e335e5cdc6 tslib: 2.3.1 typedoc: 0.15.2 - typescript: 4.4.3 + typescript: 4.4.4 yaml: 1.10.2 transitivePeerDependencies: - '@swc/core' @@ -10390,7 +10386,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -10398,7 +10394,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/uuid': 8.3.1 chai: 4.3.4 @@ -10453,7 +10449,7 @@ packages: '@types/glob': 7.1.4 '@types/json-schema': 7.0.9 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@typescript-eslint/eslint-plugin': 4.19.0_359354e87b989469ccdce12bde18eddc '@typescript-eslint/experimental-utils': 4.19.0_eslint@7.32.0+typescript@4.2.4 '@typescript-eslint/parser': 4.19.0_eslint@7.32.0+typescript@4.2.4 @@ -10461,7 +10457,7 @@ packages: chai: 4.3.4 eslint: 7.32.0 eslint-config-prettier: 7.2.0_eslint@7.32.0 - eslint-plugin-import: 2.24.2_eslint@7.32.0 + eslint-plugin-import: 2.25.2_eslint@7.32.0 eslint-plugin-no-only-tests: 2.6.0 eslint-plugin-promise: 4.3.1 eslint-plugin-tsdoc: 0.2.14 @@ -10486,7 +10482,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6_debug@4.3.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -10500,7 +10496,7 @@ packages: '@types/debug': 4.1.7 '@types/long': 4.0.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/uuid': 8.3.1 '@types/ws': 7.4.7 @@ -10544,7 +10540,7 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.32.1 rollup-plugin-terser: 5.3.1_rollup@1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -10565,7 +10561,7 @@ packages: dependencies: '@azure/event-hubs': 2.1.4 '@azure/ms-rest-nodeauth': 0.9.3_debug@4.3.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -10577,11 +10573,11 @@ packages: '@types/chai-string': 1.4.2 '@types/debug': 4.1.7 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 '@types/ws': 7.4.7 async-lock: 1.3.0 - azure-storage: 2.10.4 + azure-storage: 2.10.5 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 chai-string: 1.5.0_chai@4.3.4 @@ -10599,7 +10595,7 @@ packages: rimraf: 3.0.2 rollup: 1.32.1 rollup-plugin-sourcemaps: 0.4.2_rollup@1.32.1 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -10620,7 +10616,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/service-bus': 7.3.0 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -10629,7 +10625,7 @@ packages: '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/uuid': 8.3.1 chai: 4.3.4 @@ -10662,7 +10658,7 @@ packages: rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 sinon: 9.2.4 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -10681,7 +10677,7 @@ packages: name: '@rush-temp/eventhubs-checkpointstore-blob' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -10693,7 +10689,7 @@ packages: '@types/chai-string': 1.4.2 '@types/debug': 4.1.7 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 assert: 1.5.0 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -10727,7 +10723,7 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.32.1 rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -10745,7 +10741,7 @@ packages: name: '@rush-temp/eventhubs-checkpointstore-table' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -10757,7 +10753,7 @@ packages: '@types/chai-string': 1.4.2 '@types/debug': 4.1.7 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 assert: 1.5.0 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -10790,7 +10786,7 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.32.1 rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -10808,12 +10804,12 @@ packages: name: '@rush-temp/identity-cache-persistence' version: 0.0.0 dependencies: - '@azure/msal-node': 1.3.1 + '@azure/msal-node': 1.3.2 '@azure/msal-node-extensions': 1.0.0-alpha.9 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/jws': 3.2.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/qs': 6.9.7 '@types/sinon': 9.0.11 assert: 1.5.0 @@ -10845,10 +10841,10 @@ packages: name: '@rush-temp/identity-vscode' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/jws': 3.2.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/qs': 6.9.7 '@types/sinon': 9.0.11 '@types/uuid': 8.3.1 @@ -10881,14 +10877,14 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@azure/msal-browser': 2.17.0 + '@azure/msal-browser': 2.18.0 '@azure/msal-common': 4.5.1 - '@azure/msal-node': 1.3.1 - '@microsoft/api-extractor': 7.18.11 + '@azure/msal-node': 1.3.2 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/jws': 3.2.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/stoppable': 1.1.1 '@types/uuid': 8.3.1 @@ -10911,7 +10907,7 @@ packages: mocha: 7.2.0 mocha-junit-reporter: 1.23.3_mocha@7.2.0 nyc: 14.1.1 - open: 8.2.1 + open: 8.3.0 prettier: 1.19.1 puppeteer: 10.4.0 rimraf: 3.0.2 @@ -10937,8 +10933,8 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 - '@types/node': 12.20.27 + '@microsoft/api-extractor': 7.18.16 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 cross-env: 7.0.3 dotenv: 8.6.0 @@ -10964,7 +10960,7 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -10972,7 +10968,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 @@ -11001,7 +10997,7 @@ packages: rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -11022,7 +11018,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/keyvault-keys': 4.3.0 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -11031,7 +11027,7 @@ packages: '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/uuid': 8.3.1 assert: 1.5.0 @@ -11068,7 +11064,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/keyvault-secrets': 4.3.0 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -11076,7 +11072,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -11142,7 +11138,7 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -11151,7 +11147,7 @@ packages: '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -11204,7 +11200,7 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -11212,7 +11208,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -11262,10 +11258,10 @@ packages: name: '@rush-temp/logger' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 @@ -11291,7 +11287,7 @@ packages: rimraf: 3.0.2 rollup: 1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -11310,11 +11306,11 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 @@ -11358,11 +11354,11 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -11405,7 +11401,7 @@ packages: name: '@rush-temp/mock-hub' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 @@ -11422,7 +11418,7 @@ packages: name: '@rush-temp/monitor-opentelemetry-exporter' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@opentelemetry/api': 1.0.3 '@opentelemetry/core': 0.22.0_@opentelemetry+api@1.0.3 '@opentelemetry/instrumentation': 0.22.0_@opentelemetry+api@1.0.3 @@ -11432,7 +11428,7 @@ packages: '@opentelemetry/semantic-conventions': 0.24.0 '@opentelemetry/tracing': 0.22.0_@opentelemetry+api@1.0.3 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 eslint-plugin-node: 11.1.0_eslint@7.32.0 @@ -11444,7 +11440,7 @@ packages: rimraf: 3.0.2 rollup: 1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -11461,14 +11457,14 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/monitor-opentelemetry-exporter': 1.0.0-beta.4 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@opentelemetry/api': 1.0.3 '@opentelemetry/node': 0.22.0_@opentelemetry+api@1.0.3 '@opentelemetry/tracing': 0.22.0_@opentelemetry+api@1.0.3 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 @@ -11514,12 +11510,12 @@ packages: dependencies: '@azure/ai-form-recognizer': 3.1.0-beta.3 '@azure/identity': 2.0.0-beta.5 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 transitivePeerDependencies: @@ -11535,12 +11531,12 @@ packages: version: 0.0.0 dependencies: '@azure/ai-metrics-advisor': 1.0.0-beta.3 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 transitivePeerDependencies: @@ -11556,12 +11552,12 @@ packages: dependencies: '@azure/ai-text-analytics': 5.1.0 '@azure/identity': 2.0.0-beta.6 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 transitivePeerDependencies: @@ -11576,13 +11572,13 @@ packages: name: '@rush-temp/perf-app-configuration' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11598,7 +11594,7 @@ packages: version: 0.0.0 dependencies: '@azure/container-registry': 1.0.0-beta.4 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 @@ -11615,13 +11611,13 @@ packages: name: '@rush-temp/perf-core-rest-pipeline' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 transitivePeerDependencies: @@ -11635,13 +11631,13 @@ packages: name: '@rush-temp/perf-data-tables' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11656,14 +11652,14 @@ packages: name: '@rush-temp/perf-event-hubs' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 moment: 2.29.1 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11678,12 +11674,12 @@ packages: name: '@rush-temp/perf-eventgrid' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 transitivePeerDependencies: @@ -11697,13 +11693,13 @@ packages: name: '@rush-temp/perf-identity' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 transitivePeerDependencies: @@ -11719,13 +11715,13 @@ packages: dependencies: '@azure/identity': 2.0.0-beta.5 '@azure/keyvault-certificates': 4.3.0 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11743,13 +11739,13 @@ packages: dependencies: '@azure/identity': 2.0.0-beta.6 '@azure/keyvault-keys': 4.3.0 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11766,14 +11762,13 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 2.0.0-beta.5 - '@azure/keyvault-secrets': 4.3.0 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11789,12 +11784,12 @@ packages: name: '@rush-temp/perf-monitor-query' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 transitivePeerDependencies: @@ -11809,12 +11804,12 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 2.0.0-beta.5 - '@types/node': 12.20.27 + '@types/node': 12.20.33 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 transitivePeerDependencies: @@ -11830,13 +11825,13 @@ packages: version: 0.0.0 dependencies: '@azure/service-bus': 7.3.0 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11851,7 +11846,7 @@ packages: name: '@rush-temp/perf-storage-blob' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/node-fetch': 2.5.12 '@types/uuid': 8.3.1 dotenv: 8.6.0 @@ -11859,7 +11854,7 @@ packages: node-fetch: 2.6.5 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11874,13 +11869,13 @@ packages: name: '@rush-temp/perf-storage-file-datalake' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11895,13 +11890,13 @@ packages: name: '@rush-temp/perf-storage-file-share' version: 0.0.0 dependencies: - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 dotenv: 8.6.0 eslint: 7.32.0 prettier: 1.19.1 rimraf: 3.0.2 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 uuid: 8.3.2 @@ -11918,10 +11913,10 @@ packages: dependencies: '@azure-rest/core-client-paging': 1.0.0-beta.1 '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 @@ -11964,10 +11959,10 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 @@ -12010,10 +12005,10 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 @@ -12056,10 +12051,10 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 @@ -12103,7 +12098,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -12111,7 +12106,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 @@ -12160,14 +12155,14 @@ packages: version: 0.0.0 dependencies: '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 avsc: 5.7.3 buffer: 6.0.3 chai: 4.3.4 @@ -12214,11 +12209,11 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 @@ -12260,7 +12255,7 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -12268,7 +12263,7 @@ packages: '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 @@ -12300,7 +12295,7 @@ packages: rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12321,7 +12316,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6_debug@4.3.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -12335,7 +12330,7 @@ packages: '@types/is-buffer': 2.0.0 '@types/long': 4.0.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 '@types/ws': 7.4.7 assert: 1.5.0 @@ -12381,7 +12376,7 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.32.1 rollup-plugin-terser: 5.3.1_rollup@1.32.1 sinon: 9.2.4 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12400,13 +12395,13 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 cross-env: 7.0.3 @@ -12443,7 +12438,7 @@ packages: rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 sinon: 9.2.4 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12464,14 +12459,14 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/node-fetch': 2.5.12 assert: 1.5.0 cross-env: 7.0.3 @@ -12508,7 +12503,7 @@ packages: rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12529,14 +12524,14 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 assert: 1.5.0 cross-env: 7.0.3 dotenv: 8.6.0 @@ -12572,7 +12567,7 @@ packages: rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12592,13 +12587,13 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 assert: 1.5.0 cross-env: 7.0.3 dotenv: 8.6.0 @@ -12633,7 +12628,7 @@ packages: rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12652,13 +12647,13 @@ packages: name: '@rush-temp/storage-internal-avro' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 assert: 1.5.0 dotenv: 8.6.0 downlevel-dts: 0.4.0 @@ -12691,7 +12686,7 @@ packages: rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typescript: 4.2.4 util: 0.12.4 @@ -12711,13 +12706,13 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 assert: 1.5.0 cross-env: 7.0.3 dotenv: 8.6.0 @@ -12751,7 +12746,7 @@ packages: rollup-plugin-terser: 5.3.1_rollup@1.32.1 rollup-plugin-visualizer: 4.2.2_rollup@1.32.1 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12772,11 +12767,11 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -12805,7 +12800,7 @@ packages: rollup: 1.32.1 sinon: 9.2.4 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12826,11 +12821,11 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -12859,7 +12854,7 @@ packages: rollup: 1.32.1 sinon: 9.2.4 source-map-support: 0.5.20 - ts-node: 10.2.1_3c2c35653f239e2d026eed3c3359ac92 + ts-node: 10.3.0_39f0c3da950e2c705fb827dca9bfd766 tslib: 2.3.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -12880,7 +12875,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 @@ -12926,7 +12921,7 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 eslint: 7.32.0 rimraf: 3.0.2 @@ -12948,7 +12943,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.6 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 @@ -12995,11 +12990,11 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 2.0.0-beta.5 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 @@ -13055,7 +13050,7 @@ packages: '@types/mock-fs': 4.10.0 '@types/mock-require': 2.0.0 '@types/nise': 1.4.0 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 concurrently: 6.3.0 cross-env: 7.0.3 @@ -13116,7 +13111,7 @@ packages: '@types/mock-fs': 4.10.0 '@types/mock-require': 2.0.0 '@types/nise': 1.4.0 - '@types/node': 12.20.27 + '@types/node': 12.20.33 chai: 4.3.4 dotenv: 8.6.0 eslint: 7.32.0 @@ -13166,7 +13161,7 @@ packages: version: 0.0.0 dependencies: '@types/minimist': 1.2.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/node-fetch': 2.5.12 eslint: 7.32.0 karma: 6.3.4 @@ -13192,11 +13187,11 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@opentelemetry/api': 1.0.3 '@types/chai': 4.2.22 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 @@ -13235,7 +13230,7 @@ packages: '@types/mock-fs': 4.10.0 '@types/mock-require': 2.0.0 '@types/nise': 1.4.0 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/uuid': 8.3.1 chai: 4.3.4 dotenv: 8.6.0 @@ -13282,12 +13277,12 @@ packages: version: 0.0.0 dependencies: '@azure/core-tracing': 1.0.0-preview.13 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@types/chai': 4.2.22 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 - azure-iothub: 1.14.4 + '@types/node': 12.20.33 + azure-iothub: 1.14.5 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 @@ -13328,7 +13323,7 @@ packages: name: '@rush-temp/web-pubsub-express' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -13339,7 +13334,7 @@ packages: '@types/express-serve-static-core': 4.17.24 '@types/jsonwebtoken': 8.5.5 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 assert: 1.5.0 chai: 4.3.4 @@ -13391,7 +13386,7 @@ packages: dependencies: '@azure/core-tracing': 1.0.0-preview.13 '@azure/identity': 1.5.2 - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.18.16 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -13400,7 +13395,7 @@ packages: '@types/chai': 4.2.22 '@types/jsonwebtoken': 8.5.5 '@types/mocha': 7.0.2 - '@types/node': 12.20.27 + '@types/node': 12.20.33 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 diff --git a/sdk/communication/communication-callingserver/.nycrc b/sdk/communication/communication-callingserver/.nycrc index 29174b423579..5842dfe9ce89 100644 --- a/sdk/communication/communication-callingserver/.nycrc +++ b/sdk/communication/communication-callingserver/.nycrc @@ -1,6 +1,10 @@ { "include": ["dist-esm/src/**/*.js"], - "exclude": ["**/*.d.ts", "dist-esm/src/generated/*"], + "exclude": [ + "**/*.d.ts", + "dist-esm/src/generated/*", + "dist-esm/src/RepeatableContentDownloadResponse.browser.js" + ], "reporter": ["text-summary", "html", "cobertura"], "exclude-after-remap": false, "sourceMap": true, diff --git a/sdk/communication/communication-callingserver/CHANGELOG.md b/sdk/communication/communication-callingserver/CHANGELOG.md new file mode 100644 index 000000000000..7edf92942d6e --- /dev/null +++ b/sdk/communication/communication-callingserver/CHANGELOG.md @@ -0,0 +1,9 @@ +# Release History +## 1.0.0-beta.1 (2021-12-15) + +The first preview of the Azure Communication CallingServer Client has the following features: + +- create/get/update/delete a call +- add participants +- start/stop/pause/resume a recording of the call +- download the recording content \ No newline at end of file diff --git a/sdk/communication/communication-callingserver/karma.conf.js b/sdk/communication/communication-callingserver/karma.conf.js new file mode 100644 index 000000000000..4de7e2108e56 --- /dev/null +++ b/sdk/communication/communication-callingserver/karma.conf.js @@ -0,0 +1,137 @@ +// https://github.com/karma-runner/karma-chrome-launcher +process.env.CHROME_BIN = require("puppeteer").executablePath(); +require("dotenv").config(); +const { + jsonRecordingFilterFunction, + isPlaybackMode, + isSoftRecordMode, + isRecordMode +} = require("@azure-tools/test-recorder"); + +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: ["mocha"], + + plugins: [ + "karma-mocha", + "karma-mocha-reporter", + "karma-chrome-launcher", + "karma-edge-launcher", + "karma-firefox-launcher", + "karma-ie-launcher", + "karma-env-preprocessor", + "karma-coverage", + "karma-sourcemap-loader", + "karma-junit-reporter", + "karma-json-to-file-reporter", + "karma-json-preprocessor" + ], + + // list of files / patterns to load in the browser + files: ["dist-test/index.browser.js"].concat( + isPlaybackMode() || isSoftRecordMode() ? ["recordings/browsers/**/*.json"] : [] + ), + + // 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"], + "recordings/browsers/**/*.json": ["json"] + // 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.browser.js": ["coverage"] + }, + + // inject following environment values into browser testing with window.__env__ + // environment values MUST be exported or set with same console running "karma start" + // https://www.npmjs.com/package/karma-env-preprocessor + envPreprocessor: ["TEST_MODE", "COMMUNICATION_LIVETEST_DYNAMIC_CONNECTION_STRING", "BASE_URL"], + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ["mocha", "coverage", "junit", "json-to-file"], + + 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 + }, + + jsonToFileReporter: { + filter: jsonRecordingFilterFunction, + outputPath: "." + }, + + // 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, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + // 'ChromeHeadless', 'Chrome', 'Firefox', 'Edge', 'IE' + browsers: ["HeadlessChrome"], + + customLaunchers: { + HeadlessChrome: { + base: "ChromeHeadless", + flags: ["--no-sandbox", "--disable-web-security"] + } + }, + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: true, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: 1, + + browserNoActivityTimeout: 600000, + browserDisconnectTimeout: 10000, + browserDisconnectTolerance: 3, + browserConsoleLogOptions: { + terminal: !isRecordMode() + }, + + client: { + mocha: { + // change Karma's debug.html to the mocha web reporter + reporter: "html", + timeout: "600000" + } + } + }); +}; diff --git a/sdk/communication/communication-callingserver/package.json b/sdk/communication/communication-callingserver/package.json index 361d47edcd92..5f513a058852 100644 --- a/sdk/communication/communication-callingserver/package.json +++ b/sdk/communication/communication-callingserver/package.json @@ -7,7 +7,9 @@ "module": "dist-esm/src/index.js", "browser": { "stream": "./node_modules/stream-browserify/index.js", - "./dist-esm/src/credentials/cryptoUtils.js": "./dist-esm/src/credentials/cryptoUtils.browser.js" + "./dist-esm/src/credentials/cryptoUtils.js": "./dist-esm/src/credentials/cryptoUtils.browser.js", + "./dist-esm/src/RepeatableContentDownloadResponse.js": "./dist-esm/src/RepeatableContentDownloadResponse.browser.js", + "./dist-esm/test/public/utils/index.js": "./dist-esm/test/public/utils/index.browser.js" }, "types": "types/communication-callingserver.d.ts", "scripts": { @@ -72,7 +74,8 @@ "@azure/core-tracing": "1.0.0-preview.13", "@azure/logger": "^1.0.0", "events": "^3.0.0", - "tslib": "^2.2.0" + "tslib": "^2.2.0", + "uuid": "^8.3.0" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", @@ -90,7 +93,9 @@ "@types/chai": "^4.1.6", "@types/mocha": "^7.0.2", "@types/node": "^12.0.0", + "@types/node-fetch": "^2.5.0", "@types/sinon": "^9.0.4", + "@types/uuid": "^8.0.0", "assert": "^1.4.1", "chai": "^4.2.0", "cross-env": "^7.0.2", @@ -121,7 +126,8 @@ "sinon": "^9.0.2", "typescript": "~4.2.0", "util": "^0.12.1", - "typedoc": "0.15.2" + "typedoc": "0.15.2", + "tslib": "^2.2.0" }, "//metadata": { "constantPaths": [ diff --git a/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_download.json b/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_download.json new file mode 100644 index 000000000000..ffd25ce5eadf --- /dev/null +++ b/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_download.json @@ -0,0 +1,26 @@ +{ + "recordings": [ + { + "method": "GET", + "url": "https://endpoint/v1/objects/0-eus-d15-af5689148b0afa252a57a0121b744dcd/content/acsmetadata", + "query": {}, + "requestBody": null, + "status": 200, + "response": "{\r\n \"chunkDocumentId\": \"0-eus-d15-af5689148b0afa252a57a0121b744dcd\"\r\n}", + "responseHeaders": { + "cache-control": "no-cache, max-age=0, s-maxage=0, private", + "content-length": "65", + "content-range": "bytes 0-64/65", + "content-type": "application/octet-stream", + "date": "Thu, 14 Oct 2021 23:40:58 GMT", + "server": "Microsoft-HTTPAPI/2.0", + "strict-transport-security": "max-age=31536000; includeSubDomains" + } + } + ], + "uniqueTestInfo": { + "uniqueName": {}, + "newDate": {} + }, + "hash": "72a047668641841240c24ee9c374c387" +} \ No newline at end of file diff --git a/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_download_with_redirection.json b/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_download_with_redirection.json new file mode 100644 index 000000000000..6a36e66404c0 --- /dev/null +++ b/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_download_with_redirection.json @@ -0,0 +1,26 @@ +{ + "recordings": [ + { + "method": "GET", + "url": "https://endpoint/v1/objects/0-sa-d4-a29f0c0212c0a2a634ab078245184de8/content/acsmetadata", + "query": {}, + "requestBody": null, + "status": 200, + "response": "{\r\n \"chunkDocumentId\": \"0-sa-d4-a29f0c0212c0a2a634ab078245184de8\"\r\n}", + "responseHeaders": { + "cache-control": "no-cache, max-age=0, s-maxage=0, private", + "content-length": "62", + "content-range": "bytes 0-61/62", + "content-type": "application/octet-stream", + "date": "Thu, 14 Oct 2021 23:48:30 GMT", + "server": "Microsoft-HTTPAPI/2.0", + "strict-transport-security": "max-age=31536000; includeSubDomains" + } + } + ], + "uniqueTestInfo": { + "uniqueName": {}, + "newDate": {} + }, + "hash": "7086d64cd74997887e2fe4e73ad0a5f0" +} \ No newline at end of file diff --git a/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_unauthorized_download.json b/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_unauthorized_download.json new file mode 100644 index 000000000000..813b13a21461 --- /dev/null +++ b/sdk/communication/communication-callingserver/recordings/browsers/download_content/recording_unauthorized_download.json @@ -0,0 +1,23 @@ +{ + "recordings": [ + { + "method": "GET", + "url": "https://endpoint/v1/objects/0-eus-d15-af5689148b0afa252a57a0121b744dcd/content/acsmetadata", + "query": {}, + "requestBody": null, + "status": 401, + "response": "", + "responseHeaders": { + "content-length": "0", + "date": "Thu, 14 Oct 2021 23:05:06 GMT", + "server": "Microsoft-HTTPAPI/2.0", + "strict-transport-security": "max-age=31536000; includeSubDomains" + } + } + ], + "uniqueTestInfo": { + "uniqueName": {}, + "newDate": {} + }, + "hash": "7711f7a1c25e2565db804c3a1cc1b04a" +} \ No newline at end of file diff --git a/sdk/communication/communication-callingserver/recordings/browsers/server_call_live_test_recording_operations/recording_run_all_client_recording_operations.json b/sdk/communication/communication-callingserver/recordings/browsers/server_call_live_test_recording_operations/recording_run_all_client_recording_operations.json new file mode 100644 index 000000000000..32d3f9bcd4fd --- /dev/null +++ b/sdk/communication/communication-callingserver/recordings/browsers/server_call_live_test_recording_operations/recording_run_all_client_recording_operations.json @@ -0,0 +1,213 @@ +{ + "recordings": [ + { + "method": "POST", + "url": "https://endpoint/calling:join", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": "{\"callLocator\":{\"groupCallId\":\"31fccfc0-d804-5e92-9d9e-900b7b3eb6cc\",\"kind\":\"groupCallLocator\"},\"source\":{\"communicationUser\":{\"id\":\"8:acs:016a7064-0581-40b9-be73-6dde64d69d72_6f8c191d-f701-58b7-a744-35bac2a8f074\"}},\"callbackUri\":\"https://bot.contoso.io/callback\",\"requestedMediaTypes\":[\"audio\"],\"requestedCallEvents\":[\"participantsUpdated\"]}", + "status": 202, + "response": "{\"callConnectionId\":\"54201300-becd-49f8-b6dd-942ea7b319eb\"}", + "responseHeaders": { + "content-length": "59", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 14 Oct 2021 22:52:45 GMT", + "x-azure-ref": "0vrRoYQAAAAB+nM0Yry62TogVtyu0dRI7UERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "f5882099-b8fc-401a-8d10-469c50e9f49f", + "x-ms-client-request-id": "7c1ca6c6-96ef-44dc-9685-a320e6aea02d" + } + }, + { + "method": "POST", + "url": "https://endpoint/calling:join", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": "{\"callLocator\":{\"groupCallId\":\"31fccfc0-d804-5e92-9d9e-900b7b3eb6cc\",\"kind\":\"groupCallLocator\"},\"source\":{\"communicationUser\":{\"id\":\"8:acs:016a7064-0581-40b9-be73-6dde64d69d72_ff23b678-5b97-564d-b6c4-6bb53068c498\"}},\"callbackUri\":\"https://bot.contoso.io/callback\",\"requestedMediaTypes\":[\"audio\"],\"requestedCallEvents\":[\"participantsUpdated\"]}", + "status": 202, + "response": "{\"callConnectionId\":\"54201300-10d4-4d80-ace5-302160121a9f\"}", + "responseHeaders": { + "content-length": "59", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 14 Oct 2021 22:52:46 GMT", + "x-azure-ref": "0vrRoYQAAAACoO3Qwu/UOT7ew3pALnRLcUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "fb2aaeae-ad3f-4f2f-9fa3-d6df441d8a80", + "x-ms-client-request-id": "beec234f-d2b7-4ef6-932f-9628525e7a76" + } + }, + { + "method": "POST", + "url": "https://endpoint/calling/recordings", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": "{\"callLocator\":{\"groupCallId\":\"31fccfc0-d804-5e92-9d9e-900b7b3eb6cc\",\"kind\":\"groupCallLocator\"},\"recordingStateCallbackUri\":\"https://bot.contoso.io/callback\"}", + "status": 200, + "response": "{\"recordingId\":\"eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiI1NDIwMTMwMC04ZGJhLTQyZjQtODY0ZS0yNDcwMzM3MjA0MWIiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI1MzY3NTY4Mi03ZThmLTRhOGYtYTcyMS1mMmM1NmI3YThhNzUifQ\"}", + "responseHeaders": { + "content-length": "180", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 14 Oct 2021 22:52:52 GMT", + "x-azure-ref": "0v7RoYQAAAACvqYRKhgdxS4FZ/zpXBDQNUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "54428484-4cf3-4754-93a2-795a5bcb079d", + "x-ms-client-request-id": "8a0181f3-b27c-45af-9d39-9c2b5f02fbf9" + } + }, + { + "method": "GET", + "url": "https://endpoint/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiI1NDIwMTMwMC04ZGJhLTQyZjQtODY0ZS0yNDcwMzM3MjA0MWIiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI1MzY3NTY4Mi03ZThmLTRhOGYtYTcyMS1mMmM1NmI3YThhNzUifQ", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": null, + "status": 200, + "response": "{\"recordingState\":\"active\"}", + "responseHeaders": { + "content-length": "27", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 14 Oct 2021 22:53:02 GMT", + "x-azure-ref": "0zrRoYQAAAAAVWNnymQ+rT6cN+7xexlruUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "13ad46ba-c78d-42db-a168-86d37dafc683", + "x-ms-client-request-id": "a4dd635b-ef92-4a91-8180-54e605bc4019" + } + }, + { + "method": "POST", + "url": "https://endpoint/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiI1NDIwMTMwMC04ZGJhLTQyZjQtODY0ZS0yNDcwMzM3MjA0MWIiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI1MzY3NTY4Mi03ZThmLTRhOGYtYTcyMS1mMmM1NmI3YThhNzUifQ/:pause", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": null, + "status": 200, + "response": "", + "responseHeaders": { + "content-length": "0", + "date": "Thu, 14 Oct 2021 22:53:03 GMT", + "x-azure-ref": "0zrRoYQAAAADHbsU6RVVvTZjkee+Z8MqCUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "cc3c0b14-9655-4482-b870-70e467e105dc", + "x-ms-client-request-id": "694a1772-3e47-4ab7-94c4-aca63c43a5da" + } + }, + { + "method": "GET", + "url": "https://endpoint/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiI1NDIwMTMwMC04ZGJhLTQyZjQtODY0ZS0yNDcwMzM3MjA0MWIiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI1MzY3NTY4Mi03ZThmLTRhOGYtYTcyMS1mMmM1NmI3YThhNzUifQ", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": null, + "status": 200, + "response": "{\"recordingState\":\"inactive\"}", + "responseHeaders": { + "content-length": "29", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 14 Oct 2021 22:53:13 GMT", + "x-azure-ref": "02bRoYQAAAABE337N9ystRrBNizegrYoRUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "26b7331b-f542-40da-bc25-8eff25c051c6", + "x-ms-client-request-id": "52f98b38-2c0e-44c7-91dd-cd36effa54d9" + } + }, + { + "method": "POST", + "url": "https://endpoint/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiI1NDIwMTMwMC04ZGJhLTQyZjQtODY0ZS0yNDcwMzM3MjA0MWIiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI1MzY3NTY4Mi03ZThmLTRhOGYtYTcyMS1mMmM1NmI3YThhNzUifQ/:resume", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": null, + "status": 200, + "response": "", + "responseHeaders": { + "content-length": "0", + "date": "Thu, 14 Oct 2021 22:53:13 GMT", + "x-azure-ref": "02bRoYQAAAAAUk4a3ykqZSIVDAnlwb1HEUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "dfd38085-5601-4931-9708-d52b03f38b4e", + "x-ms-client-request-id": "c6e2109e-21da-4bbc-8378-80bfa7ce7aa9" + } + }, + { + "method": "GET", + "url": "https://endpoint/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiI1NDIwMTMwMC04ZGJhLTQyZjQtODY0ZS0yNDcwMzM3MjA0MWIiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI1MzY3NTY4Mi03ZThmLTRhOGYtYTcyMS1mMmM1NmI3YThhNzUifQ", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": null, + "status": 200, + "response": "{\"recordingState\":\"active\"}", + "responseHeaders": { + "content-length": "27", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 14 Oct 2021 22:53:24 GMT", + "x-azure-ref": "05LRoYQAAAAB8FugTGD9MS4miKnkUviBzUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "3346f8e1-2b31-4ac6-b833-ff2b6e237fe9", + "x-ms-client-request-id": "55d7febe-e6dc-43bc-9a64-62dbbd3978af" + } + }, + { + "method": "DELETE", + "url": "https://endpoint/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiI1NDIwMTMwMC04ZGJhLTQyZjQtODY0ZS0yNDcwMzM3MjA0MWIiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI1MzY3NTY4Mi03ZThmLTRhOGYtYTcyMS1mMmM1NmI3YThhNzUifQ", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": null, + "status": 200, + "response": "", + "responseHeaders": { + "content-length": "0", + "date": "Thu, 14 Oct 2021 22:53:24 GMT", + "x-azure-ref": "05LRoYQAAAAAwjWwtBegxRqPstLattVjuUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "55bcccd0-e8be-42b4-ad0a-f83636820945", + "x-ms-client-request-id": "28b2f5f3-dd26-499b-9acb-3511714c3e57" + } + }, + { + "method": "POST", + "url": "https://endpoint/calling/callConnections/54201300-becd-49f8-b6dd-942ea7b319eb/:hangup", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": null, + "status": 202, + "response": "", + "responseHeaders": { + "content-length": "0", + "date": "Thu, 14 Oct 2021 22:53:24 GMT", + "x-azure-ref": "05LRoYQAAAADT7mqOMIo2TLK0u0QlVLtDUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "246da490-499a-49ec-ba31-701487ce6519", + "x-ms-client-request-id": "5805b724-3059-4972-a851-b31f11285abc" + } + }, + { + "method": "POST", + "url": "https://endpoint/calling/callConnections/54201300-10d4-4d80-ace5-302160121a9f/:hangup", + "query": { + "api-version": "2021-11-15-preview" + }, + "requestBody": null, + "status": 202, + "response": "", + "responseHeaders": { + "content-length": "0", + "date": "Thu, 14 Oct 2021 22:53:24 GMT", + "x-azure-ref": "05LRoYQAAAABLfxDi9THgR7C30LzQp1JmUERYMzFFREdFMDIxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-cache": "CONFIG_NOCACHE", + "x-microsoft-skype-chain-id": "736a77c3-29b4-441c-8216-eba7a62c82cc", + "x-ms-client-request-id": "21082aa1-5ab1-4d53-9a15-5feca5ff55a1" + } + } + ], + "uniqueTestInfo": { + "uniqueName": {}, + "newDate": {} + }, + "hash": "89971a0666fe081e988de4ce59cc6b62" +} \ No newline at end of file diff --git a/sdk/communication/communication-callingserver/recordings/node/download_content/recording_download.js b/sdk/communication/communication-callingserver/recordings/node/download_content/recording_download.js new file mode 100644 index 000000000000..ac69e364dacb --- /dev/null +++ b/sdk/communication/communication-callingserver/recordings/node/download_content/recording_download.js @@ -0,0 +1,24 @@ +let nock = require('nock'); + +module.exports.hash = "64c7ead96415eeaf2caea2f422e13ea4"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://endpoint', {"encodedQueryParams":true}) + .get('/v1/objects/0-eus-d15-af5689148b0afa252a57a0121b744dcd/content/acsmetadata') + .reply(200, {"chunkDocumentId":"0-eus-d15-af5689148b0afa252a57a0121b744dcd"}, [ + 'Cache-Control', + 'no-cache, max-age=0, s-maxage=0, private', + 'Content-Length', + '64', + 'Content-Type', + 'application/octet-stream', + 'Content-Range', + 'bytes 0-63/64', + 'Server', + 'Microsoft-HTTPAPI/2.0', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'Date', + 'Tue, 12 Oct 2021 00:00:36 GMT' +]); \ No newline at end of file diff --git a/sdk/communication/communication-callingserver/recordings/node/download_content/recording_download_with_redirection.js b/sdk/communication/communication-callingserver/recordings/node/download_content/recording_download_with_redirection.js new file mode 100644 index 000000000000..adc2ca04b05c --- /dev/null +++ b/sdk/communication/communication-callingserver/recordings/node/download_content/recording_download_with_redirection.js @@ -0,0 +1,39 @@ +let nock = require('nock'); + +module.exports.hash = "a65e4119b09572bfeb3690a48d180edd"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://endpoint', {"encodedQueryParams":true}) + .get('/v1/objects/0-sa-d4-a29f0c0212c0a2a634ab078245184de8/content/acsmetadata') + .reply(302, "", [ + 'Content-Length', + '0', + 'Location', + 'https://endpoint-sa/v1/objects/0-sa-d4-a29f0c0212c0a2a634ab078245184de8/content/acsmetadata', + 'Server', + 'Microsoft-HTTPAPI/2.0', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'Date', + 'Tue, 12 Oct 2021 17:25:35 GMT' +]); + +nock('https://endpoint-sa', {"encodedQueryParams":true}) + .get('/v1/objects/0-sa-d4-a29f0c0212c0a2a634ab078245184de8/content/acsmetadata') + .reply(200, {"chunkDocumentId":"0-sa-d4-a29f0c0212c0a2a634ab078245184de8"}, [ + 'Cache-Control', + 'no-cache, max-age=0, s-maxage=0, private', + 'Content-Length', + '62', + 'Content-Type', + 'application/octet-stream', + 'Content-Range', + 'bytes 0-61/62', + 'Server', + 'Microsoft-HTTPAPI/2.0', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'Date', + 'Tue, 12 Oct 2021 17:25:36 GMT' +]); diff --git a/sdk/communication/communication-callingserver/recordings/node/download_content/recording_unauthorized_download.js b/sdk/communication/communication-callingserver/recordings/node/download_content/recording_unauthorized_download.js new file mode 100644 index 000000000000..1075755740d8 --- /dev/null +++ b/sdk/communication/communication-callingserver/recordings/node/download_content/recording_unauthorized_download.js @@ -0,0 +1,18 @@ +let nock = require('nock'); + +module.exports.hash = "e7c5a3c4d603c821ad2bc3db15664eb9"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://endpoint', {"encodedQueryParams":true}) + .get('/v1/objects/0-eus-d15-af5689148b0afa252a57a0121b744dcd/content/acsmetadata') + .reply(401, "", [ + 'Content-Length', + '0', + 'Server', + 'Microsoft-HTTPAPI/2.0', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'Date', + 'Tue, 12 Oct 2021 16:42:40 GMT' +]); diff --git a/sdk/communication/communication-callingserver/recordings/node/server_call_live_test_recording_operations/recording_run_all_client_recording_operations.js b/sdk/communication/communication-callingserver/recordings/node/server_call_live_test_recording_operations/recording_run_all_client_recording_operations.js new file mode 100644 index 000000000000..aab516dfcd94 --- /dev/null +++ b/sdk/communication/communication-callingserver/recordings/node/server_call_live_test_recording_operations/recording_run_all_client_recording_operations.js @@ -0,0 +1,215 @@ +let nock = require('nock'); + +module.exports.hash = "11ac49147386d3fc94db14f3b0ab509f"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://endpoint', {"encodedQueryParams":true}) + .post('/calling:join', {"callLocator":{"groupCallId":"31fccfc0-d804-5e92-9d9e-900b7b3eb6cc","kind":"groupCallLocator"},"source":{"communicationUser":{"id":"8:acs:016a7064-0581-40b9-be73-6dde64d69d72_6f8c191d-f701-58b7-a744-35bac2a8f074"}},"callbackUri":"https://bot.contoso.io/callback","requestedMediaTypes":["audio"],"requestedCallEvents":["participantsUpdated"]}) + .query(true) + .reply(202, {"callConnectionId":"26201300-710b-458f-a68d-0c51579a3569"}, [ + 'Content-Length', + '59', + 'Content-Type', + 'application/json; charset=utf-8', + 'x-ms-client-request-id', + '1bad0e5b-7f92-429a-a87a-334b6778dff8', + 'X-Microsoft-Skype-Chain-ID', + '5efdba4c-ee46-467c-af57-5c3ce574cace', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0/GJoYQAAAAAsNlgem84xS6i37oTlOOYBUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:03:57 GMT' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .post('/calling:join', {"callLocator":{"groupCallId":"31fccfc0-d804-5e92-9d9e-900b7b3eb6cc","kind":"groupCallLocator"},"source":{"communicationUser":{"id":"8:acs:016a7064-0581-40b9-be73-6dde64d69d72_ff23b678-5b97-564d-b6c4-6bb53068c498"}},"callbackUri":"https://bot.contoso.io/callback","requestedMediaTypes":["audio"],"requestedCallEvents":["participantsUpdated"]}) + .query(true) + .reply(202, {"callConnectionId":"26201300-e14c-44a9-82bc-6d67a4aea1e9"}, [ + 'Content-Length', + '59', + 'Content-Type', + 'application/json; charset=utf-8', + 'x-ms-client-request-id', + '6d5e4fde-aec7-4d1a-a49c-96c912f8ae75', + 'X-Microsoft-Skype-Chain-ID', + '018eafe5-173e-4b6f-88ea-f1f3a4965422', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0/WJoYQAAAAB0m42Y30FiSIQpuPnMQhz9UERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:03:58 GMT' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .post('/calling/recordings', {"callLocator":{"groupCallId":"31fccfc0-d804-5e92-9d9e-900b7b3eb6cc", "kind":"groupCallLocator"}, "recordingStateCallbackUri":"https://bot.contoso.io/callback"}) + .query(true) + .reply(200, {"recordingId":"eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiIyNjIwMTMwMC01NWNhLTQ3NzAtOTc5Yy01MzIwNjA1MjkxZDkiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI3ZTg5ZDU0My0yNmY2LTQ4M2YtYTg0MS1kNDkxNTc2MzlkMDMifQ"}, [ + 'Content-Length', + '180', + 'Content-Type', + 'application/json; charset=utf-8', + 'x-ms-client-request-id', + 'fe698f3e-bb63-41a8-95c8-ac7eafcec5a4', + 'X-Microsoft-Skype-Chain-ID', + '1643a5d3-6e2f-453c-a036-61a8dc54859c', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0/2JoYQAAAADNJBP2ohVtR4/bZalZpx/jUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:05 GMT' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .get('/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiIyNjIwMTMwMC01NWNhLTQ3NzAtOTc5Yy01MzIwNjA1MjkxZDkiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI3ZTg5ZDU0My0yNmY2LTQ4M2YtYTg0MS1kNDkxNTc2MzlkMDMifQ') + .query(true) + .reply(200, {"recordingState":"active"}, [ + 'Content-Length', + '27', + 'Content-Type', + 'application/json; charset=utf-8', + 'X-Microsoft-Skype-Chain-ID', + '99cfa820-5464-41c2-b467-7c30e91d69e8', + 'x-ms-client-request-id', + 'de699442-f344-4bc5-9a69-86c4bf6396a9', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0D2NoYQAAAABRTdPtLg3dRo+JgcQuXW/4UERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:15 GMT' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .post('/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiIyNjIwMTMwMC01NWNhLTQ3NzAtOTc5Yy01MzIwNjA1MjkxZDkiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI3ZTg5ZDU0My0yNmY2LTQ4M2YtYTg0MS1kNDkxNTc2MzlkMDMifQ/:pause') + .query(true) + .reply(200, "", [ + 'X-Microsoft-Skype-Chain-ID', + 'd048eb5e-2abb-43c9-a497-b5ae2cd3fc2a', + 'x-ms-client-request-id', + 'd3c251ae-d721-4e26-9ef8-c7cfdad4a3fe', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0D2NoYQAAAACLHwqA2yAqQ7duS83V8gyRUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:15 GMT', + 'Content-Length', + '0' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .get('/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiIyNjIwMTMwMC01NWNhLTQ3NzAtOTc5Yy01MzIwNjA1MjkxZDkiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI3ZTg5ZDU0My0yNmY2LTQ4M2YtYTg0MS1kNDkxNTc2MzlkMDMifQ') + .query(true) + .reply(200, {"recordingState":"inactive"}, [ + 'Content-Length', + '29', + 'Content-Type', + 'application/json; charset=utf-8', + 'X-Microsoft-Skype-Chain-ID', + '20cb67df-cd94-4469-80bf-c239e2ba17db', + 'x-ms-client-request-id', + 'f932e6bb-91e9-4fef-93ff-b756988e1bd9', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0GmNoYQAAAABZ/XDy+Cf+SI5yrGe6IjZrUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:26 GMT' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .post('/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiIyNjIwMTMwMC01NWNhLTQ3NzAtOTc5Yy01MzIwNjA1MjkxZDkiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI3ZTg5ZDU0My0yNmY2LTQ4M2YtYTg0MS1kNDkxNTc2MzlkMDMifQ/:resume') + .query(true) + .reply(200, "", [ + 'X-Microsoft-Skype-Chain-ID', + '46cd1a18-9522-4282-a6d5-3b4b9e0b574b', + 'x-ms-client-request-id', + '272b295f-88c9-4873-bcf2-ddac8ca2b7f6', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0GmNoYQAAAAAjgPhFdohSRrUMmbg2wrCKUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:26 GMT', + 'Content-Length', + '0' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .get('/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiIyNjIwMTMwMC01NWNhLTQ3NzAtOTc5Yy01MzIwNjA1MjkxZDkiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI3ZTg5ZDU0My0yNmY2LTQ4M2YtYTg0MS1kNDkxNTc2MzlkMDMifQ') + .query(true) + .reply(200, {"recordingState":"active"}, [ + 'Content-Length', + '27', + 'Content-Type', + 'application/json; charset=utf-8', + 'X-Microsoft-Skype-Chain-ID', + '6d6f2b48-6b69-4deb-8340-dcef71a2e4ad', + 'x-ms-client-request-id', + 'ab4d3cd4-7abc-4237-afe6-c84c7a3b98ab', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0JGNoYQAAAAD+unp91bRERrZEV1awtQSdUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:36 GMT' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .delete('/calling/recordings/eyJQbGF0Zm9ybUVuZHBvaW50SWQiOiIyNjIwMTMwMC01NWNhLTQ3NzAtOTc5Yy01MzIwNjA1MjkxZDkiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI3ZTg5ZDU0My0yNmY2LTQ4M2YtYTg0MS1kNDkxNTc2MzlkMDMifQ') + .query(true) + .reply(200, "", [ + 'X-Microsoft-Skype-Chain-ID', + '611596ac-653b-49f2-88ad-9f93bbfe7e15', + 'x-ms-client-request-id', + '2fced4f2-dfb1-4920-912c-00478f6c6de7', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0JGNoYQAAAACXrImDuFBQSbmmivta1uZsUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:36 GMT', + 'Content-Length', + '0' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .post('/calling/callConnections/26201300-710b-458f-a68d-0c51579a3569/:hangup') + .query(true) + .reply(202, "", [ + 'X-Microsoft-Skype-Chain-ID', + 'fad877f0-9ab2-43f5-9dc3-721f1dd0dcc9', + 'x-ms-client-request-id', + 'f2610778-c07a-4236-bedf-b365410796c5', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0JWNoYQAAAACETS64mYFHRJrgrbLnoI9SUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:36 GMT', + 'Content-Length', + '0' +]); + +nock('https://endpoint', {"encodedQueryParams":true}) + .post('/calling/callConnections/26201300-e14c-44a9-82bc-6d67a4aea1e9/:hangup') + .query(true) + .reply(202, "", [ + 'X-Microsoft-Skype-Chain-ID', + 'c08fad32-a2e0-460b-96fb-3057788d3c31', + 'x-ms-client-request-id', + 'b532beb4-0e38-4417-ab68-46bb8a54e199', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0JWNoYQAAAAAYeK8dhWeIQ4H9U5ujmj8BUERYMzFFREdFMDIwNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Thu, 14 Oct 2021 17:04:36 GMT', + 'Content-Length', + '0' +]); diff --git a/sdk/communication/communication-callingserver/review/communication-callingserver.api.md b/sdk/communication/communication-callingserver/review/communication-callingserver.api.md index 34fab29a97fe..9acecf5c3855 100644 --- a/sdk/communication/communication-callingserver/review/communication-callingserver.api.md +++ b/sdk/communication/communication-callingserver/review/communication-callingserver.api.md @@ -4,13 +4,17 @@ ```ts +import { AbortSignalLike } from '@azure/abort-controller'; import { CommunicationIdentifier } from '@azure/communication-common'; import * as coreHttp from '@azure/core-http'; +import { HttpResponse } from '@azure/core-http'; import { OperationOptions } from '@azure/core-http'; +import { OperationParameter } from '@azure/core-http'; import { PhoneNumberIdentifier } from '@azure/communication-common'; import { PipelineOptions } from '@azure/core-http'; import { RestResponse } from '@azure/core-http'; import { TokenCredential } from '@azure/core-auth'; +import { TransferProgressEvent } from '@azure/core-http'; // @public export type AddParticipantOptions = OperationOptions; @@ -80,14 +84,19 @@ export class CallingServerClient { addParticipant(callLocator: CallLocator, participant: CommunicationIdentifier, callbackUri: string, alternateCallerId?: string, operationContext?: string, options?: AddParticipantOptions): Promise; cancelMediaOperation(callLocator: CallLocator, mediaOperationId: string, options?: CancelMediaOperationOptions): Promise; cancelParticipantMediaOperation(callLocator: CallLocator, participant: CommunicationIdentifier, mediaOperationId: string, options?: CancelMediaOperationOptions): Promise; - createCallConnection(source: CommunicationIdentifier, targets: CommunicationIdentifier[], options: CreateCallOptions): Promise; + createCallConnection(source: CommunicationIdentifier, targets: CommunicationIdentifier[], options: CreateCallConnectionOptions): Promise; + download(uri: string, offset?: number, count?: number, options?: DownloadOptions): Promise; getCallConnection(callConnectionId: string): CallConnection; // Warning: (ae-forgotten-export) The symbol "CallRecordingProperties" needs to be exported by the entry point index.d.ts getRecordingProperties(recordingId: string, options?: GetRecordingPropertiesOptions): Promise; + // Warning: (ae-forgotten-export) The symbol "ContentDownloader" needs to be exported by the entry point index.d.ts + // + // (undocumented) + initializeContentDownloader(): ContentDownloader; joinCall(callLocator: CallLocator, source: CommunicationIdentifier, options: JoinCallOptions): Promise; pauseRecording(recordingId: string, options?: PauseRecordingOptions): Promise; playAudio(callLocator: CallLocator, audioFileUri: string, options: PlayAudioOptions): Promise; - playAudioToParticipant(callLocator: CallLocator, participant: CommunicationIdentifier, audioFileUri: string, options: PlayAudioOptions): Promise; + playAudioToParticipant(callLocator: CallLocator, participant: CommunicationIdentifier, audioFileUri: string, options: PlayAudioToParticipantOptions): Promise; removeParticipant(callLocator: CallLocator, participant: CommunicationIdentifier, options?: RemoveParticipantOptions): Promise; resumeRecording(recordingId: string, options?: ResumeRecordingOptions): Promise; // Warning: (ae-forgotten-export) The symbol "RecordingContentType" needs to be exported by the entry point index.d.ts @@ -132,7 +141,25 @@ export interface CommunicationUserIdentifierModel { } // @public -export interface CreateCallOptions extends OperationOptions { +export interface ContentDownloadHeaders { + contentLength?: number; + contentRange?: string; + contentType?: string; + date?: Date; + errorCode?: string; +} + +// @public +export type ContentDownloadResponse = ContentDownloadHeaders & { + blobBody?: Promise; + readableStreamBody?: NodeJS.ReadableStream; + _response: HttpResponse & { + parsedHeaders: ContentDownloadHeaders; + }; +}; + +// @public +export interface CreateCallConnectionOptions extends OperationOptions { alternateCallerId?: PhoneNumberIdentifier; callbackUri: string; requestedCallEvents: CallingEventSubscriptionType[]; @@ -140,12 +167,16 @@ export interface CreateCallOptions extends OperationOptions { subject?: string; } -// @public -export const enum EventSubscriptionType { - // (undocumented) - ParticipantsUpdated = "participantsUpdated", - // (undocumented) - ToneReceived = "toneReceived" +// @public (undocumented) +export interface DownloadContentOptions extends DownloadOptions { + range?: string; +} + +// @public (undocumented) +export interface DownloadOptions extends OperationOptions { + abortSignal?: AbortSignalLike; + maxRetryRequests?: number; + onProgress?: (progress: TransferProgressEvent) => void; } // @public @@ -284,6 +315,12 @@ export interface PlayAudioResultEvent { status: CallingOperationStatus; } +// @public (undocumented) +export type PlayAudioToParticipantOptions = PlayAudioOptions; + +// @public (undocumented) +export const range: OperationParameter; + // @public export type RemoveParticipantOptions = OperationOptions; diff --git a/sdk/communication/communication-callingserver/rollup.base.config.js b/sdk/communication/communication-callingserver/rollup.base.config.js index e320c930e6a2..394cd5415380 100644 --- a/sdk/communication/communication-callingserver/rollup.base.config.js +++ b/sdk/communication/communication-callingserver/rollup.base.config.js @@ -17,7 +17,7 @@ const input = "dist-esm/src/index.js"; const production = process.env.NODE_ENV === "production"; export function nodeConfig(test = false) { - const externalNodeBuiltins = ["events", "crypto"]; + const externalNodeBuiltins = ["events", "crypto", "stream"]; const baseConfig = { input: input, external: depNames.concat(externalNodeBuiltins), @@ -30,7 +30,8 @@ export function nodeConfig(test = false) { values: { // replace dynamic checks with if (true) since this is for node only. // Allows rollup's dead code elimination to be more aggressive. - "if (isNode)": "if (true)" + "if (isNode)": "if (true)", + "if (!isNode)": "if (false)" } }), nodeResolve({ preferBuiltins: true }), @@ -69,7 +70,7 @@ export function nodeConfig(test = false) { export function browserConfig(test = false) { const baseConfig = { input: input, - external: ["crypto", "fs-extra"], + external: ["crypto"], output: { file: "dist-browser/azure-communication-callingserver.js", format: "umd", @@ -86,26 +87,18 @@ export function browserConfig(test = false) { // replace dynamic checks with if (false) since this is for // browser only. Rollup's dead code elimination will remove // any code guarded by if (isNode) { ... } - "if (isNode)": "if (false)" + "if (isNode)": "if (false)", + "if (!isNode)": "if (true)" } }), - shim({ - constants: `export default {}`, - fs: `export default {}`, - os: `export default {}`, - dotenv: `export function config() { }`, - path: `export default {}` - }), nodeResolve({ mainFields: ["module", "browser"], preferBuiltins: false }), - json(), cjs({ namedExports: { chai: ["assert"], events: ["EventEmitter"], - "@azure/communication-signaling": ["CommunicationSignalingClient", "SignalingClient"], ...openTelemetryCommonJs() } }), diff --git a/sdk/communication/communication-callingserver/sample.env b/sdk/communication/communication-callingserver/sample.env new file mode 100644 index 000000000000..7a6eb9cadccc --- /dev/null +++ b/sdk/communication/communication-callingserver/sample.env @@ -0,0 +1,4 @@ +# Used in most samples. Retrieve these values from a Communication Services resource +# in the Azure Portal. +COMMUNICATION_CONNECTION_STRING="endpoint=https://.communication.azure.net/;accessKey=" +COMMUNICATION_ENDPOINT="https://.communication.azure.com" diff --git a/sdk/communication/communication-callingserver/src/ContentDownloader.ts b/sdk/communication/communication-callingserver/src/ContentDownloader.ts new file mode 100644 index 000000000000..23527da31125 --- /dev/null +++ b/sdk/communication/communication-callingserver/src/ContentDownloader.ts @@ -0,0 +1,118 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +/// + +import { DownloadContentOptions } from "./models"; +import * as Parameters from "./parameters"; +import * as Mappers from "./generated/src/models/mappers"; +import * as ExtraMappers from "./mappers"; +import { CallingServerApiClientContext } from "./generated/src/callingServerApiClientContext"; +import { URLBuilder } from "@azure/core-http"; +import { OperationQueryParameter } from "@azure/core-http"; +import { createSpan } from "./tracing"; +import { SpanStatusCode } from "@azure/core-tracing"; + +import { + operationOptionsToRequestOptionsBase, + OperationOptions, + OperationArguments, + Serializer, + OperationSpec +} from "@azure/core-http"; +import { ContentDownloadResponse } from "."; + +export class ContentDownloader { + private readonly client: CallingServerApiClientContext; + constructor(client: CallingServerApiClientContext) { + this.client = client; + } + + public async downloadContent( + contentUri: string, + options: DownloadContentOptions = {} + ): Promise { + const { span, updatedOptions } = createSpan( + "ContentDownloaderRestClient-downloadContent", + options + ); + + try { + return await this.download_content( + contentUri, + operationOptionsToRequestOptionsBase(updatedOptions) + ); + } catch (e) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: e.message + }); + throw e; + } finally { + span.end(); + } + } + + /** + * Download recording's content. + * @param contentUri - The content Uri. + * @param options - The options parameters. + */ + download_content( + contentUri: string, + options?: OperationOptions + ): Promise { + const operationArguments: OperationArguments = { + options: operationOptionsToRequestOptionsBase(options || {}) + }; + + const q = URLBuilder.parse(contentUri); + const formattedUrl = q.getPath()!.startsWith("/") ? q.getPath()!.substr(1) : q.getPath()!; + const stringToSign = this.client.endpoint + formattedUrl; + return this.client.sendOperationRequest( + operationArguments, + getDownloadContentOperationSpec(contentUri, stringToSign) + ) as Promise; + } +} + +// Operation Specifications +const serializer = new Serializer(Mappers, /* isXml */ false); + +function getDownloadContentOperationSpec(url: string, stringToSign: string): OperationSpec { + const stringToSignHeader: OperationQueryParameter = { + parameterPath: "UriToSignWith", + mapper: { + defaultValue: stringToSign, + isConstant: true, + serializedName: "UriToSignWith", + type: { + name: "String" + } + } + }; + + const downloadContentOperationSpec: OperationSpec = { + path: "", + baseUrl: url, + httpMethod: "GET", + responses: { + 200: { + bodyMapper: { + type: { name: "Stream" }, + serializedName: "parsedResponse" + }, + headersMapper: ExtraMappers.ContentDownloadHeaders + }, + default: { + bodyMapper: Mappers.CommunicationErrorResponse + } + }, + requestBody: undefined, + queryParameters: [], + urlParameters: [], + headerParameters: [stringToSignHeader, Parameters.range], + serializer + }; + + return downloadContentOperationSpec; +} diff --git a/sdk/communication/communication-callingserver/src/Range.ts b/sdk/communication/communication-callingserver/src/Range.ts new file mode 100644 index 000000000000..a1ed74b18f18 --- /dev/null +++ b/sdk/communication/communication-callingserver/src/Range.ts @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +// tslint:disable:max-line-length +/** + * Range for Download content Operations. + */ +export interface Range { + /** + * StartByte, larger than or equal 0. + */ + offset: number; + /** + * Optional. Count of bytes, larger than 0. + * If not provided, will return bytes from offset to the end. + */ + count?: number; +} + +/** + * Generate a range string. For example: + * + * "bytes=255-" or "bytes=0-511" + * + * @param iRange - + */ +export function rangeToString(iRange: Range): string { + if (iRange.offset < 0) { + throw new RangeError(`Range.offset cannot be smaller than 0.`); + } + if (iRange.count && iRange.count <= 0) { + throw new RangeError( + `Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.` + ); + } + return iRange.count + ? `bytes=${iRange.offset}-${iRange.offset + iRange.count - 1}` + : `bytes=${iRange.offset}-`; +} diff --git a/sdk/communication/communication-callingserver/src/RepeatableContentDownloadResponse.browser.ts b/sdk/communication/communication-callingserver/src/RepeatableContentDownloadResponse.browser.ts new file mode 100644 index 000000000000..dde0620450fc --- /dev/null +++ b/sdk/communication/communication-callingserver/src/RepeatableContentDownloadResponse.browser.ts @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +// This file is used as a shim of "RepeatableContentDownloadResponse" for some browser bundlers +// when trying to bundle "RepeatableContentDownloadResponse" +// "RepeatableContentDownloadResponse" class is only available in Node.js runtime +export const RepeatableContentDownloadResponse = 1; diff --git a/sdk/communication/communication-callingserver/src/RepeatableContentDownloadResponse.ts b/sdk/communication/communication-callingserver/src/RepeatableContentDownloadResponse.ts new file mode 100644 index 000000000000..4126fab0fb2b --- /dev/null +++ b/sdk/communication/communication-callingserver/src/RepeatableContentDownloadResponse.ts @@ -0,0 +1,131 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +import { HttpResponse, isNode } from "@azure/core-http"; +import { ContentDownloadHeaders, ContentDownloadResponse } from "."; +import { + ReadableStreamGetter, + RetriableReadableStream, + RetriableReadableStreamOptions +} from "./utils/RetriableReadableStream"; + +/** + * ONLY AVAILABLE IN NODE.JS RUNTIME. + * + * RepeatableContentDownloadResponse implements ContentDownloadResponse interface, and in Node.js runtime it will + * automatically retry when internal read stream unexpected ends. (This kind of unexpected ends cannot + * trigger retries defined in pipeline retry policy.) + * + * The {@link readableStreamBody} stream will retry underlayer, you can just use it as a normal Node.js + * Readable stream. + */ +export class RepeatableContentDownloadResponse implements ContentDownloadResponse { + /** + * The number of bytes present in the + * response body. + * + * @readonly + */ + public get contentLength(): number | undefined { + return this.originalResponse.contentLength; + } + + /** + * Indicates the range of bytes returned if + * the client requested a subset of the content by setting the Range request + * header. + * + * @readonly + */ + public get contentRange(): string | undefined { + return this.originalResponse.contentRange; + } + + /** + * The content type specified for the content. + * The default content type is 'application/octet-stream' + * + * @readonly + */ + public get contentType(): string | undefined { + return this.originalResponse.contentType; + } + + /** + * A UTC date/time value generated by the service that + * indicates the time at which the response was initiated. + * + * @readonly + */ + public get date(): Date | undefined { + return this.originalResponse.date; + } + + /** + * The error code. + * + * @readonly + */ + public get errorCode(): string | undefined { + return this.originalResponse.errorCode; + } + + /** + * The response body as a browser Blob. + * Always undefined in node.js. + * + * @readonly + */ + public get contentAsBlob(): Promise | undefined { + return this.originalResponse.blobBody; + } + + /** + * The response body as a node.js Readable stream. + * Always undefined in the browser. + * + * It will automatically retry when internal read stream unexpected ends. + * + * @readonly + */ + public get readableStreamBody(): NodeJS.ReadableStream | undefined { + return isNode ? this.blobDownloadStream : undefined; + } + + /** + * The HTTP response. + */ + public get _response(): HttpResponse & { + parsedHeaders: ContentDownloadHeaders; + } { + return this.originalResponse._response; + } + + private originalResponse: ContentDownloadResponse; + private blobDownloadStream?: RetriableReadableStream; + + /** + * Creates an instance of ContentDownloadResponse. + * + * @param originalResponse - + * @param getter - + * @param offset - + * @param count - + * @param options - + */ + public constructor( + originalResponse: ContentDownloadResponse, + getter: ReadableStreamGetter, + offset: number, + count: number, + options: RetriableReadableStreamOptions = {} + ) { + this.originalResponse = originalResponse; + this.blobDownloadStream = new RetriableReadableStream( + this.originalResponse.readableStreamBody!, + getter, + offset, + count, + options + ); + } +} diff --git a/sdk/communication/communication-callingserver/src/callConnection.ts b/sdk/communication/communication-callingserver/src/callConnection.ts index 39baf7a1a3a2..5922f2eec086 100644 --- a/sdk/communication/communication-callingserver/src/callConnection.ts +++ b/sdk/communication/communication-callingserver/src/callConnection.ts @@ -177,7 +177,7 @@ export class CallConnection { options: AddParticipantOptions = {} ): Promise { const { span, updatedOptions } = createSpan("CallConnectionRestClient-playAudio", options); - var alternate_caller_id = + const alternate_caller_id = typeof alternateCallerId === "undefined" ? alternateCallerId : serializeCommunicationIdentifier({ phoneNumber: alternateCallerId }).phoneNumber; diff --git a/sdk/communication/communication-callingserver/src/callLocatorModelSerializer.ts b/sdk/communication/communication-callingserver/src/callLocatorModelSerializer.ts index 3b52d8c9ffad..2c9be6c4e8fd 100644 --- a/sdk/communication/communication-callingserver/src/callLocatorModelSerializer.ts +++ b/sdk/communication/communication-callingserver/src/callLocatorModelSerializer.ts @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +import { GroupCallLocator, ServerCallLocator } from "."; +import { CallLocatorModel } from "./generated/src"; import { CallLocator, CallLocatorKind, getLocatorKind } from "./models"; /** @@ -70,13 +72,19 @@ const assertMaximumOneNestedModel = (locator: SerializedCallLocator): void => { * Translates a CallLocator to its serialized format for sending a request. * @param locator - The CallLocator to be serialized. */ -export const serializeCallLocator = (locator: CallLocator): SerializedCallLocator => { +export const serializeCallLocator = (locator: CallLocator): CallLocatorModel => { const locatorKind = getLocatorKind(locator); switch (locatorKind.kind) { case "groupCall": - return { groupCall: { groupCallId: locatorKind.groupCallId } }; + return { + groupCallId: (locator as GroupCallLocator).groupCallId, + kind: locatorKind.kind + "Locator" + }; case "serverCall": - return { serverCall: { serverCallId: locatorKind.serverCallId } }; + return { + serverCallId: (locator as ServerCallLocator).serverCallId, + kind: locatorKind.kind + "Locator" + }; default: throw new Error(`Can't serialize an calllocator with kind ${(locatorKind as any).kind}`); } diff --git a/sdk/communication/communication-callingserver/src/callingServerClient.ts b/sdk/communication/communication-callingserver/src/callingServerClient.ts index 95f5cdb200c8..9deceea57307 100644 --- a/sdk/communication/communication-callingserver/src/callingServerClient.ts +++ b/sdk/communication/communication-callingserver/src/callingServerClient.ts @@ -2,12 +2,14 @@ // Licensed under the MIT license. /// -import { CallConnection } from "."; +import { CallConnection, ContentDownloadResponse } from "."; import { - CreateCallOptions, + CreateCallConnectionOptions, + DownloadOptions, JoinCallOptions, CallLocator, PlayAudioOptions, + PlayAudioToParticipantOptions, AddParticipantOptions, RemoveParticipantOptions, CancelMediaOperationOptions, @@ -46,6 +48,7 @@ import { serializeCommunicationIdentifier } from "@azure/communication-common"; import { + isNode, PipelineOptions, InternalPipelineOptions, createPipelineFromOptions, @@ -54,11 +57,16 @@ import { } from "@azure/core-http"; import { SpanStatusCode } from "@azure/core-tracing"; import { CallingServerApiClient } from "./generated/src/callingServerApiClient"; +import { CallingServerApiClientContext } from "./generated/src/callingServerApiClientContext"; import { SDK_VERSION } from "./constants"; -import { createSpan } from "./tracing"; +import { convertTracingToRequestOptionsBase, createSpan } from "./tracing"; import { logger } from "./logger"; +import { ContentDownloader } from "./ContentDownloader"; +import { rangeToString } from "./Range"; +import { RepeatableContentDownloadResponse } from "./RepeatableContentDownloadResponse"; import { extractOperationOptions } from "./extractOperationOptions"; import { CallingServerUtils } from "./utils/utils"; +import { serializeCallLocator } from "./callLocatorModelSerializer"; /** * Client options used to configure CallingServer Client API requests. @@ -80,6 +88,7 @@ export class CallingServerClient { private readonly callingServerServiceClient: CallingServerApiClient; private readonly callConnectionRestClient: CallConnections; private readonly serverCallRestClient: ServerCalls; + private readonly downloadCallingServerApiClient: CallingServerApiClientContext; /** * Initializes a new instance of the CallingServerClient class. @@ -132,6 +141,7 @@ export class CallingServerClient { this.callingServerServiceClient = new CallingServerApiClient(url, pipeline); this.callConnectionRestClient = this.callingServerServiceClient.callConnections; this.serverCallRestClient = this.callingServerServiceClient.serverCalls; + this.downloadCallingServerApiClient = new CallingServerApiClientContext(url, pipeline); } /** @@ -142,6 +152,10 @@ export class CallingServerClient { return new CallConnection(callConnectionId, this.callConnectionRestClient); } + public initializeContentDownloader(): ContentDownloader { + return new ContentDownloader(this.downloadCallingServerApiClient); + } + /** * Create an outgoing call from source to target identities. * @param source - The source identity. @@ -151,7 +165,7 @@ export class CallingServerClient { public async createCallConnection( source: CommunicationIdentifier, targets: CommunicationIdentifier[], - options: CreateCallOptions + options: CreateCallConnectionOptions ): Promise { const { operationOptions, restOptions } = extractOperationOptions(options); const { span, updatedOptions } = createSpan( @@ -209,7 +223,7 @@ export class CallingServerClient { const { span, updatedOptions } = createSpan("ServerCallRestClient-JoinCall", operationOptions); const request: JoinCallRequest = { - callLocator: callLocator, + callLocator: serializeCallLocator(callLocator), source: serializeCommunicationIdentifier(source), callbackUri: restOptions.callbackUri, requestedMediaTypes: restOptions.requestedMediaTypes, @@ -311,7 +325,7 @@ export class CallingServerClient { callLocator: CallLocator, participant: CommunicationIdentifier, audioFileUri: string, - options: PlayAudioOptions + options: PlayAudioToParticipantOptions ): Promise { const { operationOptions, restOptions } = extractOperationOptions(options); const { span, updatedOptions } = createSpan("ServerCallRestClient-playAudio", operationOptions); @@ -362,7 +376,7 @@ export class CallingServerClient { options: AddParticipantOptions = {} ): Promise { const { span, updatedOptions } = createSpan("ServerCallRestClient-playAudio", options); - var alternate_caller_id = + const alternate_caller_id = typeof alternateCallerId === "undefined" ? alternateCallerId : serializeCommunicationIdentifier({ phoneNumber: alternateCallerId }).phoneNumber; @@ -511,6 +525,9 @@ export class CallingServerClient { * * @param callLocator - The callLocator contains server call id. * @param recordingStateCallbackUri - The call back uri for recording state. + * @param recordingContentType - Content type of call recording. + * @param recordingChannelType - Channel type of call recording. + * @param recordingFormatType - Format type of call recording. * @param options - Additional request options contains StartRecording api options. */ public async startRecording( @@ -527,8 +544,16 @@ export class CallingServerClient { throw new Error("callLocator is invalid."); } - var startCallRecordingWithCallLocatorRequest: StartCallRecordingWithCallLocatorRequest = { - callLocator: callLocator, + if ( + typeof recordingStateCallbackUri === "undefined" || + !recordingStateCallbackUri || + !CallingServerUtils.isValidUrl(recordingStateCallbackUri) + ) { + throw new Error("recordingStateCallbackUri is invalid."); + } + + const startCallRecordingWithCallLocatorRequest: StartCallRecordingWithCallLocatorRequest = { + callLocator: serializeCallLocator(callLocator), recordingStateCallbackUri: recordingStateCallbackUri, recordingContentType: recordingContentType, recordingChannelType: recordingChannelType, @@ -629,7 +654,6 @@ export class CallingServerClient { options: StopRecordingOptions = {} ): Promise { const { span, updatedOptions } = createSpan("ServerCallRestClient-StopRecording", options); - if (typeof recordingId === "undefined" || !recordingId || !recordingId.trim()) { throw new Error("recordingId is invalid."); } @@ -683,4 +707,132 @@ export class CallingServerClient { span.end(); } } + + /** + * Downloads the content pointed to the uri passed as a parameter. + * + * * In Node.js, data returns in a Readable stream readableStreamBody + * * In browsers, data returns in a promise blobBody + * + * @param uri - Endpoint where the content exists. + * @param offset - From which position of the blob to download, greater than or equal to 0. + * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined + * @param options - Optional options to Download operation. + * + * + * Example usage (Node.js): + * + * ```js + * // Download and convert a blob to a string + * const downloadResponse = await callingServerClient.download(); + * const downloaded = await streamToBuffer(downloadResponse.readableStreamBody); + * console.log("Downloaded content:", downloaded.toString()); + * + * async function streamToBuffer(readableStream) { + * return new Promise((resolve, reject) => { + * const chunks = []; + * readableStream.on("data", (data) => { + * chunks.push(data instanceof Buffer ? data : Buffer.from(data)); + * }); + * readableStream.on("end", () => { + * resolve(Buffer.concat(chunks)); + * }); + * readableStream.on("error", reject); + * }); + * } + * ``` + * + * Example usage (browser): + * + * ```js + * // Download and convert a content blob to a string + * const downloadResponse = await callingServerClient.download(); + * const downloaded = await blobToString(await downloadResponse.blobBody); + * console.log( + * "Downloaded blob content", + * downloaded + * ); + * + * async function blobToString(blob: Blob): Promise { + * const fileReader = new FileReader(); + * return new Promise((resolve, reject) => { + * fileReader.onloadend = (ev: any) => { + * resolve(ev.target!.result); + * }; + * fileReader.onerror = reject; + * fileReader.readAsText(blob); + * }); + * } + * ``` + */ + public async download( + uri: string, + offset: number = 0, + count?: number, + options: DownloadOptions = {} + ): Promise { + const { span, updatedOptions } = createSpan("ServerCallRestClient-download", options); + const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 3; + const contentDownloader = this.initializeContentDownloader(); + try { + const res = await contentDownloader.downloadContent(uri, { + abortSignal: options.abortSignal, + requestOptions: { + onDownloadProgress: isNode ? undefined : options.onProgress // for Node.js, progress is reported by RetriableReadableStream + }, + range: offset === 0 && !count ? undefined : rangeToString({ offset, count }), + ...convertTracingToRequestOptionsBase(updatedOptions) + }); + + // Return browser response immediately + if (!isNode) { + return res; + } + + // We support retrying when download stream unexpected ends in Node.js runtime + if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) { + options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS; + } + + if (res.contentLength === undefined) { + throw new RangeError(`File download response doesn't contain valid content length header`); + } + return new RepeatableContentDownloadResponse( + res, + async (start: number): Promise => { + // Debug purpose only + // console.log( + // `Read from internal stream, range: ${ + // updatedOptions.range + // }, options: ${JSON.stringify(updatedOptions)}` + // ); + + return ( + await contentDownloader.downloadContent(uri, { + abortSignal: options.abortSignal, + range: rangeToString({ + count: offset + res.contentLength! - start, + offset: start + }), + ...convertTracingToRequestOptionsBase(updatedOptions) + }) + ).readableStreamBody!; + }, + offset, + res.contentLength!, + { + maxRetryRequests: options.maxRetryRequests, + onProgress: options.onProgress + } + ); + } catch (e) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: e.message + }); + throw e; + } finally { + span.end(); + } + } } diff --git a/sdk/communication/communication-callingserver/src/index.ts b/sdk/communication/communication-callingserver/src/index.ts index 2cd7b9d7753b..8bb84511f531 100644 --- a/sdk/communication/communication-callingserver/src/index.ts +++ b/sdk/communication/communication-callingserver/src/index.ts @@ -1,5 +1,46 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +import { HttpResponse } from "@azure/core-http"; + export * from "./models"; +export * from "./parameters"; export * from "./callingServerClient"; export * from "./callConnection"; + +/** Defines headers for Content download operation. */ +export interface ContentDownloadHeaders { + /** The number of bytes present in the response body. */ + contentLength?: number; + /** The media type of the body of the response. For Download Blob this is 'application/octet-stream' */ + contentType?: string; + /** Indicates the range of bytes returned in the event that the client requested a subset of the blob by setting the 'Range' request header. */ + contentRange?: string; + /** UTC date/time value generated by the service that indicates the time at which the response was initiated */ + date?: Date; + /** Error Code */ + errorCode?: string; +} + +/** Contains response data for the download operation. */ +export type ContentDownloadResponse = ContentDownloadHeaders & { + /** + * BROWSER ONLY + * + * The response body as a browser Blob. + * Always `undefined` in node.js. + */ + blobBody?: Promise; + /** + * NODEJS ONLY + * + * The response body as a node.js Readable stream. + * Always `undefined` in the browser. + */ + readableStreamBody?: NodeJS.ReadableStream; + + /** The underlying HTTP response. */ + _response: HttpResponse & { + /** The parsed HTTP response headers. */ + parsedHeaders: ContentDownloadHeaders; + }; +}; diff --git a/sdk/communication/communication-callingserver/src/mappers.ts b/sdk/communication/communication-callingserver/src/mappers.ts new file mode 100644 index 000000000000..6ea03dcb7136 --- /dev/null +++ b/sdk/communication/communication-callingserver/src/mappers.ts @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { CompositeMapper } from "@azure/core-http"; + +export const ContentDownloadHeaders: CompositeMapper = { + serializedName: "Content_downloadHeaders", + type: { + name: "Composite", + className: "ContentDownloadHeaders", + modelProperties: { + contentLength: { + serializedName: "content-length", + xmlName: "content-length", + type: { + name: "Number" + } + }, + contentType: { + serializedName: "content-type", + xmlName: "content-type", + type: { + name: "String" + } + }, + contentRange: { + serializedName: "content-range", + xmlName: "content-range", + type: { + name: "String" + } + }, + date: { + serializedName: "date", + xmlName: "date", + type: { + name: "DateTimeRfc1123" + } + }, + errorCode: { + serializedName: "x-ms-error-code", + xmlName: "x-ms-error-code", + type: { + name: "String" + } + } + } + } +}; diff --git a/sdk/communication/communication-callingserver/src/models.ts b/sdk/communication/communication-callingserver/src/models.ts index 988b755a0cbc..e08338ebb4e0 100644 --- a/sdk/communication/communication-callingserver/src/models.ts +++ b/sdk/communication/communication-callingserver/src/models.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { OperationOptions } from "@azure/core-http"; +import { AbortSignalLike } from "@azure/abort-controller"; +import { OperationOptions, TransferProgressEvent } from "@azure/core-http"; import { PhoneNumberIdentifier } from "@azure/communication-common"; import { CallMediaType, CallingEventSubscriptionType } from "./generated/src/models"; @@ -27,7 +28,7 @@ export { /** * Options to create a call. */ -export interface CreateCallOptions extends OperationOptions { +export interface CreateCallConnectionOptions extends OperationOptions { /** The alternate identity of the source of the call if dialing out to a pstn number */ alternateCallerId?: PhoneNumberIdentifier; /** The subject. */ @@ -65,6 +66,8 @@ export interface PlayAudioOptions extends OperationOptions { callbackUri: string; } +export type PlayAudioToParticipantOptions = PlayAudioOptions; + /** * Options to add participant to the call. */ @@ -220,6 +223,37 @@ enum CallingServerEventType { TONE_RECEIVED_EVENT = "Microsoft.Communication.ToneReceived" } +export interface DownloadOptions extends OperationOptions { + /** + * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation. + * For example, use the @azure/abort-controller to create an `AbortSignal`. + */ + abortSignal?: AbortSignalLike; + /** + * Call back to receive events on the progress of download operation. + */ + onProgress?: (progress: TransferProgressEvent) => void; + + /** + * Optional. ONLY AVAILABLE IN NODE.JS. + * + * How many retries will perform when original body download stream unexpected ends. + * Above kind of ends will not trigger retry policy defined in a pipeline, + * because they doesn't emit network errors. + * + * With this option, every additional retry means an additional `FileClient.download()` request will be made + * from the broken point, until the requested range has been successfully downloaded or maxRetryRequests is reached. + * + * Default value is 5, please set a larger value when loading large files in poor network. + */ + maxRetryRequests?: number; +} + +export interface DownloadContentOptions extends DownloadOptions { + /** Return only the bytes of the blob in the specified range. */ + range?: string; +} + export class KnownCallingServerEventType { public static CALL_CONNECTION_STATE_CHANGED_EVENT: | string @@ -244,10 +278,10 @@ export class KnownCallingServerEventType { "Microsoft.Communication.ToneReceived" ); - public static fromString(value: string) { - var allEvents = Object.values(CallingServerEventType); - for (let entry of allEvents) { - if (entry.toString().toUpperCase() == value.toUpperCase()) { + public static fromString(value: string): string | null { + const allEvents = Object.values(CallingServerEventType); + for (const entry of allEvents) { + if (entry.toString().toUpperCase() === value.toUpperCase()) { return value; } } diff --git a/sdk/communication/communication-callingserver/src/parameters.ts b/sdk/communication/communication-callingserver/src/parameters.ts new file mode 100644 index 000000000000..f013ce2059a3 --- /dev/null +++ b/sdk/communication/communication-callingserver/src/parameters.ts @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + */ + +import { OperationParameter } from "@azure/core-http"; + +export const range: OperationParameter = { + parameterPath: ["options", "range"], + mapper: { + serializedName: "x-ms-range", + xmlName: "x-ms-range", + type: { + name: "String" + } + } +}; diff --git a/sdk/communication/communication-callingserver/src/tracing.ts b/sdk/communication/communication-callingserver/src/tracing.ts index 88aa261c1114..24246e150c1c 100644 --- a/sdk/communication/communication-callingserver/src/tracing.ts +++ b/sdk/communication/communication-callingserver/src/tracing.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +import { OperationOptions, RequestOptionsBase } from "@azure/core-http"; import { createSpanFunction } from "@azure/core-tracing"; /** @@ -11,3 +12,19 @@ export const createSpan = createSpanFunction({ packagePrefix: "Azure.Communication", namespace: "Microsoft.Communication" }); + +/** + * @internal + * + * Adapt the tracing options from OperationOptions to what they need to be for + * RequestOptionsBase (when we update to later OpenTelemetry versions this is now + * two separate fields, not just one). + */ +export function convertTracingToRequestOptionsBase( + options?: OperationOptions +): Pick { + return { + spanOptions: options?.tracingOptions?.spanOptions, + tracingContext: options?.tracingOptions?.tracingContext + }; +} diff --git a/sdk/communication/communication-callingserver/src/utils/RetriableReadableStream.ts b/sdk/communication/communication-callingserver/src/utils/RetriableReadableStream.ts new file mode 100644 index 000000000000..badd4b428cd2 --- /dev/null +++ b/sdk/communication/communication-callingserver/src/utils/RetriableReadableStream.ts @@ -0,0 +1,179 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { TransferProgressEvent } from "@azure/core-http"; +import { Readable } from "stream"; + +export type ReadableStreamGetter = (offset: number) => Promise; + +export interface RetriableReadableStreamOptions { + /** + * Max retry count (greater than or equal to 0), undefined or invalid value means no retry + */ + maxRetryRequests?: number; + + /** + * Read progress event handler + */ + onProgress?: (progress: TransferProgressEvent) => void; + + /** + * Debug purpose only. Used to inject an unexpected end to existing internal stream, + * to test stream retry works well or not. + * + * When assign it to true, for next incoming "data" event of internal stream, + * RetriableReadableStream will try to emit an "end" event to existing internal + * stream to force it end and start retry from the breaking point. + * The value will then update to "undefined", once the injection works. + */ + doInjectErrorOnce?: boolean; + + /** + * A threshold, not a limit. Dictates the amount of data that a stream buffers before it stops asking for more data. + */ + highWaterMark?: number; +} + +/** + * ONLY AVAILABLE IN NODE.JS RUNTIME. + * + * A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends. + */ +export class RetriableReadableStream extends Readable { + private start: number; + private offset: number; + private end: number; + private getter: ReadableStreamGetter; + private source: NodeJS.ReadableStream; + private retries: number = 0; + private maxRetryRequests: number; + private onProgress?: (progress: TransferProgressEvent) => void; + private options: RetriableReadableStreamOptions; + + /** + * Creates an instance of RetriableReadableStream. + * + * @param source - The current ReadableStream returned from getter + * @param getter - A method calling downloading request returning + * a new ReadableStream from specified offset + * @param offset - Offset position in original data source to read + * @param count - How much data in original data source to read + * @param options - + */ + public constructor( + source: NodeJS.ReadableStream, + getter: ReadableStreamGetter, + offset: number, + count: number, + options: RetriableReadableStreamOptions = {} + ) { + super({ highWaterMark: options.highWaterMark }); + this.getter = getter; + this.source = source; + this.start = offset; + this.offset = offset; + this.end = offset + count - 1; + this.maxRetryRequests = + options.maxRetryRequests && options.maxRetryRequests >= 0 ? options.maxRetryRequests : 0; + this.onProgress = options.onProgress; + this.options = options; + + this.setSourceEventHandlers(); + } + + public _read(): void { + this.source.resume(); + } + + private setSourceEventHandlers(): void { + this.source.on("data", this.sourceDataHandler); + this.source.on("end", this.sourceErrorOrEndHandler); + this.source.on("error", this.sourceErrorOrEndHandler); + } + + private removeSourceEventHandlers(): void { + this.source.removeListener("data", this.sourceDataHandler); + this.source.removeListener("end", this.sourceErrorOrEndHandler); + this.source.removeListener("error", this.sourceErrorOrEndHandler); + } + + private sourceDataHandler = (data: Buffer): void => { + if (this.options.doInjectErrorOnce) { + this.options.doInjectErrorOnce = undefined; + this.source.pause(); + this.source.removeAllListeners("data"); + this.source.emit("end"); + return; + } + + // console.log( + // `Offset: ${this.offset}, Received ${data.length} from internal stream` + // ); + this.offset += data.length; + if (this.onProgress) { + this.onProgress({ loadedBytes: this.offset - this.start }); + } + if (!this.push(data)) { + this.source.pause(); + } + }; + + private sourceErrorOrEndHandler = (err?: Error): void => { + if (err && err.name === "AbortError") { + this.destroy(err); + return; + } + + // console.log( + // `Source stream emits end or error, offset: ${ + // this.offset + // }, dest end : ${this.end}` + // ); + this.removeSourceEventHandlers(); + if (this.offset - 1 === this.end) { + this.push(null); + } else if (this.offset <= this.end) { + // console.log( + // `retries: ${this.retries}, max retries: ${this.maxRetries}` + // ); + if (this.retries < this.maxRetryRequests) { + this.retries += 1; + this.getter(this.offset) + .then((newSource) => { + this.source = newSource; + this.setSourceEventHandlers(); + return; + }) + .catch((error) => { + this.destroy(error); + }); + } else { + this.destroy( + new Error( + // tslint:disable-next-line:max-line-length + `Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: ${this + .offset - 1}, data needed offset: ${this.end}, retries: ${ + this.retries + }, max retries: ${this.maxRetryRequests}` + ) + ); + } + } else { + this.destroy( + new Error( + `Data corruption failure: Received more data than original request, data needed offset is ${ + this.end + }, received offset: ${this.offset - 1}` + ) + ); + } + }; + + _destroy(error: Error | null, callback: (error?: Error) => void): void { + // remove listener from source and release source + this.removeSourceEventHandlers(); + (this.source as Readable).destroy(); + + callback(error === null ? undefined : error); + } +} diff --git a/sdk/communication/communication-callingserver/src/utils/utils.ts b/sdk/communication/communication-callingserver/src/utils/utils.ts index a73f0a3216cc..540c53100081 100644 --- a/sdk/communication/communication-callingserver/src/utils/utils.ts +++ b/sdk/communication/communication-callingserver/src/utils/utils.ts @@ -1,17 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { URL } from "url"; +import { URLBuilder } from "@azure/core-http"; export class CallingServerUtils { public static isValidUrl(urlToVerify: string): boolean { let url; try { - url = new URL(urlToVerify); + url = URLBuilder.parse(urlToVerify); } catch (_) { return false; } - - return url.protocol === "http:" || url.protocol === "https:"; + return url.getScheme() === "http" || url.getScheme() === "https"; } } diff --git a/sdk/communication/communication-callingserver/test.env b/sdk/communication/communication-callingserver/test.env new file mode 100644 index 000000000000..745b49828b9f --- /dev/null +++ b/sdk/communication/communication-callingserver/test.env @@ -0,0 +1,5 @@ +COMMUNICATION_LIVETEST_STATIC_CONNECTION_STRING="endpoint=;accessKey=" + +# Our tests assume that TEST_MODE is "playback" by default. You can +# change it to "record" to generate new recordings, or "live" to bypass the recorder entirely. +# TEST_MODE=record diff --git a/sdk/communication/communication-callingserver/test/internal/serverCall.internal.spec.ts b/sdk/communication/communication-callingserver/test/internal/serverCall.internal.spec.ts new file mode 100644 index 000000000000..b8a9b37806d4 --- /dev/null +++ b/sdk/communication/communication-callingserver/test/internal/serverCall.internal.spec.ts @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +import { assert } from "chai"; +import { CallingServerClient, ServerCallLocator } from "../../src"; + +describe("ServerCall", function() { + describe("Recording", function() { + it("Start recording with relative url fails", async () => { + const connectionString = + "endpoint=https://REDACTED.communication.azure.com/;accesskey=eyJhbG=="; + const serverCallId = + "aHR0cHM6Ly9jb252LXVzd2UtMDguY29udi5za3lwZS5jb20vY29udi8tby1FWjVpMHJrS3RFTDBNd0FST1J3P2k9ODgmZT02Mzc1Nzc0MTY4MDc4MjQyOTM"; + const callingServerClient = new CallingServerClient(connectionString); + const callLocator: ServerCallLocator = { serverCallId: serverCallId }; + + try { + await callingServerClient.startRecording(callLocator, "/not/absolute/uri"); + } catch (e) { + assert.equal((e as Error).message, "recordingStateCallbackUri is invalid."); + } + }); + }); +}); diff --git a/sdk/communication/communication-callingserver/test/public/downloadContent.spec.ts b/sdk/communication/communication-callingserver/test/public/downloadContent.spec.ts new file mode 100644 index 000000000000..46c9fd168d39 --- /dev/null +++ b/sdk/communication/communication-callingserver/test/public/downloadContent.spec.ts @@ -0,0 +1,85 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { + isPlaybackMode, + record, + Recorder, + RecorderEnvironmentSetup +} from "@azure-tools/test-recorder"; +import { assert } from "chai"; +import { CallingServerClient } from "../../src"; +import { Context } from "mocha"; +import { bodyToString } from "./utils"; +import { RestError } from "@azure/core-http"; + +const replaceableVariables: { [k: string]: string } = { + COMMUNICATION_LIVETEST_DYNAMIC_CONNECTION_STRING: "endpoint=https://endpoint/;accesskey=banana" +}; + +const environmentSetup: RecorderEnvironmentSetup = { + replaceableVariables, + customizationsOnRecordings: [ + (recording: string): string => recording.replace(/(https:\/\/)([^/',]*)/, "$1endpoint"), + (recording: string): string => recording.replace("endpoint:443", "endpoint") + ], + queryParametersToSkip: [] +}; + +describe("Download Content", function() { + let recorder: Recorder; + const uri = + "https://endpoint/v1/objects/0-eus-d15-af5689148b0afa252a57a0121b744dcd/content/acsmetadata"; + const callingServerServiceClient = new CallingServerClient( + "endpoint=https://endpoint/;accesskey=banana" + ); + + beforeEach(async function(this: Context) { + recorder = record(this, environmentSetup); + /* Place your code here*/ + }); + + afterEach(async function(this: Context) { + if (!this.currentTest?.isPending()) { + await recorder.stop(); + } + }); + + it("download", async function(this: Context) { + if (!isPlaybackMode()) { + // tslint:disable-next-line:no-invalid-this + this.skip(); + } + + const downloadResponse = await callingServerServiceClient.download(uri); + const metadata = await bodyToString(downloadResponse, downloadResponse.contentLength!); + assert.strictEqual(metadata.includes("0-eus-d15-af5689148b0afa252a57a0121b744dcd"), true); + }); + + it("download with redirection", async function(this: Context) { + if (!isPlaybackMode()) { + // tslint:disable-next-line:no-invalid-this + this.skip(); + } + const redirectedUri = + "https://endpoint/v1/objects/0-sa-d4-a29f0c0212c0a2a634ab078245184de8/content/acsmetadata"; + const downloadResponse = await callingServerServiceClient.download(redirectedUri); + const metadataStream = downloadResponse.readableStreamBody; + assert.notStrictEqual(metadataStream, null); + const metadata = await bodyToString(downloadResponse, downloadResponse.contentLength!); + assert.strictEqual(metadata.includes("0-sa-d4-a29f0c0212c0a2a634ab078245184de8"), true); + }); + + it("unauthorized download", async function(this: Context) { + if (!isPlaybackMode()) { + // tslint:disable-next-line:no-invalid-this + this.skip(); + } + + try { + await callingServerServiceClient.download(uri); + } catch (e) { + assert.equal((e as RestError).statusCode, 401); + } + }); +}); diff --git a/sdk/communication/communication-callingserver/test/public/serverCall.spec.ts b/sdk/communication/communication-callingserver/test/public/serverCall.spec.ts new file mode 100644 index 000000000000..6e89db12eb46 --- /dev/null +++ b/sdk/communication/communication-callingserver/test/public/serverCall.spec.ts @@ -0,0 +1,93 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { env, record, Recorder, RecorderEnvironmentSetup } from "@azure-tools/test-recorder"; +import { CallingServerClient, GroupCallLocator } from "../../src"; +import { CALLBACK_URI } from "./utils/constants"; +import { TestUtils } from "./utils/testUtils"; +import assert from "assert"; +import { Context } from "mocha"; + +const replaceableVariables: { [k: string]: string } = { + COMMUNICATION_LIVETEST_DYNAMIC_CONNECTION_STRING: "endpoint=https://endpoint/;accesskey=banana" +}; + +const environmentSetup: RecorderEnvironmentSetup = { + replaceableVariables, + customizationsOnRecordings: [ + (recording: string): string => recording.replace(/(https:\/\/)([^/',]*)/, "$1endpoint"), + (recording: string): string => recording.replace("endpoint:443", "endpoint") + ], + queryParametersToSkip: [] +}; + +describe("Server Call Live Test", function() { + describe("Recording Operations", function() { + let recorder: Recorder; + let connectionString: string; + + beforeEach(async function(this: Context) { + recorder = record(this, environmentSetup); + /* Place your code here*/ + connectionString = + env.COMMUNICATION_LIVETEST_DYNAMIC_CONNECTION_STRING || + "endpoint=https://endpoint/;accesskey=banana"; + }); + + afterEach(async function(this: Context) { + if (!this.currentTest?.isPending()) { + await recorder.stop(); + } + }); + + it("Run all client recording operations", async function(this: Context) { + this.timeout(0); + const groupId = TestUtils.getGroupId("Run all client recording operations"); + const fromUser = await TestUtils.getUserId("fromUser", connectionString); + const toUser = await TestUtils.getUserId("toUser", connectionString); + let connections = []; + let recordingId = ""; + + const callingServer = new CallingServerClient(connectionString); + + try { + connections = await TestUtils.createCallConnections( + callingServer, + groupId, + fromUser, + toUser + ); + const callLocator: GroupCallLocator = { groupCallId: groupId }; + + const startCallRecordingResult = await callingServer.startRecording( + callLocator, + CALLBACK_URI + ); + recordingId = startCallRecordingResult.recordingId!; + await TestUtils.delayIfLive(); + let recordingState = await callingServer.getRecordingProperties(recordingId!); + assert.strictEqual(recordingState.recordingState, "active"); + + await callingServer.pauseRecording(recordingId!); + await TestUtils.delayIfLive(); + recordingState = await callingServer.getRecordingProperties(recordingId!); + assert.strictEqual(recordingState.recordingState, "inactive"); + + await callingServer.resumeRecording(recordingId!); + await TestUtils.delayIfLive(); + recordingState = await callingServer.getRecordingProperties(recordingId!); + assert.strictEqual(recordingState.recordingState, "active"); + } finally { + if (recordingId !== "") { + try { + await callingServer.stopRecording(recordingId); + } catch (e) { + console.error("Error stopping recording (" + recordingId + "): " + e); + } + } + } + + await TestUtils.cleanCallConnections(connections); + }); + }); +}); diff --git a/sdk/communication/communication-callingserver/test/public/utils/constants.ts b/sdk/communication/communication-callingserver/test/public/utils/constants.ts new file mode 100644 index 000000000000..1b74b034f947 --- /dev/null +++ b/sdk/communication/communication-callingserver/test/public/utils/constants.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +export const NAMESPACE_UUID = "6ba7b812-9dad-11d1-80b4-00c04fd430c8"; +export const CALLBACK_URI = "https://bot.contoso.io/callback"; diff --git a/sdk/communication/communication-callingserver/test/public/utils/index.browser.ts b/sdk/communication/communication-callingserver/test/public/utils/index.browser.ts new file mode 100644 index 000000000000..cd62e50510b2 --- /dev/null +++ b/sdk/communication/communication-callingserver/test/public/utils/index.browser.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/** + * Read body from downloading operation methods to string. + * Works in both Node.js and browsers. + * + * @param response - Convenience layer methods response with downloaded body + * @param length - Length of Readable stream, needed for Node.js environment + */ +export async function bodyToString( + response: { + readableStreamBody?: NodeJS.ReadableStream; + blobBody?: Promise; + }, + _length?: number +): Promise { + const blob = await response.blobBody!; + return blobToString(blob); +} + +export async function blobToString(blob: Blob): Promise { + const fileReader = new FileReader(); + return new Promise((resolve, reject) => { + fileReader.onloadend = (ev: any) => { + resolve(ev.target!.result); + }; + fileReader.onerror = reject; + fileReader.readAsText(blob); + }); +} diff --git a/sdk/communication/communication-callingserver/test/public/utils/index.ts b/sdk/communication/communication-callingserver/test/public/utils/index.ts new file mode 100644 index 000000000000..1d7dc3a5a92c --- /dev/null +++ b/sdk/communication/communication-callingserver/test/public/utils/index.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/** + * Read body from downloading operation methods to string. + * Works in both Node.js and browsers. + * + * @param response - Convenience layer methods response with downloaded body + * @param length - Length of Readable stream, needed for Node.js environment + */ +export async function bodyToString( + response: { + readableStreamBody?: NodeJS.ReadableStream; + blobBody?: Promise; + }, + length?: number +): Promise { + return new Promise((resolve, reject) => { + response.readableStreamBody!.on("readable", () => { + const chunk = response.readableStreamBody!.read(length); + if (chunk) { + resolve(chunk.toString()); + } + }); + + response.readableStreamBody!.on("error", reject); + response.readableStreamBody!.on("end", () => { + resolve(""); + }); + }); +} diff --git a/sdk/communication/communication-callingserver/test/public/utils/testUtils.ts b/sdk/communication/communication-callingserver/test/public/utils/testUtils.ts new file mode 100644 index 000000000000..e7f5395bdf2b --- /dev/null +++ b/sdk/communication/communication-callingserver/test/public/utils/testUtils.ts @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { env, isLiveMode, isRecordMode } from "@azure-tools/test-recorder"; +import { v4 as uuidv4, v5 as uuidv5 } from "uuid"; +import { CallingServerClient, CallConnection, GroupCallLocator } from "../../../src"; +import { CommunicationIdentityClient } from "@azure/communication-identity"; +import * as Constants from "../utils/constants"; + +export class TestUtils { + private static delay(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); + } + + public static async getUserId(userName: string, connectionString: string): Promise { + const communicationIdentityClient = new CommunicationIdentityClient(connectionString); + const tenant_id = env.AZURE_TENANT_ID || "016a7064-0581-40b9-be73-6dde64d69d72"; + + if (!isLiveMode()) { + return "8:acs:" + tenant_id + "_" + uuidv5(userName, Constants.NAMESPACE_UUID); + } + + return (await communicationIdentityClient.createUser()).communicationUserId; + } + + public static getGroupId(testName: string): string { + if (isLiveMode()) { + return uuidv4(); + } + return uuidv5(testName, Constants.NAMESPACE_UUID); + } + + public static async createCallConnections( + callingServerClient: CallingServerClient, + groupId: string, + fromUser: string, + toUser: string + ): Promise { + const joinCallOptions = { + callbackUri: Constants.CALLBACK_URI, + requestedMediaTypes: ["audio"], + requestedCallEvents: ["participantsUpdated"] + }; + const callLocator: GroupCallLocator = { groupCallId: groupId }; + const callConnections = []; + callConnections.push( + await callingServerClient.joinCall( + callLocator, + { communicationUserId: fromUser }, + joinCallOptions + ) + ); + callConnections.push( + await callingServerClient.joinCall( + callLocator, + { communicationUserId: toUser }, + joinCallOptions + ) + ); + return callConnections; + } + + public static async delayIfLive(): Promise { + if (isLiveMode() || isRecordMode()) { + await this.delay(10000); + } + } + + public static async cleanCallConnections(callConnections: Array): Promise { + for (const callConnection of callConnections) { + await callConnection.hangUp(); + } + } +} diff --git a/sdk/communication/communication-callingserver/tests.yml b/sdk/communication/communication-callingserver/tests.yml new file mode 100644 index 000000000000..f2e84c33bdd6 --- /dev/null +++ b/sdk/communication/communication-callingserver/tests.yml @@ -0,0 +1,22 @@ +trigger: none + +stages: + - template: /eng/pipelines/templates/stages/archetype-sdk-tests.yml + parameters: + PackageName: "@azure/communication-callingserver" + ServiceDirectory: communication + MatrixFilters: + - DependencyVersion=^$ + CloudConfig: + Public: + SubscriptionConfigurations: + - $(sub-config-azure-cloud-test-resources) + - $(sub-config-communication-services-cloud-test-resources-common) + - $(sub-config-communication-services-cloud-test-resources-js) + Int: + SubscriptionConfigurations: + - $(sub-config-communication-int-test-resources-common) + - $(sub-config-communication-int-test-resources-js) + MatrixFilters: + - TestType=^(?!browser).* + Clouds: Public,Int diff --git a/sdk/communication/communication-callingserver/tsconfig.json b/sdk/communication/communication-callingserver/tsconfig.json index 7713229ab4b7..6f755b7107b5 100644 --- a/sdk/communication/communication-callingserver/tsconfig.json +++ b/sdk/communication/communication-callingserver/tsconfig.json @@ -5,7 +5,8 @@ "declarationDir": "./types", "paths": { "@azure/communication-callingserver": ["./src/index"] - } + }, + "lib": ["dom"] }, "include": ["src/**/*.ts", "test/**/*.ts", "samples-dev/**/*.ts"] } diff --git a/sdk/communication/communication-callingserver/tsdoc.json b/sdk/communication/communication-callingserver/tsdoc.json new file mode 100644 index 000000000000..81c5a8a2aa2f --- /dev/null +++ b/sdk/communication/communication-callingserver/tsdoc.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["../../../tsdoc.json"] +} diff --git a/sdk/communication/communication-common/src/credential/communicationAccessKeyCredentialPolicy.ts b/sdk/communication/communication-common/src/credential/communicationAccessKeyCredentialPolicy.ts index 1e28dae030b0..30598c653913 100644 --- a/sdk/communication/communication-common/src/credential/communicationAccessKeyCredentialPolicy.ts +++ b/sdk/communication/communication-common/src/credential/communicationAccessKeyCredentialPolicy.ts @@ -61,19 +61,27 @@ class CommunicationAccessKeyCredentialPolicy extends BaseRequestPolicy { const dateHeader = "x-ms-date"; const signedHeaders = `${dateHeader};host;x-ms-content-sha256`; - const url = URLBuilder.parse(webResource.url); - const query = url.getQuery(); - const urlPathAndQuery = query ? `${url.getPath()}?${query}` : url.getPath(); - const port = url.getPort(); - const hostAndPort = port ? `${url.getHost()}:${port}` : url.getHost(); + const urlBuilder = URLBuilder.parse(webResource.url); + const query = urlBuilder.getQuery(); + let urlPathAndQuery = query ? `${urlBuilder.getPath()}?${query}` : urlBuilder.getPath(); + const port = urlBuilder.getPort(); + let hostAndPort = port ? `${urlBuilder.getHost()}:${port}` : urlBuilder.getHost(); - const stringToSign = `${verb}\n${urlPathAndQuery}\n${utcNow};${hostAndPort};${contentHash}`; - const signature = await shaHMAC(this.accessKey.key, stringToSign); - - if (isNode) { + if (isNode && !webResource.headers.get("UriToSignWith")) { webResource.headers.set("Host", hostAndPort || ""); } + if (webResource.headers.get("UriToSignWith")) { + const uri_to_sign_with = webResource.headers.get("UriToSignWith"); + const q = URLBuilder.parse(uri_to_sign_with!); + hostAndPort = q.getHost()! + (q.getPort() !== undefined ? q.getPort() : ""); + webResource.headers.set("x-ms-host", String(hostAndPort)); + urlPathAndQuery = q.getPath()! + (q.getQuery() !== undefined ? q.getQuery() : ""); + } + + const stringToSign = `${verb}\n${urlPathAndQuery}\n${utcNow};${hostAndPort};${contentHash}`; + const signature = await shaHMAC(this.accessKey.key, stringToSign); + webResource.headers.set(dateHeader, utcNow); webResource.headers.set("x-ms-content-sha256", contentHash); webResource.headers.set(