diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 24e07a09d2d2..f72c432b9ac2 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -220,7 +220,7 @@ packages: '@types/async-lock': 1.1.1 '@types/is-buffer': 2.0.0 async-lock: 1.2.2 - buffer: 5.4.0 + buffer: 5.4.3 debug: 3.2.6 events: 3.0.0 is-buffer: 2.0.3 @@ -244,7 +244,7 @@ packages: dev: false resolution: integrity: sha512-e0nNyP0O802YMb4jq0nsVduIBHRWtmX/AtiWMCDI1f0KtcEmNRPfbP8DxU6iNgwnV09qy3EfaRfSY0vMsYs5cg== - /@azure/core-amqp/1.0.0-preview.4_rhea-promise@1.0.0: + /@azure/core-amqp/1.0.0-preview.3_rhea-promise@1.0.0: dependencies: '@azure/abort-controller': 1.0.0-preview.2 '@azure/core-auth': 1.0.0-preview.3 @@ -254,7 +254,7 @@ packages: buffer: 5.4.3 debug: 4.1.1 events: 3.0.0 - is-buffer: 2.0.4 + is-buffer: 2.0.3 jssha: 2.3.1 process: 0.11.10 rhea-promise: 1.0.0 @@ -266,14 +266,7 @@ packages: peerDependencies: rhea-promise: ^1.0.0 resolution: - integrity: sha512-lfdU85JSq2nDbHukoO4bFavAktKjTIJY0ORkmFlxWokkH5o0FuGn619Yyyo8EgttFBn3h7SoeisnHZGP2J+x6g== - /@azure/core-arm/1.0.0-preview.3: - dependencies: - '@azure/core-http': 1.0.0-preview.3 - tslib: 1.10.0 - dev: false - resolution: - integrity: sha512-YZZM1EIcJnH7ahIBy0wAZDTXeeNZiPYJnRMWl3wZ2PblSHUVdq1D2ZRZWwQWeWlgrNXhsO2HC/9ZAwq8OihRFw== + integrity: sha512-1CpgFoIIjzlwrYg+s4+1Lpe7IiErA/65DN+dO/A58r1nD+0QaBUJYmXrN7EftMHiCwEQF3PEzVx+hECPCxko1Q== /@azure/core-arm/1.0.0-preview.4: dependencies: '@azure/core-http': 1.0.0-preview.4 @@ -297,7 +290,7 @@ packages: '@azure/abort-controller': 1.0.0-preview.2 '@azure/core-auth': 1.0.0-preview.3 '@azure/core-tracing': 1.0.0-preview.2 - '@types/node-fetch': 2.5.0 + '@types/node-fetch': 2.5.1 '@types/tunnel': 0.0.1 form-data: 2.5.1 node-fetch: 2.6.0 @@ -381,7 +374,7 @@ packages: '@azure/ms-rest-nodeauth': 0.9.3 async-lock: 1.2.2 debug: 3.2.6 - is-buffer: 2.0.4 + is-buffer: 2.0.3 jssha: 2.3.1 rhea-promise: 0.1.15 tslib: 1.10.0 @@ -389,16 +382,15 @@ packages: dev: false resolution: integrity: sha512-nGnFBPcB/rs+5YWwmHJg+d3Cs7BrjtVfuD1eEv8j+ui2X6uXxB88wom1A2t/7xsSzkunQSrXJ2mCwdHxKI5aHw== - /@azure/event-hubs/5.0.0-preview.4: + /@azure/event-hubs/5.0.0-preview.3: dependencies: '@azure/abort-controller': 1.0.0-preview.2 - '@azure/core-amqp': 1.0.0-preview.4_rhea-promise@1.0.0 + '@azure/core-amqp': 1.0.0-preview.3_rhea-promise@1.0.0 '@azure/core-asynciterator-polyfill': 1.0.0-preview.1 - '@azure/core-tracing': 1.0.0-preview.3 async-lock: 1.2.2 buffer: 5.4.3 debug: 4.1.1 - is-buffer: 2.0.4 + is-buffer: 2.0.3 jssha: 2.3.1 process: 0.11.10 rhea-promise: 1.0.0 @@ -406,7 +398,7 @@ packages: uuid: 3.3.3 dev: false resolution: - integrity: sha512-DbrlGQ1tFq6jfdR4lHytu9D55YksA6RnXZt+w3CZmo8+KeC8Oo/HDcvTko5s/ldoEPqkR8n5h11eZwKJOEpeDQ== + integrity: sha512-iAMVlRiKbyd62rHA9AUyWPwjLOZToPPWVXv0fTg4j45qwF8+KzEsC/z9tIM8pXX+kTJ3tIh/etvo5hFgy0KcgA== /@azure/identity/1.0.0-preview.4: dependencies: '@azure/core-http': 1.0.0-preview.4 @@ -640,21 +632,6 @@ packages: hasBin: true resolution: integrity: sha512-zw3HWmPW9vWWIoI3SPb2tuJ2suXVoF9ty37Mww+00I4gKLPPDooVad1kBiNtdjHXBj0QwYAOsGcfoBN9Qgt2bw== - /@microsoft/api-extractor/7.4.7: - dependencies: - '@microsoft/api-extractor-model': 7.5.1 - '@microsoft/node-core-library': 3.15.1 - '@microsoft/ts-command-line': 4.3.2 - '@microsoft/tsdoc': 0.12.14 - colors: 1.2.5 - lodash: 4.17.15 - resolve: 1.8.1 - source-map: 0.6.1 - typescript: 3.5.3 - dev: false - hasBin: true - resolution: - integrity: sha512-CoPlXFC10GlvylZGFe/WBa+e0247b/SRn/kuaUSWDjWRnI0FWqLcQrT1Zge12k6y4cxgZ8VU2rpPNSYVKpA0zw== /@microsoft/api-extractor/7.5.0: dependencies: '@microsoft/api-extractor-model': 7.5.1 @@ -961,16 +938,18 @@ packages: dev: false resolution: integrity: sha512-TLFRywthBgL68auWj+ziWu+vnmmcHCDFC/sqCOQf1xTz4hRq8cu79z8CtHU9lncExGBsB8fXA4TiLDLt6xvMzw== - /@types/node-fetch/2.5.2: + /@types/node-fetch/2.5.1: dependencies: '@types/node': 8.10.54 dev: false resolution: - integrity: sha512-djYYKmdNRSBtL1x4CiE9UJb9yZhwtI1VC+UxZD0psNznrUj80ywsxKlEGAE+QL1qvLjPbfb24VosjkYM6W4RSQ== - /@types/node/12.7.11: + integrity: sha512-nYsC20tHanaNa4coFvCDcuIvtdvu8YkQz0XQOoBHL1X1y1QxeNe73dg1PaLGqsJNWiVwK0bjn5Jf+ZQpE6acJg== + /@types/node-fetch/2.5.2: + dependencies: + '@types/node': 8.10.54 dev: false resolution: - integrity: sha512-Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw== + integrity: sha512-djYYKmdNRSBtL1x4CiE9UJb9yZhwtI1VC+UxZD0psNznrUj80ywsxKlEGAE+QL1qvLjPbfb24VosjkYM6W4RSQ== /@types/node/12.7.2: dev: false resolution: @@ -1186,15 +1165,15 @@ packages: typescript: '*' resolution: integrity: sha512-3i/dLPwxaVfCsaLu3HkB8CAA1Uw3McAegrTs+VBJ0BrGRKW7nUwSqRfHfCS7sw7zSbf62q3v0v6pOS8MyaYItg== - /@typescript-eslint/eslint-plugin/2.3.2_02831eb307232b3f286704a7de52b241: + /@typescript-eslint/eslint-plugin/2.3.3_ac2af3c58153fd08c91227fd925d839a: dependencies: - '@typescript-eslint/experimental-utils': 2.3.2_eslint@6.5.1 - '@typescript-eslint/parser': 2.3.2_eslint@6.5.1 + '@typescript-eslint/experimental-utils': 2.3.3_eslint@6.5.1 + '@typescript-eslint/parser': 2.3.3_eslint@6.5.1 eslint: 6.5.1 eslint-utils: 1.4.2 functional-red-black-tree: 1.0.1 regexpp: 2.0.1 - tsutils: 3.17.1_typescript@3.6.3 + tsutils: 3.17.1_typescript@3.6.4 dev: false engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 @@ -1203,7 +1182,7 @@ packages: eslint: ^5.0.0 || ^6.0.0 typescript: '*' resolution: - integrity: sha512-tcnpksq1bXzcIRbYLeXkgp6l+ggEMXXUcl1wsSvL807fRtmvVQKygElwEUf4hBA76dNag3VAK1q2m3vd7qJaZA== + integrity: sha512-12cCbwu5PbQudkq2xCIS/QhB7hCMrsNPXK+vJtqy/zFqtzVkPRGy12O5Yy0gUK086f3VHV/P4a4R4CjMW853pA== /@typescript-eslint/eslint-plugin/2.4.0_4828c2c2dec21a69cf7db8f78e46e2d1: dependencies: '@typescript-eslint/experimental-utils': 2.4.0_eslint@6.5.1 @@ -1261,10 +1240,10 @@ packages: eslint: '*' resolution: integrity: sha512-ry+fgd0Hh33LyzS30bIhX/a1HJpvtnecjQjWxxsZTavrRa1ymdmX7tz+7lPrPAxB018jnNzwNtog6s3OhxPTAg== - /@typescript-eslint/experimental-utils/2.3.2_eslint@6.5.1: + /@typescript-eslint/experimental-utils/2.3.3_eslint@6.5.1: dependencies: '@types/json-schema': 7.0.3 - '@typescript-eslint/typescript-estree': 2.3.2 + '@typescript-eslint/typescript-estree': 2.3.3 eslint: 6.5.1 eslint-scope: 5.0.0 dev: false @@ -1273,7 +1252,7 @@ packages: peerDependencies: eslint: '*' resolution: - integrity: sha512-t+JGdTT6dRbmvKDlhlVkEueoZa0fhJNfG6z2cpnRPLwm3VwYr2BjR//acJGC1Yza0I9ZNcDfRY7ubQEvvfG6Jg== + integrity: sha512-MQ4jKPMTU1ty4TigJCRKFPye2qyQdH8jzIIkceaHgecKFmkNS1hXPqKiZ+mOehkz6+HcN5Nuvwm+frmWZR9tdg== /@typescript-eslint/experimental-utils/2.4.0_eslint@6.5.1: dependencies: '@types/json-schema': 7.0.3 @@ -1315,11 +1294,11 @@ packages: eslint: ^5.0.0 || ^6.0.0 resolution: integrity: sha512-0+hzirRJoqE1T4lSSvCfKD+kWjIpDWfbGBiisK5CENcr+22pPkHB2sfV1giON+UxHV4A08SSrQonZk7X2zIQdw== - /@typescript-eslint/parser/2.3.2_eslint@6.5.1: + /@typescript-eslint/parser/2.3.3_eslint@6.5.1: dependencies: '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 2.3.2_eslint@6.5.1 - '@typescript-eslint/typescript-estree': 2.3.2 + '@typescript-eslint/experimental-utils': 2.3.3_eslint@6.5.1 + '@typescript-eslint/typescript-estree': 2.3.3 eslint: 6.5.1 eslint-visitor-keys: 1.1.0 dev: false @@ -1328,7 +1307,7 @@ packages: peerDependencies: eslint: ^5.0.0 || ^6.0.0 resolution: - integrity: sha512-nq1UQeNGdKdqdgF6Ww+Ov2OidWgiL96+JYdXXZ2rkP/OWyc6KMNSbs6MpRCpI8q+PmDa7hBnHNQIo7w/drYccA== + integrity: sha512-+cV53HuYFeeyrNW8x/rgPmbVrzzp/rpRmwbJnNtwn4K8mroL1BdjxwQh7X9cUHp9rm4BBiEWmD3cSBjKG7d5mw== /@typescript-eslint/parser/2.4.0_eslint@6.5.1: dependencies: '@types/eslint-visitor-keys': 1.0.0 @@ -1374,7 +1353,7 @@ packages: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: integrity: sha512-WBxfwsTeCOsmQ7cLjow7lgysviBKUW34npShu7dxJYUQCbSG5nfZWZTgmQPKEc+3flpbSM7tjXjQOgETYp+njQ== - /@typescript-eslint/typescript-estree/2.3.2: + /@typescript-eslint/typescript-estree/2.3.3: dependencies: glob: 7.1.4 is-glob: 4.0.1 @@ -1384,7 +1363,7 @@ packages: engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: - integrity: sha512-eZNEAai16nwyhIVIEaWQlaUgAU3S9CkQ58qvK0+3IuSdLJD3W1PNuehQFMIhW/mTP1oFR9GNoTcLg7gtXz6lzA== + integrity: sha512-GkACs12Xp8d/STunNv/iSMYJFQrkrax9vuPZySlgSzoJJtw1cp6tbEw4qsLskQv6vloLrkFJHcTJ0a/yCB5cIA== /@typescript-eslint/typescript-estree/2.4.0: dependencies: chokidar: 3.2.1 @@ -2651,10 +2630,6 @@ packages: dev: false resolution: integrity: sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== - /bluebird/3.7.0: - dev: false - resolution: - integrity: sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg== /bn.js/4.11.8: dev: false resolution: @@ -3277,12 +3252,6 @@ packages: node: '>=0.1.90' resolution: integrity: sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - /colors/1.4.0: - dev: false - engines: - node: '>=0.1.90' - resolution: - integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== /combined-stream/1.0.8: dependencies: delayed-stream: 1.0.0 @@ -3429,11 +3398,6 @@ packages: requiresBuild: true resolution: integrity: sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== - /core-js/3.3.2: - dev: false - requiresBuild: true - resolution: - integrity: sha512-S1FfZpeBchkhyoY76YAdFzKS4zz9aOK7EeFaNA2aJlyXyA+sgqz6xdxmLPGXEAf0nF44MVN1kSjrA9Kt3ATDQg== /core-util-is/1.0.2: dev: false resolution: @@ -4010,23 +3974,6 @@ packages: node: '>= 0.4' resolution: integrity: sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== - /es-abstract/1.14.2: - dependencies: - es-to-primitive: 1.2.0 - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.0 - is-callable: 1.1.4 - is-regex: 1.0.4 - object-inspect: 1.6.0 - object-keys: 1.1.1 - string.prototype.trimleft: 2.1.0 - string.prototype.trimright: 2.1.0 - dev: false - engines: - node: '>= 0.4' - resolution: - integrity: sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg== /es-to-primitive/1.2.0: dependencies: is-callable: 1.1.4 @@ -4087,12 +4034,12 @@ packages: dev: false resolution: integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - /escape-goat/2.1.1: + /escape-goat/2.1.0: dev: false engines: node: '>=8' resolution: - integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + integrity: sha512-7fMXQmS/6yjYQT/yydWKCAm5ucuU7QtqP6/CE7BIKk6z3xTP4MLqkdUBwaViQVuTAde8yZgZIjSnEAPRl6u53g== /escape-html/1.0.3: dev: false resolution: @@ -4151,16 +4098,6 @@ packages: eslint: '>=3.14.1' resolution: integrity: sha512-VLsgK/D+S/FEsda7Um1+N8FThec6LqE3vhcMyp8mlmto97y3fGf3DX7byJexGuOb1QY0Z/zz222U5t+xSfcZDQ== - /eslint-config-prettier/6.3.0_eslint@6.5.1: - dependencies: - eslint: 6.5.1 - get-stdin: 6.0.0 - dev: false - hasBin: true - peerDependencies: - eslint: '>=3.14.1' - resolution: - integrity: sha512-EWaGjlDAZRzVFveh2Jsglcere2KK5CJBhkNSa1xs3KfMUGdRiT7lG089eqPdvlzWHpAqaekubOsOMu8W8Yk71A== /eslint-config-prettier/6.4.0_eslint@6.5.1: dependencies: eslint: 6.5.1 @@ -4491,10 +4428,6 @@ packages: dev: false resolution: integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - /eventemitter3/4.0.0: - dev: false - resolution: - integrity: sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== /events/3.0.0: dev: false engines: @@ -5558,16 +5491,6 @@ packages: node: '>=4.0.0' resolution: integrity: sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== - /http-proxy/1.18.0: - dependencies: - eventemitter3: 4.0.0 - follow-redirects: 1.9.0 - requires-port: 1.0.0 - dev: false - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== /http-signature/1.2.0: dependencies: assert-plus: 1.0.0 @@ -5805,12 +5728,6 @@ packages: node: '>=4' resolution: integrity: sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== - /is-buffer/2.0.4: - dev: false - engines: - node: '>=4' - resolution: - integrity: sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== /is-callable/1.1.4: dev: false engines: @@ -5983,12 +5900,6 @@ packages: dev: false resolution: integrity: sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw== - /is-reference/1.1.4: - dependencies: - '@types/estree': 0.0.39 - dev: false - resolution: - integrity: sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== /is-regex/1.0.4: dependencies: has: 1.0.3 @@ -6605,19 +6516,19 @@ packages: integrity: sha512-fmCuxN1rwJxTdZfOXK5LjlmS4Ana/OvzNMpkyLL/TLE8hmgSkpVpMYQ7RTVa8TNKRVQDZNl5W1oF5cfKfgIMlA== /karma/4.3.0: dependencies: - bluebird: 3.7.0 + bluebird: 3.5.5 body-parser: 1.19.0 braces: 3.0.2 - chokidar: 3.2.1 - colors: 1.4.0 + chokidar: 3.0.2 + colors: 1.3.3 connect: 3.7.0 - core-js: 3.3.2 + core-js: 3.2.1 di: 0.0.1 dom-serialize: 2.2.1 flatted: 2.0.1 glob: 7.1.4 graceful-fs: 4.2.2 - http-proxy: 1.18.0 + http-proxy: 1.17.0 isbinaryfile: 3.0.3 lodash: 4.17.15 log4js: 4.5.1 @@ -6930,12 +6841,6 @@ packages: dev: false resolution: integrity: sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== - /magic-string/0.25.4: - dependencies: - sourcemap-codec: 1.4.6 - dev: false - resolution: - integrity: sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw== /make-dir/2.1.0: dependencies: pify: 4.0.1 @@ -7741,10 +7646,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - /object-inspect/1.6.0: - dev: false - resolution: - integrity: sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== /object-keys/1.1.1: dev: false engines: @@ -7795,7 +7696,7 @@ packages: /object.getownpropertydescriptors/2.0.3: dependencies: define-properties: 1.1.3 - es-abstract: 1.14.2 + es-abstract: 1.13.0 dev: false engines: node: '>= 0.8' @@ -8468,7 +8369,7 @@ packages: integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== /pupa/2.0.1: dependencies: - escape-goat: 2.1.1 + escape-goat: 2.1.0 dev: false engines: node: '>=8' @@ -9071,24 +8972,24 @@ packages: /rollup-plugin-commonjs/10.1.0_rollup@1.20.3: dependencies: estree-walker: 0.6.1 - is-reference: 1.1.4 - magic-string: 0.25.4 + is-reference: 1.1.3 + magic-string: 0.25.3 resolve: 1.12.0 rollup: 1.20.3 - rollup-pluginutils: 2.8.2 + rollup-pluginutils: 2.8.1 dev: false peerDependencies: rollup: '>=1.12.0' resolution: integrity: sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - /rollup-plugin-commonjs/10.1.0_rollup@1.23.0: + /rollup-plugin-commonjs/10.1.0_rollup@1.23.1: dependencies: estree-walker: 0.6.1 - is-reference: 1.1.4 - magic-string: 0.25.4 + is-reference: 1.1.3 + magic-string: 0.25.3 resolve: 1.12.0 - rollup: 1.23.0 - rollup-pluginutils: 2.8.2 + rollup: 1.23.1 + rollup-pluginutils: 2.8.1 dev: false peerDependencies: rollup: '>=1.12.0' @@ -9155,26 +9056,26 @@ packages: rollup: '>=1.11.0' resolution: integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - /rollup-plugin-node-resolve/5.2.0_rollup@1.23.0: + /rollup-plugin-node-resolve/5.2.0_rollup@1.23.1: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 is-module: 1.0.0 resolve: 1.12.0 - rollup: 1.23.0 + rollup: 1.23.1 rollup-pluginutils: 2.8.1 dev: false peerDependencies: rollup: '>=1.11.0' resolution: integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - /rollup-plugin-node-resolve/5.2.0_rollup@1.23.1: + /rollup-plugin-node-resolve/5.2.0_rollup@1.24.0: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 is-module: 1.0.0 resolve: 1.12.0 - rollup: 1.23.1 + rollup: 1.24.0 rollup-pluginutils: 2.8.1 dev: false peerDependencies: @@ -9195,7 +9096,7 @@ packages: /rollup-plugin-sourcemaps/0.4.2_rollup@1.20.1: dependencies: rollup: 1.20.1 - rollup-pluginutils: 2.8.1 + rollup-pluginutils: 2.8.2 source-map-resolve: 0.5.2 dev: false engines: @@ -9208,7 +9109,7 @@ packages: /rollup-plugin-sourcemaps/0.4.2_rollup@1.20.3: dependencies: rollup: 1.20.3 - rollup-pluginutils: 2.8.1 + rollup-pluginutils: 2.8.2 source-map-resolve: 0.5.2 dev: false engines: @@ -9218,10 +9119,10 @@ packages: rollup: '>=0.31.2' resolution: integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - /rollup-plugin-sourcemaps/0.4.2_rollup@1.23.0: + /rollup-plugin-sourcemaps/0.4.2_rollup@1.23.1: dependencies: - rollup: 1.23.0 - rollup-pluginutils: 2.8.1 + rollup: 1.23.1 + rollup-pluginutils: 2.8.2 source-map-resolve: 0.5.2 dev: false engines: @@ -9231,10 +9132,10 @@ packages: rollup: '>=0.31.2' resolution: integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - /rollup-plugin-sourcemaps/0.4.2_rollup@1.23.1: + /rollup-plugin-sourcemaps/0.4.2_rollup@1.24.0: dependencies: - rollup: 1.23.1 - rollup-pluginutils: 2.8.1 + rollup: 1.24.0 + rollup-pluginutils: 2.8.2 source-map-resolve: 0.5.2 dev: false engines: @@ -9270,14 +9171,14 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== - /rollup-plugin-terser/5.1.2_rollup@1.23.0: + /rollup-plugin-terser/5.1.2_rollup@1.23.1: dependencies: '@babel/code-frame': 7.5.5 jest-worker: 24.9.0 - rollup: 1.23.0 + rollup: 1.23.1 rollup-pluginutils: 2.8.2 serialize-javascript: 1.9.1 - terser: 4.3.4 + terser: 4.3.8 dev: false peerDependencies: rollup: '>=0.66.0 <2' @@ -9323,12 +9224,12 @@ packages: rollup: '>=0.60.0' resolution: integrity: sha512-ehMX8Us4UmHmt9y6uvBdtW3ASAQDqCcmp07Qrm8dBqQMf1eAd89Rc/owGZr0cDp764dvLKQRA03W+nWlRajl4w== - /rollup-plugin-visualizer/2.6.0_rollup@1.23.1: + /rollup-plugin-visualizer/2.6.0_rollup@1.24.0: dependencies: mkdirp: 0.5.1 open: 6.4.0 pupa: 2.0.1 - rollup: 1.23.1 + rollup: 1.24.0 source-map: 0.7.3 dev: false engines: @@ -9367,16 +9268,16 @@ packages: hasBin: true resolution: integrity: sha512-/OMCkY0c6E8tleeVm4vQVDz24CkVgvueK3r8zTYu2AQNpjrcaPwO9hE+pWj5LTFrvvkaxt4MYIp2zha4y0lRvg== - /rollup/1.23.0: + /rollup/1.23.1: dependencies: '@types/estree': 0.0.39 - '@types/node': 12.7.11 + '@types/node': 8.10.54 acorn: 7.1.0 dev: false hasBin: true resolution: - integrity: sha512-/p72Z3NbHWV+Vi1p2X+BmPA3WqlZxpUqCy6E8U4crMohZnI+j9Ob8ZAfFyNfddT0LxgnJM0olO4mg+noH4SFbg== - /rollup/1.23.1: + integrity: sha512-95C1GZQpr/NIA0kMUQmSjuMDQ45oZfPgDBcN0yZwBG7Kee//m7H68vgIyg+SPuyrTZ5PrXfyLK80OzXeKG5dAA== + /rollup/1.24.0: dependencies: '@types/estree': 0.0.39 '@types/node': 8.10.54 @@ -9384,7 +9285,7 @@ packages: dev: false hasBin: true resolution: - integrity: sha512-95C1GZQpr/NIA0kMUQmSjuMDQ45oZfPgDBcN0yZwBG7Kee//m7H68vgIyg+SPuyrTZ5PrXfyLK80OzXeKG5dAA== + integrity: sha512-PiFETY/rPwodQ8TTC52Nz2DSCYUATznGh/ChnxActCr8rV5FIk3afBUb3uxNritQW/Jpbdn3kq1Rwh1HHYMwdQ== /run-async/2.3.0: dependencies: is-promise: 2.1.0 @@ -9985,24 +9886,6 @@ packages: node: '>= 0.4' resolution: integrity: sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA= - /string.prototype.trimleft/2.1.0: - dependencies: - define-properties: 1.1.3 - function-bind: 1.1.1 - dev: false - engines: - node: '>= 0.4' - resolution: - integrity: sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== - /string.prototype.trimright/2.1.0: - dependencies: - define-properties: 1.1.3 - function-bind: 1.1.1 - dev: false - engines: - node: '>= 0.4' - resolution: - integrity: sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== /string_decoder/0.10.31: dev: false resolution: @@ -10182,7 +10065,7 @@ packages: hasBin: true resolution: integrity: sha512-6lPt7lZdZ/13icQJp8XasFOwZjFJkxFFIb/N1fhYEQNoNI3Ilo3KABZ9OocZvZoB39r6SiIk/0+v/bt8nZoSeA== - /terser/4.3.4: + /terser/4.3.8: dependencies: commander: 2.20.1 source-map: 0.6.1 @@ -10192,7 +10075,7 @@ packages: node: '>=6.0.0' hasBin: true resolution: - integrity: sha512-Kcrn3RiW8NtHBP0ssOAzwa2MsIRQ8lJWiBG/K7JgqPlomA3mtb2DEmp4/hrUA+Jujx+WZ02zqd7GYD+QRBB/2Q== + integrity: sha512-otmIRlRVmLChAWsnSFNO0Bfk6YySuBp6G9qrHiJwlLDd4mxe2ta4sjI7TzIR+W1nBMjilzrMcPOz9pSusgx3hQ== /test-exclude/5.2.3: dependencies: glob: 7.1.4 @@ -10473,22 +10356,6 @@ packages: typescript: '>=2.0' resolution: integrity: sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ== - /ts-node/8.4.1_typescript@3.6.3: - dependencies: - arg: 4.1.1 - diff: 4.0.1 - make-error: 1.3.5 - source-map-support: 0.5.13 - typescript: 3.6.3 - yn: 3.1.1 - dev: false - engines: - node: '>=4.2.0' - hasBin: true - peerDependencies: - typescript: '>=2.0' - resolution: - integrity: sha512-5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw== /ts-node/8.4.1_typescript@3.6.4: dependencies: arg: 4.1.1 @@ -10582,17 +10449,6 @@ packages: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' resolution: integrity: sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - /tsutils/3.17.1_typescript@3.6.3: - dependencies: - tslib: 1.10.0 - typescript: 3.6.3 - dev: false - engines: - node: '>= 6' - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - resolution: - integrity: sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== /tsutils/3.17.1_typescript@3.6.4: dependencies: tslib: 1.10.0 @@ -10723,7 +10579,7 @@ packages: hasBin: true resolution: integrity: sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== - /uglify-js/3.6.1: + /uglify-js/3.6.2: dependencies: commander: 2.20.0 source-map: 0.6.1 @@ -10732,7 +10588,7 @@ packages: node: '>=0.8.0' hasBin: true resolution: - integrity: sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ== + integrity: sha512-+gh/xFte41GPrgSMJ/oJVq15zYmqr74pY9VoM69UzMzq9NFk4YDylclb1/bhEzZSaUQjbW5RvniHeq1cdtRYjw== /ultron/1.1.1: dev: false resolution: @@ -11275,6 +11131,12 @@ packages: node: '>=4.0.0' resolution: integrity: sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw== + /xmlbuilder/0.4.3: + dev: false + engines: + node: '>=0.2.0' + resolution: + integrity: sha1-xGFLp04K0ZbmCcknLNnh3bKKilg= /xmlbuilder/11.0.1: dev: false engines: @@ -11586,14 +11448,12 @@ packages: dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-YwhAi/dV8QU4uVvddHEEchoJUG07D7QbKuQVf5jyvD5oklm8BnoIR5ONWo24G1jQnlIEaFrsFjYbboAt1Xl3bQ== + integrity: sha512-vDcC9ZxFHAZ1GK8i63eC7rnBVBbGN6JKPNgMETz4CGHji31lXhMdMMx0sjZNiDN1HMv9lojK3KtW+mhsZmEfZQ== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/app-configuration.tgz': dependencies: - '@azure/core-arm': 1.0.0-preview.3 '@azure/core-asynciterator-polyfill': 1.0.0-preview.1 - '@azure/core-http': 1.0.0-preview.3 '@azure/core-paging': 1.0.0-preview.2 '@microsoft/api-extractor': 7.3.11 '@types/dotenv': 6.1.1 @@ -11621,7 +11481,7 @@ packages: dev: false name: '@rush-temp/app-configuration' resolution: - integrity: sha512-ySZIjuwfPhaYdQGfChbUSuHOu7msVQU+d+4PTknjoTRfQV8/3niQAGn2OqkARDOhtemrNMnvNuPIQsV1V4gcVA== + integrity: sha512-2vARbZQ3Imv2QdB5QdRStznjzFdm6eRSPBbzMJmgeZHA44mv8u3tPBAlSP7UrGvOaBoHETQlFzAy/peIE+s/cA== tarball: 'file:projects/app-configuration.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -11629,7 +11489,6 @@ packages: '@azure/abort-controller': 1.0.0-preview.2 '@azure/core-auth': 1.0.0-preview.3 '@azure/eslint-plugin-azure-sdk': 2.0.1_9e8391ca70fb0408a9da4393803aa477 - '@azure/identity': 1.0.0-preview.4 '@types/async-lock': 1.1.1 '@types/chai': 4.2.0 '@types/chai-as-promised': 7.1.2 @@ -11693,12 +11552,11 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-nklUlUoEIGRXVfQ2J8KG/jSVyRq1FI+Dp7aGzx+VFKyBxbDn6KwkC6M0XUj6eyOBG1LSFSM845qiFx6ajgVBXg== + integrity: sha512-D3DZREtlZoUVTvq4EROwbaCIL/Vz+t7VwllZ2gYeguVdB9QlkBeOETJFQgwUQTcumPZiXnHBjZGCi9pTNLDrbA== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-arm.tgz': dependencies: - '@azure/core-http': 1.0.0-preview.3 '@types/chai': 4.2.0 '@types/mocha': 5.2.7 '@types/node': 8.10.52 @@ -11729,7 +11587,7 @@ packages: dev: false name: '@rush-temp/core-arm' resolution: - integrity: sha512-8zrFNKjbc69conqjAnyusNs6ko8Ks3JxGjBRCd2f7DHSY3auWBvnZDyeLnIh5h9KRGwMUWVTCLz0X+t2QmCmpA== + integrity: sha512-2HbqqyQRjDZCVzcy6of7jYGsiJvRB1oWJU8VMQZPZMcapygnbZQnfT5BuhejJ9Ix9DYRb5JtanyiwlKWCI2WEA== tarball: 'file:projects/core-arm.tgz' version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': @@ -11747,7 +11605,7 @@ packages: dev: false name: '@rush-temp/core-asynciterator-polyfill' resolution: - integrity: sha512-X2qR67x/Wgwcs8VjH/m3EA7HFB22mL2sf9YJCvpdIUXvz5ENGH54U4TC8IAc2AxcqlKjOi1pwFUAf9yBf4nAJQ== + integrity: sha512-hp2FjyoaLo9iJIGV0Aq7UI8oGzIr29OewVSFfuckKI+2aDUrh6Kamlg/hw/HrZ/a3ybccP3oqGjwA2uze4DoAg== tarball: 'file:projects/core-asynciterator-polyfill.tgz' version: 0.0.0 'file:projects/core-auth.tgz': @@ -11787,7 +11645,7 @@ packages: dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-AQU5yzbdiE4qpQ/nh+BpZ1qM4J3P0NdG3mx5PDIOCGHY6Y4I5ZRsxjLB4wRy+9CDQrvDQAeWMJTZzq1a7NteUg== + integrity: sha512-JkdIS912W1VEKSCo/lIBfA3QNb9HcV13AiVMwUMuOzZEGEI5ViS0Tx0zSYXkOSTzF1kTztUcRkoOqYR+L3/2PQ== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -11815,6 +11673,7 @@ packages: '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 babel-runtime: 6.26.0 + buffer: 5.4.0 chai: 4.2.0 eslint: 6.2.1 eslint-config-prettier: 6.1.0_eslint@6.2.1 @@ -11869,11 +11728,12 @@ packages: webpack-dev-middleware: 3.7.0_webpack@4.39.2 xhr-mock: 2.5.0 xml2js: 0.4.19 + xmlbuilder: 0.4.3 yarn: 1.17.3 dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-QroisRu/Tmu+6PkDwKfv7SmLuezjnd3IKT9IjZUqcTG0YLNcPFL5LRHVEbez8uEZPNO5Qhm53MJKyVvXv/L64Q== + integrity: sha512-L77x1CXag8fh2KxCFs73tj53MwiihhHedQpLAkdP7+Og84lzY1dzwuvGS133d0qiafwHwaA7sc95AdD3ovIufA== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-lro.tgz': @@ -11913,20 +11773,20 @@ packages: nyc: 14.1.1 prettier: 1.18.2 rimraf: 3.0.0 - rollup: 1.23.1 - rollup-plugin-node-resolve: 5.2.0_rollup@1.23.1 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.23.1 - rollup-plugin-visualizer: 2.6.0_rollup@1.23.1 + rollup: 1.24.0 + rollup-plugin-node-resolve: 5.2.0_rollup@1.24.0 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.24.0 + rollup-plugin-visualizer: 2.6.0_rollup@1.24.0 shx: 0.3.2 ts-node: 8.4.1_typescript@3.6.4 tslib: 1.10.0 typescript: 3.6.4 - uglify-js: 3.6.1 + uglify-js: 3.6.2 yarn: 1.19.1 dev: false name: '@rush-temp/core-lro' resolution: - integrity: sha512-MKu2yirrKV1fS+r/xR3UMyFb11di96Yt7ICXTO1N89YDt3j6mQTagOoJdLeuizdn2FoJSFoOkXXEB3Lq43CyGg== + integrity: sha512-l6Rl8nee9kyveCwaAlE0lkNAgfeW54uGjnQ3rKlOZ0qDxkSlMzi5zXNKhzV1tvGV9oY2Vrjt1ftzbrJVuosqUA== tarball: 'file:projects/core-lro.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -11945,7 +11805,7 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-/l5SA2u/jUrYjvQBf24YFdaoYW4GAdU3iDoGDekLbjH2fSP8wOt/3oDlBM8pxGD54TB7s06Oi4OjBsQN6F5tgw== + integrity: sha512-rorSx6Oeq/VsKWv3L8qwnHYihYjPZS/PiCZZrIlGt7WfSH8iS60XFPxRrAiP+zIhosvd1hDlSmQ8k30iIB10QA== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/core-tracing.tgz': @@ -11953,14 +11813,12 @@ packages: '@azure/eslint-plugin-azure-sdk': 2.0.1_9e8391ca70fb0408a9da4393803aa477 '@microsoft/api-extractor': 7.3.8 '@opencensus/web-types': 0.0.7 - '@types/debug': 4.1.5 '@types/mocha': 5.2.7 '@types/node': 8.10.52 '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 assert: 1.5.0 cross-env: 5.2.0 - debug: 4.1.1 eslint: 6.2.1 eslint-config-prettier: 6.1.0_eslint@6.2.1 eslint-plugin-no-null: 1.0.2_eslint@6.2.1 @@ -11987,7 +11845,7 @@ packages: dev: false name: '@rush-temp/core-tracing' resolution: - integrity: sha512-ojfEOrDyO28XqPLPsjFRR/XgiI56Ud1b9ne+DwGE8j54pEVZAMR8vMfk392tNuFqzYnwb2tYl3dZ/ILBDZNVZA== + integrity: sha512-WbDQ5f4zD46H6VTA08PWErEnRHfmY2apDbXp7O40neaCgwcgY83jSXOetohvCEOdyqAaSahSPY6E0hjfq4WGwA== tarball: 'file:projects/core-tracing.tgz' version: 0.0.0 'file:projects/cosmos.tgz_webpack@4.39.2': @@ -12065,7 +11923,7 @@ packages: peerDependencies: webpack: '*' resolution: - integrity: sha512-RrL4JURe5SJrV0yzrCIc/2zIFjda3BpxnqERrIhU1PGoCNKjzZoPqP2kpIl5sRquXFsdl8B5qPnv7UDOBrdkWA== + integrity: sha512-Hsi4SJtXUP+3mGrTqwa5jipkQeRiUTfaKPG4BsJD0fljGI3x0A5gc7IghThVGxMI4SqNGY84gHKlNnFBzHpswA== tarball: 'file:projects/cosmos.tgz' version: 0.0.0 'file:projects/event-hubs.tgz': @@ -12073,7 +11931,6 @@ packages: '@azure/abort-controller': 1.0.0-preview.2 '@azure/core-asynciterator-polyfill': 1.0.0-preview.1 '@azure/eslint-plugin-azure-sdk': 2.0.1_9e8391ca70fb0408a9da4393803aa477 - '@azure/identity': 1.0.0-preview.4 '@microsoft/api-extractor': 7.3.8 '@types/async-lock': 1.1.1 '@types/chai': 4.2.0 @@ -12144,7 +12001,7 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-e5F+te3S2GLw5WgYylx/saxL79rY02OZ2udFJoI35MUjQN57LAJPCHfiI3ooskZ+VTtnSJ8ZbMcD7LWrHI2r/w== + integrity: sha512-SLegkPhDOtKXTECUOYErqQB9NRBWjam16EoPnM0DGshlJV6YoTBZQnF9IBNS6Z7cUqnmnbW/5NgBkGjEVp1OEg== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -12202,12 +12059,12 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-W3yvQ/XpiLD0NxwDCHy8iuOnHcMAQDH0f9g336udX3pgtjhcxwjRVcUzuOK+u5e1At95pTE/LMFJoDFeJGvIrQ== + integrity: sha512-7Qk5AOasHTZrxBj7bDBlChwSFImEDSYG2yQJ4m6kdAKG6Byxg1OtL0ojBzf74UK1R4A+Bqz66pjBnhbI0MT6kA== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/eventhubs-checkpointstore-blob.tgz': dependencies: - '@azure/event-hubs': 5.0.0-preview.4 + '@azure/event-hubs': 5.0.0-preview.3 '@azure/storage-blob': 12.0.0-preview.3 '@microsoft/api-extractor': 7.3.11 '@types/chai': 4.2.1 @@ -12266,14 +12123,13 @@ packages: dev: false name: '@rush-temp/eventhubs-checkpointstore-blob' resolution: - integrity: sha512-OBVi+J20f7a6ncc9TM9bqFDXHqOrGeObakIN0CKnuXD9YrbwhxDCh88eNpTfSFpqNRw4tPKl+VfP1VdPeayWcg== + integrity: sha512-RDqg/yG/iW2lMsaUfJEeNTRusi8SJX6l5kXZRdo0pGIrqW4uvVD+MQlpGAO2szNACKuairxbdMCTJim7Mo2ShA== tarball: 'file:projects/eventhubs-checkpointstore-blob.tgz' version: 0.0.0 'file:projects/identity.tgz': dependencies: '@azure/abort-controller': 1.0.0-preview.2 - '@azure/core-http': 1.0.0-preview.3 - '@microsoft/api-extractor': 7.4.7 + '@microsoft/api-extractor': 7.5.0 '@types/express': 4.17.1 '@types/jws': 3.2.0 '@types/mocha': 5.2.7 @@ -12324,17 +12180,14 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-38OVf552fLqhtV1PDHv2nkCerLlzaWAjh+7DeD/a8rSvietx7imaBxph3s7gKh2TudizZb3hHuiRGewkY5MS/A== + integrity: sha512-xfZzhKMorSi8gvgyikO6oVyoK+zX0Fc1Z44aBTNS86gogL0WYuUHCLHIgva3Lf1fpSzlzg97D04OZGxspTh79A== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: - '@azure/core-arm': 1.0.0-preview.3 - '@azure/core-http': 1.0.0-preview.3 '@azure/core-paging': 1.0.0-preview.2 '@azure/core-tracing': 1.0.0-preview.1 '@azure/eslint-plugin-azure-sdk': 2.0.1_9e8391ca70fb0408a9da4393803aa477 - '@azure/identity': 1.0.0-preview.4 '@azure/keyvault-keys': 4.0.0-preview.7 '@azure/keyvault-secrets': 4.0.0-preview.7 '@microsoft/api-extractor': 7.3.8 @@ -12398,18 +12251,15 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-52vrcPfUPI8K9EVuNBV73Gyf+aRv9zwIuWV4aJ6RD9fTJ1eJsfWiQL7KVgO/Ig+lXmB3VmyqOvwarpcg9LN3iA== + integrity: sha512-cVBdjXEbjNxTmk/VjyR/6Ow679Xc8mzwjFMAVu7wTtDHW95YrDpzs/on+Pon7GkvCOB9kBbAzMYQsPRetzVpoQ== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': dependencies: '@azure/abort-controller': 1.0.0-preview.2 - '@azure/core-arm': 1.0.0-preview.3 - '@azure/core-http': 1.0.0-preview.3 '@azure/core-paging': 1.0.0-preview.2 '@azure/core-tracing': 1.0.0-preview.1 '@azure/eslint-plugin-azure-sdk': 2.0.1_9e8391ca70fb0408a9da4393803aa477 - '@azure/identity': 1.0.0-preview.4 '@microsoft/api-extractor': 7.3.8 '@types/chai': 4.2.0 '@types/dotenv': 6.1.1 @@ -12471,17 +12321,14 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-AkYjVgWbvpxnIIW0mjvuxk/THlSEqoLBVYxIkxQYPMaQPCkO68P0xEpEuFv4uANsWqOyGYAueti8l1Xd6svmxQ== + integrity: sha512-rAHnubIk5JjJq5obSlzK+/C7ZJF/IXNoh1Yo7Uzqk5c1hpKQSkAoSU2cGShVZzYeaCvQP6mVbvWp9+77vbzbNA== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': dependencies: '@azure/abort-controller': 1.0.0-preview.2 - '@azure/core-arm': 1.0.0-preview.3 - '@azure/core-http': 1.0.0-preview.3 '@azure/core-paging': 1.0.0-preview.2 '@azure/eslint-plugin-azure-sdk': 2.0.1_9e8391ca70fb0408a9da4393803aa477 - '@azure/identity': 1.0.0-preview.4 '@microsoft/api-extractor': 7.3.8 '@types/chai': 4.2.0 '@types/dotenv': 6.1.1 @@ -12543,23 +12390,23 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-CawEI8WsNXAFIXkAP9bdAoWm85aw3mKDkPs1gU6su5BJhOkfQW2IiKxn3g2mtvBzmxjn7l5Lc3YRMG12hUSu2g== + integrity: sha512-qDI0PiKzYCY5TEAuIhdjysEq7asrGlN1PbQ+1nmE+Euaphp/dfc5Dj6YxCgS10Fprt/TpzOsIiAl8+GgTFYmyQ== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/logger.tgz': dependencies: - '@microsoft/api-extractor': 7.4.7 + '@microsoft/api-extractor': 7.5.0 '@types/debug': 4.1.5 '@types/mocha': 5.2.7 '@types/node': 8.10.54 - '@typescript-eslint/eslint-plugin': 2.3.2_02831eb307232b3f286704a7de52b241 - '@typescript-eslint/parser': 2.3.2_eslint@6.5.1 + '@typescript-eslint/eslint-plugin': 2.3.3_ac2af3c58153fd08c91227fd925d839a + '@typescript-eslint/parser': 2.3.3_eslint@6.5.1 assert: 1.5.0 cross-env: 5.2.1 debug: 4.1.1 delay: 4.3.0 eslint: 6.5.1 - eslint-config-prettier: 6.3.0_eslint@6.5.1 + eslint-config-prettier: 6.4.0_eslint@6.5.1 eslint-plugin-no-null: 1.0.2_eslint@6.5.1 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 @@ -12580,20 +12427,20 @@ packages: nyc: 14.1.1 prettier: 1.18.2 rimraf: 3.0.0 - rollup: 1.23.0 - rollup-plugin-commonjs: 10.1.0_rollup@1.23.0 + rollup: 1.23.1 + rollup-plugin-commonjs: 10.1.0_rollup@1.23.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.23.0 + rollup-plugin-node-resolve: 5.2.0_rollup@1.23.1 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.23.0 - rollup-plugin-terser: 5.1.2_rollup@1.23.0 - ts-node: 8.4.1_typescript@3.6.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.23.1 + rollup-plugin-terser: 5.1.2_rollup@1.23.1 + ts-node: 8.4.1_typescript@3.6.4 tslib: 1.10.0 - typescript: 3.6.3 + typescript: 3.6.4 dev: false name: '@rush-temp/logger' resolution: - integrity: sha512-+Nx8+y6fhVkXAi9OBCCvwF0FLSsYgPPNTyx7U6cFqp0CjipkvzaJgHq1AvpLFcFa9s/1c9+d0NrP7RqILjiPoA== + integrity: sha512-8jQnSJDe92Q9ZXVoCz5vVb58ZvLh8cHIoiQciqbdoAjacYlV3WlWqInu2o91gtVMN8C2r/qj/tM0/wCROCPC2g== tarball: 'file:projects/logger.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -12671,7 +12518,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-MFTbKJFGZfLMYWcCjdZqdR+qJZ/8MpoNF8/KDB3hkkjkz4cOEZ4oPnCIBhlXR+/Wy2xg609i78c3JGYpml4haw== + integrity: sha512-cU9aNsoGM3njJPQ8HHDLjv5DJGJOLnTrVa9WbmlOaf7dEbFdgMdSqUh5FW6TdR9E80uy9juqCzvCJLE+E1Qy0g== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -12745,7 +12592,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-RooIVfX6NP24XFSxTqdF9QdmIWQytq0UcHD9hOkup1p8gIEt5PlRJZPnNa2Mm50je28tCP0vLl+JNr5G2LQHag== + integrity: sha512-mQfIW21XiLkG4P56uEfVKeJeq7d8Pe1YaxknHeM8DTwOsvLmsuAYZiyyDDtQx65mcVyQiBtN4xppKylWvmNSHA== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-file.tgz': @@ -12818,7 +12665,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-lY7ikcOBHAHr5qLHpqmwmaSvCEX/DEkOPrgNdNQPO9rng3/eWbll/IB6GcK3AyYk9j5hQVfUyDVGcb6ysfiZDw== + integrity: sha512-3bGCSVDCYa9rj7bogPFEstWCYFslGX8lj4u6asKBopaSJqK5empAKRaZ9qbvDTXDH9XBQy5gJhl9kYi0JJ9ohw== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -12890,12 +12737,11 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-bzeZi279XWXIBve64H6vcdVniNVfW6cQmmiyP1NNnBvGmuoLCGqG/lOvH7/6IMgTKPCPgucxrltHd42sHosA8Q== + integrity: sha512-fJQuIU+K/yb6x4aW8G1mqURMnX8VxJXiXs9cMNxUVhPHNyJTlzpRAsGg+tCDHBWuEyN8HoBl8sIs3ATwBNomnw== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': dependencies: - '@azure/core-http': 1.0.0-preview.3 '@microsoft/api-extractor': 7.3.8 '@types/mocha': 5.2.7 '@types/node': 8.10.52 @@ -12941,7 +12787,7 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-YOg2Wnk8iCfQEv3QMFs24hJTBsZErwW+Vh5ZRCPI2Ya0mjVbyQfIppv1dwXnzCUZrM+/DqId0MemlaWCrkkFOA== + integrity: sha512-clz7A393x9SUCVNli7f6WWF3mO7d/1fHFwmb3JrJZFS9hsWWMQnIi4SuMYy1HQsEztgN1EaKSS+4cxY1dCiwjg== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/test-utils-recorder.tgz': @@ -12969,7 +12815,7 @@ packages: dev: false name: '@rush-temp/test-utils-recorder' resolution: - integrity: sha512-5X0CLSRbJrplwH5JFkcDlSfzxzFeT/veoYhb9NB+q2hTDd9rXRjwePn76IWcVBtUzq2siSgvgrSsioDYiXMUsw== + integrity: sha512-SJjlxlVlW3QPkHFCP+M3QSAgrlVC50hl/ePd/Xmfixx8pl4uiLwm/ZOMmzQ59IfM1zryQw55BNPv2qu5/1hJXA== tarball: 'file:projects/test-utils-recorder.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -12990,7 +12836,7 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-RkYcAmpRKuAXwbssMJGmc8uzm3LoQikdGvIqdwioQqURgLagimtd01yH+757XDMvMyOfVwejTTSCZHpqa2Bf6Q== + integrity: sha512-XZB/wnNqz04DCZBqyhzkkYG8c/XduwpKK8uJbRcnJrvTthx844ix8Cn3nDHaoLlxODmoxP4xosiCiKTIn7EuBw== tarball: 'file:projects/testhub.tgz' version: 0.0.0 registry: '' diff --git a/sdk/core/core-http/lib/coreHttp.ts b/sdk/core/core-http/lib/coreHttp.ts index b965998e87b6..ce83bc164a65 100644 --- a/sdk/core/core-http/lib/coreHttp.ts +++ b/sdk/core/core-http/lib/coreHttp.ts @@ -106,3 +106,5 @@ export { ApiKeyCredentials, ApiKeyCredentialOptions } from "./credentials/apiKey export { ServiceClientCredentials } from "./credentials/serviceClientCredentials"; export { TopicCredentials } from "./credentials/topicCredentials"; export { Authenticator } from "./credentials/credentials"; + +export { parseXML, stringifyXML } from "./util/xml"; diff --git a/sdk/core/core-http/lib/util/utils.ts b/sdk/core/core-http/lib/util/utils.ts index fe18528ed20b..2f076be25a7a 100644 --- a/sdk/core/core-http/lib/util/utils.ts +++ b/sdk/core/core-http/lib/util/utils.ts @@ -7,6 +7,8 @@ import { RestError } from "../restError"; import { WebResource } from "../webResource"; import { Constants } from "./constants"; +const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/gi; + /** * A constant that indicates whether the environment is node.js or browser based. */ @@ -81,39 +83,9 @@ export function stripRequest(request: WebResource): WebResource { * @return {boolean} True if the uuid is valid; false otherwise. */ export function isValidUuid(uuid: string): boolean { - const validUuidRegex = new RegExp( - "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$", - "ig" - ); return validUuidRegex.test(uuid); } -/** - * Provides an array of values of an object. For example - * for a given object { "a": "foo", "b": "bar" }, the method returns ["foo", "bar"]. - * - * @param {object} obj An object whose properties need to be enumerated so that it"s values can be provided as an array - * - * @return {any[]} An array of values of the given object. - */ -export function objectValues(obj: { [key: string]: any }): any[] { - const result: any[] = []; - if (obj && obj instanceof Object) { - for (const key in obj) { - if (obj.hasOwnProperty(key)) { - result.push((obj)[key]); - } - } - } else { - const stringifiedObj = JSON.stringify(obj, undefined, 2); - throw new Error( - `The provided object ${stringifiedObj} is not a valid object that can be ` + - `enumerated to provide its values as an array.` - ); - } - return result; -} - /** * Generated UUID * @@ -142,21 +114,6 @@ export function executePromisesSequentially(promiseFactories: Array, kickst return result; } -/** - * Merges source object into the target object - * @param {object} source The object that needs to be merged - * - * @param {object} target The object to be merged into - * - * @returns {object} Returns the merged target object. - */ -export function mergeObjects(source: { [key: string]: any }, target: { [key: string]: any }) { - Object.keys(source).forEach((key) => { - target[key] = source[key]; - }); - return target; -} - /** * A wrapper for setTimeout that resolves a promise after t milliseconds. * @param {number} t The number of milliseconds to be delayed. @@ -276,10 +233,10 @@ export function replaceAll( } /** - * Determines whether the given enity is a basic/primitive type + * Determines whether the given entity is a basic/primitive type * (string, number, boolean, null, undefined). - * @param value Any entity - * @return boolean - true is it is primitive type, false otherwise. + * @param {any} value Any entity + * @return {boolean} - true is it is primitive type, false otherwise. */ export function isPrimitiveType(value: any): boolean { return (typeof value !== "object" && typeof value !== "function") || value === null; diff --git a/sdk/core/core-http/lib/util/xml.browser.ts b/sdk/core/core-http/lib/util/xml.browser.ts index 03cef5783f76..a63f33f667ec 100644 --- a/sdk/core/core-http/lib/util/xml.browser.ts +++ b/sdk/core/core-http/lib/util/xml.browser.ts @@ -1,13 +1,22 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +// tslint:disable-next-line:no-null-keyword +const doc = document.implementation.createDocument(null, null, null); + const parser = new DOMParser(); -export function parseXML(str: string): Promise { +export function parseXML(str: string, opts?: { includeRoot?: boolean }): Promise { try { const dom = parser.parseFromString(str, "application/xml"); throwIfError(dom); - const obj = domToObject(dom.childNodes[0]); + let obj; + if (opts && opts.includeRoot) { + obj = domToObject(dom); + } else { + obj = domToObject(dom.childNodes[0]); + } + return Promise.resolve(obj); } catch (err) { return Promise.reject(err); @@ -94,13 +103,11 @@ function domToObject(node: Node): any { return result; } -// tslint:disable-next-line:no-null-keyword -const doc = document.implementation.createDocument(null, null, null); const serializer = new XMLSerializer(); -export function stringifyXML(obj: any, opts?: { rootName?: string }) { +export function stringifyXML(content: any, opts?: { rootName?: string }): string { const rootName = (opts && opts.rootName) || "root"; - const dom = buildNode(obj, rootName)[0]; + const dom = buildNode(content, rootName)[0]; return ( '' + serializer.serializeToString(dom) ); @@ -117,9 +124,14 @@ function buildAttributes(attrs: { [key: string]: { toString(): string } }): Attr } function buildNode(obj: any, elementName: string): Node[] { - if (typeof obj === "string" || typeof obj === "number" || typeof obj === "boolean") { + if ( + obj == undefined || + typeof obj === "string" || + typeof obj === "number" || + typeof obj === "boolean" + ) { const elem = doc.createElement(elementName); - elem.textContent = obj.toString(); + elem.textContent = obj == undefined ? "" : obj.toString(); return [elem]; } else if (Array.isArray(obj)) { const result = []; @@ -136,6 +148,8 @@ function buildNode(obj: any, elementName: string): Node[] { for (const attr of buildAttributes(obj[key])) { elem.attributes.setNamedItem(attr); } + } else if (key === "_") { + elem.textContent = obj[key].toString(); } else { for (const child of buildNode(obj[key], key)) { elem.appendChild(child); diff --git a/sdk/core/core-http/lib/util/xml.ts b/sdk/core/core-http/lib/util/xml.ts index 575d9ab00da3..afff409a256a 100644 --- a/sdk/core/core-http/lib/util/xml.ts +++ b/sdk/core/core-http/lib/util/xml.ts @@ -3,24 +3,84 @@ import * as xml2js from "xml2js"; +// Note: The reason we re-define all of the xml2js default settings (version 2.0) here is because the default settings object exposed +// by the xm2js library is mutable. See https://github.com/Leonidas-from-XIV/node-xml2js/issues/536 +// By creating a new copy of the settings each time we instantiate the parser, +// we are safeguarding against the possibility of the default settings being mutated elsewhere unintentionally. +const xml2jsDefaultOptionsV2 = { + explicitCharkey: false, + trim: false, + normalize: false, + normalizeTags: false, + attrkey: "$", + charkey: "_", + explicitArray: true, + ignoreAttrs: false, + mergeAttrs: false, + explicitRoot: true, + validator: null, + xmlns: false, + explicitChildren: false, + preserveChildrenOrder: false, + childkey: "$$", + charsAsChildren: false, + includeWhiteChars: false, + async: false, + strict: true, + attrNameProcessors: null, + attrValueProcessors: null, + tagNameProcessors: null, + valueProcessors: null, + rootName: "root", + xmldec: { + version: "1.0", + encoding: "UTF-8", + standalone: true + }, + doctype: null, + renderOpts: { + pretty: true, + indent: " ", + newline: "\n" + }, + headless: false, + chunkSize: 10000, + emptyTag: "", + cdata: false +}; + +// The xml2js settings for general XML parsing operations. +const xml2jsParserSettings: any = Object.assign({}, xml2jsDefaultOptionsV2); +xml2jsParserSettings.explicitArray = false; + +// The xml2js settings for general XML building operations. +const xml2jsBuilderSettings: any = Object.assign({}, xml2jsDefaultOptionsV2); +xml2jsBuilderSettings.explicitArray = false; +xml2jsBuilderSettings.renderOpts = { + pretty: false +}; + +/** + * Converts given JSON object to XML string + * @param obj JSON object to be converted into XML string + * @param opts Options that govern the parsing of given JSON object + * `rootName` indicates the name of the root element in the resulting XML + */ export function stringifyXML(obj: any, opts?: { rootName?: string }) { - const builder = new xml2js.Builder({ - explicitArray: false, - explicitCharkey: false, - rootName: (opts || {}).rootName, - renderOpts: { - pretty: false - } - }); + xml2jsBuilderSettings.rootName = (opts || {}).rootName; + const builder = new xml2js.Builder(xml2jsBuilderSettings); return builder.buildObject(obj); } -export function parseXML(str: string): Promise { - const xmlParser = new xml2js.Parser({ - explicitArray: false, - explicitCharkey: false, - explicitRoot: false - }); +/** + * Converts given XML string into JSON + * @param str String containing the XML content to be parsed into JSON + * @param opts Options that govern the parsing of given xml string + * `includeRoot` indicates whether the root element is to be included or not in the output + */ +export function parseXML(str: string, opts?: { includeRoot?: boolean }): Promise { + xml2jsParserSettings.explicitRoot = !!(opts && opts.includeRoot); + const xmlParser = new xml2js.Parser(xml2jsParserSettings); return new Promise((resolve, reject) => { if (!str) { reject(new Error("Document is empty")); diff --git a/sdk/core/core-http/rollup.config.ts b/sdk/core/core-http/rollup.config.ts index 57c392c6cb71..54a997f42195 100644 --- a/sdk/core/core-http/rollup.config.ts +++ b/sdk/core/core-http/rollup.config.ts @@ -42,7 +42,7 @@ const nodeConfig = { }, plugins: [ nodeResolve({ - mainFields: ["module", "main"], + mainFields: ["module", "main"] }), commonjs(), sourcemaps(), diff --git a/sdk/core/core-http/test/xmlTests.ts b/sdk/core/core-http/test/xmlTests.ts index 200720fc74cc..fd9f0d1fb831 100644 --- a/sdk/core/core-http/test/xmlTests.ts +++ b/sdk/core/core-http/test/xmlTests.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { parseXML } from "../lib/util/xml"; +import { parseXML, stringifyXML } from "../lib/util/xml"; import { assert } from "chai"; import * as msAssert from "./msAssert"; @@ -115,6 +115,275 @@ describe("XML serializer", function() { }); }); + describe("parseXML(string) with root", function() { + it("with empty element", async function() { + const json: any = await parseXML("", { includeRoot: true }); + assert.deepStrictEqual(json, { fruit: `` }); + }); + + it("with empty element with attribute", async function() { + const json: any = await parseXML(``, { + includeRoot: true + }); + assert.deepStrictEqual(json, { + fruit: { + $: { + healthy: "true" + } + } + }); + }); + + it("with element", async function() { + const json: any = await parseXML("", { includeRoot: true }); + assert.deepStrictEqual(json, { fruit: `` }); + }); + + it("with element with value", async function() { + const json: any = await parseXML("hurray", { includeRoot: true }); + assert.deepStrictEqual(json, { fruit: `hurray` }); + }); + + it("with unwanted BOM characters", async function() { + const json: any = await parseXML("\uFEFFapple", { + includeRoot: true + }); + assert.deepStrictEqual(json, { fruit: "apple" }); + }); + + it("with element with attribute", async function() { + const json: any = await parseXML(``, { + includeRoot: true + }); + assert.deepStrictEqual(json, { + fruit: { + $: { + healthy: "true" + } + } + }); + }); + + it("with element with attribute and value", async function() { + const json: any = await parseXML(`yum`, { + includeRoot: true + }); + assert.deepStrictEqual(json, { + fruit: { + $: { + healthy: "true" + }, + _: "yum" + } + }); + }); + + it("with element with child empty element", async function() { + const json: any = await parseXML(``, { + includeRoot: true + }); + assert.deepStrictEqual(json, { + fruit: { + apples: `` + } + }); + }); + + it("with element with child empty element with attribute", async function() { + const json: any = await parseXML(``, { includeRoot: true }); + assert.deepStrictEqual(json, { + apples: { + $: { + tasty: "true" + } + } + }); + }); + + it("with element with child element with value", async function() { + const json: any = await parseXML(`yum`, { includeRoot: true }); + assert.deepStrictEqual(json, { + apples: "yum" + }); + }); + + it("with element with child element with attribute and value", async function() { + const json: any = await parseXML(`yum`, { + includeRoot: true + }); + assert.deepStrictEqual(json, { + apples: { + $: { + tasty: "true" + }, + _: "yum" + } + }); + }); + + it("should handle errors gracefully", async function() { + try { + await parseXML("INVALID", { includeRoot: true }); + throw new Error("did not throw"); + } catch (err) { + if (err.message === "did not throw") { + throw err; + } + } + }); + }); + + describe("stringifyXML(JSON) with root", function() { + it("with empty element with attribute", async function() { + const xml: any = await stringifyXML( + { + fruit: { + $: { + healthy: "true" + } + } + }, + { rootName: "fruits" } + ); + assert.deepStrictEqual( + xml, + `` + ); + }); + + it("with element", async function() { + const xml: any = await stringifyXML({ fruit: `` }, { rootName: "fruits" }); + assert.deepStrictEqual( + xml, + `` + ); + }); + + it("with element with value", async function() { + const xml: any = await stringifyXML({ fruit: `hurray` }, { rootName: "fruits" }); + assert.deepStrictEqual( + xml, + `hurray` + ); + }); + + it("with element with attribute", async function() { + const xml: any = await stringifyXML( + { + fruit: { + $: { + healthy: "true" + } + } + }, + { rootName: "fruits" } + ); + assert.deepStrictEqual( + xml, + `` + ); + }); + + it("with element with attribute and value", async function() { + const xml: any = await stringifyXML( + { + fruit: { + $: { + healthy: "true" + }, + _: "yum" + } + }, + { rootName: "fruits" } + ); + assert.deepStrictEqual( + xml, + `yum` + ); + }); + + it("with element with attribute and value", async function() { + const xml: any = await stringifyXML( + { + fruit: { + $: { + healthy: "true" + }, + _: "yum" + } + }, + { rootName: "fruits" } + ); + assert.deepStrictEqual( + xml, + `yum` + ); + }); + + it("with element with child undefined element", async function() { + const xml: any = await stringifyXML( + { + fruit: { + apples: undefined + } + }, + { rootName: "fruits" } + ); + assert.deepStrictEqual( + xml, + `` + ); + }); + + it("with element with child empty element with attribute", async function() { + const xml: any = await stringifyXML( + { + apples: { + $: { + tasty: "true" + } + } + }, + { rootName: "fruits" } + ); + assert.deepStrictEqual( + xml, + `` + ); + }); + + it("with element with child element with value", async function() { + const xml: any = await stringifyXML( + { + apples: "yum" + }, + { rootName: "fruits" } + ); + assert.deepStrictEqual( + xml, + `yum` + ); + }); + + it("with element with child element with attribute and value", async function() { + const xml: any = await stringifyXML( + { + apples: { + $: { + tasty: "true" + }, + _: "yum" + } + }, + { rootName: "fruits" } + ); + assert.deepStrictEqual( + xml, + `yum` + ); + }); + }); + it("should handle errors gracefully", async function() { try { await parseXML("INVALID");