diff --git a/common/config/rush/common-versions.json b/common/config/rush/common-versions.json index 1ac1c471db02..5e309d53e9ef 100644 --- a/common/config/rush/common-versions.json +++ b/common/config/rush/common-versions.json @@ -43,6 +43,8 @@ "@azure/ms-rest-js": ["^2.0.0"], // Following is required to allow for backward compatibility with Service Bus Track 1 // TODO: Remove this once Service Bus is updated to use current depenedencies as part of Track 2 - "rhea-promise": ["^0.1.15"] + "rhea-promise": ["^0.1.15"], + // Following is required to allow for backward compatibility with Event Processor Host Track 1 + "@azure/event-hubs": ["^2.1.1"] } } diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 725e717a537a..348dca8a82b8 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -7,7 +7,8 @@ dependencies: '@azure/logger-js': 1.3.2 '@azure/ms-rest-js': 2.0.4 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.3.11 + '@azure/storage-blob': 12.0.0-preview.2 + '@microsoft/api-extractor': 7.3.8 '@rush-temp/abort-controller': 'file:projects/abort-controller.tgz' '@rush-temp/app-configuration': 'file:projects/app-configuration.tgz' '@rush-temp/core-amqp': 'file:projects/core-amqp.tgz' @@ -17,9 +18,10 @@ dependencies: '@rush-temp/core-http': 'file:projects/core-http.tgz' '@rush-temp/core-paging': 'file:projects/core-paging.tgz' '@rush-temp/core-tracing': 'file:projects/core-tracing.tgz' - '@rush-temp/cosmos': 'file:projects/cosmos.tgz_webpack@4.39.3' + '@rush-temp/cosmos': 'file:projects/cosmos.tgz_webpack@4.39.2' '@rush-temp/event-hubs': 'file:projects/event-hubs.tgz' '@rush-temp/event-processor-host': 'file:projects/event-processor-host.tgz' + '@rush-temp/eventhubs-checkpoint-blob': 'file:projects/eventhubs-checkpoint-blob.tgz' '@rush-temp/identity': 'file:projects/identity.tgz' '@rush-temp/keyvault-certificates': 'file:projects/keyvault-certificates.tgz' '@rush-temp/keyvault-keys': 'file:projects/keyvault-keys.tgz' @@ -33,7 +35,7 @@ dependencies: '@rush-temp/testhub': 'file:projects/testhub.tgz' '@trust/keyto': 0.3.7 '@types/async-lock': 1.1.1 - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 '@types/chai-as-promised': 7.1.2 '@types/chai-string': 1.4.2 '@types/debug': 4.1.5 @@ -51,7 +53,7 @@ dependencies: '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/node-fetch': 2.5.0 '@types/priorityqueuejs': 1.0.1 '@types/qs': 6.5.3 @@ -62,13 +64,13 @@ dependencies: '@types/tunnel': 0.0.1 '@types/underscore': 1.9.2 '@types/uuid': 3.4.5 - '@types/webpack': 4.39.1 + '@types/webpack': 4.39.0 '@types/webpack-dev-middleware': 2.0.3 '@types/ws': 6.0.3 '@types/xml2js': 0.4.4 '@types/yargs': 13.0.2 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 abort-controller: 3.0.0 assert: 1.5.0 async-lock: 1.2.2 @@ -76,20 +78,20 @@ dependencies: azure-storage: 2.10.3 babel-runtime: 6.26.0 binary-search-bounds: 2.0.3 - buffer: 5.4.2 + buffer: 5.4.0 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 chai-string: 1.5.0_chai@4.2.0 - cross-env: 5.2.1 + cross-env: 5.2.0 crypto-hash: 1.1.0 death: 1.1.0 debug: 4.1.1 delay: 4.3.0 dotenv: 8.1.0 es6-promise: 4.2.8 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 esm: 3.2.18 @@ -98,9 +100,10 @@ dependencies: express: 4.17.1 fast-json-stable-stringify: 2.0.0 fetch-mock: 7.3.9 - form-data: 2.5.1 + form-data: 2.5.0 fs-extra: 8.1.0 glob: 7.1.4 + guid-typescript: 1.0.9 gulp: 4.0.2 gulp-zip: 5.0.0_gulp@4.0.2 https-proxy-agent: 2.2.2 @@ -108,26 +111,26 @@ dependencies: is-buffer: 2.0.3 jssha: 2.3.1 jws: 3.2.2 - karma: 4.3.0 - karma-chai: 0.1.0_chai@4.2.0+karma@4.3.0 + karma: 4.2.0 + karma-chai: 0.1.0_chai@4.2.0+karma@4.2.0 karma-chrome-launcher: 3.1.0 karma-cli: 2.0.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-json-preprocessor: 0.3.3_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-json-preprocessor: 0.3.3_karma@4.2.0 karma-json-to-file-reporter: 1.0.1 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 - karma-requirejs: 1.1.0_karma@4.3.0+requirejs@2.3.6 - karma-rollup-preprocessor: 7.0.2_rollup@1.20.3 + karma-requirejs: 1.1.0_karma@4.2.0+requirejs@2.3.6 + karma-rollup-preprocessor: 7.0.2_rollup@1.20.1 karma-sourcemap-loader: 0.3.7 karma-typescript-es6-transform: 4.1.1 - karma-webpack: 4.0.2_webpack@4.39.3 + karma-webpack: 4.0.2_webpack@4.39.2 long: 4.0.0 mocha: 6.2.0 mocha-chrome: 2.0.0 @@ -135,7 +138,7 @@ dependencies: mocha-multi: 1.1.3_mocha@6.2.0 moment: 2.24.0 msal: 1.1.3 - nise: 1.5.2 + nise: 1.5.1 nock: 11.3.2 node-abort-controller: 1.0.3 node-fetch: 2.6.0 @@ -155,57 +158,63 @@ dependencies: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 3.0.0 - rollup: 1.20.3 + rollup: 1.20.1 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-inject: 3.0.1 rollup-plugin-json: 4.0.0 rollup-plugin-local-resolve: 1.0.7 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-uglify: 6.0.3_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-uglify: 6.0.2_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 semaphore: 1.0.5 shx: 0.3.2 - sinon: 7.4.2 + sinon: 7.4.1 source-map-support: 0.5.13 stream-browserify: 2.0.2 - terser: 4.2.1 + terser: 4.2.0 tough-cookie: 3.0.1 - ts-loader: 6.0.4_typescript@3.6.2 + ts-loader: 6.0.4_typescript@3.5.3 ts-mocha: 6.0.0_mocha@6.2.0 - ts-node: 8.3.0_typescript@3.6.2 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 tunnel: 0.0.6 typedoc: 0.15.0 - typescript: 3.6.2 + typescript: 3.5.3 uglify-js: 3.6.0 universal-user-agent: 2.1.0 url: 0.11.0 util: 0.12.1 uuid: 3.3.3 - webpack: 4.39.3_webpack@4.39.3 - webpack-cli: 3.3.7_webpack@4.39.3 - webpack-dev-middleware: 3.7.1_webpack@4.39.3 + webpack: 4.39.2_webpack@4.39.2 + webpack-cli: 3.3.7_webpack@4.39.2 + webpack-dev-middleware: 3.7.0_webpack@4.39.2 ws: 7.1.2 xhr-mock: 2.5.0 - xml2js: 0.4.22 + xml2js: 0.4.19 yargs: 14.0.0 yarn: 1.17.3 lockfileVersion: 5.1 packages: + /@azure/abort-controller/1.0.0-preview.1: + dependencies: + tslib: 1.10.0 + dev: false + resolution: + integrity: sha512-NnJqi6oHqt06Q2hz4nO1HO0QlyusBa3E/wezvn9flHEtl0IHYSmzGbtlb+MaAJ5GzxwqSevQ4q1+4B8fvVijOA== /@azure/amqp-common/1.0.0-preview.6_rhea-promise@0.1.15: dependencies: '@azure/ms-rest-nodeauth': 0.9.3 '@types/async-lock': 1.1.1 '@types/is-buffer': 2.0.0 async-lock: 1.2.2 - buffer: 5.4.2 + buffer: 5.4.0 debug: 3.2.6 events: 3.0.0 is-buffer: 2.0.3 @@ -233,6 +242,40 @@ packages: dev: false resolution: integrity: sha512-hMp0y+j/odkAyTa5TYewn4hUlFdEe3sR9uTd2Oq+se61RtuDsqM7UWrNNlyylPyjIENSZHJVWN7jte/jvvMN2Q== + /@azure/core-auth/1.0.0-preview.2: + dependencies: + '@azure/abort-controller': 1.0.0-preview.1 + tslib: 1.10.0 + dev: false + resolution: + integrity: sha512-QATxlKPP2Yld8+eg8Hz8mXmowlG/z9B53HTkjBz0oJIzR+dBm9HJY2bPnT7RB8nyqdnm8JpU2mIp8YVZZO6ubg== + /@azure/core-http/1.0.0-preview.2: + dependencies: + '@azure/core-auth': 1.0.0-preview.2 + '@types/tunnel': 0.0.1 + axios: 0.19.0 + form-data: 2.5.0 + process: 0.11.10 + tough-cookie: 3.0.1 + tslib: 1.10.0 + tunnel: 0.0.6 + uuid: 3.3.3 + xml2js: 0.4.19 + dev: false + resolution: + integrity: sha512-7zvbuMxwFjqvZ8knyEky+tWJYq6nK/pDIOI44nuCsdzdeCA8G9Ul3tXuQ+1lI4NOUfd2Scj8Ckgb4Xh9+ckOuw== + /@azure/core-paging/1.0.0-preview.1: + dependencies: + '@azure/core-asynciterator-polyfill': 1.0.0-preview.1 + dev: false + resolution: + integrity: sha512-mZHkadyAbhV1+brHEsWICnURW6E72D2HReM+8MWDn5oVJdlxD51w14PeqsOZC4UDYv4x2Eww5+PFRTEOrNB1Uw== + /@azure/core-tracing/1.0.0-preview.1: + dependencies: + tslib: 1.10.0 + dev: false + resolution: + integrity: sha512-nDfxQopw7lfJG5N845BOS6Vcl84GcB1Q3BHKJAHghLOmdHQjV9Z92M4ziFAQ60UnOj2zrUefM6yDZcKjANCcyg== /@azure/cosmos-sign/1.0.2: dependencies: crypto-js: 3.1.9-1 @@ -274,12 +317,12 @@ packages: dependencies: '@types/tunnel': 0.0.0 axios: 0.19.0 - form-data: 2.5.1 + form-data: 2.5.0 tough-cookie: 2.5.0 tslib: 1.10.0 tunnel: 0.0.6 uuid: 3.3.3 - xml2js: 0.4.22 + xml2js: 0.4.19 dev: false resolution: integrity: sha512-jAa6Y2XrvwbEqkaEXDHK+ReNo0WnCPS+LgQ1dRAJUUNxK4CghF5u+SXsVtPENritilVE7FVteqsLOtlhTk+haA== @@ -288,13 +331,13 @@ packages: '@types/node-fetch': 2.5.0 '@types/tunnel': 0.0.1 abort-controller: 3.0.0 - form-data: 2.5.1 + form-data: 2.5.0 node-fetch: 2.6.0 tough-cookie: 3.0.1 tslib: 1.10.0 tunnel: 0.0.6 uuid: 3.3.3 - xml2js: 0.4.22 + xml2js: 0.4.19 dev: false resolution: integrity: sha512-nSOPt6st0RtxclYBQV65qXZpvMDqiDQssktvB/SMTAJ5bIytSPtBmlttTTigO5qHvwQcfzzpQE0sMceK+dJ/IQ== @@ -306,6 +349,16 @@ packages: dev: false resolution: integrity: sha512-aFHRw/IHhg3I9ZJW+Va4L+sCirFHMVIu6B7lFdL5mGLfG3xC5vDIdd957LRXFgy2OiKFRUC0QaKknd0YCsQIqA== + /@azure/storage-blob/12.0.0-preview.2: + dependencies: + '@azure/abort-controller': 1.0.0-preview.1 + '@azure/core-http': 1.0.0-preview.2 + '@azure/core-paging': 1.0.0-preview.1 + events: 3.0.0 + tslib: 1.10.0 + dev: false + resolution: + integrity: sha512-YOZ3l065gmnaLdcpkyY+C02x2yi9XFo5ARZQGtoDMUz7VD+QzIbDwWsYlWOArVEm5Dxhl3v1zKJ1V6bi06iHEQ== /@babel/code-frame/7.5.5: dependencies: '@babel/highlight': 7.5.0 @@ -387,6 +440,14 @@ packages: dev: false resolution: integrity: sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw== + /@microsoft/api-extractor-model/7.3.2: + dependencies: + '@microsoft/node-core-library': 3.14.0 + '@microsoft/tsdoc': 0.12.12 + '@types/node': 8.5.8 + dev: false + resolution: + integrity: sha512-2yNbQsQl5PI36l5WzHQshwjBHPe5IeIcmidWad0E+wjyaAxGMLx5pBp5AgXY2JG9S9VQjFmmGmqJJBXn8tzu+w== /@microsoft/api-extractor-model/7.3.4: dependencies: '@microsoft/node-core-library': 3.14.1 @@ -410,6 +471,34 @@ packages: hasBin: true resolution: integrity: sha512-i/hBovsbk1btBIQFWHHbAQdcXxL07+nYwF6wxDabtM+rJgySQ/flsjZJYXJV+ADlP0L3jyKdWZNF03M3zlQUlw== + /@microsoft/api-extractor/7.3.8: + dependencies: + '@microsoft/api-extractor-model': 7.3.2 + '@microsoft/node-core-library': 3.14.0 + '@microsoft/ts-command-line': 4.2.7 + '@microsoft/tsdoc': 0.12.12 + 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-zw3HWmPW9vWWIoI3SPb2tuJ2suXVoF9ty37Mww+00I4gKLPPDooVad1kBiNtdjHXBj0QwYAOsGcfoBN9Qgt2bw== + /@microsoft/node-core-library/3.14.0: + dependencies: + '@types/fs-extra': 5.0.4 + '@types/jju': 1.4.1 + '@types/node': 8.5.8 + '@types/z-schema': 3.16.31 + colors: 1.2.5 + fs-extra: 7.0.1 + jju: 1.4.0 + z-schema: 3.18.4 + dev: false + resolution: + integrity: sha512-+gbTXTRfvR40hTH+C3Vno/RJ51sU/RZAyHb2bo9af8GCdOgxCxCs+qp2KCXklbpuolmIPFfbCmdTwv90yH5tJw== /@microsoft/node-core-library/3.14.1: dependencies: '@types/fs-extra': 5.0.4 @@ -432,6 +521,10 @@ packages: dev: false resolution: integrity: sha512-PwUMIIDl8oWyl64Y5DW5FAuoRk4KWTBZdk4FEh366KEm5xYFBQhCeatHGURIj8nEYm0Xb2coCrXF77dGDlp/Qw== + /@microsoft/tsdoc/0.12.12: + dev: false + resolution: + integrity: sha512-5EzH1gHIonvvgA/xWRmVAJmRkTQj/yayUXyr66hFwNZiFE4j7lP8is9YQeXhwxGZEjO1PVMblAmFF0CyjNtPGw== /@microsoft/tsdoc/0.12.14: dev: false resolution: @@ -465,7 +558,7 @@ packages: dependencies: asn1.js: 5.2.0 base64url: 3.0.1 - elliptic: 6.5.1 + elliptic: 6.5.0 dev: false resolution: integrity: sha512-t5kWWCTkPgg24JWVuCTPMx7l13F7YHdxBeJkT1vmoHjROgiOIEAN8eeY+iRmP1Hwsx+S7U55HyuqSsECr08a8A== @@ -488,29 +581,33 @@ packages: /@types/body-parser/1.17.1: dependencies: '@types/connect': 3.4.32 - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-RoX2EZjMiFMjZh9lmYrwgoP9RTpAjSHiJxdp4oidAQVO02T7HER3xj9UKue5534ULWeqVEkujhWcyvUce+d68w== /@types/chai-as-promised/7.1.2: dependencies: - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 dev: false resolution: integrity: sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q== /@types/chai-string/1.4.2: dependencies: - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 dev: false resolution: integrity: sha512-ld/1hV5qcPRGuwlPdvRfvM3Ka/iofOk2pH4VkasK4b1JJP1LjNmWWn0LsISf6RRzyhVOvs93rb9tM09e+UuF8Q== + /@types/chai/4.2.0: + dev: false + resolution: + integrity: sha512-zw8UvoBEImn392tLjxoavuonblX/4Yb9ha4KBU10FirCfwgzhKO0dvyJSF9ByxV1xK1r2AgnAi/tvQaLgxQqxA== /@types/chai/4.2.1: dev: false resolution: integrity: sha512-LDKlQW/V8bQr5p9aoHye9p7x9faxq0GVeWAkn/Zgyyn848LIAzuR1sHQjGmUBFUpINuGWDG2NTM/ofA2aLMIew== /@types/connect/3.4.32: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg== @@ -520,7 +617,7 @@ packages: integrity: sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== /@types/dotenv/6.1.1: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg== @@ -538,7 +635,7 @@ packages: integrity: sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== /@types/express-serve-static-core/4.16.9: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/range-parser': 1.2.3 dev: false resolution: @@ -567,7 +664,7 @@ packages: integrity: sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g== /@types/fs-extra/8.0.0: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-bCtL5v9zdbQW86yexOlXWTEGvLNqWxMFyi7gQA7Gcthbezr2cPSOb8SkESVKA937QD5cIwOFLDFt0MQoXOEr9Q== @@ -575,13 +672,13 @@ packages: dependencies: '@types/events': 3.0.0 '@types/minimatch': 3.0.3 - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== /@types/is-buffer/2.0.0: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-0f7N/e3BAz32qDYvgB4d2cqv1DqUwvGxHkXsrucICn8la1Vb6Yl6Eg8mPScGwUiqHJeE7diXlzaK+QMA9m4Gxw== @@ -604,14 +701,14 @@ packages: integrity: sha512-oBnY3csYnXfqZXDRBJwP1nDDJCW/+VMJ88UHT4DCy0deSXpJIQvMCwYlnmdW4M+u7PiSfQc44LmiFcUbJ8hLEw== /@types/jws/3.2.0: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-2s6isKtNTfbfeP/VtvdB9JXE1LkFXndO2AjQ2f+nvTqwL8bxK1s9qxmymwklCpNthJG16dwvpsBjKE14Yc/pbA== /@types/karma/3.0.3: dependencies: '@types/bluebird': 3.5.27 - '@types/node': 8.10.53 + '@types/node': 8.10.52 log4js: 3.0.6 dev: false resolution: @@ -622,7 +719,7 @@ packages: integrity: sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== /@types/memory-fs/0.3.2: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-j5AcZo7dbMxHoOimcHEIh0JZe5e1b8q8AqGSpZJrYc7xOgCIP79cIjTdx5jSDLtySnQDwkDTqwlC7Xw7uXw7qg== @@ -644,20 +741,28 @@ packages: integrity: sha512-DPxmjiDwubsNmguG5X4fEJ+XCyzWM3GXWsqQlvUcjJKa91IOoJUy51meDr0GkzK64qqNcq85ymLlyjoct9tInw== /@types/nock/10.0.3: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow== /@types/node-fetch/2.5.0: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-TLFRywthBgL68auWj+ziWu+vnmmcHCDFC/sqCOQf1xTz4hRq8cu79z8CtHU9lncExGBsB8fXA4TiLDLt6xvMzw== + /@types/node/12.7.2: + dev: false + resolution: + integrity: sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg== /@types/node/12.7.4: dev: false resolution: integrity: sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ== + /@types/node/8.10.52: + dev: false + resolution: + integrity: sha512-2RbW7WXeLex6RI+kQSxq6Ym0GiVcODeQ4Km7MnnTX5BHdOGQnqVa+s6AUmAW+OFYAJ8wv9QxvNZXm7/kBdGTVw== /@types/node/8.10.53: dev: false resolution: @@ -684,7 +789,7 @@ packages: integrity: sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== /@types/resolve/0.0.8: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== @@ -692,6 +797,10 @@ packages: dev: false resolution: integrity: sha512-YD+lyrPhrsJdSOaxmA9K1lzsCoN0J29IsQGMKd67SbkPDXxJPdwdqpok1sytD19NEozUaFpjIsKOWnJDOYO/GA== + /@types/semver/5.5.0: + dev: false + resolution: + integrity: sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ== /@types/serve-static/1.13.3: dependencies: '@types/express-serve-static-core': 4.16.9 @@ -717,13 +826,13 @@ packages: integrity: sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg== /@types/tunnel/0.0.0: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-FGDp0iBRiBdPjOgjJmn1NH0KDLN+Z8fRmo+9J7XGBhubq1DPrGrbmG4UTlGzrpbCpesMqD0sWkzi27EYkOMHyg== /@types/tunnel/0.0.1: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== @@ -739,7 +848,7 @@ packages: integrity: sha512-KgOKTAD+9X+qvZnB5S1+onqKc4E+PZ+T6CM/NA5ohRPLHJXb+yCJMVf8pWOnvuBuKFNUAJW8N97IA6lba6mZGg== /@types/uuid/3.4.5: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA== @@ -747,39 +856,39 @@ packages: dependencies: '@types/connect': 3.4.32 '@types/memory-fs': 0.3.2 - '@types/webpack': 4.39.1 + '@types/webpack': 4.39.0 loglevel: 1.6.3 dev: false resolution: integrity: sha512-DzNJJ6ah/6t1n8sfAgQyEbZ/OMmFcF9j9P3aesnm7G6/iBFR/qiGin8K89J0RmaWIBzhTMdDg3I5PmKmSv7N9w== /@types/webpack-sources/0.1.5: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/source-list-map': 0.1.2 source-map: 0.6.1 dev: false resolution: integrity: sha512-zfvjpp7jiafSmrzJ2/i3LqOyTYTuJ7u1KOXlKgDlvsj9Rr0x7ZiYu5lZbXwobL7lmsRNtPXlBfmaUD8eU2Hu8w== - /@types/webpack/4.39.1: + /@types/webpack/4.39.0: dependencies: '@types/anymatch': 1.3.1 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/tapable': 1.0.4 '@types/uglify-js': 3.0.4 '@types/webpack-sources': 0.1.5 source-map: 0.6.1 dev: false resolution: - integrity: sha512-rgO9ihNu/l72Sjx3shqwc9r6gi+tOMsqxhMEZhOEVIZt82GFOeUyEdpTk1BO2HqEHLS/XJW8ldUTIIfIMMyYFQ== + integrity: sha512-8gUiAl6RBI4IoCJVQ9AChp4k2Tcd4ocNei2S83goHKCj8WesBtlqp9/wPd29dArHIGMdHxICwBi8YMm8PD6PEg== /@types/ws/6.0.3: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-yBTM0P05Tx9iXGq00BbJPo37ox68R5vaGTXivs6RGh/BQ6QP5zqZDGWdAO6JbRE/iR1l80xeGAwCQS2nMV9S/w== /@types/xml2js/0.4.4: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-O6Xgai01b9PB3IGA0lRIp1Ex3JBcxGDhdO0n3NIIpCyDOAjxcIGQFmkvgJpP8anTrthxOUQjBfLdRRi0Zn/TXA== @@ -797,6 +906,24 @@ packages: dev: false resolution: integrity: sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw= + /@typescript-eslint/eslint-plugin/2.0.0_3cafee28902d96627d4743e014bc28ff: + dependencies: + '@typescript-eslint/experimental-utils': 2.0.0_eslint@6.2.1 + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 + eslint: 6.2.1 + eslint-utils: 1.4.2 + functional-red-black-tree: 1.0.1 + regexpp: 2.0.1 + tsutils: 3.17.1_typescript@3.5.3 + dev: false + engines: + node: ^8.10.0 || ^10.13.0 || >=11.10.1 + peerDependencies: + '@typescript-eslint/parser': ^2.0.0-alpha.0 + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + resolution: + integrity: sha512-Mo45nxTTELODdl7CgpZKJISvLb+Fu64OOO2ZFc2x8sYSnUpFrBUW3H+H/ZGYmEkfnL6VkdtOSxgdt+Av79j0sA== /@typescript-eslint/eslint-plugin/2.1.0_3a8cea979a77aa77c321dad4153067ce: dependencies: '@typescript-eslint/experimental-utils': 2.1.0_eslint@6.3.0 @@ -815,6 +942,19 @@ packages: typescript: '*' resolution: integrity: sha512-3i/dLPwxaVfCsaLu3HkB8CAA1Uw3McAegrTs+VBJ0BrGRKW7nUwSqRfHfCS7sw7zSbf62q3v0v6pOS8MyaYItg== + /@typescript-eslint/experimental-utils/2.0.0_eslint@6.2.1: + dependencies: + '@types/json-schema': 7.0.3 + '@typescript-eslint/typescript-estree': 2.0.0 + eslint: 6.2.1 + eslint-scope: 4.0.3 + dev: false + engines: + node: ^8.10.0 || ^10.13.0 || >=11.10.1 + peerDependencies: + eslint: '*' + resolution: + integrity: sha512-XGJG6GNBXIEx/mN4eTRypN/EUmsd0VhVGQ1AG+WTgdvjHl0G8vHhVBHrd/5oI6RRYBRnedNymSYWW1HAdivtmg== /@typescript-eslint/experimental-utils/2.1.0_eslint@6.3.0: dependencies: '@types/json-schema': 7.0.3 @@ -828,6 +968,20 @@ packages: eslint: '*' resolution: integrity: sha512-ZJGLYXa4nxjNzomaEk1qts38B/vludg2LOM7dRc7SppEKsMPTS1swaTKS/pom+x4d/luJGoG00BDIss7PR1NQA== + /@typescript-eslint/parser/2.0.0_eslint@6.2.1: + dependencies: + '@types/eslint-visitor-keys': 1.0.0 + '@typescript-eslint/experimental-utils': 2.0.0_eslint@6.2.1 + '@typescript-eslint/typescript-estree': 2.0.0 + eslint: 6.2.1 + eslint-visitor-keys: 1.1.0 + dev: false + engines: + node: ^8.10.0 || ^10.13.0 || >=11.10.1 + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 + resolution: + integrity: sha512-ibyMBMr0383ZKserIsp67+WnNVoM402HKkxqXGlxEZsXtnGGurbnY90pBO3e0nBUM7chEEOcxUhgw9aPq7fEBA== /@typescript-eslint/parser/2.1.0_eslint@6.3.0: dependencies: '@types/eslint-visitor-keys': 1.0.0 @@ -842,6 +996,15 @@ packages: eslint: ^5.0.0 || ^6.0.0 resolution: integrity: sha512-0+hzirRJoqE1T4lSSvCfKD+kWjIpDWfbGBiisK5CENcr+22pPkHB2sfV1giON+UxHV4A08SSrQonZk7X2zIQdw== + /@typescript-eslint/typescript-estree/2.0.0: + dependencies: + lodash.unescape: 4.0.1 + semver: 6.3.0 + dev: false + engines: + node: ^8.10.0 || ^10.13.0 || >=11.10.1 + resolution: + integrity: sha512-NXbmzA3vWrSgavymlzMWNecgNOuiMMp62MO3kI7awZRLRcsA1QrYWo6q08m++uuAGVbXH/prZi2y1AWuhSu63w== /@typescript-eslint/typescript-estree/2.1.0: dependencies: glob: 7.1.4 @@ -1051,7 +1214,7 @@ packages: integrity: sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== /adal-node/0.1.28: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 async: 3.1.0 date-utils: 1.2.21 jws: 3.2.2 @@ -1211,15 +1374,13 @@ packages: dev: false resolution: integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - /anymatch/3.1.0: + /anymatch/3.0.3: dependencies: normalize-path: 3.0.0 picomatch: 2.0.7 dev: false - engines: - node: '>= 8' resolution: - integrity: sha512-Ozz7l4ixzI7Oxj2+cw+p0tVUt27BpaJ+1+q1TCeANWxHpvyn2+Un+YamBdfKu0uh8xLodGhoa1v7595NhKDAuA== + integrity: sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g== /append-buffer/1.0.2: dependencies: buffer-equal: 1.0.0 @@ -2213,7 +2374,7 @@ packages: browserify-rsa: 4.0.1 create-hash: 1.2.0 create-hmac: 1.1.7 - elliptic: 6.5.1 + elliptic: 6.5.0 inherits: 2.0.4 parse-asn1: 5.1.4 dev: false @@ -2228,7 +2389,7 @@ packages: /browserslist/3.2.8: dependencies: caniuse-lite: 1.0.30000989 - electron-to-chromium: 1.3.252 + electron-to-chromium: 1.3.237 dev: false hasBin: true resolution: @@ -2282,13 +2443,13 @@ packages: dev: false resolution: integrity: sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= - /buffer/5.4.2: + /buffer/5.4.0: dependencies: base64-js: 1.3.1 ieee754: 1.1.13 dev: false resolution: - integrity: sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag== + integrity: sha512-Xpgy0IwHK2N01ncykXTy6FpCWuM+CJSHoPVBLyNqyrWxsedpLvwsYUhf0ME3WRFNUhos0dMamz9cOS/xRDtU5g== /builtin-modules/3.1.0: dev: false engines: @@ -2489,7 +2650,7 @@ packages: normalize-path: 3.0.0 path-is-absolute: 1.0.1 readdirp: 2.2.1 - upath: 1.2.0 + upath: 1.1.2 dev: false optionalDependencies: fsevents: 1.2.9 @@ -2497,7 +2658,7 @@ packages: integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== /chokidar/3.0.2: dependencies: - anymatch: 3.1.0 + anymatch: 3.0.3 braces: 3.0.2 glob-parent: 5.0.0 is-binary-path: 2.1.0 @@ -2517,7 +2678,7 @@ packages: integrity: sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== /chrome-launcher/0.10.7: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 is-wsl: 1.1.0 lighthouse-logger: 1.2.0 mkdirp: 0.5.1 @@ -2861,7 +3022,7 @@ packages: /create-ecdh/4.0.3: dependencies: bn.js: 4.11.8 - elliptic: 6.5.1 + elliptic: 6.5.0 dev: false resolution: integrity: sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== @@ -2886,6 +3047,16 @@ packages: dev: false resolution: integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + /cross-env/5.2.0: + dependencies: + cross-spawn: 6.0.5 + is-windows: 1.0.2 + dev: false + engines: + node: '>=4.0' + hasBin: true + resolution: + integrity: sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg== /cross-env/5.2.1: dependencies: cross-spawn: 6.0.5 @@ -2962,7 +3133,7 @@ packages: integrity: sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= /d/1.0.1: dependencies: - es5-ext: 0.10.51 + es5-ext: 0.10.50 type: 1.0.3 dev: false resolution: @@ -2977,7 +3148,7 @@ packages: integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= /data-uri-to-buffer/2.0.1: dependencies: - '@types/node': 8.10.53 + '@types/node': 8.10.52 dev: false resolution: integrity: sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A== @@ -3293,11 +3464,11 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.252: + /electron-to-chromium/1.3.237: dev: false resolution: - integrity: sha512-NWJ5TztDnjExFISZHFwpoJjMbLUifsNBnx7u2JI0gCw6SbKyQYYWWtBHasO/jPtHym69F4EZuTpRNGN11MT/jg== - /elliptic/6.5.1: + integrity: sha512-SPAFjDr/7iiVK2kgTluwxela6eaWjjFkS9rO/iYpB/KGXgccUom5YC7OIf19c8m8GGptWxLU0Em8xM64A/N7Fg== + /elliptic/6.5.0: dependencies: bn.js: 4.11.8 brorand: 1.1.0 @@ -3308,7 +3479,7 @@ packages: minimalistic-crypto-utils: 1.0.1 dev: false resolution: - integrity: sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== + integrity: sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== /emoji-regex/7.0.3: dev: false resolution: @@ -3395,23 +3566,19 @@ packages: dev: false resolution: integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - /es-abstract/1.14.1: + /es-abstract/1.13.0: 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.0.0 - string.prototype.trimright: 2.0.0 dev: false engines: node: '>= 0.4' resolution: - integrity: sha512-cp/Tb1oA/rh2X7vqeSOvM+TSo3UkJLX70eNihgVEvnzwAgikjkTFr/QVgRCaxjm0knCNQzNoxxxcw2zO2LJdZA== + integrity: sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== /es-to-primitive/1.2.0: dependencies: is-callable: 1.1.4 @@ -3422,14 +3589,14 @@ packages: node: '>= 0.4' resolution: integrity: sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== - /es5-ext/0.10.51: + /es5-ext/0.10.50: dependencies: es6-iterator: 2.0.3 - es6-symbol: 3.1.2 + es6-symbol: 3.1.1 next-tick: 1.0.0 dev: false resolution: - integrity: sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ== + integrity: sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw== /es6-error/4.1.1: dev: false resolution: @@ -3437,8 +3604,8 @@ packages: /es6-iterator/2.0.3: dependencies: d: 1.0.1 - es5-ext: 0.10.51 - es6-symbol: 3.1.2 + es5-ext: 0.10.50 + es6-symbol: 3.1.1 dev: false resolution: integrity: sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -3456,19 +3623,19 @@ packages: dev: false resolution: integrity: sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - /es6-symbol/3.1.2: + /es6-symbol/3.1.1: dependencies: d: 1.0.1 - es5-ext: 0.10.51 + es5-ext: 0.10.50 dev: false resolution: - integrity: sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ== + integrity: sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= /es6-weak-map/2.0.3: dependencies: d: 1.0.1 - es5-ext: 0.10.51 + es5-ext: 0.10.50 es6-iterator: 2.0.3 - es6-symbol: 3.1.2 + es6-symbol: 3.1.1 dev: false resolution: integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== @@ -3516,6 +3683,16 @@ packages: source-map: 0.2.0 resolution: integrity: sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= + /eslint-config-prettier/6.1.0_eslint@6.2.1: + dependencies: + eslint: 6.2.1 + get-stdin: 6.0.0 + dev: false + hasBin: true + peerDependencies: + eslint: '>=3.14.1' + resolution: + integrity: sha512-k9fny9sPjIBQ2ftFTesJV21Rg4R/7a7t7LCtZVrYQiHEp8Nnuk3EGaDmsKSAnsPj0BYcgB2zxzHa2NTkIxcOLg== /eslint-config-prettier/6.2.0_eslint@6.3.0: dependencies: eslint: 6.3.0 @@ -3526,6 +3703,16 @@ packages: eslint: '>=3.14.1' resolution: integrity: sha512-VLsgK/D+S/FEsda7Um1+N8FThec6LqE3vhcMyp8mlmto97y3fGf3DX7byJexGuOb1QY0Z/zz222U5t+xSfcZDQ== + /eslint-plugin-no-null/1.0.2_eslint@6.2.1: + dependencies: + eslint: 6.2.1 + dev: false + engines: + node: '>=5.0.0' + peerDependencies: + eslint: '>=3.0.0' + resolution: + integrity: sha1-EjaoEjkTkKGHetQAfCbnRTQclR8= /eslint-plugin-no-null/1.0.2_eslint@6.3.0: dependencies: eslint: 6.3.0 @@ -3580,6 +3767,51 @@ packages: node: '>=4' resolution: integrity: sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + /eslint/6.2.1: + dependencies: + '@babel/code-frame': 7.5.5 + ajv: 6.10.2 + chalk: 2.4.2 + cross-spawn: 6.0.5 + debug: 4.1.1 + doctrine: 3.0.0 + eslint-scope: 5.0.0 + eslint-utils: 1.4.2 + eslint-visitor-keys: 1.1.0 + espree: 6.1.0 + esquery: 1.0.1 + esutils: 2.0.3 + file-entry-cache: 5.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.0.0 + globals: 11.12.0 + ignore: 4.0.6 + import-fresh: 3.1.0 + imurmurhash: 0.1.4 + inquirer: 6.5.2 + is-glob: 4.0.1 + js-yaml: 3.13.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.3.0 + lodash: 4.17.15 + minimatch: 3.0.4 + mkdirp: 0.5.1 + natural-compare: 1.4.0 + optionator: 0.8.2 + progress: 2.0.3 + regexpp: 2.0.1 + semver: 6.3.0 + strip-ansi: 5.2.0 + strip-json-comments: 3.0.1 + table: 5.4.6 + text-table: 0.2.0 + v8-compile-cache: 2.1.0 + dev: false + engines: + node: ^8.10.0 || ^10.13.0 || >=11.10.1 + hasBin: true + resolution: + integrity: sha512-ES7BzEzr0Q6m5TK9i+/iTpKjclXitOdDK4vT07OqbkBT2/VcN/gO9EL1C4HlK3TAOXYv2ItcmbVR9jO1MR0fJg== /eslint/6.3.0: dependencies: '@babel/code-frame': 7.5.5 @@ -3631,6 +3863,16 @@ packages: node: '>=6' resolution: integrity: sha512-1UENjnnI37UDp7KuOqKYjfqdaMim06eBWnDv37smaxTIzDl0ZWnlgoXwsVwD9+Lidw+q/f1gUf2diVMDCycoVw== + /espree/6.1.0: + dependencies: + acorn: 7.0.0 + acorn-jsx: 5.0.2_acorn@7.0.0 + eslint-visitor-keys: 1.1.0 + dev: false + engines: + node: '>=6.0.0' + resolution: + integrity: sha512-boA7CHRLlVWUSg3iL5Kmlt/xT3Q+sXnKoRYYzj1YeM10A76TEJBbotV5pKbnK42hEUIr121zTv+QLRM5LsCPXQ== /espree/6.1.1: dependencies: acorn: 7.0.0 @@ -4135,7 +4377,7 @@ packages: node: '>= 0.12' resolution: integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - /form-data/2.5.1: + /form-data/2.5.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -4144,7 +4386,7 @@ packages: engines: node: '>= 0.12' resolution: - integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + integrity: sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA== /forwarded/0.1.2: dev: false engines: @@ -4473,6 +4715,10 @@ packages: node: '>=4.x' resolution: integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + /guid-typescript/1.0.9: + dev: false + resolution: + integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ== /gulp-cli/2.2.0: dependencies: ansi-colors: 1.1.0 @@ -5514,10 +5760,10 @@ packages: dev: false resolution: integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - /karma-chai/0.1.0_chai@4.2.0+karma@4.3.0: + /karma-chai/0.1.0_chai@4.2.0+karma@4.2.0: dependencies: chai: 4.2.0 - karma: 4.3.0 + karma: 4.2.0 dev: false peerDependencies: chai: '*' @@ -5556,6 +5802,17 @@ packages: node: '>=8.0.0' resolution: integrity: sha512-SnFkHsnLsaXfxkey51rRN9JDLAEKYW2Lb0qOEvcruukk0NkSNDkjobNDZPt9Ni3kIhLZkLtpGOz661hN7OaZvQ== + /karma-edge-launcher/0.4.2_karma@4.2.0: + dependencies: + edge-launcher: 1.2.2 + karma: 4.2.0 + dev: false + engines: + node: '>=4' + peerDependencies: + karma: '>=0.9' + resolution: + integrity: sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw== /karma-edge-launcher/0.4.2_karma@4.3.0: dependencies: edge-launcher: 1.2.2 @@ -5577,6 +5834,15 @@ packages: dev: false resolution: integrity: sha512-j9Zp8M8+VLq1nI/5xZGfzeaEPtGQ/vk3G+Y8vpmFWLvKLNZ2TDjD6cu2dUu7lDbu1HXNgatsAX4jgCZTkR9qhQ== + /karma-ie-launcher/1.0.0_karma@4.2.0: + dependencies: + karma: 4.2.0 + lodash: 4.17.15 + dev: false + peerDependencies: + karma: '>=0.9' + resolution: + integrity: sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw= /karma-ie-launcher/1.0.0_karma@4.3.0: dependencies: karma: 4.3.0 @@ -5586,9 +5852,9 @@ packages: karma: '>=0.9' resolution: integrity: sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw= - /karma-json-preprocessor/0.3.3_karma@4.3.0: + /karma-json-preprocessor/0.3.3_karma@4.2.0: dependencies: - karma: 4.3.0 + karma: 4.2.0 dev: false peerDependencies: karma: '>=0.9' @@ -5600,6 +5866,16 @@ packages: dev: false resolution: integrity: sha512-kNCi+0UrXAeTJMpMsHkHNbfmlErsYT+/haNakJIhsE/gtj3Jx7zWRg7BTc1HHSbH5KeVXVRJr3/KLB/NHWY7Hg== + /karma-junit-reporter/1.2.0_karma@4.2.0: + dependencies: + karma: 4.2.0 + path-is-absolute: 1.0.1 + xmlbuilder: 8.2.2 + dev: false + peerDependencies: + karma: '>=0.9' + resolution: + integrity: sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y= /karma-junit-reporter/1.2.0_karma@4.3.0: dependencies: karma: 4.3.0 @@ -5610,6 +5886,17 @@ packages: karma: '>=0.9' resolution: integrity: sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y= + /karma-mocha-reporter/2.2.5_karma@4.2.0: + dependencies: + chalk: 2.4.2 + karma: 4.2.0 + log-symbols: 2.2.0 + strip-ansi: 4.0.0 + dev: false + peerDependencies: + karma: '>=0.13' + resolution: + integrity: sha1-FRIAlejtgZGG5HoLAS8810GJVWA= /karma-mocha-reporter/2.2.5_karma@4.3.0: dependencies: chalk: 2.4.2 @@ -5638,9 +5925,9 @@ packages: karma-coverage: '>=0.5.4' resolution: integrity: sha512-FM5h8eHcHbMMR+2INBUxD+4+wUbkCnobfn5uWprkLyj6Xcm2MRFQOuAJn9h2H13nNso6rk+QoNpHd5xCevlPOw== - /karma-requirejs/1.1.0_karma@4.3.0+requirejs@2.3.6: + /karma-requirejs/1.1.0_karma@4.2.0+requirejs@2.3.6: dependencies: - karma: 4.3.0 + karma: 4.2.0 requirejs: 2.3.6 dev: false peerDependencies: @@ -5648,11 +5935,11 @@ packages: requirejs: ^2.1.0 resolution: integrity: sha1-/driy4fX68FvsCIok1ZNf+5Xh5g= - /karma-rollup-preprocessor/7.0.2_rollup@1.20.3: + /karma-rollup-preprocessor/7.0.2_rollup@1.20.1: dependencies: chokidar: 3.0.2 debounce: 1.2.0 - rollup: 1.20.3 + rollup: 1.20.1 dev: false engines: node: '>= 8.0.0' @@ -5677,15 +5964,15 @@ packages: dev: false resolution: integrity: sha512-WTGGThwufBT73c20q30iTcXq8Jb3Wat/h+JW1lwKgMtymT5rVxLknoaUVNfenaV3+cRMiTEsBT773kz9jWk6IQ== - /karma-webpack/4.0.2_webpack@4.39.3: + /karma-webpack/4.0.2_webpack@4.39.2: dependencies: clone-deep: 4.0.1 loader-utils: 1.2.3 neo-async: 2.6.1 schema-utils: 1.0.0 source-map: 0.7.3 - webpack: 4.39.3_webpack@4.39.3 - webpack-dev-middleware: 3.7.1_webpack@4.39.3 + webpack: 4.39.2_webpack@4.39.2 + webpack-dev-middleware: 3.7.0_webpack@4.39.2 dev: false engines: node: '>= 8.9.0' @@ -5693,7 +5980,7 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A== - /karma/4.3.0: + /karma/4.2.0: dependencies: bluebird: 3.5.5 body-parser: 1.19.0 @@ -5727,19 +6014,54 @@ packages: node: '>= 8' hasBin: true resolution: - integrity: sha512-NSPViHOt+RW38oJklvYxQC4BSQsv737oQlr/r06pCM+slDOr4myuI1ivkRmp+3dVpJDfZt2DmaPJ2wkx+ZZuMQ== - /kind-of/1.1.0: - dev: false - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= - /kind-of/3.2.2: + integrity: sha512-fmCuxN1rwJxTdZfOXK5LjlmS4Ana/OvzNMpkyLL/TLE8hmgSkpVpMYQ7RTVa8TNKRVQDZNl5W1oF5cfKfgIMlA== + /karma/4.3.0: dependencies: - is-buffer: 1.1.6 - dev: false - engines: - node: '>=0.10.0' + bluebird: 3.5.5 + body-parser: 1.19.0 + braces: 3.0.2 + chokidar: 3.0.2 + colors: 1.3.3 + connect: 3.7.0 + 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.17.0 + isbinaryfile: 3.0.3 + lodash: 4.17.15 + log4js: 4.5.1 + mime: 2.4.4 + minimatch: 3.0.4 + optimist: 0.6.1 + qjobs: 1.2.0 + range-parser: 1.2.1 + rimraf: 2.7.1 + safe-buffer: 5.2.0 + socket.io: 2.1.1 + source-map: 0.6.1 + tmp: 0.0.33 + useragent: 2.3.0 + dev: false + engines: + node: '>= 8' + hasBin: true + resolution: + integrity: sha512-NSPViHOt+RW38oJklvYxQC4BSQsv737oQlr/r06pCM+slDOr4myuI1ivkRmp+3dVpJDfZt2DmaPJ2wkx+ZZuMQ== + /kind-of/1.1.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= + /kind-of/3.2.2: + dependencies: + is-buffer: 1.1.6 + dev: false + engines: + node: '>=0.10.0' resolution: integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= /kind-of/4.0.0: @@ -6568,7 +6890,7 @@ packages: dev: false resolution: integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - /nise/1.5.2: + /nise/1.5.1: dependencies: '@sinonjs/formatio': 3.2.1 '@sinonjs/text-encoding': 0.7.1 @@ -6577,7 +6899,7 @@ packages: path-to-regexp: 1.7.0 dev: false resolution: - integrity: sha512-/6RhOUlicRCbE9s+94qCUsyE+pKlVJ5AhIv+jEE7ESKwnbXqulKZ1FYU+XAtHHWE9TinYvAxDUJAb912PwPoWA== + integrity: sha512-edFWm0fsFG2n318rfEnKlTZTkjlbVOFF9XIA+fj+Ed+Qz1laYW2lobwavWoMzGrYDHH1EpiNJgDfvGnkZztR/g== /nock/11.3.2: dependencies: chai: 4.2.0 @@ -6683,7 +7005,7 @@ packages: minimatch: 3.0.4 pidtree: 0.3.0 read-pkg: 3.0.0 - shell-quote: 1.7.2 + shell-quote: 1.7.1 string.prototype.padend: 3.0.0 dev: false engines: @@ -6727,7 +7049,7 @@ packages: resolve-from: 4.0.0 rimraf: 2.7.1 signal-exit: 3.0.2 - spawn-wrap: 1.4.3 + spawn-wrap: 1.4.2 test-exclude: 5.2.3 uuid: 3.3.3 yargs: 13.3.0 @@ -6762,10 +7084,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: @@ -6805,7 +7123,7 @@ packages: /object.entries/1.1.0: dependencies: define-properties: 1.1.3 - es-abstract: 1.14.1 + es-abstract: 1.13.0 function-bind: 1.1.1 has: 1.0.3 dev: false @@ -6816,7 +7134,7 @@ packages: /object.getownpropertydescriptors/2.0.3: dependencies: define-properties: 1.1.3 - es-abstract: 1.14.1 + es-abstract: 1.13.0 dev: false engines: node: '>= 0.8' @@ -7436,10 +7754,10 @@ packages: dev: false resolution: integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - /psl/1.3.1: + /psl/1.3.0: dev: false resolution: - integrity: sha512-2KLd5fKOdAfShtY2d/8XDWVRnmp3zp40Qt6ge2zBPFARLXOGUf2fHD5eg+TV/5oxBtQKVhjUaKFsAaE4HnwfSA== + integrity: sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag== /public-encrypt/4.0.3: dependencies: bn.js: 4.11.8 @@ -8062,6 +8380,19 @@ packages: dev: false resolution: integrity: sha512-ODeZXhTxpD48sfcYLAFc1BGrsXKDj7o1CSNH3uYbdK3o0NxyMmaQPTNgW+ko+am92DLC8QSTe4kyxTuEkI5S5w== + /rollup-plugin-commonjs/10.0.2_rollup@1.20.1: + dependencies: + estree-walker: 0.6.1 + is-reference: 1.1.3 + magic-string: 0.25.3 + resolve: 1.12.0 + rollup: 1.20.1 + rollup-pluginutils: 2.8.1 + dev: false + peerDependencies: + rollup: '>=1.12.0' + resolution: + integrity: sha512-DxeR4QXTgTOFseYls1V7vgKbrSJmPYNdEMOs0OvH+7+89C3GiIonU9gFrE0u39Vv1KWm3wepq8KAvKugtoM2Zw== /rollup-plugin-commonjs/10.1.0_rollup@1.20.3: dependencies: estree-walker: 0.6.1 @@ -8110,6 +8441,19 @@ packages: dev: false resolution: integrity: sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== + /rollup-plugin-node-resolve/5.2.0_rollup@1.20.1: + dependencies: + '@types/resolve': 0.0.8 + builtin-modules: 3.1.0 + is-module: 1.0.0 + resolve: 1.12.0 + rollup: 1.20.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.20.3: dependencies: '@types/resolve': 0.0.8 @@ -8134,6 +8478,19 @@ packages: dev: false resolution: integrity: sha512-rZqFD43y4U9nSqVq3iyWBiDwmBQJY8Txi04yI9jTKD3xcl7CbFjh1qRpQshUB3sONLubDzm7vJiwB+1MEGv67w== + /rollup-plugin-sourcemaps/0.4.2_rollup@1.20.1: + dependencies: + rollup: 1.20.1 + rollup-pluginutils: 2.8.1 + source-map-resolve: 0.5.2 + dev: false + engines: + node: '>=4.5.0' + npm: '>=2.15.9' + peerDependencies: + rollup: '>=0.31.2' + resolution: + integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= /rollup-plugin-sourcemaps/0.4.2_rollup@1.20.3: dependencies: rollup: 1.20.3 @@ -8147,31 +8504,58 @@ packages: rollup: '>=0.31.2' resolution: integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= + /rollup-plugin-terser/5.1.1_rollup@1.20.1: + dependencies: + '@babel/code-frame': 7.5.5 + jest-worker: 24.9.0 + rollup: 1.20.1 + rollup-pluginutils: 2.8.1 + serialize-javascript: 1.8.0 + terser: 4.2.0 + dev: false + peerDependencies: + rollup: '>=0.66.0 <2' + resolution: + integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== /rollup-plugin-terser/5.1.1_rollup@1.20.3: dependencies: '@babel/code-frame': 7.5.5 jest-worker: 24.9.0 rollup: 1.20.3 rollup-pluginutils: 2.8.1 - serialize-javascript: 1.9.1 - terser: 4.2.1 + serialize-javascript: 1.8.0 + terser: 4.2.0 dev: false peerDependencies: rollup: '>=0.66.0 <2' resolution: integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== - /rollup-plugin-uglify/6.0.3_rollup@1.20.3: + /rollup-plugin-uglify/6.0.2_rollup@1.20.1: dependencies: '@babel/code-frame': 7.5.5 jest-worker: 24.9.0 - rollup: 1.20.3 - serialize-javascript: 1.9.1 + rollup: 1.20.1 + serialize-javascript: 1.8.0 uglify-js: 3.6.0 dev: false peerDependencies: rollup: '>=0.66.0 <2' resolution: - integrity: sha512-PIv3CfhZJlOG8C85N0GX+uK09TPggmAS6Nk6fpp2ELzDAV5VUhNzOURDU2j7+MwuRr0zq9IZttUTADc/jH8Gkg== + integrity: sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== + /rollup-plugin-visualizer/2.5.4_rollup@1.20.1: + dependencies: + mkdirp: 0.5.1 + open: 6.4.0 + pupa: 2.0.1 + rollup: 1.20.1 + source-map: 0.7.3 + dev: false + engines: + node: '>=8.10' + peerDependencies: + rollup: '>=0.60.0' + resolution: + integrity: sha512-ehMX8Us4UmHmt9y6uvBdtW3ASAQDqCcmp07Qrm8dBqQMf1eAd89Rc/owGZr0cDp764dvLKQRA03W+nWlRajl4w== /rollup-plugin-visualizer/2.5.4_rollup@1.20.3: dependencies: mkdirp: 0.5.1 @@ -8192,6 +8576,15 @@ packages: dev: false resolution: integrity: sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== + /rollup/1.20.1: + dependencies: + '@types/estree': 0.0.39 + '@types/node': 12.7.2 + acorn: 7.0.0 + dev: false + hasBin: true + resolution: + integrity: sha512-8DV8eWLq84fbJFRqkjWg8BWX4NTTdHpx9bxjmTl/83z54o6Ygo1OgUDjJGFq/xe5i0kDspnbjzw2V+ZPXD/BrQ== /rollup/1.20.3: dependencies: '@types/estree': 0.0.39 @@ -8303,10 +8696,10 @@ packages: node: '>= 0.8.0' resolution: integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - /serialize-javascript/1.9.1: + /serialize-javascript/1.8.0: dev: false resolution: - integrity: sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== + integrity: sha512-3tHgtF4OzDmeKYj6V9nSyceRS0UJ3C7VqyD2Yj28vC/z2j6jG5FmFGahOKMD9CrglxTm3tETr87jEypaYV8DUg== /serve-static/1.14.1: dependencies: encodeurl: 1.0.2 @@ -8371,10 +8764,10 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - /shell-quote/1.7.2: + /shell-quote/1.7.1: dev: false resolution: - integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + integrity: sha512-2kUqeAGnMAu6YrTPX4E3LfxacH9gKljzVjlkUeSqY0soGwK4KLl7TURXCem712tkhBCeeaFP9QK4dKn88s3Icg== /shelljs/0.8.3: dependencies: glob: 7.1.4 @@ -8401,18 +8794,18 @@ packages: dev: false resolution: integrity: sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - /sinon/7.4.2: + /sinon/7.4.1: dependencies: '@sinonjs/commons': 1.6.0 '@sinonjs/formatio': 3.2.1 '@sinonjs/samsam': 3.3.3 diff: 3.5.0 lolex: 4.2.0 - nise: 1.5.2 + nise: 1.5.1 supports-color: 5.5.0 dev: false resolution: - integrity: sha512-pY5RY99DKelU3pjNxcWo6XqeB1S118GBcVIIdDi6V+h6hevn1izcg2xv1hTHW/sViRXU7sUOxt4wTUJ3gsW2CQ== + integrity: sha512-7s9buHGHN/jqoy/v4bJgmt0m1XEkCEd/tqdHXumpBp0JSujaT4Ng84JU5wDdK4E85ZMq78NuDe0I3NAqXY8TFg== /slash/1.0.0: dev: false engines: @@ -8604,7 +8997,7 @@ packages: node: '>= 0.10' resolution: integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== - /spawn-wrap/1.4.3: + /spawn-wrap/1.4.2: dependencies: foreground-child: 1.5.6 mkdirp: 0.5.1 @@ -8614,7 +9007,7 @@ packages: which: 1.3.1 dev: false resolution: - integrity: sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw== + integrity: sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg== /spdx-correct/3.1.0: dependencies: spdx-expression-parse: 3.0.0 @@ -8784,31 +9177,13 @@ packages: /string.prototype.padend/3.0.0: dependencies: define-properties: 1.1.3 - es-abstract: 1.14.1 + es-abstract: 1.13.0 function-bind: 1.1.1 dev: false engines: node: '>= 0.4' resolution: integrity: sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA= - /string.prototype.trimleft/2.0.0: - dependencies: - define-properties: 1.1.3 - function-bind: 1.1.1 - dev: false - engines: - node: '>= 0.4' - resolution: - integrity: sha1-aLaqjhYsaoDnbjqKDC50cYbicf8= - /string.prototype.trimright/2.0.0: - dependencies: - define-properties: 1.1.3 - function-bind: 1.1.1 - dev: false - engines: - node: '>= 0.4' - resolution: - integrity: sha1-q0pW2AKgH75yk+EehPJNyBZGYd0= /string_decoder/0.10.31: dev: false resolution: @@ -8937,7 +9312,7 @@ packages: /sver-compat/1.5.0: dependencies: es6-iterator: 2.0.3 - es6-symbol: 3.1.2 + es6-symbol: 3.1.1 dev: false resolution: integrity: sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= @@ -8958,16 +9333,16 @@ packages: node: '>=6' resolution: integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - /terser-webpack-plugin/1.4.1_webpack@4.39.3: + /terser-webpack-plugin/1.4.1_webpack@4.39.2: dependencies: cacache: 12.0.3 find-cache-dir: 2.1.0 is-wsl: 1.1.0 schema-utils: 1.0.0 - serialize-javascript: 1.9.1 + serialize-javascript: 1.8.0 source-map: 0.6.1 - terser: 4.2.1 - webpack: 4.39.3_webpack@4.39.3 + terser: 4.2.0 + webpack: 4.39.2_webpack@4.39.2 webpack-sources: 1.4.3 worker-farm: 1.7.0 dev: false @@ -8977,7 +9352,7 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== - /terser/4.2.1: + /terser/4.2.0: dependencies: commander: 2.20.0 source-map: 0.6.1 @@ -8987,7 +9362,7 @@ packages: node: '>=6.0.0' hasBin: true resolution: - integrity: sha512-cGbc5utAcX4a9+2GGVX4DsenG6v0x3glnDi5hx8816X1McEAwPlPgRtXPJzSBsbpILxZ8MQMT0KvArLuE0HP5A== + integrity: sha512-6lPt7lZdZ/13icQJp8XasFOwZjFJkxFFIb/N1fhYEQNoNI3Ilo3KABZ9OocZvZoB39r6SiIk/0+v/bt8nZoSeA== /test-exclude/5.2.3: dependencies: glob: 7.1.4 @@ -9141,7 +9516,7 @@ packages: integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== /tough-cookie/2.4.3: dependencies: - psl: 1.3.1 + psl: 1.3.0 punycode: 1.4.1 dev: false engines: @@ -9150,7 +9525,7 @@ packages: integrity: sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== /tough-cookie/2.5.0: dependencies: - psl: 1.3.1 + psl: 1.3.0 punycode: 2.1.1 dev: false engines: @@ -9160,7 +9535,7 @@ packages: /tough-cookie/3.0.1: dependencies: ip-regex: 2.1.0 - psl: 1.3.1 + psl: 1.3.0 punycode: 2.1.1 dev: false engines: @@ -9191,14 +9566,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - /ts-loader/6.0.4_typescript@3.6.2: + /ts-loader/6.0.4_typescript@3.5.3: dependencies: chalk: 2.4.2 enhanced-resolve: 4.1.0 loader-utils: 1.2.3 micromatch: 4.0.2 semver: 6.3.0 - typescript: 3.6.2 + typescript: 3.5.3 dev: false engines: node: '>=8.6' @@ -9236,6 +9611,22 @@ packages: hasBin: true resolution: integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== + /ts-node/8.3.0_typescript@3.5.3: + dependencies: + arg: 4.1.1 + diff: 4.0.1 + make-error: 1.3.5 + source-map-support: 0.5.13 + typescript: 3.5.3 + yn: 3.1.1 + dev: false + engines: + node: '>=4.2.0' + hasBin: true + peerDependencies: + typescript: '>=2.0' + resolution: + integrity: sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ== /ts-node/8.3.0_typescript@3.6.2: dependencies: arg: 4.1.1 @@ -9267,6 +9658,17 @@ packages: dev: false resolution: integrity: sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + /tsutils/3.17.1_typescript@3.5.3: + dependencies: + tslib: 1.10.0 + typescript: 3.5.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.2: dependencies: tslib: 1.10.0 @@ -9480,12 +9882,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - /upath/1.2.0: + /upath/1.1.2: dev: false engines: node: '>=4' resolution: - integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + integrity: sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== /uri-js/4.2.2: dependencies: punycode: 2.1.1 @@ -9520,13 +9922,6 @@ packages: dev: false resolution: integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - /util.promisify/1.0.0: - dependencies: - define-properties: 1.1.3 - object.getownpropertydescriptors: 2.0.3 - dev: false - resolution: - integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== /util/0.10.3: dependencies: inherits: 2.0.1 @@ -9694,7 +10089,7 @@ packages: dev: false resolution: integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - /webpack-cli/3.3.7_webpack@4.39.3: + /webpack-cli/3.3.7_webpack@4.39.2: dependencies: chalk: 2.4.2 cross-spawn: 6.0.5 @@ -9706,7 +10101,7 @@ packages: loader-utils: 1.2.3 supports-color: 6.1.0 v8-compile-cache: 2.0.3 - webpack: 4.39.3_webpack@4.39.3 + webpack: 4.39.2_webpack@4.39.2 yargs: 13.2.4 dev: false engines: @@ -9716,13 +10111,12 @@ packages: webpack: 4.x.x resolution: integrity: sha512-OhTUCttAsr+IZSMVwGROGRHvT+QAs8H6/mHIl4SvhAwYywjiylYjpwybGx7WQ9Hkb45FhjtsymkwiRRbGJ1SZQ== - /webpack-dev-middleware/3.7.1_webpack@4.39.3: + /webpack-dev-middleware/3.7.0_webpack@4.39.2: dependencies: memory-fs: 0.4.1 mime: 2.4.4 - mkdirp: 0.5.1 range-parser: 1.2.1 - webpack: 4.39.3_webpack@4.39.3 + webpack: 4.39.2_webpack@4.39.2 webpack-log: 2.0.0 dev: false engines: @@ -9730,7 +10124,7 @@ packages: peerDependencies: webpack: ^4.0.0 resolution: - integrity: sha512-5MWu9SH1z3hY7oHOV6Kbkz5x7hXbxK56mGHNqHTe6d+ewxOwKUxoUJBs7QIaJb33lPjl9bJZ3X0vCoooUzC36A== + integrity: sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== /webpack-log/2.0.0: dependencies: ansi-colors: 3.2.4 @@ -9747,7 +10141,7 @@ packages: dev: false resolution: integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - /webpack/4.39.3_webpack@4.39.3: + /webpack/4.39.2_webpack@4.39.2: dependencies: '@webassemblyjs/ast': 1.8.5 '@webassemblyjs/helper-module-context': 1.8.5 @@ -9769,7 +10163,7 @@ packages: node-libs-browser: 2.2.1 schema-utils: 1.0.0 tapable: 1.1.3 - terser-webpack-plugin: 1.4.1_webpack@4.39.3 + terser-webpack-plugin: 1.4.1_webpack@4.39.2 watchpack: 1.6.0 webpack-sources: 1.4.3 dev: false @@ -9779,7 +10173,7 @@ packages: peerDependencies: webpack: '*' resolution: - integrity: sha512-BXSI9M211JyCVc3JxHWDpze85CvjC842EvpRsVTc/d15YJGlox7GIDd38kJgWrb3ZluyvIjgenbLDMBQPDcxYQ== + integrity: sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA== /whatwg-url/6.5.0: dependencies: lodash.sortby: 4.7.0 @@ -9909,22 +10303,13 @@ packages: dev: false resolution: integrity: sha1-m4FpCTFjH/CdGVdUn69U9PmAs8I= - /xml2js/0.4.22: + /xml2js/0.4.19: dependencies: sax: 1.2.4 - util.promisify: 1.0.0 - xmlbuilder: 11.0.1 - dev: false - engines: - node: '>=4.0.0' - resolution: - integrity: sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw== - /xmlbuilder/11.0.1: + xmlbuilder: 9.0.7 dev: false - engines: - node: '>=4.0' resolution: - integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + integrity: sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== /xmlbuilder/8.2.2: dev: false engines: @@ -10170,29 +10555,29 @@ packages: integrity: sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== 'file:projects/abort-controller.tgz': dependencies: - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@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.1 + cross-env: 5.2.0 delay: 4.3.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 @@ -10200,16 +10585,16 @@ packages: nyc: 14.1.1 prettier: 1.18.2 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - ts-node: 8.3.0_typescript@3.6.2 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 dev: false name: '@rush-temp/abort-controller' resolution: @@ -10250,34 +10635,34 @@ packages: 'file:projects/core-amqp.tgz': dependencies: '@types/async-lock': 1.1.1 - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 '@types/chai-as-promised': 7.1.2 '@types/debug': 4.1.5 '@types/dotenv': 6.1.1 '@types/is-buffer': 2.0.0 '@types/jssha': 2.0.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/sinon': 7.0.13 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 assert: 1.5.0 async-lock: 1.2.2 - buffer: 5.4.2 + buffer: 5.4.0 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 - cross-env: 5.2.1 + cross-env: 5.2.0 debug: 4.1.1 dotenv: 8.1.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 events: 3.0.0 is-buffer: 2.0.3 jssha: 2.3.1 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-mocha: 1.3.0 mocha: 6.2.0 @@ -10290,22 +10675,22 @@ packages: rhea: 1.0.8 rhea-promise: 1.0.0 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-inject: 3.0.1 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - sinon: 7.4.2 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + sinon: 7.4.1 stream-browserify: 2.0.2 - ts-node: 8.3.0_typescript@3.6.2 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 url: 0.11.0 util: 0.12.1 ws: 7.1.2 @@ -10317,15 +10702,15 @@ packages: version: 0.0.0 'file:projects/core-arm.tgz': dependencies: - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@types/node': 8.10.52 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 chai: 4.2.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 mocha: 6.2.0 @@ -10334,14 +10719,14 @@ packages: npm-run-all: 4.1.5 nyc: 14.1.1 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 shx: 0.3.2 - ts-node: 8.3.0_typescript@3.6.2 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 uglify-js: 3.6.0 yarn: 1.17.3 dev: false @@ -10352,16 +10737,16 @@ packages: version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': dependencies: - '@types/node': 8.10.53 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + '@types/node': 8.10.52 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 prettier: 1.18.2 - typescript: 3.6.2 + typescript: 3.5.3 dev: false name: '@rush-temp/core-asynciterator-polyfill' resolution: @@ -10370,16 +10755,16 @@ packages: version: 0.0.0 'file:projects/core-auth.tgz': dependencies: - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@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.1 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + cross-env: 5.2.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 inherits: 2.0.4 @@ -10388,17 +10773,17 @@ packages: mocha-multi: 1.1.3_mocha@6.2.0 prettier: 1.18.2 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 util: 0.12.1 dev: false name: '@rush-temp/core-auth' @@ -10409,42 +10794,43 @@ packages: 'file:projects/core-http.tgz': dependencies: '@azure/logger-js': 1.3.2 - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 '@types/express': 4.17.1 '@types/fetch-mock': 7.3.1 '@types/glob': 7.1.1 '@types/karma': 3.0.3 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/node-fetch': 2.5.0 + '@types/semver': 5.5.0 '@types/sinon': 7.0.13 '@types/tough-cookie': 2.3.5 '@types/tunnel': 0.0.1 '@types/uuid': 3.4.5 - '@types/webpack': 4.39.1 + '@types/webpack': 4.39.0 '@types/webpack-dev-middleware': 2.0.3 '@types/xml2js': 0.4.4 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 babel-runtime: 6.26.0 chai: 4.2.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 express: 4.17.1 fetch-mock: 7.3.9 - form-data: 2.5.1 + form-data: 2.5.0 glob: 7.1.4 - karma: 4.3.0 - karma-chai: 0.1.0_chai@4.2.0+karma@4.3.0 + karma: 4.2.0 + karma-chai: 0.1.0_chai@4.2.0+karma@4.2.0 karma-chrome-launcher: 3.1.0 karma-mocha: 1.3.0 - karma-rollup-preprocessor: 7.0.2_rollup@1.20.3 + karma-rollup-preprocessor: 7.0.2_rollup@1.20.1 karma-sourcemap-loader: 0.3.7 karma-typescript-es6-transform: 4.1.1 - karma-webpack: 4.0.2_webpack@4.39.3 + karma-webpack: 4.0.2_webpack@4.39.2 mocha: 6.2.0 mocha-chrome: 2.0.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 @@ -10456,30 +10842,31 @@ packages: puppeteer: 1.19.0 regenerator-runtime: 0.13.3 rimraf: 3.0.0 - rollup: 1.20.3 + rollup: 1.20.1 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 + semver: 5.7.1 shx: 0.3.2 - sinon: 7.4.2 - terser: 4.2.1 + sinon: 7.4.1 + terser: 4.2.0 tough-cookie: 3.0.1 - ts-loader: 6.0.4_typescript@3.6.2 - ts-node: 8.3.0_typescript@3.6.2 + ts-loader: 6.0.4_typescript@3.5.3 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 tunnel: 0.0.6 - typescript: 3.6.2 + typescript: 3.5.3 uglify-js: 3.6.0 uuid: 3.3.3 - webpack: 4.39.3_webpack@4.39.3 - webpack-cli: 3.3.7_webpack@4.39.3 - webpack-dev-middleware: 3.7.1_webpack@4.39.3 + webpack: 4.39.2_webpack@4.39.2 + webpack-cli: 3.3.7_webpack@4.39.2 + webpack-dev-middleware: 3.7.0_webpack@4.39.2 xhr-mock: 2.5.0 - xml2js: 0.4.22 + xml2js: 0.4.19 yarn: 1.17.3 dev: false name: '@rush-temp/core-http' @@ -10490,16 +10877,16 @@ packages: 'file:projects/core-paging.tgz': dependencies: '@azure/core-asynciterator-polyfill': 1.0.0-preview.1 - '@types/node': 8.10.53 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + '@types/node': 8.10.52 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 prettier: 1.18.2 - typescript: 3.6.2 + typescript: 3.5.3 dev: false name: '@rush-temp/core-paging' resolution: @@ -10508,16 +10895,16 @@ packages: version: 0.0.0 'file:projects/core-tracing.tgz': dependencies: - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@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.1 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + cross-env: 5.2.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 inherits: 2.0.4 @@ -10526,17 +10913,17 @@ packages: mocha-multi: 1.1.3_mocha@6.2.0 prettier: 1.18.2 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 util: 0.12.1 dev: false name: '@rush-temp/core-tracing' @@ -10544,14 +10931,14 @@ packages: integrity: sha512-78rkxAffDWO3NFQY96u6b+9tqe/jsn1oB6qcAQs0V+7cgzcTSfpZyO/giuyZlD7KCeVJfMXQAAEj8XdZ27Hl6A== tarball: 'file:projects/core-tracing.tgz' version: 0.0.0 - 'file:projects/cosmos.tgz_webpack@4.39.3': + 'file:projects/cosmos.tgz_webpack@4.39.2': dependencies: '@azure/cosmos-sign': 1.0.2 - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/debug': 4.1.5 '@types/fast-json-stable-stringify': 2.0.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/node-fetch': 2.5.0 '@types/priorityqueuejs': 1.0.1 '@types/semaphore': 1.1.0 @@ -10559,32 +10946,32 @@ packages: '@types/tunnel': 0.0.1 '@types/underscore': 1.9.2 '@types/uuid': 3.4.5 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 abort-controller: 3.0.0 atob: 2.1.2 binary-search-bounds: 2.0.3 - cross-env: 5.2.1 + cross-env: 5.2.0 crypto-hash: 1.1.0 debug: 4.1.1 dotenv: 8.1.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 esm: 3.2.18 execa: 1.0.0 fast-json-stable-stringify: 2.0.0 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-cli: 2.0.0 karma-firefox-launcher: 1.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 - karma-requirejs: 1.1.0_karma@4.3.0+requirejs@2.3.6 + karma-mocha-reporter: 2.2.5_karma@4.2.0 + karma-requirejs: 1.1.0_karma@4.2.0+requirejs@2.3.6 karma-sourcemap-loader: 0.3.7 - karma-webpack: 4.0.2_webpack@4.39.3 + karma-webpack: 4.0.2_webpack@4.39.2 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 @@ -10595,17 +10982,17 @@ packages: proxy-agent: 3.0.3 requirejs: 2.3.6 rimraf: 3.0.0 - rollup: 1.20.3 + rollup: 1.20.1 rollup-plugin-json: 4.0.0 rollup-plugin-local-resolve: 1.0.7 rollup-plugin-multi-entry: 2.1.0 semaphore: 1.0.5 - sinon: 7.4.2 + sinon: 7.4.1 source-map-support: 0.5.13 - ts-node: 8.3.0_typescript@3.6.2 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 typedoc: 0.15.0 - typescript: 3.6.2 + typescript: 3.5.3 universal-user-agent: 2.1.0 uuid: 3.3.3 dev: false @@ -10620,47 +11007,47 @@ packages: 'file:projects/event-hubs.tgz': dependencies: '@azure/core-asynciterator-polyfill': 1.0.0-preview.1 - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/async-lock': 1.1.1 - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 '@types/chai-as-promised': 7.1.2 '@types/chai-string': 1.4.2 '@types/debug': 4.1.5 '@types/dotenv': 6.1.1 '@types/long': 4.0.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/uuid': 3.4.5 '@types/ws': 6.0.3 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 assert: 1.5.0 async-lock: 1.2.2 - buffer: 5.4.2 + buffer: 5.4.0 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 chai-string: 1.5.0_chai@4.2.0 - cross-env: 5.2.1 + cross-env: 5.2.0 debug: 4.1.1 dotenv: 8.1.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 https-proxy-agent: 2.2.2 is-buffer: 2.0.3 jssha: 2.3.1 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 @@ -10671,20 +11058,20 @@ packages: puppeteer: 1.19.0 rhea-promise: 1.0.0 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-inject: 3.0.1 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 ts-mocha: 6.0.0_mocha@6.2.0 - ts-node: 8.3.0_typescript@3.6.2 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 uuid: 3.3.3 ws: 7.1.2 dev: false @@ -10697,30 +11084,30 @@ packages: dependencies: '@azure/event-hubs': 2.1.1 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/async-lock': 1.1.1 - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 '@types/chai-as-promised': 7.1.2 '@types/chai-string': 1.4.2 '@types/debug': 4.1.5 '@types/dotenv': 6.1.1 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/uuid': 3.4.5 '@types/ws': 6.0.3 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 async-lock: 1.2.2 azure-storage: 2.10.3 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 chai-string: 1.5.0_chai@4.2.0 - cross-env: 5.2.1 + cross-env: 5.2.0 debug: 4.1.1 dotenv: 8.1.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 https-proxy-agent: 2.2.2 @@ -10731,17 +11118,17 @@ packages: path-browserify: 1.0.0 prettier: 1.18.2 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-uglify: 6.0.3_rollup@1.20.3 - ts-node: 8.3.0_typescript@3.6.2 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-uglify: 6.0.2_rollup@1.20.1 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 uuid: 3.3.3 ws: 7.1.2 dev: false @@ -10750,27 +11137,41 @@ packages: integrity: sha512-p3sNIrFFM3fCUUYcXbrj4RLVMuh84XX8jipT7xc9Nyd+4pVouE11Xewed7jDfUjHm9CeVCBFqReHpd2OgcnTAw== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 - 'file:projects/identity.tgz': + 'file:projects/eventhubs-checkpoint-blob.tgz': dependencies: - '@types/jws': 3.2.0 + '@azure/storage-blob': 12.0.0-preview.2 + '@microsoft/api-extractor': 7.3.11 + '@types/chai': 4.2.1 + '@types/chai-as-promised': 7.1.2 + '@types/chai-string': 1.4.2 + '@types/debug': 4.1.5 + '@types/dotenv': 6.1.1 '@types/mocha': 5.2.7 '@types/node': 8.10.53 - '@types/qs': 6.5.3 - '@types/uuid': 3.4.5 '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 assert: 1.5.0 + chai: 4.2.0 + chai-as-promised: 7.1.1_chai@4.2.0 + chai-string: 1.5.0_chai@4.2.0 cross-env: 5.2.1 + debug: 4.1.1 + dotenv: 8.1.0 eslint: 6.3.0 + eslint-config-prettier: 6.2.0_eslint@6.3.0 + eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.2.1 events: 3.0.0 + guid-typescript: 1.0.9 inherits: 2.0.4 - jws: 3.2.2 karma: 4.3.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 + karma-edge-launcher: 0.4.2_karma@4.3.0 karma-env-preprocessor: 0.1.1 - karma-json-preprocessor: 0.3.3_karma@4.3.0 - karma-json-to-file-reporter: 1.0.1 + karma-firefox-launcher: 1.2.0 + karma-ie-launcher: 1.0.0_karma@4.3.0 karma-junit-reporter: 1.2.0_karma@4.3.0 karma-mocha: 1.3.0 karma-mocha-reporter: 2.2.5_karma@4.3.0 @@ -10778,10 +11179,7 @@ packages: mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 - msal: 1.1.3 prettier: 1.18.2 - puppeteer: 1.19.0 - qs: 6.8.0 rimraf: 3.0.0 rollup: 1.20.3 rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 @@ -10792,9 +11190,61 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 rollup-plugin-terser: 5.1.1_rollup@1.20.3 rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + ts-node: 8.3.0_typescript@3.6.2 tslib: 1.10.0 typescript: 3.6.2 util: 0.12.1 + dev: false + name: '@rush-temp/eventhubs-checkpoint-blob' + resolution: + integrity: sha512-KYKzpBLsTq5V9kqYVa2Drk3ImzzLgNmgp16kRWImKsyTP9j+b9qT9stPaLQhoUasXZOgSV5cETRhOW43jRcmeQ== + tarball: 'file:projects/eventhubs-checkpoint-blob.tgz' + version: 0.0.0 + 'file:projects/identity.tgz': + dependencies: + '@types/jws': 3.2.0 + '@types/mocha': 5.2.7 + '@types/node': 8.10.52 + '@types/qs': 6.5.3 + '@types/uuid': 3.4.5 + '@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 + eslint: 6.2.1 + events: 3.0.0 + inherits: 2.0.4 + jws: 3.2.2 + karma: 4.2.0 + karma-chrome-launcher: 3.1.0 + karma-coverage: 2.0.1 + karma-env-preprocessor: 0.1.1 + karma-json-preprocessor: 0.3.3_karma@4.2.0 + karma-json-to-file-reporter: 1.0.1 + karma-junit-reporter: 1.2.0_karma@4.2.0 + karma-mocha: 1.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 + karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 + mocha: 6.2.0 + mocha-junit-reporter: 1.23.1_mocha@6.2.0 + mocha-multi: 1.1.3_mocha@6.2.0 + msal: 1.1.3 + prettier: 1.18.2 + puppeteer: 1.19.0 + qs: 6.8.0 + rimraf: 3.0.0 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 + rollup-plugin-json: 4.0.0 + rollup-plugin-multi-entry: 2.1.0 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 + rollup-plugin-replace: 2.2.0 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 + tslib: 1.10.0 + typescript: 3.5.3 + util: 0.12.1 uuid: 3.3.3 dev: false name: '@rush-temp/identity' @@ -10804,62 +11254,64 @@ packages: version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: - '@microsoft/api-extractor': 7.3.11 - '@types/chai': 4.2.1 + '@azure/core-paging': 1.0.0-preview.1 + '@azure/core-tracing': 1.0.0-preview.1 + '@microsoft/api-extractor': 7.3.8 + '@types/chai': 4.2.0 '@types/dotenv': 6.1.1 '@types/fs-extra': 8.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 assert: 1.5.0 chai: 4.2.0 - cross-env: 5.2.1 + cross-env: 5.2.0 dotenv: 8.1.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 fs-extra: 8.1.0 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-json-preprocessor: 0.3.3_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-json-preprocessor: 0.3.3_karma@4.2.0 karma-json-to-file-reporter: 1.0.1 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 - nise: 1.5.2 + nise: 1.5.1 nock: 11.3.2 nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.19.0 query-string: 5.1.1 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 source-map-support: 0.5.13 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 uglify-js: 3.6.0 url: 0.11.0 dev: false @@ -10870,63 +11322,65 @@ packages: version: 0.0.0 'file:projects/keyvault-keys.tgz': dependencies: - '@microsoft/api-extractor': 7.3.11 + '@azure/core-paging': 1.0.0-preview.1 + '@azure/core-tracing': 1.0.0-preview.1 + '@microsoft/api-extractor': 7.3.8 '@trust/keyto': 0.3.7 - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 '@types/dotenv': 6.1.1 '@types/fs-extra': 8.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 assert: 1.5.0 chai: 4.2.0 - cross-env: 5.2.1 + cross-env: 5.2.0 dotenv: 8.1.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 fs-extra: 8.1.0 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-json-preprocessor: 0.3.3_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-json-preprocessor: 0.3.3_karma@4.2.0 karma-json-to-file-reporter: 1.0.1 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 - nise: 1.5.2 + nise: 1.5.1 nock: 11.3.2 nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.19.0 query-string: 5.1.1 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 source-map-support: 0.5.13 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 uglify-js: 3.6.0 url: 0.11.0 dev: false @@ -10937,62 +11391,63 @@ packages: version: 0.0.0 'file:projects/keyvault-secrets.tgz': dependencies: - '@microsoft/api-extractor': 7.3.11 - '@types/chai': 4.2.1 + '@azure/core-paging': 1.0.0-preview.1 + '@microsoft/api-extractor': 7.3.8 + '@types/chai': 4.2.0 '@types/dotenv': 6.1.1 '@types/fs-extra': 8.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 assert: 1.5.0 chai: 4.2.0 - cross-env: 5.2.1 + cross-env: 5.2.0 dotenv: 8.1.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 fs-extra: 8.1.0 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-json-preprocessor: 0.3.3_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-json-preprocessor: 0.3.3_karma@4.2.0 karma-json-to-file-reporter: 1.0.1 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 - nise: 1.5.2 + nise: 1.5.1 nock: 11.3.2 nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.19.0 query-string: 5.1.1 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 source-map-support: 0.5.13 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 uglify-js: 3.6.0 url: 0.11.0 dev: false @@ -11006,44 +11461,44 @@ packages: '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 '@azure/arm-servicebus': 3.2.0 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/async-lock': 1.1.1 - '@types/chai': 4.2.1 + '@types/chai': 4.2.0 '@types/chai-as-promised': 7.1.2 '@types/debug': 4.1.5 '@types/dotenv': 6.1.1 '@types/is-buffer': 2.0.0 '@types/long': 4.0.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/ws': 6.0.3 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@typescript-eslint/eslint-plugin': 2.0.0_3cafee28902d96627d4743e014bc28ff + '@typescript-eslint/parser': 2.0.0_eslint@6.2.1 assert: 1.5.0 - buffer: 5.4.2 + buffer: 5.4.0 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 - cross-env: 5.2.1 + cross-env: 5.2.0 debug: 4.1.1 delay: 4.3.0 dotenv: 8.1.0 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 https-proxy-agent: 2.2.2 is-buffer: 2.0.3 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 long: 4.0.0 mocha: 6.2.0 @@ -11058,19 +11513,19 @@ packages: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-inject: 3.0.1 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - ts-node: 8.3.0_typescript@3.6.2 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 ws: 7.1.2 dev: false name: '@rush-temp/service-bus' @@ -11081,23 +11536,23 @@ packages: 'file:projects/storage-blob.tgz': dependencies: '@azure/ms-rest-js': 2.0.4 - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/dotenv': 6.1.1 '@types/fs-extra': 8.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@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.1 + cross-env: 5.2.0 dotenv: 8.1.0 es6-promise: 4.2.8 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 events: 3.0.0 @@ -11105,42 +11560,42 @@ packages: gulp: 4.0.2 gulp-zip: 5.0.0_gulp@4.0.2 inherits: 2.0.4 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-json-preprocessor: 0.3.3_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-json-preprocessor: 0.3.3_karma@4.2.0 karma-json-to-file-reporter: 1.0.1 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 - nise: 1.5.2 + nise: 1.5.1 nock: 11.3.2 nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.19.0 query-string: 5.1.1 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 source-map-support: 0.5.13 - ts-node: 8.3.0_typescript@3.6.2 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 util: 0.12.1 dev: false name: '@rush-temp/storage-blob' @@ -11151,23 +11606,23 @@ packages: 'file:projects/storage-file.tgz': dependencies: '@azure/ms-rest-js': 2.0.4 - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/dotenv': 6.1.1 '@types/fs-extra': 8.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@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.1 + cross-env: 5.2.0 dotenv: 8.1.0 es6-promise: 4.2.8 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 events: 3.0.0 @@ -11175,42 +11630,42 @@ packages: gulp: 4.0.2 gulp-zip: 5.0.0_gulp@4.0.2 inherits: 2.0.4 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-json-preprocessor: 0.3.3_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-json-preprocessor: 0.3.3_karma@4.2.0 karma-json-to-file-reporter: 1.0.1 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 - nise: 1.5.2 + nise: 1.5.1 nock: 11.3.2 nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.19.0 query-string: 5.1.1 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 source-map-support: 0.5.13 - ts-node: 8.3.0_typescript@3.6.2 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 util: 0.12.1 dev: false name: '@rush-temp/storage-file' @@ -11221,65 +11676,65 @@ packages: 'file:projects/storage-queue.tgz': dependencies: '@azure/ms-rest-js': 2.0.4 - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/dotenv': 6.1.1 '@types/fs-extra': 8.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@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.1 + cross-env: 5.2.0 dotenv: 8.1.0 es6-promise: 4.2.8 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 fs-extra: 8.1.0 gulp: 4.0.2 gulp-zip: 5.0.0_gulp@4.0.2 inherits: 2.0.4 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-json-preprocessor: 0.3.3_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-json-preprocessor: 0.3.3_karma@4.2.0 karma-json-to-file-reporter: 1.0.1 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 - nise: 1.5.2 + nise: 1.5.1 nock: 11.3.2 nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.19.0 query-string: 5.1.1 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 source-map-support: 0.5.13 - ts-node: 8.3.0_typescript@3.6.2 + ts-node: 8.3.0_typescript@3.5.3 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 util: 0.12.1 dev: false name: '@rush-temp/storage-queue' @@ -11289,47 +11744,47 @@ packages: version: 0.0.0 'file:projects/template.tgz': dependencies: - '@microsoft/api-extractor': 7.3.11 + '@microsoft/api-extractor': 7.3.8 '@types/mocha': 5.2.7 - '@types/node': 8.10.53 - '@typescript-eslint/eslint-plugin': 2.1.0_3a8cea979a77aa77c321dad4153067ce - '@typescript-eslint/parser': 2.1.0_eslint@6.3.0 + '@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.1 - eslint: 6.3.0 - eslint-config-prettier: 6.2.0_eslint@6.3.0 - eslint-plugin-no-null: 1.0.2_eslint@6.3.0 + cross-env: 5.2.0 + 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 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 events: 3.0.0 inherits: 2.0.4 - karma: 4.3.0 + karma: 4.2.0 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.1 - karma-edge-launcher: 0.4.2_karma@4.3.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.2.0 - karma-ie-launcher: 1.0.0_karma@4.3.0 - karma-junit-reporter: 1.2.0_karma@4.3.0 + karma-ie-launcher: 1.0.0_karma@4.2.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.3.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@2.0.1 mocha: 6.2.0 mocha-junit-reporter: 1.23.1_mocha@6.2.0 mocha-multi: 1.1.3_mocha@6.2.0 prettier: 1.18.2 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 util: 0.12.1 dev: false name: '@rush-temp/template' @@ -11343,19 +11798,21 @@ packages: '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 + '@types/query-string': 6.2.0 fs-extra: 8.1.0 - nise: 1.5.2 + nise: 1.5.1 nock: 11.3.2 + query-string: 5.1.1 rimraf: 3.0.0 - rollup: 1.20.3 - rollup-plugin-commonjs: 10.1.0_rollup@1.20.3 + rollup: 1.20.1 + rollup-plugin-commonjs: 10.0.2_rollup@1.20.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.20.3 + rollup-plugin-node-resolve: 5.2.0_rollup@1.20.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.3 - rollup-plugin-terser: 5.1.1_rollup@1.20.3 - rollup-plugin-visualizer: 2.5.4_rollup@1.20.3 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.20.1 + rollup-plugin-terser: 5.1.1_rollup@1.20.1 + rollup-plugin-visualizer: 2.5.4_rollup@1.20.1 tslib: 1.10.0 dev: false name: '@rush-temp/test-utils-recorder' @@ -11366,7 +11823,7 @@ packages: 'file:projects/testhub.tgz': dependencies: '@azure/event-hubs': 2.1.1 - '@types/node': 8.10.53 + '@types/node': 8.10.52 '@types/uuid': 3.4.5 '@types/yargs': 13.0.2 async-lock: 1.2.2 @@ -11375,7 +11832,7 @@ packages: rhea: 1.0.8 rimraf: 3.0.0 tslib: 1.10.0 - typescript: 3.6.2 + typescript: 3.5.3 uuid: 3.3.3 yargs: 14.0.0 dev: false @@ -11394,6 +11851,7 @@ specifiers: '@azure/logger-js': ^1.0.2 '@azure/ms-rest-js': ^2.0.0 '@azure/ms-rest-nodeauth': ^0.9.2 + '@azure/storage-blob': 12.0.0-preview.2 '@microsoft/api-extractor': ^7.1.5 '@rush-temp/abort-controller': 'file:./projects/abort-controller.tgz' '@rush-temp/app-configuration': 'file:./projects/app-configuration.tgz' @@ -11407,6 +11865,7 @@ specifiers: '@rush-temp/cosmos': 'file:./projects/cosmos.tgz' '@rush-temp/event-hubs': 'file:./projects/event-hubs.tgz' '@rush-temp/event-processor-host': 'file:./projects/event-processor-host.tgz' + '@rush-temp/eventhubs-checkpoint-blob': 'file:./projects/eventhubs-checkpoint-blob.tgz' '@rush-temp/identity': 'file:./projects/identity.tgz' '@rush-temp/keyvault-certificates': 'file:./projects/keyvault-certificates.tgz' '@rush-temp/keyvault-keys': 'file:./projects/keyvault-keys.tgz' @@ -11488,6 +11947,7 @@ specifiers: form-data: ^2.5.0 fs-extra: ^8.1.0 glob: ^7.1.2 + guid-typescript: 1.0.9 gulp: ^4.0.0 gulp-zip: ^5.0.0 https-proxy-agent: ^2.2.1 diff --git a/rush.json b/rush.json index 43e1e2cf6eea..27e84d8d8410 100644 --- a/rush.json +++ b/rush.json @@ -362,6 +362,10 @@ "packageName": "@azure/event-hubs", "projectFolder": "sdk/eventhub/event-hubs" }, + { + "packageName": "@azure/eventhubs-checkpoint-blob", + "projectFolder": "sdk/eventhub/eventhubs-checkpoint-blob" + }, { "packageName": "@azure/event-processor-host", "projectFolder": "sdk/eventhub/event-processor-host" diff --git a/sdk/eventhub/event-hubs/.vscode/launch.json b/sdk/eventhub/event-hubs/.vscode/launch.json index 8659ad4c95f6..c2a2c66ba1c0 100644 --- a/sdk/eventhub/event-hubs/.vscode/launch.json +++ b/sdk/eventhub/event-hubs/.vscode/launch.json @@ -11,7 +11,7 @@ "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", "args": [ "-u", - "tdd", + "bdd", "--timeout", "999999", "--colors", diff --git a/sdk/eventhub/event-hubs/review/event-hubs.api.md b/sdk/eventhub/event-hubs/review/event-hubs.api.md index b7c177fedea5..d4527581298c 100644 --- a/sdk/eventhub/event-hubs/review/event-hubs.api.md +++ b/sdk/eventhub/event-hubs/review/event-hubs.api.md @@ -181,13 +181,10 @@ export class EventProcessor { stop(): Promise; } -// @public (undocumented) +// @public export interface EventProcessorOptions { - // (undocumented) initialEventPosition?: EventPosition; - // (undocumented) maxBatchSize?: number; - // (undocumented) maxWaitTimeInSeconds?: number; } diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/.vscode/launch.json b/sdk/eventhub/eventhubs-checkpoint-blob/.vscode/launch.json new file mode 100644 index 000000000000..b8d737ba823b --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/.vscode/launch.json @@ -0,0 +1,36 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Client Unit Tests", + "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", + "args": [ + "-u", + "bdd", + "--timeout", + "999999", + "--colors", + "${workspaceFolder}/test-dist/index.js" + ], + "internalConsoleOptions": "openOnSessionStart", + "preLaunchTask": "npm: build:test", + "envFile": "${workspaceFolder}/.env" // You can take a look at the sample.env file for supported environment variables. + }, + { + "type": "node", + "request": "launch", + "name": "Client Example", + "program": "${file}", + "preLaunchTask": "npm: build:samples", + "outFiles": [ + "${workspaceFolder}/dist-esm/**/*.js" + ], + "envFile": "${workspaceFolder}/.env" // You can take a look at the sample.env file for supported environment variables. + } + ] +} diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/License b/sdk/eventhub/eventhubs-checkpoint-blob/License new file mode 100644 index 000000000000..cbf2717d8cd3 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/License @@ -0,0 +1,22 @@ + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/README.md b/sdk/eventhub/eventhubs-checkpoint-blob/README.md new file mode 100644 index 000000000000..d52d2847f2d3 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/README.md @@ -0,0 +1,19 @@ +# Azure Event Hubs checkpoint blob library for Javascript + +This template serves as a starting point for JavaScript libraries targeting both Node and the Browser and implemented in TypeScript. + +[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs/event-processor-host) | [Package (npm)](https://www.npmjs.com/package/@azure/eventhubs-checkpoint-blob) | [API Reference Documentation](https://azure.github.io/azure-sdk-for-js/event-processor-host/index.html) | [Product documentation](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-event-processor-host) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs/event-processor-host/samples) + +## Getting Started + +## Key concepts + +## Examples + +## Troubleshooting + +## Enable logs + +## Next Steps + +## Contributing diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/api-extractor.json b/sdk/eventhub/eventhubs-checkpoint-blob/api-extractor.json new file mode 100644 index 000000000000..f4626f520110 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/api-extractor.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + "mainEntryPointFilePath": "typings/src/index.d.ts", + "docModel": { + "enabled": false + }, + "apiReport": { + "enabled": true, + "reportFolder": "./review" + }, + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "", + "publicTrimmedFilePath": "./typings/eventhubs-checkpoint-blob.d.ts" + }, + "messages": { + "tsdocMessageReporting": { + "default": { + "logLevel": "none" + } + }, + "extractorMessageReporting": { + "ae-missing-release-tag": { + "logLevel": "none" + }, + "ae-unresolved-link": { + "logLevel": "none" + } + } + } +} diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/changelog.md b/sdk/eventhub/eventhubs-checkpoint-blob/changelog.md new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/karma.conf.js b/sdk/eventhub/eventhubs-checkpoint-blob/karma.conf.js new file mode 100644 index 000000000000..f6c9a619ba18 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/karma.conf.js @@ -0,0 +1,118 @@ +// https://github.com/karma-runner/karma-chrome-launcher +process.env.CHROME_BIN = require("puppeteer").executablePath(); + +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-remap-coverage", + "karma-junit-reporter" + ], + + // list of files / patterns to load in the browser + files: [ + // Uncomment the cdn link below for the polyfill service to support IE11 missing features + // Promise,String.prototype.startsWith,String.prototype.endsWith,String.prototype.repeat,String.prototype.includes,Array.prototype.includes,Object.keys + // "https://cdn.polyfill.io/v2/polyfill.js?features=Symbol,Promise,String.prototype.startsWith,String.prototype.endsWith,String.prototype.repeat,String.prototype.includes,Array.prototype.includes,Object.keys|always", + "dist-test/index.browser.js" + ], + + // 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": ["env"], + // IMPORTANT: COMMENT following line if you want to debug in your browsers!! + // Preprocess source file to calculate code coverage, however this will make source file unreadable + "test-browser/index.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: ["ACCOUNT_NAME", "ACCOUNT_SAS"], + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ["mocha", "coverage", "remap-coverage", "junit"], + + coverageReporter: { type: "in-memory" }, + + // Coverage report settings + remapCoverageReporter: { + "text-summary": null, // to show summary in console + html: "./coverage-browser", + cobertura: "./coverage-browser/cobertura-coverage.xml" + }, + + // Exclude coverage calculation for following files + remapOptions: { + exclude: /node_modules|test/g + }, + + junitReporter: { + outputDir: "", // results will be saved as $outputDir/$browserName.xml + outputFile: "test-results.browser.xml", // if included, results will be saved as $outputDir/$browserName/$outputFile + suite: "", // suite will become the package name attribute in xml testsuite element + useBrowserName: false, // add browser name to report and classes names + nameFormatter: undefined, // function (browser, result) to customize the name attribute in xml testcase element + classNameFormatter: undefined, // function (browser, result) to customize the classname attribute in xml testcase element + properties: {} // key value pair of properties to add to the section of the report + }, + + // web server port + port: 9876, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + // 'ChromeHeadless', 'Chrome', 'Firefox', 'Edge', 'IE' + browsers: ["ChromeHeadless"], + + // 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, + + client: { + mocha: { + // change Karma's debug.html to the mocha web reporter + reporter: "html", + timeout: "600000" + } + } + }); +}; diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/package.json b/sdk/eventhub/eventhubs-checkpoint-blob/package.json new file mode 100644 index 000000000000..284653abc8f5 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/package.json @@ -0,0 +1,125 @@ +{ + "name": "@azure/eventhubs-checkpoint-blob", + "sdk-type": "client", + "version": "1.0.0-preview.1", + "description": "Azure Event Hubs checkpoint blob for JS.", + "author": "Microsoft Corporation", + "license": "MIT", + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub", + "repository": "github:Azure/azure-sdk-for-js", + "sideEffects": false, + "keywords": [ + "azure", + "cloud", + "event hubs", + "events" + ], + "bugs": { + "url": "https://github.com/azure/azure-sdk-for-js/issues" + }, + "main": "./dist/index.js", + "module": "dist-esm/src/index.js", + "types": "./typings/eventhubs-checkpoint-blob.d.ts", + "browser": { + "./dist/index.js": "./browser/index.js" + }, + "engine": { + "node": ">=8.0.0" + }, + "files": [ + "dist/", + "dist-esm/src/", + "src/", + "typings/eventhubs-checkpoint-blob.d.ts", + "tsconfig.json" + ], + "scripts": { + "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1", + "build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1", + "build:samples": "cd samples && tsc -p .", + "build:test:browser": "tsc -p . && cross-env ONLY_BROWSER=true rollup -c rollup.test.config.js 2>&1", + "build:test:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c rollup.test.config.js 2>&1", + "build:test": "npm run build:test:node", + "build": "tsc -p . && rollup -c 2>&1 && npm run extract-api", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-esm test-dist typings *.tgz *.log", + "coverage": "nyc --reporter=lcov --exclude-after-remap=false mocha -t 120000 test-dist/index.js --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "integration-test:browser": "echo skipped", + "integration-test:node": "mocha -t 1200000 test-dist/index.js --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", + "integration-test": "npm run integration-test:node && npm run integration-test:browser", + "lint:fix": "eslint -c ../../.eslintrc.json src test samples --ext .ts --fix", + "lint": "eslint -c ../../.eslintrc.json src test samples --ext .ts -f html -o event-hubs-lintReport.html || exit 0", + "pack": "npm pack 2>&1", + "prebuild": "npm run clean", + "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", + "test": "npm run build:test && npm run unit-test && npm run integration-test", + "unit-test:browser": "echo skipped", + "unit-test:node": "echo skipped", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" + }, + "dependencies": { + "@azure/event-hubs": "5.0.0-preview.3", + "@azure/storage-blob": "12.0.0-preview.2", + "@azure/core-http": "1.0.0-preview.3", + "debug": "^4.1.1", + "events": "^3.0.0", + "tslib": "^1.9.3" + }, + "devDependencies": { + "@microsoft/api-extractor": "^7.1.5", + "@types/mocha": "^5.2.5", + "@types/debug": "^4.1.4", + "@types/node": "^8.0.0", + "@types/dotenv": "^6.1.0", + "@types/chai": "^4.1.6", + "@types/chai-as-promised": "^7.1.0", + "@types/chai-string": "^1.4.1", + "@typescript-eslint/eslint-plugin": "^2.0.0", + "@typescript-eslint/parser": "^2.0.0", + "assert": "^1.4.1", + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "chai-string": "^1.5.0", + "cross-env": "^5.2.0", + "eslint": "^6.1.0", + "dotenv": "^8.0.0", + "eslint-config-prettier": "^6.0.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", + "inherits": "^2.0.3", + "karma": "^4.0.1", + "karma-chrome-launcher": "^3.0.0", + "karma-coverage": "^2.0.0", + "karma-edge-launcher": "^0.4.2", + "karma-env-preprocessor": "^0.1.1", + "karma-firefox-launcher": "^1.1.0", + "karma-ie-launcher": "^1.0.0", + "karma-junit-reporter": "^1.2.0", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.5", + "karma-remap-coverage": "^0.1.5", + "mocha": "^6.2.0", + "mocha-junit-reporter": "^1.18.0", + "mocha-multi": "^1.1.3", + "prettier": "^1.16.4", + "rimraf": "^3.0.0", + "rollup": "^1.16.3", + "rollup-plugin-commonjs": "^10.0.0", + "rollup-plugin-json": "^4.0.0", + "rollup-plugin-multi-entry": "^2.1.0", + "rollup-plugin-node-resolve": "^5.0.2", + "rollup-plugin-replace": "^2.1.0", + "rollup-plugin-sourcemaps": "^0.4.2", + "rollup-plugin-terser": "^5.1.1", + "rollup-plugin-visualizer": "^2.0.0", + "typescript": "^3.2.2", + "ts-node": "^8.3.0", + "util": "^0.12.1", + "guid-typescript": "1.0.9" + } +} diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/review/eventhubs-checkpoint-blob.api.md b/sdk/eventhub/eventhubs-checkpoint-blob/review/eventhubs-checkpoint-blob.api.md new file mode 100644 index 000000000000..258959c98846 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/review/eventhubs-checkpoint-blob.api.md @@ -0,0 +1,23 @@ +## API Report File for "@azure/eventhubs-checkpoint-blob" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { Checkpoint } from '@azure/event-hubs'; +import { ContainerClient } from '@azure/storage-blob'; +import { PartitionManager } from '@azure/event-hubs'; +import { PartitionOwnership } from '@azure/event-hubs'; + +// @public +export class BlobPartitionManager implements PartitionManager { + constructor(containerClient: ContainerClient); + claimOwnership(partitionOwnership: PartitionOwnership[]): Promise; + listOwnership(eventHubName: string, consumerGroupName: string): Promise; + updateCheckpoint(checkpoint: Checkpoint): Promise; +} + + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/review/storage-blob-partition-manager.api.md b/sdk/eventhub/eventhubs-checkpoint-blob/review/storage-blob-partition-manager.api.md new file mode 100644 index 000000000000..f81c2a3dcdc5 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/review/storage-blob-partition-manager.api.md @@ -0,0 +1,23 @@ +## API Report File for "@azure/storage-blob-partition-manager" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { Checkpoint } from '@azure/event-hubs'; +import { ContainerClient } from '@azure/storage-blob'; +import { PartitionManager } from '@azure/event-hubs'; +import { PartitionOwnership } from '@azure/event-hubs'; + +// @public +export class BlobPartitionManager implements PartitionManager { + constructor(containerClient: ContainerClient); + claimOwnership(partitionOwnership: PartitionOwnership[]): Promise; + listOwnership(eventHubName: string, consumerGroupName: string): Promise; + updateCheckpoint(checkpoint: Checkpoint): Promise; +} + + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/rollup.base.config.js b/sdk/eventhub/eventhubs-checkpoint-blob/rollup.base.config.js new file mode 100644 index 000000000000..98c031e9baa5 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/rollup.base.config.js @@ -0,0 +1,170 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import nodeResolve from "rollup-plugin-node-resolve"; +import multiEntry from "rollup-plugin-multi-entry"; +import cjs from "rollup-plugin-commonjs"; +import json from "rollup-plugin-json"; +import replace from "rollup-plugin-replace"; +import { terser } from "rollup-plugin-terser"; +import sourcemaps from "rollup-plugin-sourcemaps"; +import shim from "rollup-plugin-shim"; +import inject from "rollup-plugin-inject"; + +import path from "path"; + +const pkg = require("./package.json"); +const depNames = Object.keys(pkg.dependencies); +const input = "dist-esm/src/index.js"; +const production = process.env.NODE_ENV === "production"; + +export function nodeConfig(test = false) { + const externalNodeBuiltins = ["events", "util", "os"]; + const baseConfig = { + input: input, + external: depNames.concat(externalNodeBuiltins), + output: { file: "dist/index.js", format: "cjs", sourcemap: true }, + preserveSymlinks: false, + plugins: [ + sourcemaps(), + replace({ + delimiters: ["", ""], + 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)" + } + }), + nodeResolve({ preferBuiltins: true }), + cjs(), + json() + ] + }; + + baseConfig.external.push("crypto"); + + if (test) { + // entry point is every test file + baseConfig.input = "dist-esm/test/**/*.spec.js"; + baseConfig.plugins.unshift(multiEntry({ exports: false })); + + // different output file + baseConfig.output.file = "test-dist/index.js"; + + // mark assert as external + baseConfig.external.push( + "assert", + "fs", + "path", + "os", + "tty", + "child_process", + "@azure/identity" + ); + + baseConfig.onwarn = (warning) => { + if ( + warning.code === "CIRCULAR_DEPENDENCY" && + warning.importer.indexOf(path.normalize("node_modules/chai/lib") === 0) + ) { + // Chai contains circular references, but they are not fatal and can be ignored. + return; + } + + console.error(`(!) ${warning.message}`); + }; + + // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting + // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also + // applies to test code, which causes all tests to be removed by tree-shaking. + baseConfig.treeshake = false; + } else if (production) { + baseConfig.plugins.push(terser()); + } + + return baseConfig; +} + +export function browserConfig(test = false) { + const baseConfig = { + input: input, + external: ["ms-rest-js"], + output: { + file: "browser/eventhubs-checkpoint-blob.js", + format: "umd", + name: "Azure.Messaging.EventHubs.checkpoint.blob", + sourcemap: true, + globals: { "ms-rest-js": "msRest" } + }, + preserveSymlinks: false, + plugins: [ + sourcemaps(), + replace( + // ms-rest-js is externalized so users must include it prior to using this bundle. + { + delimiters: ["", ""], + values: { + // 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)" + } + } + ), + + // fs, net, and tls are used by rhea and need to be shimmed + // dotenv doesn't work in the browser, so replace it with a no-op function + shim({ + fs: `export default {}`, + net: `export default {}`, + tls: `export default {}`, + dotenv: `export function config() { }`, + os: ` + export function arch() { return "javascript" } + export function type() { return "Browser" } + export function release() { typeof navigator === 'undefined' ? '' : navigator.appVersion } + `, + path: `export default {}`, + dns: `export function resolve() { }` + }), + + nodeResolve({ + mainFields: ["module", "browser"], + preferBuiltins: false + }), + + cjs({ + namedExports: { + events: ["EventEmitter"] + } + }), + + // rhea and rhea-promise use the Buffer global which requires + // injection to shim properly + inject({ + modules: { + Buffer: ["buffer", "Buffer"], + process: "process" + }, + exclude: ["./**/package.json"] + }), + + json() + ] + }; + + if (test) { + baseConfig.input = "dist-esm/test/**/*.spec.js"; + baseConfig.plugins.unshift(multiEntry({ exports: false })); + baseConfig.output.file = "test-browser/index.js"; + + // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, rollup started respecting + // the "sideEffects" field in package.json. Since our package.json sets "sideEffects=false", this also + // applies to test code, which causes all tests to be removed by tree-shaking. + baseConfig.treeshake = false; + } else if (production) { + baseConfig.plugins.push(terser()); + } + + return baseConfig; +} diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/rollup.config.js b/sdk/eventhub/eventhubs-checkpoint-blob/rollup.config.js new file mode 100644 index 000000000000..01f209a32fa8 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/rollup.config.js @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import * as base from "./rollup.base.config"; + +const inputs = []; + +if (!process.env.ONLY_BROWSER) { + inputs.push(base.nodeConfig()); +} + +if (!process.env.ONLY_NODE) { + inputs.push(base.browserConfig()); +} + +export default inputs; diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/rollup.test.config.js b/sdk/eventhub/eventhubs-checkpoint-blob/rollup.test.config.js new file mode 100644 index 000000000000..48ea762bf9e0 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/rollup.test.config.js @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import * as base from "./rollup.base.config"; + +const inputs = []; + +if (!process.env.ONLY_BROWSER) { + inputs.push(base.nodeConfig({ test: true })); +} + +if (!process.env.ONLY_NODE) { + inputs.push(base.browserConfig({ test: true })); +} + +export default inputs; diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/samples/tsconfig.json b/sdk/eventhub/eventhubs-checkpoint-blob/samples/tsconfig.json new file mode 100644 index 000000000000..0ec6e53d9008 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/samples/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "module": "commonjs" + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "../node_modules", + "../typings/**", + ] +} diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/src/blobPartitionManager.ts b/sdk/eventhub/eventhubs-checkpoint-blob/src/blobPartitionManager.ts new file mode 100644 index 000000000000..f8c1ca83542a --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/src/blobPartitionManager.ts @@ -0,0 +1,212 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import { PartitionManager, PartitionOwnership, Checkpoint } from "@azure/event-hubs"; +import { ContainerClient } from "@azure/storage-blob"; +import * as log from "./log"; + +/** + * A blob storage implementation of a `PartitionManager` + * @class + */ +export class BlobPartitionManager implements PartitionManager { + private _containerClient: ContainerClient; + + constructor(containerClient: ContainerClient) { + this._containerClient = containerClient; + } + /** + * Get the list of all existing partition ownership from the underlying data store. Could return empty + * results if there are is no existing ownership information. + * + * @param eventHubName The event hub name. + * @param consumerGroupName The consumer group name. + * @return Partition ownership details of all the partitions that have/had an owner.. + */ + async listOwnership( + eventHubName: string, + consumerGroupName: string + ): Promise { + const partitionOwnershipArray: PartitionOwnership[] = []; + try { + for await (const blob of this._containerClient.listBlobsFlat({ + include: ["metadata"], + prefix: `${eventHubName}/${consumerGroupName}/` + })) { + const blobPath = blob.name.split("/"); + const blobName = blobPath[blobPath.length - 1]; + const partitionOwnership: PartitionOwnership = { + eventHubName, + consumerGroupName, + ownerId: blob.metadata!.ownerid, + partitionId: blobName, + offset: blob.metadata ? parseInt(blob.metadata.offset) : -1, + sequenceNumber: blob.metadata ? parseInt(blob.metadata.sequencenumber) : -1, + lastModifiedTimeInMS: + blob.properties.lastModified && Date.parse(blob.properties.lastModified.toISOString()), + eTag: blob.properties.etag, + ownerLevel: 0 // this needs to be removed from eventhubs + }; + partitionOwnershipArray.push(partitionOwnership); + } + } catch (err) { + log.error(`Error ocuured while fetching the list of the blobs.`, err); + } + + return partitionOwnershipArray; + } + + /** + * Claim ownership of a list of partitions. This will return the list of partitions that were owned + * successfully. + * + * @param partitionOwnership The list of partition ownership this instance is claiming to own. + * @return A list partitions this instance successfully claimed ownership. + */ + async claimOwnership(partitionOwnership: PartitionOwnership[]): Promise { + let partitionOwnershipArray: PartitionOwnership[] = []; + for (const ownership of partitionOwnership) { + const blobName = `${ownership.eventHubName}/${ownership.consumerGroupName}/${ownership.partitionId}`; + let eTag; + try { + for await (const blob of this._containerClient.listBlobsFlat({ + include: ["metadata"], + prefix: `${ownership.eventHubName}/${ownership.consumerGroupName}/` + })) { + if (blob.name === blobName) { + eTag = blob.properties.etag; + break; + } + } + let uploadBlobResponse; + const blobClient = this._containerClient.getBlobClient(blobName); + const blockBlobClient = blobClient.getBlockBlobClient(); + if (eTag) { + uploadBlobResponse = await blockBlobClient.upload("", 0, { + metadata: { + OwnerId: ownership.ownerId, + SequenceNumber: ownership.sequenceNumber ? ownership.sequenceNumber.toString() : "", + Offset: ownership.offset ? ownership.offset.toString() : "" + }, + accessConditions: { + modifiedAccessConditions: { + ifMatch: eTag + } + } + }); + } else { + uploadBlobResponse = await blockBlobClient.upload("", 0, { + metadata: { + OwnerId: ownership.ownerId, + SequenceNumber: ownership.sequenceNumber ? ownership.sequenceNumber.toString() : "", + Offset: ownership.offset ? ownership.offset.toString() : "" + }, + accessConditions: { + modifiedAccessConditions: { + ifNoneMatch: "*" + } + } + }); + } + ownership.lastModifiedTimeInMS = Date.parse(uploadBlobResponse.lastModified!.toISOString()); + ownership.eTag = uploadBlobResponse.eTag; + partitionOwnershipArray.push(ownership); + log.blobPartitionManager( + `Upload block blob ${blobName} successfully`, + `LastModifiedTime: ${uploadBlobResponse.lastModified!.toISOString()}, ETag: ${ + uploadBlobResponse.eTag + }` + ); + } catch (err) { + log.error( + `${[ownership.ownerId]} Error ocuured while claiming ownership for partition: ${ + ownership.partitionId + }`, + err + ); + } + } + return partitionOwnershipArray; + } + + /** + * Updates the checkpoint in the data store for a partition. + * + * @param checkpoint The checkpoint. + * @return The new eTag on successful update + */ + async updateCheckpoint(checkpoint: Checkpoint): Promise { + const blobName = `${checkpoint.eventHubName}/${checkpoint.consumerGroupName}/${checkpoint.partitionId}`; + let ownerId; + let blob; + try { + for await (const blobItem of this._containerClient.listBlobsFlat({ + include: ["metadata"], + prefix: `${checkpoint.eventHubName}/${checkpoint.consumerGroupName}/` + })) { + if (blobItem.name === blobName) { + ownerId = blobItem.metadata!.ownerid; + blob = blobItem; + break; + } + } + } catch (err) { + log.error( + `${[checkpoint.ownerId]} Error ocuured while downloading the blob for partition: ${ + checkpoint.partitionId + }`, + err + ); + return ""; + } + + if (!blob) { + log.error( + `Checkpoint for partitionId: ${checkpoint.partitionId} never claimed, hence cannot update the checkpoint.` + ); + throw new Error( + `Checkpoint for partitionId: ${checkpoint.partitionId} never claimed, hence cannot update the checkpoint.` + ); + } + if (ownerId !== checkpoint.ownerId) { + log.error( + `ownerId: [${checkpoint.ownerId}] doesn't match with stored ownerId: [${ownerId}], hence cannot update the checkpoint.` + ); + throw new Error( + `OwnerId: [${checkpoint.ownerId}] doesn't match with stored ownerId: [${ownerId}], hence cannot update the checkpoint.` + ); + } + try { + const blobClient = this._containerClient.getBlobClient(blobName); + const blockBlobClient = blobClient.getBlockBlobClient(); + const uploadBlobResponse = await blockBlobClient.upload("", 0, { + metadata: { + OwnerId: checkpoint.ownerId, + SequenceNumber: checkpoint.sequenceNumber ? checkpoint.sequenceNumber.toString() : "", + Offset: checkpoint.offset ? checkpoint.offset.toString() : "" + }, + accessConditions: { + modifiedAccessConditions: { + ifMatch: checkpoint.eTag + } + } + }); + + log.blobPartitionManager( + `Upload block blob ${blobName} successfully`, + `LastModifiedTime: ${uploadBlobResponse.lastModified!.toISOString()}, ETag: ${ + uploadBlobResponse.eTag + }` + ); + return uploadBlobResponse.eTag || ""; + } catch (err) { + log.error( + `${[checkpoint.ownerId]} Error ocuured while uploading the blob for partition: ${ + checkpoint.partitionId + }, hence cannot update the checkpoint`, + err + ); + return ""; + } + } +} diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/src/index.ts b/sdk/eventhub/eventhubs-checkpoint-blob/src/index.ts new file mode 100644 index 000000000000..e874171781d3 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/src/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +/// + +export { BlobPartitionManager } from "./blobPartitionManager"; diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/src/log.ts b/sdk/eventhub/eventhubs-checkpoint-blob/src/log.ts new file mode 100644 index 000000000000..aeffea399659 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/src/log.ts @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import debugModule from "debug"; +/** + * @ignore + * log statements for error + */ +export const error = debugModule("azure:event-hubs:error"); +/** + * @ignore + * log statements for blobPartitionManager + */ +export const blobPartitionManager = debugModule("azure:storage-blob-partition-manager:blobPartitionManager"); diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/test/blob-partition-manager.spec.ts b/sdk/eventhub/eventhubs-checkpoint-blob/test/blob-partition-manager.spec.ts new file mode 100644 index 000000000000..177e7cc5be6d --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/test/blob-partition-manager.spec.ts @@ -0,0 +1,267 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import chai from "chai"; +const should = chai.should(); +import chaiAsPromised from "chai-as-promised"; +chai.use(chaiAsPromised); +import chaiString from "chai-string"; +chai.use(chaiString); +import debugModule from "debug"; +const debug = debugModule("azure:event-hubs:partitionPump"); +import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; +import { BlobPartitionManager } from "../src"; +import { ContainerClient } from "@azure/storage-blob"; +import { PartitionOwnership, Checkpoint } from "@azure/event-hubs"; +import { Guid } from "guid-typescript"; +const env = getEnvVars(); + +describe("Blob Partition Manager", function(): void { + const service = { + storageConnectionString: env[EnvVarKeys.STORAGE_CONNECTION_STRING] + }; + let containerClient: ContainerClient; + before("validate environment", async function(): Promise { + should.exist( + env[EnvVarKeys.STORAGE_CONNECTION_STRING], + "define STORAGE_CONNECTION_STRING in your environment before running integration tests." + ); + }); + + + beforeEach(async () => { + containerClient = new ContainerClient(service.storageConnectionString, `container-${Guid.create()}`); + await containerClient.create(); + }); + + afterEach(async() => { + await containerClient.delete(); + }); + + it("listOwnership should return an empty array", async function(): Promise { + const partitionManager = new BlobPartitionManager(containerClient); + const listOwnership = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + should.equal(listOwnership.length, 0); + }); + + it("claimOwnership call should succeed, if it has been called for the first time", async function(): Promise< + void + > { + const partitionManager = new BlobPartitionManager(containerClient); + const listOwnership = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + should.equal(listOwnership.length, 0); + + const partitionOwnership: PartitionOwnership = { + ownerId: "Id1", + partitionId: "0", + consumerGroupName: "testConsumerGroup", + eventHubName: "testEventHub", + ownerLevel: 0 + }; + + const partitionOwnershipArray = await partitionManager.claimOwnership([partitionOwnership]); + should.equal(partitionOwnershipArray.length, 1); + const ownershipList = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + ownershipList.length.should.equal(1); + ownershipList[0].ownerId.should.equal("Id1"); + ownershipList[0].partitionId.should.equal("0"); + ownershipList[0].consumerGroupName.should.equal("testConsumerGroup"); + ownershipList[0].eventHubName.should.equal("testEventHub"); + ownershipList[0].lastModifiedTimeInMS!.should.not.undefined; + ownershipList[0].eTag!.should.not.undefined; + debug( + `LastModifiedTime: ${ownershipList[0].lastModifiedTimeInMS!}, ETag: ${ownershipList[0].eTag}` + ); + }); + + it("After multiple claimOwnership calls for a single partition, listOwnership should return an array with a single PartitionOwnership for that partition.", async function(): Promise< + void + > { + const partitionManager = new BlobPartitionManager(containerClient); + const listOwnership = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + should.equal(listOwnership.length, 0); + + const partitionOwnership: PartitionOwnership = { + ownerId: "Id1", + partitionId: "0", + consumerGroupName: "testConsumerGroup", + eventHubName: "testEventHub", + ownerLevel: 0 + }; + + await partitionManager.claimOwnership([partitionOwnership]); + await partitionManager.claimOwnership([partitionOwnership]); + await partitionManager.claimOwnership([partitionOwnership]); + + const ownershipList = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + ownershipList.length.should.equal(1); + ownershipList[0].ownerId.should.equal("Id1"); + ownershipList[0].partitionId.should.equal("0"); + ownershipList[0].consumerGroupName.should.equal("testConsumerGroup"); + ownershipList[0].eventHubName.should.equal("testEventHub"); + ownershipList[0].lastModifiedTimeInMS!.should.not.undefined; + ownershipList[0].eTag!.should.not.undefined; + debug( + `LastModifiedTime: ${ownershipList[0].lastModifiedTimeInMS!}, ETag: ${ownershipList[0].eTag}` + ); + }); + + it("After multiple claimOwnership calls for multiple partition, listOwnership should return an array with a single PartitionOwnership for each partition.", async function(): Promise< + void + > { + const partitionManager = new BlobPartitionManager(containerClient); + const listOwnership = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + should.equal(listOwnership.length, 0); + + const partitionOwnershipArray: PartitionOwnership[] = []; + + for (let index = 0; index < 3; index++) { + const partitionOwnership: PartitionOwnership = { + ownerId: "Id1", + partitionId: `${index}`, + consumerGroupName: "testConsumerGroup", + eventHubName: "testEventHub", + ownerLevel: 0 + }; + partitionOwnershipArray.push(partitionOwnership); + } + + await partitionManager.claimOwnership([partitionOwnershipArray[0]]); + await partitionManager.claimOwnership([partitionOwnershipArray[1]]); + await partitionManager.claimOwnership([partitionOwnershipArray[2]]); + + const ownershipList = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + ownershipList.length.should.equal(3); + + ownershipList[0].partitionId.should.equal("0"); + ownershipList[0].ownerId.should.equal("Id1"); + ownershipList[0].consumerGroupName.should.equal("testConsumerGroup"); + ownershipList[0].eventHubName.should.equal("testEventHub"); + ownershipList[0].lastModifiedTimeInMS!.should.not.undefined; + ownershipList[0].eTag!.should.not.undefined; + + ownershipList[1].partitionId.should.equal("1"); + ownershipList[1].lastModifiedTimeInMS!.should.not.undefined; + ownershipList[1].eTag!.should.not.undefined; + + ownershipList[2].partitionId.should.equal("2"); + ownershipList[2].lastModifiedTimeInMS!.should.not.undefined; + ownershipList[2].eTag!.should.not.undefined; + }); + + it("updateCheckpoint on a partition with the correct ownerId should update the checkpoint.", async function(): Promise< + void + > { + const partitionManager = new BlobPartitionManager(containerClient); + const listOwnership = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + should.equal(listOwnership.length, 0); + + const partitionOwnership: PartitionOwnership = { + ownerId: "Id1", + partitionId: "0", + consumerGroupName: "testConsumerGroup", + eventHubName: "testEventHub", + ownerLevel: 0 + }; + + const partitionOwnershipArray = await partitionManager.claimOwnership([partitionOwnership]); + should.equal(partitionOwnershipArray.length, 1); + const ownershipList = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + ownershipList.length.should.equal(1); + ownershipList[0].ownerId.should.equal("Id1"); + ownershipList[0].partitionId.should.equal("0"); + ownershipList[0].consumerGroupName.should.equal("testConsumerGroup"); + ownershipList[0].eventHubName.should.equal("testEventHub"); + ownershipList[0].lastModifiedTimeInMS!.should.not.undefined; + ownershipList[0].eTag!.should.not.undefined; + + const checkpoint: Checkpoint = { + eventHubName: "testEventHub", + consumerGroupName: "testConsumerGroup", + ownerId: "Id1", + partitionId: "0", + sequenceNumber: 100, + offset: 1023, + eTag: ownershipList[0].eTag! + }; + + await partitionManager.updateCheckpoint(checkpoint); + const ownershipArray = await partitionManager.listOwnership( + "testEventHub", + "testConsumerGroup" + ); + ownershipArray.length.should.equal(1); + ownershipArray[0].ownerId.should.equal("Id1"); + ownershipArray[0].partitionId.should.equal("0"); + ownershipArray[0].consumerGroupName.should.equal("testConsumerGroup"); + ownershipArray[0].eventHubName.should.equal("testEventHub"); + ownershipArray[0].sequenceNumber!.should.equal(100); + ownershipArray[0].offset!.should.equal(1023); + ownershipArray[0].eTag!.should.not.undefined; + ownershipArray[0].eTag!.should.not.equal(ownershipList[0].eTag!); + ownershipArray[0].lastModifiedTimeInMS!.should.not.undefined; + }); + + it("updateCheckpoint on a partition with the incorrect ownerId should throw an error.", async function(): Promise< + void + > { + const partitionManager = new BlobPartitionManager(containerClient); + const listOwnership = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + should.equal(listOwnership.length, 0); + + const partitionOwnership: PartitionOwnership = { + ownerId: "Id1", + partitionId: "0", + consumerGroupName: "testConsumerGroup", + eventHubName: "testEventHub", + ownerLevel: 0 + }; + + const partitionOwnershipArray = await partitionManager.claimOwnership([partitionOwnership]); + should.equal(partitionOwnershipArray.length, 1); + const ownershipList = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + ownershipList.length.should.equal(1); + + const checkpoint: Checkpoint = { + eventHubName: "testEventHub", + consumerGroupName: "testConsumerGroup", + ownerId: "Id2", + partitionId: "0", + sequenceNumber: 100, + offset: 1023, + eTag: ownershipList[0].eTag! + }; + + await partitionManager.updateCheckpoint(checkpoint).catch((err) => { + debug("Error occured while updating checkpoint", err); + should.exist(err); + err.message.should.equal(`OwnerId: [${checkpoint.ownerId}] doesn't match with stored ownerId: [${ownershipList[0].ownerId}], hence cannot update the checkpoint.` + ); + }); + }); + + it("updateCheckpoint on a partition that has not been claimed should throw an error.", async function(): Promise< + void +> { + const partitionManager = new BlobPartitionManager(containerClient); + const listOwnership = await partitionManager.listOwnership("testEventHub", "testConsumerGroup"); + should.equal(listOwnership.length, 0); + + const checkpoint: Checkpoint = { + eventHubName: "testEventHub", + consumerGroupName: "testConsumerGroup", + ownerId: "Id2", + partitionId: "0", + sequenceNumber: 100, + offset: 1023, + eTag: "etag-123" + }; + + await partitionManager.updateCheckpoint(checkpoint).catch((err) => { + debug("Error occured while updating checkpoint", err); + should.exist(err); + err.message.should.equal(`Checkpoint for partitionId: ${checkpoint.partitionId} never claimed, hence cannot update the checkpoint.` + ); + }); +}); +}).timeout(90000); diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/test/utils/testUtils.ts b/sdk/eventhub/eventhubs-checkpoint-blob/test/utils/testUtils.ts new file mode 100644 index 000000000000..ca734df912e5 --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/test/utils/testUtils.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import * as dotenv from "dotenv"; +dotenv.config(); + +export const isNode = + !!process && !!process.version && !!process.versions && !!process.versions.node; + +export enum EnvVarKeys { + STORAGE_CONNECTION_STRING = "STORAGE_CONNECTION_STRING" +} + +function getEnvVarValue(name: string): string | undefined { + if (isNode) { + return process.env[name]; + } else { + // @ts-ignore + return window.__env__[name]; + } +} + +export function getEnvVars(): { [key in EnvVarKeys]: any } { + return { + [EnvVarKeys.STORAGE_CONNECTION_STRING]: getEnvVarValue(EnvVarKeys.STORAGE_CONNECTION_STRING) + }; +} diff --git a/sdk/eventhub/eventhubs-checkpoint-blob/tsconfig.json b/sdk/eventhub/eventhubs-checkpoint-blob/tsconfig.json new file mode 100644 index 000000000000..008f6441a69d --- /dev/null +++ b/sdk/eventhub/eventhubs-checkpoint-blob/tsconfig.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + /* Basic Options */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */, + "module": "es6" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + + "outDir": "./dist-esm" /* Redirect output structure to the directory. */, + "declarationDir": "./typings" /* Output directory for generated declaration files.*/, + + "importHelpers": true /* Import emit helpers from 'tslib'. */, + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, + + /* Additional Checks */ + "noUnusedLocals": true /* Report errors on unused locals. */, + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + + /* Experimental Options */ + "forceConsistentCasingInFileNames": true, + + /* Other options */ + "newLine": "LF" /* Use the specified end of line sequence to be used when emitting files: "crlf" (windows) or "lf" (unix).”*/, + "allowJs": false /* Don't allow JavaScript files to be compiled.*/, + "resolveJsonModule": true + }, + "compileOnSave": true, + "exclude": ["node_modules", "typings/**", "./samples/**/*.ts"], + "include": ["./src/**/*.ts", "./test/**/*.ts"] +} diff --git a/sdk/eventhub/storage-blob-partition-manager/src/blobPartitionManager.ts b/sdk/eventhub/storage-blob-partition-manager/src/blobPartitionManager.ts new file mode 100644 index 000000000000..9caa5bcc1734 --- /dev/null +++ b/sdk/eventhub/storage-blob-partition-manager/src/blobPartitionManager.ts @@ -0,0 +1,217 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import { PartitionManager, PartitionOwnership, Checkpoint } from "@azure/event-hubs"; +import { ContainerClient, Models } from "@azure/storage-blob"; +import * as log from "./log"; + +/** + * A blob storage implementation of a `PartitionManager` + * @class + */ +export class BlobPartitionManager implements PartitionManager { + private _containerClient: ContainerClient; + + constructor(containerClient: ContainerClient) { + this._containerClient = containerClient; + } + /** + * Get the list of all existing partition ownership from the underlying data store. Could return empty + * results if there are is no existing ownership information. + * + * @param eventHubName The event hub name. + * @param consumerGroupName The consumer group name. + * @return Partition ownership details of all the partitions that have/had an owner.. + */ + async listOwnership( + eventHubName: string, + consumerGroupName: string + ): Promise { + const partitionOwnershipArray: PartitionOwnership[] = []; + + for await (const blob of this._containerClient.listBlobsFlat()) { + const blobPath = blob.name.split("/"); + const blobName = blobPath[blobPath.length - 1]; + const blobClient = this._containerClient.getBlobClient(blob.name); + try { + const downloadBlockBlobResponse: Models.BlobDownloadResponse = await blobClient.download(); + const partitionOwnership: PartitionOwnership = { + eventHubName, + consumerGroupName, + ownerId: downloadBlockBlobResponse.metadata!.ownerid, + partitionId: blobName, + offset: downloadBlockBlobResponse.metadata + ? parseInt(downloadBlockBlobResponse.metadata.offset) + : -1, + sequenceNumber: downloadBlockBlobResponse.metadata + ? parseInt(downloadBlockBlobResponse.metadata.sequencenumber) + : -1, + lastModifiedTimeInMS: + downloadBlockBlobResponse.lastModified && + Date.parse(downloadBlockBlobResponse.lastModified.toISOString()), + eTag: downloadBlockBlobResponse.eTag, + ownerLevel: 0 // this needs to be removed from eventhubs + }; + partitionOwnershipArray.push(partitionOwnership); + } catch (err) { + log.error( + `Error ocuured while downloading the blob: ${blob.name} for partitionId: ${blobName}.`, + err + ); + } + } + + return partitionOwnershipArray; + } + + /** + * Claim ownership of a list of partitions. This will return the list of partitions that were owned + * successfully. + * + * @param partitionOwnership The list of partition ownership this instance is claiming to own. + * @return A list partitions this instance successfully claimed ownership. + */ + async claimOwnership(partitionOwnership: PartitionOwnership[]): Promise { + let partitionOwnershipArray: PartitionOwnership[] = []; + for (const ownership of partitionOwnership) { + const blobName = `${ownership.eventHubName}/${ownership.consumerGroupName}/${ownership.partitionId}`; + const blobClient = this._containerClient.getBlobClient(blobName); + const blockBlobClient = blobClient.getBlockBlobClient(); + let eTag; + try { + for await (const blob of this._containerClient.listBlobsFlat()) { + if (blob.name === blobName) { + const downloadBlockBlobResponse: Models.BlobDownloadResponse = await blobClient.download(); + eTag = downloadBlockBlobResponse.eTag; + break; + } + } + let uploadBlobResponse; + if (eTag) { + uploadBlobResponse = await blockBlobClient.upload("", 0, { + metadata: { + OwnerId: ownership.ownerId, + SequenceNumber: ownership.sequenceNumber ? ownership.sequenceNumber.toString() : "", + Offset: ownership.offset ? ownership.offset.toString() : "" + }, + accessConditions: { + modifiedAccessConditions: { + ifMatch: eTag + } + } + }); + } else { + uploadBlobResponse = await blockBlobClient.upload("", 0, { + metadata: { + OwnerId: ownership.ownerId, + SequenceNumber: ownership.sequenceNumber ? ownership.sequenceNumber.toString() : "", + Offset: ownership.offset ? ownership.offset.toString() : "" + }, + accessConditions: { + modifiedAccessConditions: { + ifNoneMatch: "*" + } + } + }); + } + ownership.lastModifiedTimeInMS = Date.parse(uploadBlobResponse.lastModified!.toISOString()); + ownership.eTag = uploadBlobResponse.eTag; + partitionOwnershipArray.push(ownership); + log.blobPartitionManager( + `Upload block blob ${blobName} successfully`, + `LastModifiedTime: ${uploadBlobResponse.lastModified!.toISOString()}, ETag: ${ + uploadBlobResponse.eTag + }` + ); + } catch (err) { + log.error( + `${[ownership.ownerId]} Error ocuured while claiming ownership for partition: ${ + ownership.partitionId + }`, + err + ); + } + } + return partitionOwnershipArray; + } + + /** + * Updates the checkpoint in the data store for a partition. + * + * @param checkpoint The checkpoint. + * @return The new eTag on successful update + */ + async updateCheckpoint(checkpoint: Checkpoint): Promise { + const blobName = `${checkpoint.eventHubName}/${checkpoint.consumerGroupName}/${checkpoint.partitionId}`; + let uploadBlobResponse; + const blobClient = this._containerClient.getBlobClient(blobName); + const blockBlobClient = blobClient.getBlockBlobClient(); + + let ownerId; + let blob; + try { + for await (const blobItem of this._containerClient.listBlobsFlat()) { + if (blobItem.name === blobName) { + const downloadBlockBlobResponse: Models.BlobDownloadResponse = await blobClient.download(); + ownerId = downloadBlockBlobResponse.metadata!.ownerid; + blob = blobItem; + break; + } + } + } catch (err) { + log.error( + `${[checkpoint.ownerId]} Error ocuured while downloading the blob for partition: ${ + checkpoint.partitionId + }, hence cannot update the checkpoint`, + err + ); + return ""; + } + if (!blob) { + log.error( + `Checkpoint for partitionId: ${checkpoint.partitionId} never claimed, hence cannot update the checkpoint.` + ); + throw new Error( + `Checkpoint for partitionId: ${checkpoint.partitionId} never claimed, hence cannot update the checkpoint.` + ); + } + if (ownerId !== checkpoint.ownerId) { + log.error( + `ownerId: [${checkpoint.ownerId}] doesn't match with stored ownerId: [${ownerId}], hence cannot update the checkpoint.` + ); + throw new Error( + `OwnerId: [${checkpoint.ownerId}] doesn't match with stored ownerId: [${ownerId}], hence cannot update the checkpoint.` + ); + } + try { + uploadBlobResponse = await blockBlobClient.upload("", 0, { + metadata: { + OwnerId: checkpoint.ownerId, + SequenceNumber: checkpoint.sequenceNumber ? checkpoint.sequenceNumber.toString() : "", + Offset: checkpoint.offset ? checkpoint.offset.toString() : "" + }, + accessConditions: { + modifiedAccessConditions: { + ifMatch: checkpoint.eTag + } + } + }); + + log.blobPartitionManager( + `Upload block blob ${blobName} successfully`, + `LastModifiedTime: ${uploadBlobResponse.lastModified!.toISOString()}, ETag: ${ + uploadBlobResponse.eTag + }` + ); + } catch (err) { + log.error( + `${[checkpoint.ownerId]} Error ocuured while uploading the blob for partition: ${ + checkpoint.partitionId + }, hence cannot update the checkpoint`, + err + ); + return ""; + } + return uploadBlobResponse.eTag || ""; + } +}